IDENT BTASK
ENTRY BTASK
LCC OVERLAY(BTASK,0,0)
SST BEGN,CMBL
SYSCOM B1
BTASK TITLE BTASK - RECOVER *BTRAN* USERS.
*COMMENT BTASK - RECOVER *BTRAN* USERS.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
BTASK SPACE 4,10
*** BTASK - RECOVER *BTRAN* USERS.
*
* E. D. REDIG. 80/10/06.
BTASK SPACE 4,25
*** *BTASK* RECOVERS RERUNNABLE *BTRAN* TRANSACTIONS AND
* MUST BE INSTALLED ON THE TAF SYSTEM LIBRARY.
*
* *BTASK* READS THE ENTIRE *CRF* BY ISSUING *TSTAT* REQUESTS
* TO OBTAIN INFORMATION ABOUT EACH USER AND PROCESSES THIS
* INFORMATION AS FOLLOWS.
*
* 1. IF THE TRANSACTION TYPE IS NOT A *BTRAN* USER, THEN
* READ THE NEXT *CRF* ENTRY.
*
* 2. IF THE TRANSACTION STEP IS NOT RECOVERABLE, THEN
* READ THE NEXT *CRF* ENTRY.
*
* 3. MOVE THE *OLDID*, *NEWID*, USERNAME, AND *BTRAN* USER
* CASE TO THE COMMUNICATION BLOCK.
*
* 4. ISSUE A *CALLRTN* TO *CTASK* TO RERUN
* THE TRANSACTION AND READ THE NEXT *CRF* ENTRY.
BTASK SPACE 4,20
*** DAYFILE MESSAGES ISSUED.
*
* ABNORMAL COMPLETION.
*
* * BTASK - TAF AUTOMATIC RECOVERY NOT INSTALLED.*
* KEYWORD SPECIFIED IN A *TSTAT* REQUEST REQUIRES
* *TAF* AUTOMATIC RECOVERY.
*
* * BTASK - TASK LOGICAL ERROR.*
* A LOGICAL ERROR OCCURRED THAT WAS NOT EXPECTED.
*
* * BTASK - USER NOT DEFINED IN NETWORK FILE.*
* THE USER IS NOT DEFINED IN THE NETWORK FILE
* ON A *TSTAT* REQUEST.
*
* * BTASK - XXXXXXX TRANSACTION NOT RERUNNABLE NOW.*
* THIS OCCURS WHEN AN I/O ERROR IS DETECTED AND THE
* DATA CANNOT BE RECOVERED FOR THE USER XXXXXXX.
BTASK SPACE 4,10
*** COMMON DECKS.
*CALL COMCMAC
*CALL COMKTAF
*CALL COMKFLD
*CALL COMKIPR
*CALL COMKMAC
* SAVE ORIGIN COUNTER TO REMOVE COMMON DECK STORAGE
* IN *COMKCBD*, *COMKTSC*.
BEGN BSS 0 SAVE ORIGIN COUNTER
*CALL COMKCBD
LIST X
*CALL COMKTRF
LIST -X
*CALL COMKTSC
ORG BEGN RESTORE ORIGIN COUNTER
BTASK SPACE 4,15
*** COMMUNICATION BLOCK HEADER WORDS AND MESSAGES.
*
*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
*
* CASE = 2 RECOVER *BTRAN* USER.
* RF IF BIT 59 = 1, *CRM* AUTOMATIC RECOVERY IS USED.
* IF BIT 0 = 1, *TAF* AUTOMATIC RECOVERY IS USED.
* OLDID = PREVIOUS *CRM* IDENTIFIER.
* NEWID = CURRENT *CRM* IDENTIFIER.
* USERNAME = ONE-TO-SEVEN CHARACTER USERNAME LEFT-JUSTIFIED
* WITH BLANK FILL.
BSS CMBL RESERVE SPACE FOR COMMUNICATION BLOCK
BTASK SPACE 4,25
** BTASK - RECOVER *BTRAN* USERS.
*
* ENTRY BOI OF *CRF*.
*
* EXIT RERUNNABLE *BTRAN* TRANSACTIONS RECOVERED.
* TO *CTASK* TO RERUN TRANSACTIONS AND RETURN.
* (TMSW) = RECOVER *BTRAN* USER CASE.
* (TMSW+1) = RECOVERY FLAG.
* (TMSW+2) = OLDID.
* (TMSW+3) = NEWID.
* (TMSW+4) = USERNAME.
*
* ERROR TO *BTA4* IF ERROR ENCOUNTERED.
*
* USES X - 1, 2, 3, 5, 6, 7.
* A - 1, 2, 6, 7.
* B - 1, 2, 3, 5.
*
* CALLS SNM.
*
* MACROS CALLRTN, CEASE, SCALL.
BTASK SB1 1 ENTRY
SA2 TNAM
SX5 BTAC DAYFILE MESSAGE
SA1 BTAW
LX2 59-CBSYS
BX6 X1
SB3 BTACL MESSAGE LENGTH
PL X2,BTA4 IF NOT SYSTEM ORIGIN TRANSACTION
SA6 BTAN INITIALIZE *NEXT* FOR *TSTAT*
* ISSUE *TSTAT* REQUEST TO OBTAIN STATUS OF TRANSACTION.
BTA1 SCALL TSTAT,(BTAL,BTAM,BTAN,BTAO,BTAP,BTAQ,BTAR,BTAS,BTAT,BTA
,U,BTAV)
SA1 BTAL GET STATUS OF REQUEST
SX5 BTAB DAYFILE MESSAGE
SX2 X1-TSRU
SB3 BTABL MESSAGE LENGTH
ZR X2,BTA4 IF RECOVERY UNAVAILABLE
SX2 X1-TSEN
ZR X2,BTA5 IF END OF *NEXT* PROCESSING
SX5 BTAD DAYFILE MESSAGE
SX2 X1-TSUU
SB3 BTADL MESSAGE LENGTH
ZR X2,BTA4 IF USER UNKNOWN
SX5 BTAC DAYFILE MESSAGE
SX2 X1-TSNE
SB3 BTACL MESSAGE LENGTH
NZ X2,BTA4 IF ERRORS IN *TSTAT*
SA1 BTAR GET TRANSACTION TYPE
SX2 X1-TYBT
NZ X2,BTA1 IF NOT *BTRAN* USER
SA1 BTAP GET TRANSACTION STEP
SX2 X1-CSCD
ZR X2,BTA3 IF *CDCS2* DOWN
SX2 X1-CSTN
NZ X2,BTA2 IF NOT TRANSACTION NO LONGER RERUNNABLE
* THIS OCCURS WHEN AN I/O ERROR IS DETECTED AND THE
* DATA CANNOT BE RECOVERED FOR THE USER.
SB2 1RX
SA1 BTAN GET RECOVERY UNIT NAME
SB3 BTAX MESSAGE ASSEMBLY AREA
SB5 -BTAE
RJ SNM SET NAME IN MESSAGE
SB3 BTAEL MESSAGE LENGTH
SA2 BTAX
SCALL TMSG,(A2,B3) SEND MESSAGE TO DAYFILE
EQ BTA1 GET NEXT *BTRAN* USER
BTA2 PL X2,BTA3 IF STEP IS TO BE RECOVERED
EQ BTA1 GET NEXT *BTRAN* USER
* ISSUE A *CALLRTN* TO *CTASK* TO RERUN THE TRANSACTION
* AND READ THE NEXT *CRF* ENTRY.
BTA3 SX6 TYBT SET *BTRAN* USER CASE
SA1 BTAT GET *OLDID*
SA2 BTAV GET *NEWID*
SA6 TMSW STORE CASE IN COMMUNICATION BLOCK
BX6 X1
BX7 X2
SA6 TMSW+2 STORE *OLDID* IN COMMUNICATION BLOCK
SA7 TMSW+3 STORE *NEWID* IN COMMUNICATION BLOCK
SA1 BTAN GET USERNAME
BX7 X1
SA7 A7+B1 STORE USERNAME IN COMMUNICATION BLOCK
CALLRTN BTAA CALL *CTASK* TO RERUN TRANSACTION
EQ BTA1 GET NEXT *BTRAN* USER
BTA4 SCALL TMSG,(X5,B3) SEND MESSAGE TO DAYFILE
CEASE 2 ABNORMAL CEASE WITH DUMP
BTA5 CEASE EXIT TASK WITH CEASE
* *CALLRTN* TASK LIST.
BTAA DATA 5LCTASK CALL TO *CTASK*
CON 0
* DAYFILE MESSAGES.
BTAB DATA C* BTASK - TAF AUTOMATIC RECOVERY NOT INSTALLED.*
BTABL CON **10-BTAB*10
BTAC DATA C* BTASK - TASK LOGICAL ERROR.*
BTACL CON **10-BTAC*10
BTAD DATA C* BTASK - USER NOT DEFINED IN NETWORK FILE.*
BTADL CON **10-BTAD*10
BTAE DATA C* BTASK - XXXXXXX TRANSACTION NOT RERUNNABLE NOW.*
BTAEL CON **10-BTAE*10
* *TSTAT* REQUEST PARAMETERS.
BTAL CON 0 STATUS OF *TSTAT* REQUEST
BTAM DATA 4HNEXT
BTAN CON 0 NEXT USER FROM *TRF*
BTAO DATA 4HSTEP
BTAP CON 0 TRANSACTION STEP
BTAQ DATA 4HTRAN
BTAR CON 0 TRANSACTION TYPE
BTAS DATA 5HOLDID
BTAT CON 0 PREVIOUS *CRM* IDENTIFIER
BTAU DATA 5HNEWID
BTAV CON 0 CURRENT *CRM* IDENTIFIER
BTAW DATA 1H BLANK WORD
BTAX BSSZ 7 DAYFILE MESSAGE ASSEMBLY AREA
BTASK SPACE 4,10
** COMMON DECKS.
*CALL COMCSNM
END BTASK