LIBTASK 
          IDENT  LIBTASK,FETS 
          ABS 
          SST    LREC,MP
          ENTRY  LIBTASK
          ENTRY  RFL= 
          ENTRY  SSJ= 
          SYSCOM B1 
 LIBTASK  TITLE  LIBTASK - TASK LIBRARY EDITING PROGRAM.
*COMMENT  LIBTASK - TASK LIBRARY EDITING PROGRAM. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 LIBTASK  SPACE  4,10 
*****     LIBTASK - TASK LIBRARY BUILDING AND EDITING PROGRAM.
* 
*         J. R. HOGUE.       1971.
*         K. R. COMBS.       1972.
*         M. M. CHEN.        1978.
*         R. G. PARKHOUSE.   80/04/15.
*         E. D. REDIG.       81/03/06.
          SPACE  4
***       *LIBTASK* BUILDS THE TASK LIBRARY USED BY THE TRANSACTION 
*         EXECUTIVE AND PLACES BOTH A TASK DIRECTORY AND A TRANSACTION
*         DIRECTORY ON THE LAST RECORD OF THE LIBRARY.
* 
*         TO MAKE CHANGES TO THE LIBRARY WHILE THE TRANSACTION SYSTEM 
*         IS RUNNING, *LIBTASK* ADDS THE NEW TASK BINARIES TO THE END 
*         OF THE LIBRARY FILE AND REWRITES AN UPDATED DIRECTORY ON THE
*         LAST RECORD.  THEN, VIA THE OPERATING SYSTEM *SIC* REQUEST, 
*         *LIBTASK* INFORMS THE TRANSACTION EXECUTIVE THAT A CHANGE 
*         WAS MADE AND THE EXECUTIVE READS IN THE NEW DIRECTORY.
* 
*         *LIBTASK* DOES NOT DEFINE THE INITIAL LIBRARY FILE.  THIS 
*         MUST BE DONE PRIOR TO A *LIBTASK* CREATION RUN. 
          SPACE  4,10 
***       THE COMMAND.
* 
*         LIBTASK(P1,P2,,PN)
* 
*         THE PARAMETERS P(I) MAY INCLUDE THE FOLLOWING (IN ANY ORDER)
*                AND MUST BE IN ONE OF THE FORMS
* 
*         * * - (NONE) ASSUME FIRST DEFAULT VALUE.
*          P  - ASSUME ALTERNATE DEFAULT VALUE. 
*         P=X - SUBSTITUTE *X* FOR ANY ASSUMED VALUE OF *P*.
* 
*         I  - FILE CONTAINING INPUT DIRECTIVES.
*         Z  - TAKE DIRECTIVES ONLY FROM COMMAND. 
*              EXAMPLE -
*              LIBTASK(...,Z,...)XDDDDDXDDDDXDDD
*              WHERE X IS ANY CHARACTER NOT IN D. 
*                    D IS A LIBTASK DIRECTIVE.
*         B  - FILE CONTAINING BINARIES TO ADD TO TASK LIBRARY FILE.
*         L  - FILE CONTAINING LIST OF ACTIONS TAKEN. 
*         P  - TASK LIBRARY FILE. 
*         N  - NEW TASK LIBRARY FILE. 
*         CR - CREATE A NEW LIBRARY FILE. 
*         TT - SEND MESSAGE TO *TAF* TO READ NEW DIRECTORY. 
*         PR - PURGE OLD BINARIES AND DIRECTORIES.
*         DA - DISABLE ATTACHES AND RETURNS.
*         LO - LIST OPTION FOR TASKS/TRANSACTIONS AND ATTRIBUTES. 
*         TN - TASK OR TRANSACTION NAME USED IN CONJUNCTION WITH *LO*.
* 
*         DEFAULT PARAMETER SUBSTITUTION VALUES.
* 
*         EQUIVALENCED FIRST   ALTERNATE
*         PARAMETERS  DEFAULT   DEFAULT   - COMMENT - 
* 
*         I           *INPUT*  *COMPILE*
*         B           *LGOB*   *LGO*      TASK BINARY FILE. 
*         L           *OUTPUT* *OUTPUT*   OUTPUT FILE.
*         P           *TASKLIB*           TASK LIBRARY FILE.
*         N           *SCRATCH* *TASKLIB* NEW TASK LIBRARY FILE.
*         LO          0        *A*        LIST OPTION.
*         TN          0        0          TASK OR TRANSACTION NAME. 
* 
*         SINGLE       FIRST   ALTERNATE
*         PARAMETERS  DEFAULT   DEFAULT   - COMMENT - 
* 
*         Z           *NOT Z*    *Z*      DIRECTIVES FROM COMMAND.
*         CR          *NOT CR*   *CR*     CREATE A NEW LIBRARY FILE.
*         TT          *NOT TT*   *TT*     TELL *TAF* ABOUT CHANGE.
*         PR          *NOT PR*   *PR*     PURGE OLD RECORDS 
*         DA          *NOT DA*   *DA*     SKIP ATTACHES OF LIBRARY FILE 
          SPACE  4,45 
***       DESCRIPTION OF PARAMETER OPTIONS. 
* 
*         CR - THE CREATE OPTION IS USED TO CREATE A NEW TASK LIBRARY.
*         IF *TAF* IS RUNNING BUT DOES NOT HAVE A FILE ATTACHED BY THE
*         NEW TASK LIBRARY NAME, A CREATE MAY BE DONE.  OTHERWISE, IT 
*         MAY NOT BE USED WHILE *TAF* IS RUNNING.  THE *P* FILE MUST
*         HAVE BEEN PREVIOUSLY DEFINED.  LIBTASK READS ONE TASK 
*         AT A TIME FROM THE *B* FILE, CHECKS FOR AN INPUT DIRECTIVE
*         FOR THE TASK, CONSTRUCTS A DIRECTORY ENTRY AND INSERTS THE
*         ENTRY IN ALPHABETICAL ORDER IN THE LIBRARY DIRECTORY.  THE
*         DIRECTORY IS WRITTEN AT THE END OF THE LIBRARY. 
* 
*         PR - THE PURGE OPTION IS USED TO REMOVE INACTIVE TASK 
*         BINARIES AND OLD DIRECTORIES FROM THE TASK LIBRARY. 
*         THIS OPTION MAY BE USED WHILE *TAF* IS RUNNING AND THE
*         TASK LIBRARY TO BE PURGED IS NOT ATTACHED BY *TAF*. 
*         *LIBTASK* PROCESSES THE REPLACEMENT FILE *B*
*         AND THE INPUT DIRECTIVES NORMALLY, COPIES THE 
*         ENTIRE LIBRARY TO A SCRATCH FILE, THEN TRANSFERS THE CURRENT
*         BINARY FOR EACH TASK IN THE LIBRARY TO THE SCRATCH FILE.
*         HOWEVER, IF THE *N* OPTION IS SPECIFIED, ONLY THE CURRENT 
*         BINARIES ARE TRANSFERRED DIRECTLY TO THE SCRATCH FILE,
*         WHICH HAS BECOME THE NEWLY DEFINED TASK LIBRARY.  THE 
*         DIRECTORY IS UPDATED AND WRITTEN AT THE END IN EACH CASE. 
*         THEREFORE, ONLY ONE COPY OF EACH TASK AND ONE DIRECTORY 
*         REMAINS IN THE LIBRARY. 
* 
*         TT - THE TELL *TAF* OPTION IS USED TO INFORM *TAF* THAT A 
*         CHANGE HAS OCCURRED IN THE TASK LIBRARY WHEN A LIBTASK
*         TAKES PLACE WHILE *TAF* IS RUNNING.  THE PARAMETER HAS
*         NO EFFECT IF *TAF* IS NOT RUNNING.  NORMAL PROCESSING 
*         OCCURS, AFTER WHICH INTERCONTROL POINT COMMUNICATION IS USED
*         TO INFORM *TAF* TO READ IN THE NEW DIRECTORY. 
* 
*         DA - THE DISABLE ATTACH OPTION IS USED TO ALLOW A USER
*         COMPLETE CONTROL OF HIS PERMANENT FILES.  THIS OPTION 
*         DISABLES ALL ATTACHES AND RETURNS OF THE TASK LIBRARY FILES.
*         THE EXCEPTION TO THIS IS IF THE *TT* OPTION IS ALSO 
*         SPECIFIED.  LIBTASK WILL THEN RETURN THE TASK LIBRARY 
*         FILE SO THAT *TAF* MAY REATTACH THE FILE TO UPDATE ITS
*         TABLES. 
* 
*         LO - THE LIST OPTION PRODUCES A REPORT OF TASKS AND THEIR 
*         ATTRIBUTES, TRANSACTION NAMES WITH ATTRIBUTES AND NAMES 
*         OF MEMBER TASKS.  WHEN LISTING TASK NAMES WITH TRANSACTION
*         NAMES, THOSE TASKS WHICH DO NOT EXIST IN THE DATA BASE
*         LIBRARY ARE FLAGGED.
          SPACE  4,70 
***       INPUT FILE DIRECTIVE FORMAT.
* 
*         1. TASK DIRECTIVE.
* 
*         TO ENTER ALTERNATE VALUES FOR A TASK, A DIRECTIVE CARD MAY
*         BE ENTERED IN THE DIRECTIVE FILE. 
* 
*         DIRECTORY COMMAND FORMAT. 
* 
*         *NAME  P1,P2,,,PN.
* 
*         NAME = TASK NAME OF TASK ON FILE *B*. 
* 
*         THE PARAMETERS P(I) MAY INCLUDE THE FOLLOWING (IN ANY ORDER)
*                AND MUST BE IN ONE OF THE FORMS :  
* 
*         * * - (NONE) ASSUME FIRST DEFAULT VALUE 
*          P  - ASSUME ALTERNATE DEFAULT VALUE
*         P=X - SUBSTITUTE *X* FOR ANY ASSUMED VALUE OF *P* 
* 
*         BP - BEGINNING PRIORITY.
*         MP - MAXIMUM PRIORITY (FUTURE USE). 
*         QL - QUEUE LIMIT. 
*         S  - SYSTEM TASK. 
*         C  - CORE RESIDENT. 
*         SC - COMMUNICATION BLOCK SOLICITED FLAG.
*         D  - DESTRUCTIVE CODE.
*         E  - EXTENDED MEMORY RESIDENT (FUTURE USE). 
*         O  - TASK ON/OFF. 
*         Q  - QUEUING FORCED FOR ADDITIONAL ACTIVE COPIES OF TASK. 
*         R  - REDUCE FL (CM RESIDENT TASK ONLY). 
* 
*         EQUIVALENCED FIRST   ALTERNATE
*         PARAMETERS  DEFAULT   DEFAULT   - COMMENT - 
* 
*         BP            20B       25B     BEGINNING TASK PRIORITY.
*         EF              0         0     DEFAULT EXPANDABLE FL.
*         MP            40B       50B     MAXIMUM TASK PRIORITY.
*         QL             3B        5B     QUEUE LIMIT FOR A TASK. 
* 
*         SINGLE       FIRST   ALTERNATE
*         PARAMETERS  DEFAULT   DEFAULT   - COMMENT - 
* 
*         R               0         0     REDUCE FL 
*         S          *NOT S*    *S*       SYSTEM TASK.
*         C          *DISK*     *CORE*    RESIDENCE OF TASK BINARY. 
*         D          *NOT D*    *D*       DESTRUCTIVE CODE INDICATOR. 
*         E          *NOT E*    *E*       EXTENDED MEMORY RESIDENT. 
*         O          *ON*       *OFF*     TASK ON/OFF.
*         DL         *NOT DL*   *DL*      DELETE TASK.
*         IG         *NOT IG*   *IG*      IGNORE TASK.
*         SC         *NOT SC*   *SC*      COM. BLK. SOLICITED 
*         Q          *NORMAL*   *QUEUE*   QUEUE FOR ADDITIONAL COPIES.
* 
* 
*         2. TRANSACTION DIRECTIVE. 
* 
*         TO NAME A TRANSACTION AND SPECIFY TASKS COMPRISING THE NAMED
*         TRANSACTION. TO SPECIFY DATA MANAGERS USED BY THE TRANSACTION 
*         AND SPECIFY THE RECOVERABLE ATTRIBUTE.
* 
*         DIRECTIVE FORMAT. 
* 
*         /TNAME,T1=TSK1,T2=TSK2,T3=TSK3,T4=TSK4,T5=TSK5,RC,DM=DMID,DL. 
* 
*         TNAME  = 1-7 ALPHANUMERIC CHARACTER TRANSACTION UNIT NAME.
*         TSK(I) = TASKS COMPRISING TRANSACTION.
*         RC     = TRANSACTION IS RECOVERABLE.
*         DMID   = DATA MANAGERS USED(C - *CRM*, D - *CDCS*, CD - BOTH) 
*         DL     = DELETE NAMED TRANSACTION.
          SPACE  4,10 
***       DOCUMENTATION CONVENTIONS.
* 
*         B      FILE NAME DENOTED BY COMMAND *B* PARAMETER.
*         N      FILE NAME DENOTED BY COMMAND *N* PARAMETER.
*         P      FILE NAME DENOTED BY COMMAND *P* PARAMETER.
*         TLD    TASK LIBRARY DIRECTORY.
*         TRD    TRANSACTION DIRECTORY. 
          SPACE  4,10 
***       DAYFILE MESSAGES. 
* 
*         ERRA   BINARY RECORD WAS LESS THAN 640 WORDS LONG.
*         ERRB   BINARY RECORD WAS NETHER ABSOLUTE NOR OVERLAY FORMAT.
*         PRSB    LIBTASK COMMAND ARGUMENT ERRORS.
*         ERCB   CONFLICTING LIBTASK OPTIONS - CR, PR.
*         ERCC   CONFLICTING LIBTASK OPTIONS - CR, TT.
*         ERCD   CONFLICTING LIBTASK OPTIONS - PR, TT.
*         ERCF   CONFLICTING LIBTASK OPTIONS - P=0, -N. 
*         ERCH   CONFLICTING LIBTASK OPTIONS - TT, N. 
*         INPB   DIRECTIVE ERRORS.
*         ERRF   DIRECTORY IS FULL - NO MORE ADDITIONS ALLOWED. 
*         LIBK   FILE NOT ATTACHED - LFN. 
*         ERRD   INCORRECT FWA FOR LOAD.
*         ATTD   LIBRARY FILE TIME OUT. 
*         ERRE   LIBTASK ERROR CONDITION UNKNOWN. 
*         LIBJ   LIBTASK ERRORS.
*         ATTE   LIBTASK - PFM ERROR DETECTED.
*         TOVA   TABLE OVERFLOW - TOO MANY TASKS. 
*         LIBF   TASK EDITING COMPLETE. 
*         PRSD   TASK LIBRARY DIRECTORY EMPTY.
*         PRSE   TASK LIBRARY DIRECTORY ERROR.
*         PRSC   TASK LIBRARY DIRECTORY TOO LONG. 
*         ERCO   TASKLIB MUST NOT START WITH THE LETTER Z.
*         ERCL   TN REQUIRES EITHER LO=T OR LO=X. 
*         PRSF   TT OPTION REQUIRES USER NAME.
*         PRSG   TRANSACTION DIRECTORY EMPTY. 
*         PRSH   TRANSACTION DIRECTORY TOO LONG.
*         PRSI   TRANSACTION DIRECTORY ERROR. 
*         PRSJ   USER NOT VALIDATED FOR ONLINE TASK LIBRARY UPDATES.
*         ERCM   VALID LO OPTIONS ARE LO, LO=A, LO=T OR LO=X. 
*         PLOG   XXXXXXX NOT IN DIRECTORY.
          SPACE  4,10 
 QUAL$    EQU    0           PROGRAM WILL HANDLE QUAL 
*CALL     COMCMAC 
*CALL     COMCMTM 
          LIST   X
*CALL     COMKFLD 
*CALL     COMKTLD 
          LIST   -X 
*CALL     COMSPRD 
*CALL     COMSSSD 
*CALL     COMSSSJ 
  
          ORG    104B 
 FETS     TITLE  FETS AND DATA STORAGE. 
 FETS     BSS    0
  
 I        BSS    0
 INPUT    FILEB  IBUF,IBUFL,FET=7  DIRECTIVE INPUT FILE 
  
 B        BSS    0
 LGOB     FILEB  BBUF,BBUFL  TASK BINARY FILE 
  
 O        BSS    0
 OUTPUT   FILEC  OBUF,OBUFL  OUTPUT FILE
  
 P        BSS    0
 TASKLIB  RFILEB PBUF,PBUFL,EPR,FET=11  TASK LIBRARY FILE 
  
 SF       BSS    0
 N        BSS    0
 SCRATCH  RFILEB SBUF,SBUFL,EPR,FET=11   NEW/SCRATCH LIBRARY FILE 
  
 LATLD    BSS    1           ACTUAL LWA OF TLD
 LWTLD    BSS    1           CURRENT LWA OF TLD 
 LWOLD    BSS    1           LWA OF BASE TLD FOR RUNNING SYSTEM 
 TSKDI    BSS    1           TASK DISK INDEX
 TSKNM    BSS    1           TASK NAME
 TSKNE    BSS    1           TASK NAME AND ENTRY POINT
 TSKFL    BSS    1           TASK FIELD LENGTH
 EOFF     CON    0           END OF BINARY FILE FLAG
 BFEF     CON    0           BINARY FILE ERROR FLAG 
 FSLT     BSS    1           FREE SPACE LEFT IN TLD 
 CRES     CON    0           CORE RESIDENT TASK COUNT 
  
 LATRD    CON    0           LWA OF TRD BEFORE SORT 
 LWTRD    CON    0           LWA OF TRD 
 FSTR     CON    0           FREE SPACE LEFT IN TRD 
 MTRD     CON    0           TRD UPDATED FLAG 
 TRDE     CON    0           TRD EXISTS FLAG
  
 Z        CON    0           TO TAKE DIRECTIVES FROM CONTROL COMMAND
 PR       CON    0           TO PURGE OLD COPIES
 CR       CON    0           TO CREATE A LIBRARY FILE OR NOT TO CREATE
 TT       CON    0           TELL *TAF* ABOUT NEW DIRECTORY 
 DA       CON    0           DISABLE ATTACH AND RETURN
 AT       CON    0           ATTACHED BY *TAF* FLAG 
 PN       CON    0           FILE *F* AND *N* NOT EQUAL FLAG
 LO       CON    0           LIST OPTION
 XTN      CON    0           TASK OR TRANSACTION UNIT NAME FOR *LO* 
  
 FWLD     EQU    111B        FWA OF SINGLE ENTRY POINT PROGRAM
 RECN     CON    0           RECORDS READ FROM BINARY FILE
 CBP      EQU    3533B       DEFAULT BEGINNING TASK PRIORITY
 ABP      EQU    3540B       ALTERNATE BEGINNING TASK PRIORITY
 MNBP     EQU    10B         MINIMUM BEGINNING PRIORITY 
 MXBP     EQU    70B         MAXIMUM BEGINNING PRIORITY 
 CMP      EQU    3733B       DEFAULT MAXIMUM TASK PRIORITY
 AMP      EQU    4033B       ALTERNATE MAXIMUM TASK PRIORITY
 MNMP     EQU    10B         MINIMUM MAXIMUM PRIORITY 
 MXMP     EQU    70B         MAXIMUM MAXIMUM PRIORITY 
 CQL      EQU    3336B       DEFAULT TASK QUEUE LIMIT 
 AQL      EQU    3340B       ALTERNATE TASK QUEUE LIMIT 
 MINQL    EQU    1           MINIMUM QUEUE LIMIT
 MAXQL    EQU    5           MAXIMUM QUEUE LIMIT
 EFL      EQU    0           DEFAULT EXPANDABLE FIELD LENGTH BY TASK
 MAXEF    EQU    300000B     MAXIMUM EXPANDABLE FL
 CC       EQU    0           DEFAULT CORE RESIDENCE VALUE 
 CD       EQU    1           DEFAULT FOR DESTRUCTIVE TASKS
 CS       EQU    0           DEFAULT SYSTEM TASK INDICATOR
 CO       EQU    0           DEFAULT ON/OFF INDICATOR 
 CE       EQU    0           DEFAULT ECS RESIDENCE INDICATOR
 CDL      EQU    0           DEFAULT DELETE DIRECTORY 
 CQ       EQU    0           DEFAULT QUEUING CONTROL
 CRE      EQU    0           DEFAULT REDUCE FL
 TLQUSM   DECMIC TLQUS
 MLQU     EQU    1S"TLQUSM"  MULTIPLIER OF *CQ* 
 BP       VFD    12/CBP,48/0 BEGINNING PRIORITY FOR A TASK
 MP       VFD    12/CMP,48/0 MAXIMUM TASK PRIORITY
 EF       CON    EFL         EXPANDABLE FIELD LENGTH BY TASK
 QL       VFD    12/CQL,48/0 TASK QUEUE LIMIT 
 C        CON    CC*10B      CORE RESIDENT DIRECTORY INFORMATION
 D        CON    CD*20B      DESTRUCTIVE CODE DIRECTORY INFORMATION 
 S        CON    CS*40B      SYSTEM TASK DIRECTORY INFORMATION
 OO       CON    CO*02B      ON/OFF BIT 
 E        CON    CE*04B      EXTENDED MEMORY RESIDENT BIT 
 DL       CON    CDL*01B     DELETE BIT 
 Q        CON    CQ*MLQU     QUEUING CONTROL BIT
 R        CON    CRE         REDUCE FL FLAG 
 IG       CON    0           IGNORE TASK
 SC       CON    0           SOLICITED FLAG 
  
 TSK1     CON    0           TASK 1 
 TSK2     CON    0           TASK 2 
 TSK3     CON    0           TASK 3 
 TSK4     CON    0           TASK 4 
 TSK5     CON    0           TASK 5 
 RC       CON    0           RECOVER TRANSACTION
 DM       CON    0           DATA MANAGER(S) USED 
 TDL      CON    0           DELETE TRANSACTION 
  
 JOBORG   BSS    1           JOB ORIGIN CODE
 ENDH     CON    10H0LAST MODI
          CON    10HFICATION
          CON    10H    - 
 LAST     BSSZ   3
 ENDHL    EQU    *-ENDH 
  
  
 LREC     TABLE              TASKS ON TASK LIBRARY
  
 RREC     TABLE              RECORDS REPLACED TABLE 
  
 IREC     TABLE              RECORDS INSERTED TABLE 
  
 DRTC     TABLE              INPUT DIRECTIVES 
  
 TDCH     TABLE              DIRECTIVES CHANGED TABLE 
  
 TDRC     TABLE              DIRECTIVES CHANGED 
  
 TDIG     TABLE              IGNORE TASK
  
 TTIN     TABLE              TRANSACTION UNITS INSERTED 
  
 TTCN     TABLE              TRANSACTION UNITS CHANGED
  
 TTNE     TABLE              TRANSACTION UNITS WITH NONEXISTENT TASKS 
  
 SSJ=     BSS    0           SPECIAL SYSTEM JOB PARAMETER BLOCK 
          VFD    36/0,12/LTCS,12/UJSI 
          BSSZ   SSJL-1 
 LIB      TITLE  MAIN PROGRAM.
