Write the REXX Queue to STDOUT

/* -- */ /* Name:    RXQUEUE1.CMD                                             */ /*                                                                   */ /* Function: Write the contents of a REXX queue to STDOUT. */ /*                                                                   */ /* Usage:    RXQUEUE1 {queueName} {/CLEAR}                            */ /*                                                                   */ /* Where:    queueName                                                */ /*            name of the queue to use                               */ /*            (def.: If the environment variable RXQUEUE is defined  */ /*                    use the value of this variable else use the     */ /*                    default REXX queue named SESSION)               */ /*                                                                   */ /*           /CLEAR                                                   */ /*            only clear the REXX queue                              */ /*                                                                   */ /* Notes:    Error messages are written to STDERR. */ /*                                                                   */ /* Example:  RXQUEUE1 | myProgram                                     */ /*                                                                   */ /* (c) 1996 Bernd Schemmer, Germany, EMail: Bernd.Schemmer@gmx.de     */ /* -- */                    /* install error handlers                         */ signal on error  Name ErrorAbort signal on syntax Name ErrorAbort signal on failure Name ErrorAbort signal on halt   Name ErrorAbort signal on novalue Name ErrorAbort /* -- */                    /* init some variables                            */ /* save the name of the current queue            */ saveQueueName = rxqueue( 'get' ) /* name of the queue to use                      */ queueName = '' /* default queue to use                          */ defaultQueueName = 'SESSION' /* mode either CLEAR or ''                       */ mode = '' /* return code of this program                   */ rxqueueRC = 0 /* -- */                    /* parse the parameter                            */ parse upper arg arguments do while arguments <> '' parse var arguments thisArgument arguments select when wordpos( thisArgument, '/? /H /HELP -? -H -HELP' ) <> 0 then do        call lineOut 'STDERR:', , 'RXQUEUE1.CMD - write the REXX queue to STDOUT' || '0D0A'x || , ' Usage:  RXQUEUE1 {queueName} {/CLEAR}' rxqueueRC = 1 signal programEnd end /* when */ when thisArgument = '/CLEAR' then mode = 'CLEAR' when left( thisArgument,1 ) = '/' then call ShowErrorAndExit , 'SYS1003: The syntax of the command is incorrect.' otherwise if queueName = '' then queueName = thisArgument else call ShowErrorAndExit, 'SYS1003: The syntax of the command is incorrect.' end /* select */ end /* do while arguments <> '' */ /* check for environment variable if the queue   */ /* name is not part of the parameters            */ if queueName = '' then queueName = translate( value( 'RXQUEUE',, 'OS2ENVIRONMENT' ) ) /* use the default queue if neither the parameter */ /* nor the environment variable is set           */ if queueName = '' then queueName = defaultQueueName /* check the name of the queue for invalid v2.60 */ /* characters                              v2.60 */ if verify( translate( queueName ),,        XRANGE( 'A', 'Z' ) || '0123456789.!?_' , 'NOMATCH' ) <> 0 then call ShowErrorAndExit , 'REX0122: The name ' || queueName || 'is not a valid queue name.' if queueName <> rxqueue( 'get' ) then do                    /* the current queue is not the queue we should   */ /* use -- so we have to change the current queue */ /* try to create the queue to check if it already */ /* exists                                        */ tQueue = rxqueue( 'create', queueName ) /* imediately delete the created queue           */ call rxqueue 'delete', tqueue if tQueue = queueName then call ShowErrorAndExit , 'REX0124: The queue ' || queueName || ' does not exist.' /* make the queue use the current queue          */ call rxqueue 'set', queueName if rxqueue( 'get' ) <> queueName then call ShowErrorAndExit , 'Cannot activate the queue "' || queueName || '".' end /* queueName <> rxqueue( 'get' ) then */ if mode = 'CLEAR' then do                    /* clear the queue                                */ do while queued <> 0 parse pull end /* do while queued <> 0 */ end /* if mode = 'CLEAR' then */ else do                    /* write the queue to STDOUT                      */ do while queued <> 0 call lineOut 'STDOUT:', lineIn( 'QUEUE:' ) end /* do while queued <> 0 */ end /* else */ rxqueueRC = 0 /* -- */ ProgramEnd: /* restore the REXX queue                        */ if symbol( 'SaveQueueName' ) = 'VAR' then call rxqueue 'set', SaveQueueName /* check the RC variable                         */ if symbol( 'rxQueueRC' ) <> 'VAR' then rxqueueRC = 254 exit rxqueueRC /* -- */ /* error exit - print the error message to STDERR and exit with      */ /*             rc=255                                                */ /*                                                                   */ ShowErrorAndExit: parse arg ErrorMessage call LineOut 'STDERR:', errorMessage rxqueueRC = 255 signal ProgramEnd /* -- */ ErrorAbort: call LineOut 'STDERR:', 'Error "' || condition( 'c' ) || '" occured!' call LineOut 'STDERR:', 'Error processing "' || condition('D') || '"' call LineOut 'STDERR:', 'The invalid line is line no. ' || sigl call LineOut 'STDERR:', 'The value of RC is ' || rc signal ProgramEnd