IDENT ITASK ENTRY ITASK LCC OVERLAY(ITASK,0,0) SST BEGN,CMBL SYSCOM B1 *COMMENT INITIAL TASK. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. ITASK TITLE INITIAL TASK. *** INITIAL TASK * M. M. CHEN 1977. * E. D. REDIG. 80/06/20. *TAF* AUTOMATIC RECOVERY. SPACE 4,15 *** INITIALIZE TASK IS THE INTERFACE BETWEEN THE TRANSACTION * EXECUTIVE AND USER-S APPLICATION TASK. *ITASK* PROCESSES * ALL TRANSACTION INPUT TO DETERMINE WHICH TRANSACTION UNIT * TO CALL TO FURTHER PROCESS THE INPUT, AND STATUS MESSAGES * CONCERNING THE STATE OF THE TRANSACTION SYSTEM. * * BECAUSE TRANSACTION INPUT WILL VARY FROM APPLICATION TO * APPLICATION, INITIAL TASK WILL HAVE TO VARY TO ADAPT TO * DIFFERENT INPUT FORMATS AND OPERATIONAL CONDITIONS. THIS * INITIAL TASK IS PROVIDED TO SERVE AS AN EXAMPLE. EACH * INSTALLATION WILL NEED ITS OWN INITIAL TASK TO SERVE ITS OWN * SPECIFIC NEEDS. MACROS TITLE MACROS *CALL COMKTAF *CALL COMKFLD *CALL COMKIPR *CALL COMKMAC BEGN BSS 0 SAVE ORIGIN COUNTER *CALL COMKCBD ORG BEGN RESTORE ORIGIN COUNTER NOREF .1,.2 .1 SET 0 .2 SET 0 TIMCNT SPACE 4 ** TIMCNT - DEFINE A TIME ORIGINATING TASK. * PURGMAC TIMCNT TIMCNT MACRO HH,MM,SS,ADDR VFD 18/ADDR,24/0,6/HH,6/MM,6/SS ENDM TRAN SPACE 4,20 ** TRAN - DEFINE A TRANSACTION CODE. * * THE *TRAN* MACRO SETS UP ENTRIES FOR THE TABLE OF * TRANSACTION CODES *TRANT*. NOTE - A PARTICULAR * TRAN ENTRY SETS UP THE TRANT ENTRY FOR THE PRECEDING * DECLARED TRANSACTION CODE. *ITASK* ASSUMES THAT * THE *TRANT* TABLE IS SET UP IN DISPLAY ORDER. IT * USES THE DISPLAY CODE VALUE OF THE TRANSACTION CODE * ENTERED BY THE USER TO LOCATE THE PROPER ENTRY IN * *TRANT*. * * TRAN CODE * * ENTRY CODE = ONE-CHARACTER TRANSACTION CODE. * TRANS = SYMBOL SPECIFYING THE RELATIVE ADDRESS * OF SUBTRANSACTION CODES. * * EXIT ENTRY MADE INTO THE TABLE OF TRANSACTION * CODES *TRANT*. PURGMAC TRAN TRAN MACRO A VFD 12/2000B+.1,48/TRANS+.2 .2 SET .2+.1 .1 SET 0 ENDM STRAN SPACE 4,15 ** STRAN - DEFINE A SUBTRANSACTION CODE. * * THE *STRAN* MACRO MAKES ENTRIES IN THE TABLE OF * SUBTRANSACTION CODES *TRANS*. *TRANS* CONTAINS THE * SUBTRANSACTION CODE AND THE CORRESPONDING NAME OF * THE TRANSACTION UNIT. * * STRAN CODE,TNAME * * ENTRY CODE = TWO-CHARACTER SUBTRANSACTION CODE. * TNAME = NAME OF THE TRANSACTION UNIT TO BE CALLED. * * EXIT ENTRY MADE INTO THE TABLE OF SUBTRANSACTION * CODES *TRANS*. PURGMAC STRAN STRAN MACRO CODE,TNAME STRAN RMT VFD 12/0H_CODE,6/0,42/0L_TNAME STRAN RMT .1 SET .1+1 ADVANCE SUB TRANSACTION CODE COUNT ENDM BSS CMBL RESERVE SPACE FOR COMMUNICATION BLOCK TABLES TITLE TRANSACTION TABLES. TRANT SPACE 4,20 ** TRANT - TRANSACTION CODE TABLE. * * EACH GROUP OF ENTRIES RELATING TO THE SAME TRANSACTION * CODE IS PLACED IMMEDIATELY FOLLOWING THE *TRANT* ENTRY * FOR THAT CODE, ALTHOUGH THE SUBTRANSACTION TABLE IS * ASSEMBLED ELSEWHERE. THE FOLLOWING IS AN EXAMPLE OF * THE USE OF THE *TRAN* AND *STRAN* MACROS. * * TRANT BSS 0 * * TRAN A * * STRAN 02,TNAME1 * * STRAN 03,TNAME2 * * WHERE, *A* IS THE TRANSACTION CODE, *02* AND *03* ARE * THE SUBTRANSACTION CODES, AND *TNAME1* AND *TNAME2* * ARE THE RESPECTIVE TRANSACTION UNITS TO BE REQUESTED. * * THE DECLARATION OF A TRANSACTION UNIT AND THE ASSOCIATION * OF ATTRIBUTES WITH IT IS ACCOMPLISHED THROUGH *LIBTASK* * DIRECTIVES. TRANT BSS 0 LOC 1 TRAN A TRAN B TRAN C TRAN D TRAN E STRAN (X.),XTRAN EXECUTE NAMED TASK * CAUTION: THE FOLLOWING IS AN EXAMPLE OF A *LIBTASK* * DIRECTIVE NEEDED FOR THE TRANSACTION UNIT *XTRAN*. * * /XTRAN,T1=XTASK TRAN F TRAN G TRAN H TRAN I TRAN J TRAN K TRAN L TRAN M TRAN N TRAN O TRAN P TRAN Q TRAN R TRAN S TRAN T TRAN U TRAN V TRAN W TRAN X TRAN Y TRAN Z TRAN 0 TRAN 1 TRAN 2 TRAN 3 TRAN 4 TRAN 5 TRAN 6 TRAN 7 TRAN 8 TRAN 9 TRAN + TRAN - TRAN * TRAN / TRAN ) TRAN ( TRAN $ TRAN = TRAN 1R TRAN , TRAN . TRAN # TRAN [ TRAN ] TRAN : TRAN " TRAN _ TRAN ! TRAN & TRAN ' TRAN ? TRAN < TRAN : TRAN @ TRAN \ TRAN ^ TRAN ; TRAN LOC *O STAN SPACE 4,10 ** SUBTRANSACTION CODE TABLES. * TRANS BSS 0 STRAN HERE TTOT SPACE 4,10 ** TABLE OF TIME ORIGINATING TASKS. * TIMCNT MACROS WOULD BE PUT IN THIS TABLE. TTOT BSS 0 TTOTL EQU *-TTOT ITASK TITLE ITASK ITASK SPACE 4,80 ** ITASK - PROCESS TRANSACTION INPUT. * * *ITASK* EXTRACTS THE DATA BASE NAME FROM THE COMMUNICATION * BLOCK AND SEARCHES A DATA BASE NAME TABLE TO DETERMINE WHAT * INPUT PROCESSING IS NECESSARY. * * *ITASK* MAY BE CALLED WITH SYSTEM ORIGIN TRANSACTIONS, * WITH THE TYPE OF CALL IN WORD *TMSW* OF THE COMMUNICATION * BLOCK. * * ENTRY (TRSQ) = 12/ DB,24/ UA,24/ SEQ * (TNAM) = 42/ TN,1/S,1/P,1/B,2/ ,1/M,12/WC * (TMSW) = MESSAGE IF S .EQ. 0. * = RC IF S .EQ. 1. * * DB DATA BASE FOR TERMINAL * UA USER ARGUMENT FIELD FOR TERMINAL * SEQ TRANSACTION SEQUENCE NUMBER * TN TERMINAL NAME * * S =1 IF SYSTEM ORIGIN TRANSACTION. * P =1 IF PARITY ERROR OCCURRED ON TERMINAL INPUT. * B =1 IF TRANSACTION INPUT CAME FROM BATCH. * M =1 IF MULTIPLE COMMUNICATION BLOCKS USED. * WC MESSAGE LENGTH IN WORDS. * * RC = 1 IMPLIES SYSTEM TIMED ACTIVATION. * = 2 IMPLIES IDLE DOWN (K.IDLE). * = 3 IMPLIES RECOVERY HAS TAKEN PLACE. * = 4 IMPLIES TERMINAL LOGIN. * = 5 IMPLIES SYSTEM MESSAGE. * SYSTEM MESSAGE IS HANDLED BY *SYSMSG* TASK * NOT BY ITASK. * = 6 IMPLIES TERMINAL BREAK FROM NAM. * = 7 IMPLIES TERMINAL CONNECTION BROKEN FROM NAM * = 8 IMPLIES NETWORK SHUT DOWN -NORMAL. * = 9 IMPLIES NAM ABORTED. * = 10 IMPLIES NETWORK SHUT DOWN - FORCED. * = 11 IMPLIES TERMINAL INACTIVE. * = 14 IMPLIES LOGICAL ERROR. * = 15 IMPLIES BLOCK NOT DELIVERED. * = 16 IMPLIES TERMINAL CHARACTERISTICS. * = 17 IMPLIES INPUT TOO LARGE. * = 18 IMPLIES TERMINAL STATUS REQUEST. * * SEE COMMON DECK *COMKSTC* FOR SYBOLS AND THEIR VALUES. * * FOR CODES 1, 2, 3, 8, 9, AND 10 * THE COMMUNICATION BLOCK HEADER CONTAINS ZERO FOR TERMINAL * NAME AND USER AREA, THE DATA BASE IS *SY* WITH SECURITY * CODES OF 7. * * FOR CODE 4, THE COMMUNICATION BLOCK HEADER IS SET UP WITH * THE FOLLOWING INFORMATION FOR THE TERMINAL LOGGED IN. * * (TMSW+1) = 23/ ,12/BSZ,1/HW/8/DT,8/PW,8/PL * * BSZ = BLOCK SIZE. (IN CHARACTERS, BITS 25-37) * HW = HARD WIRED LINE. (BIT 24) * DT = DEVICE TYPE/TERMINAL CLASS. (BIT 16-23) * PW = PAGE WIDTH OF TERMINAL. (BIT 8-15) * PL = PAGE LENGTH OF TERMINAL. (BIT 0-7) * * FOR CODES 6, 7, AND 11 - 17 * THE COMMUNICATION BLOCK IS SET UP WITH NORMAL SEQUENCE * NUMBER, TERMINAL NAME OF MALFUNCTION, THE DATA BASE FOR * THE TERMINAL, READ AND UPDATE SECURITY OF 7 AND THE NETWORK * SUPERVISORY MESSAGE IS FORMED IN (TMSW+1). * * THE FORMATS OF NETWORK SUPERVISORY MESSAGES ARE GIVEN IN * COMMON DECK *COMKNWF*. THE VALUES FOR THE FIELDS ARE GIVEN * IN COMMON DECK *COMSNCD*. * * USES A - 1, 2, 5, 6, 7. * B - 3. * X - 0, 1, 2, 5, 6, 7. * * CALLS BIN, CBT, CCS, CTL, CYB. * * MACROS CALLTRN, CALLTSK, CEASE, FMSG, JOURNL, SCALL, SEND. ITASK SB1 1 ENTRY SA2 TNAM SA5 A2+B1 SYSTEM TRANSACTION CODE LX2 59-CBSYS LEFT JUSTIFY SYSTEM ORIGIN SA1 A2-B1 SX0 X5 NG X2,ITA1 IF SYSTEM ORIGIN TRANSACTION BX3 X2 LX2 59-CBIDS-59+CBSYS NG X2,ITA15 IF OPERATOR IDLE DOWN LX3 59-CBCDS-59+CBSYS NG X3,ITA16 IF CDCS ABORTED * IF INPUT FOUND IN TRANSACTION, SUBTRANSACTION TABLES * SCHEDULE TRANSACTION UNIT SPECIFIED BY TABLES. OTHERWISE * USE INPUT AS TRANSACTION UNIT TO SCHEDULE. RJ CYB PROCESS INPUT NZ X1,ITA8 IF TRANSACTION UNIT FOUND RJ CCS CHECK CHARACTER STRING ZR X1,ITA7 IF NO TRANSACTION UNIT TO SCHEDULE EQ ITA8 SCHEDULE TRANSACTION UNIT * DETERMINE PROCESSOR FOR SYSTEM ORIGIN TRANSACTION. ITA1 LX0 -1 SX6 X0-TITAL SB3 X0 PL X6,ITA14 IF UNKNOWN REASON CODE JP B3+TITA JUMP THRU TABLE TITA PL X0,ITA14 IF UNKNOWN REASON CODE EQ ITA13 IF SYSTEM TIMED ACTIVATION PL X0,ITA13 IF IDLE EQ ITA13 IF RECOVERY HAS TAKEN PLACE PL X0,ITA2 IF TERMINAL LOG IN EQ ITA13 IF SYSTEM MESSAGE PL X0,ITA3 IF BREAK EQ ITA12 IF CONNECTION BROKEN PL X0,ITA12 IF NETWORK SHUT DOWN - NORMAL EQ ITA12 IF NETWORK ABORT PL X0,ITA12 IF NETWORK SHUT DOWN - FORCED EQ ITA12 IF TERMINAL INACTIVE PL X0,ITA14 IF UNKNOWN REASON CODE EQ ITA14 IF UNKNOWN REASON CODE PL X0,ITA4 IF TASK LOGICAL ERROR EQ ITA5 IF BLOCK NOT DELIVERED PL X0,ITA12 IF TERMINAL CHARACTERISTICS EQ ITA6 IF INPUT TOO LARGE PL X0,ITA12 IF TERMINAL STATUS REQUEST EQ ITA14 IF UNKNOWN REASON CODE TITAL EQU *-TITA LENGTH OF *ITASK* JUMP TABLE * PROCESS TERMINAL LOG IN. ITA2 SEND ITAF SEND *READY.* SA1 TRSQ FIRST WORD OF COMMUNICATION BLOCK RJ CBT CHECK FOR BINARY TERMINAL ZR X6,ITA13 IF NOT BINARY TERMINAL SA6 ITAE SX7 ITAD BINARY INPUT REQUEST MESSAGE EQ ITA10 SEND MESSAGE AND CEASE * PROCESS TERMINAL BREAK. * APPLICATION MAY WISH TO ACTIVE RECOVERY TASK. ITA3 SX7 1 *BREAK RECEIVED.* MESSAGE CODE EQ ITA18 CALLTSK TO SEND MESSAGE * PROCESS TASK LOGICAL ERROR. * APPLICATION MAY WISH TO DUMP THE TASK. ITA4 SX7 ITAH *TASK LOGICAL ERROR.* MESSAGE EQ ITA11 SEND AND JOURNAL MESSAGE THEN CEASE * PROCESS BLOCK NOT DELIVERED. * APPLICATION MAY WISH TO ACTIVE RECOVERY TASK. ITA5 SX7 ITAI *BLOCK LOST.* MESSAGE EQ ITA11 SEND AND JOURNAL MESSAGE THEN CEASE * PROCESS INPUT TOO LARGE. ITA6 SX7 0 *INPUT TOO LARGE.* MESSAGE CODE EQ ITA18 CALLTSK TO SEND MESSAGE * PROCESS NO TRANSACTION UNIT TO SCHEDULE. ITA7 SX7 2 ILLEGAL TRANSACTION UNIT MESSAGE CODE EQ ITA18 CALLTSK TO SEND MESSAGE * SCHEDULE A TRANSACTION UNIT AND CEASE. ITA8 BX7 X1 SA7 ITAA TRANSACTION UNIT NAME RJ CTL CHECK TIME LIST NZ X2,ITA9 IF TIME TO SCHEDULE TRANSACTION UNIT CALLTRN ITAA SCHEDULE TRANSACTION UNIT AND CEASE ITA9 CALLTSK ITAA SCHEDULE THE TIMED TASK SA1 CTLA TRANSACTION UNIT TO SCHEDULE EQ ITA8 SCHEDULE TRANSACTION UNIT ITA10 SEND X7 SEND MESSAGE EQ ITA13 CEASE ITA11 SEND X7 SEND MESSAGE * PROCESS CONNECTION BROKEN, NETWORK ABORT, NETWORK * SHUTDOWN, TERMINAL INACTIVE, STOP AND START ON * DOWNLINE CONNECTION. JOURNAL MESSAGE. ITA12 JOURNL ITAC JOURNAL MESSAGE CEASE -1 EXIT WITHOUT UNLOCKING TERMINAL ITA13 CEASE EXIT WITHOUT SCHEDULING TRANSACTION UNIT * PROCESS UNKNOWN REASON CODE. ITA14 SCALL TMSG,(ITAB) SEND MESSAGE TO DAYFILE CEASE 2 ABNORMAL CEASE WITH DUMP * TAF IS IDLING DOWN, ONLY ACCEPT *EX.LOGT* * AS INPUT. ITA15 SX7 ITAL *TAF IDLING DOWN.* EQ ITA17 SEND MESSAGE AND CEASE * CDCS ABORTED, ONLY ACCEPT *EX.LOGT* * AS INPUT. ITA16 SX7 ITAM *CDCS ABORTED PLEASE WAIT* * CHECK FOR *EX.LOGT*. ITA17 SA1 ITAN IX2 X1-X5 PROCESS INPUT MX1 42 BX2 X1*X2 NZ X2,ITA10 IF NOT *EX.LOGT* RJ CYB ITA18 SA7 TMSW SA1 ITAO BX7 X1 SA7 ITAA CALLTSK ITAA,CEASE EQ ITA8 PROCESS *EX.LOGT* ITAA BSSZ 2 TRANSACTION UNIT LIST FOR *CALLTRN* ITAB DATA C* UNKNOWN REASON CODE.* ITAC VFD 6/0,18/0,18/2,18/TRSQ ITAD VFD 12/0,18/ITAE,12/0,18/ITAEL SEND CONTROL WORD ITAE CON 0 ITAEL EQU *-ITAE ITAF FMSG READY. ITAH FMSG (TASK LOGICAL ERROR.) ITAI FMSG (BLOCK LOST.) ITAL FMSG (TAF IDLING DOWN.) ITAM FMSG (CDCS ABORTED PLEASE WAIT.) ITAN VFD 60/0LEX.LOGT ITAO VFD 60/0LSTASK CYB TITLE CYBERLOAN/NIXDORF INPUT PROCESSING. CYB SPACE 4,20 ** CYB - CYBERLOAN INPUT PROCESSING. * * THE FIRST THREE CHARACTERS OF INPUT ARE USED * TO DETERMINE WHICH TRANSACTION UNIT TO CALL. * * ENTRY (X5) = FIRST WORD OF DATA MESSAGE. * * EXIT (X1) = TRANSACTION UNIT TO SCHEDULE. * = 0, IF NO TRANSACTION UNIT TO SCHEDULE. * * USES A - 1, 2, 7. * B - 2, 3. * X - 0, 1, 2, 5, 7. * * CALLS BIN. CYB SUBR ENTRY/EXIT * THE FIRST CHARACTER OF INPUT DETERMINES THE * SUBTRANSACTION TABLE. MX2 -6 LX5 6 BX2 -X2*X5 TRANSACTION CODE MX0 12 SA2 X2+TRANT INDEX TO SUB TRANSACTION CODES BX7 X0*X5 SUB TRANSACTION CODES UX2,B3 X2 SB2 X2 START OF SUB TRANSACTION CODES * CHARACTERS 2 AND 3 DETERMINE THE TRANSACTION UNIT * TO SCHEDULE FROM THE SUBTRANSACTION TABLE. RJ BIN SEARCH SUB TRANSACTION CODE TABLE ZR X3,CYB1 IF ILLEGAL SUB-TRANSACTION CODE LX1 18 MX7 42 BX1 X7*X1 TRANSACTION UNIT NAME TO SCHEDULE EQ CYBX RETURN CYB1 SX1 X3 NO TRANSACTION UNIT TO SCHEDULE LX5 -6 REPOSITION TERMINAL INPUT EQ CYBX RETURN BIN SPACE 4,15 ** BIN - BINARY SEARCH TABLE. * * ENTRY (X0) = MASK. * (X7) = CRITERION. * (B2) = START OF TABLE. * (B3) = LENGTH OF TABLE. * * EXIT (X3) = 0 IF MATCH NOT FOUND. * (X1) = ENTRY IF MATCH. * * USES A - 1. * B - 2, 3. * X - 1, 2, 3, 6. BIN SUBR ENTRY/EXIT SX3 B3+ SB3 B2+B3 SB3 B3-B1 ZR X3,BINX IF THERE ARE NO ELEMENTS TO SEARCH BIN1 SX3 B3-B2 AX3 1 SA1 X3+B2 TABLE ENTRY NO BX2 X0*X1 IX6 X2-X7 NG X6,BIN2 IF RAISE LOWER LIMIT ZR X6,BIN3 IF FOUND ENTRY SB3 A1-1 LOWER UPPER LIMIT GE B3,B2,BIN1 IF NOT END OF TABLE SX3 0 EQ BINX RETURN - NO MATCH FOUND BIN2 SB2 A1+B1 LE B2,B3,BIN1 IF NOT END OF TABLE BX3 X3-X3 EQ BINX RETURN - NO MATCH FOUND BIN3 SX3 1 EQ BINX RETURN - MATCH FOUND ITASK SPACE 4,15 ** CCS - CHECK CHARACTER STRING FOR TRANSACTION UNIT NAME. * * THE FIRST ONE TO SEVEN ALPHANUMERIC CHARACTERS OF INPUT * ARE USED TO DETERMINE WHICH TRANSACTION UNIT TO SCHEDULE. * * ENTRY (X5) = FIRST WORD OF TERMINAL INPUT. * * EXIT (X1) = TRANSACTION UNIT TO SCHEDULE. * = 0, IF NO TRANSACTION UNIT TO SCHEDULE. * * USES X - 0, 1, 2, 3, 4, 5, 6. * B - 2, 3. CCS SUBR ENTRY/EXIT MX2 48 EIGHT CHARACTER MASK SB2 6 BX6 X6-X6 CLEAR TRANSACTION UNIT NAME SX0 1R+ BX5 X5*X2 MASK OFF CHARACTER STRING MX3 -6 ONE CHARACTER MASK SB3 60 LX5 6 POSITION TERMINAL INPUT BX1 X6 CCS1 BX4 -X3*X5 GET A CHARACTER ZR X4,CCS2 IF END OF TRANSACTION UNIT NAME IX2 X4-X0 PL X2,CCS3 IF NOT ALPHANUMERIC LX6 6 SB3 B3-B2 BX6 X6+X4 TRANSFER A CHARACTER LX5 6 EQ CCS1 LOOP FOR NEXT CHARACTER CCS2 SB2 12 EQ B2,B3,CCSX IF TOO MANY CHARACTERS CCS3 ZR X6,CCSX IF ZERO LENGTH TRANSACTION UNIT NAME LX6 X6,B3 POSITION TRNASACTION UNIT NAME BX1 X6 EQ CCSX RETURN CTL SPACE 4,20 ** CTL - CHECK TIMED TRANSACTION UNIT LIST. * * THIS ROUTINE CHECKS TIME DEPENDENT TRANSACTION UNITS. * IF IT IS TIME TO SCHEDULE A TRANSACTION UNIT THEN (X2) = * THE ADDRESS OF THE TRANSACTION UNIT, OTHERWISE (X2) = 0. * * APPLICATIONS MAY WISH TO GENERATE TIME DEPENDENT TRANS- * ACTION TABLES BY MACRO *TIMCNT* AND CHANGE THIS ROUTINE * TO SEARCH FOR THE PROPER TRANSACTION UNIT TO SCHEDULE. * DEFAULT VALUE FOR *TAF* IS NO TIMED TRANSACTION UNIT. * * ENTRY NONE. * * EXIT (X2) = FWA OF TRANSACTION UNIT TO SCHEDULE. * (X2) = 0 IF NOT TIME TO SCHEDULE TIMED TRANSACTION. * * USES X - 2. CTL SUBR ENTRY/EXIT SX2 0 EQ CTLX RETURN CTLA BSS 1 NEXT TIMED TRANSACTION UNIT TO SCHEDULE SPACE 4 * COMMON DECKS. LIST X *CALL COMKCBT *CALL COMKSTC END ITASK