**        LIB - LIBTASK MAIN PROGRAM. 
* 
*         LIB READS THE BINARIES AND BUILDS NEW ENTRIES 
*         AT THE END OF THE LIBRARY FILE.  ONE BINARY RECORD (TASK) AT
*         A TIME IS READ FROM THE B FILE AND WRITTEN ON THE P FILE.  A
*         NEW DIRECTORY ENTRY IS CREATED IF THIS IS A NEW TASK, OR THE
*         EXISTING ENTRY IS UPDATED.  IF THE CR OPTION IS SET, THE
*         DIRECTORY ENTRIES ARE ARRANGED ALPHABETICALLY, ELSE NEW 
*         ENTRIES ARE ADDED AT THE END OF THE DIRECTORY.
*         THE STORAGE AREAS OF *PRS* AND RELATED ROUTINES ARE USED
*         FOR TASK LIBRARY DIRECTORY RESIDENT AFTER *PRS* IS CALLED.
  
  
 LIBTASK  RJ     PRS         INITIALIZE LIBTASK 
  
*         CHECK CREATION RUN. 
  
          SA1    B
          ZR     X1,LIB0     IF NO BINARY FILE
          REWIND B,R
          READ   B           INITIATE READ
 LIB0     SA1    CR 
          SA2    PR 
          ZR     X1,LIB1     IF NOT A CREATION RUN
          RJ     PCR         CREATE A NEW LIBRARY 
          EQ     LIB4        PROCESS OUTPUT 
  
*         CHECK PURGE RUN.
  
 LIB1     SA3    TT 
          ZR     X2,LIB2     IF NOT A PURGE RUN 
          RJ     PIT         PURGE INACTIVE TASKS 
          EQ     LIB4        PROCESS OUTPUT 
  
*         CHECK TELL *TAF* RUN. 
  
 LIB2     ZR     X3,LIB3     IF NOT A TELL *TAF* RUN
          RJ     PTT         TELL *TAF* 
          EQ     LIB4        PROCESS OUTPUT 
  
 LIB3     RJ     PNP         PROCESS NO PARAMETERS
 LIB4     SA1    JOBORG 
          ZR     X1,LIB5     IF INTERACTIVE INPUT 
          SA1    L.LREC 
          ZR     X1,LIB5     IF NO TASKS ON OLD DIRECTORY 
  
*         WRITE NAMES OF TASKS ON OLD DIRECTORY.
  
          WRITEW O,LIBE,LIBEL 
          SX2    2
          RJ     ALC         ADVANCE LINE COUNT 
          SA1    F.LREC      START OF NAMES 
          SA5    L.LREC      COUNT OF NAMES 
          SB7    X1 
          SX1    X5 
          RJ     /COMCSST/SST  SORT TABLE 
          SA1    F.LREC      START OF NAMES 
          RJ     LRL         LIST RECORD LIST 
 LIB5     SA1    L.IREC 
          ZR     X1,LIB6     IF NO RECORDS INSERTED 
  
*         WRITE NAMES OF RECORDS INSERTED.
  
          WRITEW O,LIBC,LIBCL 
          SX2    2
          RJ     ALC         ADVANCE LINE COUNT 
          SA1    F.IREC      START OF INSERTED RECORD NAMES 
          SA5    L.IREC      COUNT OF INSERTED RECORD NAMES 
          SB7    X1 
          SX1    X5 
          RJ     /COMCSST/SST   SORT TABLE
          SA1    F.IREC      START OF INSERTED RECORD NAMES 
          RJ     LRL         LIST RECORD LIST 
 LIB6     SA1    L.RREC 
          ZR     X1,LIB7     IF NO RECORDS REPLACED 
  
*         WRITE NAMES OF RECORDS REPLACED.
  
          WRITEW O,LIBD,LIBDL 
          SX2    2
          RJ     ALC         ADVANCE LINE COUNT 
          SA1    F.RREC      START OF REPLACED RECORD NAMES 
          SA5    L.RREC      COUNT OF RECORD NAMES
          SB7    X1 
          SX1    X5 
          RJ     /COMCSST/SST   SORT TABLE
          SA1    F.RREC      START OF REPLACED RECORD NAMES 
          RJ     LRL         LIST RECORD LIST 
 LIB7     SA1    L.TDRC 
          ZR     X1,LIB8     IF NO DIRECTIVES CHANGED 
  
*         WRITE NAMES OF DIRECTIVES CHANGED.
  
          WRITEW O,LIBL,LIBLL 
          SX2    2
          RJ     ALC         ADVANCE LINE COUNT 
          SA1    F.TDRC      START OF DIRECTIVE CHANGE NAMES
          SA5    L.TDRC      COUNT OF NAMES 
          SB7    X1 
          SX1    X5 
          RJ     /COMCSST/SST   SORT TABLE
          SA1    F.TDRC      START OF DIRECTIVE CHANGE NAMES
          RJ     LRL         LIST RECORD LIST 
 LIB8     SA1    L.TTIN 
          ZR     X1,LIB9     IF NO TRANSACTION UNITS INSERTED 
  
*         WRITE NAMES OF TRANSACTION UNITS INSERTED.
  
          WRITEW O,LIBN,LIBNL 
          SX2    2
          RJ     ALC         ADVANCE LINE COUNT 
          SB2    B1          WORDS PER ENTRY
          SA1    F.TTIN 
          SB6    X1          FWA OF TABLE 
          SA1    L.TTIN      LENGTH OF TABLE
          SB3    LIBQ        TEMPORARY BUFFER 
          MX0    42          MASK 
          RJ     SSR         SORT TABLE 
          SA1    F.TTIN 
          SA5    L.TTIN 
          RJ     LRL         LIST RECORD LIST 
 LIB9     SA1    L.TTCN 
          ZR     X1,LIB10    IF NO TRANSACTION UNITS CHANGED
  
*         WRITE NAMES OF TRANSACTION UNITS CHANGED. 
  
          WRITEW O,LIBO,LIBOL 
          SX2    2
          RJ     ALC         ADVANCE LINE COUNT 
          SB2    B1          WORDS PER ENTRY
          SA1    F.TTCN 
          SB6    X1          FWA OF TABLE 
          SA1    L.TTCN      LENGTH OF TABLE
          SB3    LIBQ        TEMPORARY BUFFER 
          MX0    42          MASK 
          RJ     SSR         SORT TABLE 
          SA1    F.TTCN 
          SA5    L.TTCN 
          RJ     LRL         LIST RECORD LIST 
 LIB10    SA1    L.TTNE 
          ZR     X1,LIB11    IF NO TRANSACTION UNITS WITH NONEXISTENT 
  
*         WRITE NAMES OF TRANSACTION UNITS WITH NONEXISTENT TASKS.
  
          WRITEW O,LIBP,LIBPL 
          SX2    2
          RJ     ALC         ADVANCE LINE COUNT 
          SB2    B1          WORDS PER ENTRY
          SA1    F.TTNE 
          SB6    X1          FWA OF TABLE 
          SA1    L.TTNE      LENGTH OF TABLE
          SB3    LIBQ        TEMPORARY BUFFER 
          MX0    42          MASK 
          RJ     SSR         SORT TABLE 
          SA1    F.TTNE 
          SA5    L.TTNE 
          RJ     LRL         LIST RECORD LIST 
  
*         PROCESS LIST OPTION IF USED.
  
 LIB11    SA1    LO 
          ZR     X1,LIB12    IF NO *LO* OPTION
          RJ     PLO         PROCESS LIST OPTION
  
*         WRITE TIME AND DATE OF MOST RECENT LIBRARY MODIFICATION.
  
 LIB12    SA1    RECN 
          NZ     X1,LIB13    IF *B* FILE USED 
          SA1    TLDHD       PLACE DIRECTORY DATE IN OUTPUT LINE
          BX6    X1 
          SA6    LAST 
          SA1    TLDHT       PLACE DIRECTORY TIME IN OUTPUT LINE
          BX6    X1 
          SA6    LAST+1 
 LIB13    WRITEW O,ENDH,ENDHL  WRITE DATE AND TIME OF LAST MODIFICATION 
          WRITER O           FLUSH OUTPUT FILE
          SETFS  O,0         PREVENT RETURN OF OUTPUT FILE
          SA1    BFEF 
          ZR     X1,LIB14    IF NO ERRORS ON *B* OR *PLO* 
          MESSAGE LIBJ       * LIBTASK ERRORS.* 
          ABORT 
  
 LIB14    MESSAGE  LIBF      * TASK EDITING COMPLETE.*
          ENDRUN
  
*         TLD VALUES FOR CURRENT TASK.
  
 LIBA     VFD    48/0,6/0,6/0  WORD 2 OF TLD
          VFD    1/CS,1/CD,1/CC,3/0,18/0,18/0,18/0
  
*         DEFAULT VALUES FOR ALL TASKS. 
  
 LIBB     VFD    48/0,6/0,6/0  WORD 2 OF TLD
          VFD    1/CS,1/CD,1/CC,3/0,18/0,18/0,18/0
 LIBC     DATA   C* RECORDS INSERTED INTO LIBRARY FILE -            * 
 LIBCL    EQU    *-LIBC 
 LIBD     DATA   C* RECORDS REPLACED IN LIBRARY FILE -               *
 LIBDL    EQU    *-LIBD 
 LIBE     DATA   C* RECORDS ON OLD TASK LIBRARY FILE -             *
          CON    8L 
 LIBEL    EQU    *-LIBE 
 LIBF     DATA   C* TASK EDITING COMPLETE.* 
 LIBG     DATA   C* COPYING        *
 LIBH     VFD    18/0,12/TRSI,30/0  REPLY WORD FOR *SIC* MACRO
 LIBI     VFD    12/2002B,30/0,18/LIBIL 
          VFD    42/0,18/0
          CON    0           TASK LIBRARY NAME
 LIBIL    EQU    *-LIBI      LENGTH OF PARAMETER BLOCK
 LIBJ     DATA   C* LIBTASK ERRORS.*
 LIBK     DATA   C* FILE NOT ATTACHED -        *
 LIBL     DATA   C* DIRECTIVE ENTRIES CHANGED IN TASK LIBRARY DIRECTORY.
,*
          CON    8L 
 LIBLL    EQU    *-LIBL 
 LIBM     DATA   C*IGNORING           * 
 LIBN     DATA   C* TRANSACTION NAMES INSERTED.*
          CON    8L 
 LIBNL    EQU    *-LIBN 
 LIBO     DATA   C* TRANSACTION NAMES CHANGED.* 
          CON    8L 
 LIBOL    EQU    *-LIBO 
 LIBP     DATA   C* TRANSACTION NAMES CONTAINING NONEXISTENT TASKS.*
          CON    8L 
 LIBPL    EQU    *-LIBP 
 LIBQ     CON    0           TEMPORARY BUFFER FOR *SSR* 
          TITLE  SUBROUTINES. 
 ALC      SPACE  4,15 
**        ALC - ADVANCE LINE COUNT. 
* 
*         ADVANCE THE LINE COUNT FOR THE OUTPUT FILE PAGE AND 
*         CHECK FOR END OF PAGE.
* 
*         ENTRY  (X2) = LINE COUNT IF NOT 1.
* 
*         EXIT   LINE COUNT ADVANCED. 
* 
*         USES   A - 1, 6, 7. 
*                B - 2. 
*                X - 1, 2, 4, 6, 7. 
* 
*         CALLS  CDD, STL.
  
  
 ALC      SUBR               ENTRY/EXIT 
          SA1    ALCA        LINE COUNT 
          IX7    X1+X2
          SA7    A1          LINE COUNT ADVANCED
          SB2    X1-58
          NG     B2,ALCX     IF NOT AT END OF PAGE
          SA1    ALCB 
          SX7    X1+1        ADVANCE PAGE COUNT 
          SA7    ALCB 
          RJ     CDD         CONVERT TO DECIMAL DISPLAY CODE
          MX4    30 
          SA1    STLAP       HEADER PAGE WORD 
          BX2    X4*X1
          BX6    -X4*X6 
          BX6    X6+X2
          SA6    A1+         NEW PAGE NUMBER INSERTED 
          RJ     STL         SET NEW TITLE LINE 
          EQ     ALCX        RETURN 
  
 ALCA     CON    3           LINE COUNT 
 ALCB     CON    2           PAGE COUNT 
 CDR      SPACE  4,15 
**        CDR - COPY DIRECTORY TO TASK LIBRARY. 
* 
*         ENTRY  FILE INITIALIZED.
*                (X5) = FILE NAME TO WHICH TLD IS TO BE COPIED. 
* 
*         EXIT   TASK AND TRANSACTION DIRECTORIES COPIED
*                TO THE LIBRARY FILE. 
* 
*         USES   A - 1, 2, 3, 4, 6, 7.
*                X - 1, 2, 3, 4, 6, 7.
* 
*         CALLS  STN, STR.
* 
*         MACROS RECALL, WRITEF, WRITER, WRITEW.
  
  
 CDR      SUBR               ENTRY/EXIT 
          RJ     STN         FIND TRANSACTIONS WITH NONEXISTENT TASKS 
          RECALL X5          WAIT FOR FILE NOT BUSY 
          SA1    STLAD       PLACE DATE IN DIRECTORY
          SA2    STLAT       PLACE TIME IN DIRECTORY HEADER 
          BX6    X1 
          BX7    X2 
          SA6    LAST 
          SA7    LAST+1 
          SA6    TLDHD
          SA7    TLDHT
          SA1    TRDE 
          ZR     X1,CDR1     IF TRD DOES NOT EXIST
          SA1    MTRD 
          ZR     X1,CDR1     IF TRD NOT MODIFIED
          SA1    LWTRD
          SX2    X1-TRD      LENGTH OF TRD
          NZ     X2,CDR0     IF TRD NOT EMPTY 
          SA1    TLDH+TLTRW  CLEAR PRU OF TRD IN TLD HEADER 
          MX3    60-TLTRN 
          BX6    X3*X1
          SA6    A1+
          EQ     CDR1        PROCESS TLD
  
 CDR0     SA6    TRDH+2      DATE 
          SA7    A6+1        TIME 
          RJ     STR         SORT TRANSACTION DIRECTORY 
          SA2    X5+6 
          MX3    TLTRN
          ERRNZ  TLTRN-30    *CRI* AND PRU OF TRD LENGTHS DIFFERENT 
          BX6    X3*X2       EXTRACT CURRENT RANDOM INDEX FROM FET
          SA2    TLDH+TLTRW 
          LX6    TLTRS-59 
          BX3    X3*X2       CLEAR OLD PRU
          BX6    X6+X3
          SA6    A2          PRU OF TRD IN TLD HEADER 
          SA1    LWTRD
          SX7    X1-TRD      LENGTH OF TRD
          MX3    -18
          LX3    18 
          LX7    18 
          SA2    TRDH+1 
          BX2    X3*X2
          BX7    X2+X7
          SA7    A2          TRD LENGTH IN TRD HEADER 
          WRITEW X5,TRDH,X1-TRDH  WRITE TRD TO FILE 
          WRITER X5,R        FLUSH BUFFER 
 CDR1     SA1    CRES        NUMBER OF CM RESIDENT TASKS
          SA3    TT 
          SA4    LWTLD       LWA OF TLD 
          ZR     X3,CDR2     IF NOT *TT* RUN
          SA4    LWOLD       LWA OF BASE TLD
 CDR2     SA2    TLDH+1 
          MX3    18 
          BX2    X3*X2
          SX6    X4-TLD      LENGTH OF TLD
          BX7    X1+X2       STORE CORE RESIDENT COUNT IN HEADER WORD 
          LX6    18 
          BX7    X7+X6       ADD TLD LENGTH 
          SA7    TLDH+1      UPDATE DIRECTORY HEADER
          SA4    LWTLD       LWA OF TLD 
          WRITEW X5,TLDH,X4-TLDH
          WRITER X5          FLUSH BUFFER 
          WRITEF X5          WRITE EOF ON LIBRARY FILE
          EQ     CDRX 
 ERR      SPACE  4,25 
**        ERR - PROCESS ERRORS ENCOUNTERED IN BINARY OR INPUT 
*               DIRECTIVE FILE. 
* 
*         THE FOLLOWING BLOCKS OF CODE HANDLE VARIOUS ERROR CONDITIONS
*         WHICH MAY OCCUR WHILE PROCESSING THE *B* OR *I* FILE. 
* 
*         ENTRY  (X6) = 1 - RECORD LESS THAN 64D WORDS. 
*                       2 - INCORRECT RECORD TYPE ON BINARY.
*                       3 - MULTIPLE ENTRY POINT. 
*                       4 - ERROR IN *54* TABLE.
*                       5 - TLD IS FULL.
*                       6 - TRD IS FULL.
* 
*         EXIT   (BFEF) = 1  IF ERROR PROCESSED.
* 
*         USES   A - 1, 6, 7. 
*                B - 3. 
*                X - 1, 2, 6, 7.
* 
*         CALLS  ALC, SEH, SFN, SKR.
* 
*         MACROS ABORT, MESSAGE, READ, WRITEW.
  
  
 ERR9     SX7    B1+         INDICATE ERROR ENCOUNTERED 
          SA7    BFEF 
  
 ERR      SUBR               ENTRY/EXIT 
          LX6    -1 
          SX2    X6-TERRL 
          SB3    X6 
          PL     X2,ERR7     IF UNKNOWN ERROR CONDITION 
          JP     B3+TERR     JUMP THROUGH TABLE 
  
 TERR     PL     X6,ERR7     UNKNOWN ERROR CONDITION
          EQ     ERR1        RECORD LESS THAN 64D WORDS 
          PL     X6,ERR4     IF INCORRECT RECORD TYPE 
          EQ     ERR5        MULTIPLE ENTRY POINT 
          PL     X6,ERR6     ERRORS IN *54* TABLE 
          EQ     ERR8        TLD FULL 
          PL     X6,ERR10    TRD FULL 
          EQ     ERR7        UNKNOWN ERROR CONDITION
 TERRL    EQU    *-TERR      LENGTH OF ERROR JUMP TABLE 
  
