Write the REXX queue to STDOUT
[Autolink] Menu
/* ------------------------------------------------------------------ */
/* 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
[Back: The RXQUEUE filter]
[Next: Return code of the function ADDRESS]