IDENT RECOVER,FWA,RECOVER ABS SST ENTRY RECOVER ENTRY RFL= ENTRY SSJ= ENTRY VAL= SYSCOM B1 TITLE RECOVER - RECOVER DETACHED JOB. *COMMENT RECOVER - RECOVER DETACHED JOB. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4,10 ***** RECOVER - RECOVER DETACHED JOB. * * R. M. DESSEL 81/10/16. SPACE 4,10 *** *RECOVER* PERMITS THE RECOVERY OF A DETACHED JOB AT * LOGIN TIME OR ANY TIME DURING A TERMINAL SESSION. * *RECOVER* COMMUNICATES WITH A *TXOT* USER TO * DETERMINE WHICH JOB, IF ANY, SHOULD BE RECOVERED. * IT WILL ACCEPT PARAMETERS FROM THE COMMAND, * INPUT FROM THE FILE *INPUT*, AND SEND OUTPUT TO THE * USER VIA FILE *OUTPUT*. SPACE 4,10 *** COMMAND FORMAT. * * RECOVER(JSN,T) * * RECOVER(JSN=JSN,OP=T) * * *RECOVER* COMMAND PARAMETERS ARE DEFINED AS THE FOLLOWING. * * JSN JOB SEQUENCE NUMBER OF THE *TXOT* JOB THE USER * WISHES TO RECOVER. * * T FLAG TO TELL *RECOVER* TO CONDUCT TERMINAL I/O * ONLY IF THE USER HAS RECOVERABLE JOB(S) IN THE * SYSTEM. THIS WILL NORMALLY BE USED BY THE SYSTEM * AT LOGIN TIME. SPACE 4,10 *** DAYFILE MESSAGES. * * * USER ACCESS NOT VALID.* * CALLING JOB IS NOT AN INTERACTIVE JOB. * * * ARGUMENT ERROR.* * ARGUMENT ERROR WAS DETECTED ON COMMAND. * * * OP OPTION NOT VALID.* * THE *OP* OPTION SPECIFIED ON THE COMMAND * IS NOT A LEGAL OPTION. * * * NO JSN-S RECOVERED.* * *RECOVER* RECEIVED AN EOR, EOF OR EOI STATUS WHILE * ATTEMPTING TO READ THE INPUT DIRECTIVES FILE, AND * HAS TERMINATED. * * * INCORRECT REPLY LIMIT REACHED.* * THE NUMBER OF CONSECUTIVE INCORRECT REPLIES THE * USER ENTERED EXCEEDED THE LIMIT. BE SURE ANY * INPUT DIRECTIVES FILE IS IN 64 CHARACTER SET. SPACE 4,10 *** OUTPUT MESSAGES. * * *NO RECOVERABLE JOBS.* * THERE ARE NO JOB CANDIDATES FOR RECOVERY. * MESSAGE WILL NOT APPEAR AT LOGIN TIME IF * USER HAS NOT INTERACTED WITH *RECOVER*. * * * ENTER *GO* TO CONTINUE CURRENT JOB, * *RELIST* TO LIST RECOVERABLE JOBS, * OR DESIRED JSN:* * *RECOVER* PROMPTS THE USER WHENEVER INPUT IS * REQUIRED. * * *JSNX NOT FOUND.* * USER ENTERED A JSN, BUT IS IS NOT RECOVERABLE. * * *JSNX NOT RECOVERABLE - SECURITY CONFLICT.* * THE SPECIFIED JOB HAD A HIGHER UPPER ACCESS LEVEL * LIMIT THAN THE CURRENT JOB, AND THUS COULD NOT BE * RECOVERED BY THE CURRENT JOB. * * *INCORRECT ENTRY.* * USER ENTERED SOMETHING OTHER THAN A VALID RESPONSE. * * *MAXIMUM FL ENCOUNTERED - JOB LIST INCOMPLETE.* * NUMBER OF JOBS RETURNED BY *QAC* EXCEEDED THE * LARGEST POSSIBLE JSN BUFFER. SPACE 4,10 *** TERMINAL INTERRUPT PROCESSING (*REPRIEVE* PROCESSING). * * IF THE DIRECTIVE INPUT FILE, *INPUT*, IS ASSIGNED * TO A TIME-SHARING TERMINAL, *REPRIEVE* PROCESSING * IS ENABLED. IN ALL OTHER CASES, TERMINAL INTERRUPTS * WILL INTERRUPT OR TERMINATE *RECOVER*. SPACE 4,10 * COMMON DECKS. *CALL COMCMAC *CALL COMCCMD *CALL COMSEJT *CALL COMSQAC *CALL COMSSSJ *CALL COMSTCM TITLE DEFINITIONS. * ASSEMBLY CONSTANTS. IBFL EQU 101B INPUT BUFFER LENGTH MARG EQU 2 MAXIMUM NUMBER OF ARGUMENTS MAXI EQU 10 MAXIMUM CONSECUTIVE INCORRECT REPLYS MEMI EQU 1000B MEMORY INCREMENT OBFL EQU 301B OUTPUT BUFFER LENGTH QRBL EQU 4 *QAC* REPLY BLOCK LENGTH JSNBL EQU QRBL*100B LENGTH OF *QAC* REPLY BLOCK BUFFER WBFL EQU 16 WORKING BUFFER LENGTH WRDL EQU 5 WORDS PER LINE IN RECOVERABLE JSN LIST SPACE 4,10 * FETS. ORG 110B FWA BSS 0 SET ORIGIN ADDRESS INPUT FILEC INBUF,IBFL,(FET=6) INPUT FET OUTPUT FILEC OUTBUF,OBFL OUTPUT FET QRPB SPACE 4,10 ** *QAC* PARAMETER BLOCK. QRPB VFD 50/0,9/PKFC,1/0 REQUEST PREFIX PORTION VFD 36/0,6/11,18/JSNB VFD 42/0,18/JSNB VFD 42/0,18/JSNB VFD 42/0,18/JSNB+JSNBL BQSP VFD 60/0 SELECTION CRITERIA PORTION VFD 60/0 VFD 36/0,12/RJSF,12/0 ROLLOUT SELECTION FLAG VFD 12/2B,48/0 VFD 60/0 VFD 60/0 VFD 60/0 BQPP VFD 12/0,12/7777B,36/0 PEEK FUNCTION PORTION VFD 60/0 VFD 24/0,12/ALPB,12/ESPB,12/UJPB+JSPB VFD 60/0 RPB SPACE 4,10 ** *REPRIEVE* PARAMETER BLOCK. RPB BSS 0 VFD 36/0,12/RPBL,12/0 VFD 30/0,30/PTI BSSZ 7 RPBA BSSZ 16 EXCHANGE PACKAGE RPBL EQU *-RPB SPACE 4,10 * SPECIAL ENTRY POINTS. SSJ= EQU SSJP SPECIAL SYSTEM JOB VAL= BSS 0 VALIDATION ENTRY POINT SPACE 4,10 * WORKING STORAGE. ASFG CON 0 *ASCII* CHARACTER SET FLAG IFLG CON 0 INTERACTIVE FLAG INFG CON 0 TERMINAL INTERRUPT FLAG INRC CON 0 INCORRECT REPLY COUNTER JSNX CON 0 JSN ENTERED ON COMMAND JUAL CON 0 JOB UPPER ACCESS LEVEL LIMIT LFLG CON 0 LOGIN FLAG LFTB VFD 42/0LOUTPUT,18/OUTPUT TERMINAL FILES LRSF CON 0 LIST RESPONSE FLAG MAXC CON 0 MAXIMUM AMOUNT OF CM AVAILABLE MEMC CON 0 CURRENT AMOUNT OF CM AVAILABLE QJSN CON 0 NUMBER OF JOBS RETURNED BY *QAC* RJSN CON 0 NUMBER OF RECOVERABLE JSN-S STATM VFD 30/-1,30/0 STATUS OF MEMORY WORD TIFG CON 0 *TT* FILE TYPE FLAG - INPUT TOFG CON 0 *TT* FILE TYPE FLAG - OUTPUT TTST CON 0 *TSTATUS* PARAMETER BLOCK CON 0 UIFG CON 1 USER INTERACTION FLAG UPRF CON 0 USER PROMPT FLAG SPACE 4,10 * DAYFILE AND INTERACTION MESSAGES AND POSSIBLE REPLYS. MSGA DATA C*NO RECOVERABLE JOBS.* MSGB DATA 6LRELIST MSGC DATA 1LR MSGD DATA 2LR MSGE DATA C* NO JSN-S RECOVERED.* MSGF DATA 2LGO MSGG DATA 1LG MSGG2 DATA 2LG MSGG3 DATA 3LGO. MSGG4 DATA 4LG0. MSGH DATA C*INCORRECT ENTRY.* MSGI DATA C* NOT FOUND.* MSGJ DATA C* INCORRECT REPLY LIMIT REACHED.* MSGK DATA C*MAXIMUM FL ENCOUNTERED - JOB LIST INCOMPLETE.* MSGL DATA C* NOT RECOVERABLE - SECURITY CONFLICT.* TITLE MAIN ROUTINE. * MAIN ROUTINE. RECOVER BSS 0 ENTRY RJ PRS PRESET REC1 RJ GLJ GET LIST OF JSN-S RJ DRJ DETERMINE RECOVERABLE JOBS SA1 RJSN NUMBER OF RECOVERABLE JOBS ZR X1,REC3 IF NO JOBS TO RECOVER SX1 X1-1 ZR X1,REC2 IF NUMBER OF RECOVERABLE JOBS = ONE RJ SRJ SORT LIST OF RECOVERABLE JOBS REPRIEVE RPB,SET,200B SET *REPRIEVE* PROCESSING REC2 RJ QUU QUERY USER ZR X2,REC3 IF USER ENTERED *END* BX6 X6-X6 FLAG USER INTERACTION SA6 UIFG NG X2,REC1 IF INCORRECT ENTRY OR USER ENTERED *LIS* RJ SVJ SEARCH FOR VALID JSN ZR X2,REC1 IF JSN NOT FOUND LX1 24 SYSTEM TLX,R,X1,11B*100B RECOVER JOB EQ REC4 TERMINATE REC3 WRITER OUTPUT FLUSH BUFFER MESSAGE =0,1,R CLEAR COMMAND FROM *MS1W* SA1 ASFG CHARACTER SET FLAG ZR X1,REC4 IF PREVIOUS CHARACTER SET = 64 CSET ASCII RESET PREVIOUS CHARACTER SET REC4 ENDRUN TITLE SUBROUTINES. ** ABT - ABORT ON ERROR. * * ENTRY (X3) = ADDRESS OF DAYFILE MESSAGE. * * USES X - 1. * A - 1. * * MACROS ABORT, CSET, MESSAGE, PROMPT. ABT MESSAGE X3 ISSUE DAYFILE MESSAGE SA1 IFLG INTERACTIVE FLAG ZR X1,ABT1 IF CALLING JOB NOT INTERACTIVE SA1 ASFG *ASCII* CHARACTER SET FLAG ZR X1,ABT1 IF CHARACTER SET *NORMAL* CSET ASCII SET *ASCII* 128 CHARACTER SET MODE ABT1 ABORT DRJ SPACE 4,15 ** DRJ - DETERMINE RECOVERABLE JOBS. * * *DRJ* SEARCHES THE BUFFER *JSNB* TO ENSURE THE JOBS * RETURNED BY *QAC* ARE RECOVERABLE. * * ENTRY (QJSN) = NUMBER OF JOBS RETURNED BY *QAC* * * EXIT (RJSN) = NUMBER OF RECOVERABLE JOBS. * * USES X - 0, 1, 2, 3, 6. * A - 1, 6. * B - 2, 3, 4, 5, 6. * * MACROS MOVE, WRITEC. DRJ3 SX6 B5+ STORE NUMBER OF RECOVERABLE JOBS SA6 RJSN NZ X6,DRJX IF RECOVERABLE JOBS SA1 UIFG CHECK USER INTERACTION FLAG ZR X1,DRJ4 IF USER HAS INTERACTED SA1 LFLG CHECK *OP=T* OPTION FLAG NZ X1,DRJX IF MESSAGE TO BE SUPPRESSED DRJ4 WRITEC OUTPUT,MSGA *NO RECOVERABLE JOBS.* DRJ SUBR ENTRY/EXIT BX6 X6-X6 CLEAR NUMBER OF RECOVERABLE JOBS SA6 RJSN SA1 QJSN SET NUMBER OF JOBS TO CHECK SB6 X1+ SB5 B0+ INITIALIZE NUMBER OF RECOVERABLE JOBS SB2 JSNB SET *QAC* POSITION POINTER SB3 JSNB SET RECOVERABLE JSN POSITION POINTER SB4 QRBL NUMBER OF WORDS TO TRANSFER DRJ1 ZR B6,DRJ3 IF NO MORE JOBS TO CHECK SB6 B6-1 NUMBER OF JOBS REMAINING TO CHECK SA1 B2+2 STATUS ADDRESS IN BUFFER MX0 12 BX1 X0*X1 GET STATUS LX1 12 MX0 4 LX0 11 BX1 X0*X1 LX1 -7 CONNECTION STATUS SX2 X1-DTCS NZ X2,DRJ2 IF NOT DETACHED SX1 B4 NUMBER OF WORDS TO TRANSFER SX2 B2 SOURCE ADDRESS SX3 B3+ DESTINATION ADDRESS MOVE X1,X2,X3 MOVE JSN WORD BLOCK SB3 B3+QRBL INCREMENT RECOVERABLE JSN POINTER SB5 B5+1 INCREMENT RECOVERABLE JSN-S DRJ2 SB2 B2+QRBL INCREMENT *QAC* POSITION POINTER EQ DRJ1 CHECK NEXT WORD BLOCK DTT SPACE 4,15 ** DTT - DETERMINE TIME UNTIL TIMEOUT. * * ENTRY (*PRJD*) = SCHEDULING FIELD ADDRESS IN *JSNB* BUFFER. * * EXIT (X6) = MINUTES REMAINING UNTIL TIMEOUT. * * USES X - 0, 1, 2, 4, 6. * A - 1, 4. * * CALLS CDD. * * MACROS RTIME. DTT SUBR ENTRY/EXIT RTIME DTTA GET REAL TIME SA1 PRJD GET SCHEDULING FIELD SA1 X1 AX1 12 MX0 -24 BX1 -X0*X1 SA4 DTTA GET SECONDS MX0 24 BX4 X0*X4 LX4 24 IX1 X1-X4 SECONDS REMAINING UNTIL TIMEOUT SX1 X1+30 SX2 60 IX1 X1/X2 CONVERT SECONDS TO MINUTES RJ CDD CONVERT TO DECIMAL DISPLAY CODE * FORMAT MINUTES REMAINING UNTIL TIMEOUT. LX6 30 MX0 30 BX6 X0*X6 SA1 DTTB APPEND *MIN.* BX6 X6+X1 EQ DTTX RETURN DTTA DATA 0 REAL TIME DTTB DATA 5R MIN. GLJ SPACE 4,15 ** GLJ - GET LIST OF JSN-S. * * *GLJ* ISSUES A *QAC* PEEK REQUEST TO RETURN RECOVERABLE JOBS * FROM THE EXECUTING JOB TABLE TO BUFFER *JSNB*. * * EXIT (QJSN) = NUMBER OF JSN-S RETURNED BY *QAC*. * * USES X - 0, 1, 2, 6. * A - 1, 2, 6. * * CALLS IBS. * * MACROS SYSTEM, WRITEC. GLJ2 SA6 QJSN NO RECOVERABLE JOBS FOUND GLJ SUBR ENTRY/EXIT GLJ1 SYSTEM QAC,R,QRPB ISSUE PEEK REQUEST * RESET *QAC* REQUEST BUFFER. SA1 QRPB CLEAR COMPLETE BIT MX0 -1 BX6 X0*X1 SA6 A1 AX1 10 CHECK ERROR FIELD SX6 X1-ER07 ZR X6,GLJ2 IF NO RECOVERABLE JOBS FOUND SA2 QRPB+B1 RESET BUFFER POINTER SX6 X2 SA6 A2+B1 SET IN = FIRST SA6 A6+B1 SET OUT = FIRST MX0 -12 SA1 BQPP DETERMINE NUMBER OF JSN-S RETURNED LX1 24 BX6 -X0*X1 SA6 QJSN LX1 36 RESET NUMBER OF JSN-S TO RETURN LX0 36 BX1 X0*X1 SA2 GLJA BX6 X1+X2 SA6 A1 * DETERMINE IF *QAC* SCAN COMPLETE. SA1 QRPB+4 MX0 36 BX2 X0*X1 ZR X2,GLJX IF SCAN COMPLETE RJ IBS INCREASE BUFFER SIZE ZR X1,GLJ1 IF REQUEST COMPLETE WRITEC OUTPUT,MSGK *MAX FL ENCOUNTERED - JOB LIST INCOMPLETE.* EQ GLJX RETURN GLJA VFD 12/0,12/7777B,36/0 IBS SPACE 4,15 ** IBS - INCREASE BUFFER SIZE. * * ENTRY (MEMC) = CURRENT MEMORY. * (MAXC) = MAXIMUM MEMORY AVAILABLE. * * EXIT (MEMC) = CURRENT MEMORY. * (X1) = 0, MEMORY REQUEST COMPLETE. * 1, NOT ENOUGH FL AVAILABLE. * * USES X - 0, 1, 2, 3, 6. * A - 1, 2, 3, 6. * * MACROS MEMORY. IBS1 SX1 1 SET ERROR RETURN IBS SUBR ENTRY/EXIT SA1 MEMC GET CURRENT MEMORY SX3 MEMI IX2 X1+X3 SA3 MAXC IX6 X3-X2 NG X6,IBS1 IF REQUEST WOULD EXCEED VALIDATION LIMITS BX6 X2 SA6 A1 UPDATE *MEMC* LX6 30 SA6 STATM MEMORY CM,STATM,R,,NA REQUEST ADDITIONAL MEMORY SA1 STATM SA2 MEMC AX1 30 BX2 X1-X2 NZ X2,IBS1 IF REQUEST NOT HONORED SA1 QRPB+4 UPDATE LWA+1 OF *JSNB* SX6 X1+MEMI MX0 -18 BX6 -X0*X6 SA6 QRPB+4 BX1 X1-X1 CLEAR ERROR RETURN EQ IBSX RETURN PRJ SPACE 4,15 ** PRJ - PRINT LIST OF RECOVERABLE JSN-S. * * *PRJ* PRINTS THE LIST OF RECOVERABLE JSN-S, UJN-S, * AND STATUSES LOCATED IN BUFFER *JSNB*. MINUTES * REMAINING UNTIL TIMEOUT ARE ALSO PRINTED FOR SUSPENDED * JOBS. * * USES X - 0, 1, 2, 3, 4, 6, 7. * A - 1, 2, 3, 4, 6, 7. * B - 2. * * CALLS DTT, SFN. * * MACROS WRITEC. PRJ SUBR ENTRY/EXIT BX6 X6-X6 CLEAR TERMINAL INTERRUPT FLAG SA6 INFG WRITEW OUTPUT,PRJA,PRJAL WRITE TABLE HEADER SA1 RJSN SAVE NUMBER OF RECOVERED JSN-S BX6 X1 SA6 PRJE SA2 LIST PRINT TABLE ADDRESS SB2 WRDL-2 SA2 A2+B2 LAST WORD ADDRESS IN PRINT TABLE BX6 X6-X6 SA6 A2 ZERO LAST WORD IN PRINT TABLE SA6 A2+B1 SET END OF LINE CHARACTER * DETERMINE AND STORE JSN. SA1 JSNB RECOVERABLE JSN TABLE ADDRESS PRJ1 SA2 LIST PRINT BUFFER ADDRESS MX0 24 GET JSN BX1 X0*X1 RJ SFN SPACE-FILL JSN LX6 -18 SA6 A2 STORE JSN IN PRINT BUFFER * DETERMINE AND STORE UJN. SA1 A1+B1 GET UJN MX0 42 BX1 X0*X1 RJ SFN SPACE FILL UJN SA2 A2+B1 STORE UJN IN PRINT BUFFER SA6 A2 * DETERMINE AND STORE JOB STATUS. SA1 A1+B1 GET STATUS FIELD MX0 5 LX0 -6 BX1 X0*X1 LX1 -49 SA2 A2+B1 SA3 X1+PRJB LOCATION OF MESSAGE BX6 X3 SA6 A2 * DETERMINE IF JOB SUSPENDED AND OBTAIN MINUTES UNTIL TIMEOUT. SA2 A2+B1 SX6 A2 SA6 PRJC SAVE PRINT BUFFER ADDRESS SX6 A1+ SA6 PRJD SAVE RECOVERABLE JSN BUFFER ADDRESS SX1 X1-SUJS NZ X1,PRJ2 IF NOT SUSPENDED RJ DTT DETERMINE TIME UNTIL TIMEOUT SA1 PRJC STORE TIME IN PRINT BUFFER SA6 X1 SA3 INFG NZ X3,PRJX IF INTERRUPT OCCURRED * PRINT LIST OF RECOVERABLE JSN-S. PRJ2 WRITEC OUTPUT,LIST LIST OF RECOVERABLE JOBS SA2 PRJC SA2 X2+ RESTORE PRINT BUFFER ADDRESS SA1 PRJD SA1 X1+1 ADVANCE TO NEXT JSN IN BUFFER SA4 PRJE DECREMENT NUMBER OF JSN-S TO PRINT SX6 X4-1 SA6 PRJE NZ X6,PRJ3 IF MORE TO PRINT WRITEC OUTPUT,PRJA BLANK LINE EQ PRJX RETURN PRJ3 BX6 X6-X6 SA6 A2+ ZERO MINUTES FIELD SA1 A1+B1 INCREMENT JSN BUFFER ADDRESS EQ PRJ1 RETURN * RECOVERABLE JSN PRINT BUFFER. PRJA DATA C* * DATA C* RECOVERABLE JOB(S)* DATA C* * DATA C* JSN UJN STATUS TIMEOUT* DATA C* * PRJAL EQU *-PRJA PRJB BSS 0 STATUSES FOR RECOVERY DATA 10HINITIAL DATA 10HEXECUTING DATA 10HSCH ROLLED DATA 10HSCP ROLLIN DATA 10HSCP ROLLED DATA 10HT/E ROLLED DATA 10HI/O ROLLED DATA 10HIDLE DATA 10HSUSPENDED DATA 10HPCP ROLLED ERRNZ *-PRJB-1-RCJS TABLE LENGTH ERROR PRJC DATA 0 PRINT BUFFER POSITION POINTER PRJD DATA 0 RECOVERABLE JSN BUFFER POSITION POINTER PRJE DATA 0 NUMBER OF JSN-S REMAINING TO PRINT SPACE 4,10 * THE FOLLOWING TESTS ENSURE PROPER INTERFACE BETWEEN * THE RECOVERABLE JOB STATUSES PRINTED BY *RECOVER* AND * THE SYMBOLS DEFINED IN *COMSEJT*. IF AN ERROR OCCURRS, * THE PROPER STATUS SHOULD BE CHANGED IN THE TABLE OF * JOB STATUSES. ERRNZ PRJS-0 PRE-INITIAL JOB STEP ERRNZ EXJS-1 EXECUTING ERRNZ ROJS-2 SCHEDULER ROLLOUT ERRNZ SIJS-3 SCP ROLLIN ERRNZ SOJS-4 SCP ROLLOUT ERRNZ TOJS-5 TIMED/EVENT ROLLOUT ERRNZ IOJS-6 INTERACTIVE ROLLOUT ERRNZ DOJS-7 DISABLED ROLLOUT ERRNZ SUJS-10B SUSPENDED ROLLOUT ERRNZ PCJS-11B PSEUDO-ROLLOUT PTI SPACE 4,15 ** PTI - PROCESS TERMINAL INTERRUPT. * * *PTI* PROCESSES TERMINAL INTERRUPTS. IF A USER * BREAK 1 OR USER BREAK 2 IS DETECTED WHILE THE LIST * OF RECOVERABLE JOBS IS BEING PRINTED, THE LIST WILL * BE TERMINATED. * * USES X - 0, 1, 2, 6, 7. * A - 1, 6, 7. * * MACROS REPRIEVE. PTI BSS 0 ENTRY BX6 X6-X6 SA6 RPB+5 CLEAR PENDING SYSTEM REQUEST SA6 RPB+6 RESET TERMINAL INTERRUPT SA1 RPBA RESET *P* ADDRESS MX0 18 LX0 -6 BX2 -X0*X1 SX1 QUU3 LX1 36 BX6 X1+X2 SA6 RPBA SET *RESUME* ADDRESS SA1 INPUT SET COMPLETE BIT IN INPUT FET SX2 B1 BX7 X1+X2 SA7 A1+ SA1 OUTPUT SET COMPLETE BIT IN OUTPUT FET BX7 X1+X2 SA7 A1 SA1 INPUT+1 SX6 X1 SA6 A1+B1 SET IN = FIRST SA6 A6+1 SET OUT = FIRST SA1 TOFG ZR X1,PTI1 IF FILE NOT ASSIGNED TO TERMINAL SA1 OUTPUT+1 SX6 X1+ SA6 A1+B1 SET IN = FIRST SA6 A6+B1 SET OUT = FIRST PTI1 SX6 1 SA6 INFG SET TERMINAL INTERRUPT FLAG SA6 UPRF SET USER PROMPT FLAG REPRIEVE RPB,RESUME,200B RESUME PRIOR EXECUTION QUU SPACE 4,15 ** QUU - QUERY USER. * * EXIT (X2) = 1 IF USER ENTERED A VALID JSN. * (X2) = 0 IF USER ENTERED *END*. * (X2) = .LT. 0 IF USER ENTERED AN INCORRECT ENTRY OR * *RELIST*. * (X1) = USER RESPONSE, LEFT JUSTIFIED, ZERO FILLED. * * USES X - 0, 1, 2, 3, 4, 6. * A - 1, 2, 3, 6. * * CALLS ABT, PRJ. * * MACROS READC, RECALL, WRITEC, WRITER. QUU SUBR ENTRY/EXIT BX6 X6-X6 CLEAR USER PROMPT FLAG SA6 UPRF SA1 LRSF PL X1,QUU1 IF PREVIOUS RESPONSE NOT *RELIST* BX6 X6-X6 CLEAR FLAG SA6 A1 EQ QUU2 PRINT RECOVERABLE JOBS QUU1 SA1 UIFG GET USER INTERACTION FLAG ZR X1,QUU3 IF INTERACTION HAS BEEN DONE SA1 JSNX NZ X1,QUU8 IF JSN ENTERED ON COMMAND QUU2 RJ PRJ PRINT LIST OF JSN-S QUU3 WRITEW OUTPUT,QUUA,QUUAL PRINT MENU AND QUERY USER SA1 TIFG ZR X1,QUU4 IF FILE NOT ASSIGNED TO TERMINAL READ INPUT,R QUU4 READC INPUT,WBUF,WBFL NZ X1,QUU10 IF EOR, EOF OR EOI * DETERMINE IF REPLY = *RELIST*. SA2 MSGB SA1 WBUF BX2 X2-X1 ZR X2,QUU5 IF RESPONSE = *RELIST* SA2 MSGC BX2 X2-X1 ZR X2,QUU5 IF RESPONSE = *RELIST* SA2 MSGD BX2 X2-X1 NZ X2,QUU7 IF .NE. *RELIST* QUU5 BX6 X6-X6 CLEAR INCORRECT REPLY COUNTER SA6 INRC SA1 UPRF NZ X1,QUU6 IF NOT FIRST TIME THROUGH LOOP SX6 B1+ SET LOOP FLAG SA6 UPRF EQ QUU2 PRINT LIST OF JOBS QUU6 SX2 -B1 SET LIST EXIT FLAG BX6 X2 SET LIST RESPONSE FLAG SA6 LRSF EQ QUUX RETURN * DETERMINE IF REPLY = *GO*. QUU7 SA2 MSGF SA1 WBUF BX2 X2-X1 ZR X2,QUUX IF REPLY = *GO* SA2 MSGG BX2 X2-X1 ZR X2,QUUX IF REPLY = *GO* SA2 MSGG2 BX2 X2-X1 ZR X2,QUUX IF REPLY = *GO* SA2 MSGG3 BX2 X2-X1 ZR X2,QUUX IF REPLY = *GO* SA2 MSGG4 BX2 X2-X1 ZR X2,QUUX IF REPLY = *GO* * VALIDATE JSN. QUU8 MX0 6 LX0 -24 GET FIFTH CHARACTER IN REPLY BX2 X0*X1 NZ X2,QUU12 IF REPLY .GE. 5 CHARACTERS LX0 6 BX2 X0*X1 NZ X2,QUU9 IF REPLY = 4 CHARACTERS LX0 6 BX2 X0*X1 ZR X2,QUU12 IF REPLY .LE. 2 CHARACTERS SX2 1R_ SPACE-FILL FOURTH CHARACTER LX2 36 POSITION BLANK BX1 X1+X2 QUU9 BX6 X6-X6 CLEAR INCORRECT REPLY COUNTER SA6 INRC SX2 B1+ FLAG VALID REPLY EQ QUUX RETURN * CLEAR TERMINATION STATUS IN FET IF FILE ASSIGNED * TO A TERMINAL. QUU10 SA3 TIFG GET TERMINAL FLAG NZ X3,QUU11 IF FILE ASSIGNED TO TERMINAL WRITER OUTPUT FLUSH BUFFER SX3 MSGE * NO JSN-S RECOVERED.* EQ ABT ABORT QUU11 RECALL INPUT SA1 INPUT INPUT FET MX0 16 LX0 -42 BX6 -X0*X1 CLEAR TERMINATION STATUS SA6 A1 EQ QUU5 ASSUME *RELIST* QUU12 WRITEC OUTPUT,MSGH *INCORRECT ENTRY.* SA1 INRC GET INCORRECT REPLY COUNTER SX4 X1-MAXI COMPARE VALUES SX3 MSGJ * INCORRECT REPLY LIMIT REACHED.* ZR X4,ABT IF MAXIMUM EXCEEDED SX6 X1+B1 INCREMENT INCORRECT REPLY COUNTER SA6 INRC SX2 -B1 FLAG INCORRECT ENTRY EQ QUUX RETURN * USER PROMPT PRINT BUFFER. QUUA DATA C*ENTER GO TO CONTINUE CURRENT JOB,* DATA C* RELIST TO LIST RECOVERABLE JOBS,* DATA C* OR DESIRED JSN: "ES"* QUUAL EQU *-QUUA SRJ SPACE 4,10 ** SRJ - SORT LIST OF RECOVERABLE JOBS. * * *SRJ* SORTS THE LIST OF RECOVERABLE JOBS INTO * BUFFER *JSNB*. * * USES X - 0, 1, 2, 3, 5. * A - 1, 3, 5. * B - 2, 3, 4, 5, 6. * * MACROS MOVE. SRJ SUBR ENTRY/EXIT SA5 RJSN NUMBER OF JOBS RECOVERABLE SX5 X5-1 SX0 QRBL IX5 X0*X5 MX0 24 SB3 JSNB+X5 LAST JSN ADDRESS SB4 B1+ SRJ1 ZR B4,SRJX IF SORT COMPLETE SB4 B0+ SORT FLAG SB2 JSNB SB5 B2-QRBL SRJ2 SB5 B5+QRBL LE B3,B5,SRJ1 IF END OF BUFFER SA1 B5 JSN ENTRY ADDRESS SA3 A1+QRBL NEXT JSN ADDRESS BX1 X0*X1 EXTRACT JSN LX1 24 CLEAR SIGN BIT BX3 X0*X3 EXTRACT JSN LX3 24 CLEAR SIGN BIT IX1 X3-X1 PL X1,SRJ2 IF SWITCH UNNECESSARY SB4 B1 * SAVE ADDRESS LOCATIONS. SB2 A1 FIRST JSN ADDRESS SB4 A3+ SECOND JSN ADDRESS SB6 JSNT TEMPORARY ADDRESS FOR SWITCH * INTERCHANGE WORD BLOCKS. SX1 QRBL MOVE FIRST JSN BLOCK TO TEMPORARY SX2 B2 SX3 B6 MOVE X1,X2,X3 SX1 QRBL MOVE SECOND JSN BLOCK TO PREVIOUS BLOCK SX2 B4 SX3 B2 MOVE X1,X2,X3 SX1 QRBL MOVE TEMPORARY BLOCK TO NEXT BLOCK SX2 B6 SX3 B4 MOVE X1,X2,X3 EQ SRJ2 CONTINUE SORT SVJ SPACE 4,10 ** SVJ - SEARCH FOR JSN USER ENTERED. * * ENTRY (X1) = JSN LEFT-JUSTIFIED, ZERO-FILLED. * * EXIT (X2) = 0 IF JSN NOT FOUND OR JOB CANNOT BE RECOVERED. * * USES X - 0, 1, 2, 3, 4, 5, 6. * A - 2, 3, 6. * * MACROS WRITEC. SVJ4 SX5 MSGI *JSNX NOT FOUND.* SVJ5 SA2 X5 SET JSN IN MESSAGE MX0 -36 BX2 -X0*X2 BX6 X1+X2 SA6 A2 WRITEC OUTPUT,X5 ISSUE MESSAGE BX6 X6-X6 CLEAR *INCORRECT REPLY* COUNTER SA6 INRC BX2 X2-X2 FLAG JSN NOT FOUND SVJ SUBR ENTRY/EXIT SA2 RJSN NUMBER OF RECOVERABLE JSN-S SA3 JSNB TABLE ADDRESS OF RECOVERABLE JSN-S MX0 24 BX4 X1 LX4 24 SVJ1 BX3 X0*X3 EXTRACT JSN FROM BUFFER LX3 24 IX3 X4-X3 ZR X3,SVJ2 IF JSN FOUND NG X3,SVJ4 IF JSN NOT IN LIST SX2 X2-1 ZR X2,SVJ4 IF END OF TABLE SA3 A3+QRBL EQ SVJ1 COMPARE NEXT JSN SVJ2 SA2 A3+3 CHECK JOB ACCESS LEVEL LIMITS MX6 -3 LX2 -15 BX6 -X6*X2 UPPER ACCESS LEVEL LIMIT FOR SPECIFIED JOB SA2 JUAL IX6 X2-X6 PL X6,SVJ3 IF .LE. LIMIT FOR CURRENT JOB SX5 MSGL *JSNX NOT RECOVERABLE-SECURITY CONFLICT.* EQ SVJ5 ISSUE ERROR MESSAGE SVJ3 SX2 B1 FLAG JSN FOUND AND JOB RECOVERABLE EQ SVJX RETURN SPACE 4,10 * COMMON DECKS. *CALL COMCCDD *CALL COMCCIO *CALL COMCCPM *CALL COMCMVE *CALL COMCRDC *CALL COMCRDW *CALL COMCSFN *CALL COMCSYS *CALL COMCWTC *CALL COMCWTW SPACE 4,10 * BUFFERS. USE LITERALS INBUF EQU * INPUT BUFFER JSNT EQU INBUF+IBFL TEMPORARY FOR SORT SWITCH LIST EQU JSNT+QRBL LIST OF RECOVERABLE JSN-S OUTBUF EQU LIST+WRDL OUTPUT BUFFER WBUF EQU OUTBUF+OBFL WORKING BUFFER JSNB EQU WBUF+WBFL TABLE OF JSN-S, UJN-S, AND STATUSES RFL= EQU JSNB+JSNBL+200B SET *RECOVER* FL ERRNG AFFL*100B-RFL= FL EXCEEDS MAXIMUM LOGIN FL TITLE PRESET. ** PRS - PRESET. PRS SUBR ENTRY/EXIT SB1 1 * DETERMINE JOB ORIGIN. SX3 PRSA * USER ACCESS NOT VALID.* SA1 JOPR GET JOB ORIGIN TYPE LX1 -24 MX0 -12 BX1 -X0*X1 SX1 X1-TXOT NZ X1,ABT IF NOT *TXOT* SX6 B1+ SET INTERACTIVE FLAG SA6 IFLG * GET UPPER ACCESS LEVEL LIMIT FOR CURRENT JOB. GETJAL JUAL GET JOB ACCESS LEVEL LIMITS SA1 JUAL ISOLATE UPPER ACESS LEVEL LIMIT MX6 -3 LX1 -6 BX6 -X6*X1 SA6 A1 * PROCESS ARGUMENT LIST. SA1 ACTR MX0 -18 BX1 -X0*X1 ARGUMENT COUNT ZR X1,PRS5 IF NO ARGUMENTS SB4 X1 SET NUMBER OF ARGUMENTS SA1 ARGR DETERMINE COMMAND FORMAT MX0 -6 BX1 -X0*X1 SX2 X1-1R= ZR X2,PRS1 IF ORDER INDEPENDENT NZ X1,PRS2 IF ARGUMENT ERROR SX1 1 SET ERROR FLAG SB4 B4-MARG-1 PL B4,PRS2 IF ARGUMENT ERROR SA1 ARGR STORE JSN BX6 X1 SA6 JSNX SA1 ARGR+1 EQ PRS3 CHECK FOR VALID OPTIONS PRS1 R= A4,ARGR SB5 TARG ADDRESS OF ARGUMENT TABLE RJ ARG PROCESS ARGUMENTS PRS2 SX3 PRSB * ARGUMENT ERROR.* NZ X1,ABT IF ARGUMENT ERROR * CHECK IF *OP* OPTION VALID. SA1 T GET *OP* OPTIONS PRS3 MX0 -6 PRS4 LX1 6 BX2 -X0*X1 GET NEXT OPTION ZR X2,PRS5 IF NO MORE OPTIONS * SEARCH FOR *OP* OPTION SPECIFIED IN TABLE OF LEGAL OPTIONS. SX4 TOPOL NUMBER OF VALID OPTIONS RJ SVO SEARCH FOR MATCH SX3 PRSC * OP OPTION NOT VALID.* ZR X4,ABT IF NO MATCH * DETERMINE IF *T* WAS THE OPTION SPECIFIED. SX4 1RT BX4 X4-X2 NZ X4,PRS4 IF NOT *OP=T* SX6 1 SET LOGIN FLAG SA6 LFLG EQ PRS4 PROCESS NEXT OPTION * DETERMINE CM AVAILABLE. PRS5 MEMORY CM,STATM,R DETERMINE MAXIMUM CM AVAILABLE SA2 STATM BX6 X2 AX6 30 SA6 MAXC SX7 B0+ DETERMINE CURRENT CM AVAILABLE SA7 STATM MEMORY CM,A7,R SA1 STATM AX1 30 BX6 X1 SA6 MEMC * DETERMINE AND SET TERMINAL CHARACTERISTICS. TSTATUS TTST GET TERMINAL STATUS SA1 B1+TTST GET CURRENT CHARACTER SET MX0 1 LX0 3 BX1 X0*X1 ZR X1,PRS6 IF NOT 64 CHARACTER SET BX6 X1 SET ASCII FLAG SA6 ASFG CSET NORMAL SET TERMINAL CHARACTER MODE PRS6 PROMPT OFF SUPPRESS *IAF* PROMPTS SA1 LFTB SET LIST OF FILES BX6 X1 BX7 X7-X7 SA6 B1+B1 STORE TERMINAL FILES SA7 A6+B1 SX2 INPUT RJ STF DETERMINE IF FILE TYPE *TT* NZ X6,PRS7 IF FILE TYPE NOT *TT* SX6 B1+ STORE TERMINAL FLAG SA6 TIFG PRS7 SX2 OUTPUT RJ STF DETERMINE IF FILE TYPE *TT* NZ X6,PRSX IF FILE TYPE NOT *TT* SX6 B1+ STORE TERMINAL FLAG SA6 TOFG EQ PRSX RETURN PRSA DATA C* USER ACCESS NOT VALID.* PRSB DATA C* ARGUMENT ERROR.* PRSC DATA C* OP OPTION NOT VALID.* TARG SPACE 4,10 * TARG - ARGUMENT TABLE. TARG BSS 0 JSN ARG JSNX,JSNX JOB SEQUENCE NUMBER OP ARG T,T LOGIN ARG T DATA 0 *OP* OPTION * TOPO -TABLE OF VALID *OP* OPTIONS. TOPO BSS 0 DATA 1RT LOGIN TOPOL EQU *-TOPO SVO SPACE 4,10 ** SVO - SEARCH FOR VALID *OP* OPTIONS. * * ENTRY (X4) = NUMBER OF OPTIONS IN TABLE. * (X2) = VALUE SEARCHING FOR IN TABLE. * * EXIT (X4) = 0 IF *OP* NOT VALID. * (X2) = VALUE SEARCHED FOR IN TABLE. * * USES X - 2, 3, 4, 6. * A - 3, 6. SVO2 BX6 X6-X6 CLEAR AS VALID ENTRY SA6 A3 SVO SUBR ENTRY/EXIT SA3 TOPO TABLE OF LEGAL OPTIONS SVO1 BX3 X3-X2 ZR X3,SVO2 IF MATCH FOUND SX4 X4-1 ZR X4,SVOX IF OPTION NOT RECOGNIZED SA3 A3+1 EQ SVO1 COMPARE WITH NEXT VALUE SPACE 4,10 * COMMON DECKS. *CALL COMCARG *CALL COMCSTF SPACE 4,10 END