*         BINARY RECORD LESS THAN 64D WORDS LONG. 
  
 ERR1     SX2    X1-HB
          NZ     X2,ERR2     IF NOT A BLANK RECORD
          READ   B           REINITIATE READ ON BINARY FILE 
          EQ     ERRX        RETURN 
  
 ERR2     SX2    X1-HB-1
          PL     X2,ERR3     IF MORE THAN ONE WORD ON RECORD
          SX6    B0+
          SA6    HB+1        NO TASK NAME 
 ERR3     READ   B           INITIATE READ ON BINARY FILE 
          RJ     SEH         SET ERROR HEADER 
          MX7    42 
          SA1    HB+1        TASK NAME - HOPEFULLY
          BX1    X7*X1
          RJ     SFN         SPACE FILL NAME
          SA6    ERRA+1 
          WRITEW O,ERRA,ERRAL 
          SX2    B1+B1
          RJ     ALC         ADVANCE LINE COUNT 
          EQ     ERR9        RETURN 
  
*         INCORRECT RECORD TYPE ON BINARY FILE. 
  
 ERR4     RJ     SKR         ADVANCE TO NEXT RECORD 
          RJ     SEH         SET ERROR HEADER 
          MX7    42 
          SA1    TSKNM       TASK NAME
          RJ     SFN         SPACE FILL NAME
          SA6    ERRB+1 
          WRITEW O,ERRB,ERRBL 
          SX2    B1+B1
          RJ     ALC         ADVANCE LINE COUNT 
          EQ     ERR9        RETURN 
  
*         MORE THAN ONE ENTRY POINT GIVEN ON A *54* TABLE.
  
 ERR5     RJ     SKR         SKIP TO NEXT RECORD
          RJ     SEH         SET ERROR HEADER 
          MX7    42 
          SA1    TSKNM       TASK NAME
          RJ     SFN         SPACE FILL NAME
          SA6    ERRC+1 
          WRITEW O,ERRC,ERRCL 
          SX2    B1+B1
          RJ     ALC         ADVANCE LINE COUNT 
          EQ     ERR9        RETURN 
  
*         FWA FOR A NON *54* TABLE BINARY WAS NOT EQUAL TO THE
*         DEFAULT FWA OF A *54* TABLE.
  
 ERR6     RJ     SKR         SKIP TO NEXT RECORD
          RJ     SEH         SET ERROR HEADER 
          MX7    42 
          SA1    TSKNM       TASK NAME
          RJ     SFN         SPACE FILL NAME
          SA6    ERRD+1 
          WRITEW O,ERRD,ERRDL 
          SX2    B1+B1
          RJ     ALC         ADVANCE LINE COUNT 
          EQ     ERR9        RETURN 
  
*         UNKNOWN ERROR CONDITION.
  
 ERR7     MESSAGE  ERRE      * LIBTASK ERROR CONDITION UNKNOWN.*
          ABORT 
  
*         TLD IS FULL.
  
 ERR8     RJ     SEH         SET ERROR HEADER 
          MX7    42 
          SA1    TSKNM       TASK NAME
          RJ     SFN         SPACE FILL NAME
          SA6    ERRF+1 
          WRITEW O,ERRF,ERRFL 
          SX2    2
          RJ     ALC         ADVANCE LINE COUNT 
          EQ     ERR9        RETURN 
  
*         TRD IS FULL.
  
 ERR10    RJ     SEH         SET ERROR HEADING
          MX7    42 
          SA1    INPT        TRANSACTION NAME 
          RJ     SFN         SPACE FILL NAME
          SA6    ERRG+1 
          WRITEW O,ERRG,ERRGL 
          SX2    B1+B1
          RJ     ALC         ADVANCE LINE COUNT 
          EQ     ERR9        RETURN 
  
 ERRA     DATA   20H0 
          DATA   C* BINARY RECORD WAS LESS THAN 64D WORDS LONG.*
 ERRAL    EQU    *-ERRA      LENGTH OF MESSAGE
 ERRB     DATA   20H0 
          DATA   C* BINARY RECORD WAS NETHER ABSOLUTE NOR OVERLAY.* 
 ERRBL    EQU    *-ERRB      LENGTH OF MESSAGE
 ERRC     DATA   20H0 
          DATA   C/ MORE THAN ONE ENTRY POINT ON A *54* TABLE./ 
 ERRCL    EQU    *-ERRC      LENGTH OF MESSAGE
 ERRD     DATA   20H0 
          DATA   C* INCORRECT FWA FOR LOAD.*
 ERRDL    EQU    *-ERRD      LENGTH OF MESSAGE
 ERRE     DATA   C* LIBTASK ERROR CONDITION UNKNOWN.* 
 ERRF     DATA   20H0 
          DATA   C* DIRECTORY IS FULL - NO MORE ADDITIONS ALLOWED.* 
 ERRFL    EQU    *-ERRF      LENGTH OF MESSAGE
 ERRG     DATA   20H0 
          DATA   C* TRD IS FULL - NO MORE ADDITIONS ALLOWED.* 
 ERRGL    EQU    *-ERRG 
 FPL      SPACE  4,20 
**        FPL - FORMAT PRINT LINE.
* 
*         FORMATS THE PRINT LINE FOR EITHER THE TASK NAME REPORT
*         OR THE TRANSACTION UNIT REPORT, PRINTS THE LINE, AND
*         CALLS *ALC* TO ADVANCE THE LINE COUNT.
* 
*         ENTRY  (A1) = FWA OF TLD/TRD ENTRY. 
*                (FPLC) = 0, IF TLD IS BEING FORMATTED. 
*                       = 1, IF TRD IS BEING FORMATTED. 
* 
*         EXIT   LINE PRINTED.
* 
*         USES   X - 0, 1, 2, 3, 4, 5, 6, 7.
*                A - 1, 2, 4, 5, 6. 
*                B - 2, 3, 4, 5, 6, 7.
* 
*         CALLS  ALC, COD, PRH, SFN, STD. 
* 
*         MACROS WRITEC, WRITEW.
  
  
 FPL      SUBR               ENTRY/EXIT 
          SA2    FPLC        FORMAT FLAG
          NZ     X2,FPL7     IF FORMATTING TRANSACTION UNITS
          SA2    A1+TLTNW    FIRST WORD OF TLD
          MX4    TLTNN
          BX1    X4*X2       TASK NAME
          RJ     SFN         SPACE FILL NAME
          LX6    -6 
          SA6    FPLB        SET IN FIRST WORD OF PRINT LINE
          SA2    A1+B1       SECOND WORD OF TLD 
          MX0    -TLMPN 
          BX1    -X0*X2      MAXIMUM PRIORITY 
          RJ     COD         CONVERT TO DISPLAY CODE
          SA2    A2+B1       THIRD WORD OF TLD
          BX5    X6          SAVE MAXIMUM PRIORITY
          LX2    TLBPN-1-TLBPS
          BX1    -X0*X2      BEGINNING PRIORITY 
          MX0    -36
          BX5    -X0*X5      CLEAR OUT BEGINNING PRIORITY 
          RJ     COD         CONVERT TO DISPLAY CODE
          LX6    59-23
          BX6    X0*X6       BEGINNING PRIORITY 
          BX6    X6+X5       ADD MAXIMUM TO BEGINNING PRIORITY
          MX4    -TLQLN 
          SA2    A2          THIRD WORD OF TLD
          SA6    A6+1        SET IN SECOND WORD OF PRINT LINE 
          BX1    -X4*X2      QUEUE LIMIT
          RJ     COD         CONVERT TO DISPLAY CODE
          LX6    24 
          MX0    -TLFLN 
          SA6    A6+1        SET IN THIRD WORD OF PRINT LINE
          SA2    A1+TLFLW    SECOND WORD OF TLD 
          BX5    X2 
          LX2    TLFLN-1-TLFLS
          BX1    -X0*X2 
          LX1    6           FIELD LENGTH*100B
          RJ     COD         CONVERT TO DISPLAY CODE
          LX6    24 
          SA6    A6+1        SET IN FOURTH WORD OF PRINT LINE 
          LX5    TLEFN-1-TLEFS
          ERRNZ  TLFLW-TLEFW
          BX1    -X0*X5 
          LX1    6           EXTRA FL*100B
          RJ     COD         CONVERT TO DISPLAY CODE
          LX6    24 
          SA6    A6+B1       SET IN FIFTH WORD OF PRINT LINE
          SA5    FPLA 
          BX6    X5 
          SA4    A1+TLNDW    THIRD WORD OF TLD
          BX1    X4 
          SA6    A6+1        SET SPACES IN SIXTH WORD OF PRINT LINE 
          SB2    1R-
          BX0    X4 
          LX1    59-TLNDS 
          SX2    B2+
          NG     X1,FPL1     IF NOT DESTRUCTIVE CODE
          SX2    1RD         ADD IN *D* 
 FPL1     BX1    X4 
          LX2    6
          SX3    B2 
          LX1    59-TLCMS 
          PL     X1,FPL2     IF NO CM RESIDENT
          SX3    1RC
 FPL2     BX2    X2+X3       ADD IN *C* OR *-*
          LX1    59-TLECS-59+TLCMS
          SX3    B2 
          LX2    6
          PL     X1,FPL3     IF NOT EXTENDED MEMORY RESIDENT
          SX3    1RE
 FPL3     BX2    X2+X3       ADD IN *E* OR *-*
          LX0    59-TLTOS 
          SX3    B2 
          LX2    6
          PL     X0,FPL4     IF TASK IS NOT OFF 
          SX3    1RO
 FPL4     BX2    X2+X3       ADD IN *O* OR *-*
          LX4    59-TLSCS 
          SX3    B2 
          LX2    6
          PL     X4,FPL5     IF NO SOLICITED COMMUNICATION BLOCK
          SX3    1RR
 FPL5     BX2    X2+X3       ADD IN *R* OR *-*
          LX4    59-TLQUS-59+TLSCS
          SX3    B2 
          LX2    6
          PL     X4,FPL6     IF QUEUEING NOT ENFORCED 
          SX3    1RQ
 FPL6     BX2    X2+X3       ADD IN *Q* OR *-*
          MX4    -24
          LX2    24 
          BX6    -X4*X5 
          BX6    X6+X2       ADD ATTRIBUTES TO SPACES 
          SA6    A6+B1       SET IN SEVENTH WORD OF PRINT LINE
          EQ     FPL14       PRINT OUT LINE 
  
*         FORMAT THE PRINT LINE FOR THE TRANSACTION UNIT REPORT.
  
 FPL7     MX0    TDTNN
          SA2    A1          FIRST WORD OF TRD
          SB4    A1 
          BX1    X0*X2       TRANSACTION NAME 
          SB7    4
          RJ     SFN         SPACE FILL NAME
          LX6    -6 
          SA6    FPLB        SET IN FIRST WORD OF PRINT LINE
          SA5    A6-B1       GET SPACES 
 FPL8     SA2    A2+1        GET NEXT WORD IN TRD 
          BX6    X5 
          BX1    X0*X2
          ZR     X1,FPL10    IF NO TASK 
          RJ     SFN         SPACE FILL NAME
          SB3    TLDLE       LENGTH OF TLD ENTRY
          SB5    TLD         START OF TLD 
          BX2    X1 
          SA1    LWOLD
          SB6    X1          LWA OF TLD 
          RJ     STD         SEARCH TLD 
          ZR     X1,FPL10    IF TASK NAME IN TLD
          LX6    -6 
          MX3    -54
          BX1    -X3*X6 
          SX4    1R(
          LX4    -6 
          BX6    X1+X4       ADD IN LEFT PARENTHESIS
          SB5    -6 
          MX1    -6 
          SX4    1R 
          SB6    6
 FPL9     LX6    -6 
          BX3    -X1*X6 
          IX7    X3-X4
          SB5    B5+B6
          ZR     X7,FPL9     IF BLANK 
          LX6    B6 
          MX1    54 
          BX2    X1*X6
          SX1    1R)
          BX6    X2+X1       ADD IN RIGHT PARENTHESIS 
          LX6    B5          POSITION NAME
 FPL10    SB7    B7-B1
          SA6    A6+B1       SET NAME IN PRINT LINE 
          PL     B7,FPL8     IF MORE TASKS
          MX4    -48
          SA2    B4+TDDCW    FIRST WORD OF TRD
          BX6    -X4*X5      CLEAR OUT *CRM* AND *CDCS* USAGE 
          BX0    X2 
          LX2    59-TDDCS 
          SX3    1R-
          PL     X2,FPL11    IF NOT *CDCS* USAGE
          SX3    1RD
 FPL11    LX3    -6 
          BX6    X6+X3       ADD IN *D* OR *-*
          SX3    1R-
          LX2    59-TDRMS-59+TDDCS
          PL     X2,FPL12    IF NOT *CRM* USAGE 
          SX3    1RC
 FPL12    LX3    -12
          BX6    X6+X3       ADD IN *C* OR *-*
          MX4    54 
          LX0    59-TDRCS 
          SX3    1RN
          LX4    12 
          BX6    X4*X6       CLEAR OUT RECOVER FLAG 
          PL     X0,FPL13    IF NOT RECOVERABLE 
          SX3    1RY
 FPL13    LX3    12 
          BX6    X6+X3       ADD IN *N* OR *Y*
          SA6    A6+1        SET IN SEVENTH WORD OF PRINT LINE
  
*         PRINT OUTPUT LINE.
  
 FPL14    WRITEC O,FPLB      PRINT OUT LINE 
          SX2    B1+
          RJ     ALC         ADVANCE LINE COUNT 
          SA4    ALCA        GET LINE COUNT 
          SA2    FPLC 
          SA5    PLOH 
          SX4    X4-3 
          SA5    X5+TLDLE    GET NEXT TLD ENTRY 
          ZR     X2,FPL15    IF TLD FORMAT
          SA5    PLOH 
          SA5    X5+TRDLE1   GET NEXT TRD ENTRY 
 FPL15    ZR     X5,FPLX     IF NO MORE ENTRIES RETURN
          NZ     X4,FPLX     IF NOT NEW PAGE RETURN 
          RJ     PRH         PRINT REPORT HEADER
          EQ     FPLX        RETURN 
  
 FPLA     CON    1H          SPACES 
 FPLB     BSS    7           PRINT LINE BUFFER
          CON    8L 
 FPLC     CON    0           FORMAT FLAG
 LRL      SPACE  4,20 
**        LRL - WRITE RECORD LIST.
* 
*         WRITE A LIST OF TASK NAMES ONTO THE OUTPUT FILE, EIGHT NAMES
*         ON EACH LINE, AND UPDATE THE LINE COUNT.  IF THERE ARE NO 
*         TASK NAMES IN THE LIST, *NONE* IS WRITTEN.
* 
*         ENTRY  (X1) = FWA OF RECORD LIST. 
*                (X5) = NUMBER OF RECORDS IN LIST 
* 
*         EXIT - RECORDS WRITTEN ON OUTPUT FILE.
* 
*         USES   A - 0, 1, 2, 6.
*                B - 2, 3, 5, 6.
*                X - ALL. 
* 
*         CALLS  ALC, SFN.
* 
*         MACROS WRITEC, WRITEW.
  
  
 LRL      SUBR               ENTRY/EXIT 
          SX7    X5-23
          SA0    11          TASKS PER LINE 
          SB5    X1          ADDRESS OF FIRST TASK NAME 
          SB6    A0 
          SX0    B1 
          SB3    B0 
          PL     X7,LRL2     IF MORE THAN 23 TASKS TO LIST
          SX6    X5-9 
          NG     X6,LRL4     IF 8 TASKS ON ONE LINE 
          SX3    X5 
          LX3    -1          DIVIDE COUNT BY TWO
          SA0    X3 
          SB6    A0 
          PL     X3,LRL2     IF EVEN NUMBER OF TASKS
          SB6    B6+1 
 LRL2     SX3    X5 
          SX4    A0 
          IX0    X3/X4       NUMBER OF LINES
          SB2    A0 
          NE     B2,B6,LRL3  IF FORCED ODD COUNT LINES
          SX2    X0 
          SX4    A0 
          IX2    X2*X4       CHECK FOR REMAINDER
          IX4    X5-X2
          ZR     X4,LRL3     IF NO ODD COUNT LINES
          SB3    X4+B1
          SX0    X0+B1
 LRL3     SX1    B5+
          LX1    18 
          BX0    X1+X0
          SX2    B3+
          LX2    36 
          BX0    X0+X2
 LRL4     SA2    STLAB       BLANKS 
          MX4    42          MASK FOR TASK NAMES
          BX6    X2 
          SA6    WBUF 
 LRL5     ZR     X5,LRL7     IF DONE LISTING TASK NAMES 
          SA1    B5          TASK NAME
          BX1    X4*X1
          ZR     B3,LRL6     IF NO EXTRA LINES IN THIS COLUMN 
          SB3    B3-1 
          NZ     B3,LRL6     IF EXTRA LINES REMAIN
          SX2    B1 
          IX0    X0-X2       REMOVE EXTRA COLUMN COUNT
 LRL6     SX5    X5-1 
          RJ     SFN         SPACE FILL NAME
          SB6    B6-B1
          SA6    A6+1        STORE TASK NAME IN OUTPUT BUFFER 
          SB5    B5+X0
          NZ     B6,LRL5     IF MORE NAMES TO PRINT ON THIS LINE
 LRL7     BX6    X6-X6
          SA6    A6+B1       TERMINATE LINE 
          WRITEC O,WBUF,WBUFL 
          SX2    B1 
          RJ     ALC         ADVANCE LINE COUNT 
          SB6    A0          NAMES TO LIST ON NEXT LINE 
          LX0    -18
          SX1    B1 
          SB5    X0+B1
          IX0    X0+X1
          LX0    -18
          SB3    X0 
          LX0    36 
          ZR     B3,LRL8     IF NO EXTRA LINES
          IX0    X0+X1
 LRL8     NZ     X5,LRL4     IF NOT END OF LISTING
          WRITEW O,BLINE,1   SKIP ONE LINE
          SX2    B1+
          RJ     ALC         ADVANCE LINE COUNT 
          EQ     LRLX        RETURN 
  
 LRLA     DATA   C/          *NONE*/
 LRLAL    EQU    *-LRLA 
 PCR      SPACE  4,15 
**        PCR - PROCESS CREATION RUN. 
* 
*         ENTRY  FILE INITIALIZED.
* 
*         EXIT   NEW TASK LIBRARY CREATED.
* 
*         USES   A - 1. 
*                X - 1, 5.
* 
*         CALLS  CDR, RBF, SDR. 
* 
*         MACROS REWIND.
  
  
 PCR      SUBR               ENTRY/EXIT 
          SA1    PN 
          SX5    P
          ZR     X1,PCR1     IF *P* AND *N* ARE IDENTICAL 
          SX5    N
 PCR1     REWIND X5 
          RJ     RBF         READ BINARY FILE 
          RJ     SDR         SORT DIRECTORY 
          RJ     CDR         COPY DIRECTORY TO NEW TASK LIBRARY 
          EQ     PCRX        RETURN 
 PLO      SPACE  4,20 
