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