10 ! ----- VALID_QUEUE.FUN ----- ! ! ----- VALIDATES A STRING AS BEING A VALID PRINT QUEUE NAME ----- ! ! ----- RETURNS: ----- ! ----- TRUE (-1) IF QUEUE_NAME IS A VALID PRINT QUEUE ----- ! ----- FALSE (0) IF QUEUE_NAME IS NOT A VALID PRINT QUEUE ----- ! ----- OTHERWISE RETURNS VMS SYSTEM SERVICE STATUS ERROR ----- ! ! ----- Last Change 05/01/89 by Brian Lomasky ----- ! ! ----- Teradyne, Inc., 179 Lincoln Street, Boston, MA 02111 ----- ! ----- (617) 482-2706, x3259 ----- ! ! ----- Neither Brian Lomasky nor Teradyne, Inc. implicitly or ----- ! ----- explicitly implies this program is usable in any way. ----- ! ----- This program is released to the public domain in an ----- ! ----- "AS-IS" condition. ----- ! ! ----- Restrictions: ----- ! ----- 1) Requires VAX BASIC V2.4 or later. ----- ! ----- 2) Must be linked with JBCDEF and QUIDEF ----- ! FUNCTION LONG VALID_QUEUE(STRING QUEUE_NAME) OPTION TYPE = EXPLICIT EXTERNAL LONG CONSTANT JBC$_INVQUENAM EXTERNAL LONG CONSTANT JBC$_NORMAL EXTERNAL LONG CONSTANT JBC$_NOSUCHQUE EXTERNAL LONG CONSTANT QUI$_DISPLAY_QUEUE EXTERNAL LONG CONSTANT QUI$_SEARCH_FLAGS EXTERNAL LONG CONSTANT QUI$_SEARCH_NAME EXTERNAL LONG CONSTANT QUI$M_SEARCH_SYMBIONT EXTERNAL LONG CONSTANT SS$_NORMAL ! NORMAL SUCCESS DECLARE LONG CONSTANT TRUE = (1% = 1%) DECLARE LONG CONSTANT FALSE = NOT TRUE RECORD QUEREC ! RECORD FOR $GETQUIW VARIANT CASE WORD BUFFER_LENGTH WORD ITEM_CODE LONG BUFFER_ADDRESS LONG RETURN_LENGTH_ADDR CASE LONG LIST_TERMINATOR END VARIANT END RECORD QUEREC DIM QUEREC GETQUI(2%) ! RECORD FOR SYS$GETQUIW DIM LONG IOSB(1%) ! I/O STATUS BLOCK DECLARE LONG SEARCH_FLAGS ! $GETQUIW SEARCH FLAGS DECLARE WORD SEARCH_FLAGS_LENGTH! LENGTH FOR $GETQUIW RETURN DECLARE WORD SEARCH_NAME_LENGTH ! LENGTH FOR $GETQUIW RETURN DECLARE LONG SYS_STATUS ! FUNCTION RETURN STATUS MAP (QMAP) STRING SEARCH_NAME = 31% ! ----- GET QUEUE INFORMATION AND WAIT ----- EXTERNAL LONG FUNCTION SYS$GETQUIW ! ----- EXIT FUNCTION IF NO QUEUE NAME PASSED ----- IF QUEUE_NAME = "" THEN ! ----- QUEUE_NAME IS NOT A QUEUE ----- VALID_QUEUE = FALSE EXIT FUNCTION END IF ! ----- EXIT FUNCTION IF INVALID WILDCARD CHARACTERS IN ----- ! ----- QUEUE NAME ----- IF POS(QUEUE_NAME, "*", 1%) > 0% OR POS(QUEUE_NAME, & "%", 1%) > 0% THEN ! ----- QUEUE_NAME IS NOT A QUEUE ----- VALID_QUEUE = FALSE EXIT FUNCTION END IF SEARCH_NAME = QUEUE_NAME ! MOVE PASSED QUEUE NAME TO MAP ! ----- SEARCH ONLY OUTPUT QUEUES (IGNORE BATCH QUEUES) ----- SEARCH_FLAGS = QUI$M_SEARCH_SYMBIONT ! ----- STORE ITEM LIST FOR $GETQUIW FUNCTION CALL ----- GETQUI(0%)::BUFFER_LENGTH = LEN(QUEUE_NAME) GETQUI(0%)::ITEM_CODE = QUI$_SEARCH_NAME GETQUI(0%)::BUFFER_ADDRESS = LOC(SEARCH_NAME) GETQUI(0%)::RETURN_LENGTH_ADDR = LOC(SEARCH_NAME_LENGTH) GETQUI(1%)::BUFFER_LENGTH = 4% GETQUI(1%)::ITEM_CODE = QUI$_SEARCH_FLAGS GETQUI(1%)::BUFFER_ADDRESS = LOC(SEARCH_FLAGS) GETQUI(1%)::RETURN_LENGTH_ADDR = LOC(SEARCH_FLAGS_LENGTH) GETQUI(2%)::LIST_TERMINATOR = 0% ! ----- TRY TO LOCATE THE SPECIFIED OUTPUT QUEUE ----- SYS_STATUS = SYS$GETQUIW(, ! EVENT FLAG NUMBER & QUI$_DISPLAY_QUEUE & BY VALUE, ! FUNCTION CODE & , ! NULL ARGUMENT & GETQUI() BY REF, ! ITEM LIST & IOSB() BY REF, ! I/O STATUS BLOCK & , ! AST ADDRESS & ) ! AST PARAMETER IF SYS_STATUS <> SS$_NORMAL THEN VALID_QUEUE = SYS_STATUS EXIT FUNCTION ELSE ! ----- SEE IF ANY ERROR STATUS IS SET ----- SELECT IOSB(0%) CASE JBC$_NORMAL ! ----- QUEUE_NAME IS A QUEUE ----- VALID_QUEUE = TRUE CASE JBC$_INVQUENAM ! ----- QUEUE_NAME IS NOT A QUEUE ----- VALID_QUEUE = FALSE CASE JBC$_NOSUCHQUE ! ----- QUEUE_NAME IS NOT A QUEUE ----- VALID_QUEUE = FALSE CASE ELSE VALID_QUEUE = IOSB(0%) END SELECT END IF END FUNCTION