**        PLO - PROCESS LIST OPTION.
* 
*         READ TASK AND TRANSACTION DIRECTORIES AND PRODUCE A 
*         FORMATTED LISTING OF ALL TASKS AND THEIR ATTRIBUTES 
*         AND ALL TRANSACTIONS WITH THEIR ATTRIBUTES. 
* 
*         ENTRY  TLD = FWA OF TASK LIBRARY DIRECTORY. 
*                TRD = FWA OF TRANSACTION UNIT DIRECTORY. 
* 
*         EXIT   *PLO* PROCESSSING COMPLETE.
* 
*         ERROR  (BFEF) NON ZERO IF NAME NOT IN DIRECTORY.
* 
*         USES   X - 1, 2, 3, 6, 7. 
*                A - 1, 2, 6, 7.
*                B - 2, 3, 5, 6.
* 
*         CALLS  FPL, PRH, SNM, STD, STL. 
* 
*         MACROS WRITEW.
  
  
 PLO      SUBR               ENTRY/EXIT 
          SA1    ALCA        GET LINE COUNT 
          SX1    X1-3 
          ZR     X1,PLO1     IF PAGE EJECT NOT NEEDED 
          RJ     STL         SET NEW TITLE PAGE 
 PLO1     SX2    1RT
          SA1    LO 
          LX2    -6 
          IX3    X2-X1
          ZR     X3,PLO6     IF *LO=T*
          SX2    1RX
          LX2    -6 
          IX3    X2-X1
          ZR     X3,PLO7     IF *LO=X*
 PLO1.1   SA1    LWTLD
          SX1    X1-TLD      LENGTH OF TLD
          ZR     X1,PLO3     IF NO TLD ENTRIES
          SX2    B0+
          RJ     PRH         PRINT HEADER FOR TASK NAME REPORT
          SX6    B0+
          SA1    TLD
          SA6    FPLC        FORMAT TLD 
 PLO2     SX7    A1+
          SA7    PLOH        SAVE LAST TLD ENTRY
          RJ     FPL         FORMAT PRINT LINE
          SA1    PLOH 
          SA1    X1+TLDLE    GET NEXT TLD ENTRY 
          SA2    LWTLD
          SX3    A1 
          IX1    X2-X3
          ZR     X1,PLO3     IF NO MORE TLD ENTRIES 
          EQ     PLO2        LOOP FOR NEXT ENTRY
  
 PLO3     SA2    PLOI 
          NZ     X2,PLOX     IF *LO=T*
          SA2    ALCA        GET LINE COUNT 
          SX2    X2-3 
          ZR     X2,PLO4     IF PAGE EJECT NOT NEEDED 
          RJ     STL         SET NEW TITLE PAGE 
 PLO4     SA1    LWTRD
          SX1    X1-TRD      LENGTH OF TRD
          ZR     X1,PLOX     IF NO TRD ENTRIES
          SX2    B1+
          RJ     PRH         PRINT HEADER FOR TRANSACTION UNIT REPORT 
          SX6    B1+
          SA1    TRD
          SA6    FPLC        FORMAT TRD 
 PLO5     SX7    A1+
          SA7    PLOH        SAVE LAST TRD ENTRY
          RJ     FPL         FORMAT PRINT LINE
          SA1    PLOH 
          SA1    X1+TRDLE1   GET NEXT TRD ENTRY 
          SA2    LWTRD
          SX3    A1 
          IX1    X2-X3
          ZR     X1,PLOX     IF NO MORE TRD ENTRIES 
          EQ     PLO5        LOOP FOR NEXT ENTRY
  
*         PROCESS *LO=T* OPTION.
  
 PLO6     SA2    XTN         GET TASK NAME
          SX7    B1+
          SA7    PLOI        SET *LO=T* 
          ZR     X2,PLO1.1   IF *LO=T* WITH NO *TN* 
          SB3    TLDLE       LENGTH OF TLD ENTRY
          SB5    TLD         START OF TLD 
          SA1    LWOLD       LWA OF BASE TLD
          SB6    X1+
          RJ     STD         SEARCH TLD 
          NZ     X1,PLO8     IF ENTRY NOT FOUND 
          SX7    A1 
          SX2    B0 
          SA7    PLOH        SAVE FWA OF ENTRY
          RJ     PRH         PRINT TASK NAME REPORT HEADER
          SX6    B0 
          SA1    PLOH 
          SA1    X1          FWA OF TLD ENTRY 
          SA6    FPLC        FORMAT TLD 
          RJ     FPL         FORMAT PRINT LINE
          EQ     PLOX        RETURN 
  
*         PROCESS *LO=X* OPTION.
  
 PLO7     SA2    XTN         GET TRANSACTION NAME 
          ZR     X2,PLO3     IF *LO=X* WITH NO *TN* 
          SB3    TRDLE1      LENGTH OF TRD ENTRY
          SB5    TRD         START OF TRD 
          SA1    LWTRD       LWA OF TRD 
          SB6    X1+
          RJ     STD         SEARCH TRD 
          NZ     X1,PLO8     IF ENTRY NOT FOUND 
          SX7    A1 
          SX2    B1 
          SA7    PLOH        SAVE FWA OF ENTRY
          RJ     PRH         PRINT TRANSACTION UNIT REPORT HEADER 
          SX6    B1 
          SA1    PLOH 
          SA1    X1          FWA OF TRD ENTRY 
          SA6    FPLC        FORMAT TRD 
          RJ     FPL         FORMAT PRINT LINE
          EQ     PLOX        RETURN 
  
 PLO8     SA1    XTN         ENTRY NOT FOUND
          SB2    1RX
          SB5    PLOG        ERROR MESSAGE
          RJ     SNM         SET NAME IN MESSAGE
          WRITEW O,BLINE,1
          WRITEW O,PLOG,PLOGL 
          SA1    BFEF 
          SX6    X1+1        INCREMENT ERROR FLAG 
          SA6    A1+
          EQ     PLOX        RETURN 
  
 PLOA     DATA   C*                           TASK NAME REPORT* 
          CON    8L 
 PLOAL    EQU    *-PLOA 
 PLOB     DATA   C*  TASK      PRIORITY          FIELD     EXTRA
,        ATTR*
 PLOBL    EQU    *-PLOB 
 PLOC     DATA   C*  NAME      BEG  MAX    QL    LENGTH      FL 
,       DCEORQ* 
          CON    8L 
 PLOCL    EQU    *-PLOC 
 PLOD     DATA   C*                        TRANSACTION NAME REPORT* 
          CON    8L 
 PLODL    EQU    *-PLOD 
 PLOE     DATA   C* TRANSACTION                   TASKS 
,      D.M.*
 PLOEL    EQU    *-PLOE 
 PLOF     DATA   C*   NAME     1ST       2ND       3RD       4TH       5
,TH     DC  RECOVER*
          CON    8L 
 PLOFL    EQU    *-PLOF 
 PLOG     DATA   C* XXXXXXX NOT IN DIRECTORY.*
 PLOGL    EQU    *-PLOG 
 PLOH     CON    0           FWA OF ENTRY 
 PLOI     CON    0           *LO*/*TN* FLAG 
 PNP      SPACE  4,15 
**        PNP - PROCESS NO PARAMETERS.
* 
*         ENTRY  FILE INITIALIZED.
* 
*         EXIT   NEW TASK LIBRARY CREATED OR UPDATED. 
* 
*         USES   A - 1, 2.
*                X - 1, 2, 5. 
* 
*         CALLS  CDR, PCR, PIT, RBF, SDR. 
* 
*         MACROS SKIPEI.
  
  
 PNP      SUBR               ENTRY/EXIT 
          SA1    AT 
          SA2    P
          NZ     X2,PNP1     IF NOT *P=0* 
          RJ     PCR         PROCESS CREATE OPTION
          EQ     PNPX        RETURN 
  
 PNP1     ZR     X1,PNP2     IF ATTACHED IN *MODIFY* MODE 
          RJ     PIT         PURGE INACTIVE TASKS 
          EQ     PNPX        RETURN 
  
 PNP2     SA1    B
          SA2    I
          BX1    X1+X2
          ZR     X1,PNPX     IF NO *I* OR *B* FILE
          SX5    P
          RJ     RBF         READ BINARY FILE 
          RJ     SDR         SORT DIRECTORY 
          RJ     CDR         COPY DIRECTORY 
          EQ     PNPX        RETURN 
 PIT      SPACE  4,15 
**        PIT - PURGE INACTIVE TASKS (*PR* OPTION). 
* 
*         ENTRY  FILE INITIALIZED.
* 
*         EXIT   NEW FILE CREATED FROM *P* AND *B*. 
* 
*         USES   A - 1, 6.
*                X - 1, 5, 6. 
* 
*         CALLS  CDR, RBF, SAT, SAP, SDR. 
  
  
 PIT      SUBR               ENTRY/EXIT 
          SA1    LWTLD       SAVE LWA OF TLD
          BX6    X1 
          SA6    LATLD
          SA1    PN 
          NZ     X1,PIT2     IF *P* AND *N* ARE NOT EQUAL 
          SX5    P           COPY TO *P* FILE 
          RJ     RBF         READ BINARY FILE 
          RJ     SAT         SELECT ALL ACTIVE TASKS
          SX5    P           COPY TO P FILE 
          RJ     SDR         SORT DIRECTORY 
 PIT1     SA1    LATLD       COPY ACTUAL LENGTH OF TLD
          BX6    X1 
          SA6    LWTLD
          SX6    B1 
          SA6    MTRD        FORCE COPY OF TRD IF IT EXISTS 
          RJ     CDR         COPY DIRECTORY 
          EQ     PITX        RETURN 
  
 PIT2     REWIND N
          SX5    N
          RJ     RBF         READ BINARY FILE 
          RJ     SAP         SELECT ACTIVE TASKS FROM *P* FILE
          SX5    N
          RJ     SDR         SORT DIRECTORY 
          EQ     PIT1        COPY DIRECTORY 
 PRH      SPACE  4,20 
**        PRH - PRINT REPORT HEADER.
* 
*         PRINTS THE HEADER FOR EITHER THE TASK NAME REPORT OR
*         THE TRANSACTION UNIT REPORT AND CALLS *ALC* TO ADVANCE
*         THE LINE COUNT. 
* 
*         ENTRY  (X2) = 0, PRINT TASK NAME REPORT HEADER. 
*                       1, PRINT TRANSACTION UNIT REPORT HEADER.
* 
*         EXIT   APPROPRIATE HEADER PRINTED.
* 
*         USES   X - 2. 
* 
*         CALLS  ALC. 
* 
*         MACROS WRITEW.
  
  
 PRH      SUBR               ENTRY/EXIT 
          NZ     X2,PRH1     IF TRANSACTION UNIT HEADER WANTED
          WRITEW O,BLINE,1
          WRITEW O,PLOA,PLOAL 
          WRITEW O,PLOB,PLOBL 
          WRITEW O,PLOC,PLOCL 
          EQ     PRH2        ADVANCE LINE COUNT 
  
 PRH1     WRITEW O,BLINE,1
          WRITEW O,PLOD,PLODL 
          WRITEW O,PLOE,PLOEL 
          WRITEW O,PLOF,PLOFL 
 PRH2     SX2    6
          RJ     ALC         ADVANCE LINE COUNT 
          EQ     PRHX        RETURN 
 PTT      SPACE  4,15 
**        PTT - PROCESS TELL *TAF* OPTION.
* 
*         ENTRY  FILE INITIALIZED.
* 
*         EXIT   FILE *N* UPDATED.
* 
*         USES   A - 1. 
*                X - 1, 5.
* 
*         CALLS  CDR, RBF.
* 
*         MACROS RETURN, SYSTEM.
  
  
 PTT      SUBR               ENTRY/EXIT 
          SX5    P
          RJ     RBF         READ BINARY FILE 
          RJ     CDR         COPY DIRECTORY 
          SA1    DA 
          NZ     X1,PTT1     IF *DA* SPECIFIED
          RETURN X5 
 PTT1     SYSTEM SIC,R,LIBH,LIBI  SEND MESSAGE TO *TAF* 
          EQ     PTTX        RETURN 
 RBF      SPACE  4,30 
**        RBF - READ BINARY FILE. 
* 
*         1. IF END OF BINARY FILE RETURN TO CALLER.
*         2. READ 77 TABLE AND FIRST OF PROGRAM.
*         3. IF END OF BINARY RETURN TO CALLER. 
*         4. IF BINARY TOO SHORT CALL ROUTINE *ERR* AND GO TO STEP 1. 
*         5. IF NOT A *54* TABLE CALL *ERR* AND GO TO STEP 1. 
*         6. IF FWA OF LOAD NOT A DEFAULT LOAD ADRESS,
*            CALL *ERR* AND GO TO STEP 1. 
*         7. SEARCH DIRECTORY, IF NOT A IGNORE TASK GO TO STEP 9. 
*         8. SKIP TO NEXT RECORD AND GO TO STEP  1. 
*         9. COPY BINARY TO NEW FILE AND BUILD A DIRECTORY ENTRY. 
*         10. GO TO STEP 1. 
* 
*         ENTRY  FILE *B* AND *N* INITIATED.
*                (X5) = FILE NAME TO COPY TO. 
* 
*         EXIT   FILE *B* PROCESSED AND TASK LIBRARY DIRECTORY BUILT. 
* 
*         USES   A - 1, 2, 3, 4, 5, 6, 7. 
*                B - 2, 3, 5, 6.
*                X - ALL. 
* 
*         CALLS  ERR, SKR, STD. 
* 
*         MACROS ADDWRD, MESSAGE, READW, RECALL, SEARCH, WRITER,
*                WRITEW.
  
  
 RBF      SUBR               ENTRY/EXIT 
          BX7    X5          SAVE FILE NAME 
          SA7    RBFA 
 RBF1     SA1    EOFF 
          NZ     X1,RBFX     IF END OF BINARY FILE
          SA1    B
          ZR     X1,RBFX     IF NO BINARIES 
          READW  B,HB,HBL    READ 77 TABLE AND FIRST WORDS OF PROGRAM 
          NG     X1,RBFX     IF FINISHED WITH BINARY FILE 
          SX6    B1+
          NZ     X1,RBF19    IF BINARY FILE TOO SHORT 
          SA2    HB+1 
          MX0    42 
          BX7    X0*X2
          MX0    -6 
          SB2    10 
  
*         ZERO FILL TASK NAME.
  
 RBF2     LX7    6
          BX1    -X0*X7 
          SX2    X1-1R
          SB2    B2-B1
          NZ     X2,RBF3     IF NOT BLANK 
          BX7    X0*X7       REMOVE BLANK 
 RBF3     NZ     B2,RBF2     IF NOT AT WORD BOUNDARY
          SA7    TSKNM       TASK NAME LEFT JUSTIFIED 
          SA7    LIBG+1      FOR DISPLAY PURPOSES 
  
*         CHECK INCORRECT BINARYS.
  
          SA5    RBFA        FILE NAME
          RECALL X5 
          SA1    HB+17B 
          MX2    12 
          BX2    X2*X1
          SX6    B1+B1       ERROR FLAG 
          LX2    12 
          SX3    X2-5300B 
          SX4    X2-5100B 
          SX6    X2-5000B 
          SX7    X2-5400B 
          ZR     X3,RBF4     IF *OVERLAY* 
          ZR     X4,RBF4     IF *ABS* 
          ZR     X6,RBF4     IF *ACPM*
          SB2    X1          NUMBER OF ENTRY POINTS 
          SX6    B1+B1       INCORRECT RECORD TYPE
          NZ     X7,RBF19    IF NOT *5400* TABLE
          SX6    3
          NE     B2,B1,RBF19 IF MORE THAN ONE ENTRY POINT 
          BX7    X7-X7
          EQ     RBF5        COPY BINARY RECORD 
  
 RBF4     LX1    -18
          SX3    X1-FWLD
          BX7    X7-X7
          SX6    4           ERROR FLAG 
          NZ     X3,RBF19    IF FWA OF LOAD NOT AT DEFAULT LOAD ADDRESS 
  
*         CHECK IGNORE TASK.
  
 RBF5     SA1    TSKNM       TASK NAME
          SEARCH DRTC,X1     SEARCH DIRECTORY 
          ZR     X2,RBF7     IF TASK NOT IN DIRECTORY 
          SA3    TSKNM       TASK NAME
 RBF6     SA1    A2+B1       SECOND WORD OF DIRECTORY 
          PL     X1,RBF8     IF NO IGNORE 
  
*         IGNORE TASK.
  
          BX7    X3          TASK NAME
          SA7    LIBM+1 
          ADDWRD TDIG,X3     IGNORE TASK
          MESSAGE LIBM,1     * IGNORE TASK.*
          RJ     SKR         SKIP TO NEXT RECORD
          EQ     RBF1        PROCESS NEXT RECORD
  
 RBF7     SA1    TSKNM       TASK NAME
          SEARCH TDCH,X1
          SA3    TSKNM
          EQ     RBF6        CHECK IGNORE TASK
  
*         DISPLAY TASK NAME WHILE COPYING.
  
 RBF8     SA1    X5+6        MASK DISK INDEX
          MX6    30 
          BX7    X6*X1
          SA7    TSKDI
          SX0    HBL
          SA5    RBFA        FILE NAME
          WRITEW X5,HB,X0    WRITE OUT TASK 
          MESSAGE LIBG,1     DISPLAY TASK NAME
  
*         COPY BINARY FILE RECORD TO LIBRARY FILE.
  
          BX5    X1-X1       INITIATE CALL
 RBF9     NZ     X5,RBF12    IF RECORD COPY COMPLETE
          SX5    TBL
          READW  B,TB,TBL    READ IN NEXT BLOCK FROM BINARY FILE
          PL     X1,RBF10    IF NOT EOF 
          SA6    EOFF        SET EOF FLAG 
          EQ     RBF12       PROCESS EOF
  
 RBF10    ZR     X1,RBF11    IF NOT AT EOR
          SX5    X1-TB
 RBF11    SA1    RBFA 
          WRITEW X1,TB,X5    WRITE BLOCK TO LIBRARY FILE
          IX0    X0+X5
          SX5    X5-TBL 
          EQ     RBF9        CONTINUE COPY
  
 RBF12    READ   B           REINITIALIZE READ ON BINARY FILE 
          SA5    RBFA        FILE NAME
          WRITER X5,R        FLUSH BUFFER 
          SX7    X0+177B
          SA1    RECN 
          AX7    6
          SX6    X1+1        RECORD COUNT FOR BINARY FILE 
          LX7    18 
          SA6    A1+
          SA7    TSKFL       TASK FIELD LENGTH
          SA4    TSKNM       TASK NAME
          SA3    HB+17B+10B  GET ENTRY POINT ADDRESS OF TASK
          SX3    X3 
          BX7    X3+X4
          SA7    TSKNE       FIRST WORD FOR TLD 
  
*         CHECK FOR INSERTION OR DELETION.
  
          SA3    CR 
          SA2    TSKNM
          SA1    LWTLD       CURRENT LWA FOR TLD
          SB5    TLD         START OF TLD 
          NZ     X3,RBF13    IF CREATION RUN
          SA1    LWOLD       LWA ADDRESS OF BASE TLD
 RBF13    SX0    X1 
          SB6    X0 
          SB3    TLDLE       TLD ENTRY LENGTH 
          RJ     STD         CHECK IF TASK ALREADY IN DIRECTORY 
          NZ     X1,RBF15    IF TASK NOT IN DIRECTORY 
          SX0    A1 
          ADDWRD RREC,X2     RECORD REPLACED INDICATOR
          EQ     RBF16       BUILD DIRECTORY
  
 RBF15    SB3    A1+
          SA3    FSLT        FREE SPACE LEFT IN TLD 
          SX7    X3-TLDLE    DECREMENT FREE TLD SPACE COUNT 
          SA7    A3 
          BX1    X2 
          SX6    5           ERROR FLAG 
          NG     X7,RBF19    IF DIRECTORY IS FULL 
          ADDWRD IREC,X1     RECORD INSERTED INDICATOR
  
*         INSERT TASK AT END OF DIRECTORY.
  
          SA1    LWTLD
          SX7    X1+TLDLE    ADVANCE LWA ADDRESS
          SA7    A1 
          SX0    X1          PLACE TO INSERT
          SA7    LATLD
  
*         BUILD AND INSERT NEW ENTRY INTO TLD.
  
 RBF16    SA1    TSKNM       TASK NAME
          SEARCH DRTC,X1     CHECK DIRECTIVES TABLE FOR NEW TASK
          NZ     X2,RBF17    IF TASK IN DIRECTORY 
          SA1    TSKNM
          SEARCH TDCH,X1     CHECK TABLE FOR TASK REPLACING DIRECTIVES
          ZR     X2,RBF18    IF NO DIRECTIVES FOR TASK
 RBF17    SA1    A2+1        SECOND WORD OF DIRECTIVE ENTRY 
          SA2    A2+2        THIRD WORD OF DIRECTIVE ENTRY
          MX7    -TLEFN-TLMPN  GET EFL+MP 
          BX7    -X7*X1 
          LX6    X2 
          SA7    LIBA        USE DIRECTIVE ENTRIES FOR TASK DIRECTORY 
          SA6    LIBA+1 
 RBF18    SA1    TSKNE       TASK NAME AND ENTRY POINT
          SA2    TSKDI       LIBRARY FILE RANDOM INDEX FOR TASK 
          BX6    X1 
          SA3    TSKFL       TASK FIELD LENGTH
          SA6    X0          FIRST WORD OF TLD
          BX7    X2+X3
          SA1    LIBA        TASK PRIORITIES
          SA2    A1+B1       THIRD WORD FOR TLD ENTRY 
          BX7    X7+X1
          SA7    X0+1        SECOND WORD OF TLD 
          LX6    X2 
          SA6    X0+2        THIRD WORD OF TLD
  
*         RESET DEFAULT PARAMETERS FOR NEXT TASK. 
  
          SA1    LIBB        RESTORE DEFAULT TASK VALUES
          SA2    A1+B1
          BX7    X1 
          LX6    X2 
          SA7    LIBA        TASK VALUES
          SA6    A7+B1
          EQ     RBF1        PROCESS NEXT TASK
  
*         PROCESS ERROR CASE. 
  
 RBF19    RJ     ERR         PROCESS ERROR BINARY 
          EQ     RBF1        PROCESS NEXT TASK
  
 RBFA     CON    0           TEMPORARY STORAGE FOR FILE NAME
 SAP      SPACE  4,20 
**        SAP - SELECT ACTIVE TASKS FROM *P* FILE.
* 
*         ENTRY  INPUT DIRECTORY BUILD. 
* 
*         EXIT   ACTIVE TASKS WRITTEN ON *N* FILE.
* 
*         USES   A - 1, 2, 3, 5, 6. 
*                X - 0, 1, 2, 3, 4, 5, 6. 
* 
*         MACROS READ, READW, REWIND, SEARCH, WRITER, WRITEW. 
  
  
 SAP      SUBR               ENTRY/EXIT 
          REWIND P,R
          SA5    TLD+1
 SAP1     SA1    A5-B1       TASK NAME
          MX6    42 
          BX4    X6*X1
          SEARCH RREC,X4
          NZ     X2,SAP5     IF RECORD REPLACED 
          SEARCH IREC,X4
          NZ     X2,SAP5     IF RECORD INSERED
          SA1    A5          WORD 2 OF AN ENTRY 
          MX0    30 
          BX3    X0*X1       ISOLATE DISK INDEX 
          SA2    A1+B1       WORD 3 OF TLD
          LX3    30 
          LX2    59-54       LEFT JUSTIFY DELETD FLAG 
          SX4    B1          SET REQUEST BIT
          LX4    29 
          SX6    3RZZZ
          NG     X2,SAP4     IF DELETE TASK 
          BX6    X4+X3       ADD DISK INDEX 
          SA6    P+6         PUT IN FET 
          SA2    P+1
          SX6    X2+
          SA6    A2+B1       FET+2
          SA6    A6+B1       FET+3
          SA2    N+6
          BX6    X0*X2       ISOLATE NEW INDEX
          BX3    -X0*X1      CLEAR OUT OLD ONE
          BX6    X6+X3
          SA6    A5 
          READ   P,R
  
*         COPY ACTIVE TASKS FROM *P* TO *N*.
  
 SAP2     SX5    TBL
          READW  P,TB,X5     READ TASK BINARY FROM SCRATCH
          ZR     X1,SAP3     IF NOT AT EOR
          SX5    X1-TB
 SAP3     WRITEW N,TB,X5     WRITE ON LIBRARY 
          SX5    X5-TBL 
          ZR     X5,SAP2     IF RECORD COPY NOT COMPLETE
          WRITER N,R
          EQ     SAP5        CONTINUE WITH NEXT TASK
  
*         TASK IS DELETED PLACE DUMMY NAME IN TLD.
  
 SAP4     LX6    -18
          SA6    A1-B1       REPLACE TASK NAME
          SA3    LATLD       DECREMENT TASK LENGTH
          SX6    X3-3 
          SA6    A3+
 SAP5     SA5    A5+TLDLE    NEXT ENTRY 
          SA1    LWTLD       END OF DIRECTORY 
          SX2    A5 
          IX2    X1-X2
          PL     X2,SAP1     IF NOT END OF DIRECTORY
          EQ     SAPX        RETURN 
 SAT      SPACE  4,10 
**        SAT - SELECT ACTIVE TASKS.
* 
*         ENTRY  INPUT DIRECTORY BUILD. 
* 
*         EXIT   ACTIVE TASKS WRITTEN ON *P* FILE.
* 
*         USES   A - 1, 2, 5, 6.
*                X - 0, 1, 2, 3, 4, 5, 6. 
* 
*         MACROS READ, READW, RECALL, REWIND, WRITEF, WRITER, WRITEW. 
  
  
 SAT      SUBR               ENTRY/EXIT 
          REWIND P,R
  
*         COPY TASK BINARIES FROM *P* TO SCRATCH. 
  
          REWIND SF 
 SAT1     READ   P,R
          RECALL SF 
 SAT2     SX5    TBL
          READW  P,TB,TBL 
          NG     X1,SAT4     IF EOF 
          ZR     X1,SAT3     IF NOT AT EOR
          SX5    X1-TB
 SAT3     WRITEW SF,TB,X5    WRITE TO SCRATCH FILE
          SX5    X5-TBL 
          ZR     X5,SAT2     IF RECORD COPY NOT COMPLETE
          WRITER SF 
          SA1    EOFF 
          ZR     X1,SAT1     IF NOT AT EOF
 SAT4     WRITEF SF 
          SA1    P
          LX1    59-9 
          PL     X1,SAT1     IF NOT AT EOF
  
*         FLUSH BUFFER. 
  
          WRITEF SF 
          REWIND P,R
          RECALL SF 
          REWIND SF,R 
          SA5    TLD+1
  
*         SELECT ACTIVE TASKS FROM SCRATCH TO *P*.
  
 SAT5     SA1    A5          WORD 2 OF AN ENTRY 
          MX0    30 
          BX3    X0*X1       ISOLATE DISK INDEX 
          SA2    A1+B1       WORD 3 OF TLD
          LX3    30 
          LX2    59-54       LEFT JUSTIFY DELETE FLAG 
          SX4    B1          SET REQUEST BIT
          LX4    29 
          SX6    3RZZZ
          NG     X2,SAT8     IF DELETE TASK 
          BX6    X4+X3       ADD DISK INDEX 
          SA6    SF+6        PUT IN FET 
          SA2    SF+1 
          SX6    X2 
          SA6    A2+B1       FET+2
          SA6    A6+B1       FET+3
          SA2    P+6
          BX6    X0*X2       ISOLATE NEW INDEX
          BX3    -X0*X1      CLEAR OUT OLD ONE
          BX6    X6+X3
          SA6    A5+
          READ   SF,R 
 SAT6     SX5    TBL
          READW  SF,TB,X5    READ TASK BINARY FROM SCRATCH
          ZR     X1,SAT7     IF NOT AT EOR
          SX5    X1-TB
 SAT7     WRITEW P,TB,X5     WRITE ON LIBRARY 
          SX5    X5-TBL 
          ZR     X5,SAT6     IF RECORD COPY NOT COMPLETE
          WRITER P,R
          EQ     SAT9        CONTINUE WITH NEXT TASK
  
*         TASK IS DELETED PLACE DUMMY NAME IN TLD.
  
 SAT8     LX6    -18
          SA6    A1-B1       REPLACE TASK NAME
          SA3    LATLD       DECREMENT TASK LENGTH
          SX6    X3-3 
          SA6    A3+
 SAT9     SA5    A5+TLDLE    NEXT ENTRY 
          SA1    LWTLD       END OF DIRECTORY 
          SX2    A5 
          IX2    X1-X2
          PL     X2,SAT5     IF NOT END OF DIRECTORY
          EQ     SATX        RETURN 
 SDR      SPACE  4,15 
**        SDR - SORT TASK LIBRARY DIRECTORY.
* 
*         ENTRY  (TLD) = FWA OF TABLE.
*                (LWTLD) = LWA OF TABLE.
* 
*         EXIT   TASK DIRECTORY SORTED. 
* 
*         USES   A - 1. 
*                B - 2, 3, 6. 
*                X - 0, 1, 2. 
* 
*         CALL   SSR. 
  
  
 SDR      SUBR               ENTRY/EXIT 
          SB2    TLDLE       LENGTH PER ENTRY 
          SA1    LWTLD       LWA OF TABLE 
          SX2    TLD         FWA OF TABLE 
          SB3    SDRA        FWA OF TEMPORARY BUFFER
          IX1    X1-X2       LENGTH OF TABLE
          SB6    X2+
          MX0    42          MASK TASK NAME 
          RJ     SSR         SHELL SORT RECORD
          EQ     SDRX        RETURN 
  
 SDRA     BSS    TLDLE       TEMPORARY BUFFER FOR TLD 
 SEH      SPACE  4,15 
**        SEH - SET ERROR HEADING.
* 
* 
*         PLACE AN ERROR PAGE HEADING ON THE OUTPUT FILE. 
* 
*         EXIT - ERROR HEADING WRITTEN ON OUTPUT FILE.
* 
*         USES   A - 1, 6.
*                X - 1, 2, 6. 
* 
*         CALLS  ALC. 
* 
*         MACROS WRITEW.
* 
*         NOTE   ONLY THE FIRST CALL WRITES THE ERROR HEADING.
  
  
 SEH      SUBR               ENTRY/EXIT 
 SEHA     BSS    0           MODIFIED BY *SEHB* 
*         EQ     SEHX        RETURN 
          WRITEW O,SEHC,SEHCL 
          SX2    5
          RJ     ALC         ADVANCE LINE COUNT 
          SA1    SEHB        WRITE HEADER ONLY ONCE 
          BX6    X1 
          SA6    SEHA 
 SEHB     EQ     SEHX        RETURN 
  
 SEHC     DATA   C/0     *ERRORS*/
          DATA   C/0         TASK NAME        - ERROR TYPE -/ 
          DATA   C*  *
 SEHCL    EQU    *-SEHC      HEADER LENGTH
 SKR      SPACE  4,15 
