MSABT 
          IDENT  MSABT
          ENTRY  MSABT
          LCC    OVERLAY(MSABT,0,0) 
  COMMENT 72/09/24. 72/09/24. MESSAGE ABORT TASK. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 MSABT    TITLE  MSABT - MESSAGE ABORT TASK.
  
*****     MSABT - MESSAGE ABORT TASK. 
*         J. R. HOGUE.  1972. 
 MSABT    SPACE  4
***       MSABT - MESSAGE ABORT TASK. 
* 
*         *MSABT* IS A SYSTEM TASK WHICH SENDS ERROR MESSAGES TO
*         THE ORIGINATING TERMINAL WHEN A TRANSACTION DOES NOT END
*         NORMALLY DUE TO A SYSTEM DETECTED ERROR.  ERROR CODES ARE 
*         PLACED IN THE COMMUNICATIONS BLOCK BY THE CALLING PROGRAM,
*         THE TRANSACTION FACILITY, OR THE INITIAL TASK.  *MSABT* IS
*         SCHEDULED AS ANY OTHER TASK, CHECKS THE ERROR CODE, AND SENDS 
*         THE APPROPRIATE MESSAGE VIA THE *SEND* MACRO.  *MSABT* THEN 
*         ENDS WITH AN ABNORMAL CEASE.
* 
*         *MSABT* IS ALSO CALLED BY THE INITIAL TASK TO ISSUE ERROR 
*         MESSAGES. 
* 
*         THE DESIGN, IMPLEMENTATION AND TESTING OF CHANGES TO
*         *MSABT* MUST BE DONE WITH SPECIAL CARE SINCE IT IS
*         THIS TASK THAT INSURES THAT AT LEAST ONE RESPONSE 
*         IS RETURNED FOR EACH TRANSACTION. 
* 
*         *MSABT* WILL BE SCHEDULED BY THE TRANSACTION FACILITY 
*         TO SEND AN ERROR MESSAGE TO THE ORIGINATING 
*         TERMINAL IF AT LEAST ONE *SEND* HAS NOT BEEN MADE TO THE
*         ORIGINATING TERMINAL DURING THE LIFE OF THE TRANSACTION.
*         IT WILL ALSO INSURE THAT AN ERROR MESSAGE IS SENT TO
*         THE ORIGINATING TERMINAL IF THE TRANSACTION ABORTS OR 
*         IF *ITASK* CANNOT PROCESS THE TRANSACTION.
          TITLE  COMMUNICATION BLOCK DEFINITION.
*         COMMON DECKS. 
  
*CALL     COMCMAC 
*CALL     COMKMAC 
*CALL     COMSPRD 
          TRXCOM B1          DEFINE COMMUNICATION BLOCK SYMBOLS 
  
 MACROS   SPACE  4
**        TMSG   DEFINE A TERMINAL ERROR MESSAGE. 
* 
*         TMSG   A
* 
*         A      MESSAGE TEXT 
  
  
          PURGMAC TMSG
 TMSG     MACRO  A
          LOCAL  ADR,LEN
 .1       NOREF 
 ADR      SET    *
          LOC    .1 
 .1       SET    .1+1 
          DIS    ,*_A*
          LOC    *O 
 LEN      SET    *-ADR
 RMSG     RMT 
          VFD    12/0,12/LEN*10,18/LEN,18/ADR 
 RMSG     RMT 
          ENDM
          SPACE  4,10 
***       COMMUNICATION BLOCK HEADER WORDS. 
* 
*T  SEQC  12/      DB,24/      UA,24/     SEQ 
*T, TERC  42/        TN,18/ 
* 
*         DB     DATA BASE FOR TERMINAL.
*         UA     USER ARGUMENT FOR TERMINAL.
*         SEQ    TRANSACTION SEQUENCE NUMBER. 
*         TN     TERMINAL NAME. 
  
  
          BSS    COMCL       RESERVE SPACE FOR COMMUNICATION BLOCK
 MSABT    TITLE  MAP ERROR CODE TO ERROR MESSAGE. 
