BTASK 
          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