**        SKR - SKIP TO NEXT RECORD.
* 
*         ENTRY  RECORD TO BE SKIPPED ON FILE *B*.
* 
*         EXIT   RECORD SKIPPED.
* 
*         USES   A - 1, 6.
*                X - 1, 6.
* 
*         MACROS READ, SKIPEF.
  
  
 SKR      SUBR               ENTRY/EXIT 
          RECALL B
          SA1    B           CHECK EOR
          LX1    59-4 
          NG     X1,SKR1     IF EOR ENCOUNTED 
          SKIPF  B,,R        ADVANCE TO NEXT RECORD 
 SKR1     SA1    X2+B1       SET FIRST = IN = OUT 
          SX6    X1 
          SA6    A1+B1
          SA6    A6+B1
          READ   B           INITIATE READ ON BINARY FILE 
          EQ     SKRX        RETURN 
 SSR      SPACE  4,20 
**        SSR - SHELL SORT RECORD.
* 
*         ENTRY  (B2) = NUMBER OF ELEMENTS PER RECORD.
*                (B3) = FWA OF TEMPORARY BUFFER.
*                       MUST BE .GE. (B2).
*                (B6) = FWA OF FILE.
*                (X1) = LENGTH OF FILE IN CM WORDS. 
*                (X0) = MASK OF KEY IN FIRST WORD OF RECORD.
* 
*         EXIT   FILE SORTED. 
*                (X5) RESTORED. 
* 
*         USES   A - 3, 6, 7. 
*                B - 2, 4, 5, 7.
*                X - 1, 2, 3, 4, 5, 6, 7. 
* 
*         NOTE   *SSR* DOES NOT PRESERVE THE ORDER FOR THE SAME KEY.
*                THIS ROUTINE SHIFTS THE KEY 18 BITS TO THE RIGHT TO
*                PREVENT NEGATIVE VALUES. 
  
  
*         BEGIN NEW PHASE.
  
 SSR7     AX4    1           K = K/2
          BX3    -X4
          IX7    X2*X3       LOCATION OF KTH RECORD 
          SB4    X7 
          SB7    X2          NUMBER OF CM WORDS PER RECORD
          SB2    B6+X7       I = FIRST+K
          NZ     X4,SSR4     IF K .NE. ONE
          SA3    SSRA        RESTORE (X5) 
          BX5    X3 
  
 SSR      SUBR               ENTRY/EXIT 
          SX2    B2          NUMBER OF ELEMENTS IN RECORD 
          MX4    12 
          BX3    X1          TOTAL CM WORDS IN FILE 
          IX3    X3/X2       NUMBER OF RECORD 
          SX2    B2 
          NX6,B4 X3 
          BX6    X5          SAVE (X5)
          AX4    X4,B4
          SX1    B6+X1       LWA OF FILE
          SA6    SSRA 
          BX5    X5-X5
          EQ     SSR7        ENTER SORT LOOP
  
 SSR1     PL     X5,SSR3     IF NO SWAP 
  
*         MOVE RECORD FROM TEMPORARY BUFFER TO J. 
  
          SB7    X2          NUMBER OF CM WORDS TO MOVE 
          SB5    B5+B4
 SSR2     SB7    B7-B1       DECREMENT INDEX
          SA3    B3+B7
          BX6    X3 
          SA6    B5+B7
          NZ     B7,SSR2     IF NOT END OF RECORD 
  
*         MOVE I TOWARD RIGHT.
  
 SSR3     SB2    B2+X2       I = I+1
          SX3    B2+
          IX3    X3-X1
          BX5    X5-X5
          ZR     X3,SSR7     IF END OF FILE 
  
*         SAVE RECORD I IN TEMPORARY BUFFER.
  
          SB7    X2          NUMBER OF CM WORDS TO SAVE 
 SSR4     SB7    B7-B1
          SA3    B2+B7
          BX6    X3 
          SA6    B3+B7
          NZ     B7,SSR4     IF NOT END OF RECORD 
          SB5    B2-B4       J = I-K
          BX7    X0*X3       MASKING KEY OF T(I)
          LX7    42          SHIFT SO NO SIGN BIT 
 SSR5     SA3    B5+         P = T(J) 
          BX6    X0*X3       MASKING KEY OF P 
          LX6    42          SHIFT SO NO SIGN BIT 
          IX6    X7-X6
          PL     X6,SSR1     IF RECORD IN ORDER 
  
*         PUT RECORD J IN PLACE OF I. 
  
          SB7    X2          NUMBER OF CM WORDS TO MOVE 
          SX5    B5+B4
 SSR6     SB7    B7-B1       DECREMENT INDEX
          SA3    B5+B7
          BX6    X3 
          SA6    X5+B7
          NZ     B7,SSR6     IF NOT END OF RECORD 
          MX5    1           SET FLAG INDICATE RECORD HAS BEEN REPLACED 
  
*         MOVE J TOWARD LEFT. 
  
          SB5    B5-B4       J = J-K
          GE     B5,B6,SSR5  IF IN BOUNDS 
          EQ     SSR1        SELECT NEXT RECORD 
  
 SSRA     CON    0           TEMPORARY STORAGE FOR (X5) 
 STD      SPACE  4,20 
**        STD - SEARCH TASK/TRANSACTION DIRECTORY.
* 
*         PERFORM A BINARY SEARCH OF A TASK OR TRANSACTION DIRECTORY
*         FOR THE SPECIFIED TASK OR TRANSACTION NAME. 
* 
*         ENTRY  (X2) = LEFT JUSTIFIED TASK/TRANSACTION NAME. 
*                (B3) = LENGTH OF ENTRY.
*                (B5) = START OF DIRECTORY. 
*                (B6) = END OF DIRECTORY. 
* 
*         EXIT   (A1) = FWA OF ENTRY IF FOUND.
*                (X1) = 0 IF ENTRY FOUND. 
*                (X1) .NE. 0 IF ENTRY NOT IN DIRECTORY. 
* 
*         USES   A - 1, 3, 7. 
*                X - 0, 1, 3, 4, 7. 
*                B - 5, 6, 7. 
* 
*         NOTE   (X0) AND (B7) RESTORED UPON EXIT.
  
  
 STD      SUBR               ENTRY/EXIT 
          SX7    B7 
          SA7    STDB        SAVE (B7)
          BX7    X0 
          SA7    STDC        SAVE (X0)
          BX0    X2 
          LX0    42          SHIFT SO NO SIGN BIT 
          SX7    B6          LWA OF BASE TLD
          SA7    STDA 
          MX7    42          MASK FOR TASKS/TRANSACTIONS
          EQ     STD2        ENTER LOOP 
  
 STD1     SB5    A1+B3       SET NEW LOW LIMIT
 STD2     SX3    B6-B5       FIND MIDDLE
          SX4    B3 
          IX3    X3/X4
          AX3    1
          SX4    B3 
          IX3    X4*X3
          SA1    B5+X3       READ AN ENTRY
          BX4    X7*X1
          LX4    42          SHIFT SO NO SIGN BIT 
          IX1    X4-X0
          ZR     X1,STD6     IF FOUND 
          ZR     X3,STD4     IF END OF BASE DIRECTORY 
          NG     X1,STD1     IF TOO LOW IN TABLE
          SB6    A1+         SET NEW HIGH LIMIT 
          EQ     STD2        FIND NEXT ENTRY
  
*         ENTRIES ADDED ON A NONCREATION RUN ARE PLACED SEQUENTIALLY
*         AT THE END OF THE TLD.
  
 STD4     SA3    STDA        LWA+1 OF BASE TLD
          SB6    B3-TLDLE 
          NZ     B6,STD6     IF TRANSACTION SEARCH
          SB6    X3 
          SB5    B3          LENGTH OF TLD ENTRY
 STD5     SA3    B6 
          SB6    B6+B5
          ZR     X3,STD6     IF END OF TLD
          BX3    X7*X3
          LX3    42          SHIFT SO NO SIGN BIT 
          IX3    X3-X0
          NZ     X3,STD5     IF TASK NAME DID NOT MATCH 
          SA1    A3 
          BX1    X1-X1
  
*         MATCH FOUND.
  
 STD6     SA3    STDB        RESTORE (B7) 
          SB7    X3+
          SA3    STDC        RESTORE (X0) 
          BX0    X3 
          EQ     STDX        RETURN 
  
 STDA     BSS    1           LWA+1 OF BASE TLD
 STDB     BSS    1           (B7) 
 STDC     BSS    1           (X0) 
 STL      SPACE  4,15 
**        STL - SET TITLE LINE FOR OUTPUT PAGE. 
* 
*         STL WRITES THE TITLE LINE ONTO THE OUTPUT FILE, AND ADJUSTS 
*         THE LINE COUNT ACCORDINGLY. 
* 
*         ENTRY - JOBORG = 0 IF INTERACTIVE ORIGIN
* 
*         EXIT - TITLE LINE WRITTEN TO OUTPUT 
* 
*         USES   A - 1, 6, 7. 
*                X - 1, 3, 6, 7.
* 
*         MACROS WRITEW.
  
  
 STL      SUBR
          SX3    STLAL
          SA1    JOBORG 
          NZ     X1,STL1     IF NOT INTERACTIVE ORIGIN
          SA1    BLINE
          BX6    X1 
          SA6    STLAT
          SX3    STLAL-3
 STL1     WRITEW O,STLA,X3
          WRITEC O,BLINE
          SX7    3
          SA7    ALCA        SET LINE COUNT 
          EQ     STLX        RETURN 
  
 STLA     CON    10H1TASK LIBR
          CON    10HARY EDITIN
          CON    10HG PROGRAM.
 STLAB    CON    10H
 STLAD    CON    10H                   DATE 
 STLAT    CON    10H                   TIME 
 STLAP    CON    10H PAGE    1
 BLINE    CON    8L 
          CON    8L 
 STLAL    EQU    *-STLA 
 STN      SPACE  4,20 
**        STN - SEARCH TASK NAMES.
* 
*         DETERMINE IF EACH TASK, DEFINED IN EACH TRANSACTION ENTRY 
*         WITHIN THE DIRECTORY, EXISTS.  IF NOT, THE TRANSACTION NAME 
*         IS ADDED TO A LIST TO BE PRINTED WITH THE NORMAL *LIBTASK*
*         OUTPUT.  IN ADDITION, ANY ENTRY HAVING ITS LOGICALLY- 
*         DELETED-BIT SET, WILL HAVE ITS NAME CHANGED TO ;;;.  THIS 
*         WILL INSURE THAT AFTER THE TRD IS SORTED, THOSE TRANSACTIONS
*         WILL BE PHYSICALLY DELETED FROM THE TRD.
* 
*         ENTRY  (LATRD) = LWA OF TRD.
* 
*         EXIT   (X5) = RESTORED. 
* 
*         USES   A - 1, 2, 5, 6.
*                X - 1, 2, 5, 6.
*                B - 2, 3, 5, 6, 7. 
* 
*         CALLS  STD. 
* 
*         MACROS ADDWRD.
  
  
 STN      SUBR               ENTRY/EXIT 
          BX6    X5 
          SA6    STNC        SAVE (X5)
          SB2    TRD-TRDLE1 
          SB3    TLDLE       LENGTH OF TLD ENTRY
 STN1     SX5    TRDLE1 
          SA1    LATRD       LWA OF TRD 
          SB2    B2+X5
          SB7    X1 
          GE     B2,B7,STN4  IF ALL CHECKED 
          SA2    B2+         NEXT TRANSACTION ENTRY 
          BX6    X2 
          SA6    STNB        SAVE TRANSACTION NAME
          LX2    59-TDDLS 
          PL     X2,STN2     IF NOT LOGICALLY DELETED 
          SA1    STNA 
          BX6    X1 
          SA6    A2          SET NAME TO ;;;
          EQ     STN1        NEXT ENTRY 
  
 STN2     SX5    X5-1 
          ZR     X5,STN1     IF ALL TASKS CHECKED 
          SA2    A2+1        NEXT TASK NAME 
          SA1    LWOLD
          SB5    TLD         FWA OF TLD 
          SB6    X1+         LWA OF TLD 
          ZR     X2,STN1     IF END OF LIST 
          RJ     STD         SEARCH TASK DIRECTORY
          NZ     X1,STN3     IF TASK NOT FOUND
          SA1    A1+TLDLW 
          LX1    59-TLDLS 
          PL     X1,STN2     IF TASK NOT LOGICALLY DELETED
 STN3     SA1    STNB 
          ADDWRD TTNE,X1     ADD TRANSACTION NAME TO LIST 
          EQ     STN1        NEXT ENTRY 
  
 STN4     SA5    STNC        RESTORE (X5) 
          EQ     STNX        RETURN 
  
 STNA     VFD    60/3L;;;    NAME FOR DELETED TRANSACTIONS
 STNB     CON    0           TRANSACTION NAME 
 STNC     CON    0           (X5) 
 STR      SPACE  4,10 
