IDENTIFICATION DIVISION. PROGRAM-ID. CHECKSYS. AUTHOR. BOB RIBOKAS. INSTALLATION. TERADYNE, INC. DATE-WRITTEN. OCTOBER 27, 1986. DATE-COMPILED. TODAY. ******************************************************************************** * * * CHECK SYSTEM TO SEE IF ANYONE IS RUNNING A GIVEN IMAGE OR PROCESS. * * * * Calling sequence: * * * * CALL "CHECKSYS" USING * * BY REFERENCE WS-MODE-FLAG, WS-IMAGE-OR-PROCESS-NAME, WS-PROCESS-COUNT. * * * * WS-MODE-FLAG shuld be defined as PIC X(1) and should contain an "I" if * * you wish to check for a given image name or a "P" if you wish to check * * for a particular process name. WS-IMAGE-OR-PROCESS-NAME should be defined * * as PIC X(128) and should contain the name of the image or process that you * * want to check for. Note that the subroutine will do partial matching on * * the program or process name given. For example, if you call it with "RP" * * in WS-IMAGE-OR-PROCESS-NAME it will count any image names that start with * * "RP", i.e. RP2000, RP2001, RP2010, etc. * * * * WS-PROCESS-COUNT should be defined as PIC 9(4), USAGE IS COMP and will * * contain the number of processes that matched the given * * WS-IMAGE-OR-PROCESS-NAME. * * * * NOTE: Any program that calls this routine will need to either have WORLD * * privileges enabled prior to being run or be INSTALLed with WORLD * * privileges. * * * ******************************************************************************** ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. VAX-11. OBJECT-COMPUTER. VAX-11. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-DOING-SYSTAT-FLAG PIC S9(9), COMP. 88 WS-DOING-SYSTAT VALUE 1. 88 WS-SYSTAT-DONE VALUE 0. 01 WS-WILDCARD-PID PIC S9(9), COMP. 01 WS-ITEM-LIST. 02 FILLER PIC S9(4), COMP, VALUE 128. 02 FILLER PIC S9(4), COMP, VALUE EXTERNAL JPI$_IMAGNAME. 02 FILLER POINTER, VALUE REFERENCE WS-IMAGE-NAME. 02 FILLER POINTER, VALUE REFERENCE WS-IMAGE-SIZE. 02 FILLER PIC S9(4), COMP, VALUE 15. 02 FILLER PIC S9(4), COMP, VALUE EXTERNAL JPI$_PRCNAM. 02 FILLER POINTER, VALUE REFERENCE WS-PROCESS-NAME. 02 FILLER PIC S9(9), COMP, VALUE ZERO. 02 FILLER PIC S9(4), COMP, VALUE 7. 02 FILLER PIC S9(4), COMP, VALUE EXTERNAL JPI$_TERMINAL. 02 FILLER POINTER, VALUE REFERENCE WS-TERMINAL. 02 FILLER PIC S9(9), COMP, VALUE ZERO. 02 FILLER PIC S9(4), COMP, VALUE 12. 02 FILLER PIC S9(4), COMP, VALUE EXTERNAL JPI$_USERNAME. 02 FILLER POINTER, VALUE REFERENCE WS-USERNAME. 02 FILLER PIC S9(9), COMP, VALUE ZERO. 02 FILLER PIC S9(9), COMP, VALUE ZERO. 01 WS-GETJPI-ITEMS. 02 WS-IMAGE-NAME PIC X(128). 02 WS-IMAGE-SIZE PIC S9(9), COMP. 02 WS-PROCESS-NAME PIC X(15). 02 WS-TERMINAL PIC X(7). 02 WS-USERNAME PIC X(12). 01 STAT PIC S9(9), COMP. 01 SS-NOPRIV PIC S9(9), COMP, VALUE EXTERNAL SS$_NOPRIV. 01 SS-NOMOREPROC PIC S9(9), COMP, VALUE EXTERNAL SS$_NOMOREPROC. 01 WS-TALLY PIC 9(4), COMP. 01 WS-PTR PIC 9(4), COMP. 01 WS-PROGRAM-NAME PIC X(128). LINKAGE SECTION. 01 LINK-MODE-FLAG PIC X(1). 88 LINK-LOOK-FOR-IMAGE VALUE "I". 88 LINK-LOOK-FOR-PROCESS VALUE "P". 01 LINK-PROGRAM-NAME PIC X(128). 01 LINK-PROGRAM-BEING-RUN-FLAG PIC S9(4), COMP. 88 LINK-PROGRAM-BEING-RUN VALUES 1 THRU 9999. 88 LINK-PROGRAM-NOT-BEING-RUN VALUE 0. PROCEDURE DIVISION USING LINK-MODE-FLAG, LINK-PROGRAM-NAME, LINK-PROGRAM-BEING-RUN-FLAG. 0000-MAIN-PROGRAM SECTION. 0001-INIT. MOVE ZERO TO WS-TALLY. INSPECT LINK-PROGRAM-NAME TALLYING WS-TALLY FOR CHARACTERS BEFORE INITIAL SPACE. MOVE -1 TO WS-WILDCARD-PID. SET WS-DOING-SYSTAT TO TRUE. SET LINK-PROGRAM-NOT-BEING-RUN TO TRUE. PERFORM 1000-SYSTAT-LOOP UNTIL WS-SYSTAT-DONE. EXIT PROGRAM. 1000-SYSTAT-LOOP SECTION. 1001-INIT. CALL "SYS$GETJPIW" USING BY VALUE 0, BY REFERENCE WS-WILDCARD-PID, BY VALUE 0, BY REFERENCE WS-ITEM-LIST, BY VALUE 0, BY VALUE 0, BY VALUE 0 GIVING STAT. IF STAT = SS-NOPRIV GO TO 1999-EXIT. IF STAT = SS-NOMOREPROC SET WS-SYSTAT-DONE TO TRUE GO TO 1999-EXIT. IF LINK-LOOK-FOR-PROCESS IF WS-PROCESS-NAME (1 : WS-TALLY) = LINK-PROGRAM-NAME (1 : WS-TALLY) ADD 1 TO LINK-PROGRAM-BEING-RUN-FLAG END-IF ELSE PERFORM VARYING WS-PTR FROM 128 BY -1 UNTIL WS-PTR = 1 OR WS-IMAGE-NAME (WS-PTR : 1) = "]" CONTINUE END-PERFORM ADD 1 TO WS-PTR MOVE SPACES TO WS-PROGRAM-NAME UNSTRING WS-IMAGE-NAME DELIMITED BY "." INTO WS-PROGRAM-NAME WITH POINTER WS-PTR IF WS-PROGRAM-NAME (1 : WS-TALLY) = LINK-PROGRAM-NAME (1 : WS-TALLY) ADD 1 TO LINK-PROGRAM-BEING-RUN-FLAG. 1999-EXIT. EXIT.