10 ! ----- DELETE_JOB.FUN ----- ! ! ----- FUNCTION TO DELETE A JOB (WHICH MAY BE RUNNING) FROM A ----- ! ----- BATCH QUEUE ----- ! ! ----- PASSED: ----- ! ! ----- QUEUE = NAME OF VMS BATCH QUEUE TO BE AFFECTED ----- ! ! ----- ENTRY_NUMBER = ENTRY NUMBER OF JOB TO BE DELETED ----- ! ! ----- RETURNED: ----- ! ! ----- DELETE_JOB = VMS EXIT STATUS (SS$_NORMAL IF ----- ! ----- SUCCESS) ----- ! ! ----- 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 SJCDEF ----- ! FUNCTION LONG DELETE_JOB(STRING QUEUE, LONG ENTRY_NUMBER) OPTION TYPE = EXPLICIT ! ENSURE EVERYTHING IS DECLARED EXTERNAL LONG CONSTANT JBC$_INCOMPLETE ! JOB NOT YET DELETED EXTERNAL LONG CONSTANT JBC$_NORMAL ! NORMAL SUCCESS STATUS EXTERNAL LONG CONSTANT JBC$_NOSUCHJOB ! NO SUCH JOB EXTERNAL LONG CONSTANT SJC$_DELETE_JOB ! DELETE A BATCH JOB EXTERNAL LONG CONSTANT SJC$_ENTRY_NUMBER! ENTRY # TO BE DELETED EXTERNAL LONG CONSTANT SJC$_QUEUE ! QUEUE NAME TO AFFECT EXTERNAL LONG CONSTANT SS$_NORMAL ! NORMAL SUCCESS STATUS RECORD JBCREC ! RECORD FOR $SNDJBC VARIANT CASE WORD BUFFER_LENGTH WORD ITEM_CODE LONG BUFFER_ADDRESS LONG RETURN_LENGTH_ADDR CASE LONG LIST_TERMINATOR END VARIANT END RECORD JBCREC DECLARE WORD ENTRY_NUMBER_LENGTH! LENGTH OF THE_ENTRY_NUMBER DIM LONG IOSB(1%) ! I/O STATUS BLOCK DECLARE WORD QUEUE_LENGTH ! LENGTH OF QUEUE DIM JBCREC SNDJBC(2%) ! RECORD FOR SYS$SNDJBCW DECLARE LONG SYS_STATUS ! VMS EXIT STATUS MAP (SMBABO) LONG THE_ENTRY_NUMBER, & STRING THE_QUEUE = 39% THE_QUEUE = QUEUE ! MOVE TO MAP ! ----- SEND TO JOB CONTROLLER AND WAIT ----- EXTERNAL LONG FUNCTION SYS$SNDJBCW ! ----- STORE ITEM LIST FOR $SNDJBCW FUNCTION CALL ----- SNDJBC(0%)::BUFFER_LENGTH = LEN(QUEUE) SNDJBC(0%)::ITEM_CODE = SJC$_QUEUE SNDJBC(0%)::BUFFER_ADDRESS = LOC(THE_QUEUE) SNDJBC(0%)::RETURN_LENGTH_ADDR = LOC(QUEUE_LENGTH) SNDJBC(1%)::BUFFER_LENGTH = 4% SNDJBC(1%)::ITEM_CODE = SJC$_ENTRY_NUMBER SNDJBC(1%)::BUFFER_ADDRESS = LOC(THE_ENTRY_NUMBER) SNDJBC(1%)::RETURN_LENGTH_ADDR = LOC(ENTRY_NUMBER_LENGTH) SNDJBC(2%)::LIST_TERMINATOR = 0% SYS_STATUS = SYS$SNDJBCW(, ! EVENT FLAG NUMBER & SJC$_DELETE_JOB & BY VALUE, ! FUNCTION CODE & , ! & SNDJBC() BY REF, ! ITEM LIST & IOSB() BY REF, ! I/O STATUS BLOCK & , ! AST ADDRESS & ) ! AST PARAMETER IF SYS_STATUS <> SS$_NORMAL THEN DELETE_JOB = SYS_STATUS ! RETURN VMS STATUS ELSE ! ----- SEE IF ANY ERROR STATUS IS SET ----- SELECT IOSB(0%) CASE JBC$_NORMAL ! ----- JOB WAS DELETED SUCCESSFULLY ----- ! ----- (RETURN VMS SUCCESS STATUS) ----- DELETE_JOB = SS$_NORMAL CASE JBC$_INCOMPLETE, ! JOB NOT YET DELETED & JBC$_NOSUCHJOB ! NO SUCH JOB ! ----- IGNORE THIS ERROR MESSAGE ----- ! ----- (RETURN VMS SUCCESS STATUS) ----- DELETE_JOB = SS$_NORMAL CASE ELSE ! ----- RETURN VMS ERROR STATUS ----- DELETE_JOB = IOSB(0%) END SELECT END IF END FUNCTION