**        STR - SORT TRANSACTION DIRECTORY. 
* 
*         ENTRY  (TRD) = FWA OF TABLE.
*                (LATRD) = LWA OF TABLE.
* 
*         USES   X - 0, 1, 2. 
*                A - 1. 
*                B - 2, 3, 6. 
* 
*         CALLS  SSR. 
  
  
 STR      SUBR               ENTRY/EXIT 
          SB2    TRDLE1      LENGTH PER ENTRY 
          SA1    LATRD       LWA OF TABLE 
          SX2    TRD         FWA OF TABLE 
          SB3    STRA        FWA OF TEMPORARY BUFFER
          IX1    X1-X2       TABLE LENGTH 
          SB6    X2+
          MX0    42          MASK FOR TRANSACTION NAME
          RJ     SSR         SHELL SORT 
          EQ     STRX        RETURN 
  
 STRA     BSSZ   TRDLE1      TEMPORARY BUFFER FOR SORT
 TOV      SPACE  4,10 
**        TOV - TABLE OVERLFOW PROCESSOR. 
* 
*         THIS TAG IS REQUIRED BY THE MANAGED TABLE ROUTINES
*         IN CASE OF TABLE ERRORS.
* 
  
  
 TOV      MESSAGE  TOVA 
          ABORT 
  
 TOVA     DATA   C* TABLE OVERFLOW - TOO MANY TASKS.* 
 MEML     SPACE  4
*         RESERVED SPACE FOR THE MANAGED TABLES.
  
 RRECL    EQU    50          INITIAL ALLOCATION FOR REPLACED RECORDS
 IRECL    EQU    350         INITIAL ALLOCATION FOR INSERTIONS
 LRECL    EQU    200         INITIAL ALLOCATION FOR TASK LIBRARY
 DRTCL    EQU    200         ESTIMATED ALLOCATION FOR DIRECTIVES
 TTINL    EQU    300         INITIAL ALLOCATION FOR INSERTIONS
 TTCNL    EQU    20          INITIAL ALLOCATION FOR CHANGES 
 TTNEL    EQU    20          TRANSACTIONS WITH NONEXISTENT TASKS
  
*         MANAGED TABLES SPACE SIZE.
  
 TABLEN   EQU    RRECL+IRECL+LRECL+DRTCL+TTINL+TTCNL+TTNEL
  
 MEML     BSSZ   TABLEN      SPACE FOR MANAGED TABLES 
          TITLE  COMMON DECKS.
*CALL     COMCARG 
*CALL     COMCCDD 
*CALL     COMCCIO 
*CALL     COMCCOD 
*CALL     COMCCPM 
*CALL     COMCDXB 
*CALL     COMCLFM 
*CALL     COMCMTP 
*CALL     COMCMVE 
*CALL     COMCPFM 
*CALL     COMCRDS 
*CALL     COMCRDW 
*CALL     COMCSFN 
*CALL     COMCSNM 
          QUAL   COMCSST
*CALL     COMCSST 
          QUAL   *
*CALL     COMCSYS 
*CALL     COMCUPC 
*CALL     COMCUSB 
*CALL     COMCWTC 
*CALL     COMCWTS 
*CALL     COMCWTW 
*CALL     COMCZAP 
 TLD      TITLE  TASK AND TRANSACTION DIRECTORIES.
***       TASK LIBRARY DIRECTORY. 
* 
*         DEFAULT VALUES FOR DIRECTORY ARE -
* 
*         BEGINNING PRIORITY = 20B. 
*         MAXIMUM PRIORITY   = 40B. 
*         QUEUE LIMIT       =  3B.
*         TASK IS DISK RESIDENT.
*         TASK CODE IS NONDESTRUCTIVE.
*         TASK IS NOT A SYSTEM TASK.
*         TASK IS ON. 
*         COMMUNICATION BLOCK IS DELIVERED TO THE TASK (UNSOLICITED). 
*         QUEUING IS NOT FORCED FOR ADDITIONAL ACTIVE COPIES. 
          SPACE  4,10 
***       TRANSACTION DIRECTORY.
* 
*         DEFAULT VALUES FOR TRANSACTIONS ARE - 
* 
*         DATA MANAGER USED = NONE. 
*         RECOVERABLE       = NO. 
          SPACE  4,10 
 TSKDL    EQU    TLDLE*TLDMT+1  SIZE OF TASK DIRECTORY
 TRNDL    EQU    TRDLE1*TRDMT+1  SIZE OF TRANSACTION UNIT DIRECTORY 
  
 TLDH     VFD    12/7700B,12/3,36/0 
          VFD    60/0LTLD 
 TLDHD    CON    10H
 TLDHT    CON    10H
 TLD      BSSZ   TSKDL       TASK LIBRARY DIRECTORY 
  
 TRDH     VFD    12/7700B,12/3,36/0 
          VFD    60/0LTRD 
          CON    10H
          CON    10H
 TRD      BSSZ   TRNDL       TRANSACTION UNIT DIRECTORY 
 PRS      TITLE  PRESET AND CRACK COMMAND.
**        PRS - PRESET ROUTINE. 
* 
*         PRS CRACKS THE COMMAND AND SETS UP FOR THE MAIN PROGRAM.
*         ERROR CHECKING IS PERFORMED ON COMMAND PARAMETERS AND 
*         INPUT DIRECTIVES.  IF THE CR OPTION IS PRESENT, PRS CHECKS
*         IF *TAF* IS UP.  IF THE TT OPTION IS PRESENT, THE USERNUM IS
*         SENT TO *TAF* FOR VALIDATION.  THE TASK LIBRARY FILE IS 
*         ATTACHED IN MODIFY MODE IF THE DA OPTION IS NOT SPECIFIED.
*         THE MAIN LOOP IS THEN INITIATED.
*         NOTE   THE FOLLOWING MEMORY IS USED FOR BUFFERS WHEN
*                *PRS* TERMINATES.
  
  
 PRS      SUBR               ENTRY/EXIT 
          SB1    1
          SA1    LWPR 
          LX1    59-18
          PL     X1,PRS0     IF *LIBTASK* NOT LOADED FROM SYSTEM
          SA1    SSJ=+UIDS   RESTORE USER NAME AND USER INDEX 
          BX6    X1 
          SA6    PRSK+2 
          SETPFP PRSK 
 PRS0     GETJO  JOBORG 
          SA1    JOBORG 
          SX6    X1-TXOT
          SA6    A1+
          SB5    ARGA 
          SA1    ACTR        ARGUMENT COUNT OF COMMAND
          SB4    X1 
          SA4    B1+B1       FIRST ARGUMENT 
          RJ     ARG         PROCESS COMMAND ARGUMENTS
          ZR     X1,PRS1     IF NO ARGUMENT ERRORS
          MESSAGE  PRSB      INCORRECT COMMAND
          ABORT 
  
 PRS1     SX7    TLD
          SA7    LWTLD       LAST WORD ADDRESS OF TLD 
          SX6    TSKDL
          SA6    FSLT        FREE SPACE LEFT IN TLD 
          SA7    LATLD
          SA7    LWOLD
          SX7    TRD         PRESET LWA OF TRD
          SA7    LWTRD
          SA7    LATRD
          SX7    TRNDL       PRESET FREE SPACE IN TRD 
          SA7    FSTR 
          DATE   STLAD       DATE 
          CLOCK  STLAT       TIME 
          RJ     STL         SET TITLE PAGE OF OUTPUT 
          SX7    MEML+TABLEN
          SA7    F.TEND 
          SX5    CMP         DISPLAY CODE 
          LX5    48 
          SB7    B0 
          RJ     DXB         CONVERT DEFAULT MAXIMUM PRIORITY 
          SA6    LIBB        SAVE TEMPORARILY 
          SA6    LIBA 
          SX5    CBP         DISPLAY CODE 
          LX5    48 
          RJ     DXB         CONVERT DEFAULT BEGINNING PRIORITY 
          LX6    TLBPS-TLBPN+1
          SA1    LIBB+1 
          BX6    X1+X6
          SA6    LIBB+1      SAVE AS DEFAULT
          SA6    LIBA+1      SAVE AS CURRENT
          SX5    CQL         DISPLAY CODE 
          LX5    48 
          RJ     DXB         CONVERT DEFAULT QUEUE LIMIT
          SA1    LIBB+1 
          BX7    X6+X1
          SA7    A1          SAVE AS DEFAULT
          SA7    LIBA+1      SAVE AS CURRENT
          RJ     ERC         CHECK POSSIBLE ERRORS
          SB4    TLD
          SA1    LWTLD
          SB5    X1+
  
*         GET NAMES OF PROGRAMS ON LIBRARY FILE.
  
 PRS2     EQ     B4,B5,PRS3  IF DONE GATHERING TASK NAMES 
          SA1    B4 
          BX1    X1*X5
          ADDWRD LREC,X1
          SB4    B4+TLDLE 
          EQ     PRS2        GET NEXT TASK NAME 
  
 PRS3     SA1    Z
          ZR     X1,PRS4     IF *Z* ARGUMENT NOT SELECTED 
          SX2    I           SET INPUT FET ADDRESS
          RJ     ZAP         PROCESS *Z* ARGUMENT 
          EQ     PRS5        PROCESS DIRECTIVES 
  
 PRS4     SA1    I
          ZR     X1,PRS7     IF NO INPUT DIRECTIVES 
          READ   I           INPUT FILE 
 PRS5     RJ     INP         PROCESS INPUT FILE 
 PRS7     SA2    CR 
          NZ     X2,PRSX     IF CREATING A NEW LIBRARY
          SKIPEI P,R         SKIP TO END OF INFORMATION 
          SA1    TT 
          ZR     X1,PRSX     IF NOT *TT* OPTION 
          SA1    SSJ=+AACS   CHECK ACCESS WORD BIT *CSTP* 
          LX1    59-9 
          NG     X1,PRS7.1   IF USER VALIDATED TO UPDATE LIBRARY ONLINE 
          MESSAGE  PRSJ      USER NOT VALIDATED FOR ONLINE UPDATE 
          ABORT 
  
*         THE USER NAME OF THIS JOB IS SENT TO *TAF* FOR VALIDATION 
*         PURPOSES. 
  
 PRS7.1   USERNUM  PRSA      GET USER NAME
          SA1    PRSA 
          MX6    42 
          BX6    X6*X1       SET INTO *TAF* TRANSMISSION WORD 
          SA6    LIBI+1 
          NZ     X6,PRS8     IF USER NAME NONZERO 
          MESSAGE  PRSF      * USER NAME REQUIRED FOR *TT* OPTION.* 
          ABORT 
  
 PRS8     MX0    42 
          SA1    P           SET TASK LIBRARY NAME INTO *SIC* BLOCK 
          BX6    X0*X1
          SA6    A6+B1
          EQ     PRSX        RETURN 
  
*         COMMAND ARGUMENT TABLES.
  
 ARGA     BSS    0
 B        ARG    ARGB,B 
 L        ARG    O,O
 P        ARG    ARGB+1,P 
 CR       ARG    -ARGB-2,CR 
 I        ARG    ARGB+3,I 
 TT       ARG    -ARGB-4,TT 
 PR       ARG    -ARGB-5,PR 
 N        ARG    ARGB+6,SF
 DA       ARG    -ARGB-7,DA 
 Z        ARG    -ARGB-8,Z
 LO       ARG    ARGB+9,LO
 TN       ARG    ARGB+10,XTN
          ARG 
  
  
 ARGB     CON    0LLGO+3
          CON    0LTASKLIB+3
          CON    1
          CON    0LCOMPILE+3
          CON    1
          CON    1
          CON    0LTASKLIB+3
          CON    1
          CON    1
          CON    0LA
          CON    0
  
 PRSA     CON    0           USER NAME
 PRSB     DATA   C* LIBTASK COMMAND ARGUMENT ERRORS.* 
 PRSC     DATA   C* TASK LIBRARY DIRECTORY TOO LONG.* 
 PRSD     DATA   C* TASK LIBRARY DIRECTORY EMPTY.*
 PRSE     DATA   C* TASK LIBRARY DIRECTORY ERROR.*
 PRSF     DATA   C* TT OPTION REQUIRES USER NAME.*
 PRSG     DATA   C* TRANSACTION DIRECTORY EMPTY.* 
 PRSH     DATA   C* TRANSACTION DIRECTORY TOO LONG.*
 PRSI     DATA   C* TRANSACTION DIRECTORY ERROR.* 
 PRSJ     DATA   C* USER NOT VALIDATED FOR ONLINE LIBRARY UPDATES.* 
  
*         *SETPFP* PARAMETER BLOCK. 
  
 PRSK     VFD    56/0,4/3 
          BSSZ   2
 ATP      SPACE  4,15 
**        ATP - ATTACH LIBRARY FILE.
* 
*         RETURN THE LIBRARY FILE, READ THE REAL-TIME CLOCK, AND
*         TRY TO ATTACH THE FILE IN *MODIFY* MODE.
* 
*         ENTRY  (X5) = FET ADDRESS.
* 
*         EXIT   FILE ATTACHED. 
* 
*         USES   A - 1, 3, 7. 
*                X - 1, 3, 4, 7.
* 
*         CALLS  ATT. 
* 
*         MACROS ATTACH, RECALL, RETURN, RTIME. 
  
  
 ATP      SUBR               ENTRY/EXIT 
          RETURN X5,R        RETURN FILE IF PRESENT 
          RTIME  ATTA        READ CLOCK 
          RECALL X5 
          SA3    X5+10
          MX4    -18
          BX3    X4*X3
          SX4    ARGB        PHONY ADDRESS FOR ERROR MESSAGES 
          BX7    X3+X4
          SA7    A3          SUPPRESS ERROR MESSAGES FROM *PFM* 
 ATP1     ATTACH X5,,,,W,,,,NF  ATTACH IN *WRITE* MODE FIRST
          SX7    B1 
          SA7    AT          INDICATE ATTACHED IN *WRITE* MODE
          RJ     ATT
          ZR     X2,ATPX     IF ATTACH SUCCESSFUL 
          SA1    ERCJ 
          NZ     X1,ATP1     IF MUST ATTACH IN *WRITE* MODE 
 ATP2     ATTACH X5,,,,M,,,,NF  ATTACH IN *MODIFY* MODE 
          BX7    X7-X7
          SA7    AT          INDICATE ATTACHED IN *MODIFY* MODE 
          RJ     ATT         CHECK ATTACH STATUS
          ZR     X2,ATP      IF ATTACH SUCCESSFUL 
          EQ     ATP2        TRY AGAIN
  
 ATT      SPACE  4,20 
**        ATT - ATTACH CHECKING PROCEDURES. 
* 
*         CHECK FOR A SUCCESSFUL OR UNSUCCESSFUL ATTACH.
* 
*         ENTRY  ATTACH REQUEST HAS BEEN ISSUED.
*                (ATTA) = START TIME OF REQUEST.
*                (X5) = FET ADDRESS.
* 
*         EXIT   (X2) = 0 IF ATTACH SUCCESSFUL. 
*                (X2) .NE. 0 IF NEED TO TRY ATTACH AGAIN. 
*                ABORT IF FILE TIMES OUT. 
*                ABORT IF ATTACH ERROR. 
* 
*         USES   A - 1, 2.
*                X - 1, 2, 3, 4, 6, 7.
* 
*         MACROS ABORT, MESSAGE, RECALL, RTIME. 
  
  
 ATT      SUBR               ENTRY/EXIT 
          SA1    X5 
          MX2    -4 
          LX1    -10
          BX2    -X2*X1      STATUS OF ATTACH 
          ZR     X2,ATTX     IF FILE ATTACHED 
          SX3    X2-1 
          NZ     X3,ATT1     IF FILE NOT BUSY 
          RECALL
          RTIME  ATTB        READ CLOCK 
          SA1    ATTA        START TIME 
          SA2    ATTB        CURRENT TIME 
          SX4    ATTC        LOOP TIME
          MX3    -36
          BX1    -X3*X1 
          BX2    -X3*X2 
          IX6    X2-X1       TIME IN LOOP 
          IX7    X6-X4
          NG     X7,ATTX     IF TIME ELAPSED, TRY AGAIN 
          MESSAGE  ATTD,3 
          ABORT              TIMED OUT
  
 ATT1     MESSAGE  ATTE 
          ABORT 
  
 ATTA     BSS    1           START TIME OF REQUEST
 ATTB     BSS    1           CURRENT TIME 
 ATTC     EQU    10000       TIME OUT ON ATTACH ATTEMPT 
 ATTD     DATA   C* LIBRARY FILE TIME OUT.* 
 ATTE     DATA   C* LIBTASK - PFM ERROR DETECTED.*
 ERC      SPACE  4,20 
**        ERC - ERROR CHECKING. 
* 
*         1.  IF TASKLIB STARTS WITH THE LETTER Z , 
*             PRINT OUT ERROR MESSAGE ON DAYFILE AND OUTPUT 
*             FILE THEN ABORT.
*         2.  IF *DA* IS SPECIFIED AND FILE IS NOT A DIRECT ACCESS
*             FILE, ABORT.
*         3.  IF *DA* IS SPECIFIED GO TO STEP 5.
*         4.  ATTACH FILES SPECIFIED BY *N* AND *P* PARAMETERS, 
*             IF ATTACH FAILS ABORT.
*         5.  IF INCORRECT COMBINATION OF COMMAND PARAMETERS, 
*             PRINT OUT ERROR MESSAGE ON DAYFILE AND OUTPUT THEN ABORT. 
*         6.  RETURN TO CALLER. 
* 
*         ENTRY  COMMAND PARAMETERS UNPACKED. 
* 
*         EXIT   IF ERROR ON COMMAND PARAMETERS ABORT.
*                (P) = 0 IF *CR* SPECIFIED. 
* 
*         USES   A - 1, 2, 3, 5, 6, 7.
*                B - 4, 5.
*                X - ALL. 
* 
*         CALLS  ATP. 
* 
*         MACROS ABORT, MESSAGE, READ, READW, REWIND, SKIPB, SKIPEI,
*                STATUS, WRITER, WRITEW.
  
  
 ERC      SUBR               ENTRY/EXIT 
          SX6    B0+
          SA6    PN          ASSUME *P* AND *N* ARE IDENTICAL 
          SA6    AT          ASSUME FILE NOT ATTACHED BY *TAF*
          SA1    N
          MX0    6
          SX4    1RZ         INCORRECT TASK LIBRARY FILE NAME 
          LX4    -6 
          BX2    X0*X1
          BX7    X2-X4
          SA2    ERCG 
          ZR     X7,ERC1.1   IF *N* STARTS WITH THE LETTER Z
          SX7    B1 
          IX3    X1-X2
          ZR     X3,ERC1     IF *P* AND *N* ARE IDENTICAL 
          SA2    P
          BX0    X0*X2
          BX4    X0-X4
          ZR     X4,ERC1.1   IF *P* STARTS WITH THE LETTER Z
          IX3    X1-X2
          ZR     X3,ERC1     IF *P* AND *N* ARE IDENTICAL 
          SA2    DA 
          SA7    PN          *P* AND *N* ARE NOT IDENTICAL
          NZ     X2,ERC3     IF *DA* SPECIFIED
          SX7    B1 
          SA7    ERCJ        ATTACH *N* FILE IN *WRITE* MODE
          SX5    N
          RJ     ATP         ATTACH *N* FILE
          SA1    P
          ZR     X1,ERC4     IF *P* = 0 
          SX7    B0+
          SX5    P
          SA7    ERCJ 
          RJ     ATP         ATTACH *P* FILE
          EQ     ERC4        CONTINUE PROCESS 
  
