*DECK OSCCALL IDENT OSCCALL ENTRY OSCCALL EXT OPPHANG EXT OMSG EXT OTIME EXT RDUMP EXT XRECALL EXT XTRACE SST *# *1DC OSCCALL * * 1. PROC NAME AUTHOR DATE * OSCCALL E. GEE 77/08/03 * * 2. FUNCTIONAL DESCRIPTION. * THIS ROUTINE IS RESPONSIBLE FOR MAKING AN SCP CALL FOR NIP. * * 3. METHOD USED. * CHECK IF SF.LIST CALL * ISSUE SCP CALL * LOOP UNTIL COMPLETION OF CALL * IF SF.LIST CALL NOT COMPLETE, REISSUE SCP CALL * CHECK FOR NONZERO RC * GO INTO A TIGHT LOOP IF FATAL RC * * 4. ENTRY PARAMETERS. * A1 = ADDR OF THE SFCALL PARAMETER WORDS * * 5. EXIT PARAMETERS. NONE * * 6. COMDECKS CALLED. * DUMPFLG INPARU MACDEF * STATTAB * * 7. ROUTINES CALLED. * OPPHANG HANG PPU * OMSG ISSUE DAYFILE MESSAGE * OTIME GET SYSTEM RTIME * RDUMP DUMP NIP-S FIELD LENGTH * SFCALL SYSTEM-CONTROL-POINT MACRO * XRECALL RECALL * XTRACE TRACES CALLS * * 8. DAYFILE MESSAGES. * * NIP/SCP ERROR RC = XXB,JOBID=XXXX* * *# *CALL MACDEF *CALL INPARU ERRMSG DIS ,* NIP/SCP ERROR RC = XXB,JOBID=XXXX* MSGADR VFD 42/0,18/ERRMSG BSSZ 1 RCERR EQU ERRMSG+2 IDERR EQU ERRMSG+3 *CALL DUMPFLG STAT1 IFEQ STAT,1 *CALL STATTAB STAT1 ENDIF SPACE 2 OSCCALL BSSZ 1 ENTRY/EXIT DEBUG1 IFEQ DEBUG,1 SX6 A1 SA6 TEMP STAT1 IFEQ STAT,1 SA1 STIMEP PARAMETER BLOCK FOR CALLING OTIME RJ OTIME GET RTIME VALUE BEFORE CALL STAT1 ENDIF SX1 XOSCCA RJ XTRACE SA1 TEMP SA1 X1 DEBUG1 ELSE STAT1 IFEQ STAT,1 SX6 A1 SAVE ADDRESS OF PARAMETER BLOCK IN TEMP SA6 TEMP SA1 STIMEP PARAMETER BLOCK FOR CALLING OTIME RJ OTIME GET RTIME VALUE BEFORE CALL SA1 TEMP RESTORE ADDRESS OF PARAMETER BLOCK IN A1 SA1 X1 STAT1 ENDIF DEBUG1 ENDIF MX0 42 MX3 54 SB1 1 BX6 X1 SA6 SLIST PRESET TO NON-SF.LIST REQUEST SA6 FLIST ADDRESS OF FUNCTION LIST ENTRY SA1 X1 FUNCTION LIST ENTRY BX4 -X3*X1 FC OF FUNCTION LIST ENTRY BX6 X1 SAVE FIRST WORD OF FUNCTION LIST * OSC SX7 X4-SF.LIST CHECK IF SF.LIST REQUEST SA7 SLIST NZ X7,OSC1 GO ISSUE SCP CALL * SF.LIST REQUEST, SET UP LIST ENTRIES AX1 42 SB2 X1 NO OF LIST ENTRIES LX1 30 AX6 6 BX6 -X0*X6 BX6 X1+X6 SA6 SLNTRY * ISSUE SYSTEM CONTROL POINT CALL OSC1 SA1 FLIST SFCALL X1,R * CHECK FOR SCP REQUEST COMPLETION OSC2 SA1 FLIST SA1 X1 FUNCTION LIST ENTRY LX1 59 MI X1,OSC3 IF REQUEST COMPLETED SX1 =0 RJ XRECALL ELSE WAIT EQ OSC2 LOOP TILL REQUEST IS COMPLETE * SCP CALL COMPLETED OSC3 SB1 1 STAT2 IFEQ STAT,1 STATISTICS ON SA1 ST$NSC INCREMENT NO OF CALLS TO OSCCALL SX2 B1 SET X2 TO 1 IX6 X1+X2 INCREMENT THE NUMBER OF CALL SA6 ST$NSC STAT2 ENDIF SA1 FLIST SA1 X1 FUNCTION LIST ENTRY MI X1,OSC4 IF SCP RETURNS ERROR * SA2 SLIST NZ X2,OSC9 IF RETURNING TO CALLER BX2 X1 LX2 6 AX2 6 GET RID OF ANY TRIVIAL ERRORS IN RC AX2 42 ZR X2,OSC9 IF RETURNING TO CALLER * AX1 1 LX6 X1,B1 SA6 A1 CLEAR COMPLETION BIT EQ OSC1 REISSUE SCP REQUEST * * ERROR RETURNS ON SCP REQUEST OSC4 MX3 6 BX5 X1*X3 MASK OUT RC SA2 SLIST NZ X2,OSC7 IF NOT SF.LIST REQUEST LX5 6 SX2 X5-40B CHECK IF ERROR IN LIST ENTRY LX5 54 NZ X2,OSC7 IF RC NOT 40B * SCAN LIST ENTRIES FOR NONZERO RC SA2 SLNTRY SB3 X2 LIST ENTRY ADDRESS AX2 30 SB2 X2 NO OF LIST ENTRIES OSC5 SA2 B3 FUNCTION LIST ENTRY BX5 X2*X3 MASK OUT RC MI X5,OSC6 IF RC ENCOUNTERED SB3 B3+B1 SB2 B2-B1 NZ B2,OSC5 IF MORE ENTRY TO CHECK * REPLACE FUNCTION LIST RC WITH LIST ENTRY-S RC OSC6 BX2 -X3*X1 CLEAR RC=40B BX6 X2+X5 REPLACE WITH LIST ENTRY-S RC SA6 A1 * OSC7 MX3 3 BX4 X3*X5 LX3 57 BX3 X3*X5 LX4 9 LX3 6 BX3 X3+X4 SX4 X3+3333B LX4 48 MX3 12 SA2 RCERR BX6 -X3*X2 CLEAR RC IN ERRMSG BX6 X4+X6 SA6 A2 PUT RC IN ERRMSG LX5 6 MX3 24 SA1 FLIST SA1 X1+B1 FUNCTION LIST WORD WITH JOBID BX1 X1*X3 SA2 IDERR BX7 -X3*X2 CLEAR JOBID IN ERRMSG BX7 X1+X7 SA7 A2 PUT JOBID IN ERRMSG * SX4 X5-43B ZR X4,OSC8 IF RC=43B SX4 X5-44B IFEQ DEBUG,1,1 ZR X4,OSC9 NOT DAYFILE, RETURN TO CALLER IFNE DEBUG,1,1 ZR X4,OSC9 IF RC = 44B, RETURN SX4 X5-45B ZR X4,OSC8 IF RC=45B SX4 X5-63B NZ X4,OSC7.1 IF RETURN CODE IS NOT 63B SA1 HFCALL NZ X1,OSC8 IF RC=63B ON A SF.ENDT CALL FROM HAPFAIL EQ OSC8 DAYFILE THE MESSAGE THEN CONTINUE. OSC7.1 BSS 0 * IF RC NOT 43B, 44B, OR 45B * THEN SET PP HANG BIT, AND GO * INTO A TIGHT LOOP SA1 MSGADR RJ OMSG ISSUE ERROR DAYFILE MESSAGE RJ OPPHANG HANG EQ HANG * OSC8 SA1 MSGADR RJ OMSG ISSUE ERROR DAYFILE MESSAGE OSC9 BSS 0 STAT2 IFEQ STAT,1 SA1 ETIMEP PARAMETER BLOCK FOR CALLING OTIME RJ OTIME GET RTIME VALUE AFTER CALL SA1 STIME STARTING RTIME VALUE MX0 24D MASK FOR RTIME MILLESECOND VALUE BX1 -X0*X1 CLEAR SECONDS FIELD SA2 ETIME ENDING RTIME VALUE BX2 -X0*X2 CLEAR SECONDS FIELD IX6 X2-X1 ELAPSED TIME FOR SWAPIN SA1 ST$LSC LARGEST TIME SPENT IN OSCCALL IX5 X1-X6 DETERMINE IF LATEST TIME INTERVAL IS LARGER PL X5,OSC10 IF PREVIOUS TIME INTERVAL WAS LARGER SA6 ST$LSC SAVE NEW LARGEST TIME INTERVAL OSC10 SA3 ST$TSC PREVIOUS CUMULATIVE VALUE IX6 X3+X6 NEW CUMULATIVE VALUE SA6 ST$TSC STAT2 ENDIF EQ OSCCALL EXIT SPACE 3 FLIST BSSZ 1 ADDRESS OF FUNCTION LIST ENTRY SLIST BSSZ 1 ZERO IF SF.LIST REQUEST SLNTRY BSSZ 1 WORD 30/FP,30/SCPA XOSCCA DATA L*OSCCA* TEMP BSS 1 STAT3 IFEQ STAT,1 EXT OTIME STIMEP VFD 60D/STIME ETIMEP VFD 60D/ETIME STIME BSS 1 START TIME FOR COMPARING SWAPIN TIME DELAY ETIME BSS 1 END TIME FOR COMPARING SWAPIN TIME DELAY STAT3 ENDIF SF.READ EQU 10B SF.WRIT EQU 14B SF.TIME EQU 04B SF.ENDT EQU 06B SF.REGR EQU 02B SF.STAT EQU 12B SF.EXIT EQU 16B SF.SWPO EQU 24B SF.SWPI EQU 26B SF.SLTC EQU 30B SF.CLTC EQU 32B SF.LIST EQU 34B END