**        MSABT - SEND MESSAGE TO A TERMINAL TO INFORM THE USER THAT
*         THE TRANSACTION ENDED ABNORMALLY DUE TO SYSTEM ERROR. 
*         IF THE ERROR CODE IS 32 (CDCS FATAL ERROR) SEND THE 
*         MESSAGE FROM THE LAST 14 WORDS OF COMMUNICATION BLOCK AREA. 
* 
*         ENTRY  (TERC) = TERMINAL NAME IF NONZERO. 
*                (TIMC) = ERROR CODE. 
*                (TIMC-1) = ZERO IF ERROR NOT FROM *ITASK*. 
* 
*         EXIT   MESSAGE SENT.
* 
*         USES   X - 0, 1, 4, 6, 7. 
*                A - 1, 4, 6, 7.
*                B - 2, 3.
* 
*         CALLS  CBT. 
* 
*         MACROS CEASE, SEND. 
  
  
 MSABT    SA1    TERC        CHECK FOR SYSTEM ORIGN 
          MX0    42 
          BX1    X1*X0
          NZ     X1,MSA1     IF TRANSACTION ASSOCIATED WITH A TERMINAL
          CEASE              NO TERMINAL - DONT SEND MESSAGE
  
*         DETERMINE WHICH MESSAGE TO SEND.
  
 MSA1     SA1    TIMC-1      PICK UP ERROR CODE 
          ZR     X1,MSA2     IF ERROR FROM TRANSACTION
          SB2    X1+         INITIAL TASK ERROR CODE
          NG     B2,MSA5     IF INCORRECT CODE
          SB3    B2-TITML-1 
          PL     B3,MSA5     IF INCORRECT CODE
          SA4    B2+TITM-1
          EQ     MSA3        SEND MESSAGE 
  
 MSA2     SA1    TIMC        PICK UP TRANSACTION ERROR CODE 
          SB2    X1 
          BX7    X1 
          NG     B2,MSA5     IF INCORRECT CODE
          SB3    B2-TTEML 
          PL     B3,MSA5     IF INCORRECT CODE
          SA4    B2+TTEM
          SA7    MSAE        SAVE ERROR CODE
  
*         SEND MESSAGE TO THE ORIGINATING TERMINAL. 
  
 MSA3     SX6    X4          FWA OF MESSAGE 
          MX5    48 
          SA3    MSAA        SEND CONTROL WORD
          MX0    6
          AX4    18          MESSAGE LENGTH IN WORDS
          SA2    MSAB        APPLICATION BLOCK HEADER 
          BX3    X0*X3
          SX1    X4 
          LX6    30 
          BX7    X6+X1
          AX4    18          MESSAGE LENGTH IN CHARACTERS 
          BX7    X3+X7
          SA7    A3 
          BX2    X5*X2
          BX6    X4+X2       APPLICATION BLOCK HEADER CHARACTER LENGTH
          SA6    A2 
          SEND   MSAA        SEND MESSAGE 
  
*         CHECK FOR BINARY TERMINAL.
  
          SA1    SEQC        TRANSACTION USER ARGUMENTS 
          RJ     CBT         CHECK FOR BINARY TERMINAL
          ZR     X6,MSA4     IF NOT BINARY TERMINAL 
          SA6    MSAD 
          SEND   MSAC        SEND MESSAGE 
 MSA4     SA1    TIMC-1 
          ZR     X1,MSA5     IF FROM TRANSACTION FACILITY 
          CEASE              NORMAL CEASE IF FROM INITIAL TASK
  
 MSA5     SB3    32 
          SA1    MSAE        CHECK CDCS ERROR CODE
          SB2    X1 
          NE     B2,B3,MSA6  IF NOT CDCS FATAL ERROR
          BX7    X7-X7
          SA4    MSAF 
          SA7    MSAE 
          EQ     MSA3        SEND CDCS FATAL ERROR MESSAGE
  
 MSA6     CEASE  1           CEASE WITH ABORT 
  
 MSAA     VFD    3/0,1/1,1/0,1/1,54/0  SEND CONTROL WORD
          CON    0           DEFAULT TERMINAL 
 MSAB     VFD    6/2,30/0,4/4,8/0,12/0  APPLICATION BLOCK HEADER
 MSAC     VFD    12/0,18/MSAD,12/0,18/1  BINARY SEND CONTROL WORD 
 MSAD     CON    0           BINARY REQUEST WORD
 MSAE     BSSZ   1           TEMPORARY ERROR CODE STORAGE 
 MSAF     VFD    12/0,12/120,18/12,18/TIMC-14 
  