*         PROCESS *N* PARAMETER OMITTED.
  
 ERC1     SA1    P
          NZ     X1,ERC2     IF *P* NOT EQUAL TO ZERO 
          MESSAGE  ERCF      CONFLICTING *LIBTASK* OPTION 
          WRITEW O,ERCF,ERCFL 
          ABORT 
  
 ERC1.1   MESSAGE  ERCO 
          WRITEW O,ERCO,ERCOL 
          ABORT 
  
 ERC2     SX5    P
          SA2    DA 
          NZ     X2,ERC3     IF *DA* SPECIFIED
          SA1    CR 
          SA2    PR 
          BX7    X1+X2
          SA7    ERCJ        SAVE ATTACH MODE 
          RJ     ATP         ATTACH P FILE
          EQ     ERC4        CHECK PARAMETERS 
  
*         PROCESS *DA* PARAMETER. 
  
 ERC3     ZR     X3,ERC3.1   IF P AND N ARE IDENTICAL 
          STATUS N,P
          SX2    PMFT        DIRECT ACCESS CODE 
          SA1    N+5         FNT ENTRY
          MX0    -6 
          AX1    6
          BX1    -X0*X1      FILE TYPE
          IX2    X2-X1
          SX6    B0 
          SA6    N+5         RESTORE FET+5
          SA6    A6+B1       RESTORE FET+6
          ZR     X2,ERC3.1   IF DIRECT ACCESS FILE
          SA5    N
          MX0    42 
          BX6    X0*X5
          SA6    LIBK+2 
          MESSAGE  LIBK      * FILE NOT ATTACHED - FILNAME* 
          ABORT 
  
 ERC3.1   SA1    P
          ZR     X1,ERC4     IF P=0 
          STATUS P,P
          SX2    PMFT        DIRECT ACCESS CODE 
          SA1    P+5         FNT ENTRY
          MX0    -6 
          AX1    6
          BX1    -X0*X1      FILE TYPE
          IX2    X2-X1
          SX6    B0 
          SA6    P+5         RESTORE FET+5
          SA6    A6+B1       RESTORE FET+6
          ZR     X2,ERC4     IF DIRECT ACCESS FILE
          SA5    P           *P* FILE NAME
          MX0    42 
          BX6    X0*X5
          SA6    LIBK+2 
          MESSAGE  LIBK      * FILE NOT ATTACHED - FILNAME* 
          ABORT 
  
*         CHECK INCORRECT COMBINATION OF PARAMETERS.
  
 ERC4     SX4    B0+
          SA1    XTN
          ZR     X1,ERC4.1   IF NO *TN* 
          SX4    X4+1 
 ERC4.1   SA1    LO 
          SX2    B0+
          ZR     X1,ERC4.2   IF NO *LO* 
          SX3    1RA
          SX2    2
          LX1    6
          IX3    X1-X3
          ZR     X3,ERC4.2   IF ALL TASKS TO BE REPORTED
          SX3    1RT
          IX2    X2+X2
          IX3    X1-X3
          ZR     X3,ERC4.2   IF REPORT ONLY TASK NAMED
          SX2    6
          SX3    1RX
          IX3    X1-X3
          ZR     X3,ERC4.2   IF REPORT ONY TRANSACTION NAMED
          SA2    ERCN        *LO*, *LO=A*, *LO=T* OR *LO=X* 
          SX4    X2          MESSAGE ADDRESS
          LX2    -18
          SX2    X2+         LENGTH OF MESSAGE
          EQ     ERC8.1      PRINT OUT ERROR MESSAGE
  
 ERC4.2   IX4    X4+X2
          SA2    X4+TERCA    ERROR FLAG 
          SX4    X2          MESSAGE ADDRESS
          ZR     X4,ERC4.3   IF NO ERROR
          LX2    -18
          SX2    X2          LENGTH OF MESSAGE
          EQ     ERC8.1      PRINT OUT ERROR MESSAGE
  
 ERC4.3   SX4    B0+
          SA1    CR 
          ZR     X1,ERC5     IF NOT *CR*
          SX1    B1+
 ERC5     BX4    X4+X1       ADD *CR* FLAG
          SA2    PR 
          ZR     X2,ERC6     IF NOT *PR*
          SX2    2
 ERC6     BX4    X4+X2       ADD *PR* FLAG
          SA1    TT 
          ZR     X1,ERC7     IF NOT *TT*
          SX1    4
 ERC7     SA3    PN 
          SA5    P
          BX4    X4+X1
          BX6    X5          SAVE FILE NAME 
          ZR     X3,ERC8     IF *P* IDENTICAL TO *N*
          SX3    8
          SA5    N
 ERC8     BX4    X4+X3       ADD *PN* FLAG
          SA2    X4+TERC     ERROR FLAG 
          SX4    X2          MESSAGE ADDRESS
          ZR     X4,ERC9     IF NO ERROR
          LX2    -18
          SX2    X2          LENGTH OF MESSAGE
 ERC8.1   WRITEW O,X4,X2     PRINT OUT ERROR MESSAGE
          WRITER O
          LX4    30 
          BX6    X4 
          SA6    ERCA        DAYFILE MESSAGE ADDRESS
          MESSAGE  ERCA 
          ABORT 
  
*         SET UP OLD DIRECTORY FOR PROCESSING.
  
 ERC9     SA1    CR 
          SA2    P
          MX0    42          MASK FILE NAME 
          BX7    X0*X5
          SA7    LIBC+4      DISPLAY FILE NAME
          SA7    LIBD+4 
          BX7    X0*X6
          SA7    LIBE+4 
          NZ     X1,ERCX     IF CREATION RUN
          ZR     X2,ERCX     IF *P* IS EQUAL TO ZERO
          REWIND P
          SKIPEI P,R
          SKIPB  P,2,R       POSITION AT DIRECTORY
          READ   P
          READW  P,TLDH,TSKDL+4  DIRECTORY + HEADER 
          NZ     X1,ERC10    IF DIRECTORY NOT TOO LONG
          MESSAGE  PRSC 
          ABORT              INCORRECT DIRECTORY FORMAT 
  
 ERC10    PL     X1,ERC11    IF DATA ON DIRECTORY 
          MESSAGE  PRSD      DIRECTORY EMPTY
          ABORT 
  
 ERC11    SX7    X1+
          SX2    X1-TLD      NUMBER OF WORDS IN TLD 
          SA7    LWTLD       LWA OF TLD 
          SB4    TLD
          SB5    X7 
          MX5    42 
          SA1    TLDH+1      CHECK FOR NAME 
          MX4    18 
          BX6    -X2
          SX6    X6+TSKDL 
          SA6    FSLT        UNUSED SPACE LEFT IN TLD 
          SA2    ERCI 
          BX4    X4*X1
          MX7    -18
          IX3    X4-X2
          LX1    -18
          BX7    -X7*X1      LWA OF BASE TLD
          SX7    X7+TLD 
          SA7    LWOLD
          ZR     X3,ERC12    IF NAME WAS *TLD*
          MESSAGE  PRSE      * TASK LIBRARY DIRECTORY ERROR.* 
          ABORT              BAD LIBRARY FILE 
  
 ERC12    SA1    TLDH 
          MX0    30 
          BX6    -X0*X1      EXTRACT PRU ADDRESS OF TRD 
          ZR     X6,ERCX     IF NO TRD
          SA6    P+6         STORE IN FET 
          READ   P
          READW  P,TRDH,TRNDL+4  DIRECTORY + HEADER 
          NZ     X1,ERC13    IF DIRECTORY NOT TOO LONG
          MESSAGE  PRSH      DIRECTORY TOO LONG 
          ABORT 
  
 ERC13    PL     X1,ERC14    IF DATA IN DIRECTORY 
          MESSAGE  PRSG      DIRECTORY EMPTY
          ABORT 
  
 ERC14    SX7    X1 
          SX2    X1-TRD      WORDS IN TRD 
          SA7    LWTRD
          SA7    LATRD
          SA1    TRDH+1      CHECK FOR NAME 
          MX4    18 
          BX6    -X2
          SX6    X6+TRNDL 
          SA6    FSTR        UNUSED SPACE LEFT IN TRD 
          SA2    ERCK 
          BX4    X4*X1
          BX4    X4-X2
          SX6    B1+
          SA6    TRDE        FLAG *TRD* EXISTS
          ZR     X4,ERCX     IF NAME WAS *TRD*
          MESSAGE  PRSI      DIRECTORY ERROR
          ABORT 
  
 ERCA     CON    0
 ERCB     DATA   C* CONFLICTING LIBTASK OPTIONS - CR, PR.*
 ERCBL    EQU    *-ERCB 
 ERCC     DATA   C* CONFLICTING LIBTASK OPTIONS - CR, TT.*
 ERCCL    EQU    *-ERCC 
 ERCD     DATA   C* CONFLICTING LIBTASK OPTIONS - PR, TT.*
 ERCDL    EQU    *-ERCD 
 ERCE     DATA   C* INCORRECT PR OR CR WHEN FILE ATTACHED BY TAF.*
 ERCF     DATA   C* CONFLICTING LIBTASK OPTIONS - P=0, -N.* 
 ERCFL    EQU    *-ERCF 
 ERCG     VFD    60/0LSCRATCH+3  DUMMY FILE TO CHECK IF N OMITTED 
 ERCH     DATA   C* CONFLICTING LIBTASK OPTIONS - TT, N.* 
 ERCHL    EQU    *-ERCH 
 ERCI     VFD    60/3LTLD    HEADER WORD FOR TLD
 ERCJ     BSSZ   1           ATTACH FLAG, IF SET ATTACH IN *WRITE* MODE 
 ERCK     VFD    60/0LTRD    HEADER WORD FOR TRD
 ERCL     DATA   C* TN REQUIRES EITHER LO=T OR LO=X.* 
 ERCLL    EQU    *-ERCL 
 ERCM     DATA   C* VALID LO OPTIONS ARE LO, LO=A, LO=T OR LO=X.* 
 ERCML    EQU    *-ERCM 
 ERCN     VFD    30/0,12/ERCML,18/ERCM  *LO*, *LO=A*, *LO=T* OR *LO=X*
 ERCO     DATA   C* TASKLIB MUST NOT START WITH THE LETTER Z.*
 ERCOL    EQU    *-ERCO 
  
 TERC     BSS    0           TRUTH TABLE OF COMMAND PARAMETERS
          VFD    60/0        ADD (B) TO (P) 
          VFD    60/0        CREATE P FROM B
          VFD    60/0        DELETE INACTIVE TASKS IN P 
          VFD    30/0,12/ERCBL,18/ERCB  *CR* AND *PR* AT SAME TIME
          VFD    60/0        TAF IS NOT UP SO *TT* HAS NO EFFECT
          VFD    30/0,12/ERCCL,18/ERCC  *CR* AND *TT* IN COMMAND
          VFD    30/0,12/ERCDL,18/ERCD  *PR* AND *TT* IN COMMAND
          VFD    30/0,12/ERCBL,18/ERCB  *CR* AND *PR* AT SAME TIME
          VFD    60/0,       COPY (P) TO N AND ADD (B)
          VFD    60/0        CREATE N FROM (P) AND (B)
          VFD    60/0        CREATE N FROM (P) AND (B)
          VFD    30/0,12/ERCBL,18/ERCB  *CR* AND *PR* AT SAME TIME
          VFD    30/0,12/ERCHL,18/ERCH  *TT* WITH N SPECIFIED 
          VFD    30/0,12/ERCCL,18/ERCC  *CR* AND *TT* IN COMMAND
          VFD    30/0,12/ERCDL,18/ERCD  *PR* AND *TT* IN COMMAND
          VFD    30/0,12/ERCBL,18/ERCB  *CR* AND *PR* AT SAME TIME
          VFD    30/0,12/ERCCL,18/ERCC  *CR* AND *TT* IN COMMAND
          VFD    30/0,12/ERCDL,18/ERCD  *PR* AND *TT* IN COMMAND
          VFD    30/0,12/ERCCL,18/ERCC  *CR* AND *TT* IN COMMAND
          VFD    30/0,12/ERCDL,18/ERCD  *PR* AND *TT* IN COMMAND
  
*         ERROR MESSAGE TABLE FOR *LO* AND *TN* PARAMETERS. 
 TERCA    BSS    0           TRUTH TABLE OF *LO* AND *TN* PARAMETERS
          CON    0           NEITHER OPTION 
          VFD    30/0,12/ERCLL,18/ERCL  *TN* REQUIRES *LO*=T OR *LO*=X
          CON    0           *LO* WITH DEFAULT
          VFD    30/0,12/ERCLL,18/ERCL  *TN* REQUIRES *LO*=T OR *LO*=X
          CON    0           *LO=T* 
          CON    0           *LO*=T AND *TN*
          CON    0           *LO=X* 
          CON    0           *LO*=X AND *TN*
 INP      SPACE  4,25 
**        INP - PROCESS INPUT DIRECTIVES. 
* 
*         PROCESS THE INPUT DIRECTIVES, CHECKING FOR ERRORS AND 
*         SETTING UP MANAGED TABLES WITH THE DIRECTORY VALUES FOR EACH
*         TASK.  ONE ENTRY IS ESTABLISHED FOR EACH DIRECTIVE, THEREFORE 
*         ONLY ONE DIRECTIVE SHOULD BE USED FOR ANY TASK.  SEVERAL
*         PARAMETERS MAY BE INCLUDED IN ONE DIRECTIVE HOWEVER.
* 
*         ENTRY  (JOBORG) = 0 IF INTERACTIVE INPUT. 
* 
*         EXIT   INPUT DIRECTIVES PROCESSED.
* 
*         USES   A - ALL. 
*                X - ALL. 
*                B - 2, 3, 4, 5, 6. 
* 
*         CALLS  ALC, ARG, DXB, ERR, SFN, STD, UPC. 
* 
*         MACROS ABORT, ADDWRD, MESSAGE, READS, WRITEC, WRITER, 
*                WRITES, WRITEW.
  
  
 INP      SUBR               ENTRY/EXIT 
          SA1    O+1         OUTPUT FET 
          SX2    B1 
          LX2    36-0        POSITION FLUSH BIT 
          BX6    X2+X1
          SA6    A1          SET FLUSH BIT
          SA1    JOBORG 
          ZR     X1,INP2     IF INTERACTIVE INPUT 
          WRITEW O,INPG,INPGL 
          SX2    2
          RJ     ALC         ADVANCE LINE COUNT 
          EQ     INP2        BYPASS FIRST WRITE 
  
 INP1     SA1    JOBORG 
          ZR     X1,INP2     IF INTERACTIVE INPUT 
          WRITEW O,INPK,1 
          WRITES O,INPA,INPAL  ECHO PRINT LINE TO OUTPUT FILE 
          SX2    B1+
          RJ     ALC         ADVANCE LINE COUNT 
 INP2     READS  I,INPA,INPAL  READ A DIRECTIVE CARD
          NZ     X1,INP20    IF EOR/EOF ENCOUNTERED ON FILE 
          SA1    INPI 
          SX7    X1+B1       ADVANCE NUMBER OF DIRECTIVES PROCESSED 
          SA7    A1 
          SA1    INPA        FIRST CHARACTER
          SB2    7           MAXIMUM TASK NAME CHARACTER LENGTH 
          SB6    A1+B1       START OF BUFFER
          BX6    X6-X6
          SB7    INPA+INPAL  END OF BUFFER
          SX7    X1-1R* 
          SB5    60 
          SX0    55B         HOLLERITH BLANK
          SX5    45B         FIRST NON ALPHANUMERIC CHARACTER 
          ZR     X7,INP3     IF FIRST CHARACTER * 
          SX7    X1-1R/ 
          NZ     X7,INP19    IF FIRST CHARACTER NOT / 
          SX7    B1 
          SA7    INPQ        FLAG TRANSACTION DIRECTIVE 
 INP3     EQ     B6,B7,INP19 IF END OF COMMAND
          SA1    B6 
          SB6    B6+B1
          BX2    X1-X0
          IX3    X1-X5
          ZR     X2,INP4     IF END OF TASK NAME
          SX2    X0+B1
          BX2    X1-X2
          ZR     X2,INP4     IF COMMA LEGAL SEPARATOR 
          PL     X3,INP19    IF INCORRECT CHARACTER 
          LX6    6
          BX6    X6+X1       ACCUMULATE CHARACTERS
          SB5    B5-6 
          SB2    B2-B1
          LT     B2,INP19    IF .GT. 7 CHARACTERS IN NAME 
          EQ     INP3        CHECK NEXT CHARACTER 
  
 INP4     ZR     X6,INP19    IF NO TASK NAME
          LX2    X6,B5
          SX5    B5          SAVE (B5)
          SX6    B6          SAVE (B6)
          SA1    LWOLD       LWA OF BASE TLD
          SB6    X1 
          SB5    TLD         START OF TLD 
          SB3    TLDLE       TLD ENTRY LENGTH 
          SA3    INPQ 
          ZR     X3,INP4.1   IF TASK DIRECTIVE
          SA1    LATRD       LWA OF TRD 
          SB6    X1 
          SB5    TRD
          SB3    TRDLE1      TRD ENTRY LENGTH 
          BX7    X2 
          SA7    INPT        SAVE TRANSACTION NAME
 INP4.1   RJ     STD         CHECK IF IN DIRECTORY
          SB5    X5          RESTORE (B5) 
          SB6    X6          RESTORE (B6) 
          SX0    55B
          SB7    INPA+INPAL  RESTORE (B7) 
          ZR     X1,INP5     IF TASK/TRANSACTION FOUND
          SA1    INPQ 
          NZ     X1,INP6     IF TRANSACTION DIRECTIVE 
          ADDWRD DRTC,X2     ADD TASK NAME TO DIRECTIVE LIST
          BX7    X7-X7
          SA7    INPN        CLEAR FLAG TO INDICATE NEW DIRECTIVE 
          EQ     INP6        PROCESS DIRECTIVES 
  
 INP5     SX7    A1          ADDRESS OF TASK IN DIRECTORY 
          SA7    INPN 
          SA1    INPQ 
          NZ     X1,INP6     IF TRANSACTION DIRECTIVE 
          ADDWRD TDCH,X2     DIRECTIVE CHANGED TABLE
 INP6     EQ     B6,B7,INP19 IF NO DIRECTIVES ON COMMAND
          SA1    B6 
          SB6    B6+B1
          BX2    X1-X0
          ZR     X2,INP6     IF SKIP ALL BLANKS 
          SX5    B6-B1       FIRST NON BLANK CHARACTER AFTER TASK NAME
          SA1    INPC+1      FIRST
          SX7    X1 
          SA7    A1+B1       REWIND FET 
          SX6    X7+8 
          SA7    A7+B1       OUT
          SA6    A7+B1       LIMIT
          SB7    B7-B6
          WRITES INPC,X5,B7  PUT BACK INTO WORD FORMAT
          BX6    X6-X6       ADD LINE TERMINATOR
          SB4    60 
          SB7    B1+B1       UNPACK INTO LOW CORE 
          SA6    B3 
          SA1    B3-B1       LAST CM WORD OF DIRECTIVE
          SX7    1R.
          SB6    6
          MX0    6
          LX7    -6 
 INP7     BX3    X0*X1       MASK LEFT MOST CHARACTER 
          IX2    X7-X3
          ZR     X2,INP9     IF TERMINATOR
          ZR     X3,INP8     IF END OF LINE 
          LX1    X1,B6       LEFT SHIFT ONE CHARACTER 
          SB4    B4-B6
          NZ     B4,INP7     IF NOT AT WORD BOUNDARY
          SA1    A1+B1       NEXT WORD
          SB4    60 
          EQ     INP7        TRY AGAIN
  
 INP8     BX7    X7+X1       ADD TERMINATOR 
          LX7    X7,B4
          SA7    A1+
 INP9     SA5    INPCD       FIRST WORD OF DIRECTIVES (DUMMY) 
          RJ     UPC         UNPACK DIRECTIVES
          SB6    B6+B1
          ZR     X7,INP10    IF END OF LINE 
          SB6    B6-B1
          NZ     X6,INP19    IF ERROR IN DIRECTIVE FORMAT 
 INP10    SB4    B6-B1       ADJUST ARGUMENT COUNT
          SA4    B7+B1       FIRST ARGUMENT ADDRESS 
          SX7    B4 
          SA7    INPR        SAVE ARGUMENT COUNT
          SA1    INPQ 
          SB5    INPE        ARGUMENT TABLE 
          ZR     X1,INP10.1  IF TASK DIRECTIVE
          SB5    INPO        ARGUMENT TABLE 
 INP10.1  RJ     ARG         PROCESS ARGUMENTS
          NZ     X1,INP19    IF ERROR IN DIRECTIVE ARGUMENTS
          SA1    INPQ 
          NZ     X1,INP22    IF TRANSACTION DIRECTIVE 
  
