IDENT TFILES,FWA
ABS
SST
ENTRY ADMIT
ENTRY AMEND
ENTRY AUDIT
ENTRY RESERVE
ENTRY RELEASE
ENTRY TMSDEF
ENTRY ARG=
ENTRY RFL=
ENTRY SDM=
SYSCOM B1
TITLE TFILES - TAPE FILE REQUEST PROCESSOR
*COMMENT TAPE FILE REQUEST PROCESSOR.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
TFILES SPACE 4,10
***** TFILES - TAPE FILE REQUEST PROCESSOR
*
* L.A. GILBERTSON. 82/08/04.
SPACE 4,10
*** TFILES PROCESSES THE FOLLOWING TAPE FILE REQUESTS:
* *ADMIT*, *AMEND*, *AUDIT*, *RELEASE* AND *RESERVE*.
SPACE 4,10
*** COMMAND CALL.
*
* THE *ADMIT* COMMAND GRANTS PERMISSION FOR USERS
* OTHER THAN THE FILE ORIGINATOR (ALTERNATE USERS) TO ACCESS
* AND EMPLOY A PRIVATE FILE. BESIDES SPECIFYING WHAT
* ALTERNATE USER NAMES CAN EMPLOY A PRIVATE FILE, THE *ADMIT*
* COMMAND CAN INDICATE THE WAY IN WHICH EACH ALTERNATE
* USER IS ALLOWED TO EMPLOY THE FILE (A FILE MODE RESTRICTION
* MUST BE PLACED ON EACH ALTERNATE USER).
* IN ADDITION, THE *ADMIT* COMMAND CAN BE SUPPLIED TO
* OVERRIDE THE FILE MODE THAT WAS ESTABLISHED WHEN A SEMI-
* PRIVATE FILE WAS ORIGINALLY RESERVED. FOR EXAMPLE, ASSUME
* THAT THE USER RESERVED A FILE IN THE SEMIPRIVATE FILE
* CATEGORY UNDER WRITE MODE. IF THE FILE ORIGINATOR WANTS
* TO GRANT READ PERMISSION (READ MODE) TO ONE SPECIFIC
* USER (CD4567E), HE OR SHE CAN DO SO BY SUPPLYING THE
* FOLLOWING *ADMIT* COMMAND
*
* ADMIT,TFN,CD4567E=R.
*
* ALL OTHER USERS CONTINUE TO BE CONTROLLED BY THE WRITE MODE
* THAT WAS ESTABLISHED WHEN THE SEMIPRIVATE FILE WAS ORIGINALLY
* SAVED.
*
* THE *AMEND* COMMAND ALLOWS THE ORIGINATOR OF A TAPE FILE
* TO CHANGE SOME OF THE PARAMETERS ASSOCIATED WITH THAT FILE,
* WITHOUT HAVING TO REWRITE THE FILE.
*
* THE *AUDIT* COMMAND ENABLES A USER TO OBTAIN INFORMATION
* ABOUT THE FILES THAT RESIDE IN HIS OR HER TAPE FILE CATALOG.
* IN ADDITION, ALTERNATE USERS CAN REQUEST *AUDIT* INFORMATION
* ABOUT THE SPECIFIC FILES THEY ARE PERMITTED TO ACCESS
* IN ALTERNATE USER CATALOGS.
*
* THE *RELEASE* COMMAND RELEASES ONE OR MORE SPECIFIED TAPE
* FILES FROM THE USERS CATALOG. USERS CAN ONLY RELEASE
* CENTER-OWNED RESERVED TAPES AND TAPES THAT ARE RETAINED
* UNDER THE SAME USER NAME.
*
* THE *RESERVE* COMMAND ENABLES A USER TO RESERVE
* A CENTER-OWNED SCRATCH TAPE UNDER THE NOS TAPE MANAGEMENT
* SYSTEM (TMS). THE NOS FAMILY RETAINS THE TAPE UNDER THE
* USERNAME OF THE USER WHO SUPPLIES THE *RESERVE* COMMAND.
*
* THE *TMSDEF* COMMAND ALLOWS THE USER TO DEFINE THE DEFAULT
* VALUES FOR *TMS* PARAMETERS ON THE *LABEL* AND *REQUEST*
* COMMANDS.
*
* TWO TYPES OF ACCESS ARE AVAILABLE FOR TAPE FILES.
*
* 1. TAPE LOGICAL FILE NAME. TAPE FILE NAMES CAN BE
* 1 TO 17 CHARACTERS IN LENGTH AND MUST BE UNIQUE
* WITHIN A USERS CATALOG. (ANALOGOUS TO PERMANENT
* FILE NAMES.) A SPECIFIC TAPE FILE MAY BE FROM
* 1 TO 60 REELS LONG.
*
* 2. VOLUME SERIAL NUMBER. THIS IS THE EXTERNAL
* CENTER-DEFINED SERIAL NUMBER ASSIGNED TO EACH TAPE
* IN THE TAPE POOL. (ONLY THE FIRST VOLUME SERIAL
* NUMBER IN A MULTI-VOLUME SET IS VALID IF THIS TYPE
* OF ACCESS IS CHOSEN.)
*
* COMMAND FORMATS -
*
* ADMIT,TFN,USERNAM1=M1,...,USERNAMN=MN/,S,NA.
*
* AMEND,NFN1=OFN1,...NFNN=OFNN/PW=PSWD,CT=CT,M=MD,UC=UCW,AC=AC,
* CE,AN,S,NA.
*
* AUDIT,TFN,LO=OPT,UN=USERNAM,L=LFN1,SS=LFN2,S.
* AUDIT,LO=OPT,UN=USERNUM,L=LFN1,SS=LFN2.
*
* RELEASE,TFN1,...TFNN/NA.
*
* RESERVE,LFN1,...,LFNN/SS=LFNX,PW=PSWD,CT=CT,M=MD,UC=UCW,NA.
*
* TMSDEF,TO=TOPT.
*
* WHERE:
*
* AC= INDICATES WHETHER OR NOT ALTERNATE USERS CAN
* OBTAIN *AUDIT* INFORMATION ABOUT THE FILE.
* VALID ENTRIES: Y - (YES)
* N - (NO) DEFAULT.
*
* AN IF SPECIFIED, CHANGES THE SPECIFIED TAPES
* CHARGE/PROJECT NUMBER TO THE CURRENT CHARGE/
* PROJECT NUMBER THE USER IS RUNNING UNDER.
*
* CE CLEAR ERROR OPTION. IF TMS DETECTS AN ERROR
* WHEN A USER TRIES TO ACCESS A FILE, A DIAGNOSTIC
* IS ISSUED. IN ADDITION, *AUDIT* OUTPUT WILL PLACE
* AN ASTERISK IN FRONT OF THE NAME OF EACH ERRON-
* EOUS FILE. USERS SHOULD CONTACT *CYBERNET*
* CUSTOMER SERVICE TO DETERMINE THE EXTENT OF
* DAMAGE ON THE ERRONEOUS FILE. IF THE USER STILL
* WANTS TO EMPLOY THE DAMAGED FILE, HE OR SHE
* SHOULD SUPPLY AN *AMEND* COMMAND WITH THE *CE*
* OPTION AND TMS WILL CLEAR THE ERROR BIT.
* SUBSEQUENTLY, USERS WILL BE ALLOWED TO ACCESS THE
* TAPE FILE.
*
* CT FILE ACCESS CATEGORY. IF CT=CT IS OMITTED WHEN THE FILE
* IS CREATED, THE FILE IS PRIVATE. THE FILE CATEGORY
* CAN BE CHANGED LATER.
*
* P OR PR PRIVATE FILES; AVAILABLE FOR ACCESS
* ONLY BY THEIR CREATOR AND BY THOSE
* GRANTED EXPLICIT ACCESS PERMISSION BY
* THE FILE CREATOR(REFER TO THE *ADMIT*
* COMMAND).
*
* S SEMIPRIVATE FILES; AVAILABLE FOR ACCESS
* BY A USER WHO KNOWS THE FILE NAME, USER
* NUMBER, AND FILE PASSWORD AND WHO HAS
* NOT BEEN EXPLICITLY DENIED PERMISSION TO
* THE FILE(I.E. M=N OPTION ON THE *ADMIT*
* COMMAND).
*
* PU PUBLIC FILES; AVAILABLE FOR ACCESS BY AL
* USERS WHO KNOW THE FILE NAME, USER NUMBE
* AND PASSWORD. THE SYSTEM RECORDS THE
* NUMBER OF TIMES THE FILE WAS ACCESSED AN
* THE DATE AND TIME OF THE LAST ACCESS, BU
* DOES NOT RECORD USER NUMBERS.
*
* LFN (*RESERVE* COMMAND) LOCAL FILE NAME.
*
* LFNX (*RESERVE* COMMAND) FILE NAME TO RECEIVE THE
* MACHINE READABLE TAPE FILE STATUS INFORMATION.
*
* MD FILE ACCESS MODE PERMITTED TO OTHER USERS IF THE FILE
* IS PUBLIC OR SEMIPRIVATE, AND IF EXPLICIT ACCESS
* PERMISSION HAS NOT BEEN GRANTED TO THAT USER. IF
* M=M IS OMITTED, M=WRITE IS ASSUMED, EXCEPT FOR *ADMIT*,
* WHERE READ IS THE DEFAULT.
*
* R THIS FILE CAN BE READ.
*
* W THIS FILE CAN BE READ OR WRITTEN ON.
*
* N NO ACCESS IS ALLOWED.
*
* S IF SPECIFIED, THE SYMBOLIC TAPE FILE NAME WAS GIVEN.
*
* NA NO ABORT OPTION. BY DEFAULT, IF NOS ENCOUNTERS
* AN ERROR WHILE PROCESSING A COMMAND,
* IT INITIATES ERROR PROCESSING. HOWEVER, IF THE
* NO-ABORT OPTION IS IN EFFECT AND THE SYSTEM FINDS
* AN ERROR, THE SYSTEM SKIPS THE COMMAND AND
* PROCESSES THE REMAINING COMMANDS IN THE JOB.
*
* OPT *AUDIT* LIST OPTION.
* VALID ENTRIES: F - (FULL LIST)
* M - (FULL MULTIFILE LIST)
* 0 - (ZERO, SHORT LIST) DEFAULT.
* FP- (FULL ADMIT LIST)
* P - (SHORT ADMIT LIST)
*
* TFN TAPE FILE NAME OR VOLUME SERIAL NUMBER.
*
* TOPT THE DEFAULT VALUE FOR THE TAPE OPTION (*TO*) PARAMETER
* ON THE *LABEL* OR *REQUEST* COMMAND.
*
* T SET DEFAULT TO *TO=T* (*TMS* PROCESSING).
*
* F SET DEFAULT TO *TO=F* (NON-*TMS* PROCESSING).
*
* C IF DEFAULT TO *TO=C* (CHECK FOR CATALOG ERROR.)
*
* E IF DEFAULT TO *TO=E* (IGNORE CATALOG ERROR.)
*
* UCW USER CONTROL WORD. (1 TO 10 CHARACTERS)
SPACE 4,10
*** DAYFILE MESSAGES.
*
* *ERROR IN TFILES ARGUMENT.* = AN ARGUMENT TO TAPE FILE
* REQUEST WAS INCORRECT.
*
* *ERROR IN VSN.* = THE SYNTAX OF A SPECIFIED VSN WAS
* INCORRECT.
*
* *NO USERNAME SPECIFIED.* = NO USERNAME WAS SPECIFIED WHEN
* ONE WAS REQUIRED.
*
* *EXCEEDED USERNAME LIMIT.* = TOO MANY USERNAMES ON AN
* *ADMIT* REQUEST. (MAXIMUM OF SEVEN)
*
* *ERROR IN USERNAME.* = SYNTAX ERROR.
*
* *INCORRECT SEPARATOR.*
*
* *INCORRECT FILE MODE.*
*
* *ERROR IN FILENAME.* = SYNTAX ERROR.
*
* *EXCEEDED FILENAME LIMIT.* = EXCEEDED LIMIT OF SEVEN.
*
* *FILENAME MISSING.* = NO FILENAME SPECIFIED WHEN
* ONE WAS REQUIRED.
*
* *INCORRECT FILE CATEGORY.*
*
* *INCORRECT AC PARAMETER.*
*
* *EXCEEDED VSN LIMIT.* = EXCEEDED LIMIT OF SEVEN.
*
* *INCORRECT PASSWORD.*
*
* *CANNOT AMEND VSN NAME.*
*
* *EMPTY CATALOG.*
*
* *REMARK= NOT SUPPORTED AT 1.4D, USE UC=.*
*
* *PFN= NOT SUPPORTED AT 1.4D, IS NOW A NO-OP.*
SPACE 4,10
*** COMMON DECKS.
*CALL COMCCMD
*CALL COMCMAC
*CALL COMSSFM
*CALL COMSTCM
*CALL COMSTFM
QUAL TFU
*CALL COMSTFU
QUAL *
SPACE 4
**** ASSEMBLY CONSTANTS.
SDM= EQU 0 SUPPRESS DAYFILE MESSAGE
ARG= EQU 0 SUPPRESS SYSTEM CRACKING
OBFL EQU 1001 OUTPUT BUFFER SIZE
IBFL EQU 101B INPUT BUFFER LENGTH
SBFL EQU 300B INITIAL SORT BUFFER LENGTH
FLIN EQU 1000B FL INCREMENT FOR SORT BUFFER
MSBL EQU SBFL+5*FLIN MAXIMUM SORT BUFFER LENGTH
TWBL EQU TSVL*60D+TCEL+2 AUDIT BUFFER SIZE
NWRD EQU 8D FOR 80 CHARACTER OUTPUT
CHDR EQU 3 NUMBER OF HEADER LINES
TITLE TAPE FILE REQUEST MACROS
TITLE MACROS
MOVEIT SPACE 4,15
** MOVEIT.
*
* THE MOVEIT MACRO IS USED TO CONSTRUCT DIRECTIVES FOR THE MCS
* SUBROUTINE. THE FORMAT AND THE PURPOSE OF THE DIRECTIVE IS
* EXPLAINED IN THE MCS DOCUMENTATION.
*
PURGMAC MOVEIT
MOVEIT MACRO N,L1,C1,L2,C2
VFD 12/N,18/L1,6/C1,6/C2,18/L2
ENDM
SETEA SPACE 4,15
** SETEA - SET ERROR ADDRESS.
*
* AD = WORD EA OF FET.
* VA = ERROR MESSAGE RETURN BUFFER ADDRESS.
PURGMAC SETEA
SETEA MACRO AD,VA
LOCAL A,B
A BSS 0
B EQU *O
ORG AD
VFD VA
ORG B
ENDM
XFER SPACE 4,10
** XFER - TRANSFER CHARACTER STRING.
*
* THE *XFER* MACRO ASSEMBLES THE MACRO PARAMETERS INTO
* (X1) AND (X2) FOR THE CALL TO *XFR*. SEE *XFR* FOR
* FOR MORE INFORMATION.
PURGMAC XFER
XFER MACRO SFWA,OFWA,BWP,BCP,SCC,OCC
SX1 SFWA FWA OF SOURCE
SX2 OFWA FWA OF OBJECT
LX1 3
LX2 3
SX3 7B VALIDATE ALL CHARACTERS
BX1 X1+X3
BX2 X2+X3
LX1 9
LX2 9
SX3 BWP BEGINNING WORD POSITION
BX2 X2+X3
LX1 9
LX2 9
SX3 BCP BEGINNING CHARACTER POSITION
BX2 X2+X3
LX1 9
LX2 9
SX3 SCC XFER CHARACTER COUNT
BX1 X1+X3
IFC NE,$OCC$$
SX3 OCC
ELSE
ENDIF
BX2 X2+X3
RJ XFR TRANSFER CHARACTER STRING
ENDM
TFILES TITLE FUNCTION PROCESSORS.
** FETS.
ORG 121B
FWA BSS 0 DEFINE LOAD ADDRESS
F BSS 0
TFET FILEB TFWB,TWBL,(FET=20B),EPR
TFMSG BSSZ 4 ERROR MESSAGE RETURN
TFWB BSSZ TWBL BUFFER
SETEA F+5,(42/0,18/TFMSG)
I BSS 0
INPUT FILEB IBUF,101B,FET=6
O BSS 0
OUTPUT FILEB OBUF,OBFL,EPR,FET=10B
P BSS 0
POUT FILEB PMSG,PMSGL+1,FET=6
SPACE 4
** WORKING STORAGE.
LIT CON 0 PROCESS LITERALS FLAG
INDX BSSZ 1 TABLE POINTER
NARG BSSZ 1 NUMBER OF ARGUMENTS
SAVE BSSZ 1 POSITION IN COMMAND
VSNC VFD 60/3CVSN NON-SYMBOLIC ACCESS FLAG
VSNB CON 4R
NABT CON 0 NO ABORT OPTION
USER CON 0 SELECTED USER NUMBER
PSWD CON 0 PASSWORD
CATG CON 0 FILE CATEGORY
ALAD CON 0 ALTERNATE AUDIT ATTRIBUTE
MODE CON 0 FILE MODE
USCW CON 0 USER CONTROL WORD
CLER CON 0 CLEAR ERROR OPTION
ANCP CON 0 CURRENT CHARGE/PROJECT NUMBER
MCRD CON 0 MACHINE READABLE FILE OPTION
TPFG CON 0 TITLE PAGE FLAG FOR TERMINAL
ENTD CON 0 ENTRY NUMBER(DISPLAY)
LOPT CON 0 LIST OPTION
DTYP CON 0 DEVICE TYPE
PAGE CON 0 PAGE NUMBER
ENTN CON 0 ENTRY NUMBER
SYMB CON 0 SYMBOLIC ACCESS
LINE CON LINP LINE NUMBER
BLNK CON 1L BLANK LINE
CODE CON 0 AUDIT LIST CODE
MULT CON 0 MULTIFILE LIST IDENTIFIER
MXBS CON MSBL MAXIMUM SORT BUFFER SIZE
CSBS CON SBFL CURRENT SORT BUFFER SIZE
CRFL CON RFL= CURRENT FL
PERM CON 0 PFN NO-OP FOR OLD *RESERVE*
REMK CON 0 REMARK PARAMETER FROM OLD *RESERVE*
SPACE 4
** TABLES.
TADM BSS 0 TABLE OF ADMIT PARAMETERS
S ARG -*,SYMB
NA ARG -*,NABT
ARG END OF TABLE
TAMD BSS 0 TABLE OF AMEND PARAMETERS
S ARG -*,SYMB
NA ARG -*,NABT
PW ARG =1,PSWD,400B
CT ARG CATG,CATG
AC ARG ALAD,ALAD
M ARG MODE,MODE
UC ARG USCW,USCW,400B,1
CE ARG -*,CLER
AN ARG -*,ANCP
ARG END OF TABLE
TAUD BSS 0 TABLE OF AUDIT PARAMETERS
S ARG -*,SYMB
LO ARG LOPT,LOPT
UN ARG USER,USER,400B
L ARG O,O,400B
SS ARG MCRD,MCRD,400B
ARG END OF TABLE
TREL BSS 0 TABLE OF RELEASE PARAMETERS
S ARG -*,SYMB
NA ARG -*,NABT
ARG END OF TABLE
TRES BSS 0 TABLE OF RESERVE PARAMETERS
PW ARG =1,PSWD,400B
CT ARG CATG,CATG
AC ARG ALAD,ALAD
M ARG MODE,MODE
UC ARG USCW,USCW,400B,1
NA ARG -*,NABT
SS ARG MCRD,MCRD,400B
PF ARG PERM,PERM,400B
RE ARG REMK,REMK,400B,1
ARG END OF TABLE
TFIN BSS 0 TABLE OF FILE IDENTIFIERS
BSSZ 14D
TFINL EQU *-TFIN
TVSN BSS 0 TABLE OF VOLUME SERIAL NUMBERS
BSSZ 7
TVSNL EQU *-TVSN
TARG BSS 0 ARGUMENT TABLE
BSSZ 63B
TARGL EQU *-TARG ARGUMENT TABLE LENGTH
** DEFINE REMOVE SECURE PARAMETERS.
RSP1$ BSS 0 TABLE OF KEYWORD EQUIVALENCES
RSP2$ BSS 0 TABLE OF SECURE KEYWORDS
VFD 12/0LPW,48/ ALTERNATE USER PASSWORD
VFD 60/0 END OF TABLE
ADMIT SPACE 4,25
*** ADMIT,TFN,USERNAM1=M1,...,USERNAMN=MN/S,NA.
*
* ADMIT GRANTS PERMISSION TO USERS OTHER THAN THE FILE
* ORIGINATOR, TO ACCESS AND EMPLOY A PRIVATE TAPE FILE.
*
* TFN = TAPE FILE IDENTIFIER OR VOLUME SERIAL NUMBER.
* USERNAM = USER THAT WILL BE ALLOWED ACCESS.
* M = MODE IN WHICH THE ALTERNATE USER CAN ACCESS.
* S = SYMBOLIC ACCESS.
*
* ENTRY ADMIT COMMAND HAS BEEN ISSUED.
*
* EXIT ADMIT(S) COMPLETED OR APPROPRIATE ERROR ISSUED.
*
* CALLS BAT, CER, PAR, USB.
*
* MACROS ADMIT, MESSAGE, ENDRUN.
ADMIT BSS 0
SB1 1
RJ IDF ISSUE DAYFILE MESSAGE
SB2 CCDR LOCATE COMMAND IMAGE
RJ USB UNPACK DATA TO STRING BUFFER
RJ POP PICK OUT *ADMIT* WORD
NZ B5,ERR IF ERROR ENCOUNTERED
ZR B6,ERR1 IF NO ARGUMENTS
SX7 1
SA7 LIT SET PROCESS LITERALS FLAG
SX6 B6
SA6 SAVE
RJ POP PICK OUT NEXT WORD
NG B5,ERR IF ERROR ENCOUNTERED
SB3 X1-1R=
ZR B3,ERR IF *=*, ERROR
SB3 B0
SA5 TFIN
RJ PCK STORE FILE IDENTIFIER
NG X2,ERR3 IF NO USERNAME SPECIFIED
ADM1 RJ POP PICK UP USERNAME
NZ B5,ERR5 IF ERROR ENCOUNTERED
SA3 INDX
SB3 X3
SB7 ADMAL
EQ B3,B7,ERR4 EXCEEDED USERNAME LIMIT
MX0 42
BX3 -X0*X6
NZ X3,ERR5 IF USERNAME .GT. 7 CHARACTERS
SA6 ADMA+B3
SX6 FMRE DEFAULT MODE READ
SB4 X1-1R,
EQ B4,ADM3 IF DELIMITER IS COMMA
SB4 X1-1R/
EQ B4,ADM3 IF DELIMITER IS SLASH
NG X2,ADM3 IF NO MORE ARGUMENTS
SB4 X1-1R=
NZ B4,ERR IF INCORRECT DELIMITER
RJ POP PICK OUT FILE MODE
NZ B5,ERR IF ERROR ENCOUNTERED
ZR X6,ERR IF NO ARGUMENT
SB3 3
SB2 B0
ADM2 SA4 CNVC+B2 CONVERT MODE
MX0 12
BX4 X4*X0
SB2 B2+B1
GT B2,B3,ERR7 IF INCORRECT MODE SPECIFIED
BX4 X6-X4
NZ X4,ADM2 IF MODE NOT FOUND
SB2 B2-B1
SA4 CNVC+B2
MX0 -12
BX6 -X0*X4
ADM3 SA3 INDX
SB3 X3
SA6 ADMB+B3 SAVE FILE MODE
SX6 B3+B1 INCREMENT INDX
SA6 INDX
SB3 X1-1R, CHECK DELIMITER
ZR B3,ADM1 IF MORE USERNAMES SPECIFIED
NG X2,ADM4 IF NO MORE ARGUMENTS
SB3 X1-1R/
NZ B3,ERR6 IF DELIMITER ERROR
RJ BAT BUILD ARGUMENT TABLE
SA2 BATA
SB4 X2
SA4 TARG
SB5 TADM
RJ PAR PROCESS REMAINING ARGUMENTS
NZ X1,ERR IF ARGUMENT ERROR
NZ B6,ERR IF MORE ARGUMENTS
ADM4 SA1 SYMB
NZ X1,ADM5 IF SYMBOLIC ACCESS
SX6 B0
SA6 VSNC SET VSN ACCESS FLAG
MX0 36
SA1 TFIN GET VSN NAME
BX2 -X0*X1
SA3 VSNB
BX2 X2-X3
NZ X2,ERR2 IF VSN .GT. 6 CHARACTERS
BX6 X0*X1
RJ PVS PAD *VSN* WITH *0*
SA6 TVSN
ADM5 SB7 B0
SA3 INDX
SB6 X3
SA3 VSNC
ZR X3,ADM7 IF VSN SPECIFIED
ADM6 ADMIT F,TFIN,,ADMA+B7,ADMB+B7
RJ CER CHECK FOR RETURNED ERRORS
SB7 B7+B1
LT B7,B6,ADM6 IF MORE FILE NAMES
EQ ADM8 PROCESSING COMPLETED
ADM7 ADMIT F,,TVSN,ADMA+B7,ADMB+B7
RJ CER CHECK FOR RETURNED ERRORS
SB7 B7+B1
LT B7,B6,ADM7 IF MORE VSNS
ADM8 ENDRUN
ADMA BSS 0 STORAGE FOR USERNAMES
BSSZ 7
ADMAL EQU *-ADMA
ADMB BSS 0 STORAGE FOR FILE MODES
BSSZ 7
AMEND SPACE 4,25
*** AMEND,NFN1=OFN1,...,NFNN=OFNN/PW,CT,AC,M,UC,CE,AN,S,NA.
*
* THE AMEND COMMAND ALLOWS THE ORIGINATOR OF A TAPE
* FILE TO AMEND SOME OF THE FILE-S PARAMETERS WITHOUT
* HAVING TO REWRITE THE FILE.
*
* NFN = NEW TAPE FILE NAME.
* OFN = OLD TAPE FILE NAME OR VOLUME SERIAL NUMBER.
* PW = FILE PASSWORD.
* CT = FILE CATEGORY.
* AC = ALTERNATE USER AUDITABILITY.
* M = FILE MODE.
* UC = USER CONTROL WORD.
* CE = CLEAR ERROR OPTION.
* AN = CHANGE TO CURRENT CHARGE/PROJECT NO.
* S = SYMBOLIC ACCESS.
* NA = NO ABORT OPTION.
*
* ENTRY AMEND COMMAND HAS BEEN ISSUED.
*
* EXIT ALTER(S) COMPLETED OR APPROPRIATE ERROR ISSUED.
*
* CALLS BAT, CER, CNV, ESP, IDF, PAR, PCK, POP, PVT, USB.
*
* MACROS AMEND, ENDRUN, MESSAGE.
AMEND BSS 0
SB1 1
RJ IDF ISSUE DAYFILE MESSAGE
SB2 CCDR LOCATE COMMAND IMAGE
RJ USB UNPACK DATA TO STRING BUFFER
RJ POP PICK OUT *AMEND* WORD.
NZ B5,ERR IF ERROR ENCOUNTERED
ZR B6,ERR1 IF NO MORE ARGUMENTS
SX7 1
SA7 LIT SET PROCESS LITERALS FLAG
SX6 B6
SA6 SAVE
RJ POP PICK OUT PARAMETER
NG B5,ERR IF ERROR ENCOUNTERED
ZR B6,ERR1 IF NO MORE ARGUMENTS
SA3 SAVE
SB6 X3
SB3 X1-1R=
ZR B3,AMD1 IF *=*
RJ PVT PROCESS VSN/TFN LIST
NG X2,ERR1 IF NO MORE ARGUMENTS
EQ AMD2 PROCESS REMAINING ARGUMENTS
AMD1 RJ POP PICK UP *NFN*
NG B5,ERR8 IF ERROR ENCOUNTERED
SB3 X1-1R=
NZ B3,ERR6 IF DELIMITER NOT *=*
SA3 INDX
SB3 X3
SB7 AMDBL
EQ B3,B7,ERR9 EXCEEDED FILENAM LIMIT
SA5 AMDB
RJ PCK STORE FILENAM
SX6 B6
SA6 SAVE
RJ POP PICK UP *OFN*
NG B5,ERR8 IF ERROR ENCOUNTERED
SA3 INDX
SB3 X3
SA5 TFIN
RJ PCK STORE FILENAM
SX6 B3+B1
SA6 INDX
ZR B6,ERR16 IF NO MORE ARGUMENTS
SB3 X1-1R,
ZR B3,AMD1 IF MORE FILENAMES SPECIFIED
AMD2 SB3 X1-1R/
NZ B3,ERR6 DELIMITER ERROR
SB3 TAMD
RJ BAT BUILD ARGUMENT TABLE
SA2 BATA
SB4 X2
SA4 TARG
SB5 TAMD
RJ PAR PROCESS REMAINING ARGUMENTS
NZ X1,ERR IF ARGUMENT ERROR
SA1 SYMB
NZ X1,AMD4 IF SYMBOLIC ACCESS
SA1 AMDB
NZ X1,ERR16 IF NEW VSN NAME SPECIFIED
SX6 B0
SA6 VSNC SET VSN ACCESS FLAG
SA3 INDX GET NUMBER OF VSNS
SB7 X3
SB6 B0
SB5 B0
AMD3 SA3 TFIN+B5 GET VSN
SA1 VSNB
MX0 36
BX2 -X0*X3
BX2 X2-X1
NZ X2,ERR2 IF VSN .GT. 6 CHARACTERS
BX6 X0*X3
RJ PVS PAD *VSN* WITH *0*
SA6 TVSN+B6 STORE VSN NAME
SB6 B6+B1
SB5 B5+2
LT B5,B7,AMD3 IF MORE VSNS TO STORE
SX6 B6
SA6 INDX
AMD4 RJ CNV CONVERT PARAMETERS TO VALUES
SA5 PSWD CHECK FOR SECURE PASSWORD
SB2 X5
SB2 B2-B1
NZ B2,AMD6 IF *PW* NOT ENTERED
MX0 42
BX5 X0*X5
NZ X5,AMD5 IF PASSWORD NOT ENTERED SECURELY
RJ ESP ENTER SECURE PASSWORD
SA6 PSWD SET PASSWORD
BX5 X6
AMD5 SA1 AMDA CHECK FOR *PW=0*
BX3 X1-X5
MX6 42
NZ X3,AMD6 IF PW=0 WAS NOT SPECIFIED
SA6 PSWD NO MORE FILE PASSWORD
AMD6 SA2 USCW
SA1 AMDA CHECK FOR *UC=0*
BX3 X1-X2
NZ X3,AMD7 IF UC=0 WAS NOT SPECIFIED
MX6 60
SA6 USCW
AMD7 SA1 CLER
ZR X1,AMD8 IF CE NOT SPECIFIED
SX6 B1
LX6 6-0
SA6 F+TFCE
AMD8 SA1 ANCP
ZR X1,AMD9 IF AN NOT SPECIFIED
SX6 B1
SA2 F+TFCE
MX0 -6
BX2 X0*X2
BX6 X6+X2
SA6 A2
AMD9 SB7 B0
SA3 INDX
SB6 X3
SA3 VSNC
ZR X3,AMD12 IF VSN SPECIFIED
AMD10 AMEND F,AMDB+B7,TFIN+B7,,PSWD,CATG,MODE,USCW,ALAD
RJ CER CHECK FOR RETURNED ERRORS
ZR X7,AMD11 IF NO ROLLOUT
SB7 B7-B1
AMD11 SB7 B7+2 INCREMENT FILE NAME POINTER
LT B7,B6,AMD10 IF MORE FILES TO AMEND
EQ AMD13 PROCESSING COMPLETE
AMD12 AMEND F,,,TVSN+B7,PSWD,CATG,MODE,USCW,ALAD
RJ CER CHECK FOR RETURNED ERRORS
SB7 B7+B1
LT B7,B6,AMD12 IF MORE VSNS TO AMEND
AMD13 ENDRUN
AMDA CON 1L0 USED TO CHECK FOR PW=0 OPTION
AMDB BSS 0 STORAGE FOR NEW FILENAMES
BSSZ 14D
AMDBL EQU *-AMDB
AUDIT SPACE 4,25
*** AUDIT,TFN,LO,UN,L,SS,S.
* AUDIT,LO,UN,L,SS,S.
*
* THE AUDIT COMMAND ENABLES A USER TO OBTAIN
* INFORMATION ABOUT THE FILES THAT RESIDE IN HIS OR
* HER TAPE FILE CATALOG, OR ALTERNATE CATALOGS TO WHICH
* THEY HAVE BEEN ADMITTED.
*
* TFN = TAPE FILE NAME OR VOLUME SERIAL NUMBER.
* LO = LIST OPTION.
* UN = USERNAME.
* L = LOCAL FILE TO RECEIVE OUTPUT.
* SS = MACHINE READABLE OUTPUT FILE.
* S = SYMBOLIC ACCESS.
*
* ENTRY AUDIT COMMAND HAS BEEN ISSUED.
*
* EXIT TO MAIN LOOP(ADT)
* FETS AND BUFFERS SET UP AND COMMAND
* ARGUMENTS PROCESSED.
* (CODE) = LIST OPTION
* 0 = SHORT FILE LIST
* 1 = FULL FILE LIST
* 2 = SHORT ALTERNATE CATALOG LIST
* 3 = FULL ALTERNATE CATALOG LIST
* 4 = SHORT ADMIT DATA LIST
* 5 = FULL ADMIT DATA LIST
* B1 = 1.
* DTYP = 0 IF OUTPUT TO TERMINAL FILE.
* TITLE LINES PRESET
* TFM CALL FET PRESET.
* (ADTA) SET IF SELECTED ENTRY DESIRED.
* (O)=0 IF L=0 IS SPECIFIED
* (MCRD)=FILE NAME FOR MACHINE READABLE OUTPUT
* (AUDC)=0 IF NO ADMIT DATA REQUESTED
*
* CALLS ADT, BAT, PAR, PCK, POP, SFN, STF, USB.
*
* MACROS GETPFP, MESSAGE, ABORT, CHARGE, PROJECT,
* DATE, CLOCK, USERNUM.
AUDIT BSS 0 ENTRY POINT
SB1 1
SX6 1
SA6 NABT SET NO ABORT OPTION
RJ IDF ISSUE DAYFILE MESSAGE
GETPFP AUDG GET FAMILY NAME
SB2 CCDR LOCATE COMMAND IMAGE
RJ USB UNPACK DATA TO STRING BUFFER
RJ POP PICK OUT *AUDIT* WORD
NZ B5,ERR IF ERROR ENCOUNTERED
ZR B6,AUD6 IF NO MORE ARGUMENTS
SX7 1
SA7 LIT SET PROCESS LITERALS FLAG
SX6 B6
SA6 SAVE
RJ POP PICK OUT NEXT WORD
NG B5,ERR IF ERROR ENCOUNTERED
SB3 X1-1R=
ZR B3,AUD1 IF *=*
SB3 B0
SA5 AUDE
RJ PCK STORE TAPE FILE NAME
ZR B6,AUD5 IF NO MORE ARGUMENTS
EQ AUD2 PROCESS REMAINING ARGUMENTS
AUD1 SA3 SAVE
SB6 X3
AUD2 RJ BAT BUILD ARGUMENT TABLE
SA2 BATA
SB4 X2
SA4 TARG
SB5 TAUD
RJ PAR PROCESS REMAINING ARGUMENTS
NZ X1,ERR IF ARGUMENT ERROR
SA1 USER
ZR X1,AUD3 IF NO USERNAME SPECIFIED
MX0 42
BX1 -X0*X1
NZ X1,ERR5 IF USER NAME TOO LONG
AUD3 SA1 MCRD
ZR X1,AUD4 IF NO SS FILE SPECIFIED
MX0 42
BX1 -X0*X1
NZ X1,ERR IF SS FILENAME TOO LONG
AUD4 SA1 AUDE
NZ X1,AUD5 IF FILE NAME SPECIFIED
SA1 SYMB
NZ X1,ERR14 IF *S* SPECIFIED, BUT NOT FILE NAME
EQ AUD6 CONTINUE PROCESSING
AUD5 SA1 SYMB
NZ X1,AUD6 IF SYMBOLIC ACCESS
SA1 AUDE
MX0 36
BX2 -X0*X1
SA3 VSNB
BX2 X2-X3
NZ X2,ERR2 IF VSN .GT. 6 CHARACTERS
BX6 X0*X1
RJ PVS PAD *VSN* WITH *0*
SA6 AUDE SET PADDED VSN
SA6 F+TFES SET VSN IN FET
AUD6 SA1 O
SB2 B0
LX1 6
SX2 1R0
BX6 X1-X2
NZ X6,AUD7 IF NOT L=0
SA6 A1 SET FLAG FOR NO LISTABLE OUTPUT DESIRED
SA1 MCRD
ZR X1,ADT7 IF NOT MACHINE READABLE
EQ AUD8 SET JOB ORIGIN
AUD7 SA1 O
MX0 42
BX2 -X0*X1
MX0 -3
BX2 X0*X2
NZ X2,ERR IF LIST FILENAME TOO LONG
SX6 B1
BX2 X0*X1
ZR X2,ERR14 IF NO FILE NAME
IX6 X6+X2
SA6 A1
SX2 A1 CHECK FOR TERMINAL FILE
RJ STF SET TERMINAL FILE
SA6 DTYP SET DEVICE TYPE FLAG (0 FOR TYPE *TT*)
AUD8 SA2 LOPT
SX4 1RM
LX4 54
IX0 X4-X2
NZ X0,AUD9 IF NOT MULTIFILE
SX6 B1
SA6 MULT
SX6 1RF CHANGE TO FULL LIST FLAG
LX6 54
SA6 LOPT
BX2 X6
SX6 FCEV SET UP MULTIFILE HEADERS
SA6 HDRD+2
SX6 FCET
SA6 HDRF+2
AUD9 MX0 59
SA1 AUDL
SB2 B0
SB3 AUDLL
SX5 B0
AUD10 BX4 -X0*X1 PICK SHORT LIST FLAG
BX1 X0*X1
IX6 X1-X2
ZR X6,AUD11 IF OPTION FOUND
SA1 A1+B1
SB2 B2+B1
LE B2,B3,AUD10 IF NOT END OF TABLE
EQ ERR13 ISSUE ERROR MESSAGE
AUD11 SA1 USER
SA2 AUDE
BX3 X2 SET SELECTED ENTRY FLAG
SB3 AUDP SET PROPER MODE
SX6 B0
SX7 PTPK SET SUBTITLE FLAG
LT B2,B3,AUD12 IF NOT ACCESS DATA REQUEST
SX5 B1 SET ADMIT LIST FLAG
SX7 PTPI SUBTITLE FLAG
BX3 X1 SET SELECTED ENTRY FLAG
NZ X2,AUD13 IF FILE NAME SPECIFIED
EQ ERR14 ISSUE ERROR MESSAGE
AUD12 ZR X1,AUD14 IF USER NUMBER NOT SPECIFIED
SX6 B1+B1 ADVANCE MODE
AUD13 SA7 PTPH SET SUBTITLE FLAG
AUD14 SX6 X6+B2
SA6 CODE
ZR X4,AUD15 IF NOT SHORT FILE LIST
BX6 X3 SET SELECTIVE ENTRY FLAG
SA6 ADTA
SA3 AUDE+B1
BX6 X3
SA6 ADTA+B1
* SET *TFM* FET PARAMETERS.
AUD15 ZR X2,AUD16 IF FILENAME NOT SPECIFIED
MX0 42
BX6 X2
SA6 PTPJ
SA6 F+TFID
SA2 A2+B1
BX6 X0*X2
SA6 PTPJ+B1 SET FILE NAME IN SUBTITLE LINE
SA6 F+TFSQ
BX6 X5
SA6 AUDC SET ADMIT FLAG
AUD16 SA1 USER
BX7 X0*X1 SET OPTIONAL USER NUMBER
SA7 F+TFUN
SA7 PTPL
SA1 CODE SET TFM AUDIT CODE
SB2 X1
SB3 3
GT B2,B3,AUD17 IF ADMIT REQUEST
SA2 AUDE
ZR X2,AUD19 IF NOT SELECTIVE REQUEST
SX1 7
EQ AUD19 SET CODE IN FET
AUD17 SA2 USER
ZR X2,AUD19 IF NO USERNAME SPECIFIED
SA4 CODE
SX4 X4-5
ZR X4,AUD18 IF NOT SHORT ADMIT LIST
BX1 X2
RJ SFN SPACE FILL USER NAME
SA6 ADTA
BX6 X6-X6
SA6 ADTA+B1 CLEAR SECOND WORD
AUD18 SX1 8
AUD19 SA2 X1+AUDD
BX6 X2
SA6 F+TFPW SET AUDIT TYPE CODE IN FET
SA1 AUDG GET FAMILY NAME
BX6 X1
SX4 3RFM/
LX6 42
LX4 42
BX1 X6+X4
RJ SFN SPACE FILL NAME
SA6 PTPD
SA1 MCRD
ZR X1,ADT IF NOT MACHINE READABLE
DATE PTPE
CLOCK PTPF
USERNUM CUSR GET CURRENT USERNAME
SA1 USER
ZR X1,ADT IF NOT ALTERNATE USER
BX6 X1
SA6 CUSR SET ALTERNATE USERNAME
JP ADT RETURN TO MAIN LOOP
AUDC CON 0
AUDD BSS 0 TFM AUDIT CODES
LOC 0
CON FCST
CON FCST
CON FCST
CON FCST
CON FAST
CON FAST
CON FCST
CON SCST
CON SAST
LOC *O
AUDE BSSZ 2 FILE IDENTIFIER
AUDG BSS 3 *GETPFP* PARAMETER BLOCK
** LIST OPTIONS
* BIT 0 SET IF SHORT LIST OPTION.
AUDL BSS 0 LIST OPTIONS
LOC 0
VFD 59/0,1/1 NORMAL CATALOGS
CON 1LF
CON 0 ALTERNATE CATALOGS
CON 0
AUDP EQU * LIMIT OF CATALOG OPTIONS
VFD 6/0LP,54/1 ADMIT DATA
CON 2LFP
AUDLL EQU *
LOC *O
RELEASE SPACE 4,25
*** RELEASE,TFN1,TFN2,...,TFNN/S,NA.
* RELEASE,VSN1,VSN2,...,VSNN/NA.
*
* RELEASE LOGICAL TAPE FILE OR VSN.
*
* TFN = LOGICAL TAPE FILE NAME.
* VSN = FIRST-REEL VOLUME SERIAL NUMBER.
* NA = NO ABORT OPTION IF ERROR ENCOUNTERED.
* S = SYMBOLIC ACCESS.
*
*
* CALLS BAT, CER, PAR, POP, PVT, USB.
*
* MACROS ENDRUN, MESSAGE, RELEASE.
RELEASE BSS 0
SB1 1
RJ IDF ISSUE DAYFILE MESSAGE
SB2 CCDR LOCATE COMMAND IMAGE
RJ USB UNPACK DATA TO STRING BUFFER
RJ POP PICK OUT *RELEASE* WORD
NZ B5,ERR IF ERROR ENCOUNTERED
ZR B6,ERR1 IF NO MORE ARGUMENTS
SX7 1
SA7 LIT SET PROCESS LITERALS FLAG
SX6 B6
SA6 SAVE
RJ PVT PROCESS TFN/VSN LIST
NG X2,REL1 IF NO MORE ARGUMENTS
SB3 X1-1R/
NZ B3,ERR6 ERROR IN DELIMITER
RJ BAT BUILD ARGUMENT TABLE
SA2 BATA
SB4 X2
SA4 TARG
SB5 TREL
RJ PAR PROCESS REMAINING ARGUMENTS
NZ X1,ERR IF ARGUMENT ERROR
NZ B6,ERR IF MORE ARGUMENTS
REL1 SA1 SYMB
NZ X1,REL3 IF SYMBOLIC ACCESS
SA1 AMDB
NZ X1,ERR16 IF NEW VSN NAME SPECIFIED
SX6 B0
SA6 VSNC SET VSN ACCESS FLAG
SA3 INDX GET NUMBER OF VSNS
SB7 X3
SB6 B0
SB5 B0
REL2 SA3 TFIN+B5 GET VSN
SA1 VSNB
MX0 36
BX2 -X0*X3
BX2 X2-X1
NZ X2,ERR2 IF VSN .GT. 6 CHARACTERS
BX6 X0*X3
RJ PVS PAD *VSN* WITH *0*
SA6 TVSN+B6 STORE VSN NAME
SB6 B6+B1
SB5 B5+2
LT B5,B7,REL2 IF MORE VSNS TO STORE
SX6 B6
SA6 INDX CHANGE INDX FOR VSNS
REL3 SB7 B0
SA3 INDX
SB6 X3
SA3 VSNC
ZR X3,REL6 IF VSN SPECIFIED
REL4 RELEASE F,TFIN+B7
RJ CER CHECK FOR RETURNED ERRORS
ZR X7,REL5 IF NO ROLLOUT
SB7 B7-B1
REL5 SB7 B7+2
LT B7,B6,REL4 IF MORE TO RELEASE
EQ REL7 PROCESSING COMPLETE
REL6 RELEASE F,,TVSN+B7
RJ CER CHECK FOR RETURNED ERRORS
SB7 B7+B1
LT B7,B6,REL6 IF MORE TO RELEASE
REL7 ENDRUN
RESERVE SPACE 4,25
*** RESERVE,LFN1,LFN2,...,LFNN/SS,PW,CT,AC,M,UC,NA.
*
* RESERVE SCRATCH TAPE.
*
* LFN = LOCAL FILE NAME OF TAPE FILE.
* PW = FILE PASSWORD.
* SS = MACHINE READABLE OUTPUT FILE.
* CT = FILE CATEGORY.
* AC = AUDIT LISTABILITY BY ALTERNATE USERS.
* M = FILE ACCESS MODE.
* UC = USER CONTROL WORD.
* NA = NO ABORT IF ERROR ENCOUNTERED.
*
* DEFAULT VALUES.
* PW = 0. NO PASSWORD
* CT = P. PRIVATE
* AC = N. ALTERNATE USER CANNOT
* OBTAIN AUDIT INFORMATION
* M = R. READ ONLY ACCESS
* UC = 0. NO USER CONTROL WORD.
*
* CALLS ARG, BAT, CER, CNV, ESP, POP, PRA, USB.
*
* MACROS RESERVE, MESSAGE, ENDRUN.
RESERVE BSS 0
SB1 1
RJ IDF ISSUE DAYFILE MESSAGE
SB2 CCDR LOCATE COMMAND IMAGE
RJ USB UNPACK DATA TO STRING BUFFER
RJ POP PICK OUT *RESERVE* WORD
NG B5,ERR IF ERROR ENCOUNTERED
ZR B6,ERR1 IF NO ARGUMENTS
SX7 1
SA7 LIT SET PROCESS LITERALS FLAG
RES1 RJ POP PICK OUT LFN NAME
NG B5,ERR8 IF ERROR ENCOUNTERED
SA3 INDX
SB3 X3
SB7 TVSNL
EQ B3,B7,ERR9 EXCEEDED LFN LIMIT
MX0 42
BX3 -X0*X6
NZ X3,ERR8 IF LFN .GT. 7 CHARACTERS
SA6 TVSN+B3 STORE LFN NAME
SB3 B3+B1 INCREMENT LFN TABLE POINTER
SX6 B3
SA6 INDX
NG X2,RES5 IF NO MORE ARGUMENTS
SB3 X1-1R, CHECK FOR COMMA
ZR B3,RES1 GET NEXT LFN NAME
SB3 X1-1R/
NZ B3,ERR6 IF DELIMITER ERROR
RJ BAT BUILD ARGUMENT TABLE
SA2 BATA
SB4 X2
SA4 TARG
SB5 TRES
RJ PAR PROCESS ARGUMENTS
NZ X1,ERR IF ARGUMENT ERROR
RJ CNV CONVERT PARAMETER TO VALUE
SA5 REMK
ZR X5,RES2 IF NO USER REMARK SPECIFIED
MESSAGE (=C*REMARK= NOT SUPPORTED AT 1.4D, USE UC=.*),0
SA4 USCW
NZ X4,ERR IF REM= AND UC= SPECIFIED
BX6 X5
SA6 USCW
RES2 SA5 PERM
ZR X5,RES3 IF PFN= NOT SPECIFIED
MESSAGE (=C*PFN= NOT SUPPORTED AT 1.4D, IS NOW A NO-OP.*),0
RES3 SA5 PSWD CHECK FOR SECURE PASSWORD
SB2 X5
SB2 B2-B1
NZ B2,RES4 IF *PW* NOT ENTERED
MX0 42
BX5 X0*X5
NZ X5,RES4 IF PASSWORD NOT ENTERED SECURELY
RJ ESP ENTER SECURE PASSWORD
SA6 PSWD SET PASSWORD
RES4 SA1 MCRD CHECK MACHINE READABLE FILE OPTION
ZR X1,RES5 IF NOT SPECIFIED
SA1 MCRD SET MACHINE READABLE FILE NAME
SX2 3
BX6 X1+X2
SA6 O
SA1 O+1 SET OUTPUT BUFFER EMPTY
SX6 X1
SA6 A1+B1
SA6 A6+B1
SX2 O SET DEVICE TYPE
RJ STF SET TERMINAL FILE
SA6 DTYP
GETPFP AUDG GET FAMILY NAME
USERNUM CUSR GET CURRENT USER
RES5 SB7 B0
SA3 INDX
SB6 X3
RES6 RESERVE F,TVSN+B7,PSWD,CATG,ALAD,MODE,USCW
RJ CER CHECK FOR RETURNED ERRORS
SB7 B7+B1
NZ X7,RES6 IF ROLLABLE ERROR OCCURRED
SA1 MCRD
ZR X1,RES9 IF NO MACHINE READABLE FILE
SX6 B7
SA6 RESB SAVE LFN POINTER
SA1 F RESET INPUT FET(1)
MX0 51
BX1 -X0*X1
MX0 -3
BX6 X0*X1
SA6 A1
MX0 -18
SA1 A1+B1 GET *FIRST* POINTER
BX6 -X0*X1
SA6 A1+B1 SET IN = FIRST
SA6 A6+B1 SET OUT = FIRST
SX6 B0 INITIALIZE INPUT FET(6)
SA6 F+TFRR
SA6 F+TFPW
SA6 F+TFUC
SB7 B7-B1
RES7 GETVSN F,TVSN+B7 GET TAPE CATALOG IMAGE
RJ CER CHECK FOR RETURNED ERRORS
SB7 B7+1
NZ X7,RES7 IF ROLLABLE ERROR OCCURRED
SA1 F+2
SB3 X1 (B3) = IN
SA1 F+3
SB4 X1 (B4) = OUT
EQ B3,B4,ERR17 IF OUT = IN, EMPTY CATALOG
MOVE TWBL,TFWB,CBUF
SA1 RESA
SX6 B1
SA6 A1 SET RESERVE SS FLAG
JP MRF4 GENERATE MACHINE READABLE FILE
RES8 SA1 RESB GET LFN POINTER
SB7 X1
SA1 INDX GET NUMBER OF LFN(S)
SB6 X1
RES9 LT B7,B6,RES6 IF MORE TO RESERVE
SA1 MCRD
ZR X1,RES10 IF NO MACHINE READABLE FILE
WRITER O FLUSH BUFFER
RES10 ENDRUN
RESA CON 0 MACHINE READABLE FLAG
RESB CON 0 LFN POINTER
TMSDEF SPACE 4,20
*** TMSDEF,TO=OPTION.
*
* DEFINE DEFAULT *TMS* PARAMETERS FOR *LABEL/REQUEST*.
*
* TO = DEFAULT TAPE OPTIONS. STRING CONTAINING ONE OR
* MORE OF THE FOLLOWING CHARACTERS -
* *T* IF DEFAULT TO *TO=T* (*TMS* PROCESSING).
* *F* IF DEFAULT TO *TO=F* (NON-*TMS* PROCESSING).
* *C* IF DEFAULT TO *TO=C* (CHECK FOR CATALOG
* ERROR.)
* *E* IF DEFAULT TO *TO=E* (IGNORE CATALOG ERROR.)
*
* USES X - 0, 1, 2, 3, 6, 7.
* A - 1, 2, 3, 6, 7.
* B - 2, 3.
*
* CALLS ARM, IDF, POP, USB.
*
* MACROS ENDRUN, SYSTEM.
TMSDEF SB1 1 ENTRY
RJ IDF ISSUE COMMAND TO DAYFILE
SB2 CCDR
RJ USB UNPACK STRING BUFFER
RJ POP PICK OFF PARAMETER
NG B5,ERR IF ARGUMENT ERROR
ZR B6,TMD5 IF NO ARGUMENTS
SB3 TMDA
RJ ARM PROCESS ARGUMENTS
NZ X1,ERR IF ARGUMENT ERROR
* PROCESS *TO* PARAMETER.
SYSTEM SFM,R,TMDD,GTSF*100B GET TMS STATUS
SB2 TMDB
RJ USB UNPACK STRING BUFFER
SX6 B0 FLAG LAST OPTION
SA6 B7+B1
SA1 B6 GET FIRST COMMAND OPTION
MX0 -12
SA3 TMDD GET DEFAULT OPTIONS
SX7 3
BX7 X7-X3
TMD1 ZR X1,TMD4 IF NO MORE OPTIONS
SA2 TMDC GET FIRST OPTION IN TABLE
TMD2 ZR X2,ERR IF UNKNOWN OPTION
BX6 -X0*X2
BX6 X6-X1
ZR X6,TMD3 IF OPTIONS MATCH
SA2 A2+B1
EQ TMD2 CHECK NEXT OPTION IN TABLE
TMD3 LX2 18 GET SHIFT COUNT
SB2 X2
LX2 12 GET SET/CLEAR STATUS
BX2 -X0*X2
SX6 B1
LX2 B2 SET/CLEAR DEFAULT OPTION
LX6 B2
BX7 -X6*X7
BX7 X7+X2
SA1 A1+B1
EQ TMD1 CHECK NEXT OPTION ON COMMAND
TMD4 SA7 A3 SET DEFAULT TAPE OPTION
SYSTEM TFU,R,TMDD,/TFU/STOF*100B
TMD5 ENDRUN TERMINATE PROGRAM
TMDA BSS 0 *TMSDEF* ARGUMENT TABLE
TO ARG TMDB,TMDB,400B TAPE OPTION
CON 0 END OF TABLE
TMDB CON 0 DEFAULT TAPE OPTIONS
TMDC BSS 0 TABLE OF VALID TAPE OPTIONS
VFD 18/0,12/0,30/1RF BIT POSITION 0, CLEAR BIT, *TO=F*
VFD 18/0,12/1,30/1RT BIT POSITION 0, SET BIT, *TO=T*
VFD 18/1,12/0,30/1RE BIT POSITION 1, CLEAR BIT, *TO=E*
VFD 18/1,12/1,30/1RC BIT POSITION 1, SET BIT, *TO=C*
CON 0 END OF TABLE
TMDD CON 0 DEFAULT TAPE OPTIONS FOR *TFU* CALL
TITLE AUDIT ROUTINES.
ADT SPACE 4,25
** ADT - AUDIT MAIN CONTROL ROUTINE.
*
* ENTRY (CODE) = CODE FOR THE TYPE OF LIST.
* (MCRD) = FILE NAME FOR MACHINE READABLE OUTPUT.
* (ADTA) = SET IF SELECTED ENTRY DESIRED.
*
* EXIT TO APPROPRIATE LIST ROUTINE.
*
* USES ALL.
*
* CALLS CBE, CER, CSU, FCB, SFN.
*
* MACROS AUDIT, ENDRUN, MESSAGE, WRITEC, WRITER.
ADT BSS 0 ENTRY
SA1 O
ZR X1,MRF IF LISTABLE OUTPUT NOT REQUESTED
ADT0 AUDIT F
RJ CER CHECK FOR RETURNED ERRORS
NZ X7,ADT0 IF ROLLABLE ERROR OCCURRED
SA1 F+2
SB3 X1 (B3) = IN
SA1 F+3
SB4 X1 (B4) = OUT
EQ B3,B4,ERR17 IF OUT = IN, PP ERROR
SA1 ADTA
NZ X1,ADT8 IF SELECTED FILE LIST
RJ CSU CHECK FOR SPECIAL USER
ADT1 SA2 CODE GET LIST CODE
SA2 X2+ADTB
SB2 X2
JP B2 PROCESS LIST OPTION
ADT2 RJ FCB FILL CATALOG BUFFER
NG X6,ADT6 IF ERROR RETURN STATUS
NZ X6,ADT1 IF MORE CATALOGS
ADT3 SA1 MCRD
NZ X1,ADT12 IF MACHINE READABLE OPTION
ADT4 SA1 DTYP
ZR X1,ADT5 IF TERMINAL FILE
EQ ADT6
ADT5 MESSAGE (=C**),1
ADT6 WRITER O FLUSH OUTPUT
ADT7 ENDRUN
ADT8 BX6 X1
RJ CBE CLEAR BLANKS FROM WORD
SA6 ADTA
SA1 ADTA+B1
BX6 X1
RJ CBE CLEAR BLANKS FROM WORD
SA6 ADTA+B1
RJ SVM SET VARIABLE MESSAGE
SA1 MCRD
NZ X1,ADT9 IF MACHINE READABLE FILE
SA1 DTYP
ZR X1,ADT11 IF TERMINAL FILE
MESSAGE ADTA,3 *(ENTRY) FOUND.*
EQ ADT7
ADT9 SA1 DTYP
ZR X1,ADT10 IF TERMINAL FILE
MESSAGE ADTA,3 *(ENTRY) FOUND.*
EQ MRF GENERATE THE MACHINE READABLE FILE
ADT10 WRITEC O,ADTA
MESSAGE (=C**),1 CLEAR MESSAGE BUFFER
EQ ADT12 FLUSH OUTPUT BUFFER
ADT11 WRITEC O,ADTA
EQ ADT5
ADT12 WRITER O FLUSH OUTPUT
EQ MRF MACHINE READABLE FILE
ADTA BSSZ 4 SELECTED ENTRY
ADTB BSS 0 TABLE OF LIST OPTIONS
LOC 0
CON SSL SHORT SORTED FILE LIST
CON FFL FULL FILE LIST
CON SSL SHORT SORTED ALTERNATE FILE LIST
CON FFL FULL ALTERNATE FILE LIST
CON SAD SHORT ADMIT DATA LIST
CON FAD FULL LIST OF ADMIT DATA
CON MRF MACHINE READABLE FILE
LOC *O
ADTC BSS 0 TABLE OF OVERFLOW PROCESSORS
LOC 0
CON SFL SHORT FILE LIST
CON FFL FULL FILE LIST
CON SFL SHORT ALTERNATE FILE LIST
CON FFL FULL ALTERNATE FILE LIST
CON SAD SHORT ADMIT DATA LIST
CON FAD FULL LIST OF ADMIT DATA
LOC *O
FAD SPACE 4,25
** FAD - FULL LIST OF ADMIT DATA
*
* THIS ROUTINE PROCESSES THE *LO=FP* AUDIT LIST OPTION.
* FAD GENERATES OUTPUT INFORMATION ABOUT THE ALTERNATE
* USERS WHO HAVE ACCESSED A SPECIFIC FILE. THE LIST
* INDICATES HOW MANY TIMES A SPECIFIC ALTERNATE USER
* HAS ACCESSED THE FILE, WHEN THE LAST ACCESS WAS
* PERFORMED, AND THE MODE IN WHICH IT CAN BE ACCESSED
* BY THAT USER. THIS ROUTINE IS CALLED BY *ADT*.
*
* ENTRY THE AUDIT COMMAND HAS BEEN CRACKED
* AND PARAMETERS ARE STORED.
*
* EXIT OUTPUT LIST IS COMPLETED.
* RETURN TO MAIN LOOP (ADT).
*
* USES ALL.
*
* CALLS AEN, ALN, CDD, CDT, FBA, SFN.
*
* MACROS WRITEC, WRITEH.
FAD BSS 0 ENTRY
RJ FBA FILL BUFFER FOR ADMIT LIST
ZR X6,FAD1 IF END OF BUFFER
RJ AEN ADVANCE ENTRY NUMBER
SB2 B1 ADVANCE LINE NUMBER BY 1
RJ ALN ADVANCE LINE NUMBER
MX0 42 PICK USER NUMBER
SA5 CBUF+AEUN
BX1 X0*X5
RJ SFN SPACE FILL NAME
SA1 ENTD SET USER NUMBER COUNT
MX0 30
LX1 30
BX1 X0*X1 PICK FIRST PART OF USER NUMBER
LX6 24
BX7 -X0*X6
BX7 X7+X1
SA7 LBUF
SA5 CBUF+AEAC SET USER PERMISSION
MX0 4
LX0 40
BX1 X0*X5
LX1 24
SB2 X1
SB3 3
GT B2,B3,FAD2 IF SPECIAL PERMISSION
SA1 FADB+X1
LX1 35-59
MX0 18
BX6 X0*X6 PICK LAST 3 CHAR OF USER NUMBER
BX1 -X0*X1 MERGE WITH PERMISSION
BX6 X6+X1
SA6 LBUF+1
MX0 18 CONVERT ACCESS COUNT
BX1 X0*X5
LX1 18
RJ CDD CONVERT TO DECIMAL
SA6 LBUF+2 SET ACCESS COUNT/ADMIT TYPE
BX3 X5
RJ CDT CONVERT TIME AND DATE
SA6 LBUF+3
BX7 X5
SA7 LBUF+4
WRITEC O,LBUF
EQ FAD
FAD1 SA1 ENTN NUMBER OF ENTRIES
RJ CDD CONVERT TO DISPLAY CODE
MX0 -18
BX6 -X0*X6
LX6 36D
MX0 -18
LX0 36D
SA2 FADA SET COMPLETION MESSAGE
BX2 X0*X2
BX6 X6+X2
SA6 FADA
SB2 3
RJ ALN ADVANCE LINE NUMBER
WRITEC O,BLNK
WRITEH O,FADA,FADAL
WRITEC O,BLNK
EQ ADT2 RETURN TO MAIN LOOP
FAD2 SA1 ENTN GET ENTRY NUMBER
SX6 X1-1
SA6 A1 RESET ENTRY NUMBER
SA1 LINE
SX6 X1-1
SA6 A1 RESET LINE NUMBER
EQ FAD PICK UP NEXT ADMIT ENTRY
FADA DATA C* XXX USER(S).*
FADAL EQU *-FADA
FADB BSS 0 DISPLAY CODE OF PERMISSION TYPES
LOC 0
CON 10H IMP
CON 10H READ
CON 10H WRITE
CON 10H NULL
LOC *O
FFL SPACE 4,20
** FFL - FULL LISTING
*
* THIS ROUTINE PROCESSES THE *LO=F* AUDIT LIST OPTION.
* *FFL* GENERATES PERTINENT INFORMATION ABOUT EACH FILE IN
* THE CATALOG BEING INTERROGATED. THIS ROUTINE IS
* CALLED BY *ADT*.
*
* ENTRY AUDIT COMMAND HAS BEEN CRACKED AND PARAMETERS
* HAVE BEEN STORED.
*
* EXIT LIST IS GENERATED, THEN BACK TO *ADT*.
*
* USES ALL.
*
* CALLS AEN, ALN, FCB, SCB, SFN.
*
* MACROS EDCAT, WRITEH, WRITEC.
FFL BSS 0 ENTRY
SB2 B1 SET LIST FLAG
RJ FCB FILL BUFFER FOR FULL LIST
ZR X6,FFL14 IF END OF INFORMATION
RJ AEN ADVANCE ENTRY NUMBER
SB2 CHDR
SA5 MULT MULTIFILE LIST INDICATOR
ZR X5,FFL1 IF NOT MULTIFILE
SB2 B2+1
FFL1 RJ ALN ADVANCE LINE NUMBER
SA1 ENTN
EDCAT CBUF,LBUF,X1,B1
WRITEH O,LBUF,NWRD FIRST LINE
WRITEH O,LBUF+NWRD,NWRD SECOND LINE
SA5 MULT MULTIFILE LIST INDICATOR
ZR X5,FFL2 IF NOT MULTIFILE
WRITEH O,LBUF+NWRD*2,NWRD OPTIONAL LINE
FFL2 SA1 CBUF+TCEL+1
MX0 -18
BX1 -X0*X1
SX0 TVVS CHECK SITE STATUS
BX0 X0*X1
ZR X0,FFL3 IF SITE NOT SET SKIP
SB2 1
RJ ALN ADVANCE LINE NUMBER
WRITEH O,FFLD,FFLDL OPTIONAL LINE
FFL3 SA1 CBUF+TCEL+1
MX0 -18
BX1 -X0*X1 GET VSN STATUS FLAG
SX0 RTVS CHECK RESERVE STATUS
BX0 X0*X1
NZ X0,FFL4 IF RESERVED SKIP
SB2 1
RJ ALN
WRITEH O,FFLE,FFLEL OPTIONAL LINE
FFL4 SA1 CBUF+CEST
LX1 59-10
PL X1,FFL5 IF RECOVER NOT SET
SB2 1
RJ ALN
WRITEH O,FFLF,FFLFL OPTIONAL LINE
FFL5 SA1 CBUF+CEST
LX1 59-1
PL X1,FFL6 IF ERROR NOT SET
SB2 1
RJ ALN
WRITEH O,FFLG,FFLGL OPTIONAL LINE
* GENERATE VSN OUTPUT LINES
FFL6 SA2 FCBA
SB3 B0
SA1 CBUF+TCEL
FFL7 MX0 36
BX1 X1*X0
BX3 X1-X2
ZR X3,FFL8 IF EOF
RJ SFN SPACE FILL VSN
SA6 FFLT+B3 STORE VSN
SA1 A1+TSVL
SB3 B3+B1
EQ FFL7 GET NEXT VSN
FFL8 ZR B3,FFL13 IF NO VSN ENTRIES
SX6 B3
SA6 FFLN SAVE NO. OF VSNS TO BE WRITTEN
SX6 B0
SA6 FFLC
FFL9 SB2 B1
RJ ALN ADVANCE LINE NUMBER
SA2 FFLC
SA3 X2
SB2 8
SB6 B0
SB7 LBUF
SA2 FCEB
BX6 X2
FFL10 SA6 LBUF+B2 BLANK FILL THE BUFFER
SB2 B2-B1
PL B2,FFL10
FFL11 SA1 FFLT+A3
BX6 X1
SB3 VSN0+B6
RJ SCB SET CHARACTERS IN BUFFER
SB6 B6+B1
SA3 A3+B1
SB4 A3
SA1 FFLN
SB2 X1
EQ B4,B2,FFL12 IF END OF VSN LIST
SB3 8
NE B6,B3,FFL11 IF LINE BUFFER IS NOT FULL
SX6 A3
SA6 FFLC SAVE FFLT POINTER
WRITEH O,LBUF,7
EQ FFL9 GENERATE NEXT OUTPUT LINE
FFL12 WRITEH O,LBUF,7
WRITEC O,BLNK
EQ FFL LOOP FOR NEXT CATALOG ENTRY
FFL13 SB2 2
RJ ALN ADVANCE LINE NUMBER
WRITEH O,FFLB,FFLBL
WRITEC O,BLNK
EQ FFL LOOP FOR NEXT CATALOG ENTRY
FFL14 SA1 ENTN NUMBER OF TAPE FILES
RJ CDD CONVERT TO DISPLAY CODE
MX0 -24 SAVE 4 DIGITS
BX6 -X0*X6
LX6 30
LX0 30
SA2 FFLA GENERATE TERMINATION MESSAGE
BX2 X0*X2
BX6 X6+X2
SA6 FFLA
SB2 2
RJ ALN ADVANCE LINE NUMBER
WRITEH O,FFLA,FFLAL
WRITEC O,BLNK
EQ ADT3 RETURN TO MAIN LOOP
FFLA DATA C* XXXX TAPE FILE(S).*
FFLAL EQU *-FFLA
FFLB DATA C* NO VSN ENTRIES.*
FFLBL EQU *-FFLB
FFLC CON 0 FFLT POINTER
FFLD DATA C/ *** TAPE FILE IS OFF-SITE ***/
FFLDL EQU *-FFLD
FFLE DATA C/ *** TAPE FILE NOT YET RESERVED ***/
FFLEL EQU *-FFLE
FFLF DATA C/ *** TAPE FILE CATALOG RECOVERED ***/
FFLFL EQU *-FFLF
FFLG DATA C/ *** TAPE FILE CATALOG ERROR SET ***/
FFLGL EQU *-FFLG
FFLN CON 0 NUMBER OF VSNS
FFLT BSSZ 63D MAX. NUMBER OF VSNS
* VSN LINE DEFINITION TABLE
VSNS EQU 0
VSN0 CFORM VSNS+14,6
CFORM VSNS+21,6
CFORM VSNS+28,6
CFORM VSNS+35,6
CFORM VSNS+42,6
CFORM VSNS+49,6
CFORM VSNS+56,6
CFORM VSNS+63,6
MRF SPACE 4,25
** MRF - MACHINE READABLE FILE.
*
* *MRF* GENERATES THE MACHINE READABLE FILE SPECIFIED BY THE
* *SS=* OPTION ON THE AUDIT COMMAND. THIS ROUTINE IS
* CALLED BY *ADT*.
*
* ENTRY AUDIT COMMAND IS CRACKED AND PARAMETERS STORED.
* (AUDC) = 0 IF NO ADMIT DATA REQUESTED.
* (MCRD) = FILE NAME FOR MACHINE READABLE OUTPUT.
*
* EXIT MACHINE READABLE FILE GENERATED.
*
* USES ALL.
*
* CALLS CBE, CDD, EDT, FBA, FCB, MCS, SFN, STF, ZFD.
*
* MACROS RECALL, WRITEC.
MRF BSS 0
SA1 F RESET FET(1)
MX0 51
BX1 -X0*X1
MX0 -3
BX6 X0*X1
SA6 A1
MX0 -18
SA1 A1+B1 GET *FIRST* POINTER
BX6 -X0*X1
SA6 A1+B1 SET IN = FIRST
SA6 A6+B1 SET OUT = FIRST
SX6 B0 INITIALIZE INPUT FET(6)
SA6 F+TFRR
SA1 AUDC INSURE ADMIT FLAG OFF
ZR X1,MRF1 ADMIT DATA NOT REQUESTED
BX6 X6-X6
SA6 F+TFUN
SX6 SCST
SA6 F+TFPW
MRF1 SA1 O
ZR X1,MRF2 IF NO NEED TO WAIT
RECALL O WAIT FOR I/O COMPLETION
MRF2 SA1 MCRD SET MACHINE READABLE FILE NAME
SX2 3
BX6 X1+X2
SA6 O
SA1 O+1 SET OUTPUT BUFFER EMPTY
SX6 X1
SA6 A1+B1
SA6 A6+B1
SX2 O SET DEVICE TYPE
RJ STF SET TERMINAL FILE
SA6 DTYP
MRF3 SA1 RESA CHECK FOR RESERVE SS FILE REQUEST
NZ X1,RES8 IF RESERVE REQUEST, RETURN
SB2 B1 SET LIST FLAG
RJ FCB FILL BUFFER FOR FULL LIST
ZR X6,ADT4 EXIT
MRF4 SA1 AUDG GET FAMILY NAME
RJ SFN SPACE FILL NAME
SA6 AUDG
SA1 CUSR GET USER NAME
RJ SFN SPACE FILL NAME
SA6 CUSR
SA2 CBUF+CEST CHECK FOR SYMBOLIC NAME
LX2 59-2
PL X2,MRF5 IF NOT SYMBOLIC ACCESS
SA1 CBUF+CELI GET PERMANENT FILE NAME
RJ SFN SPACE FILL NAME
SA6 TPFN SET TAPE FILE NAME
SA1 CBUF+CEST
MX0 42
BX1 X0*X1
RJ SFN SPACE FILL NAME
SA6 TPFN+B1
EQ MRF6
MRF5 SA1 CBUF+CEES GET VSN NAME
MX0 36
BX1 X0*X1
RJ SFN SPACE FILL NAME
SA6 TPFN SET VSN NAME
SA1 FCEQ
BX6 X1
SA6 TPFN+B1 STORE *NON-SYM*
MRF6 SA1 CBUF+CEPI GET PHYSICAL FILE NAME
RJ SFN SPACE FILL NAME
SA6 PHID
SA1 CBUF+CESQ
MX2 42
BX1 X2*X1
RJ SFN SPACE FILL NAME
SA6 PHID+B1 SET PHYSICAL FILE NAME
SA1 CBUF+CECN GET CHARGE NUMBER
RJ SFN SPACE FILL
SA6 CHRG SET CHARGE NUMBER
SA1 CBUF+CEPN GET PROJECT NUMBER
RJ SFN SPACE FILL
SA6 PROJ SET PROJECT NUMBER
SA1 A1+B1
RJ SFN SPACE FILL
SA6 PROJ+1 SET PROJECT NUMBER
MX0 54
SA2 CBUF+CEPW GET FILE CATEGORY
AX2 6
BX0 -X0*X2
SX0 X0-1
SA2 MRFB+X0
BX6 X2
SA6 FTYP SET FILE CATEGORY
SA1 CBUF+CECD GET CREATION DATE
AX1 18
SX1 X1
SA2 =70S12 ADD 1970
IX1 X1+X2
SX2 1R/
RJ EDT EDIT DATE/TIME
SA6 CDAT SET CREATION DATE
SA1 CBUF+CECD GET CREATION TIME
SX1 X1
SX3 120000B PAD TO ELIMINATE LEAD BLANK
IX1 X1+X3 TO INSURE LEAD ZERO
SX2 1R.
RJ EDT EDIT DATE/TIME
SA1 =1S48 REMOVE PADDING
IX6 X6-X1
SA6 CTIM
SA1 CBUF+CEMD GET LAST MODIFICATION DATE
AX1 18
SX1 X1
SA2 =70S12 ADD 1970
IX1 X1+X2
SX2 1R/
RJ EDT EDIT DATE/TIME
SA6 MDAT SET LAST MODIFICATION DATE
SA1 CBUF+CEMD GET LAST MODIFICATION TIME
SX1 X1
SX3 120000B PAD TO ELIMINATE LEAD BLANK
IX1 X1+X3 TO INSURE LEAD ZERO
SX2 1R.
RJ EDT EDIT DATE/TIME
SA1 =1S48 REMOVE PADDING
IX6 X6-X1
SA6 MTIM SET LAST MODIFICATION TIME
SA1 CBUF+CEAD GET LAST ACCESS DATE
AX1 18
SX1 X1
SA2 =70S12 ADD 1970
IX1 X1+X2
SX2 1R/
RJ EDT EDIT DATE/TIME
SA6 ADAT SET LAST ACCESS DATE
SA1 CBUF+CEAD GET LAST ACCESS TIME
SX1 X1
SX3 120000B PAD TO ELIMINATE LEAD BLANK
IX1 X1+X3 TO INSURE LEAD ZERO
SX2 1R.
RJ EDT EDIT DATE/TIME
SA1 =1S48 REMOVE PADDING
IX6 X6-X1
SA6 ATIM SET LAST ACCESS TIME
MX0 54
SA2 CBUF+CEPW GET PERMISSION MODE
BX0 -X0*X2
SX0 X0-1
SA2 MRFA+X0
BX6 X2
SA6 PMOD SET PERMISSION MODE
SA1 CBUF+CEAD GET ACCESS COUNT
MX3 24
BX1 X3*X1
LX1 24
RJ CDD CONVERT TO DECIMAL
RJ CBE CLEAR BLANKS
RJ ZFD SET DISPLAY CODE ZEROES
SA6 ACNT SET ACCESS COUNT
SA1 CBUF+CETD LABEL STATUS
LX1 1
MX0 2
BX1 X0*X1
LX1 2
SA2 X1+FCEP
BX6 X2
SA6 LBST SET LABEL STATUS
SA1 CBUF+CETD GET DATA FORMAT
MX0 54
AX1 30
BX0 -X0*X1
SA1 X0+FCEL
BX6 X1
SA6 FRMT SET DATA FRMT
SA1 CBUF+CETD GET CONVERSION MODE
MX0 57
AX1 48
BX0 -X0*X1
SA2 X0+FCEN
BX6 X2
SA6 CVMD SET CONVERSION MODE
SA1 CBUF+CETD GET TAPE TYPE
MX0 -2
AX1 55
BX0 -X0*X1
BX6 X0
SA6 FCEF SAVE TAPE TYPE FOR DENSITY GENERATION
SA2 X0+FCEK
BX6 X2
SA6 TTYP SET TAPE TYPE MNEMONIC
SA1 CBUF+CETD GET DENSITY
MX0 57
AX1 51
BX0 -X0*X1
SA1 FCEF CHECK TAPE TYPE
ZR X1,MRF7 IF *MT*
SX0 X0+1 ADJUST FOR DUAL 800-BPI TABLE ENTRIES
MRF7 SX2 X1-3
NZ X2,MRF7.1 IF NOT *AT*
SX0 X0+1 ADJUST FOR DUAL 38000-CPI TABLE ENTRIES
MRF7.1 SA2 X0+FCEM
BX6 X2
SA6 TDEN SAVE DENSITY
SA1 CBUF+CEPW GET FILE PASSWORD
MX0 42
BX1 X0*X1
RJ SFN BLANK FILL IT
SA6 PWRD
SA1 CBUF+CEST CHECK ERROR INDICATOR
SX3 2
BX2 X1*X3
AX2 1
SA3 MRFE+X2
BX6 X3
SA6 ERRI
SX3 2000B CHECK CATALOG ERROR STATUS
BX2 X1*X3
AX2 12B
SA3 MRFC+X2
BX6 X3
SA6 CERR STORE CATALOG ERROR STATUS
SA1 CBUF+CEUC GET USER CONTROL WORD
RJ SFN SPACE FILL NAME
SA6 UWRD
SA1 DIR1 MOVE DATA TO BASIC FILE BLOCK
RJ MCS MOVE CHARACTER STRING
SA1 DIR2
RJ MCS MOVE CHARACTER STRING
SA1 CBUF+TCEL GET VSN INFORMATION
MRF8 SA2 FCBA EOF INDICATOR OF VSN LIST
MX0 36
BX1 X0*X1
BX3 X2-X1
ZR X3,MRF3 IF END OF VSNS
RJ SFN SPACE FILL NAME
SA6 MVSN SAVE VSN
SA1 A1+B1 GET PHYSICAL REEL NUMBER
MX2 -18
BX6 -X2*X1
SA6 MRFV SAVE STATUS INFORMATION
MX2 6
LX2 24D
BX6 X2*X1 SAVE REEL NUMBER
AX6 18D
SA6 MRFK
BX1 X0*X1
RJ SFN SPACE FILL NAME
SA6 MPRN SAVE PHYSICAL REEL NUMBER
SA1 A1+B1 GET FIRST VSN
BX1 X0*X1
RJ SFN SPACE FILL NAME
SA6 FVSN SAVE FIRST VSN
SA1 A1+B1
BX1 X0*X1
RJ SFN SPACE FILL NAME
SA6 NVSN SAVE NEXT VSN
SA1 A1
MX2 6
LX2 24D
BX6 X2*X1 SAVE USAGE COUNT
AX6 18D
SA6 MRFL
SA3 MRFV
BX1 X3
SX0 ERVS CHECK ERROR STATUS
BX2 X0*X1
AX2 1
SA3 MRFE+X2
BX6 X3
SA6 VERR
SX0 TVVS CHECK SITE STATUS
BX2 X0*X1
AX2 3
SA3 MRFF+X2
BX6 X3
SA6 STAT STORE SITE STATUS
SX0 RTVS CHECK RESERVE STATUS
BX2 X0*X1
AX2 17
SA3 MRFD+X2
BX6 X3
SA6 RESV STORE RESERVE STATUS
SX0 UOVS CHECK OWNERSHIP STATUS
BX2 X0*X1
AX2 12
SA3 MRFH+X2
BX6 X3
SA6 OWNS STORE OWNERSHIP STATUS
SX0 HMVS CHECK MAINTENANCE FLAG
BX2 X0*X1
AX2 16
SA3 MRFG+X2
BX6 X3
SA6 MAIN STORE MAINTENANCE FLAG
SX6 A1 SAVE VSN POINTER
SA6 MRFS
SA1 MRFK CONVERT REEL COUNT
RJ CDD CONVERT TO DECIMAL
RJ CBE CLEAR BLANKS
RJ ZFD SET DISPLAY CODE ZEROS
SA6 RCNT STORE REEL COUNT
SA1 MRFL CONVERT USAGE COUNT
RJ CDD CONVERT TO DECIMAL
RJ CBE CLEAR BLANKS
RJ ZFD SET DISPLAY CODE ZEROS
SA6 USGC STORE USAGE COUNT
SA1 DIR3
RJ MCS MOVE CHARACTER STRING
WRITEC O,BLOCK,23D WRITE DATA BLOCK
SA1 MRFS
SA1 X1+B1
EQ MRF8 GET NEXT VSN
SPACE 5
* MACHINE READABLE FILE DATA STORAGE ITEMS
MRFA CON 6LREAD
CON 6LWRITE
CON 6LNULL
MRFB CON 7LPUBLIC
CON 7LPRIVATE
CON 7LSEMI-PR
CON 7L
MRFC CON 1LN RECOVERED STATUS
CON 1LS
MRFD CON 1LN RESERVED STATUS
CON 1LR
MRFE CON 1LC VSN ERROR STATUS
CON 1LS
MRFF CON 3LON
CON 3LOFF
MRFG CON 5LAVAIL
CON 5LHOLD
MRFH CON 6LCENTER
CON 6LUSER
MRFK CON 0 REEL COUNT
MRFL CON 0 USAGE COUNT
MRFS CON 0 VSN POINTER
MRFV CON 0 STATUS INFORMATION
SPACE 4
* THE FOLLOWING MACRO *MOVEIT* CALLS ARE USED TO SET UP
* THE OUTPUT BLOCK FOR THE *SS* FILE.
* DIRECTIVE SET TO FORM COLUMNS 1-60.
DIR1 MOVEIT 1,VERS,10,BLOCK,1
MOVEIT 7,AUDG,1,BLOCK,2
MOVEIT 7,CUSR,1,BLOCK,9
MOVEIT 7,CHRG,1,BLOCK,16
MOVEIT 23,PROJ,1,BLOCK,23
MOVEIT 17,TPFN,1,BLOCK,43
VFD 60/0
* DIRECTIVE SET FOR COLUMNS 60-155.
DIR2 MOVEIT 7,FTYP,1,BLOCK,60
MOVEIT 2,CDAT,2,BLOCK+6,7
MOVEIT 2,CDAT,5,BLOCK+6,9
MOVEIT 2,CDAT,8,BLOCK+6,11
MOVEIT 2,CTIM,2,BLOCK+6,13
MOVEIT 2,CTIM,5,BLOCK+6,15
MOVEIT 2,CTIM,8,BLOCK+6,17
MOVEIT 2,ADAT,2,BLOCK+6,19
MOVEIT 2,ADAT,5,BLOCK+6,21
MOVEIT 2,ADAT,8,BLOCK+6,23
MOVEIT 2,ATIM,2,BLOCK+6,25
MOVEIT 2,ATIM,5,BLOCK+6,27
MOVEIT 2,ATIM,8,BLOCK+6,29
MOVEIT 2,MDAT,2,BLOCK+6,31
MOVEIT 2,MDAT,5,BLOCK+6,33
MOVEIT 2,MDAT,8,BLOCK+6,35
MOVEIT 2,MTIM,2,BLOCK+6,37
MOVEIT 2,MTIM,5,BLOCK+6,39
MOVEIT 2,MTIM,8,BLOCK+6,41
MOVEIT 6,PMOD,1,BLOCK+6,43
MOVEIT 10,ACNT,1,BLOCK+6,49
MOVEIT 2,FRMT,1,BLOCK+6,59
MOVEIT 2,CVMD,1,BLOCK+12,1
MOVEIT 2,TTYP,1,BLOCK+12,3
MOVEIT 2,TDEN,1,BLOCK+12,5
MOVEIT 3,BLANKS,1,BLOCK+12,7
MOVEIT 10,UWRD,1,BLOCK+12,10
MOVEIT 4,BLANKS,1,BLOCK+12,20
MOVEIT 1,ERRI,1,BLOCK+12,24
MOVEIT 1,BLANKS,1,BLOCK+12,25
MOVEIT 7,PWRD,1,BLOCK+12,26
MOVEIT 3,BLANKS,1,BLOCK+12,33
VFD 60/0
* DIRECTIVE SET FOR COLUMNS 159 - 225
DIR3 MOVEIT 6,MVSN,1,BLOCK+12,36
MOVEIT 6,MPRN,1,BLOCK+12,42
MOVEIT 6,FVSN,1,BLOCK+12,48
MOVEIT 6,NVSN,1,BLOCK+12,54
MOVEIT 5,MAIN,1,BLOCK+12,60
MOVEIT 3,STAT,1,BLOCK+18,5
MOVEIT 6,OWNS,1,BLOCK+18,8
MOVEIT 1,VERR,1,BLOCK+18,14
MOVEIT 2,RCNT,9,BLOCK+18,15
MOVEIT 2,LBST,1,BLOCK+18,17
MOVEIT 17,PHID,1,BLOCK+18,19
MOVEIT 2,USGC,9,BLOCK+20,16
MOVEIT 6,BLANKS,1,BLOCK+20,18
MOVEIT 1,RESV,1,BLOCK+20,24
MOVEIT 1,CERR,1,BLOCK+20,25
MOVEIT 1,BLANKS,1,BLOCK+20,26
VFD 60/0
* FOLLOWING ARE THE STORAGE CELLS WHICH ARE FILLED BY *MRF*
* AND FORMATTED FOR OUTPUT BY THE PREVIOUS *MOVEIT* CALLS.
VERS VFD 54/0,6/1R2 VERSION
CHRG BSS 1 CHARGE NUMBER
PROJ BSS 2 PROJECT NUMBER
CUSR BSS 1 USER NAME
TPFN BSS 2 TAPE FILE NAME
FTYP BSS 1 FILE CATEGORY
CDAT BSS 1 CREATION DATE
CTIM BSS 1 CREATION TIME
ADAT BSS 1 LAST ACCESS DATE
ATIM BSS 1 LAST ACCESS TIME
MDAT BSS 1 LAST MODIFY DATE
MTIM BSS 1 LAST MODIFY TIME
PMOD BSS 1 FILE PERMISSION MODE
ACNT BSS 1 ACCESS COUNT
FRMT BSS 1 FILE FORMAT
PWRD BSS 1 FILE PASSWORD
CVMD BSS 1 CONVERSION MODE
ERRI BSS 1 TAPE FILE ERROR INDICATOR
TTYP BSS 1 PHYSICAL TAPE TYPE
TDEN BSS 1 TAPE DENSITY
UWRD BSS 1 USER CONTROL WORD
MVSN BSS 1 VOLUME SERIAL NUMBER
MPRN BSS 1 PHYSICAL REEL NUMBER
FVSN BSS 1 FIRST VSN
NVSN BSS 1 NEXT VSN
MAIN BSS 1 MAINTENANCE FLAG
STAT BSS 1 SITE STATUS
OWNS BSS 1 OWNERSHIP TYPE
VERR BSS 1 VSN ERROR INDICATOR
RCNT BSS 1 REEL COUNT
LBST BSS 1 LABEL STATUS
PHID BSS 2 PHYSICAL ID
RESV BSS 1 TAPE RESERVED INDICATOR
CERR BSS 1 CATALOG ERROR INDICATOR
USGC BSS 1 USAGE COUNT
BLOCK BSS 23
VFD 30/0,30/5L
CON 10H
CON 10H
VFD 36/6L ,12/2L ,12/0
BLANKS CON 10H
CON 10H
SAD SPACE 4,15
** SAD - SHORT ADMIT DATA
*
* THIS ROUTINE PROCESS THE *LO=P* AUDIT LIST OPTION.
* *SAD* GENERATES A LIST OF ONLY THE USERNAMES OF ALTERNATE
* USERS WHO HAVE ACCESSED A SPECIFIC FILE. THIS ROUTINE IS
* CALLED BY *ADT*.
*
* ENTRY AUDIT COMMAND HAS BEEN CRACKED AND PARAMETERS STORED.
*
* EXIT SHORT ADMIT LIST GENERATED.
* EXIT TO MAIN LOOP (ADT).
*
* USES ALL.
*
* CALLS ALN, CDD, FBA, GAL.
*
* MACROS WRITEC, WRITEH.
SAD BSS 0 ENTRY
RJ FBA FILL BUFFER FOR ADMIT LIST
ZR X6,SAD1 IF EOI
RJ GAL GENERATE ADMIT LIST
EQ SAD
SAD1 WRITEC O,LBUF
SA1 ENTN SET NUMBER OF USERS
RJ CDD CONVERT TO DECIMAL
MX0 -18
BX6 -X0*X6
LX6 36D
LX0 36D
SA2 SADA
BX2 X0*X2
BX6 X6+X2
SA6 SADA
SB2 3
RJ ALN ADVANCE LINE NUMBER
WRITEC O,BLNK
WRITEH O,SADA,SADAL
WRITEC O,BLNK
EQ ADT3 RETURN BACK TO MAIN LOOP
SADA DATA C* XXX USER(S).*
SADAL EQU *-SADA
SFL SPACE 4,15
** SFL - SHORT FILE LIST
*
* *SFL* IS THE OVERFLOW PROCESSOR FOR THE SHORT SORTED FILE
* LIST (SSL). THIS ROUTINE IS CALLED BY *SSL* THE *LO=0*
* AUDIT LIST PROCESSOR.
*
* ENTRY *SSL* HAS DETERMINED THERE ARE TOO MANY FILE NAMES
* FOR THE SORT BUFFER.
*
* EXIT UNSORTED SHORT LIST HAS BEEN GENERATED.
* EXIT TO MAIN LOOP (ADT).
*
* USES A - 2, 6.
* B - 2.
* X - 0, 1, 2, 3, 5, 6.
*
* CALLS FCB, GSL, SEC.
*
* MACRO WRITEC.
SFL BSS 0 ENTRY
SB2 B1 SET LIST FLAG
RJ FCB FILL BUFFER FOR SHORT LIST
ZR X6,SFL3 IF EOI ENCOUNTERED
RJ SEC SHORT LIST ERROR CHECK
LX2 59-2
PL X2,SFL1 IF NOT SYMBOLIC ACCESS
LX2 3 STORE FILE IDENTIFIER
MX0 42
BX1 X0*X2
RJ SFN SPACE FILL NAME
BX6 X5*X6 SET POSSIBLE RECOVER FLAG
SA6 A2
EQ SFL2
SFL1 SA2 CBUF+CEES EXTRACT VSN
MX0 36
BX1 X0*X2
SA2 FCEQ
RJ SFN SPACE FILL VSN
SA6 CBUF
BX6 X5*X2 SET POSSIBLE RECOVER FLAG
SA6 A6+B1
SFL2 RJ GSL GENERATE SHORT LIST
EQ SFL GET THE NEXT FILE NAME
SFL3 WRITEC O,LBUF
WRITEC O,BLNK
EQ ADT3 RETURN TO MAIN LOOP
SSL SPACE 4,15
** SSL - SHORT SORTED LIST.
*
* THIS ROUTINE PROCESSES THE *LO=0* AUDIT LIST OPTION.
* *SSL* GENERATES A LIST OF THE TAPE FILENAMES IN THE
* CATALOG BEING INTERROGATED (NO OTHER INFORMATION IS LISTED).
* IF THE USER IS REQUESTING FILE NAMES IN AN ALTERNATE USER
* CATALOG, THE USER IS GIVEN ONLY THE NAMES OF FILES THAT
* HE OR SHE IS ALLOWED ACCESS. THIS ROUTINE IS CALLED BY
* *ADT*.
*
* ENTRY AUDIT COMMAND HAS BEEN CRACKED AND PARAMETERS STORED.
*
* EXIT TO OVERFLOW PROCESSOR IF BUFFER IS NOT LARGE
* ENOUGH TO HOLD ALL ENTRIES. OTHERWISE BACK
* TO THE MAIN LOOP (ADT).
*
* USES X - 0, 1, 2, 3, 6, 7.
* A - 0, 1, 2, 3, 6, 7.
* B - 2, 3, 7.
*
* CALLS AFS, CSM, FCB, GNI, GSL, HDR, NIP, PAS, RQS, SEC, SST.
*
* MACROS READW, WRITEC, WRITEH.
SSL BSS 0 ENTRY
SA0 B0 INITIALIZE BUFFER POINTER
SSL1 SB2 B1 SET LIST FLAG
RJ FCB FILL BUFFER FOR SHORT LIST
ZR X6,SSL6 PROCESS SORT OF BUFFER
RJ SEC SHORT LIST ERROR CHECK
LX2 59-2
PL X2,SSL2 IF NOT SYMBOLIC ACCESS
SA1 CBUF+CELI STORE FILE IDENTIFIER
BX6 X1
SA6 A0+SBUF
SA0 A0+B1
SA1 CBUF+CEST
MX0 42D
BX1 X0*X1
RJ SFN SPACE FILE NAME
BX6 X5*X6 SET POSSIBLE RECOVER FLAG
SA6 A0+SBUF
EQ SSL3
SSL2 SA2 CBUF+CEES STORE VSN IN SBUF
MX0 36D
BX1 X0*X2
RJ SFN SPACE FILE NAME
SA6 A0+SBUF
SA2 FCEQ
SA0 A0+B1
BX6 X5*X2 SET POSSIBLE RECOVER FLAG
SA6 A0+SBUF
SSL3 SA1 CSBS GET CURRENT BUFFER MAXIMUM
SA0 A0+B1
SX3 A0+B1
IX2 X1-X3
PL X2,SSL1 IF BUFFER NOT FULL
RJ RQS REQUEST MORE BUFFER SPACE
PL X1,SSL1 IF MORE AVAILABLE
* SORT BUFFER OVERFLOW.
SX6 A0+
AX6 1
SA6 SSLA STORE COUNT
SB2 B1+
RJ ALN ADVANCE LINE NUMBER
WRITEC O,SSLD OUTPUT WARNING MESSAGE
WRITEC O,BLNK
RJ HDR PRINT HEADER
SB7 B0+
SA1 SSLA PRESET TERMINATION MESSAGE
RJ CDD CONVERT TO DISPLAY
MX0 -24 SAVE 4 DIGITS
BX6 -X0*X6
LX6 30
LX0 30
SA2 SSLE
BX2 X0*X2
BX6 X6+X2
SA6 SSLE
SSL4 SA3 SSLA
SX6 X3-1
SA6 A3
NG X6,SSL5 IF END OF ENTRIES
SA1 SBUF+B7
BX6 X1
SA6 CBUF
SA1 A1+B1
BX6 X1
SA6 CBUF+B1
SX6 B7+ SAVE SORT BUFFER INDEX
SA6 SSLF
RJ GSL GENERATE SHORT LIST
SA2 SSLF RESET SORT BUFFER INDEX
SB7 X2+2
EQ SSL4 GET NEXT ENTRY
SSL5 SA2 CODE
SA2 X2+ADTC
SB2 X2
JP B2 GO TO OVERFLOW PROCESSOR
* SORT TAPE FILES ALPHABETICALLY.
SSL6 SX1 A0 NUMBER OF ENTRIES*2
AX1 1
BX6 X1
SA6 SSLA NUMBER OF TAPE FILE ENTRIES
SB2 B1
RJ ALN ADVANCE LINE NUMBER
SX1 A0
SB7 SBUF ADDRESS OF BUFFER
RJ SST SORT ENTRIES
SA1 SSLA PRESET TERMINATION MESSAGE
RJ CDD CONVERT TO DISPLAY
MX0 -24 SAVE 4 DIGITS
BX6 -X0*X6
LX6 30
LX0 30
SA2 SSLE
BX2 X0*X2
BX6 X6+X2
SA6 SSLE
SB7 B0
* LIST TAPE FILES
SSL7 SA3 SSLA
SX6 X3-1
SA6 A3+
NG X6,SSL8 IF END OF ENTRIES
SA1 B7+SBUF GET ACTUAL ENTRY
BX6 X1
SA6 CBUF
SA1 A1+B1
BX6 X1
SA6 CBUF+B1
SX6 B7+ SAVE SORT BUFFER INDEX
SA6 SSLF
RJ GSL GENERATE SHORT LIST
SA2 SSLF
SB7 X2+2
EQ SSL7 GET NEXT FILENAME
SSL8 WRITEC O,LBUF LAST LINE OF TAPE FILES
WRITEC O,BLNK
SB2 2
RJ ALN ADVANCE LINE NUMBER
WRITEH O,SSLE,SSLEL
WRITEC O,BLNK
EQ ADT3 CONTINUE PROCESSING
SSLA CON 0 NUMBER OF TAPE FILES
SSLD DATA C* ALL FILES LISTED BUT NOT SORTED.*
SSLE DATA C* XXXX TAPE FILE(S).*
SSLEL EQU *-SSLE
SSLF CON 0
TITLE SUBROUTINES.
AEN SPACE 4,25
** AEN - ADVANCE ENTRY NUMBER.
*
* ENTRY (ENTN) = NUMBER OF FILES.
*
* EXIT (ENTN) = ADVANCED.
* (ENTD) = ADVANCED FILE NUMBER IN DISPLAY CODE
*
* USES X 0, 1, 6.
* A 1, 6.
*
* CALLS CDD.
AEN SUBR ENTRY/EXIT
SA1 ENTN ADVANCE FILE NUMBER
SX1 X1+B1
BX6 X1
SA6 A1
RJ CDD CONVERT TO DISPLAY
SX1 1R. SET PERIOD
MX0 54
LX6 6
BX6 X0*X6
BX6 X1+X6
SA6 ENTD
EQ AENX RETURN
ALN SPACE 4,25
** ALN - ADVANCE LINE NUMBER
*
* ENTRY (LINE) = CURRENT PAGE LINE NUMBER
* (B2) = NUMBER OF LINES TO ADVANCE
*
* EXIT FILE NUMBER UPDATED IN OUTPUT LINE
* LINE BUFFER CLEARED
*
* USES X 1, 6.
* B 2.
* A 1, 6.
*
* CALLS HDR, PTP.
ALN SUBR ENTRY/EXIT
SA1 LINE ADVANCE LINE NUMBER
SX6 X1+B2
SA6 A1
SX1 X6-LINP
NG X1,ALN2 IF NOT END OF PAGE
SA1 DTYP CHECK DEVICE TYPE
NZ X1,ALN1 IF FILE NOT ASSIGNED TO A TERMINAL
SA1 TPFG CHECK IF TITLE PAGE ALREADY PRINTED
NZ X1,ALN2 IF TITLE ALREADY PRINTED
ALN1 RJ PTP PRINT TITLE PAGE
SX6 B1 SET TITLE PAGE FLAG FOR TERMINAL
SA6 TPFG
SA1 CODE
ZR X1,ALN2 IF SHORT FILE LIST
RJ HDR PRINT HEADER
ALN2 SB2 7 CLEAR LINE BUFFER
SX6 B0
ALN3 ZR B2,ALNX IF END OF LINE BUFFER
SA6 LBUF+B2
SB2 B2-B1
EQ ALN3 CONTINUE CLEARING LINE BUFFER
BAT SPACE 4,15
*** BAT - BUILD ARGUMENT TABLE.
*
* BAT BUILDS THE ARGUMENT TABLE WHICH *ARG* USES TO
* EXTRACT KEYWORDS. THE ARGUMENT TABLE IS NORMALLY
* DONE BY THE SYSTEM BUT IS SUPPRESSED IN TFILES DUE
* TO THE 17 CHARACTER FILENAMES AND STRUCTURES OF THE
* COMMANDS.
*
* ENTRY B6 SPECIFIES NEXT POSITION IN THE USB STRING
* BUFFER TO BE CRACKED.
*
* EXIT TARG STORAGE AREA CONTAINS THE ARGUMENT TABLE.
*
* USES A - 3, 4, 6, 7.
* B - 3, 7.
* X - 3, 4, 5, 6, 7.
*
* CALLS POP.
*
* MACROS ABORT, MESSAGE.
BAT SUBR ENTRY/EXIT
BX6 X6-X6
SA6 BATA INITIALIZE INDEX TO TARG
SA6 NARG INITIALIZE ARGUMENT COUNT
BAT1 RJ POP PICK OUT NEXT PARAMETER
NG B5,ERR IF ERROR ENCOUNTERED
ZR B5,BAT2 IF PARAMETER DOES NOT EXCEED ONE WORD
SA3 BATB
SA4 TARG+B3-1
IX6 X3-X4
NZ X6,ERR IF NOT *REMARK=*
BAT2 SA3 POPA GET PARAMETER
BX6 X3
NG X2,BAT5 IF LAST PARAMETER
SB3 X1-1R=
ZR B3,BAT3 PROCESS EQUIVALENCED PARAMETER
SB3 X1-1R,
NZ B3,ERR6 IF INCORRECT SEPARATOR
EQ BAT4 PROCESS NON-EQUIVALENCED PARAMETER
BAT3 MX5 -6 ZERO-OUT LOWER -6BITS OF PARAMETER WORD
BX4 X5*X6
BX6 X4+X1 COMBINE KEYWORD AND *=*
BAT4 SA3 NARG INCREMENT ARGUMENT COUNT
SX7 X3+B1
SA7 NARG
BAT5 SA3 BATA INCREMENT INDEX TO TARG
SB3 X3
SB7 TARGL
EQ B3,B7,ERR IF EXCEEDED MAX. TARG LENGTH
SA6 TARG+B3 STORE PARAMETER
SB3 B3+B1 INCREMENT INDEX TO TARG
SX6 B3
SA6 BATA
NG X2,BAT NO MORE ARGUMENTS
EQ BAT1 GET NEXT PARAMETER
BATA CON 0 INDEX TO ARGUMENT TABLE
BATB VFD 36/0LREMARK,18/0,6/0L=
PAR SPACE 4,20
** PAR - PROCESS ARGUMENTS
*
* ENTRY (B1) = 1.
* (B4) = ARGUMENT COUNT.
* (A4) = ADDRESS OF FIRST ARGUMENT.
* (X4) = FIRST ARGUMENT.
* (B5) = ADDRESS OF ARGUMENT TABLE IN FOLLOWING FORM -
* 12/OP,18/ASV,9/ST,3/WC,18/ADDR
* OP = 2 CHARACTER OPTION.
* ASV = ADDRESS OF ASSUMED VALUE.
* IF .LT. 0, ARGUMENT MUST BE EQUIVALENCED.
* ST = STATUS, IF = 400B, A ZERO *0* PARAMETER IS
* RETAINED AS A DISPLAY ZERO, OTHERWISE A
* VALUE OF ZERO IS STORED.
* WC = FULL WORD COUNT.
* ADDR = ADDRESS TO STORE PARAMETER.
*
* EXIT (X1) = ZERO IF NO ERROR DETECTED.
* (X1) = NON-ZERO IF ANY OF THE FOLLOWING ERRORS
* ARE FOUND.
* 1. OPTION NOT FOUND IN TABLE.
* 2. SINGLE ARGUMENT EQUIVALENCED.
* 3. INCORRECT RE-ENTRY OF ARGUMENT.
* 4. PARAMETER TOO LONG.
*
* USES X - 0, 1, 2, 3, 4, 5, 6, 7.
* B - 2, 3, 4.
* A - 2, 3, 4, 7.
PAR SUBR
MX0 42
SX1 B0
ZR B4,PARX IF NO ARGUMENTS
SX1 B1
* SEARCH FOR MATCH IN ARGUMENT TABLE.
PAR1 ZR X4,PARX IF NULL ARGUMENT
SA2 B5-B1
MX3 12
PAR2 SA2 A2+B1 GET NEXT OPTION
ZR X2,PARX IF END OF OPTION TABLE
BX6 X2*X3 CHECK FOR KEYWORD MATCH
BX5 X3*X4
BX7 X5-X6
NZ X7,PAR2 IF NO MATCH
* CHECK FOR EQUIVALENCE ALLOWED.
SX7 X4-1R= CHECK FOR EQUIVALENCE SEPARATOR
SB2 X2 SET ADDRESS VALUE
LX2 30 GET ASSUMED STATUS
SB3 X2
PL B3,PAR3 IF EQUIVALENCE ALLOWED
SA3 -B3 SET ASSUMED STATUS ADDRESS
BX6 -X0*X3 GET ASSUMED STATUS
SB3 -B3
NZ X7,PAR5 IF ARGUMENT NOT EQUIVALENCED
EQ PARX RETURN WITH ERROR
* PROCESS EQUIVALENCE.
PAR3 SA3 B3 SET ASSUMED VALUE ADDRESS
BX6 -X0*X3 SET ASSUMED VALUE
NZ X7,PAR5 IF ARGUMENT NOT EQUIVALENCED
SA4 A4+B1 GET PARAMETER
SB4 B4-B1
BX3 X4
AX4 42
NG X2,PAR4 IF DISPLAY ZERO REQUESTED
SX2 X4-1L0
PAR4 ZR X3,PARX IF NULL PARAMETER
NZ X2,PAR5 IF NOT *0*
SX3 B0 CLEAR EQUIVALENCE
SX6 B0 CLEAR STATUS
* ENTER ARGUMENT.
PAR5 SA2 A2 GET WORD COUNT OF PARAMETER
MX0 -3
AX2 18
BX2 -X0*X2
BX7 X3
NZ X2,PAR6 IF PARAMETER MAY BE FULL WORD
SA4 A4 GET CURRENT ARGUMENT
MX0 -6
LX0 12
BX2 -X0*X4
NZ X2,ERR IF PARAMETER TOO LONG
MX0 42
BX7 X0*X7
IX7 X6+X7 MERGE ARGUMENT AND STATUS
PAR6 SA7 B2 STORE ARGUMENT
SB3 B2-B3
NZ B3,PAR7 IF MORE THAN 1 ENTRY ALLOWED
SA2 A2 GET ENTRY IN ARGUMENT TABLE
MX3 12
BX4 -X3*X2
BX7 X3+X4
SA7 A2 MASK THIS ENTRY OUT
PAR7 SB4 B4-B1 DECREMENT ARGUMENT COUNT
SA4 A4+B1 GET NEXT ARGUMENT
NZ B4,PAR1 IF MORE ARGUMENTS TO PROCESS
SX1 B0 CLEAR ERROR
EQ PARX RETURN WITH ERROR
CBE SPACE 4,10
** CBE - CLEAR BLANKS FROM WORD.
*
* ENTRY (X6) = WORD TO BE CLEARED.
*
* EXIT (X6) = WORD WITH BLANKS CLEARED.
*
* USES X - 0, 2, 3, 4, 5, 6.
CBE SUBR ENTRY/EXIT
BX3 X6
SX2 12B
MX0 -6
SX4 55B
CBE1 BX5 -X0*X3
BX5 X5-X4
ZR X5,CBE3 IF BLANK
LX3 54
CBE2 SX2 X2-1 DECREMENT CHARACTER COUNT
NZ X2,CBE1 IF NOT DONE WITH WORD
BX6 X3
EQ CBEX RETURN
CBE3 BX3 X0*X3
LX3 54
EQ CBE2 CONTINUE CONVERSION
CER SPACE 4,15
** CER - CHECK FOR RETURNED ERRORS
*
* *CER* CHECKS THE ERROR BITS IN THE FET. IF SET,
* *CER* ISSUES THE MESSAGE SENT BY *TFM*, THEN EITHER
* ENDS PROCESSING OR ROLLS OUT AND RETURNS TO THE
* CALLING PROGRAM. UPON ROLLIN, THE CALLING PROGRAM
* WILL RE-ISSUE THE REQUEST.
*
* ENTRY TFM HAS JUST BEEN CALLED.
*
* EXIT X7 .NE. 0 IF ROLLOUT.
* IF OTHER THAN ROLLOUT ERROR, MESSAGE IS ISSUED AND
* PROCESSING IS STOPPED.
*
* USES A - 1.
* B - 7.
* X - 0, 1, 6, 7.
*
* MACROS ABORT, ENDRUN, MESSAGE, ROLLOUT.
CER SUBR ENTRY/EXIT
BX7 X7-X7
MX0 -8
LX0 10D
SA1 F
BX0 -X0*X1
ZR X0,CER IF NO ERRORS
SA2 TFMSG
MESSAGE A2,0
SA1 F
MX0 42
BX6 X0*X1
LX1 59-17
PL X1,CER1 IF NOT ROLLABLE ERROR
SA6 A1
SX7 B1
ROLLOUT
MESSAGE CERA,1 CLEAR B-DISPLAY MESSAGE
SB7 B7-B1
EQ CERX RETURN
CER1 SA1 NABT CHECK NO-ABORT OPTION
ZR X1,CER2 IF NA NOT SET
ENDRUN
CER2 ABORT
CERA CON 0 CLEAR B-DISPLAY MESSAGE
CDT SPACE 4,15
** CDT - CONVERT TIMES AND DATES TO DISPLAY FORMAT.
*
* ENTRY (X3) = CODED DATE AND TIME.
*
* EXIT (X6) = DISPLAY CODED DATE.
* (X5) = DISPLAY CODED TIME.
*
* USES X 0, 1, 6.
* A 1, 6.
*
* CALLS EDT.
*
* MACROS EDATE, ETIME.
CDT SUBR ENTRY/EXIT
MX0 -18
BX1 -X0*X3 CONVERT TIME
BX6 -X0-X1
BX5 X3
ZR X6,CDT1 IF BLANK TIME REQUEST
ETIME X1
CDT1 AX5 18
BX1 -X0*X5 CONVERT DATE
BX5 X6
BX6 -X0-X1
ZR X6,CDTX IF BLANK DATE REQUEST
EDATE X1
EQ CDTX EXIT
CNV SPACE 4,20
** CNV - CONVERT PARAMETER TO VALUE
*
* *CNV* CONVERTS THE ALPHA PARAMETER EQUIVALENCES TO THEIR
* CORRESPONDING NUMERIC TFM VALUES. THESE VALUES ARE
* STORED IN THE PARAMETER AREA.
*
* ENTRY THE USER GIVEN PARAMETER EQUIVALENCES HAVE BEEN
* CRACKED AND STORED.
*
* EXIT GIVEN PARAMETERS HAVE BEEN CONVERTED. IF ANY WERE
* INCORRECT, ERROR PROCESSING IS INITIATED.
*
* USES A - 1, 2, 6.
* B - 2, 4.
* X - 1, 2, 3, 6.
*
* CALLS NONE.
CNV SUBR ENTRY/EXIT
MX0 12
SA2 CATG GET FILE CATEGORY
ZR X2,CNV3 IF NO CATEGORY SPECIFIED
SB4 4
SB2 B0
CNV1 SA1 CNVA+B2
BX1 X0*X1
BX3 X2-X1
SB2 B2+B1
GT B2,B4,CNV2 IF END OF POSSIBLE CATEGORIES
NZ X3,CNV1 IF CATEGORY NOT FOUND
CNV2 NZ X3,ERR10 IF INCORRECT CATEGORY
SB2 B2-B1
SA1 CNVA+B2
MX0 -12
BX6 -X0*X1
SA6 A2
MX0 12
CNV3 SA2 ALAD GET AC PARAMETER
ZR X2,CNV6 IF AC PARAMETER NOT SPECIFIED
SB2 B0
SB4 2
CNV4 SA1 CNVB+B2
BX1 X0*X1
BX3 X2-X1
SB2 B2+B1
GT B2,B4,CNV5 IF END OF AC POSSIBILITIES
NZ X3,CNV4 IF AC VALUE NOT FOUND
CNV5 NZ X3,ERR11 IF INCORRECT AC PARAMETER
SB2 B2-B1
SA1 CNVB+B2
MX0 -12
BX6 -X0*X1
SA6 A2
MX0 12
CNV6 SA2 MODE GET FILE MODE
ZR X2,CNV9 IF FILE MODE NOT SPECIFIED
SB2 B0
SB4 3
CNV7 SA1 CNVC+B2
BX1 X0*X1
BX3 X2-X1
SB2 B2+B1
GT B2,B4,CNV8 IF END OF POSSIBLE MODES
NZ X3,CNV7 IF MODE NOT FOUND
CNV8 NZ X3,ERR7 IF INCORRECT MODE
SB2 B2-B1
SA1 CNVC+B2
MX0 -12
BX6 -X0*X1
SA6 A2
CNV9 EQ CNVX RETURN
CNVA VFD 12/0LPU,36/0,12/FCPU
VFD 6/0LP,42/0,12/FCPR
VFD 12/0LPR,36/0,12/FCPR
VFD 6/0LS,42/0,12/FCSP
CNVB VFD 6/0LY,42/0,12/FAYS
VFD 6/0LN,42/0,12/FANO
CNVC VFD 6/0LW,42/0,12/FMWR
VFD 6/0LR,42/0,12/FMRE
VFD 6/0LN,42/0,12/FMNA
CSU SPACE 4,10
** CSU - CHECK FOR SPECIAL USER.
*
* ENTRY (PTPL) = ALTERNATE USER.
*
* EXIT (CODE) UPDATED TO NON-ALTERNATE CATALOG IF
* USER REQUESTING AUDIT IS THE SAME AS THE ALTERNATE
* USER. SUBTITLE FOR OUTPUT IS COMPLETED.
*
* USES X - 0, 1, 2, 3, 6, 7.
* B - 2.
* A - 1, 2, 6.
*
* CALLS SFN.
CSU SUBR ENTRY/EXIT
USERNUM CSUA GET CURRENT USER NAME
SA1 CSUA
RJ SFN SPACE FILL USER NAME
MX0 6
LX6 48
SX4 1RF SET LAST PART OF *OF*
LX4 54
BX6 -X0*X6
BX6 X6+X4
SA6 PTPC
SA2 CODE
SX2 X2-AUDP
PL X2,CSUX IF ADMIT DATA REQUEST
SA2 PTPL
ZR X2,CSUX IF NO ALTERNATE USER
MX0 -6
SB2 8
CSU1 LX1 6 POSITION NEXT CHARACTER
LX2 6
SB2 B2-B1
ZR B2,CSU2 IF USER NUMBERS MATCH
BX3 -X0*X1 USER
BX6 -X0*X2 ALTERNATE USER
IX6 X3-X6
ZR X6,CSU1 IF CHARACTERS COMPARE
EQ CSUX RETURN
CSU2 SA1 MODE PROCEED AS NON-ALTERNATE CATALOG
SX6 X1-2
SA6 A1
EQ CSUX RETURN
CSUA CON 0 CURRENT USER NAME
ERR SPACE 4,25
** ERR - ERROR MESSAGES.
ERR MESSAGE (=C*ERROR IN ARGUMENT.*)
ABORT
ERR1 MESSAGE (=C*NO ARGUMENTS SPECIFIED.*)
ABORT
ERR2 MESSAGE (=C*ERROR IN VSN.*)
ABORT
ERR3 MESSAGE (=C*NO USERNAME SPECIFIED.*)
ABORT
ERR4 MESSAGE (=C*EXCEEDED USERNAME LIMIT.*)
ABORT
ERR5 MESSAGE (=C*ERROR IN USERNAME.*)
ABORT
ERR6 MESSAGE (=C*INCORRECT SEPARATOR.*)
ABORT
ERR7 MESSAGE (=C*INCORRECT FILE MODE.*)
ABORT
ERR8 MESSAGE (=C*ERROR IN FILENAME.*)
ABORT
ERR9 MESSAGE (=C*EXCEEDED FILENAME LIMIT.*)
ABORT
ERR10 MESSAGE (=C*INCORRECT FILE CATEGORY.*)
ABORT
ERR11 MESSAGE (=C*INCORRECT AC PARAMETER.*)
ABORT
ERR12 MESSAGE (=C*EXCEEDED VSN LIMIT.*)
ABORT
ERR13 MESSAGE (=C*INCORRECT LIST OPTION.*)
ABORT
ERR14 MESSAGE (=C*FILE NAME MISSING.*)
ABORT
ERR15 MESSAGE (=C*INCORRECT PASSWORD.*)
ABORT
ERR16 MESSAGE (=C*CANNOT AMEND VSN NAME.*)
ABORT
ERR17 MESSAGE (=C*EMPTY CATALOG.*)
ABORT
ESP SPACE 4,20
** ESP - ENTER SECURE PASSWORD.
*
* THIS SUBROUTINE PROCESSES SECURELY ENTERED PASSWORDS.
* IF OUTPUT FILE IS ASSIGNED TO A TERMINAL THE MESSAGE
* *PASSWORD:* ALONG WITH BLANK OUT CHARACTERS FOR SECURE
* ENTRY OF PASSWORD WILL BE SENT TO THE TERMINAL.
* FILE *INPUT* WILL THEN BE READ FOR THE PASSWORD.
* FOR BATCH JOBS FILE *INPUT* IS READ FOR THE PASSWORD.
*
* ENTRY NONE.
*
* EXIT (X6) = PASSWORD.
* TO *ABT* IF INCORRECT PASSWORD ENCOUNTERED.
*
* USES A - 1, 2, 4, 6.
* B - 2, 3, 4, 5, 6, 7.
* X - 0, 1, 2, 3, 5, 6, 7.
*
* CALLS STF.
*
* MACROS CSET, READSKP, WRITE.
ESP SUBR ENTRY/EXIT
SETFET POUT,(LFN==6LOUTPUT)
SX2 P SET ADDRESS OF FET
RJ STF CHECK IF OUTPUT ASSIGNED TO TERMINAL
NZ X6,ESP1 IF OUTPUT NOT ASSIGNED TO TERMINAL
SA1 X2+B1 SET BUFFER FULL
SX7 X1
SX6 X1+PMSGL
SA6 A1+B1 SET IN BELOW DATA FOR MESSAGE
SA7 A6+B1 SET OUT = FIRST
WRITE X2,* FORCE WRITE BIT SET
SA1 P
MX0 42
BX2 X0*X1 FILE NAME FOR OUTPUT POINTER
SX1 A1 SET ADDRESS OF FET FOR POINTER
BX6 X1+X2
SA6 ARGR FORCE WRITE BEFORE READ ON ROLLOUT
ESP1 SX2 I SET ADDRESS OF FET
RJ STF CHECK IF INPUT ASSIGNED TO TERMINAL
NZ X6,ESP2 IF INPUT NOT ASSIGNED TO TERMINAL
CSET NORMAL ENSURE TERMINAL IN NORMAL MODE
ESP2 READSKP I,,R READ INPUT FOR PASSWORD
SA1 I+2 DETERMINE NUMBER OF WORDS READ
SA2 A1+B1
IX3 X1-X2
ZR X3,ERR15 IF NO DATA ENTERED
SB5 X3
SB3 B0
BX6 X6-X6
SB4 60
SB7 B0
MX0 -6
ESP3 SA2 IBUF+B3 PICK UP NEXT DATA WORD
SB2 B0+
ESP4 LX2 6
BX1 -X0*X2 PICK UP CHARACTER TO CHECK
NZ X1,ESP5 IF CHARACTER NOT ZERO
NZ X5,ESP9 IF 00 ENCOUNTERED
SX5 B1+ SET FLAG TO INDICATE 0 ENCOUNTERED
EQ ESP8 PROCESS CHARACTER
ESP5 NZ X5,ERR15 IF PREVIOUS CHARACTER = COLON
SB6 X1-1R9
GT B6,ESP7 IF NOT ALPHANUMERIC CHARACTER
ESP6 SB4 B4-6
LX7 X1,B4
BX6 X7+X6
SB7 B7+1
SB6 B7-7
GT B6,ERR15 IF PASSWORD .GT. SEVEN CHARACTERS
EQ ESP8 PROCESS CHARACTER
ESP7 SX4 X1-1R*
ZR X4,ESP6 IF CHARACTER = *
SX3 X1-1R
NZ X3,ERR15 IF CHARACTER NOT BLANK
ESP8 SB2 B2+B1
SB6 B2-10
LT B6,ESP4 IF NOT END OF WORD
SB3 B3+B1
SB6 B5-B3
EQ B6,ERR15 IF TOO MUCH DATA ENTERED
EQ ESP3 PICK UP NEXT WORD
ESP9 SA1 I+1
BX7 X1
SA7 A1+B1 SET IN = FIRST FOR INPUT BUFFER
EQ ESPX RETURN
FBA SPACE 4,25
*** FBA - FILL CBUF BUFFER FOR ADMIT LIST.
*
* ENTRY NONE.
*
* EXIT (X6) = 0 IF EOI ENCOUNTERED
*
* USES A - 1, 3, 6.
* B - 2, 3, 4, 5.
* X - 0, 1, 3, 6.
*
* CALLS CER.
*
* MACRO AUDIT.
FBA SUBR ENTRY/EXIT
FBA1 SX6 B1 PRESET EOI FLAG
SA1 F+1
SB2 X1 (B2) = FIRST
SA1 F+2
SB3 X1 (B3) = IN
SA1 F+3
SB4 X1 (B4) = OUT
SA1 F+4
SB5 X1-1 (B5) = LIMIT
NE B4,B3,FBA3 IF OUT .NE. IN
SA1 F CHECK FOR EOI ON LAST REQUEST
MX0 -1
LX0 1
BX0 -X0*X1
ZR X0,FBA2 IF NOT *EOI*
BX6 X6-X6 SET EOI FLAG
EQ FBAX RETURN
FBA2 AUDIT F REQUEST MORE INFORMATION
RJ CER CHECK FOR RETURNED ERRORS
NZ X7,FBA2 IF ROLLABLE ERROR OCCURRED
EQ FBA1 FILL CBUF BUFFER
* MOVE DATA TO CBUF FROM CIRCULAR BUFFER.
FBA3 SA3 B4 (X3) = DATA WORD
BX6 X3
SA6 CBUF STORE FIRST WORD
NE B4,B5,FBA4 IF OUT .NE. LIMIT
SB4 B2-B1 SET OUT = FIRST - 1
FBA4 SB4 B4+B1 INCREMENT OUT
SA3 B4
BX6 X3
SA6 CBUF+B1 STORE SECOND WORD
NE B4,B5,FBA5 IF OUT .NE. LIMIT
SB4 B2-B1 SET OUT = FIRST - 1
FBA5 SX6 B4+B1 RESET OUT
SA6 F+3
EQ FBAX RETURN
FCB SPACE 4,25
*** FCB - FILL CBUF BUFFER FOR FULL LIST.
*
* ENTRY (B2) = 0 SHORT LIST.
* = 1 FULL LIST.
*
* EXIT (X6) = 0 IF EOI ENCOUNTERED
*
* USES A - 1, 3, 4, 5, 6.
* B - 2, 3, 4, 5, 6.
* X - 0, 1, 3, 4, 5, 6.
*
* CALLS CER.
*
* MACRO AUDIT.
FCB SUBR ENTRY/EXIT
SX6 B2 SAVE LIST FLAG
SA6 FCBF
FCB1 SX6 B1 PRESET X6
SA1 F+1
SB2 X1 (B2) = FIRST
SA1 F+2
SB3 X1 (B3) = IN
SA1 F+3
SB4 X1 (B4) = OUT
SA1 F+4
SB5 X1-1 (B5) = LIMIT
NE B4,B3,FCB3 IF OUT .NE. IN
SA1 F CHECK FOR EOI ON LAST REQUEST
MX0 -1
LX0 1
BX0 -X0*X1
ZR X0,FCB2 IF NOT *EOI*
BX6 X6-X6 SET EOI FLAG
EQ FCBX RETURN
FCB2 AUDIT F REQUEST MORE INFORMATION
RJ CER CHECK FOR RETURNED ERRORS
NZ X7,FCB2 IF ROLLABLE ERROR OCCURRED
EQ FCB1 FILL CBUF BUFFER
* MOVE DATA TO CBUF FROM CIRCULAR BUFFER.
FCB3 SB6 B0 INITIALIZE CBUF POINTER
SB7 TCEL TAPE CATALOG SIZE
FCB4 SA3 B4 (X3) = DATA WORD
BX6 X3
SA6 CBUF+B6 STORE DATA WORD
SB6 B6+B1 INCREMENT CBUF POINTER
NE B4,B5,FCB5 IF OUT .NE. LIMIT
SB4 B2-B1 SET OUT = FIRST - 1
FCB5 SB4 B4+B1 INCREMENT OUT
NE B6,B7,FCB4 IF 23 WORDS OF TAPE CATALOG NOT MOVED
SA4 FCBA GET EOF POINTER
SA5 FCBF (X5) = LIST FLAG
FCB6 SA3 B4 BYPASS VSN LIST
NE B4,B5,FCB7 IF OUT .NE. LIMIT
SB4 B2-B1 OUT = FIRST - 1
FCB7 SB4 B4+B1
ZR X5,FCB8 IF FULL ADMIT LIST
BX6 X3
SA6 CBUF+B6
SB6 B6+B1
FCB8 MX0 36
BX3 X3*X0
BX0 X3-X4
NZ X0,FCB6 IF NOT EOF
MI X0,FCB6 IF NOT EOF
SX6 B4 RESET OUT
SA6 F+3
EQ FCBX RETURN
FCBA VFD 36/-0,24/0 EOI WORD
FCBF CON 0 LIST FLAG
SPACE 2
FCE SPACE 4,25
*** FCE - FORMAT CATALOG ENTRY FOR OUTPUT.
*
* FCE CONVERTS THE FIELDS OF A TAPE CATALOG ENTRY TO
* DISPLAY AND FORMATS IT INTO 3 - 80 CHARACTER LINES FOR
* OUTPUT. HEADER LINES ARE DEFINED WHICH THE CALLING
* PROGRAM CAN RETRIEVE (FCEY, FCEZ).
*
* ENTRY (X7) = LINE NUMBER (4 DECIMAL DIGITS) TO BE
* ATTACHED TO BEGINNING OF LINE.
* = 0 - DO NOT ATTACH ANY LINE NUMBER.
* (B6) = ADDRESS OF CATALOG ENTRY.
* (B7) = WORK AREA FOR STORAGE OF OUTPUT LINES.
* BUFFER SIZE IS DETERMINED BY SYMBOLS
* *CHDR* = NUMBER OF LINES,
* *NWRD* = NUMBER OF WORDS PER LINE.
* NO END-OF-LINES ARE INSERTED. USE WRITEH
* FOR OUTPUT.
*
* EXIT OUTPUT LINES WRITTEN TO WORK AREA.
*
* USES ALL.
*
* CALLS CDD, CDT, COD, EDT, SCB, SFN.
FCE SUBR ENTRY/EXIT
SA7 FCED STORE LINE NUMBER
* INITIALIZE THE OUTPUT WORKING BUFFER.
SB2 NWRD*3-1 NUMBER OF WORDS TO FILL - 1
SA1 FCEB BLANK FILL THE BUFFER
BX6 X1
FCE1 SA6 B7+B2 BLANK FILL NEXT CELL
SB2 B2-B1
PL B2,FCE1 IF NOT BLANK FILLED
* CONVERT CATALOG FIELDS
SA3 B6+CEMD MODIFICATION DATE AND TIME
RJ CDT CONVERT DATE AND TIME
SB3 MDPS
RJ SCB SET CHARACTERS IN BUFFER
BX6 X5
SB3 MTPS
RJ SCB SET CHARACTERS IN BUFFER
SA3 B6+CEAD LAST ACCESS DATE AND TIME
RJ CDT CONVERT DATE AND TIME
SB3 ADPS
RJ SCB SET CHARACTERS IN BUFFER
BX6 X5
SB3 ATPS
RJ SCB SET CHARACTERS IN BUFFER
SA3 B6+CECD CREATION DATE AND TIME
RJ CDT CONVERT DATE AND TIME
SB3 CDPS
RJ SCB SET CHARACTERS IN BUFFER
BX6 X5
SB3 CTPS
RJ SCB SET CHARACTERS IN BUFFER
MX0 54 FILE TYPE
SA2 B6+CEPW
AX2 6
BX0 -X0*X2
SX0 X0-1
SA2 X0+FCEI
BX6 X2
SB3 FTPS
RJ SCB SET CHARACTERS IN BUFFER
SA2 B6+CEST LOGICAL FILE NAME
LX2 59-2
PL X2,FCE2 IF NOT SYMBOLIC ACCESS
SA1 B6+CELI STORE FILE NAME
RJ SFN SPACE FILL NAME
SB3 FNPS
RJ SCB SET CHARACTERS IN BUFFER
SA1 B6+CEST
MX2 42
BX1 X2*X1
RJ SFN SPACE FILL NAME
SB3 F2PS
RJ SCB SET CHARACTERS IN BUFFER
EQ FCE3
FCE2 SA1 B6+CEES STORE VSN
MX0 36
BX1 X0*X1
RJ SFN SPACE FILL NAME
SB3 FNPS
RJ SCB SET CHARACTERS IN BUFFER
SA1 FCEQ
BX6 X1
SB3 F2PS
RJ SCB SET CHARACTERS IN BUFFER
FCE3 SA1 FCED LINE NUMBER
ZR X1,FCE4 IF NO LINE NUMBER
RJ CDD CONVERT TO DISPLAY
LX6 59-23 LEFT-JUSTIFY LINE NUMBER
SB3 NMPS
RJ SCB SET CHARACTERS IN BUFFER
FCE4 MX0 54
SA2 B6+CEPW
BX0 -X0*X2
SX0 X0-1
SA2 X0+FCEJ PERMISSION MODE
BX6 X2
SB3 FPPS
RJ SCB SET CHARACTERS IN BUFFER
SA5 MULT MULTIFILE LIST INDICATOR
ZR X5,FSE5 IF NOT MULTIFILE
SA1 B6+CEVS SECTION NUMBER
MX2 -18
BX1 -X2*X1
RJ CDD CONVERT TO DISPLAY
LX6 59-23 LEFT-JUSTIFY LINE NUMBER
SB3 SNPS
RJ SCB SET CHARACTERS IN BUFFER
SA1 B6+CESQ SEQUENCE NUMBER
MX2 -18
BX1 -X2*X1
RJ CDD CONVERT TO DISPLAY
LX6 59-23 LEFT-JUSTIFY LINE NUMBER
SB3 QNPS
RJ SCB SET CHARACTERS IN BUFFER
SA1 B6+CESI MULTI-SET I.D.
MX2 36
BX1 X2*X1
RJ SFN SPACE FILL NAME
SB3 SIPS
RJ SCB SET CHARACTERS IN BUFFER
FSE5 SA1 B6+CEPI PHYSICAL FILE NAME
RJ SFN SPACE FILL NAME
SB3 PNPS
RJ SCB SET CHARACTERS IN BUFFER
SA1 B6+CESQ
MX2 42
BX1 X2*X1
RJ SFN SPACE FILL NAME
SB3 P2PS
RJ SCB SET CHARACTERS IN BUFFER
SA2 B6+CEAD ACCESS COUNT
MX1 24
BX1 X1*X2
LX1 24
SA2 FCEG
BX0 X2-X1
PL X0,FCE6 IF NOT OVERFLOW ACCESS COUNT
SA3 FCEH OVERFLOW FLAG
BX6 X3
SB3 AFPS
RJ SCB SET CHARACTER IN BUFFER
SA1 FCEG
FCE6 RJ CDD CONVERT TO DISPLAY
LX6 36D
SB3 ACPS
RJ SCB SET CHARACTERS IN BUFFER
SA2 B6+CEPW PASSWORD
MX1 42
BX1 X1*X2
RJ SFN SPACE FILL NAME
SB3 PWPS
RJ SCB SET CHARACTERS IN BUFFER
SA1 B6+CETD DATA FORMAT
MX0 54
AX1 30
BX0 -X0*X1
SA1 X0+FCEL
BX6 X1
SB3 DFPS
RJ SCB SET CHARACTERS IN BUFFER
SA1 B6+CETD LABEL STATUS
LX1 1
MX0 2
BX1 X0*X1
LX1 2
SA2 X1+FCEP
BX6 X2
SB3 LBPS
RJ SCB SET CHARACTERS IN BUFFER
SA1 B6+CETD CONVERSION MODE
LX1 12D
MX0 -3
BX1 -X0*X1
SA2 X1+FCEN
BX6 X2
SB3 CVPS
RJ SCB SET CHARACTERS IN BUFFER
SA1 B6+CETD GET TAPE TYPE
MX0 -2
AX1 55
BX0 -X0*X1
BX6 X0 SAVE TAPE TYPE FOR DENSITY GENERATION
SA6 FCEF
SA2 X0+FCEK SET TAPE TYPE MNEMONIC
BX6 X2
SB3 TYPS
RJ SCB SET CHARACTERS IN BUFFER
SA1 B6+CEST ALTERNATE USER LISTABLE
MX0 59
AX1 11
BX0 -X0*X1
SA2 X0+FCEO
BX6 X2
SB3 AUPS
RJ SCB SET CHARACTERS IN BUFFER
SA1 B6+CETD DENSITY
LX1 9D
MX0 -3
BX0 -X0*X1
SA1 FCEF CHECK TAPE TYPE
ZR X1,FCE7 IF *MT*
SX0 X0+1 ADJUST FOR DUAL 800-BPI TABLE ENTRIES
FCE7 SX2 X1-3
NZ X2,FCE7.1 IF NOT *AT*
SX0 X0+1 ADJUST FOR DUAL 38000-CPI TABLE ENTRIES
FCE7.1 SA2 X0+FCEM
BX6 X2
SB3 DNPS
RJ SCB SET CHARACTERS IN BUFFER
EQ FCEX RETURN
FCEB CON 10H
FCED BSS 1 LINE NUMBER
FCEF BSSZ 1 TAPE TYPE
FCEG CON 9999D
FCEH CON 1L* ACCESS COUNT OVERFLOW FLAG
* HEADER LINES.
FCEY DATA 40H FILE-NAME PASSWORD CT MD A
DATA C*CNT CREATION ACCESS LAST MOD*
FCEU DATA 30H LOGICAL/PHYSICAL LB TT
DATA C*F DN CV AC DATE/TIME DATE/TIME DATE/TIME*
FCEV DATA 30H QN
DATA C*SN SET ID*
FCEZ DATA 40H FILE-NAME CT MD A
DATA C*CNT CREATION ACCESS LAST MOD*
FCES DATA 30H LOGICAL/PHYSICAL LB TT
DATA C*F DN CV AC DATE/TIME DATE/TIME DATE/TIME*
FCET DATA 30H QN
DATA C*SN SET ID*
* FIELD EQUIVALENCED CODES
FCEI BSS 0 FILE TYPES
LOC 0
CON 2LPU
CON 2LPR
CON 2LSP
LOC *O
FCEJ BSS 0 PERMISSION MODES
LOC 0
CON 2LRE
CON 2LWR
CON 2LNU
LOC *O
FCEK BSS 0 TAPE TYPES
LOC 0
CON 2LMT SEVEN TRACK TAPE
CON 2LCT CARTRIDGE TAPE
CON 2LNT NINE TRACK TAPE
CON 2LAT ACS CARTRIDGE TAPE
LOC *O
FCEL BSS 0 DATA FORMATS
LOC 0
CON 2LI INTERNAL
CON 2LSI SYSTEM INTERNAL
CON 2LF FOREIGN
CON 2LS STRANGER
CON 2LSL LONG STRANGER
CON 2LLI LONG BLOCK INTERNAL
LOC *O
FCEM BSS 0 TAPE DENSITIES
LOC 0
CON 0
CON 2LLO 200-BPI SEVEN TRACK TAPE
CON 2LHI 556-BPI SEVEN TRACK TAPE
CON 2LHY 800-BPI SEVEN TRACK TAPE
CON 2LHD 800-CPI NINE TRACK TAPE
CON 2LPE 1600-CPI NINE TRACK TAPE
CON 2LGE 6250-CPI NINE TRACK TAPE
CON 2LCE 38000-CPI CARTRIDGE TAPE
CON 2LAE 38000-CPI ACS CARTRIDGE TAPE
LOC *O
FCEN BSS 0 CONVERSION MODE
LOC 0
CON 0
CON 2L BCD CONVERSION (7 TRACK)
CON 2LAS ASCII
CON 2LEB EBCDIC
LOC *O
FCEO BSS 0 ALTERNATE USER AUDIT ATTRIBUTE
LOC 0
CON 1LN NOT AUDITABLE BY ALTERNATE USER
CON 1LY AUDITABLE BY ALTERNATE USER
LOC *O
FCEP BSS 0 LABEL STATUS
LOC 0
CON 2LKU UNLABELED
CON 2LNS NON-STANDARD LABEL
CON 2LKL LABELED
LOC *O
FCEQ CON 10HNON-SYM
FCER CON 1L*
* LINE DEFINITION TABLE.
* THE CHARACTER FORMAT OF THE OUTPUT BUFFER IS DEFINED HERE.
LINE1 EQU 0 STARTING CHARACTER POSITION
NMPS CFORM LINE1+1,4 NUMBER
FNPS CFORM LINE1+6,10 FILE NAME
F2PS CFORM LINE1+16,7 FILE NAME
PWPS CFORM LINE1+24,7 PASSWORD
FTPS CFORM LINE1+33,2 FILE CATEGORY
FPPS CFORM LINE1+36,2 PERMISSION MODE
ACPS CFORM LINE1+39,4 ACCESS COUNT
AFPS CFORM LINE1+43,1 ACCESS COUNT FLAG
CDPS CFORM LINE1+43,9 CREATION DATE
ADPS CFORM LINE1+53,9 ACCESS DATE
MDPS CFORM LINE1+63,9 MODIFY DATE
LINE2 EQU NWRD*10 STARTING CHARACTER POSITION
PNPS CFORM LINE2+6,10 PHYSICAL FILE NAME
P2PS CFORM LINE2+16,7 PHYSICAL FILE NAME
LBPS CFORM LINE2+24,2 LABEL STATUS
TYPS CFORM LINE2+27,2 TAPE TYPE
DFPS CFORM LINE2+30,2 DATA FORMAT
DNPS CFORM LINE2+33,2 DENSITY
CVPS CFORM LINE2+36,2 CONVERSION MODE
AUPS CFORM LINE2+39,1 ALTERNATE USER AUDITABILITY
CTPS CFORM LINE2+43,9 CREATION TIME
ATPS CFORM LINE2+53,9 ACCESS TIME
MTPS CFORM LINE2+63,9 MODIFY TIME
LINE3 EQU NWRD*10*2 STARTING CHARACTER POSITION
QNPS CFORM LINE3+22,4 SEQUENCE NUMBER
SNPS CFORM LINE3+28,4 SECTION NUMBER
SIPS CFORM LINE3+36,6 SET IDENTIFIER
GAL SPACE 4,25
** GAL - GENERATE ADMIT LIST.
*
* *GAL* POSITIONS THE USERNAMES IN *LBUF* FOR THE
* SHORT ADMIT LIST OPTION. *LBUF* IS THEN WRITTEN.
*
* ENTRY (CBUF) = ADMIT ENTRY.
*
* EXIT THE USERNAME IS IN THE CORRECT POSITION.
* *LBUF* IS WRITTEN IF LINE IS FULL.
*
* USES A - 1, 5, 6.
* B - 2.
* X - 0, 1, 2, 5, 6.
*
* CALLS AEN, ALN, SFN.
*
* MACRO WRITEC.
GAL SUBR ENTRY/EXIT
SA5 GALA CHECK LINE FILE COUNT
SX2 7
IX2 X2-X5
NG X2,GAL1 IF FIRST ENTRY
NZ X2,GAL2 IF NOT END OF LINE
WRITEC O,LBUF
GAL1 SB2 B1 ADVANCE LINE NUMBER BY 1
RJ ALN ADVANCE LINE NUMBER
SX5 B0 RESET LINE COUNT
GAL2 RJ AEN ADVANCE ENTRY NUMBER
SA1 CBUF+AEUN PICK ENTRY
MX0 42
BX1 X0*X1
ZR X1,GALX IF NO NAME
RJ SFN SPACE FILL NAME
LX6 48
SA1 CBUF+AEAC CHECK FOR EXPLICIT USER
MX0 4
LX0 40
BX1 X0*X1
ZR X1,GAL3 IF IMPLICIT USER
MX0 54
BX6 X0*X6
SA1 GALB
BX6 X1+X6
GAL3 SA6 LBUF+X5
SX6 X5+B1 ADVANCE LINE FILE COUNT
SA6 GALA
EQ GALX RETURN
GALA CON 8 LINE POSITION
GALB CON 1R*
GSL SPACE 4,25
** GSL - GENERATE SHORT LIST.
*
* *GSL* POSITIONS THE 17 CHARACTER FILENAMES IN
* *LBUF* FOR THE SHORT LIST OPTION. *LBUF* IS
* WRITTEN WHEN THE LINE IS FULL.
*
* ENTRY (CBUF) = CATALOG ENTRY
*
* EXIT *LBUF* IS WRITTEN WHEN LINE IS FULL.
*
* USES A - 1, 2, 3, 5, 6.
* B - 2.
* X - 0, 1, 2, 3, 5, 6.
*
* CALLS AEN, ALN, SFN.
*
* MACROS WRITEC, XFER.
GSL SUBR ENTRY/EXIT
SA5 GSLA CHECK LINE FILE COUNT
SX2 6
IX2 X2-X5
NG X2,GSL1 IF FIRST ENTRY
NZ X2,GSL2 IF NOT END OF LINE
WRITEC O,LBUF
GSL1 SB2 B1 ADVANCE LINE NUMBER BY 1
RJ ALN ADVANCE LINE NUMBER
SX5 B0 RESET LINE COUNT
GSL2 RJ AEN ADVANCE ENTRY NUMBER
SA1 CBUF PICK ENTRY
ZR X1,GSLX IF NO NAME
BX6 X1
SA6 GSLB
SX2 X5+B1
SA1 CBUF+B1
BX6 X1
SA6 GSLB+B1
SX6 X2+B1 ADVANCE LINE FILE COUNT
SA6 GSLA
XFER GSLB,LBUF+X5,0,2,18,18
SA2 GSLA
SX2 X2-2
SA3 LBUF+X2
MX0 6
BX3 -X0*X3
SA1 BLNK
BX6 X1+X3
SA6 A3
SA1 GSLB+B1 CHECK FOR SPECIAL CONDITION
MX0 54
BX0 -X0*X1
NZ X0,GSL3 IF SPECIAL CONDITION
SA1 GSLC
LX1 54
MX0 6
LX0 54
SA3 LBUF+X2
BX3 -X0*X3
BX6 X3+X1
SA6 A3
EQ GSLX RETURN
GSL3 SA1 BLNK
LX1 54
MX0 6
LX0 54
SA3 LBUF+X2
BX3 -X0*X3
BX6 X3+X1
SA6 A3
EQ GSLX EXIT
GSLA CON 8 LINE POSITION
GSLB BSSZ 2 FILE IDENTIFIER STORAGE
GSLC CON 1L* SPECIAL CONDITION FLAG
HDR SPACE 4,15
** HDR - GENERATES HEADERS.
*
* ENTRY (CODE) = CODE OF LISTING.
*
* EXIT HEADER LINE PLACED IN OUTPUT BUFFER.
*
* USES A - 1, 6.
* B - NONE.
* X - 0, 1, 6.
*
* CALLS NONE.
*
* MACRO WRITEC.
HDR SUBR ENTRY/EXIT
SA1 CODE INDEX INTO HEADER POINTER TABLE
SA1 X1+HDRB
BX0 X0-X0 INITIALIZE FOR LINE COUNT
BX6 X1
SA6 HDRA SET INDEX BASE OF HEADER MESSAGES FOR MODE
* LOOP PRINTING HEADER MESSAGE LINES.
HDR1 SA1 HDRA EXAMINE CURRENT MESSAGE POINTER
SA1 X1
ZR X1,HDR2 IF END OF HEADER MESSAGES
SX6 A1+B1 SET NEXT MESSAGE POINTER
SA6 HDRA
SX0 X0+B1 INCREMENT LINE COUNT
WRITEC O,X1
EQ HDR1 CONTINUE LOOP
* COMPLETE HEADER PROCESSING.
HDR2 WRITEC O,BLNK
WRITEC O,BLNK
SA1 LINE INCREMENT LINE COUNT
IX6 X1+X0
SX6 X6+2
SA6 A1
EQ HDRX RETURN
* HEADER MESSAGE BASE POINTERS.
HDRA CON 0
HDRB CON HDRC,HDRD,HDRE,HDRF,HDRG,HDRH
* HEADER MESSAGE POINTERS.
HDRC CON HDRI SHORT FILE LIST
CON 0
HDRD CON FCEY FULL FILE LIST
CON FCEU
CON 0
CON 0
HDRE CON HDRI SHORT ALTERNATE CATALOG
CON 0
HDRF CON FCEZ FULL ALTERNATE CATALOG
CON FCES
CON 0
CON 0
HDRG CON HDRJ SHORT ADMIT ENTRIES
CON 0
HDRH CON HDRK FULL ADMIT ENTRIES
CON 0
** HEADERS
HDRI DATA C* TAPE FILE NAME(S)*
HDRJ DATA C* USER NAME(S)*
HDRK DATA C* USER NAME MODE ACCESSES DATE TIME*
CON 0
IDF SPACE 4,15
** IDF - ISSUE DAYFILE MESSAGE.
*
* ENTRY (CCDR) COMMAND IMAGE.
*
* EXIT DAYFILE MESSAGE ISSUED.
*
* USES A - 1, 4, 5.
* B - 2, 6.
* X - 0, 1, 2, 4, 5.
*
* CALLS RSP.
*
* MACROS MESSAGE, MOVE.
IDF SUBR ENTRY/EXIT
MOVE 8,CCDR,IDFA
SA4 RSP1$ FWA ARGUMENT TABLE
SB6 RSP2$ FWA KEYWORD/POSITION TABLE
SA5 IDFA FWA OF RELOCATED COMMAND
SB2 1R, SKIP TO *,*
RJ RSP REMOVE SECURE PARAMETERS
MESSAGE IDFA,0,R ISSUE COMMAND TO DAYFILE
SA1 JOPR
LX1 -24
MX0 -12
BX1 -X0*X1
SX2 X1-IAOT
NZ X2,IDFX IF NOT AN INTERACTIVE JOB
MESSAGE IDFB,1 CLEAR LINE 1 OF CPA
EQ IDFX RETURN
IDFA BSS 8 SECURE PARAMETER BUFFER
IDFB CON 0 ZERO WORD
MCS SPACE 4,25
** MCS - MOVE CHARACTER STRING.
*
* ENTRY (X1) = FIRST DIRECTIVE.
* (A1) = LOCATION OF FIRST DIRECTIVE.
*
* THE CHARACTER STRING TO BE MOVED IS SPECIFIED VIA A
* DIRECTIVE. THE CONTENT OF A DIRECTIVE HAS THE FOLLOWING
* FORMAT:
*
* BITS 59 - 48 - N
* BITS 47 - 30 - INPUT WORD LOCATION
* BITS 29 - 24 - INPUT CHARACTER POSITION (1,2,...,10)
* BITS 23 - 18 - OUTPUT CHARACTER POSITION (1,2,...,63)
* BITS 17 - 0 - OUTPUT WORD LOCATION
*
* ADDITIONAL CHARACTER STRINGS MAY BE MOVED BY PROVIDING
* ADDITIONAL DIRECTIVES. A ZERO-WORD TERMINATES THE LIST
* OF DIRECTIVES. IF THE INDICATED OUTPUT CHARACTER
* INDEX IS GREATER THAN 10 THE OUTPUT WORD LOCATION
* IS AUTOMATICALLY ADJUSTED.
*
* EXIT SPECIFIED CHARACTER STRING IS MOVED.
*
* USES A - 1, 2, 3, 6.
* B - 1, 2, 3, 4, 5, 6, 7.
* X - 0, 1, 2, 3, 4, 6, 7.
MCS SUBR ENTRY/EXIT
MX0 -6 7777 7777 7777 7777 7700
MX7 -18 7777 7777 7777 7700 0000
SB1 1
MCS1 SX3 6
SB2 60
ZR X1,MCS IF END OF DIRECTIVE LIST
SB7 X1 SET B7 = DESTINATION WORD LOCATION
AX1 18
BX2 -X0*X1
IX2 X2*X3
SB5 X2
MCS2 SB5 B5-B2 ADJUST DESTINATION CHARACTER POSITION
SB7 B7+B1
NG B5,MCS3 IF ADJUSTED
ZR B5,MCS3 IF ADJUSTED
EQ MCS2 CONTINUE
MCS3 SB5 B5+B2
SB7 B7-B1
SB5 B2-B5 SET B5 = DESTINATION CHARACTER POSITION
AX1 6
BX2 -X0*X1
IX2 X2*X3
SB4 X2 SET B4 = SOURCE CHARACTER POSITION
AX1 6
SB6 X1 SET B6 = SOURCE WORD LOCATION
AX1 18
MX7 60-12
BX2 -X7*X1
SB3 X2+B1 SET B3 = N+1
SA1 A1+B1 GET NEXT MOVE DIRECTIVE
MCS4 SB3 B3-B1 DECREMENT N
ZR B3,MCS1 IF N=0 GET NEXT MOVE DIRECTIVE
SA2 B6 GET SOURCE WORD
LX2 X2,B4 POSITION CHARACTER TO LOW ORDER
BX2 -X0*X2 EXTRACT CHARACTER
SB4 B4+6 INCREMENT SOURCE CHARACTER POSITION
SB2 B4-66
NZ B2,MCS5 IF SAME WORD
SB4 6 RESET SOURCE CHARACTER POSITION
SB6 B6+B1 INCREMENT SOURCE WORD LOCATION
MCS5 SA3 B7 GET DESTINATION WORD
LX2 X2,B5 POSITION NEW CHARACTER
LX4 X0,B5 POSITION MASK
BX3 X4*X3 ERASE OLD CHARACTER
BX6 X2+X3 INSERT NEW CHARACTER
SA6 B7 STORE DESTINATION WORD
SB5 B5-6 DECREMENT DESTINATION CHARACTER POSITION
PL B5,MCS4 IF SAME WORD
SB5 54 RESET DESTINATION CHARACTER POSITION
SB7 B7+B1 INCREMENT DESTINATION WORD LOCATION
EQ MCS4 CONTINUE MOVE
PCK SPACE 4,25
** PCK - PACK FILE IDENTIFIER (17 CHARACTERS).
*
* PCK PICKS UP THE FIRST WORD OF THE FILE IDENTIFIER FROM
* THE *USB* TABLE. THE FIRST CHARACTER POSITION OF THIS
* WORD IS STORED IN SAVE. PCK STORES THE TWO WORD FILE
* IDENTIFIER IN THE STORAGE AREA SPECIFIED BY A5.
*
* ENTRY SAVE- FIRST CHARACTER POSITION OF FILENAM.
* B3 - CURRENT EMPTY POSITION OF TFIN.
* X6 - LAST WORD OF FILENAME AS RETURNED FROM *POP*.
* A5 - ADDRESS OF STORAGE AREA
*
* EXIT B3 IS INCREMENTED BY ONE WORD AND THE TWO-WORD
* FILENAME HAS BEEN STORED.
*
* USES A - 1, 3, 4, 6, 7.
* B - 2, 3, 4.
* X - 1, 3, 4, 6, 7.
*
* CALLS SFN.
PCK5 SA1 PCKB
PCK SUBR ENTRY/EXIT
BX7 X1 SAVE DELIMITER
SA7 PCKB
GT B5,B1,ERR IF FILENAME .GT. 2 WORDS
NZ X6,PCK1 IF FILENAME .NE. 20 CHARACTERS
NZ B5,ERR IF FILENAME .EQ. 20 CHARACTERS
PCK1 SB2 54D
BX7 X7-X7
SB4 B0
SA4 SAVE
SA3 PCKD CHECK FOR LITERAL
SA1 X4
BX3 X3-X1
NZ X3,PCK2 IF NOT LITERAL
SX4 X4+1
PCK2 ZR X6,PCK3 IF FILENAME .GE. 10 CHARACTERS
ZR B5,PCK4 IF FILENAME .LT. 10 CHARACTERS
PCK3 SA3 X4+B4
LX3 B2
BX7 X3+X7
SB2 B2-6
SB4 B4+B1
NZ B2,PCK3 IF 10 CHARACTERS NOT YET PACKED
SA3 X4+B4
BX7 X3+X7
SA7 A5+B3
SB3 B3+B1
MX0 42
BX3 -X0*X6
NZ X3,ERR8
BX1 X6
RJ SFN SPACE FILL NAME
SA6 A5+B3
EQ PCK5 RESTORE DELIMITER WORD AND RETURN
PCK4 BX1 X6
RJ SFN SPACE FILL NAME
SA6 A5+B3
SB3 B3+B1
SA1 PCKA
BX6 X1
SA6 A5+B3
EQ PCK5 RESTORE DELIMITER WORD AND RETURN
PCKA CON 10L
PCKB CON 0 STORAGE FOR DELIMITER
PCKD CON 1R$ LITERAL DESIGNATOR
PVS SPACE 4,20
** PVS - PAD VSN WITH CHARACTER *0*.
*
* ENTRY (X6) = LEFT JUSTIFIED UNPADDED VSN.
*
* EXIT (X6) = PADDED VSN. CHARACTER *0* INSERTED
* BEFORE FIRST NUMERIC CHARACTER UNTIL
* VSN IS SIX CHARACTERS LONG.
*
* USES A - 1, 3.
* B - 2, 3.
* X - 0, 1, 2, 3, 4, 6, 7.
PVS SUBR ENTRY/EXIT
SA3 =1L
MX0 6 GET LENGTH OF UNPADDED VSN
BX2 X6
SX4 B0
PVS1 BX1 X0*X6 CHECK FOR CHARACTER
BX7 X1-X3
ZR X7,PVS2 IF CHARACTER IS A BLANK
ZR X1,PVS2 IF END OF CHARACTERS
SX4 X4+B1
LX6 6
EQ PVS1 CONTINUE
PVS2 SX1 6 GET CORRECT NUMBER OF ZEROS
IX4 X1*X4
SB2 X4
SB3 B2-6 SET UP MASK
AX0 B3,X0
BX2 X0*X2
SA1 =36R000000
AX1 B2
SB3 60
MX0 -6
SX6 B0
PVS3 BX7 X2 SAVE END OF VSN
LX2 6 CHECK CHARACTER
BX3 -X0*X2
ZR X3,PVS4 IF END OF CHARACTERS
SX4 X3-1R0
PL X4,PVS4 IF NUMERIC CHARACTER
LX6 6 BUILD FIRST PART OF VSN
BX6 X6+X3
BX2 X0*X2
SB3 B3-6
EQ PVS3 CHECK NEXT CHARACTER
PVS4 SB2 B2-36 ADD ZEROS TO VSN
AX6 B2
BX6 X6+X1
BX6 X6+X7 ADD END OF VSN
SB3 B3+B2
LX6 B3
EQ PVSX RETURN
PVT SPACE 4,25
** PVT - PROCESS *VSN* OR *TFN* LIST.
*
* ENTRY B6 - NEXT CHARACTER POSITION OF *USB* BUFFER
*
* EXIT VSN(S) OR TFN(S) ARE STORED IN *TFIN*.
*
* USES A - 3, 5, 6.
* B - 3, 7.
* X - 3, 5, 6.
*
* CALLS PCK, POP.
*
PVT SUBR ENTRY/EXIT
RJ POP PICK OUT NEXT WORD
NG B5,ERR IF ERROR ENCOUNTERED
PVT1 SA3 INDX
SB3 X3
SB7 TFINL
EQ B3,B7,ERR9 EXCEEDED FILENAME LIMIT
SA5 TFIN
RJ PCK STORE FILENAME
SX6 B3+B1
SA6 INDX
NG X2,PVTX IF NO MORE ARGUMENTS
SB3 X1-1R, CHECK FOR COMMAS
NZ B3,PVTX IF END OF FILE NAME LIST
SX6 B6
SA6 SAVE
RJ POP PICK OUT NEXT PARAMETER
NG B5,ERR8 IF ERROR ENCOUNTERED
EQ PVT1
PTP SPACE 4,25
** PTP - PRINT TITLE PAGE.
*
* ENTRY (PAGE) = PAGE NUMBER
*
* EXIT TITLE PAGE PRINTED
* (LINE) RESET TO 2.
*
* USES A - 1, 6.
* B - 2.
* X - 0, 1, 6.
*
* CALLS CDD.
*
* MACROS CLOCK, DATE, WRITEC, WRITEH.
PTP SUBR ENTRY/EXIT
SA1 PAGE ADVANCE TO NEXT PAGE
SX1 X1+B1
BX6 X1
SA6 A1
RJ CDD CONVERT TO DECIMAL
MX0 48
BX6 -X0*X6
SA1 PTPG
BX1 X0*X1
BX6 X1+X6
SA6 PTPG
DATE PTPE
CLOCK PTPF
SB2 6 FOR TELEX ORIGIN JOBS
SA1 DTYP
ZR X1,PTP1 IF TERMINAL FILE
WRITEH O,PTPA,B1
SB2 7 FOR NON-TELEX ORIGIN JOBS
PTP1 WRITEH O,PTPB,B2+ WRITE TITLE LINE
SA1 PTPH WRITE SUB TITLE
WRITEC O,X1
SX6 3 RESET LINE NUMBER
SA6 LINE
EQ PTPX RETURN
PTPA CON 1H1
PTPB CON 10H CATALOG O
PTPC CON 0
PTPD CON 10H
CON 10H
PTPE CON 0
PTPF CON 0
PTPG DATA 8L PAGE
PTPH CON BLNK
PTPI CON 1H
CON 10HFILE NAME
PTPJ BSSZ 2
PTPK CON 1H
CON 10HALTERNATE
CON 10HCATALOG
PTPL CON 0
RQS SPACE 4,25
** RQS - REQUEST STORAGE.
*
* ENTRY (X1) = CURRENT BUFFER SIZE.
*
* EXIT (X1) = NEGATIVE IF NO MORE STORAGE AVAILABLE.
* (CFL) = NEW CURRENT FL.
* (CBS) = NEW CURRENT BUFFER SIZE.
*
* USES X - 1, 3, 6.
* A - 1, 3, 6.
*
* MACROS MEMORY.
RQS SUBR ENTRY/EXIT
SA3 MXBS GET MAXIMUM BUFFER SIZE
SX6 X1+FLIN ADD POSSIBLE INCREMENT
IX1 X3-X6
NG X1,RQSX IF NO MORE SPACE
SA3 CRFL SET POSSIBLE NEW FL
SX6 X3+FLIN
SA6 A3
LX6 30
SA6 RQSA
MEMORY CM,RQSA,R,,NA
SA3 RQSA
SA1 CRFL
AX3 30
IX1 X3-X1
NG X1,RQSX IF NO MORE ALLOCATED
SA1 CSBS UPDATE CURRENT SORT BUFFER SIZE
SX6 X1+FLIN
SA6 A1
EQ RQSX RETURN
RQSA CON 0 FL CONTROL WORD
SEC SPACE 4,15
** SEC - SHORT LIST ERROR CHECK
*
* THIS ROUTINE CHECKS FOR OFF-SITE STATUS, NOT RESERVED
* STATUS, CATALOG IN RECOVERED MODE, AND CATALOG ERROR
* SET. THIS ROUTINE IS CALLED BY *SFL* AND *SSL* TO CHECK
* FOR THESE ERRORS.
*
* ENTRY SHORT LIST FLAG SET AND BUFFER FILLED.
*
* EXIT (X2) = (CBUF+CEST)
* (X5) = FILE NAME MASK.
*
* USES A - 2.
* X - 1.
*
SEC SUBR ENTRY/EXIT
MX5 60 PRESET SPECIAL CONDITION FLAG
SA2 CBUF+TCEL+1
MX1 -18
BX2 -X1*X2
SX1 TVVS CHECK SITE STATUS
BX1 X2*X1
ZR X1,SEC1 IF SITE NOT SET SKIP
MX5 -6
SA2 CBUF+CEST GET STATUS
EQ SECX RETURN
SEC1 SX1 RTVS CHECK RESERVE STATUS
BX1 X2*X1
NZ X1,SEC2 IF RESERVE SET SKIP
MX5 -6
SA2 CBUF+CEST GET STATUS
EQ SECX RETURN
SEC2 SA2 CBUF+CEST GET STATUS
SX1 2000B
BX1 X1*X2
ZR X1,SEC3 IF RECOVER NOT SET
MX5 -6
EQ SECX RETURN
SEC3 SX1 2
BX1 X1*X2
ZR X1,SECX IF ERROR NOT SET
MX5 -6
EQ SECX RETURN
SST SPACE 4,15
** SST - SHELL SORT TABLE.
*
* SST SORTS A TABLE USING A SHELL SORTING TECHNIQUE.
* THE TABLE IS SORTED IN PLACE INTO ASCENDING ORDER.
* ALL ELEMENTS SHOULD BE OF THE SAME SIGN.
*
* ORIGIN OF TECHNIQUE IS CACM VOL 6 NUMBER 5 MAY 1963, P209.
* FIRST CODED BY R. HOTCHKISS IN *SORT1*.
* REVISED BY L. A. LIDDIARD.
* REVISED BY L. A. GILBERTSON, FOR 17 CHAR. WORD.
*
* ENTRY (B1) = 1.
* (B7) = ADDRESS OF TABLE TO BE SORTED.
* (X1) = NUMBER OF WORDS IN ARRAY.
*
* EXIT TABLE SORTED.
*
* USES X - 1, 2, 3, 4, 6, 7.
* B - 2, 3, 4, 5.
* A - 1, 2, 6, 7.
*
* CALLS NONE.
SST1 SA7 B5-B4 T(J+K) = S
BX7 X5
SA7 A7+B1
SB2 B2+2 I = I+2
EQ B2,B3,SST4 IF END OF TABLE
SST2 SA2 B2 S = T(I)
SA5 B2+B1
SB5 B2+B4 J = I-K
BX7 X2
SST3 SA1 B5 T(J)
IX3 X2-X1 COMPARE S AND T(J)
PL X3,SST1 IF ELEMENTS IN ORDER
BX6 X1 T(J+K) = T(J)
SB5 B5+B4 J = J-K
SA6 A1-B4
SA1 A1+B1
BX6 X1
SA6 A1-B4
GE B5,B7,SST3 IF J " FIRST
EQ SST1 MOVE ELEMENT
SST4 AX4 1 K = K/2
MX0 -1
BX4 -X0+X4
SX3 X4+1
NZ X3,SST5
SB4 B0
EQ SST6
SST5 SB4 X4 (B4) = -K
SST6 SB2 B7-B4 I = FIRST+K
NZ X4,SST2 IF K " 0
SST SUBR ENTRY/EXIT
SB3 B7+X1 (B3) = LAST+1
BX4 -X1
EQ SST4 ENTER SORT LOOP
SVM SPACE 4,25
*** SVM - SET VARIABLE MESSAGE
*
* SVM SETS THE VARIABLE AUDIT MESSAGE *XXX FOUND*.
*
* ENTRY ADTA = CONTAINS THE NAME, ZERO FILLED.
*
* EXIT ADTA CONTAINS THE MESSAGE.
*
* USES A - 1.
* X - 0, 1, 2.
* B - 2, 3, 4, 5.
*
* CALLS NONE.
*
* MACROS XFER.
SVM SUBR ENTRY/EXIT
MX0 -6
SB2 B0 WORD COUNT
SB3 B0 CHARACTER COUNT
SB4 10D MAXIMUM CHARACTERS
SA1 ADTA+B1
ZR X1,SVM1 IF NAME .LE. 10 CHARACTERS
SB2 B1
SVM1 SA1 ADTA+B2
BX2 -X0*X1
LX0 6
SB3 B3+B1
EQ B3,B4,SVM2 IF 10 CHARACTERS PROCESSED
ZR X2,SVM1 IF ZERO CHARACTER
NE B1,B3,SVM2 IF NOT AT A WORD BOUNDARY
SB2 B2+B1 INCREMENT WORD COUNT OFFSET
SB3 B4+B1 SET ZERO CHARACTER COUNT OFFSET
SVM2 SB5 B4-B3 SHIFT COUNT
SB5 B5+B1
XFER SVMF,ADTA+B2,0,B5,7,7
EQ SVMX
SVMF CON 7L FOUND.
XFR SPACE 4,25
*** XFR - TRANSFER/VALIDATE CHARACTER STRING.
*
* *XFR* PERFORMS A CHARACTER STRING TRANSFER AND VALIDATES
* EACH CHARACTER MOVED ACCORDING TO THE SETTINGS OF THE
* VALIDATION FLAGS OF THE SOURCE CONTROL WORD. THE TRANSFER
* CAN BEGIN AT ANY CHARACTER OF THE SOURCE AND OBJECT FIELDS
* AND WILL CONTINUE UNTIL *XCC* CHARACTERS OF THE SOURCE
* HAVE BEEN TRANSFERRED. THE DISPOSITION OF THE LAST OBJECT
* WORD IS SPACE FILLED IF *XCC* OF THE SOURCE FIELD IS
* LESS THEN *XCC* OF THE OBJECT FIELD. THE SOURCE CHARACTER
* STRING WILL BE TRUNCATED IF THE *XCC* OF THE OBJECT IS
* LESS THEN *XCC* OF THE SOURCE. THE ROUTINE WILL NOT
* DESTROY ANY OF THE EXISTING INFORMATION OUTSIDE OF THE
* DEFINED RANGE OF THE TRANSFER.
*
* ENTRY (X1) = SOURCE CONTROL WORD.
* (X2) = OBJECT CONTROL WORD.
*
* EXIT (X1) = 0 IF NO ERRORS.
* (X1) NOT = 0 IF ERRORS.
*
* CONTROL WORD FORMAT.
*
* VFD 12/0,18/FWA,3/FLG,9/BWP,9/BCP,9/XCC
*
* FWA FIRST WORD ADDRESS OF BUFFER.
* FLG VALIDATION FLAG.
* 2 VALIDATE NUMERIC CHARACTERS.
* 4 VALIDATE ALPHABETIC CHARACTERS.
* 6 VALIDATE ALPA/NUMERIC CHARACTERS.
* 7 NO VALIDATION.
* BWP BEGINNING WORD POSITION IN FWA.
* BCP BEGINNING CHARACTER POSITION IN BWP.
* XCC TRANSFER CHARACTER COUNT.
*
* USES A - 1, 2, 3, 4, 5, 6.
* X - ALL.
* B - ALL.
*
XFR12 SB4 B7-B4 REMAINING SHIFT COUNT
LX6 X2,B4 REALIGN LAST WORD
BX1 X6
RJ SFN SPACE FILL NAME
SA6 A2 STORE LAST OBJECT WORD
ZR X4,XFRX IF NO VALIDATION CHECK
NG X5,XFRX IF NOT DATA TRANSFER ERROR
SX1 B1+ SET ERROR FLAG
XFR SUBR ENTRY/EXIT
MX0 -9
BX6 -X0*X1 SOURCE CHARACTER COUNT
AX1 9
BX7 -X0*X2 OBJECT CHARACTER COUNT
SB2 X6 (B2) = SOURCE CHARACTER COUNT
AX2 9
IX6 X7-X6
SB3 X6
GT B3,XFR0 IF SOURCE < OR = OBJECT
SX6 B0
SB2 X7 SOURCE = OBJECT CHARACTER COUNT
XFR0 SA6 XFRA OBJECT OVERFLOW COUNT
BX3 -X0*X1
SB3 X3 (B3)= SOURCE BCP
AX1 9
BX3 -X0*X2
SB4 X3 (B4)= OBJECT BCP
AX2 9
BX3 -X0*X1
SB5 X3 (B5)= SOURCE BWP
AX1 9
BX3 -X0*X2
SB6 X3 (B6)= OBJECT BWP
BX3 X1
LX3 59-2
MX4 0
PL X3,XFR1 IF NOT ALPHANUMERIC FORMAT
SA4 XFRB GET ALPHANUMERIC VALIDATION WORD
XFR1 SA5 XFRC GET NUMERIC VALIDATION WORD.
LX3 59-58
PL X3,XFR2 IF NOT NUMERIC FORMAT
BX4 X4+X5
XFR2 LX3 59-57-59+58
PL X3,XFR3 IF NO SPECIAL CHARACTERS ALLOWED
MX4 60
XFR3 MX0 -18
AX1 3
BX1 -X0*X1
SA1 X1+B5 (A1)= SOURCE FWA
AX2 12
BX2 -X0*X2
SX6 6 CHARACTER COUNT MULTIPLIER
SA2 X2+B6 (A2)= OBJECT FWA
SX7 B3 SOURCE CHARACTER POSITION
IX7 X6*X7
SB3 X7 RESET (B3)
SX7 B4 OBJECT CHARACTER POSITION
IX7 X6*X7
SB4 X7 RESET (B4)
LX1 X1,B3 ALIGN TO FIRST CHARACTER(SOURCE)
LX2 X2,B4 ALIGN TO FIRST CHARACTER(OBJECT)
MX0 6 CHARACTER MASK
SB7 60 SHIFT LIMIT
XFR4 BX3 X0*X1 SAVE UPPER 6 BITS OF SOURCE
ZR X4,XFR5 IF NO VALIDATION CHECK
SB5 6
LX5 X3,B5
SB5 X5
LX5 X4,B5
PL X5,XFR9 IF INCORRECT CHARACTER
XFR5 BX2 -X0*X2 CLEAR UPPER 6 BITS OF OBJECT
BX2 X2+X3 MASK INTO OBJECT WORD
LX1 59-53
SB3 B3+6
EQ B3,B7,XFR7 IF SOURCE SHIFT LIMIT
XFR6 LX2 59-53
SB4 B4+6
SB2 B2-B1
ZR B2,XFR9 IF LAST CHARACTER TRANSFERRED
EQ B4,B7,XFR8 IF OBJECT SHIFT LIMIT
EQ XFR4 GET NEXT CHARACTER
XFR7 SA1 A1+B1 GET NEXT SOURCE WORD
SB3 B0 CLEAR SOURCE BCP
EQ XFR6 CHECK OBJECT SHIFT LIMIT
XFR8 BX6 X2
SA6 A2 STORE OBJECT WORD
SA2 A2+B1 GET NEXT OBJECT WORD
SB4 B0 CLEAR OBJECT BCP
EQ XFR4 GET NEXT CHARACTER
XFR9 SA3 XFRA CHECK FOR UNDERFLOW
SB2 X3+0 (B2) = UNDERFLOW COUNTER
SX3 1R
SX1 B0
LX3 59-5
XFR10 ZR B2,XFR12 IF LAST FILL CHARACTER
EQ B4,B7,XFR11 IF OBJECT SHIFT LIMIT
BX2 -X0*X2
SB4 B4+6
BX2 X2+X3 MASK IN SPACE
SB2 B2-B1
LX2 59-53
EQ XFR10 SPACE FILL NEXT CHARACTER
XFR11 BX6 X2
SA6 A2 STORE OBJECT WORD
SB4 B0 CLEAR OBJECT BCP
SA2 A2+B1 GET NEXT OBJECT WORD
EQ XFR10 GET NEXT CHARACTER
* *XFRB* AND *XFRC* ARE THE ALPHABETIC AND NUMERIC VALIDATION
* WORDS. EACH BIT SET CORRESPONDS TO THE NUMERICAL DISPLAY
* CODE VALUE FOR EACH VALID CHARACTER. EACH CHARACTER CAN BE
* TESTED BY SHIFTING THE VALIDATION WORD LEFT BY THE DISPLAY
* CODE VALUE AND TESTING FOR THE BIT BEING SET.
* *XFRB* HAS BEEN PRESET FOR A - Z AND *SPACE*.
* *XFRC* HAS BEEN PRESET FOR 0 - 9.
XFRA CON 0 OVERFLOW COUNTER
XFRB DATA 37777777700000040000B
XFRC DATA 00000000077760000000B
ZFD SPACE 4,15
** ZFD - DISPLAY CODE ZERO FILL WORD. (EXTRACTED FROM PFTRACK)
*
* ENTRY (X6) = WORD WITH BINARY ZEROES.
*
* EXIT (X6) = WORD WITH REPLACED DISPLAY CODE ZEROES
*
* USES X - 0, 2, 3, 4, 5, 6.
ZFD SUBR ENTRY/EXIT
BX3 X6
SX2 12B
MX0 -6
ZFD1 BX5 -X0*X3
ZR X5,ZFD3 IF BINARY ZERO
LX3 54
ZFD2 SX2 X2-1 DECREMENT CHARACTER COUNT
NZ X2,ZFD1 IF NOT DONE WITH WORD
BX6 X3
EQ ZFDX RETURN
ZFD3 BX3 X0*X3
SX4 33B
BX3 X4+X3
LX3 54
EQ ZFD2 CONTINUE CONVERSION
SPACE 4
*CALL COMCARM
*CALL COMCCDD
*CALL COMCCIO
*CALL COMCCPM
*CALL COMCEDT
*CALL COMCMVE
*CALL COMCPOP
*CALL COMCRSP
*CALL COMCSCB
*CALL COMCSFN
*CALL COMCSNM
*CALL COMCSTF
*CALL COMCSYS
*CALL COMCUSB
*CALL COMCWTC
*CALL COMCWTH
*CALL COMCWTW
SPACE 4
** BUFFERS.
USE LITERALS
LBUF EQU * OUTPUT LINE BUFFER
CBUF EQU LBUF+CHDR*NWRD CATALOG READ BUFFER
IBUF EQU CBUF+301D INPUT BUFFER
OBUF EQU IBUF+IBFL OUTPUT BUFFER
SBUF EQU OBUF+OBFL CATALOG SORT BUFFER
RFL= EQU SBUF+SBFL DEFAULT FL
PMSG BSS 0
DATA 10H"EM" PASSWO
DATA 10HRD:"NL" HHH
DATA 10HHHHHH"CR" I
DATA 10HIIIIIII"CR"
DATA 10H ########
DATA 10H"CR""CB""EL"''''
PMSGL EQU *-PMSG
END