**        TRANSACTION ERROR MESSAGE TABLE.
  
 .1       SET    0
  
          TMSG   ("SYSPR"ARITHMETIC OR OTHER SOFTWARE ERROR IN TASK)
          TMSG   ("SYSPR"TASK CEASE WITH REQUESTED ABORT.)
          TMSG   ("SYSPR"SYSTEM REQUEST PARAMETER ADDRESS OUTSIDE FL) 
          TMSG   ("SYSPR"SYSTEM REQUEST WITH INCORRECT FUNCTION CODE) 
          TMSG   ("SYSPR"SYSTEM REQUEST CALL ERROR) 
          TMSG   ("SYSPR"MORE THAN FIVE TASKS IN TASK CHAIN)
          TMSG   ("SYSPR"INCORRECT TASK NAME REQUESTED FOR SCHEDULING)
          TMSG   ("SYSPR"REFERENCE MADE TO INCORRECT TERMINAL NAME) 
          TMSG   ("SYSPR"INCORRECT WORD COUNT ON TERMINAL OUTPUT) 
          TMSG   ("SYSPR"INCORRECT JOURNAL FILE REQUEST)
          TMSG   ("SYSPR"TASK REQUESTED CEASE BEFORE DM FINISHED) 
          TMSG   ("SYSPR"TASK NOT VALIDATED FOR REQUEST)
          TMSG   ("SYSPR"TOO MANY BRANCHES IN TASK CHAIN REQUESTED) 
          TMSG   ("SYSPR"INCORRECT PARAMETER IN SYSTEM REQUEST CALL)
          TMSG   ("SYSPR"TOO MANY SYSTEM REQUEST CALLS) 
          TMSG   ("SYSPR"TASK TIME LIMIT) 
          TMSG   ("SYSPR"SYSTEM ABORT OF TASK)
          TMSG   ("SYSPR"ERROR IN SUBMITTED FILE) 
          TMSG   ("SYSPR"CALLRTN NESTED CALL LIMIT EXCEEDED.) 
          TMSG   ("SYSPR"MSABT CALL ERROR.) 
          TMSG   ("SYSPR"INCORRECT TERMINAL INPUT REQUEST.) 
          TMSG   ("SYSPR"WAITINP FROM MULTI QUEUED TASK.) 
          TMSG   ("SYSPR"APPLICATON ERROR - NO TERMINAL OUTPUT.)
          TMSG   ("SYSPR"INVALID DATA MANAGER PARAMETER.) 
          TMSG   ("SYSPR"MSABT CALL ERROR.) 
          TMSG   ("SYSPR"TOTAL DATA MANAGER NOT LOADED.)
          TMSG   ("SYSPR"INCORRECT TOTAL INTERLOCK REQUEST.)
          TMSG   ("SYSPR" SEND TO TERMINAL NOT LOGGED IN.)
          TMSG   ("SYSPR"TASK REQUEST ARGUMENT ERROR.)
          TMSG   ("SYSPR"MSABT CALL ERROR.) 
          TMSG   ("SYSPR"CRM DATA MANAGER NOT LOADED.)
          TMSG   ("SYSPR"CDCS NOT AVAILABLE.) 
          TMSG   ("SYSPR"CDCS REQUESTED ABORT.) 
          TMSG   ("SYSPR"REQUEST FOR EXTENDED MEMORY NOT ALLOWED.)
          TMSG   ("SYSPR"INCORRECT COMMON MEMORY MANAGER REQUEST.)
          TMSG   ("SYSPR"FL REQUEST BEYOND MFL-CM.) 
          TMSG   ("SYSPR"INCORRECT FL REDUCTION.) 
          TMSG   ("SYSPR"MEMORY REQUEST WITH D.M. REQUEST OUTSTANDING.) 
          TMSG   ("SYSPR"CDCS INVOKE FAILURE.)
          TMSG   ("SYSPR"DATA MANAGER USAGE NOT SELECTED.)
          TMSG   ("SYSPR"TAF TRANSACTION NAME UNKNOWN.) 
  
 TTEM     BSS    0           TAF ERROR MESSAGE INDEX TABLE
 RMSG     HERE
 TTEML    EQU    *-TTEM      LENGTH OF TABLE
  
**        MESSAGE TABLE FOR INITIAL TASK ERROR MESSAGES.
  
 .1       SET    1
  
          TMSG   ("SYSPR"INCORRECT SUB-TRANSACTION CODE - INITIAL TASK) 
  
 TITM     BSS    0           MESSAGE INDEX TABLE
 RMSG     HERE
 TITML    EQU    *-TITM      LENGTH OF A MESSAGE TABLE
          SPACE  4
*         COMMON DECK.
  
  
*CALL     COMKCBT 
          SPACE  4
          END    MSABT