*         PROCESS DIRECTORY ARGUMENTS.
  
          SA1    IG 
          SA2    INPN 
          ZR     X1,INP12    IF NOT IGNORE
          NZ     X2,INP11    IF TASK IN DIRECTORY 
          MX2    1
          ADDWRD DRTC,X2
          BX2    X2-X2
          ADDWRD DRTC,X2
          SB2    B0 
          EQ     INP18       PROCESS NEXT DIRECTIVE 
  
 INP11    MX2    1
          ADDWRD TDCH,X2
          BX2    X2-X2
          ADDWRD TDCH,X2
          SB2    B0 
          EQ     INP18       PROCESS NEXT DIRECTIVE 
  
*         PROCESS OTHER DIRECTIVES. 
  
 INP12    SA5    BP 
          SB7    B0+         SET OCTAL CONVERSION 
          RJ     DXB         CONVERT BEGINNING PRIORITY TO OCTAL
          NZ     X4,INP19    IF ERROR IN CONVERSION 
          SA6    BP          STORE NEW VALUE
          SA5    MP 
          RJ     DXB         CONVERT MAXIMUM PRIORITY TO OCTAL
          NZ     X4,INP19    IF CONVERSION ERROR
          SA6    MP          STORE NEW VALUE
          SA5    QL 
          RJ     DXB         CONVERT QUEUE LIMIT TO OCTAL 
          NZ     X4,INP19    IF CONVERSION ERROR
          SA6    QL          STORE NEW VALUE
          SA5    EF          EXPANDABLE FL
          RJ     DXB         CONVERT TO BINARY
          SX6    X6 
          SX1    MAXEF+1
          IX2    X6-X1
          PL     X2,INP19    IF MAXIMUM EXPANDABLE FL EXCEEDED
          NG     X6,INP19    IF NEGATIVE VALUE
          NZ     X4,INP19    IF CONVERSION ERROR
          SA6    EF 
  
*         CHECK FOR PARAMETER VALUES OUT OF RANGE.
  
          SA1    BP          BEGINNING PRIORITY 
          SX2    X1-MXBP-1
          SA3    MP          MAXIMUM PRIORITY 
          SX4    X1-MNBP
          PL     X2,INP19    IF BEGINNING PRIORITY IS TOO HIGH
          NG     X4,INP19    IF BEGINNING PRIORITY IS TOO LOW 
          SX2    X3-MNMP
          SX3    X3-MXMP-1
          NG     X2,INP19    IF MAXIMUM PRIORITY IS TOO LOW 
          SA1    QL          QUEUE LIMIT
          PL     X3,INP19    IF MAXIMUM PRIORITY IS TOO HIGH
          SX2    X1-MAXQL-1 
          SX4    X1-MINQL 
          PL     X2,INP19    IF QUEUE LIMIT TOO HIGH
          NG     X4,INP19    IF QUEUE LIMIT TOO LOW 
          SA1    C
          SA2    TT 
          ZR     X2,INP12.1  IF *TT* OPTION NOT SPECIFIED 
          NZ     X1,INP19    IF CORE RESIDENT UPDATE ATTEMPT WITH *TT*
          SA1    INPN 
          ZR     X1,INP13    IF TASK NOT IN DIRECTORY 
          SA1    X1+2        THIRD WORD OF TASK DIRECTORY ENTRY 
          LX1    59-57
          NG     X1,INP19    IF OLD COPY OF TASK IS CORE RESIDENT 
          EQ     INP13       PROCESS NEXT TASK CHARACTERISTIC 
  
 INP12.1  ZR     X1,INP13    IF NOT A CORE RESIDENT TASK
          SA1    CRES 
          SX7    X1+1        BUMP CORE RESIDENT TASK COUNT
          SA7    A1+
 INP13    SA1    D
          NZ     X1,INP14    IF NOT A DESTRUCTIVE TASK
          SX7    1
          SA7    QL          FORCE DESTRUCTIVE TASK QUEUE LIMIT TO 1
 INP14    SA1    MP          MAXIMUM PRIORITY 
          SA2    EF          EXPANDABLE FIELD LENGTH
          SX2    X2+77B      ROUND TO MULTIPLE OF 100B
          AX2    6
          LX2    TLEFS-TLEFN+1
          BX2    X2+X1
          SA1    INPN 
          NZ     X1,INP15    IF TASK IN DIRECTORY 
          ADDWRD DRTC,X2
          EQ     INP16       PROCESS NEW TASK 
  
 INP15    SA1    X1+B1       SECOND WORD OF TLD 
          MX7    TLDAN+TLFLN
          BX7    X7*X1       DA AND FL
          BX7    X7+X2       ADD *EF* AND *MP*
          SA7    A1 
          ADDWRD TDCH,X7     SECOND WORD OF DIRECTORY 
 INP16    SA1    S           SYSTEM TASK
          SA2    D           DESTRUCTIVE CODE 
          SA3    C           CORE RESIDENCE 
          SA4    QL 
          BX1    X1+X2
          SA2    OO          ON/OFF 
          BX3    X2+X3
          BX1    X1+X3
          SA2    E           EXTENDED MEMORY RESIDENCE
          BX1    X2+X1
          SA3    DL          DELETE TASK
          BX1    X1+X3
          LX1    TLSTS-5
          BX1    X1+X4
          SA2    SC 
          BX1    X2+X1
          SA3    R           REDUCE FL FLAG 
          SA2    BP 
          LX3    TLRES-TLREN+1
          LX2    TLBPS-TLBPN+1
          BX1    X1+X3
          BX1    X2+X1
          SA2    Q           QUEUING CONTROL INDICATOR
          BX1    X1+X2
          SB2    B0 
          SA2    INPN 
          NZ     X2,INP17    IF TASK ALREADY IN DIRECTORY 
          ADDWRD DRTC,X1     ADD TO DIRECTIVE TABLE 
          EQ     INP18       PROCESS NEXT DIRECTIVE 
  
 INP17    BX7    X1 
          SA7    X2+2        STORE IN EXISTING DIRECTORY ENTRY
          ADDWRD TDCH,X7     THIRD WORD OF DIRECTORY
          SA2    INPN 
          SA2    X2 
          ADDWRD TDRC,X2     DIRECTIVES CHANGED LIST
  
*         RESET DEFAULT VALUES FOR NEXT TASK. 
  
 INP18    SX7    CBP         RESET BEGINNING PRIORITY 
          SX6    CMP
          LX7    48 
          SA7    BP          BEGINNING TASK PRIORITY
          LX6    48 
          SA6    MP          MAXIMUM TASK PRIORITY
          SX7    CQL
          LX7    48 
          SA7    QL          QUEUE LIMIT
          SX6    CC*10B 
          SA6    C           CORE RESIDENCE BIT 
          SX7    CD*20B 
          SA7    D           REUSABLE CODE BIT
          SX7    CS*40B 
          SA7    S           SYSTEM TASK BIT
          SX6    CO*02B 
          SA6    OO          TASK ON/OFF BIT
          SX7    CE*04B 
          SX6    CDL*01B     DELETE TASK
          SA6    DL 
          SA7    E           EXTENDED MEMORY RESIDENCE BIT
          SX7    B0+
          SA7    SC 
          SX6    CRE         DEFAULT REDUCE FL FLAG 
          SX7    EFL         EXPANDABLE FIELD LENGTH
          SA6    R
          SA7    EF 
          SX6    CQ*MLQU     QUEUING CONTROL BIT
          SA6    Q
          BX7    X7-X7
          SB7    TDL-TSK1 
          SA7    TSK1 
 INP18.1  SA7    A7+B1       ZERO OUT DEFAULT VALUES
          SB7    B7-B1
          NE     B7,INP18.1  IF MORE TO GO
          SA7    INPN        TRD ADDRESS
          SA7    INPT        TRANSACTION NAME 
          SA7    INPQ        TRANSACTION DIRECTIVE FLAG 
          NE     B2,INP2     IF BAD DIRECTIVE 
          EQ     INP1        READ NEXT DIRECTIVE
  
*         WRITE ERROR MESSAGES. 
  
 INP19    WRITEW O,INPJ,1    WRITE ERROR MESSAGE
          WRITES O,INPA,INPAL 
          WRITEW O,INPH,INPHL  INCORRECT DIRECTIVE
          WRITEW O,BLINE,1
          SX2    3
          RJ     ALC         ADVANCE LINE COUNT 
          SA1    INPL 
          SX7    X1+B1       BUMP ERROR COUNT 
          SA7    A1 
          SB2    B1+         FLAG BAD 
          SA1    JOBORG 
          NZ     X1,INP18    IF NOT INTERACTIVE 
          WRITER O           FLUSH BUFFER 
          EQ     INP18       RESET DEFAULT VALUES 
  
 INP20    SA1    INPI        DIRECTIVE COUNT
          SA2    INPL 
          NZ     X2,INP21    IF ERRORS PRESENT
          ZR     X1,INP20.1  IF NO DIRECTIVES 
          WRITEW O,BLINE,1
          SX2    1
          RJ     ALC         ADVANCE LINE COUNT 
          EQ     INPX        RETURN 
  
 INP20.1  SA1    JOBORG 
          ZR     X1,INPX     IF INTERACTIVE INPUT 
  
*         WRITE *NONE* ON FILE. 
  
          WRITEW O,LRLA,LRLAL 
          SX2    B1+B1
          RJ     ALC         ADVANCE LINE COUNT 
          EQ     INPX        RETURN 
  
 INP21    WRITEW O,INPM,INPML  * INPUT DIRECTIVE ERRORS.* 
          WRITER O
          MESSAGE  INPB      * DIRECTIVE ERRORS.* 
          ABORT 
  
*         PROCESS TRANSACTION DIRECTIVE.
  
 INP22    SA1    TDL
          SA2    INPN        TRANSACTION ENTRY ADDRESS
          SA4    INPT        TRANSACTION UNIT NAME
          SB2    B1          PRESET ERROR 
          ZR     X1,INP24    IF NOT *DL*
          SA1    INPR 
          SX1    X1-1 
          NZ     X1,INP31    IF MORE PARAMETERS 
          NZ     X2,INP23    IF TRANSACTION NAME EXISTS 
          BX1    X4 
          RJ     SFN         SPACE FILL NAME
          LX6    42 
          SA6    INPS+4      STORE IN MESSAGE 
          SX2    B1 
          RJ     ALC         ADVANCE LINE COUNT 
          WRITEC O,INPS      ISSUE WARNING
          SB2    B0          SET NO ERROR 
          EQ     INP31       NEXT DIRECTIVE 
  
 INP23    SA1    X2 
          SX2    B1 
          LX2    TDDLS       LOGICALLY DELETED BIT
          BX6    X1+X2
          SA6    A1 
          SA1    LWTRD
          SX6    X1-TRDLE1   DECREASE DIRECTORY LENGTH
          SA6    A1 
          ADDWRD TTCN,X4     TRANSACTION CHANGED
          SB2    B0          SET NO ERROR 
          EQ     INP31       NEXT DIRECTIVE 
  
 INP24    NZ     X2,INP25    IF TRANSACTION NAME EXISTS 
          SA2    LATRD
          SX6    X2+TRDLE1
          SA0    X2          NEXT FREE WORD IN TRD
          SA6    A2          UPDATE LWA OF TRD
          SA1    LWTRD       UPDATE LWA OF TRD
          SX6    X1+TRDLE1
          SA6    LWTRD
          SA1    FSTR 
          SX7    X1-TRDLE1
          SA7    A1+         FREE SPACE IN TRD
          SX6    6
          PL     X7,INP26    IF TRD NOT FULL
          SA1    LWTRD       DECREMENT LWA OF TRD 
          SX7    X1-TRDLE1
          SA7    LWTRD
          SA1    LATRD       DECREMENT LWA OF TRD BEFORE SORT 
          SX7    X1-TRDLE1
          SA7    LATRD
          RJ     ERR         REPORT TRD FULL CONDITION
          WRITER O           FLUSH BUFFER 
          SA3    JOBORG 
          ZR     X3,INPX     IF INTERACTIVE INPUT 
          EQ     INP21       ABORT
  
 INP25    SA2    INPN        DIRECTORY ENTRY ADDRESS
          SA0    X2+
 INP26    SB2    B1          PRESET ERROR 
          SA1    TSK1 
          ZR     X1,INP31    IF NO TASKS SPECIFIED
          SA2    INPT        TRANSACTION UNIT NAME
          SA3    DM          DATA MANAGER(S) SPECIFIED
          BX5    X5-X5
          ZR     X3,INP28    IF NO DATA MANAGER SPECIFIED 
          SA4    INPU-1 
          MX0    42 
 INP27    SA4    A4+B1       NEXT DATA MANAGER
          ZR     X4,INP31    IF END OF LIST 
          BX6    X0*X4
          BX6    X6-X3
          NZ     X6,INP27    IF NO MATCH
          SX5    X4          DATA MANAGER FLAGS 
 INP28    BX6    X2+X5
          SA5    RC          RECOVERABLE STATUS 
          BX6    X6+X5
          SA6    A0          STORE IN DIRECTORY 
          SB6    5           NUMBER OF TASKS TO CHECK FOR 
          SB2    B0          SET NO ERROR 
 INP29    BX6    X1 
          SA6    A6+B1       STORE TASK NAMES 
          SB6    B6-B1
          SA1    A1+B1       NEXT TASK NAME 
          EQ     B6,INP31    IF 5 TASK NAMES SPECIFIED
          NZ     X1,INP29    IF MORE TASKS IN LIST
          SB2    B1          PRESET ERROR 
          BX6    X6-X6
          SA1    A1-B1
 INP30    SA1    A1+B1
          NZ     X1,INP31    IF MORE TASKS IN LIST
          SA6    A6+B1       ZERO REMAINING WORDS 
          SB6    B6-B1
          NE     B6,INP30    IF MORE TO GO
          SB2    B0          SET NO ERROR 
          SA4    INPT 
          SA2    INPN        DIRECTORY ENTRY ADDRESS
          NZ     X2,INP30.1  IF TRANSACTION NAME ALREADY EXISTS 
          ADDWRD TTIN,X4     TRANSACTION ADDED
          EQ     INP31       NEXT DIRECTIVE 
  
 INP30.1  ADDWRD TTCN,X4     TRANSACTION CHANGED
 INP31    NE     B2,INP19    IF DIRECTIVE ERROR 
          SX6    B1 
          SA6    MTRD        FLAG TRD MODIFIED
          SA6    TRDE        FLAG TRD EXISTS
          EQ     INP18       PROCESS NEXT DIRECTIVE 
  
 INPAL    EQU    150
 INPA     BSS    INPAL       STRING BUFFER FOR DIRECTIVE INPUT
 INPB     DATA   C* DIRECTIVE ERRORS.*
 INPC     FILEC  INPD,INPAL+1  BUFFER FOR *WTS* 
 INPCD    VFD    60/10LLIB,       CONTROL WORD FOR *UPC*
 INPD     BSSZ   INPAL+1     MADE LARGE TO STOP A *CIO* WRITE BY *WTS*
  
*         DATA AREA FOR PROCESSING TASK DIRECTORY COMMANDS. 
  
 INPE     BSS    0
 BP       ARG    INPF,BP
 MP       ARG    INPF+1,MP
 QL       ARG    INPF+2,QL
 C        ARG    -INPF-3,C
 D        ARG    -INPF-4,D
 S        ARG    -INPF-5,S
 O        ARG    -INPF-6,OO 
 E        ARG    -INPF-7,E
 DL       ARG    -INPF-8,DL 
 IG       ARG    -INPF-9,IG 
 SC       ARG    -INPF-10,SC
 Q        ARG    -INPF-11,Q 
 EF       ARG    INPF+12,EF 
 R        ARG    -INPF-13,R 
          ARG 
  
 INPF     VFD    12/ABP,48/0 ALTERNATE BEGINNING PRIORITY 
          VFD    12/AMP,48/0 ALTERNATE MAXIMUM PRIORITY 
          VFD    12/AQL,48/0 ALTERNATE QUEUE LIMIT
          CON    10B         CORE RESIDENT BIT
          CON    0           NONREUSABLE CODE BIT 
          CON    40B         SYSTEM TASK BIT
          CON    02B         ON/OFF BIT 
          CON    04B         EXTENDED MEMORY RESIDENT BIT 
          CON    01B         DELETE TASK
          CON    1           IGNORE TASK
          CON    1S17        SOLICITED COMMUNICATION BLOCK LOAD FLAG
          CON    MLQU        QUEUING CONTROL BIT
          CON    EFL         EXPANDABLE FIELD LENGTH
          CON    CRE         REDUCE FL
  
 INPG     DATA   C*0LIBTASK DIRECTIVES.     * 
          DATA   C*  *
 INPGL    EQU    *-INPG 
 INPH     DATA   C/  *******  INCORRECT DIRECTIVE./ 
 INPHL    EQU    *-INPH 
 INPI     CON    0
 INPJ     CON    10H  *ERROR* 
 INPK     CON    10H
 INPL     CON    0           DIRECTIVE INPUT ERROR COUNT
 INPM     DATA   C/  ** INPUT DIRECTIVE ERRORS **/
 INPML    EQU    *-INPM 
 INPN     CON    0           ADDRESS OF TASK CHANGING DIRECTIVES FOR
  
*         TABLE OF VALID TRANSACTION DIRECTIVE PARAMETERS.
  
 INPO     BSS    0
 T1       ARG    INPP,TSK1
 T2       ARG    INPP,TSK2
 T3       ARG    INPP,TSK3
 T4       ARG    INPP,TSK4
 T5       ARG    INPP,TSK5
 RC       ARG    -INPP-1,RC 
 DM       ARG    INPP,DM
 DL       ARG    -INPP-1,TDL
          ARG 
  
 INPP     CON    0
          CON    1
  
 INPQ     CON    0           NONZERO INDICATES TRANSACTION DIRECTIVE
 INPR     CON    0           ARGUMENT COUNT 
 INPS     DATA   C* WARNING - TRANSACTION NAME NONEXISTENT   XXXXXXX.*
 INPT     CON    0           TRANSACTION UNIT NAME
  
*         TABLE OF VALID DATA MANAGER PARAMETERS. 
  
 INPU     VFD    12/0LC,48/2       *CRM*
          VFD    12/0LD,48/4       *CDCS* 
          VFD    12/0LCD,48/6      *CRM* + *CDCS* 
          VFD    12/0LDC,48/6      *CRM* + *CDCS* 
          CON    0           TABLE TERMINATOR 
  
          SPACE  4
 ENDP     EQU    *           END OF PRESET CODE 
 BUFFERS  TITLE  FILE BUFFERS.
 TBL      EQU    1001B
 TB       EQU    PRS         WORKING BUFFER FOR TASK BINARY 
  
  
 BBUFL    EQU    1001B
 BBUF     EQU    TB+TBL      BINARY FILE BUFFER 
  
  
 HBL      EQU    102B 
 HB       EQU    BBUF+BBUFL  BUFFER FOR FIRST 66 WORDS OF TASK
  
  
 SBUFL    EQU    1001B
 SBUF     EQU    HB+HBL      SCRATCH FILE BUFFER
  
  
 WBUFL    EQU    14 
 WBUF     EQU    SBUF+SBUFL  OUTPUT FILE WORKING BUFFER 
  
  
 .1       SET    ENDP        END OF PRESET CODE 
          IFGT   WBUF+WBUFL,.1
 .1       SET    WBUF+WBUFL 
          ENDIF 
  
  
 PBUFL    EQU    6002B
 PBUF     EQU    .1          TASK LIBRARY FILE
  
  
 IBUFL    EQU    301B 
 IBUF     EQU    PBUF+PBUFL  INPUT FILE BUFFER
  
  
 OBUFL    EQU    401B 
 OBUF     EQU    IBUF+IBUFL  OUTPUT FILE BUFFER 
  
  
 LASTB    EQU    OBUF+OBUFL 
  
 RFL=     EQU    LASTB+10B
          END    LIBTASK
