IDENT CTASK LCC OVERLAY(CTASK,0,0) SST BEGN,CMBL ENTRY CTASK SYSCOM B1 CTASK TITLE CTASK - RECOVER DATA BASE OR USER TASK. *COMMENT CTASK - RECOVER DATA BASE OR USER TASK. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. CTASK SPACE 4,10 *** CTASK - RECOVER DATA BASE OR USER TASK. * * E. D. REDIG. 80/06/11. CTASK SPACE 4,10 *** *CTASK* HANDLES THE FOLLOWING RECOVERY CASES: * * 1. INTERACTIVE USERS. * 2. *BTRAN* (BATCH) USERS. * 3. *CRM* DATA BASES. * 4. TERMINAL FAILURES. * * FOR A MORE COMPLETE DESCRIPTION REFER TO THE * APPROPRIATE PROCESSOR WITHIN *CTASK*. CTASK SPACE 4,50 *** DAYFILE MESSAGES ISSUED. * * ABNORMAL COMPLETION. * * * CTASK - DATA BASE OR FILE DOWN.* * THE DATA BASE, *TAF*/*CRM*, OR FILE IS DOWN ON * AN *RSTDBI* REQUEST. * * * CTASK - DATA BASE OR FILE IDLE.* * THE DATA BASE, *TAF/CRM*, OR FILE IS IDLE ON * AN *RSTDBI* REQUEST. * * * CTASK - FILE IS NOT INSTALLED.* * DATA BASE OR FILE NOT AVAILABLE IN *XXJ* FILE * ON A *CRMSTAT* REQUEST. * * * CTASK - INCORRECT RECOVERY CASE.* * RECOVER CASE NOT VALID. * * * CTASK - NO CRM RECOVERY FILES FOR DATA BASE.* * NO RECOVERY FILE ASSIGNED TO THE DATA BASE ON * AN *RSTDBI* REQUEST. * * * CTASK - SYSTEM IDENTIFIER UNKNOWN.* * OLD SYSTEM IDENTIFIER UNKNOWN WHEN ISSUING A * *TINVOKE* REQUEST. * * * CTASK - TABLE AREA NOT LARGE ENOUGH.* * THE TABLE AREA SUPPLIED BY *CTASK* FOR A *CRMSTAT* * REQUEST IS NOT LARGE ENOUGH. * * * CTASK - TASK LOGICAL ERROR.* * A LOGICAL ERROR OCCURRED THAT WAS NOT EXPECTED. * * * CTASK - TRANSACTION NOT RERUNNABLE.* * A TRANSACTION IS NOT RERUNNABLE AND A *RERUN* * WAS ATTEMPTED. * * * CTASK - TRMREC ERROR.* * ONE OF THE FOLLOWING OCCURRED. * 1. THERE WAS NO OUTSTANDING *DBEGIN* REQUEST. * 2. AN ERROR WAS ENCOUNTERED ON A DATA BASE OR * RECOVERY FILE. * 3. THE DATA BASE OR *TAF*/*CRM* IS DOWN. * * * CTASK - USER NOT DEFINED IN NETWORK FILE.* * THE *USER* IS NOT DEFINED IN THE *NETWORK* FILE * ON AN *SRERUN*, *TSTAT* OR *WSTAT* REQUEST. * COMMON DECKS. *CALL COMCMAC *CALL COMKTAF *CALL COMKFLD *CALL COMKIPR *CALL COMKMAC * SAVE ORIGIN COUNTER TO REMOVE COMMON DECK STORAGE IN * *COMKCBD*, *COMKCRM*, *COMKTDM*, *COMKTER*, AND *COMKTSC*. BEGN BSS 0 *CALL COMKCBD LIST X *CALL COMKCRM *CALL COMKTDM *CALL COMKTER *CALL COMKTRF LIST -X *CALL COMKTSC ORG BEGN RESTORE ORIGIN COUNTER TITLE CTASK ROUTINES. CTASK SPACE 4,15 *** COMMUNICATION BLOCK HEADER WORDS AND MESSAGES. * * INPUT TO *CTASK* APPEARS IN THE COMMUNICATION BLOCK. * THE INPUT IS AS FOLLOWS. * *T TMSW 60/ CASE *T, TMSW+1 60/ RECOVERY FLAG (RF) *T, TMSW+2 60/ OLDID *T, TMSW+3 60/ NEWID *T, TMSW+4 60/ USERNAME *T, TMSW+5 60/ *SRERUN* STATUS (RS) * * CASE = 1 RECOVER INTERACTIVE USER. * = 2 RECOVER *BTRAN* USER. * = 3 RECOVER *CRM* DATA BASE. * = 4 RECOVER TERMINAL FAILURE. * RF BIT 59 = 1, IF *CRM* AUTOMATIC RECOVERY USED. * BIT 0 = 1, IF *TAF* AUTOMATIC RECOVERY USED. * OLDID = PREVIOUS *CRM* IDENTIFIER. * NEWID = CURRENT *CRM* IDENTIFIER. * USERNAME = ONE-TO-SEVEN CHARACTER USERNAME LEFT-JUSTIFIED * WITH BLANK FILL. * RS = 0, IF *SRERUN* SUCCESSFUL. * = 1, IF *SRERUN* NOT SUCCESSFUL. * = -1, IF DATA BASE FILE DOWN. BSS CMBL RESERVE SPACE FOR COMMUNICATION BLOCK CTASK SPACE 4,20 ** CTASK - RECOVER DATA BASE OR USER TASK. * * ENTRY (TMSW) = RECOVERY MESSAGE (DATA BASE OR USER). * * EXIT SPECIFIED RECOVERY CASE PROCESSED. * * ERROR TO *CTA1* IF INCORRECT CASE. * * USES X - 3, 6. * A - 3. * B - 1, 2. * * CALLS RBU, RDB, RIU, RTF. * * MACROS CEASE, SCALL. CTASK SB1 1 SA3 TMSW GET RECOVER CASE LX3 -1 SX6 X3-TCTAL SB2 X3 PL X6,CTA1 IF INCORRECT RECOVERY CASE. JP B2+TCTA JUMP THRU TABLE TCTA PL X3,CTA1 UNUSED CASE EQ RIU RECOVER INTERACTIVE USER PL X3,RBU RECOVER *BTRAN* USER EQ RDB RECOVER *CRM* DATA BASE PL X3,RTF RECOVER TERMINAL FAILURE EQ CTA1 INCORRECT RECOVERY CASE TCTAL EQU *-TCTA LENGTH OF *CTASK* JUMP TABLE * THE PROCESSORS *RIU*, *RBU*, *RDB*, AND *RTF* * RETURN TO THE CODE BELOW TO TERMINATE PROCESSING. CTA1 SX3 CTAD INCORRECT RECOVERY CASE CTA2 SA3 X3 AX3 18 SCALL TMSG,(X3,A3) SEND DAYFILE MESSAGE CTA3 CEASE EXIT TASK WITH CEASE CTA4 SA3 X3 AX3 18 SCALL TMSG,(X3,A3) SEND DAYFILE MESSAGE CTA5 CEASE 2 ABNORMAL CEASE WITH MEMORY DUMP * DAYFILE MESSAGES. CTAAM DATA C* CTASK - DATA BASE OR FILE DOWN.* CTAA VFD 42/CTAAM,18/**10-CTAAM*10 CTACM DATA C* CTASK - FILE IS NOT INSTALLED.* CTAC VFD 42/CTACM,18/**10-CTACM*10 CTADM DATA C* CTASK - INCORRECT RECOVERY CASE.* CTAD VFD 42/CTADM,18/**10-CTADM*10 CTAEM DATA C* CTASK - NO CRM RECOVERY FILES FOR DATA BASE.* CTAE VFD 42/CTAEM,18/**10-CTAEM*10 CTAFM DATA C* CTASK - SYSTEM IDENTIFIER UNKNOWN.* CTAF VFD 42/CTAFM,18/**10-CTAFM*10 CTAGM DATA C* CTASK - TABLE AREA NOT LARGE ENOUGH.* CTAG VFD 42/CTAGM,18/**10-CTAGM*10 CTAHM DATA C* CTASK - TASK LOGICAL ERROR.* CTAH VFD 42/CTAHM,18/**10-CTAHM*10 CTAIM DATA C* CTASK - TRANSACTION NOT RERUNNABLE.* CTAI VFD 42/CTAIM,18/**10-CTAIM*10 CTAJM DATA C* CTASK - TRMREC ERROR.* CTAJ VFD 42/CTAJM,18/**10-CTAJM*10 CTAKM DATA C* CTASK - USER NOT DEFINED IN NETWORK FILE.* CTAK VFD 42/CTAKM,18/**10-CTAKM*10 CTALM DATA C* CTASK - DATA BASE OR FILE IDLE.* CTAL VFD 42/CTALM,18/**10-CTALM*10 CTASK SPACE 4,35 ** RIU - RECOVER INTERACTIVE USER. * * TO RECOVER AN INTERACTIVE USER A *TINVOKE* REQUEST IS * ISSUED USING ONLY THE *NEW-SYS-ID* PARAMETER. THIS * RETURNS A NEW SYSTEM IDENTIFIER (TRANSACTION SEQUENCE * NUMBER) TO BE USED FOR ALL TASKS IN THE RECOVERY UNIT. * * NEXT, AN *RSTDBI* REQUEST IS USED TO RESTORE THE * BEGIN IDENTIFIERS TO *CRM* FOR A RECOVERED TRANSACTION. * * THEN, AN *SRERUN* REQUEST IS ISSUED TO CAUSE THE INITIAL * TERMINAL INPUT FOR A RERUNNABLE TRANSACTION TO BE * RESUBMITTED TO THE TRANSACTION SYSTEM. * * FINALLY, A *RECOVERY, RERUNNING TRANSACTION.* MESSAGE IS * SENT TO THE ORIGINATING TERMINAL. WHEN *CTASK* CEASES, * *ITASK* IS CALLED AS IF THE INPUT CAME FROM THE TERMINAL. * * ENTRY RECOVER INTERACTIVE USER CASE SELECTED. * (TMSW+1) = RECOVERY FLAG. * * EXIT TO *CTA3* FOR CEASE. * (TMSW+5) = 0, IF *SRERUN* SUCCESSFUL. * = 1, IF *SRERUN* NOT SUCCESSFUL. * = -1, IF DATA BASE FILE DOWN. * * ERROR (X3) = FWA OF DAYFILE MESSAGE PARAMETERS. * (TMSW+5) = *SRERUN* STATUS. * TO *CTA2* IF ERROR AND NORMAL CEASE. * TO *CTA4* IF ERROR AND ABNORMAL CEASE. * * USES X - 2, 3, 4, 6. * A - 2, 3, 6. * * CALLS RID. * * MACROS SCALL, TRMREC. RIU SA2 TMSW+1 GET RECOVERY FLAG SX3 B0 SX6 B1 PL X2,RIU1 IF NO *CRM* RECOVERY * ISSUE *TINVOKE* USING *NEW-ID* TO GET NEW SEQUENCE NUMBER. SCALL TINVOKE,(RIUC,RIUD) SA2 RIUC GET STATUS OF REQUEST SX3 CTAH TASK LOGICAL ERROR SX4 X2-TSNE NO ERRORS STATUS SX6 B1+ NZ X4,RIU2 IF ERRORS IN *TINVOKE* * RETURN BEGIN-COMMIT HISTORY TO *CRM* WITH *RSTDBI*. RJ RID RESTORE DATA BASE IDENTIFIERS SX3 CTAE RECOVERY FILE NOT ASSIGNED TO DATA BASE SX4 X2-TERAF SX6 B1+ ZR X4,RIU2 IF NO RECOVERY FILE FOR DATA BASE SX3 CTAA DATA BASE OR FILE DOWN SX4 X2-TERAK SX6 -1 ZR X4,RIU2 IF DATA BASE OR FILE DOWN SX3 CTAL DATA BASE OR FILE IDLE SX4 X2-TERAG ZR X4,RIU2 IF DATA BASE OR FILE IDLE SX3 CTAH TASK LOGICAL ERROR SX6 B1+ NZ X2,RIU2 IF REQUEST NOT SUCCESSFUL SX4 B0+ SX3 B0+ RIU1 SA2 TMSW+1 GET RECOVERY FLAG SX2 X2+ ZR X2,RIU2 IF NO *TAF* AUTOMATIC RECOVERY * ISSUE *SRERUN* REQUEST TO RERUN TRANSACTION. SCALL SRERUN,(RIUB) SA2 RIUB GET STATUS OF REQUEST SX3 CTAI TRANSACTION NOT RERUNNABLE SX4 X2-TSNO SX6 B1+ ZR X4,RIU2 IF TRANSACTION NOT RERUNNABLE SX3 CTAK USER NOT DEFINED IN NETWORK FILE SX4 X2-TSUU ZR X4,RIU2 IF USER UNKNOWN SX3 CTAH TASK LOGICAL ERROR SX4 X2-TSNE NO ERRORS STATUS NZ X4,RIU2 IF ERRORS IN *SRERUN* SX6 B0+ SA6 TMSW+5 STORE *RERUN* SUCCESSFUL EQ CTA3 CEASE RIU2 SA6 TMSW+5 STORE *SRERUN* NOT SUCCESSFUL SX6 X4 SA6 A6+B1 STORE CEASE TYPE SX6 X3 SA6 A6+B1 STORE DAYFILE MESSAGE SA2 TMSW+5 NG X2,RIU3 IF FILE DOWN OR IDLE SA2 TMSW+1 GET RECOVERY FLAG PL X2,RIU3 IF NO *CRM* RECOVERY * ISSUE *TRMREC* REQUEST TO CLEAR *CRM* TABLES ON ERROR. TRMREC RIUE SA2 RIUG GET STATUS OF REQUEST SX3 CTAJ *TRMREC* ERROR NZ X2,CTA2 IF REQUEST NOT SUCCESSFUL RIU3 SA3 TMSW+7 GET DAYFILE MESSAGE ZR X3,CTA3 IF NO MESSAGE THEN CEASE SA2 TMSW+6 GET CEASE TYPE ZR X2,CTA2 IF ERROR WITH NORMAL CEASE EQ CTA4 ERROR WITH ABNORMAL CEASE * *SRERUN* REQUEST PARAMETER. RIUB CON 0 STATUS OF REQUEST * *TINVOKE* REQUEST PARAMETERS. RIUC CON 0 STATUS OF REQUEST RIUD CON 0 NEW SYSTEM IDENTIFIER * *TRMREC* REQUEST PARAMETERS. RIUE VFD 42/0,18/RIUF VFD 42/0,18/RIUG CON 0 RIUF CON 0 ZERO WORD RIUG CON 0 STATUS OF REQUEST CTASK SPACE 4,30 ** RBU - RECOVER *BTRAN* USER. * * TO RECOVER A *BTRAN* USER A *TINVOKE* REQUEST IS ISSUED * USING ONLY THE *NEW-SYS-ID* PARAMETER. THIS RETURNS A * NEW SYSTEM IDENTIFIER (TRANSACTION SEQUENCE NUMBER) TO * BE USED FOR ALL TASKS IN THE RECOVERY UNIT. * * THEN AN *RSTDBI* REQUEST IS USED TO RESTORE THE BEGIN * IDENTIFIERS TO *CRM* FOR A RECOVERED TRANSACTION. * * FINALLY, AN *SRERUN* REQUEST IS USED TO CAUSE THE INITIAL * INPUT FOR A RERUNNABLE TRANSACTION TO BE RESUBMITTED TO * THE TRANSACTION SYSTEM. THIS PROCESS CAUSES *ITASK* TO * BE CALLED JUST AS IF THE INPUT CAME FROM THE TERMINAL. * * ENTRY RECOVER *BTRAN* USER CASE SELECTED. * (TMSW+1) = RECOVERY FLAG. * (TMSW+4) = USERNAME. * * EXIT TO *CTA3* FOR CEASE. * * ERROR (X7) = FWA OF DAYFILE MESSAGE PARAMETERS. * TO *CTA2* IF ERROR AND NORMAL CEASE. * TO *CTA4* IF ERROR AND ABNORMAL CEASE. * * USES X - 2, 3, 4, 6. * A - 2, 6. * * CALLS RID. * * MACROS SCALL. RBU SA2 TMSW+1 GET RECOVERY FLAG PL X1,RBU1 IF NO *CRM* RECOVERY * ISSUE *TINVOKE* USING *NEW-ID* TO GET NEW SEQUENCE NUMBER. SCALL TINVOKE,(RBUC,RBUD) SA2 RBUC GET STATUS OF REQUEST SX3 CTAH TASK LOGICAL ERROR SX4 X2-TSNE NO ERRORS STATUS NZ X4,CTA4 IF ERRORS IN *TINVOKE* * RETURN BEGIN-COMMIT HISTORY TO *CRM* WITH *RSTDBI*. RJ RID RESTORE DATA BASE IDENTIFIERS SX3 CTAE RECOVERY FILE NOT ASSIGNED TO DATA BASE SX4 X2-TERAF ZR X4,CTA2 IF NO RECOVERY FILE FOR DATA BASE SX3 CTAA DATA BASE OR FILE DOWN SX4 X2-TERAK ZR X4,CTA2 IF DATA BASE OR FILE DOWN SX3 CTAL DATA BASE OR FILE IDLE SX4 X2-TERAG ZR X4,CTA2 IF DATA BASE OR FILE IDLE SX3 CTAH TASK LOGICAL ERROR NZ X2,CTA4 IF REQUEST NOT SUCCESSFUL RBU1 SA2 TMSW+1 GET RECOVERY FLAG SX2 X2+ ZR X2,CTA3 IF NO *TAF* AUTOMATIC RECOVERY * ISSUE *SRERUN* REQUEST TO RERUN TRANSACTION USING USERNAME. SCALL SRERUN,(RBUA,TMSW+4) SA2 RBUA GET STATUS OF REQUEST SX3 CTAI TRANSACTON NOT RERUNNABLE SX4 X2-TSNO ZR X4,CTA2 IF TRANSACTION NOT RERUNNABLE SX3 CTAH TASK LOGICAL ERROR SX4 X2-TSNE NO ERRORS STATUS NZ X4,CTA4 IF ERRORS IN *RERUN* EQ CTA3 CEASE * *SRERUN* REQUEST PARAMETER. RBUA CON 0 STATUS OF REQUEST * *TINVOKE* REQUEST PARAMETERS. RBUC CON 0 STATUS OF REQUEST RBUD CON 0 NEW SYSTEM IDENTIFIER CTASK SPACE 4,50 ** RDB - RECOVER *CRM* DATA BASE. * * TO RECOVER THE *CRM* DATA BASE A *TAF* *CRM* REQUEST * *CRMSTAT* IS USED TO RETURN THE BEGIN-COMMIT HISTORY. * THIS INFORMATION IS PRIMARILY THE TRANSACTION SEQUENCE * TABLE (TSEQ) IN ITS ENTIRITY AS IT EXITS AT THE TIME * THE REQUEST IS PROCESSED. THE TABLE IS DEFINED WITH * *FIELD* MACROS IN *COMKCRM*. THIS DECK ALSO DEFINES * THE LENGTH OF EACH ENTRY OF THIS TABLE (TSEQE SYMBOL). * THE NUMBER OF ENTRIES IN THIS TABLE IS *CMDM*, WHICH * IS AN INSTALLATION PARAMETER DEFINED IN *COMKIPR*. * THE FIRST WORD OF EACH ENTRY OF THIS TABLE IS ZERO IF * THE ENTRY DOES NOT CONTAIN A TRANSACTION ENTRY. * * WITH THE INFORMATION IN THE *CRMSTAT* TABLE, RECOVERY * PROCESSING IS INITIATED. SUBROUTINE *RBC* HANDLES THE * PROCESSING BY CHECKING THE TRANSACTION SEQUENCE NUMBER OF * EACH ENTRY IN THE *CRMSTAT* TABLE AGAINST THE *TAF* RECOVERY * FILE. WHEN A MATCH IS FOUND, THE BEGIN IDENTIFIERS FROM * THE *CRMSTAT* TABLE ARE USED AS INPUT PARAMETERS INTO * THE APPROPRIATE PARAMETERS IN *WSTAT*. THEN A *WSTAT* * REQUEST IS ISSUED TO RECORD THE BEGIN-COMMIT HISTORY ON * THE *TAF* RECOVERY FILE. SUBROUTINE *CSN* COMPARES THE * TRANSACTION SEQUENCE NUMBERS FROM THE *TAF* RECOVERY FILE * AND THE *CRMSTAT* TABLE. * * WHEN RECOVERY PROCESSING IS COMPLETE, ROLL BACK PRO- * CESSING IS INITIATED. SUBROUTINE *RDC* HANDLES THE ROLL * BACK PROCESSING BY USING THE TRANSACTION SEQUENCE NUMBER OF * EACH *CRMSTAT* ENTRY AS THE *OLD-SYS-ID* ON THE *TINVOKE* * REQUEST. THIS WOULD ESTABLISH THE TASK/JOB AS A CONTIN- * UATION OF A PREVIOUS ONE FOR THE PURPOSE OF ISSUING A TRMREC * REQUEST TO ROLL BACK THE DATA TO A CONSISTENT STATE. * * WITH THE SUCCESSFUL COMPLETION OF ROLL BACK PROCESSING, * *BTASK* IS CALLED TO RECOVER *BTRAN* TRANSACTIONS. UPON * THE COMPLETION OF *BTASK*, A *WSTAT* REQUEST IS ISSUED * TO START INPUT TO TAF AND DATA BASE RECOVERY IS COMPLETE. * * ENTRY RECOVER *CRM* DATA BASE CASE SELECTED. * (TMSW+1) = RECOVERY FLAG. * * EXIT TO *CTA3* FOR NORMAL CEASE. * TO *CTA5* FOR ABNORMAL CEASE. * * ERROR APPROPRIATE ERROR MESSAGE ISSUED TO DAYFILE. * TO *CTA4* IF NOT SYSTEM ORIGIN TRANSACTION. * * USES X - 2, 3, 4, 6, 7. * A - 2, 6. * * CALLS RBC, RDC. * * MACROS CALLRTN, CRMSTAT, SCALL. RDB SA2 TNAM SX3 -CTAH TASK LOGICAL ERROR LX2 59-CBSYS PL X2,CTA4 IF NOT SYSTEM ORIGIN TRANSACTION SX6 B0 SA2 TMSW+1 GET RECOVERY FLAG SA6 RDBM INITIALIZE NORMAL CEASE PL X2,RDB4 IF NO *CRM* RECOVERY * ISSUE *CRMSTAT* REQUEST TO GET BEGIN-COMMIT HISTORY. CRMSTAT RDBD SA2 RDBF GET STATUS OF REQUEST SX3 CTAC FILE IS NOT INSTALLED SX4 X2-TERB ZR X4,RDB2 IF FILE IS NOT INSTALLED SX3 CTAG TABLE AREA NOT LARGE ENOUGH SX4 X2-TERAN ZR X4,RDB2 IF TABLE AREA NOT LARGE ENOUGH SX3 -CTAH TASK LOGICAL ERROR NZ X2,RDB2 IF REQUEST NOT SUCCESSFUL SA2 TMSW+1 GET RECOVERY FLAG SX2 X2 ZR X2,RDB1 IF NO *TAF* AUTOMATIC RECOVERY SX6 B1 SA6 RDBN RECOVERY PROCESSING NOT COMPLETE * RECOVER *TAF* *CRM* DATA BASE BEGIN-COMMIT HISTORY. RJ RBC RECOVER BEGIN-COMMIT HISTORY SA2 RDBN NZ X2,RDB2 IF RECOVERY PROCESSING NOT COMPLETE RDB1 SX6 B0+ SA6 RDBL INITIALIZE *TRMREC* COUNTER * ROLL BACK THE DATA BASE TO A CONSISTENT STATE. RJ RDC ROLL BACK DATA BASE SX6 X3+ SA6 TMSW+6 SAVE ERROR MESSAGE SA2 TRSQ GET TRANSACTION SEQUENCE NUMBER MX4 -CBTSN BX6 -X4*X2 SA6 RDBK SET OLD SYSTEM IDENTIFIER * RESTORE *CTASK* SEQUENCE NUMBER BEFORE CEASING. SCALL TINVOKE,(RDBI,RDBJ,RDBK) SA2 RDBI SX3 -CTAH TASK LOGICAL ERROR SX4 X2-TSNE NZ X4,RDB2 IF ERRORS IN *TINVOKE* SA3 TMSW+6 SA2 RDBL NZ X2,RDB2 IF *TRMREC* ERRORS EQ RDB4 START TERMINAL INPUT RDB2 SX6 CSTT TERMINATE *TAF* SA6 RDBC TRANSACTION STEP PL X3,RDB3 IF NORMAL CEASE SX7 B1 BX3 -X3 SA7 RDBM ABNORMAL CEASE RDB3 SA3 X3 AX3 18 SCALL TMSG,(X3,A3) SEND DAYFILE MESSAGE EQ RDB5 ISSUE *WSTAT* REQUEST RDB4 SX6 CSST START TERMINAL/JOB INPUT SA6 RDBC TRANSACTION STEP * ISSUE A *CALLRTN* TO *BTASK* TO RECOVER *BTRAN* TRANSACTIONS * AND A *WSTAT* REQUEST TO TERMINATE TAF OR START INPUT. RDB5 CALLRTN RDBO SCALL WSTAT,(RDBA,RDBB,RDBC) SA2 RDBA SX3 CTAH TASK LOGICAL ERROR SX4 X2-TSNE NZ X4,CTA4 IF ERRORS IN *WSTAT* SA2 RDBM ZR X2,CTA3 IF NORMAL CEASE EQ CTA5 ABNORMAL CEASE WITH MEMORY DUMP * *WSTAT* REQUEST PARAMETERS. RDBA CON 0 STATUS OF REQUEST RDBB DATA 4HSTEP KEYWORD *STEP* RDBC CON 0 TRANSACTION STEP * *CRMSTAT* REQUEST PARAMETERS. RDBD VFD 42/0,18/RDBE VFD 42/0,18/RDBF VFD 42/0,18/RDBG VFD 42/0,18/RDBH CON 0 RDBE CON 0 *CRM* STATUS FUNCTION RDBF CON 0 STATUS OF REQUEST RDBG BSSZ RMDM*CMDM*TSEQE+TSEQE+1+2*AAMQFL+AIBFL+AOBFL+1 RDBH CON *-RDBG LENGTH OF *CRMSTAT* TABLE * *TINVOKE* REQUEST PARAMETERS. RDBI CON 0 STATUS OF REQUEST RDBJ CON 0 NEW SYSTEM IDENTIFIER RDBK CON 0 OLD SYSTEM IDENTIFIER RDBL CON 0 *TRMREC* ERROR COUNTER RDBM CON 0 NORMAL CEASE FLAG RDBN CON 0 RECOVERY PROCESSING COMPLETE FLAG * *CALLRTN* TASK LIST. RDBO CON 5LBTASK CON 0 RTF SPACE 4,40 ** RTF - RECOVER TERMINAL FAILURE. * * TO RECOVER TERMINAL FAILURES, SUBROUTINE *RBH* HANDLES THE * PROCESSING BY CHECKING THE TRANSACTION SEQUENCE NUMBER * FROM THE *TAF* RECOVERY FILE AGAINST THE ENTRIES IN * THE *CRMSTAT* TABLE. IF A MATCH IS FOUND, THE BEGIN * IDENTIFIERS FROM THE *CRMSTAT* TABLE ARE USED AS INPUT * PARAMETERS IN *WSTAT*. THEN A *WSTAT* REQUEST IS * ISSUED TO RECORD THE BEGIN-COMMIT HISTORY ON THE *TAF* * RECOVERY FILE. SUBROUTINE *CSN* COMPARES THE TRANSACTION * SEQUENCE NUMBERS FROM THE *TRF* AND THE *CRMSTAT* TABLE. * * WHEN RECOVERY PROCESSING IS COMPLETE, ROLL BACK PRO- * CESSING IS STARTED. SUBROUTINE *RCS* HANDLES THE ROLL * BACK PROCESSING BY USING THE TRANSACTION SEQUENCE NUMBER * FROM THE *TRF* AS THE *OLD-SYS-ID* ON THE *TINVOKE* * REQUEST. THIS ESTABLISHES THE TASK/JOB AS A CONTINUATION * OF A PREVIOUS ONE FOR THE PURPOSE OF ISSUING A *TRMREC* * REQUEST TO ROLL BACK THE DATA TO A CONSISTENT STATE. * * WITH THE COMPLETION OF ROLL BACK PROCESSING, A *WSTAT* * REQUEST IS ISSUED TO START TERMINAL INPUT TO *TAF* AND * TERMINAL FAILURE RECOVERY IS COMPLETE. * * ENTRY (TMSW+1) = RECOVERY FLAG. * * EXIT TO *CTA3* FOR NORMAL CEASE. * TO *CTA5* FOR ABNORMAL CEASE. * * ERROR APPROPRIATE ERROR MESSAGE ISSUED TO DAYFILE. * TO *CTA4* IF NOT SYSTEM ORIGIN TRANSACTION. * * USES X - 2, 3, 4, 6, 7. * A - 2, 6, 7. * * CALLS RBH, RCS. * * MACROS SCALL. RTF SA2 TNAM SX3 -CTAH TASK LOGICAL ERROR LX2 59-CBSYS PL X2,CTA4 IF NOT SYSTEM ORIGIN TRANSACTION SX7 B0 SA2 TMSW+1 GET RECOVERY FLAG SA7 RDBM INITIALIZE NORMAL CEASE PL X2,RTF3 IF NO *CRM* RECOVERY SX7 B1+ SA7 RDBN RECOVERY PROCESSING NOT COMPLETE * RECOVER *TAF/CRM* DATA BASE BEGIN-COMMIT HISTORY. RJ RBH RECOVER BEGIN-COMMIT HISTORY SA2 RDBN NZ X2,RTF1 IF RECOVERY PROCESSING NOT COMPLETE SA2 RBHA NZ X2,RTF3 IF ROLL BACK PROCESSING NOT NECESSARY SX7 B0+ SA7 RDBL INITIALIZE *TRMREC* COUNTER * ROLL BACK THE DATA BASE TO A CONSISTENT STATE. RJ RCS ROLL BACK TO CONSISTENT STATE SX6 X3+ SA6 TMSW+6 SAVE ERROR MESSAGE SA2 TRSQ GET TRANSACTION SEQUENCE NUMBER MX4 -CBTSN BX6 -X4*X2 SA6 RDBK SET OLD SYSTEM IDENTIFIER * RESTORE *CTASK* SEQUENCE NUMBER BEFORE CEASING. SCALL TINVOKE,(RDBI,RDBJ,RDBK) SA2 RDBI GET STATUS OF REQUEST SX3 -CTAH TASK LOGICAL ERROR SX4 X2-TSNE NZ X4,RTF1 IF ERRORS IN *TINVOKE* SA3 TMSW+6 SA2 RDBL NZ X2,RTF1 IF *TRMREC* ERRORS EQ RTF3 START TERMINAL INPUT RTF1 SX6 CSTT TERMINATE *TAF* SA6 RDBC TRANSACTION STEP PL X3,RTF2 IF NORMAL CEASE SX7 B1 BX3 -X3 SA7 RDBM ABNORMAL CEASE WITH DUMP RTF2 SA3 X3 AX3 18 SCALL TMSG,(X3,A3) SEND DAYFILE MESSAGE EQ RTF4 ISSUE *WSTAT* REQUEST RTF3 SX6 CSST START TERMINAL/JOB INPUT SA6 RDBC TRANSACTION STEP * ISSUE *WSTAT* REQUEST TO TERMINATE *TAF* OR START INPUT. RTF4 SCALL WSTAT,(RDBA,RDBB,RDBC) SA2 RDBA GET STATUS OF REQUEST SX3 CTAH TASK LOGICAL ERROR SX4 X2-TSNE NZ X4,CTA4 IF ERRORS IN *WSTAT* SA2 RDBM ZR X2,CTA3 IF NORMAL CEASE EQ CTA5 ABNORMAL CEASE WITH MEMORY DUMP CTASK SPACE 4,10 ** CCE - COUNT *CRMSTAT* ENTRIES. * * ENTRY (B2) = NUMBER OF ENTRIES IN *CRMSTAT* TABLE. * RDBG = FWA OF *CRMSTAT* TABLE. * * EXIT (B3) = NUMBER OF VALID ENTRIES IN *CRMSTAT* TABLE. * * USES X - 2, 3. * A - 2, 3. * B - 2, 3. CCE SUBR ENTRY/EXIT SB3 B0+ VALID ENTRY COUNT SA2 RDBG+TSSQW-TSEQE INITIALIZE FWA OF *CRMSTAT* TABLE CCE1 SB2 B2-1 DECREMENT ENTRY COUNT ZR B2,CCEX IF END OF *CRMSTAT* TABLE SA2 A2+TSEQE GET NEXT ENTRY FROM *CRMSTAT* TABLE ZR X2,CCE1 IF NULL ENTRY SA3 A2+TSRCW LX3 59-TSRCS TASK RECOVERED FROM *BRF* BIT PL X3,CCE1 IF TASK NOT RECOVERED FROM *BRF* SB3 B3+1 INCREMENT VALID ENTRY COUNT EQ CCE1 LOOP FOR NEXT ENTRY IN *CRMSTAT* TABLE CTASK SPACE 4,15 ** CSN - COMPARE SEQUENCE NUMBERS. * * ENTRY (RBCF) = *TSTAT* SEQUENCE NUMBER. * (RBCD) = *TSTAT* USER NAME. * RDBG = FWA OF *CRMSTAT* TABLE. * * EXIT (X0) = 0, IF MATCH FOUND. * 1, IF NO MATCH. * (A3) = FWA OF *CRMSTAT* ENTRY IF MATCH FOUND. * * USES X - 0, 1, 2, 3, 4, 5, 6. * A - 1, 2, 3, 6. * B - 3, 4. CSN SUBR ENTRY/EXIT SA2 TMSW TERMINAL FAILURE CASE SB4 X2-TYTF SB3 RMDM*CMDM+2 INITIALIZE ENTRY COUNTER SA2 RBCF GET *SEQ* NUMBER FROM *TSTAT* SX0 B1+ NO MATCH SA3 RDBG+TSSQW-TSEQE INITIALIZE FWA OF *CRMSTAT* TABLE CSN1 SB3 B3-1 DECREMENT ENTRY COUNT ZR B3,CSNX IF END OF *CRMSTAT* TABLE, RETURN SA3 A3+TSEQE GET NEXT ENTRY FROM *CRMSTAT* TABLE ZR X3,CSN1 IF NULL ENTRY ZR B4,CSN2 IF TERMINAL FAILURE CASE SA1 A3+TSRCW LX1 59-TSRCS TASK RECOVERED FROM *BRF* BIT PL X1,CSN1 IF TASK NOT RECOVERED FROM *BRF* CSN2 MX4 TSSQN BX5 X4*X3 MASK OFF *CRM* SEQUENCE NUMBER LX5 TSSQN-1-TSSQS RIGHT JUSTIFY *CRM* SEQUENCE NUMBER IX3 X5-X2 NZ X3,CSN1 IF NO MATCH SA1 A3+TSUNW GET USER FROM *CRMSTAT* TABLE SA2 RBCD GET USER FROM *TSTAT* MX4 TSUNN BX1 X4*X1 BX2 X4*X2 BX4 X1-X2 NZ X4,CSN1 IF USER NAMES DO NOT MATCH SX0 B0+ MATCH FOUND EQ CSNX RETURN CTASK SPACE 4,20 ** RBC - RECOVER BEGIN-COMMIT HISTORY. * * ENTRY *CRMSTAT* TABLE LOADED. * (RDBN) = 1, FOR RECOVERY PROCESSING NOT COMPLETE. * * EXIT (RDBN) = 0, IF RECOVERY PROCESSING COMPLETE. * = 1, IF NOT COMPLETE. * * ERROR (X3) = ADDRESS OF ERROR MESSAGE WHEN NOT COMPLETE. * * USES X - 2, 3, 4, 6, 7. * A - 2, 3, 6, 7. * B - 2. * * CALLS CCE, CSN. * * MACROS SCALL. RBC SUBR ENTRY/EXIT SB2 RMDM*CMDM+2 SA3 RBCS GET BLANK WORD BX6 X3 RJ CCE COUNT *CRMSTAT* ENTRIES SX7 B3+B1 VALID ENTRY COUNT SA6 RBCD INITIALIZE *NEXT* FOR *TSTAT* SA7 RBCT RBC1 SA1 RBCT SX6 X1-1 DECREMENT ENTRY COUNT ZR X6,RBC4 IF END OF *CRMSTAT* TABLE SA6 A1+ * ISSUE *TSTAT* REQUEST TO RETURN OPERATIONAL ENVIRONMENT. RBC2 SCALL TSTAT,(RBCA,RBCC,RBCD,RBCE,RBCF,RBCG,RBCH,RBCI,RBCJ,RBC ,K,RBCL,RBCM,RBCN) ISSUE *TSTAT* REQUEST SA2 RBCA GET STATUS OF REQUEST SX4 X2-TSRU RECOVERY UNAVAILABLE STATUS ZR X4,RBC4 IF RECOVERY UNAVAILABLE SX4 X2-TSEN ZR X4,RBC4 IF END OF *NEXT* PROCESSING SX3 CTAK USER NOT DEFINED IN NETWORK FILE SX4 X2-TSUU USER UNKNOWN STATUS ZR X4,RBCX IF USER UNKNOWN, RETURN SX3 -CTAH TASK LOGICAL ERROR SX4 X2-TSNE NO ERRORS STATUS NZ X4,RBCX IF ERRORS IN *TSTAT*, RETURN RJ CSN COMPARE SEQUENCE NUMBERS NZ X0,RBC2 IF NO MATCH FOUND SX6 CSBC SA6 RBCH SET TRANSACTION STEP SA3 A3+TSBCW GET BEGIN IDENTIFIERS FROM *CRMSTAT* TABLE ERRNZ TSBPW-TSBCW ID-S NOT IN SAME WORD MX4 -TSBCN ERRNZ TSBPN-TSBCN ID-LENGTH NOT EQUAL BX6 -X4*X3 MASK OFF CURRENT BEGIN IDENTIFIER LX3 TSBPN-1-TSBPS RIGHT JUSTIFY PREVIOUS BEGIN IDENTIFIER BX7 -X4*X3 MASK OFF PREVIOUS BEGIN IDENTIFIER SA6 RBCR CURRENT *CRM* IDENTIFIER SA7 RBCP PREVIOUS *CRM* IDENTIFIER * ISSUE *WSTAT* REQUEST TO RECORD BEGIN-COMMIT HISTORY. SCALL WSTAT,(RBCA,RBCB,RBCD,RBCE,RBCF,RBCG,RBCH,RBCI,RBCJ,RBC ,K,RBCL,RBCM,RBCN,RBCO,RBCP,RBCQ,RBCR) ISSUE *WSTAT* REQUEST SA2 RBCA GET STATUS OF REQUEST SX3 CTAK USER NOT DEFINED IN NETWORK FILE SX4 X2-TSUU USER UNKNOWN STATUS ZR X4,RBCX IF USER UNKNOWN, RETURN SX3 -CTAH TASK LOGICAL ERROR SX4 X2-TSNE NO ERRORS STATUS NZ X4,RBCX IF ERRORS IN *WSTAT*, RETURN EQ RBC1 LOOP FOR NEXT ENTRY IN *CRMSTAT* TABLE RBC4 SX7 B0+ RECOVER PROCESSING COMPLETE SA7 RDBN EQ RBCX RETURN * *TSTAT* AND *WSTAT* REQUEST PARAMETERS. RBCA CON 0 STATUS OF REQUEST RBCB DATA 4HUSER KEYWORD *USER* RBCC DATA 4HNEXT KEYWORD *NEXT* RBCD CON 0 NEXT USER FROM *TAF* RECOVERY FILE RBCE DATA 3HSEQ KEYWORD *SEQ* RBCF CON 0 TRANSACTION SEQUENCE NUMBER RBCG DATA 4HSTEP KEYWORD *STEP* RBCH CON 0 TRANSACTION STEP RBCI DATA 4HTRAN KEYWORD *TRAN* RBCJ CON 0 TRANSACTION TYPE RBCK DATA 3HCRM KEYWORD *CRM* RBCL CON 0 *CRM* TRANSACTION USAGE RBCM DATA 4HCDCS KEYWORD *CDCS* RBCN CON 0 *CDCS* TRANSACTION USAGE RBCO DATA 5HOLDID KEYWORD *OLDID* RBCP CON 0 PREVIOUS *CRM* IDENTIFIER RBCQ DATA 5HNEWID KEYWORD *NEWID* RBCR CON 0 CURRENT *CRM* IDENTIFIER RBCS DATA 1H BLANK WORD RBCT CON 0 ENTRY COUNT RBH SPACE 4,20 ** RBH - RECOVER BEGIN-COMMIT HISTORY FOR TERMINAL FAILURES. * * ENTRY (RDBN) = 1 FOR RECOVERY PROCESSING NOT COMPLETE. * * EXIT (RDBN) = 0, IF RECOVERY PROCESSING COMPLETE. * = 1, IF NOT COMPLETE. * (RBHA) = 0, IF ROLL BACK PROCESSING NECESSARY. * = 1, IF NOT NECESSARY. * * ERROR (X3) = FWA OF ERROR MESSAGE PARAMETERS WHEN NOT * COMPLETE. * * USES X - 2, 3, 4, 6, 7. * A - 2, 3, 6, 7. * * CALLS CSN. * * MACROS CRMSTAT, SCALL. RBH SUBR ENTRY/EXIT SA2 TNAM GET TERMINAL NAME MX3 TSUNN BX6 X3*X2 SA6 RBCD * ISSUE *TSTAT* REQUEST TO RETURN OPERATIONAL ENVIRONMENT. SCALL TSTAT,(RBCA,RBCB,RBCD,RBCE,RBCF,RBCG,RBCH,RBCI,RBCJ,RBC ,K,RBCL,RBCM,RBCN) SA2 RBCA GET STATUS OF REQUEST SX3 CTAK USER NOT DEFINED IN NETWORK FILE SX4 X2-TSUU ZR X4,RBHX IF USER UNKNOWN SX3 -CTAH TASK LOGICAL ERROR SX4 X2-TSNE NZ X4,RBHX IF ERRORS IN *TSTAT* SA2 RBCL GET *CRM* USAGE SX6 B1+ ZR X2,RBH2 IF *CRM* MAY NOT BE USED * ISSUE *CRMSTAT* REQUEST TO GET BEGIN-COMMIT HISTORY. CRMSTAT RDBD SA2 RDBF GET STATUS OF REQUEST SX3 CTAC FILE IS NOT INSTALLED SX4 X2-TERB ZR X4,RBHX IF FILE IS NOT INSTALLED SX3 CTAG TABLE AREA NOT LARGE ENOUGH SX4 X2-TERAN ZR X4,RBHX IF TABLE AREA NOT LARGE ENOUGH SX3 -CTAH TASK LOGICAL ERROR NZ X2,RBHX IF REQUEST NOT SUCCESSFUL RJ CSN COMPARE SEQUENCE NUMBERS SX6 B1+ NZ X0,RBH2 IF NO MATCH FOUND SA2 RBCH GET TRANSACTION STEP SX4 X2-CSTI ZR X4,RBH1 IF RECOVERABLE TRANSACTION/JOB INPUT SX4 X2-CSBC ZR X4,RBH1 IF BEGIN-COMMIT *CRM* ID-S LOGGED SX4 X2-CSND SX6 B0+ NZ X4,RBH2 IF *NAM* NOT DOWN RBH1 SX6 CSBC SA6 RBCH SET ID-S LOGGED STEP SA3 A3+TSBCW GET ID-S FROM *CRMSTAT* TABLE MX4 -TSBCN BX6 -X4*X3 LX3 TSBPN-1-TSBPS BX7 -X4*X3 SA6 RBCR CURRENT *CRM* ID SA7 RBCP PREVIOUS *CRM* ID * ISSUE *WSTAT* REQUEST TO RECORD BEGIN-COMMIT HISTORY. SCALL WSTAT,(RBCA,RBCB,RBCD,RBCE,RBCF,RBCG,RBCH,RBCI,RBCJ,RBC ,K,RBCL,RBCM,RBCN,RBCO,RBCP,RBCQ,RBCR) SA2 RBCA GET STATUS OF REQUEST SX3 CTAK USER NOT DEFINED IN NETWORK FILE SX4 X2-TSUU ZR X4,RBHX IF USER UNKNOWN SX3 -CTAH TASK LOGICAL ERROR SX4 X2-TSNE NZ X4,RBHX IF ERRORS IN *WSTAT* SX6 B0+ RBH2 SX7 B0+ SA6 RBHA ROLL BACK PROCESSING FLAG SA7 RDBN RECOVERY PROCESSING COMPLETE EQ RBHX RETURN RBHA CON 0 ROLL BACK PROCESSING FLAG CTASK SPACE 4,15 ** RDC - ROLL BACK DATA TO CONSISTENT STATE. * * ENTRY RDBG = FWA OF *CRMSTAT* TABLE. * * EXIT (RDBL) = 0, IF ROLL BACK PROCESSING COMPLETE. * = NON-ZERO, IF NOT COMPLETE. * * ERROR (X3) = FWA OF ERROR MESSAGE PARAMETERS WHEN NOT * COMPLETE. * * USES X - 2, 3, 4, 5, 6, 7. * A - 2, 3, 6, 7. * * MACROS SCALL, TRMREC. RDC SUBR ENTRY/EXIT SX6 RMDM*CMDM+2 SX7 RDBG+TSSQW-TSEQE SA6 RDCG SA7 RDCH RDC1 SA2 RDCG SX6 X2-1 ZR X6,RDC2 IF END OF *CRMSTAT* TABLE SA6 A2 SA2 A2+B1 SA3 X2+TSEQE GET NEXT ENTRY FROM *CRMSTAT* TABLE SX7 A3 SA7 A2 ZR X3,RDC1 IF NULL ENTRY MX5 TSSQN BX6 X5*X3 MASK OFF *CRM* SEQUENCE NUMBER LX6 TSSQN-1-TSSQS RIGHT JUSTIFY *CRM* SEQUENCE NUMBER SA6 RDCC OLD SYSTEM IDENTIFIER * ISSUE *TINVOKE* REQUEST TO GET NEW SYSTEM IDENTIFIER. SCALL TINVOKE,(RDCA,RDCB,RDCC) ISSUE *TINVOKE* REQUEST SA2 RDCA GET STATUS OF REQUEST SX3 CTAF SYSTEM IDENTIFIER UNKNOWN STATUS SX4 X2-TSSU ZR X4,RDC3 IF SYSTEM ID UNKNOWN SX3 -CTAH TASK LOGICAL ERROR SX4 X2-TSNE NO ERRORS STATUS NZ X4,RDC3 IF ERRORS IN *TINVOKE* * ISSUE *TRMREC* REQUEST TO ROLL BACK DATA TO CONSISTENT STATE. TRMREC RDCD SA2 RDCF GET STATUS OF REQUEST ZR X2,RDC1 IF REQUEST SUCCESSFUL SA1 RDBL *TRMREC* ERROR COUNTER SX7 X1+1 SA7 A1+ INCREMENT ERROR COUNTER EQ RDC1 LOOP FOR NEXT ENTRY IN *CRMSTAT* TABLE RDC2 SX3 CTAJ *TRMREC* ERROR EQ RDCX RETURN RDC3 SX6 CMDM+1 SA6 RDBL *TINVOKE* ERROR EQ RDCX RETURN * *TINVOKE* REQUEST PARAMETERS. RDCA CON 0 STATUS OF REQUEST RDCB CON 0 NEW SYSTEM IDENTIFIER RDCC CON 0 OLD SYSTEM IDENTIFIER * *TRMREC* REQUEST PARAMETERS. RDCD VFD 42/0,18/RDCE VFD 42/0,18/RDCF CON 0 RDCE CON 0 ZERO WORD RDCF CON 0 STATUS OF REQUEST RDCG CON 0 NUMBER OF *CRMSTAT* ENTRIES RDCH CON 0 FWA OF *CRMSTAT* TABLE RCS SPACE 4,15 ** RCS - ROLL BACK DATA TO CONSISTENT STATE FOR * TERMINAL FAILURES. * * ENTRY (RBCF) = SEQUENCE NUMBER. * * EXIT (RDBL) = 0, IF ROLL BACK PROCESSING COMPLETE. * = NON-ZERO, IF NOT COMPLETE. * * ERROR (X3) = FWA OF ERROR MESSAGE PARAMETERS WHEN NOT * COMPLETE. * * USES X - 2, 3, 4, 7. * A - 2, 7. * * MACROS SCALL, TRMREC. RCS SUBR ENTRY/EXIT * ISSUE *TINVOKE* REQUEST TO GET NEW SYSTEM ID. SCALL TINVOKE,(RDCA,RDCB,RBCF) SA2 RDCA GET STATUS OF REQUEST SX3 CTAF SYSTEM ID UNKNOWN SX4 X2-TSUU ZR X4,RCS3 IF SYSTEM ID UNKNOWN SX3 -CTAH TASK LOGICAL ERROR SX4 X2-TSNE NZ X4,RCS3 IF ERRORS IN *TINVOKE* * ISSUE *TRMREC* REQUEST TO ROLL BACK DATA TO CONSISTENT STATE. TRMREC RDCD SA2 RDCF GET STATUS OF REQUEST ZR X2,RCSX IF REQUEST SUCCESSFUL SX3 CTAJ *TRMREC* ERROR SX7 B1+ RCS2 SA7 RDBL *TRMREC* ERROR COUNTER EQ RCSX RETURN RCS3 SX7 CMDM+1 *TINVOKE* ERROR EQ RCS2 SET *TRMREC* COUNT CTASK SPACE 4,15 ** RID - RESTORE DATA BASE IDENTIFIERS. * * ENTRY (TMSW+2) = *OLDID* FROM COMMUNICATION BLOCK. * (TMSW+3) = *NEWID* FROM COMMUNICATION BLOCK. * * EXIT (X2) = STATUS OF *RSTDBI* REQUEST. * * USES X - 2, 3, 6, 7. * A - 2, 3, 6, 7. * * MACROS RSTDBI. RID SUBR ENTRY/EXIT SA2 TMSW+2 GET *OLDID* SA3 TMSW+3 GET *NEWID* BX6 X2 BX7 X3 SA6 RIDD PREVIOUS BEGIN IDENTIFIER SA7 RIDB CURRENT BEGIN IDENTIFIER RSTDBI RIDA RESTORE BEGIN IDENTIFIERS SA2 RIDC GET STATUS OF REQUEST EQ RIDX RETURN * *RSTDBI* REQUEST PARAMETERS. RIDA VFD 42/0,18/RIDB VFD 42/0,18/RIDC VFD 42/0,18/RIDD CON 0 RIDB CON 0 CURRENT BEGIN IDENTIFIER RIDC CON 0 STATUS OF REQUEST RIDD CON 0 PREVIOUS BEGIN IDENTIFIER END CTASK