XTASK 
          IDENT  XTASK
          ENTRY  XTASK
          LCC    OVERLAY(XTASK,0,0) 
          SST    BEGN,CMBL
          SYSCOM B1 
*COMMENT  EXECUTE NAMED TASK. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 XTASK    TITLE  EXECUTE NAMED TASK.
  
 XTASK    SPACE  4,10 
***       XTASK - EXECUTE NAMED TASK. 
*         E. D. REDIG.       79/10/03.
 XTASK    SPACE  4,25 
***       XTASK IS A SPECIAL TASK SCHEDULER USED TO EXECUTE 
*         ALMOST ANY NAMED TASK.  IT WILL NOT EXECUTE TASKS 
*         BY THE NAMES - *BTASK*, *CTASK*, *ITASK*, *KDIS*, 
*         *MSABT*, *OFFTASK*, *RCTASK*, *RTASK*, *SYSMSG*, AND
*         *XTASK*.  THESE ARE THE NAMES OF SYSTEM TASKS.  *XTASK* 
*         MAY BE USED TO SCHEDULE *LOGT* AS A MEANS OF LOGGING. 
*         A TERMINAL OUT OF TRANSACTION MODE.  *XTASK* CAN BE 
*         CALLED VIA *ITASK* BY THE FOLLOWING INPUT.
* 
*         EX.TASK 
* 
*         WHERE:  
* 
*                EX.         SPECIAL THREE-CHARACTER CODE WHICH 
*                            CAUSES *ITASK* TO SCHEDULE *XTASK*.
* 
*                TASK        ONE- TO SEVEN-CHARACTER ALPHANUMERIC 
*                            TASK NAME, LEFT-JUSTIFIED WITH A 
*                            NON-ALPHANUMERIC CHARACTER TERMINATOR. 
* 
*         NOTE: SEE *ITASK* FOR CAUTION ON USE OF *XTASK*.
  
  
*         COMMON DECKS. 
  
  
*CALL     COMKTAF 
*CALL     COMKFLD 
*CALL     COMKIPR 
 BEGN     BSS    0           SAVE ORIGIN COUNTER
*CALL     COMKCBD 
          ORG    BEGN        RESTORE ORIGIN COUNTER 
*CALL     COMKMAC 
*CALL     COMSPRD 
 XTASK    SPACE  4,15 
***       COMMUNICATION BLOCK HEADER WORDS AND MESSAGE. 
* 
*T  TRSQ  12/    DB,24/    UA,24/    SEQ
*T, TNAM  42/    TN,18/ 
*T, TMSW  18/    EX,42/    TASK 
* 
*         DB     DATA BASE FOR TERMINAL.
*         UA     USER ARGUMENT FIELD FOR TERMINAL.
*         SEQ    TRANSACTION SEQUENCE NUMBER. 
*         TN     TERMINAL NAME. 
*         EX     EXECUTE CHARACTER CODE *EX.*.
*         TASK   DESIRED TASK TO BE SCHEDULED.
  
  
          BSS    CMBL        RESERVE SPACE FOR COMMUNICATION BLOCK
 XTASK    SPACE  4,15 
**        XTASK - EXECUTE NAMED TASK. 
* 
*         ENTRY  COMMUNICATION BLOCK LOADED.
* 
*         EXIT   DESIRED TASK SCHEDULED.
* 
*         USES   A - 1, 4, 6. 
*                B - 1, 2, 3. 
*                X - 1, 2, 3, 4, 5, 6.
* 
*         CALLS  CBT. 
* 
*         MACROS CALLTSK, CEASE, FMSG, SEND.
  
  
 XTASK    SB1    1
          SA1    TMSW        READ TERMINAL INPUT
          SA4    A1+B1       GET 8TH CHARACTER
          MX2    -42
          SX5    1R+
          LX4    5-59        SHIFT 8TH CHARACTER FOR MASK 
          MX3    -6          ONE CHARACTER MASK 
          BX1    -X2*X1      MASK OFF TRANSACTION CODE
          BX4    -X3*X4      MASK OFF 8TH CHARACTER 
          LX1    5-41        SHIFT MESSAGE INTO POSITION
          SB2    6
          LX4    23-59-5+59  SHIFT 8TH CHARACTER INTO POSITION
          BX6    X6-X6
          SB3    60 
          BX1    X1+X4       ADD 8TH CHARACTER INTO MESSAGE 
 XTA1     BX4    -X3*X1      GET A CHARACTER
          ZR     X4,XTA2     IF END OF TASK NAME
          IX2    X4-X5
          PL     X2,XTA3     IF NOT ALPHANUMERIC
          LX6    6
          BX6    X6+X4       TRANSFER A CHARACTER 
          LX1    6
          SB3    B3-B2
          EQ     XTA1        LOOP FOR NEXT CHARACTER
  
 XTA2     SB2    12 
          EQ     B2,B3,XTA5  IF TOO MANY CHARACTERS IN TASK NAME
 XTA3     ZR     X6,XTA5     IF ZERO LENGTH TASK NAME 
          SB2    XTAE        START OF SYSTEM TASK TABLE 
          LX6    X6,B3       LEFT JUSTIFY MESSAGE 
          SB3    XTAE+XTAF   END OF SYSTEM TASK TABLE 
 XTA4     SA1    B2+         GET NEXT TABLE ELEMENT 
          BX2    X1-X6
          SB2    B2+B1       INCREMENT TABLE INDEX
          ZR     X2,XTA5     IF SYSTEM TASK 
          LT     B2,B3,XTA4  IF NOT END OF TABLE
          SA6    XTAD        TASK NAME
          CALLTSK  XTAD,C    EXECUTE TASK WITH CEASE
  
 XTA5     SEND   XTAA        SEND ERROR MESSAGE 
          SA1    TRSQ        FIRST WORD OF COMMUNICATIONS BLOCK 
          RJ     CBT         CHECK FOR BINARY TERMINAL
          ZR     X6,XTA6     IF NOT BINARY
          SA6    XTAC        SET BINARY REQUEST 
          SEND   XTAB        SEND BINARY INPUT REQUEST
 XTA6     CEASE              EXIT TASK WITH CEASE 
  
 XTAA     FMSG   (INCORRECT TASK NAME.) 
 XTAB     VFD    12/0,18/XTAC,12/0,18/1  SEND CONTROL WORD
 XTAC     CON    0           BINARY REQUEST WORD
 XTAD     BSSZ   2           TASK LIST FOR *CALLTSK*
 XTAE     BSS    0           SYSTEM TASK TABLE
          VFD    42/0LBTASK,18/0
          VFD    42/0LCTASK,18/0
          VFD    42/0LITASK,18/0
          VFD    42/0LKDIS,18/0 
          VFD    42/0LMSABT,18/0
          VFD    42/0LOFFTASK,18/0
          VFD    42/0LRCTASK,18/0 
          VFD    42/0LRTASK,18/0
          VFD    42/0LSYSMSG,18/0 
          VFD    42/0LXTASK,18/0
 XTAF     EQU    *-XTAE      LENGTH OF SYSTEM TASK TABLE
  
  
*         COMMON DECK.
  
  
*CALL     COMKCBT 
  
  
          END    XTASK
