There is no function to check if a queue exists. To do this, you can use either the procedure shown below or the function RxProcQueueExists from the RXPROC.DLL from the SRE2003 Internet Interface package.
/* sample code to extend the RXQUEUE function with code to check if */ /* a queue exists */ /* stem with the names of the test queues */ testQueue.0 = 2 testQueue.1 = "QUEUEA" testQueue.2 = "QUEUEB" /* install some error handlers to ensure the */ /* deletion of the test queues at program */ /* end if the program is aborted due to an */ /* error! */ SIGNAL ON SYNTAX Name ProgramEnd SIGNAL ON ERROR Name ProgramEnd SIGNAL ON HALT Name ProgramEnd /* create the test queues */ say "Creating some queues for testing ..." do i = 1 to TestQueue.0 call CharOut, " Creating the queue """ || testQueue.i || """ ..." if rxQueue( "CREATE", testQueue.i ) = testQueue.i then call LineOut, " done." else call LineOUt, " failed." end /* do i = 1 to TestQueue.0 */ say '' do until myInput = "" say "Enter the name of the queue to check (RETURN to exit): " myInput = strip( lineIn() ) if myInput <> "" then do queueExist = rxqueue( "QUERY", myInput ) select when queueExist = 0 then say "The queue """ || myInput || """ does not exist." when queueExist = 1 then say "The queue """ || myInput || """ exist." otherwise say "Error """ || queueExist || """ executing RXQUEUE!" end /* select */ end /* if myInput <> "" then */ end /* do until myInput = "" */ ProgramEnd: /* delete the test queues */ say "Deleting the queues for testing ..." do i = 1 to TestQueue.0 say " Deleting the queue """ || testQueue.i || """ ..." /* use the _original_ function to avoid */ /* endless loops if the new RXQUEUE function */ /* is buggy! */ call "RXQUEUE" "DELETE", testQueue.i end /* do i = 1 to TestQueue.0 */ exit 0 /* ------------------------------------------------------------------ */ /* function: Extended RXQUEUE function */ /* */ /* usage: RXQUEUE action {,queue_name} */ /* */ /* where: action */ /* - QUERY - check if the queue "queue_name" exists */ /* All other values for action are processed by the */ /* original RXQUEUE function. */ /* */ /* returns: if action = "QUERY": */ /* 1 - the queue exist */ /* 0 - the queue does not exist */ /* else */ /* error code of the original RXQUEUE function */ /* if action <> "QUERY": */ /* return code of the original RXQUEUE function */ /* or "SYNTAX ERROR" if called with invalid parameter(s) */ /* */ RXQUEUE: PROCEDURE parse arg action, queue_name /* init the return code */ rc = "SYNTAX ERROR" /* install a local error handler */ SIGNAL ON SYNTAX NAME RxQueueError if translate( action ) = "QUERY" then do if queue_name <> "" then do queue_name = translate( strip( queue_name ) ) /* try to create the queue ... */ tempQueue = "RXQUEUE"( "CREATE", queue_name ) /* ... and delete the just created queue */ call "RXQUEUE" "DELETE", tempQueue /* set the return code */ rc = ( tempQueue <> translate( queue_name ) ) end /* if queue_name <> "" then */ end /* if translate( action ) = "QUERY" then */ else do /* call the original RXQUEUE function */ if queue_name <> "" then rc = "RXQUEUE"( action, queue_name ) else rc = "RXQUEUE"( action ) end /* else */ RxQueueError: RETURN rc