IDENT TFSP,ORIG ABS SST SYSCOM B1 ENTRY TFSP ENTRY TFSPE ENTRY TFSPR ENTRY RFL= ENTRY SSJ= TITLE TFSP - TAPE FILE SUPERVISOR PROCESSOR. *COMMENT TAPE FILE SUPERVISOR PROCESSOR. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. TFSP SPACE 4,10 *** TFSP - TAPE FILE SUPERVISOR PROCESSOR. * * J. D. HOLMBECK. 82/10/01. TFSP SPACE 4,10 *** TFSP COMMAND. * * THE TAPE FILE SUPERVISOR, TFSP, CREATES AND MANAGES THE TAPE * CATALOG FILE. * * TFSP CAN MANIPULATE EITHER THE FAMILY TAPE CATALOG FILE (A * FAST-ATTACHED FILE NAMED *ZZZZZFC* ON USER INDEX 377777) OR * LOCAL FILE IMAGES OF THE TAPE CATALOG FILE. * * TFSP CAN ONLY ACCESS THE FAMILY TAPE CATALOG FILE IF IT IS * CALLED FROM A SYSTEM ORIGIN JOB OR IT IS CALLED FROM A JOB * THAT HAS A USER NAME THAT HAS BEEN VALIDATED TO ACCESS THE * FILE. * * ONLY ONE TFSP JOB CAN ACCESS A TAPE CATALOG FILE OF A FAMILY * AT ONE TIME. HOWEVER, SEVERAL TFSP JOBS CAN BE ACCESSING * TAPE CATALOG FILES OF DIFFERENT FAMILIES AT THE SAME TIME. TFSPE SPACE 4,10 *** TFSPE COMMAND. * * TFSPE IS CALLED BY THE SYSTEM WHEN AN ERROR IS DISCOVERED IN * A VSN OR TAPE FILE ENTRY. * * TFSPE CAN BE USED BY SITE PERSONNEL TO CLEAR INTERLOCKS IN * THE TAPE CATALOG FILE THAT PREVENT NORMAL TFSP JOBS FROM * ACCESSING THE TAPE CATALOG FILE. * * WHEN TFSPE IS EXECUTED, ANY OTHER TFSP JOB THAT IS ACCESSING * THE TAPE CATALOG FILE OF THE SAME FAMILY WILL BE ABORTED. * * TFSPE CAN ONLY BE USED FROM A SYSTEM ORIGIN JOB. * * TFSPE IS EQUIVALENT TO THE TFSP(OP=K) COMMAND WITH * THE FOLLOWING THREE EXCEPTIONS - * * 1. THE INITIAL LEFT SCREEN K-DISPLAY INCLUDES THE FOLLOWING * INFORMATION - * * TAPE CATALOG ERROR DISCOVERED AT - YY/MM/DD, HH.MM.SS. * * THE ERROR IS EXPLAINED IN THE MESSAGE BUFFER. * * 2. THE INTERLOCK THAT PREVENTS MULTIPLE TFSP JOBS FROM * ACCESSING A TAPE CATALOG FILE IS CLEARED AND THEN RESET SO * THAT ONLY THE TFSPE JOB CAN ACCESS THE FILE. ANY OTHER * TFSP JOB ATTEMPTING TO ACCESS THE TAPE CATALOG FILE WILL * BE ABORTED. * * 3. IF THE RF PARAMETER IS SPECIFIED, TFSPE WILL REMOVE THE * FAST-ATTACHED STATUS OF THE TAPE CATALOG FILE. THIS CAN * BE USED TO PREVENT ACCESS TO THE TAPE CATALOG FILE AFTER * TFSPE HAS COMPLETED. WHEN THE FILE IS MADE FAST-ATTACHED * AGAIN VIA THE *TMSON* COMMAND, ALL BUSY INTERLOCKS * IN THE TAPE CATALOG FILE WILL BE CLEARED. SPACE 4,10 *** TFSP AND TFSPE COMMAND FORMATS. * * TFSP( P1 , P2 , ... PN ) Z OPTION DIRECTIVES * TFSPE( P1 , P2 , ... PN ) * * WHERE P1 , ... , PN CAN BE THE FOLLOWING - * * I = FILENAM * INPUT FILE WITH TFSP DIRECTIVES. IGNORED BY OP=K AND * OP=Z OPTIONS. IF I=0, NO INPUT FILE IS USED. DEFAULT * IS INPUT. VALID FOR TFSP ONLY. * * L = FILENAM * OUTPUT FILE. TFSP LISTS INPUT DIRECTIVES, ERRORS * ENCOUNTERED, AND INFORMATION AS SPECIFIED BY THE AUDIT * DIRECTIVES (AUDITUN, AUDITVS, AUDITCN, AUDITFI, * AUDITFV, AUDITCH, AND AUDITAU). IF L=0, NO OUTPUT * FILE IS GENERATED. DEFAULT IS OUTPUT. * * P = FILENAM * OLD TAPE CATALOG FILE. IGNORED EXCEPT FOR LOCAL FILE * (LF) MODE. IF P=0, A NEW TAPE CATALOG FILE WILL BE * CREATED. DEFAULT IS OLD. VALID FOR TFSP ONLY. * * N = FILENAM * NEW OR UPDATED TAPE CATALOG FILE. IGNORED EXCEPT FOR * LOCAL FILE (LF) MODE. DEFAULT IS NEW IF P=0. DEFAULT * IS *FILENAM* IF P=*FILENAM*. VALID FOR TFSP ONLY. * * S = FILENAM * SOURCE FILE TO RECEIVE TFSP INPUT DIRECTIVES GENERATED * FROM INFORMATION ON THE TAPE CATALOG FILE. THE SOURCE * FILE IS GENERATED BY THE SOURCE DIRECTIVES (SOURCE, * SOURCUN, SOURCVS, SOURCCH, SOURCCN, SOURCFI, AND * SOURCFV). IF S=0, NO SOURCE FILE IS GENERATED. * DEFAULT IS SOURCE. * * SS = FILENAM * MACHINE READABLE FILE. TFSP LISTS INFORMATION TO * *FILENAM* IN MACHINE READABLE FORMAT AS SPECIFIED BY * THE MACHINE READABLE AUDIT DIRECTIVES (MREADUN, * MREADVS, MREADCH, MREADCN, MREADFI, AND MREADFV). IF * SS=0, NO MACHINE READABLE FILE IS GENERATED. DEFAULT * IS NO MACHINE READABLE FILE. * * OP = OPTION * TFSP OPTION. VALID VALUES ARE - * * I - READ TFSP DIRECTIVES FROM THE FILE SPECIFIED BY * THE I PARAMETER. * * K - READ TFSP DIRECTIVES FROM K-DISPLAY INPUT. * DISPLAY TAPE CATALOG FILE INFORMATION AT THE * K-DISPLAY. VALID ONLY FOR SYSTEM ORIGIN JOBS. * * Z - READ TFSP DIRECTIVES FROM THE DELIMITED STRING * FOLLOWING THE COMMAND TERMINATOR. THE * FIRST CHARACTER FOLLOWING THE TERMINATOR IS * ASSUMED TO BE THE DELIMITER. * * DEFAULT IS OP=I. VALID FOR TFSP ONLY. * * LF * LOCAL FILE MODE. IF SPECIFIED, TFSP WILL ACCESS AND * UPDATE THE LOCAL FILES SPECIFIED BY THE P AND N * PARAMETERS. IF NOT SPECIFIED, TFSP WILL ACCESS AND * POSSIBLY UPDATE THE FAST-ATTACHED FILE *ZZZZZFC* ON * USER INDEX 377777. FOR NON-SYSTEM ORIGIN JOBS, IF THE * LF PARAMETER IS NOT SPECIFIED, TFSP WILL ABORT IF THE * USER HAS NOT BEEN VALIDATED TO ACCESS THE FAMILY TAPE * CATALOG FILE VIA THE VALIDAT DIRECTIVE. * VALID FOR TFSP ONLY. * * A * ABORT MODE. IF SPECIFIED, TFSP WILL ABORT WHEN THE * FIRST ERROR IS ENCOUNTERED WHILE PROCESSING THE * DIRECTIVES. IF NOT SPECIFIED, TFSP WILL ISSUE AN * ERROR MESSAGE TO THE OUTPUT FILE AND DAYFILE, BUT WILL * CONTINUE PROCESSING WITH THE DIRECTIVES ON THE NEXT * LINE OF INPUT. ABORT MODE IS USUALLY SELECTED WHEN * TFSP IS RUN WITH NON-INTERACTIVE INPUT SUCH AS RUNNING * TFSP IN A BATCH ORIGIN JOB. ABORT MODE IS USUALLY NOT * SELECTED WHEN TFSP IS RUN WITH INTERACTIVE INPUT SUCH * AS RUNNING TFSP WITH THE K-DISPLAY OR FROM A * TIME-SHARING TERMINAL. VALID FOR TFSP ONLY. * * NV * NO VERIFY MODE. IGNORED IF NOT LOCAL FILE (LF) MODE. * IGNORED IF NOT CREATING NEW TAPE CATALOG FILE (P=0). * IF SPECIFIED, TFSP WILL NOT CHECK THE STATUS OF VSNS * SPECIFIED BY THE VSN DIRECTIVE, TAPE FILES SPECIFIED * BY THE FILE OR FILEV DIRECTIVE, OR ALTERNATE USERS * SPECIFIED BY THE AUSER DIRECTIVE. THIS CAN SPEED * PROCESSING OF LARGE TFSP INPUT FILES. HOWEVER, THIS * CAN ALSO CREATE ERRORS IN THE TAPE CATALOG FILE IF THE * INPUT FILE IS SET UP INCORRECTLY. VALID FOR TFSP * ONLY. * * RT * RETRY ON CATALOG INTERLOCK OPTION. IGNORED FOR LOCAL * FILE (LF) MODE. IF SPECIFIED, TFSP WILL NOT ABORT IF * THE FAST-ATTACHED TAPE CATALOG FILE IS INTERLOCKED BY * ANOTHER TFSP JOB. TFSP WILL WAIT UNTIL THE OTHER JOB * IS COMPLETE SO IT CAN ACCESS THE TAPE CATALOG FILE. * GENERALLY, THE RETRY OPTION IS SELECTED WHEN TFSP IS * RUN IN A PROCEDURE FILE OR IN A BATCH ORIGIN JOB. * VALID FOR TFSP ONLY. * * FM = FAMILY * FAMILY THAT THE TAPE CATALOG FILE RESIDES ON. * INCORRECT ENTRY IF NOT A SYSTEM ORIGIN JOB. INCORRECT * ENTRY IF IN LOCAL FILE (LF) MODE. DEFAULT IS THE * FAMILY OF THE CALLING JOB. A NON-SYSTEM ORIGIN JOB IS * FORCED TO ACCESS THE TAPE CATALOG FILE FOR ITS FAMILY. * * CF = FILENAM * COPY FILE FOR TFSPE. IF THIS PARAMETER IS SPECIFIED * ON THE TFSPE COMMAND, TFSPE WILL ATTEMPT TO DEFINE A * DIRECT-ACCESS FILE ON USER NAME *SYSTEMX* WITH THE * PERMANENT FILE NAME *FILENAM*. TFSPE WILL THEN COPY * THE CURRENT TAPE CATALOG FILE TO *FILENAM*. IF THIS * PARAMETER IS NOT SPECIFIED, NO COPY WILL TAKE PLACE. * IF *CF* IS SPECIFIED WITHOUT A FILE NAME, *ZFCCOPY* IS * ASSUMED. * * CLEAR * CLEAR INFORMATION FROM TAPE CATALOG FILE FOR TFSPE. * IF THIS PARAMETER IS SPECIFIED ON THE TFSPE COMMAND, * TFSPE WILL OVERWRITE THE TAPE CATALOG FILE AS AN EMPTY * TAPE CATALOG FILE. THE FOREIGN CATALOG AND CATALOG * ERROR STATUSES ARE SET. THE *CLEAR* PARAMETER CAN * ONLY BE SPECIFIED IF THERE IS A CATALOG ERROR ON THE * CURRENT TAPE CATALOG FILE AND THE *CF* PARAMETER IS * ALSO SPECIFIED ON THE TFSPE COMMAND. TFSPR SPACE 4,15 *** TFSPR COMMAND. * * TFSPR(FM=FAMILY) * * FAMILY = NAME OF FAMILY TO PROCESS. * * THE TFSPR COMMAND WILL CLEAR ALL TAPE CATALOG INTERLOCKS * HELD BY OTHER MACHINES SHARING THE CATALOG AT THE TIME OF A * SYSTEM FAILURE. TFSPR NEED ONLY BE RUN IF THE FAILED * MACHINE(S) WILL NOT REDEADSTARTED. THE MREC UTILITY MUST BE * RUN ON THE CATALOG DEVICE FOR EACH MACHINE TO BE RECOVERED * PRIOR TO RUNNING TFSPR. FAILURE TO DO SO WILL PREVENT THE * CATALOG INTERLOCKS FOR THAT MACHINE FROM BEING RELEASED. SPACE 4,10 *** DAYFILE MESSAGES. * * FOLLOWING ARE THE DAYFILE MESSAGES ISSUED BY TFSP. * ADDITIONAL MESSAGES MAY BE ISSUED BY THE SYSTEM OR BY THE PP * ROUTINES CALLED BY TFSP. CONSULT THE DOCUMENTATION FOR THE * PP *TFM* FOR A LISTING OF ITS DAYFILE MESSAGES. * * TFSP COMPLETE. * TFSP NORMAL COMPLETION. * * TFSP ABORTED. * CONTROL POINT ERROR FLAG IS SET. CONSULT DAYFILE * LISTING FOR REASON. * * TFSP ABORTED BY USER. * TFSP RUNNING IN AN INTERACTIVE JOB WAS ABORTED VIA * USER BREAK PROCESSING. * * PARAMETER ERROR - PARAM. * THE SPECIFIED PARAMETER IS NOT A TFSP PARAMETER. * * INCORRECT OPTION - OP. * THE SPECIFIED OPTION IS NOT ALLOWED WITH THE OP * PARAMETER. * * DIRECTIVE ERRORS. * ERRORS WERE ENCOUNTERED WHILE PROCESSING THE * DIRECTIVES. CONSULT THE OUTPUT LISTING FOR REASON. * * INCORRECT ACCESS. * USER WHO WAS NOT VALIDATED ATTEMPTED TO ACCESS THE * FAMILY TAPE CATALOG FILE. * * FAMILY NOT ACTIVE. * A FAST-ATTACHED FILE NAMED *ZZZZZFC* WAS NOT FOUND ON * THE FAMILY. * * FILE NAME CONFLICT - LFN. * SPECIFIED FILE USED FOR MORE THAN ONE PURPOSE. ONLY * THE P AND N PARAMETERS CAN SPECIFY THE SAME FILE NAME. * * TAPE CATALOG FILE INTERLOCKED. * ANOTHER TFSP JOB IS ACCESSING THE TAPE CATALOG FILE OF * THE FAMILY. * * EMPTY TAPE CATALOG FILE. * THE FILE SPECIFIED BY THE P PARAMETER IS A ZERO-LENGTH * FILE. * * UNEXPECTED TAPE CATALOG ERROR. * THE PP PROGRAM *TFM* RETURNED AN ERROR CODE THAT TFSP * WAS NOT EXPECTING. IF THIS MESSAGE IS ISSUED WHILE * WORKING ON A FAST-ATTACHED TAPE CATALOG FILE, CONTACT * SITE ANALYST. * * ABNORMAL TERMINATION, ERROR CODE = NN. * THE SYSTEM RETURNED AN ERROR THAT TFSP COULD NOT * RECOGNIZE. IF THIS MESSAGE IS ISSUED, CONTACT SITE * ANALYST. * * *CF* PARAMETER REQUIRED WITH *CLEAR*. * THE TFSPE COMMAND WAS ISSUED WITH THE *CLEAR* * PARAMETER BUT WITHOUT THE *CF* PARAMETER. * * CATALOG ERROR REQUIRED WITH *CLEAR*. * THE TFSPE COMMAND WAS ISSUED WITH THE *CLEAR* * PARAMETER FOR A TAPE CATALOG FILE THAT DID NOT HAVE A * TAPE CATALOG ERROR. SPACE 4,10 *** ACCOUNT FILE MESSAGES. * * THE FOLLOWING ARE THE ACCOUNT FILE MESSAGES ISSUED BY TFSP. * THESE MESSAGES ARE ONLY ISSUED WHEN TFSP IS ACCESSING THE * FAST-ATTACHED TAPE CATALOG FILE. * * SDAU, FAMNAME/USERNAM/QNZZZ/VSNFFF, VSNCCC. * ISSUED FOR EACH VSN ASSIGNED TO A TAPE FILE. * * SDCR, FAMNAME/USERNAM/QNZZZ/VSNFFF, YY/MM/DD. * ISSUED WHEN CONDITIONAL RELEASE IS SET. * * SDCR, FAMNAME/USERNAM/QNZZZ/VSNFFF, . * ISSUED WHEN CONDITIONAL RELEASE IS CLEARED. * * SDAD, FAMILY , VSN , PRN , SSSSSS. * ISSUED FOR EACH VSN ADDED TO CATALOG. * * SDRM, FAMILY , VSN . * ISSUED FOR EACH VSN REMOVED FROM CATALOG. * * SDRV, FAMILY , VSN , PRN , SSSSSS. * ISSUED FOR EACH VSN REVISED IN CATALOG. * * SDAM, FAMILY , USERNAM, FVSN , SSSSSS. * ISSUED FOR EACH TAPE FILE AMENDED IN CATALOG. * * SDRA, FAMNAME/USERNAM/QNZZZ/VSNFFF, TFD. * ISSUED BY *TFM* TO PROVIDE MORE INFORMATION ABOUT * A TAPE FILE FOR DATABASE RECOVERY PURPOSES. * * SDRB, FAMNAMEXLOGICAL*FILE*IDNTYPHYSICAL*FILE*IDT. * ISSUED BY *TFM* TO PROVIDE MORE INFORMATION ABOUT * A TAPE FILE FOR DATABASE RECOVERY PURPOSES. * THIS MESSAGE ONLY APPEARS FOR A SYMBOLIC ACCESS TAPE. * * SDRC, FAMNAME/CONTROLWRDX/CHRGNUMBER, MULSIDY. * ISSUED BY *TFM* TO PROVIDE MORE INFORMATION ABOUT * A TAPE FILE FOR DATABASE RECOVERY PURPOSES. SPACE 4,10 *** GENERAL RULES FOR INPUT DIRECTIVES. * * SOME TFSP DIRECTIVES CAN CONSIST OF AN IDENTIFIER AND A DATA * FIELD SEPARATED BY AN EQUAL SIGN. FOR EXAMPLE - * * VSN=V1 * * OTHER TFSP DIRECTIVES CONSIST ONLY OF AN IDENTIFIER AND ARE * NOT EQUIVALENCED. FOR EXAMPLE - * * HELP * * IN GENERAL, TFSP DIRECTIVES CAN BE SEPARATED BY A * NON-ALPHA-NUMERIC CHARACTER, AN END-OF-LINE OR AN * END-OF-CARD. FOR EXAMPLE - * * VSN=V1 * ERRFLAG=SET+OWNER=USER;ADD * * IN GENERAL, BLANKS ON A TFSP DIRECTIVE INPUT LINE ARE * IGNORED. FOR EXAMPLE - * * VS N = V 1 * * IS THE SAME AS - * * VSN=V1 * * HOWEVER, THE PRN, SI, AND UC DIRECTIVES ACCEPT BLANKS AND ALL * OTHER NON-ALPHA-NUMERIC CHARACTERS IN THEIR DATA FIELDS. THE * SEPARAT DIRECTIVE IS AVAILABLE TO FORCE ONE NON-BLANK, * NON-ALPHA-NUMERIC CHARACTER TO ALWAYS BE INTERPRETED AS A * SEPARATOR. FOR EXAMPLE - * * SEPARAT=* * UC=A B,SI=*FA=A * SEPARAT=, * UC=A B,SI=*FA=A * * IS THE SAME AS - * * UC=A B,SI= * FA=A * UC=A B * SI=*FA=A * * ENTRY OF A COLON CHARACTER IN THE INPUT FILE CAN CAUSE * UNPREDICTABLE RESULTS. THE COLON DIRECTIVE IS AVAILABLE TO * FORCE A NON-ALPHA-NUMERIC CHARACTER TO BE INTERPRETED AS A * COLON. FOR EXAMPLE - * * COLON=) * UC=AB)XX * * IS THE SAME AS - * * UC=AB:XX * * IF A DIRECTIVE IDENTIFIER IS ONE, TWO, OR THREE CHARACTERS * LONG, THE ENTIRE IDENTIFIER MUST BE SPELLED OUT. IF AN * IDENTIFIER IS MORE THAN THREE CHARACTERS LONG, AT LEAST THE * FIRST THREE CHARACTERS MUST BE SPECIFIED PLUS ANY ADDITIONAL * CHARACTERS NEEDED TO MAKE THE DIRECTIVE UNIQUE. FOR * EXAMPLE - * * AUDITV=V1 * AUDITU=USER1 * VAL=USER2 * * IS THE SAME AS - * * AUDITVS=V1 * AUDITUN=USER1 * VALIDAT=USER2 * * HOWEVER, ENTRY OF VA=USER2 WOULD BE INCORRECT BECAUSE THE * IDENTIFIER IS LESS THAN THREE CHARACTERS. ENTRY OF AUDIT=V1 * WOULD BE INCORRECT BECAUSE THE IDENTIFIER WOULD NOT BE * UNIQUE. * * SOME DIRECTIVES HAVE A SPECIFIC SET OF OPTIONS THAT CAN BE * ENTERED IN THE DATA FIELD. ONLY ENOUGH CHARACTERS TO * UNIQUELY IDENTIFY THE OPTION MUST BE SPECIFIED IN THE DATA * FIELD. FOR EXAMPLE - * * CT=PR * CT=S * CT=PU * * IS THE SAME AS - * * CT=PRIVATE * CT=SPRIV * CT=PUBLIC * * HOWEVER, CT=P WOULD BE INCORRECT BECAUSE THE DATA FIELD WOULD * NOT BE UNIQUE. * * EACH DIRECTIVE LINE OF INPUT IS FREE FORMAT THROUGH COLUMN * 72. ANY DATA AFTER COLUMN 72 IS IGNORED. * * ALL NUMERIC DATA IS ASSUMED TO BE DECIMAL UNLESS A B * POST-RADIX IS USED TO FORCE OCTAL. * * FOR EQUIVALENCED DIRECTIVES, IF THE DATA FIELD IS NOT * SPECIFIED, THE DEFAULT VALUE WILL BE SET IF THE DIRECTIVE HAS * A DEFAULT. FOR EXAMPLE - * * NS= * * IS THE SAME AS - * * NS=18 * * TFSP DIRECTIVES ARE DIVIDED INTO SIX CATEGORIES - UNIVERSAL, * FAMILY LEVEL, VSN LEVEL, USER LEVEL, FILE LEVEL, AND * ALTERNATE USER LEVEL. FAMILY LEVEL IS CONSIDERED THE HIGHEST * LEVEL AND ALTERNATE USER THE LOWEST LEVEL. * * EACH LEVEL HAS ITS OWN SET OF VALID DIRECTIVES. CERTAIN * DIRECTIVES IN A HIGHER LEVEL MAY BE ENTERED FROM ANY LOWER * LEVEL. IF TFSP IS AT A LOWER LEVEL AND A HIGHER LEVEL * DIRECTIVE IS ISSUED, TFSP WILL EITHER EXECUTE THE DIRECTIVE * AND REMAIN AT THE CURRENT LEVEL OR PERFORM AN *IMPLIED DROP* * TO THE HIGHER LEVEL. AN *IMPLIED* DROP SIMPLY MEANS * THAT TFSP TERMINATES THE CURRENT LEVEL WITHOUT AN UPDATE * AND GOES TO THE LEVEL FOR THE DIRECTIVE THAT WAS ENTERED. * MOST DIRECTIVES MAY BE ISSUED FOR A *HIGHER* LEVEL FROM A * LOWER TFSP LEVEL. *IMPLIED DROPS* OCCUR IF THE DIRECTIVE * REQUIRES A CHANGE IN A TFSP LEVEL. * * AN EXAMPLE FOLLOWS. * * USER=USERNAM * FILEVS=VSN1 * VSN=VSN2 * * IN THE EXAMPLE, WHEN THE VSN=VSN2 DIRECTIVE WAS ISSUED, TFSP * PERFORMED AN *IMPLIED DROP* OUT OF THE FILE LEVEL FOR *VSN1*, * AND AN *IMPLIED DROP* OUT OF THE USER LEVEL FOR *USERNAM*. * NO UPDATE WAS PERFORMED FOR THE FILE LEVEL AND TFSP WILL BE * AT THE VSN LEVEL FOR VOLUME SERIAL NUMBER *VSN2*. * * ANOTHER EXAMPLE OF A *IMPLIED DROP* FOLLOWS. * * USER=USERNAM * FILEV=VSN1 * FILEV=VSN2 * * IN THIS EXAMPLE, WHEN THE *FILEV=VSN2* DIRECTIVE WAS ISSUED, * TFSP TERMINATES THE FILE LEVEL FOR *VSN1* WITHOUT UPDATING * *VSN1*. THE FILE LEVEL FOR *VSN2* IS THEN DISPLAYED AND ANY * INQUIRIES OR UPDATES WILL NOW BE FOR VSN2. * * AN EXAMPLE OF DIRECTIVES THAT MAY BE ENTERED THAT WILL NOT * REQUIRE A *IMPLIED DROP* FOLLOW. * * USER=USERNAM * FILEV=VSN1 * AUDITVS=VSN2 * AVSN=VSN2 * AMEND * * IN THIS EXAMPLE, THE *AUDITVS=VSN2* DIRECTIVE WAS ISSUED * AND TFSP PERFORMED THE AUDIT WITHOUT HAVING TO SWITCH FROM * THE FILE LEVEL. THE *AUDITVS* WAS PERFORMED AND TFSP STAYS * AT THE FILE LEVEL. * * EXAMPLES OF DIRECTIVES FOR DIFFERENT LEVELS THAT ARE NOT * VALID FROM ANOTHER LEVEL. * * USER=USERNAM * FILEV=VSN1 * PRN=IVSN1 * * THE *PRN=IVSN1* IS INCORRECT BECAUSE IT IS A VSN LEVEL * DIRECTIVE. SINCE THERE IS NO VSN LEVEL SPECIFIED, THERE * WOULD BE NO WAY OF KNOWING WHICH TAPE FILE THE *PRN=IVSN1* * DIRECTIVE WAS REALLY INTENDED TO BE FOR. * * ANOTHER EXAMPLE OF INCORRECT DIRECTIVE ENTRY FOLLOWS. * * USER=USERNAM * AUSER=USERNO * * THE *AUSER* DIRECTIVE WOULD BE INCORRECT AT THIS POINT * BECAUSE THERE HAS BEEN NO FILE LEVEL SPECIFIED. THE AUSER * ENTRY DEALS SPECIFICALLY WITH A TAPE FILE ENTRY. * * SOME DIRECTIVES MAY NOT BE ENTERED FROM OTHER LEVELS. * THESE DIRECTIVES CONSIST OF DIRECTIVES THAT WOULD * REQUIRE THE TAPE CATALOG TO BE UPDATED IF THE DIRECTIVE * WAS TO BE PROCESSED. * * AN EXAMPLE FOLLOWS. * * USER=USERNUM * PURGE=VSN1 * * IN THIS EXAMPLE, THE *PURGE* DIRECTIVE WOULD BE * INCORRECT BECAUSE IT REQUIRES THE TAPE CATALOG * TO BE UPDATED. SINCE THE *PURGE* DIRECTIVE IS * A FAMILY LEVEL DIRECTIVE IT WILL ONLY BE VALID * FROM THE FAMILY LEVEL. * * THE DIRECTIVES THAT MAY NOT BE ENTERED FROM ANOTHER * LEVEL ARE LISTED BELOW. * * ISV, PURGALL, PURGE, RELEASE, REMOVE, * RELEASF, AND RELEASV. SPACE 4,10 *** UNIVERSAL DIRECTIVES. * * UNIVERSAL DIRECTIVES DO NOT REFERENCE SPECIFIC TAPE FILE * ENTRIES OR VSNS IN THE TAPE CATALOG FILE. UNIVERSAL * DIRECTIVES MAY OCCUR ANYWHERE IN THE DIRECTIVE STREAM. * * SEPARAT = CHAR * THE NON-BLANK, NON-ALPHA-NUMERIC CHARACTER *CHAR* WILL * BE INTERPRETED AS A SEPARATOR, EVEN BY THE PRN, UC, * AND SI DIRECTIVES. DEFAULT IS COMMA. * * COLON = CHAR * THE NON-BLANK, NON-ALPHA-NUMERIC CHARACTER *CHAR* WILL * BE INTERPRETED AS A COLON IN THE DIRECTIVE STREAM. * DEFAULT IS NO CHARACTER. * * HELP * DISPLAY A LIST OF VALID DIRECTIVES. HELP IS ALSO * AVAILABLE ON THE RIGHT SCREEN OF THE K-DISPLAY FOR THE * OP=K OPTION. THE DISPLAY IS COPIED TO THE OUTPUT FILE * IF NOT THE OP=K OPTION. * * DISPLAY * TOGGLES OUT OF THE HELP DISPLAY TO THE NORMAL LEFT * SCREEN DISPLAY FOR THE OP=K OPTION. THE DISPLAY IS * COPIED TO THE OUTPUT FILE IF NOT THE OP=K OPTION. * * REWIND = FILENAM * REWINDS THE LOCAL FILE *FILENAM*. THIS DIRECTIVE IS * USUALLY USED WITH THE SOURCE, AUDIT, AND READ * DIRECTIVES. A NULL *FILENAM* IS INCORRECT. * * READ = FILENAM * READS TFSP DIRECTIVES OFF OF LOCAL FILE *FILENAM* * UNTIL AN END-OF-RECORD, END-OF-FILE, OR * END-OF-INFORMATION IS REACHED. TFSP PROCESSES THE * DIRECTIVES UNTIL AN ERROR IS ENCOUNTERED OR THE END OF * THE DIRECTIVES IS REACHED. THE READ DIRECTIVE CANNOT * BE INCLUDED IN THE FILE THAT IS READ. THE FILE IS NOT * REWOUND BEFORE OR AFTER IT IS READ. A NULL *FILENAM* * IS INCORRECT. * * STOP * TERMINATE TFSP. CHANGES SPECIFIED AT THE CURRENT * LEVEL WILL BE IGNORED. * * BRIEF * CAUSES *DISPLAY* HEADERS AND INFORMATIVE OUTPUT TO * BE SUPPRESSED. ALL MESSAGES PREFIXED BY *INFORM* * WILL NOT BE COPIED TO THE OUTPUT FILE. THE FIRST * EIGHT LINES OF OUTPUT GENERATED BY THE *DISPLAY* * DIRECTIVE WILL NOT BE COPIED TO THE OUTPUT FILE. * VALID DIRECTIVE IMAGES WILL ALSO BE SUPPRESSED. * * NOBRIEF * REVERSES THE AFFECT OF A *BRIEF* COMMAND. ALL * INFORMATIVE AND *DISPLAY* HEADER INFORMATION IS * WRITTEN TO THE OUTPUT FILE. *NOBRIEF* IS THE DEFAULT. SPACE 4,10 *** FAMILY LEVEL DIRECTIVES. * * FAMILY LEVEL DIRECTIVES REFERENCE ALL TAPE FILE ENTRIES AND * VSNS IN THE TAPE CATALOG FILE. FAMILY LEVEL DIRECTIVES MAY * OCCUR ANYWHERE IN THE DATA STREAM. ENTRY OF A FAMILY * LEVEL DIRECTIVE FROM A LOWER LEVEL MAY CAUSE TFSP TO * ISSUE A *DROP* FOR EACH LEVEL AND PROCESSING CONTINUES * AT THE FAMILY LEVEL. NO UPDATES WILL OCCUR. FAMILY LEVEL * DIRECTIVES NOT VALID WHILE PROCESSING AT ANOTHER LEVEL ARE * ISV, PURGALL, PURGE, RELEASE AND REMOVE. * * DROP * TERMINATE TFSP. * * GO * MAKES UPDATES ENTERED AT FAMILY LEVEL AND THEN * TERMINATES TFSP. * * ISV * INITIALIZES SCRATCH VSN POINTERS. THIS DIRECTIVE CAN * BE USED TO INSURE ALL UNASSIGNED VSNS ARE IN THE * SCRATCH POOL. * * FAMNAME = FAMILY * SETS *FAMILY* AS THE FAMILY NAME OF THE TAPE CATALOG * FILE. IF *FAMILY* IS NULL, THE FAMILY NAME OF THE JOB * IS USED. * * LINKFAM = FAMILY * SETS *FAMILY* AS THE FAMILY ON WHICH THE TAPE CATALOG * RESIDES FOR PROCESSING USER JOB REQUESTS FROM THE * CURRENT FAMILY. THIS DIRECTIVE CAN ONLY BE USED IN * LOCAL FILE MODE. * * ALTFAM = FAMILY * ALLOWS USER JOBS ON FAMILY *FAMILY* TO ACCESS THIS * TAPE CATALOG. THE *LINKFAM* DIRECTIVE MUST BE USED * ON THE *FAMILY* TAPE CATALOG TO DIRECT PROCESSING TO * THIS CATALOG. THIS DIRECTIVE CAN ONLY BE USED IN * LOCAL FILE MODE. * * CALTFAM = FAMILY * CLEARS THE EFFECT OF A PREVIOUS *ALTFAM* DIRECTIVE * ON THE SPECIFIED FAMILY. THIS DIRECTIVE CAN ONLY BE * USED IN LOCAL FILE MODE. * * MID = ID * SETS *ID* AS THE MACHINE ID OF THE TAPE CATALOG FILE. * IF *ID* IS NULL, THE MACHINE ID OF THE RUNNING SYSTEM * IS USED. * * CATERR = STATUS * SETS *STATUS* AS THE ERROR STATUS OF THE TAPE CATALOG * FILE. VALID VALUES FOR *STATUS* ARE - * * CLEAR - CLEAR ERROR STATUS AND MESSAGE BUFFER. * * SET - SET ERROR STATUS AND ISSUE MESSAGE TO MESSAGE * BUFFER. * * DEFAULT IS CLEAR. * * GLOBAL = STATUS * SETS *STATUS* TO DETERMINE IF THE SCRATCH TAPES OF * THIS FAMILY ARE AVAILABLE FOR OTHER FAMILIES. VALID * VALUES FOR *STATUS* ARE - * * NO - SCRATCH TAPES ARE UNAVAILABLE FOR OTHER FAMILIES. * * YES - SCRATCH TAPES ARE AVAILABLE FOR OTHER FAMILIES. * * DEFAULT IS NO. * * FOREIGN = STATUS * SETS *STATUS* TO DETERMINE IF THE SCRATCH TAPES OF * THIS FAMILY ARE FOREIGN TO THE RUNNING SYSTEM. VALID * VALUES FOR *STATUS* ARE - * * NO - FAMILY IS NOT FOREIGN TO SYSTEM. * * YES - FAMILY IS FOREIGN TO SYSTEM. * * DEFAULT IS NO. * * AUDITCH = CHARGNO * COPIES INFORMATION ABOUT THE TAPE FILE ENTRIES FOR * CHARGE NUMBER *CHARGNO* TO THE OUTPUT FILE. A * NULL *CHARGNO* IS INCORRECT. * * AUDITUN = USERNAM * COPIES INFORMATION ABOUT THE TAPE FILE ENTRIES FOR * USER NAME *USERNAM* TO THE OUTPUT FILE. IF *USERNAM* * IS NULL, ALL TAPE FILE ENTRIES IN THE TAPE CATALOG * FILE ARE PROCESSED. * * AUDITVS = VSN * COPIES INFORMATION ABOUT VOLUME SERIAL NUMBER *VSN* TO * THE OUTPUT FILE. THE INFORMATION INCLUDES WHETHER THE * VSN IS INCLUDED IN THE TAPE CATALOG FILE AND ITS * POSITION IN A MULTI-VOLUME TAPE FILE. IF *VSN* IS * NULL, EVERY VSN IN THE TAPE CATALOG FILE IS PROCESSED. * * MREADCH = CHARGNO * COPIES INFORMATION ABOUT THE TAPE FILE ENTRIES FOR * CHARGE NUMBER *CHARGNO* TO THE MACHINE READABLE FILE. * A NULL *CHARGNO* IS INCORRECT. * * MREADUN = USERNAM * COPIES INFORMATION ABOUT THE TAPE FILE ENTRIES FOR * USER NAME *USERNAM* TO THE MACHINE READABLE FILE. IF * *USERNAM* IS NULL, ALL TAPE FILE ENTRIES IN THE TAPE * CATALOG FILE ARE PROCESSED. * * MREADVS = VSN * COPIES INFORMATION ABOUT VOLUME SERIAL NUMBER *VSN* TO * THE MACHINE READABLE FILE. THE INFORMATION INCLUDES * WHETHER THE VSN IS INCLUDED IN THE TAPE CATALOG FILE * AND ITS POSITION IN A MULTI-VOLUME TAPE FILE. IF * *VSN* IS NULL, EVERY VSN IN THE TAPE CATALOG FILE IS * PROCESSED. * * SOURCE * COPIES THE DIRECTIVES REQUIRED TO RECREATE THE TAPE * CATALOG FILE TO THE SOURCE FILE. * * SOURCCH = CHARGNO * COPIES THE DIRECTIVES REQUIRED TO CREATE THE TAPE FILE * ENTRIES FOR CHARGE NUMBER *CHARGNO* TO THE SOURCE * FILE. A NULL *CHARGNO* IS INCORRECT. * * SOURCUN = USERNAM * COPIES THE DIRECTIVES REQUIRED TO CREATE THE TAPE FILE * ENTRIES FOR USER NAME *USERNAM* TO THE SOURCE FILE. * IF *USERNAM* IS NULL, ALL TAPE FILE ENTRIES IN THE * TAPE CATALOG FILE ARE PROCESSED. * * SOURCVS = VSN * COPIES THE DIRECTIVES REQUIRED TO ADD VOLUME SERIAL * NUMBER *VSN* AS A SCRATCH TAPE TO THE SOURCE FILE. IF * *VSN* IS NULL, EVERY VSN IN THE TAPE CATALOG FILE IS * PROCESSED. * * REMOVE = VSN * REMOVES VOLUME SERIAL NUMBER *VSN* FROM THE TAPE * CATALOG FILE. ONCE REMOVED, *VSN* CANNOT BE ASSIGNED * TO A TAPE FILE ENTRY UNTIL VSN DIRECTIVE HAS BEEN * ISSUED. THE *VSN* SPECIFIED BY THE REMOVE DIRECTIVE * CANNOT BE ASSIGNED TO A TAPE FILE ENTRY. THE *PURGE* * DIRECTIVE MAY BE USED TO REMOVE A RESERVED TAPE FROM * THE CATALOG. A NULL *VSN* IS INCORRECT. * * RELEASE = VSN * PURGES THE TAPE FILE ENTRIES THAT HAVE AN ASSIGNED VSN * OF *VSN* FROM THE TAPE CATALOG FILE. EVERY VSN * ASSOCIATED WITH THAT TAPE FILE IS RELEASED. A NULL * *VSN* IS INCORRECT. * * VSN = VSN * BEGINS VSN LEVEL DIRECTIVES. ALL DIRECTIVES FOLLOWING * THE VSN DIRECTIVE AND BEFORE THE NEXT ADD, REVISE, * GO, OR DROP DIRECTIVE ARE ASSOCIATED WITH VOLUME * SERIAL NUMBER *VSN*. IF THE *VSN* IS ASSIGNED, THE * MAINTENANCE AND PHYSICAL REEL NUMBER FOR THE *VSN* * MAY BE REVISED AT THIS LEVEL. VALID FROM ANY LEVEL. * IF THE VSN DIRECTIVE IS ISSUED FROM OTHER THAN * THE FAMILY LEVEL, AN *IMPLIED DROP* WILL FIRST BE * PERFORMED TO THE FAMILY LEVEL. A NULL *VSN* IS * INCORRECT. * * VALIDAT = USERNAM * ADDS *USERNAM* AS A USER THAT IS VALIDATED TO USE TFSP * TO ACCESS AND UPDATE THE FAMILY TAPE CATALOG FILE FROM * A NON-SYSTEM ORIGIN JOB. UP TO EIGHT USER NAMES CAN * BE ADDED. A NULL *USERNAM* IS INCORRECT. * * INVALID = USERNAM * REMOVES *USERNAM* AS A USER VALIDATED BY THE VALIDAT * DIRECTIVE. A NULL *USERNAM* IS INCORRECT. * * PURGALL = USERNAM * PURGES ALL TAPE FILE ENTRIES THAT BELONG TO *USERNAM* * FROM THE TAPE CATALOG FILE. RELEASES ALL VSNS THAT * WERE ASSIGNED TO THE TAPE FILE ENTRIES OF *USERNAM*. * THE RELEASED VSNS ARE REMOVED FROM THE TAPE CATALOG * FILE. A NULL *USERNAM* IS INCORRECT. * * PURGE = VSN * THIS DIRECTIVE IS USED TO DELETE TAPE FILE ENTRIES * CONTAINING *VSN* FROM THE TAPE CATALOG FILE. EVERY * VSN BELONGING TO ONE OF THE PURGED TAPE FILES IS * FIRST RELEASED FROM THE TAPE CATALOG AND THEN * REMOVED. IF THE VSN IS NOT ASSIGNED TO A TAPE FILE, * IT IS REMOVED FROM THE TAPE CATALOG FILE. A NULL * *VSN* IS INCORRECT. * * USER = USERNAM * BEGINS USER LEVEL DIRECTIVES. ALL DIRECTIVES * FOLLOWING THE USER DIRECTIVE AND BEFORE THE NEXT USER * LEVEL DROP OR GO DIRECTIVE ARE ASSOCIATED WITH TAPE * FILE ENTRIES BELONGING TO USER NAME *USERNAM*. * VALID FROM ANY LEVEL. IF THE USER DIRECTIVE IS ISSUED * FROM OTHER THAN THE FAMILY LEVEL, AN *IMPLIED DROP* * WILL FIRST BE PERFORMED TO THE FAMILY LEVEL. A NULL * *USERNAM* IS INCORRECT. SPACE 4,10 *** VSN LEVEL DIRECTIVES. * * VSN LEVEL DIRECTIVES REFERENCE ONE VSN THAT IS NOT ASSIGNED * TO ANY TAPE FILE ENTRY ON THE TAPE CATALOG FILE. VSN LEVEL * DIRECTIVES MAY OCCUR ANYWHERE AFTER A VSN DIRECTIVE AND * BEFORE AN ADD, REVISE, GO, OR DROP DIRECTIVE. * * ADD * END PROCESSING OF VSN LEVEL DIRECTIVES. THE VSN WILL * BE ADDED TO THE TAPE CATALOG. INCORRECT IF THE VSN IS * ALREADY IN THE TAPE CATALOG. * * REVISE * END PROCESSING OF VSN LEVEL DIRECTIVES. THE CHANGES * SPECIFIED BY THE VSN LEVEL DIRECTIVES WILL BE MADE TO * THE VSN. INCORRECT IF THE VSN IS NOT IN THE TAPE * CATALOG. * * GO * SAME AS ADD FOR A NEW VSN. SAME AS REVISE FOR AN * EXISTING VSN. * * DROP * END PROCESSING OF VSN LEVEL DIRECTIVES. CHANGES * SPECIFIED BY THE VSN LEVEL DIRECTIVES WILL BE IGNORED. * * PRN= PVSN * SETS *PVSN* AS THE PHYSICAL (INTERNAL) VSN. DEFAULT * IS THE LOGICAL (EXTERNAL) VSN. * * ERRFLAG = FLAG * SETS OR CLEARS THE READ/WRITE ERROR DETECTED FLAG FOR * THE VSN. VALID VALUES FOR *FLAG* ARE - * * SET - SET ERROR FLAG. * * CLEAR - CLEAR ERROR FLAG. * * DEFAULT IS CLEAR. * * MAINT = MAIN * SETS *MAIN* AS THE MAINTENANCE STATUS FOR THE VSN. A * VSN HELD FOR MAINTENANCE CANNOT BE ASSIGNED TO A TAPE * FILE ENTRY. VALID VALUES FOR *MAIN* ARE - * * HOLD - HOLD FOR MAINTENANCE. * * AVAILABLE - AVAILABLE FOR ASSIGNMENT. * * DEFAULT IS AVAILABLE. * * OWNER = TYPE * SETS *TYPE* AS THE OWNERSHIP STATUS OF THE VSN. * A *TYPE* VALUE OF *USER* MAY NOT BE SPECIFIED FOR * A VSN WITH THE SYSTEM VSN FLAG SET. * VALID VALUES FOR *TYPE* ARE - * * CENTER - CENTER OWNED. * * USER - USER OWNED. * * DEFAULT IS CENTER. * * SITE = SITE * SETS SITE AS THE OFF SITE/ON SITE STATUS OF THE VSN. * USERS CANNOT ACCESS AN OFF SITE VSN. VALID VALUES FOR * SITE ARE - * * ON - ON SITE. * * OFF - OFF SITE. * * DEFAULT IS ON. * IF THE VSN IS ASSIGNED TO A TAPE FILE ENTRY, THE SITE * STATUS OF EACH VSN ASSIGNED TO THE TAPE FILE WILL BE * CHANGED. * * STATUS = STATUS * AVAILABLE - CLEARS BOTH THE MAINTENANCE AND ERROR * FLAGS. * * CLEANED - SAME AS AVAILABLE. IN ADDITION, THE USAGE * COUNT IS SET TO ZERO. * * HOLD - SET THE MAINTENANCE FLAG AND CLEARS THE * ERROR FLAG. * * ERROR - SET BOTH THE MAINTENANCE FLAG AND ERROR * FLAGS. * * DEFAULT IS AVAILABLE. * IF THE VSN IS ASSIGNED TO A TAPE FILE ENTRY, THE * OWNERSHIP STATUS OF EACH VSN ASSIGNED TO THE TAPE FILE * WILL BE CHANGED. * * SYSTEM = SYS * SETS *SYS* AS THE SYSTEM VSN FLAG STATUS FOR THE VSN. * A VSN WITH THE SYSTEM VSN FLAG SET WILL NOT BE USED * AS A SCRATCH VSN, BUT CAN BE ASSIGNED TO A TAPE FILE * ENTRY BY *TFSP*. THIS DIRECTIVE MAY ONLY BE SPECIFIED * WHEN A VSN IS FIRST CREATED, AND MAY NOT BE SPECIFIED * FOR A USER-OWNED VSN. VALID VALUES FOR *SYSTEM* ARE - * * YES - THE VSN IS A SYSTEM VSN. * * NO - THE VSN IS NOT A SYSTEM VSN. * * DEFAULT IS NO. * * USAGE = COUNT. * SETS COUNT AS THE NUMBER OF TIMES THAT THE VSN HAS * BEEN USED SINCE MAINTENANCE WAS LAST PERFORMED ON * THE TAPE. THE VALUE OF COUNT MUST BE AT LEAST ZERO * (0) AND NO MORE THEN 63. DEFAULT IS 0. * * VT = TYPE * SETS *TYPE* AS THE TAPE TYPE FOR THE VSN. THIS * DIRECTIVE MAY ONLY BE SPECIFIED WHEN THE VSN IS FIRST * CREATED. VALID VALUES FOR *TYPE* ARE - * * MTNT - THE VSN MAY BE USED AS EITHER AN *MT* (7-TRACK) * OR AN *NT* (9-TRACK) TAPE. * * CT - THE VSN MAY BE USED ONLY AS A *CT* (CARTRIDGE) * TAPE. * * AT - THE VSN MAY BE USED ONLY AS AN *AT* (ACS * CARTRIDGE) TAPE. * * DEFAULT IS MTNT. SPACE 4,10 *** USER LEVEL DIRECTIVES. * * USER LEVEL DIRECTIVES REFERENCE THE TAPE FILE ENTRIES * BELONGING TO ONE USER ON THE TAPE CATALOG FILE. USER LEVEL * DIRECTIVES MAY OCCUR ANYWHERE AFTER A USER DIRECTIVE * AND BEFORE A USER LEVEL GO OR DROP. IF THE DIRECTIVE * ENTERED IS A FILE OR FILEV DIRECTIVE AND TFSP IS AT * THE FILE OR ALTERNATE USER LEVEL, AN *IMPLIED DROP* WILL * FIRST BE PERFORMED TO THE USER LEVEL AND NO UPDATES WILL * OCCUR. * * DROP * END PROCESSING OF USER LEVEL DIRECTIVES. * * GO * SAME AS DROP. * * + * WHEN A PLUS CHARACTER IS IN COLUMN ONE OF THE INPUT * LINE, THE LIST OF TAPE FILE ENTRIES DISPLAYED AT THE * LEFT-SCREEN K-DISPLAY IS TOGGLED. IF NOT THE OP=K * OPTION, THE DISPLAY DIRECTIVE MUST BE ISSUED TO COPY * THE DISPLAY TO THE OUTPUT FILE. * * AUDITCN = CHARGNO * COPIES INFORMATION ABOUT THE TAPE FILE ENTRIES * BELONGING TO THE USER WITH A CHARGE NUMBER OF * *CHARGNO* TO THE OUTPUT FILE. A NULL *CHARGNO* IS * INCORRECT. * * AUDITFI = FILEIDENT * COPIES INFORMATION ABOUT THE TAPE FILE ENTRY * *FILEIDENT* TO THE OUTPUT FILE. A NULL *FILEIDENT* IS * INCORRECT. * * AUDITFV = VSN * COPIES INFORMATION ABOUT THE TAPE FILE ENTRIES * BELONGING TO THE USER WITH AN ASSIGNED VSN OF *VSN* TO * THE OUTPUT FILE. A NULL *VSN* IS INCORRECT. * * MREADCN = CHARGNO * COPIES INFORMATION ABOUT THE TAPE FILE ENTRIES * BELONGING TO THE USER WITH A CHARGE NUMBER OF * *CHARGNO* TO THE MACHINE READABLE FILE. A NULL * *CHARGNO* IS INCORRECT. * * MREADFI = FILEIDENT * COPIES INFORMATION ABOUT THE TAPE FILE ENTRY * *FILEIDENT* TO THE MACHINE READABLE FILE. A NULL * *FILEIDENT* IS INCORRECT. * * MREADFV = VSN * COPIES INFORMATION ABOUT THE TAPE FILE ENTRIES * BELONGING TO THE USER WITH AN ASSIGNED VSN OF *VSN* TO * THE MACHINE READABLE FILE. A NULL *VSN* IS INCORRECT. * * SOURCFI = FILEIDENT * COPIES THE DIRECTIVES REQUIRED TO CREATE THE TAPE FILE * ENTRY *FILEIDENT* BELONGING TO THE USER TO THE SOURCE * FILE. A NULL *FILEIDENT* IS INCORRECT. * * SOURCFV = VSN * COPIES THE DIRECTIVE REQUIRED TO CREATE THE TAPE FILE * ENTRIES BELONGING TO THE USER WITH AN ASSIGNED VSN OF * *VSN* TO THE SOURCE FILE. A NULL *VSN* IS INCORRECT. * * SOURCCN = CHARGNO * COPIES THE DIRECTIVES REQUIRED TO CREATE THE TAPE FILE * ENTRIES BELONGING TO THE USER WITH CHARGE NUMBER * *CHARGNO* TO THE SOURCE FILE. A NULL *CHARGNO* IS * INCORRECT. * * RELEASV = VSN * PURGES THE TAPE FILE ENTRIES BELONGING TO THE USER * THAT HAVE AN ASSIGNED VSN OF *VSN* FROM THE TAPE * CATALOG FILE. EVERY VSN ASSOCIATED WITH THAT TAPE * FILE IS RELEASED. A NULL *VSN* IS INCORRECT. * * RELEASF = FILEIDENT * PURGES THE TAPE FILE ENTRY *FILEIDENT* BELONGING TO * THE USER FROM THE TAPE CATALOG FILE. EVERY VSN * ASSOCIATED WITH THAT TAPE FILE ENTRY IS RELEASED. A * NULL *FILEIDENT* IS INCORRECT. * * FILE = FILEIDENT * BEGINS FILE LEVEL DIRECTIVES. ALL DIRECTIVES * FOLLOWING THE FILE DIRECTIVE AND BEFORE THE NEXT * AMEND, RESERVE, OR FILE LEVEL GO OR DROP DIRECTIVE * ARE ASSOCIATED WITH THE TAPE FILE ENTRY *FILEIDENT* * BELONGING TO THE USER. FILE CAN BE USED TO CREATE A * NEW OR UPDATE AN EXISTING SYMBOLIC ACCESS TAPE FILE * ENTRY. NON-SYMBOLIC ACCESS TAPE FILES MUST BE * REFERENCED BY THE FILEV DIRECTIVE. A NULL *FILEIDENT* * IS INCORRECT. VALID ENTRY FROM THE USER, FILE, OR * THE ALTERNATE USER LEVEL. IF ENTERED FROM THE * FILE OR ALTERNATE USER LEVEL, AN *IMPLIED DROP* * WILL FIRST BE PERFORMED TO THE USER LEVEL AND NO * UPDATE FOR THE CURRENT LEVEL WILL OCCUR. * * FILEV = VSN/SEQNO * BEGINS FILE LEVEL DIRECTIVES. ALL DIRECTIVES * FOLLOWING THE FILEV DIRECTIVE AND BEFORE THE NEXT * AMEND, RESERVE, OR FILE LEVEL GO OR DROP DIRECTIVE * ARE ASSOCIATED WITH THE TAPE FILE ENTRY BELONGING TO * THE USER THAT HAS AN ASSIGNED VSN *VSN* AND SEQUENCE * NUMBER *SEQNO*. THE FILE POSITION IS A MULTI-FILE SET * IS SPECIFIED BY *SEQNO*. FILEV CAN BE USED TO CREATE * A NEW OR UPDATE AN EXISTING TAPE FILE ENTRY. A NULL * *VSN* IS INCORRECT. IF *SEQNO* IS NULL, A VALUE OF 1 * IS ASSUMED. VALID ENTRY FROM THE USER, FILE, OR * THE ALTERNATE USER LEVEL. IF ENTERED FROM THE * FILE OR ALTERNATE USER LEVEL, AN *IMPLIED DROP* * WILL FIRST BE PERFORMED TO THE USER LEVEL AND NO * UPDATE FOR THE CURRENT LEVEL WILL OCCUR. SPACE 4,10 *** FILE LEVEL DIRECTIVES. * * FILE LEVEL DIRECTIVES REFERENCE ONE TAPE FILE ENTRY BELONGING * TO THE USER. FILE LEVEL DIRECTIVES MAY OCCUR ANYWHERE AFTER * A FILE OR FILEV DIRECTIVE AND BEFORE AN AMEND, RESERVE, OR * FILE LEVEL DROP OR GO (AND FROM THE ALTERNATE USER LEVEL). * WHENEVER A FILE LEVEL DIRECTIVE IS ASSIGNED A NULL VALUE, * TFSP WILL SET THE DEFAULT VALUE UNLESS STATED OTHERWISE IN * THE DIRECTIVE DESCRIPTION. SITE PERSONNEL WILL PROBABLY * FIND THAT THEY ONLY HAVE TO ENTER A FEW OF THE FILE LEVEL * DIRECTIVES (SUCH AS CN AND AVSN) WHEN CREATING NEW TAPE * FILE ENTRIES. MOST OF THE FILE LEVEL DIRECTIVES EXIST FOR * THE "DUMPING" AND "LOADING" OF THE TAPE FILE CATALOG * ENTRIES VIA THE SOURCE FILE. * * AMEND * END PROCESSING OF FILE LEVEL DIRECTIVES. THE CHANGES * SPECIFIED BY THE FILE LEVEL DIRECTIVES WILL BE MADE TO * THE TAPE FILE. INCORRECT IF THE TAPE FILE IS NOT * RESERVED. * * RESERVE * END PROCESSING OF FILE LEVEL DIRECTIVES. THE TAPE * FILE WILL BE RESERVED. INCORRECT IF THE TAPE FILE * ALREADY IS RESERVED. * * GO * SAME AS RESERVE FOR A NEW TAPE FILE ENTRY. SAME AS * AMEND FOR AN EXISTING TAPE FILE ENTRY. * * DROP * END PROCESSING OF FILE LEVEL DIRECTIVES. CHANGES * SPECIFIED BY THE FILE LEVEL DIRECTIVES WILL BE * IGNORED. * * + * WHEN A PLUS CHARACTER IS IN COLUMN ONE OF THE INPUT * LINE, THE PAGE DISPLAYED AT THE LEFT-SCREEN K-DISPLAY * IS TOGGLED. IF NOT THE OP=K OPTION, THE DISPLAY * DIRECTIVE MUST BE ISSUED TO COPY THE DISPLAY TO THE * OUTPUT FILE. * * AUDITAU = USERNAM * COPIES THE ADMIT INFORMATION GRANTED TO USER NAME * *USERNAM* FOR THE TAPE FILE ENTRY TO THE OUTPUT FILE. * IF *USERNAM* IS NULL, ALL USER NAMES ADMITTED TO THE * TAPE FILE ENTRY ARE PROCESSED. * * SV = ACCESS * SETS ACCESS AS THE SYMBOLIC ACCESS STATUS OF THE TAPE * FILE. VALID VALUES FOR ACCESS ARE - * * NO - NO SYMBOLIC ACCESS. TAPE FILE ENTRY CANNOT BE * ACCESSED BY FILE IDENTIFIER. * * SET - SYMBOLIC ACCESS. TAPE FILE ENTRY CAN BE * ACCESSED BY FILE IDENTIFIER. * * DEFAULT IS NO. * * RECOVER = STATUS * SETS *STATUS* AS THE RECOVERY STATUS OF THE TAPE FILE. * VALID VALUES FOR *STATUS* ARE - * * NO - TAPE FILE HAS NOT BEEN RECOVERED. * * YES - TAPE FILE HAS BEEN RECOVERED. THE USER MAY HAVE * TO AMEND THE THE TAPE FILE ENTRY TO RETURN IT TO * ITS ORIGINAL STATE. * * DEFAULT IS NO. * * FI = FILEIDENT * CHANGES THE LOGICAL FILE IDENTIFIER OF THE TAPE FILE * ENTRY TO *FILEIDENT*. THIS IS THE NAME SPECIFIED BY * USER COMMANDS AND THE FILE DIRECTIVE WHEN * ACCESSING THIS TAPE FILE ENTRY. THE *FILEIDENT* MUST * NOT BE THE NAME OF ANY OTHER TAPE FILE ENTRY BELONGING * TO THE USER IF SYMBOLIC ACCESS. DEFAULT IS THE SAME * NAME AS SPECIFIED IN THE PREVIOUS FILE DIRECTIVE. * * PI = FILEIDENT * SETS *FILEIDENT* AS THE PHYSICAL FILE IDENTIFIER OF * THE TAPE FILE ENTRY. GENERALLY, *FILEIDENT* IS THE * SAME AS THE LOGICAL FILE IDENTIFIER WHEN THE TAPE FILE * ENTRY IS CREATED. DEFAULT IS THE SAME NAME AS * SPECIFIED IN THE FILE DIRECTIVE WHEN THE TAPE FILE * ENTRY IS FIRST CREATED. IF *LB=KU* WHEN THE TAPE * FILE IS RESERVED OR AMENDED, THE PHYSICAL FILE * IDENTIFIER WILL BE CLEARED. * * UC = WORD * SETS *WORD* AS THE TEN CHARACTER USER CONTROL WORD FOR * THE TAPE FILE ENTRY. BLANKS ARE SIGNIFICANT. TFSP * WILL LEFT JUSTIFY AND BLANK FILL IF *WORD* IS LESS * THAN TEN CHARACTERS. DEFAULT IS TEN COLONS. * * PW = PASSWOR * SETS *PASSWOR* AS THE PASSWORD THAT ALTERNATE USERS * MUST SPECIFY TO ACCESS THE TAPE FILE. DEFAULT IS NO * PASSWORD. * * CT = CAT * SETS *CAT* AS THE ACCESS CATEGORY FOR ALTERNATE USERS * OF THE TAPE FILE. VALID VALUES FOR *CAT* ARE - * * PRIVATE - PRIVATE. ALTERNATE USER ACCESS RESTRICTED. * * SPRIV - SEMI-PRIVATE. ALTERNATE USER ACCESS ALLOWED * AND RECORDED. * * PUBLIC - PUBLIC. ALTERNATE USER ACCESS ALLOWED BUT * NOT RECORDED. * * DEFAULT IS PRIVATE. * * M = MODE * SETS *MODE* AS THE ACCESS PERMISSION FOR ALTERNATE * USERS. VALID VALUES FOR *MODE* ARE - * * READ - ALTERNATE USERS MAY ONLY READ THE TAPE FILE. * * WRITE - ALTERNATE USERS MAY READ OR WRITE ON THE TAPE * FILE. * * NULL - ALTERNATE USERS MAY NOT ACCESS THE TAPE FILE. * * DEFAULT IS READ. * * AC = OP * SETS *OP* AS THE CATLIST PERMISSION FOR ALTERNATE * USERS OF THE TAPE FILE. VALID VALUES FOR OP ARE - * * YES - ALTERNATE USERS CAN AUDIT THE PUBLIC OR * SEMI-PRIVATE TAPE FILE. * * NO - ALTERNATE USERS CANNOT AUDIT THE TAPE FILE. * * DEFAULT IS NO. ALTERNATE USERS CANNOT AUDIT PRIVATE * TAPE FILES EVEN IF AC=YES. * * CE = FLAG * SETS OR CLEARS THE READ/WRITE ERROR FLAG FOR THE TAPE * FILE ENTRY. VALID VALUES FOR *FLAG* ARE - * * SET - SET ERROR FLAG. * * CLEAR - CLEAR ERROR FLAG. * * DEFAULT IS CLEAR. * * CN = CHARGNO * SETS *CHARGNO* AS THE CHARGE NUMBER ASSIGNED TO THE * TAPE FILE ENTRY. DEFAULT IS NO CHARGE NUMBER. * * PN = PROJECTNO * SETS *PROJECTNO* AS THE PROJECT NUMBER ASSIGNED TO THE * TAPE FILE ENTRY. DEFAULT IS NO PROJECT NUMBER. * * CDATE = YYMMDD * SETS *YYMMDD* AS THE DATE OF CREATION OF THE TAPE FILE * ENTRY. DEFAULT IS THE CURRENT DATE. * * CTIME = HHMMSS * SETS *HHMMSS* AS THE TIME OF CREATION OF THE TAPE FILE * ENTRY. DEFAULT IS THE CURRENT TIME. * * ADATE = YYMMDD * SETS *YYMMDD* AS THE DATE OF LAST ACCESS OF THE TAPE * FILE ENTRY. DEFAULT IS THE CURRENT DATE. * * ATIME = HHMMSS * SETS *HHMMSS* AS THE TIME OF LAST ACCESS OF THE TAPE * FILE ENTRY. DEFAULT IS THE CURRENT TIME. * * MDATE = YYMMDD * SETS *YYMMDD* AS THE DATE OF LAST MODIFICATION OF THE * TAPE FILE ENTRY. DEFAULT IS THE CURRENT DATE. * * MTIME = HHMMSS * SETS *HHMMSS* AS THE TIME OF LAST MODIFICATION OF THE * TAPE FILE ENTRY. DEFAULT IS THE CURRENT TIME. * * ACOUNT = COUNT * SETS *COUNT* AS THE NUMBER OF ACCESSES OF THE TAPE * FILE ENTRY. DEFAULT IS ZERO. * * CR = YYDDD * SETS *YYDDD* (JULIAN FORMAT) AS THE CREATION DATE OF * AN ANSI-LABELED TAPE. THIS VALUE IS USUALLY * EQUIVALENT TO THE DATE SPECIFIED BY THE CDATE * DIRECTIVE, HOWEVER IT CAN BE DIFFERENT. DEFAULT IS * THE CURRENT DATE. * * CV = MODE * SETS *MODE* AS THE CONVERSION MODE FOR THE NINE-TRACK * TAPE FILE ENTRY. VALID VALUES FOR *MODE* ARE - * * AS - ASCII/DISPLAY CODE CONVERSION. * * EB - EBCDIC/DISPLAY CODE CONVERSION. * * DEFAULT IS AS. * * D= DENSITY * SETS *DENSITY* AS THE TAPE DENSITY. ALSO SETS THE * TAPE TYPE. VALID VALUES FOR *DENSITY* ARE - * * HI - 556 BPI, 7-TRACK (*MT*). * * HY - 800 BPI, 7-TRACK (*MT*). * * HD - 800 CPI, 9-TRACK (*NT*). * * PE - 1600 CPI, 9-TRACK (*NT*). * * GE - 6250 CPI, 9-TRACK (*NT*). * * CE - 38000 CPI, CARTRIDGE (*CT*). * * AE - 38000 CPI, ACS CARTRIDGE (*AT*). * * DEFAULT IS PE. * * E = NUMBER * SETS *NUMBER* AS THE ONE OR TWO DIGIT GENERATION * VERSION NUMBER FOR AN ANSI-LABELED TAPE. DEFAULT IS * 00. * * F = FORMAT * SETS *FORMAT* AS THE DATA FORMAT OF THE TAPE FILE * ENTRY. VALID VALUES FOR *FORMAT* ARE - * * I - INTERNAL. * * LI - LONG BLOCK INTERNAL. * * S - STRANGER. * * L - LONG BLOCK STRANGER. * * SI - SCOPE INTERNAL. * * F - FOREIGN. * * DEFAULT IS I. * * FA = CHAR * SETS *CHAR* AS THE ONE ALPHA-NUMERIC CHARACTER * ACCESSIBILITY RESTRICTION FOR AN ANSI-LABELED TAPE. * VALID VALUES FOR *CHAR* ARE - * * NULL - NO ACCESSIBILITY RESTRICTIONS FOR ALTERNATE * USERS. * * A - NO ACCESSIBILITY ALLOWED FOR ALTERNATE USERS. * * NON-A - ALTERNATE USERS MUST SPECIFY *CHAR* TO ACCESS * TAPE FILE ENTRY. * * DEFAULT IS NO CHARACTER. * * FC = FRAMES * SETS *FRAMES* AS THE MAXIMUM SIZED BLOCK THAT CAN BE * READ FROM OR WRITTEN TO AN F FORMAT TAPE. THE VALUE * SHOULD BE GREATER THAN THAT SPECIFIED BY THE NS * DIRECTIVE. DEFAULT IS UNLIMITED. * A VALUE OF ZERO (0) SETS THE INSTALLATION DEFAULT. * * G = NUMBER * SETS *NUMBER* AS THE ONE TO FOUR DIGIT GENERATION * NUMBER FOR AN ANSI LABELED TAPE. DEFAULT IS 0001. * * LB = LABEL * SETS LABEL AS THE LABEL STATUS OF THE TAPE FILE ENTRY. * VALID VALUES ARE - * * KU - UNLABELED. * * KL - ANSI-LABELED. * * NS - NON-STANDARD LABELED. * * DEFAULT IS KL. * * SI = SETID * SETS *SETID* AS THE SET IDENTIFIER OF AN ANSI-LABELED * TAPE. DEFAULT IS NO SET IDENTIFIER. * * NS = FRAMES * SETS *FRAMES* AS THE MINIMUM SIZE OF A VALID BLOCK. * ANY SMALLER BLOCK IS CONSIDERED NOISE. THE VALUE MUST * BE 0.GE.*FRAMES*.GE.31. THE VALUE SHOULD BE LESS THAN * THAT SPECIFIED BY THE FC DIRECTIVE. DEFAULT IS 0. * A VALUE OF ZERO (0) SETS THE INSTALLATION DEFAULT. * * RT = YYDDD * SETS *YYDDD* (JULIAN FORMAT) AS THE RETENTION DATE FOR * AN ANSI-LABELED TAPE. NO ONE (INCLUDING THE TAPE * OWNER) CAN WRITE OVER THE TAPE BEFORE THIS DATE. * DEFAULT IS THE CURRENT DATE. * * SN = SECNO * SETS *SECNO* AS THE ONE TO FOUR DIGIT FILE SECTION * NUMBER FOR AN ANSI-LABELED TAPE. DEFAULT IS 0001. * * AVSN = VSN * ADDS *VSN* AS THE LAST VSN ASSIGNED TO THE TAPE FILE * ENTRY. INCORRECT DIRECTIVE IF THE TAPE FILE ENTRY * ALREADY HAS 60 ASSIGNED VSNS, IF THE TAPE FILE ENTRY * IS NOT THE LAST FILE IN A MULTI-FILE SET, OR IF THE * VSN BEING ADDED HAS SYSTEM STATUS. *VSN* CAN BE * ASSIGNED IF ONE OF THE FOLLOWING CONDITIONS IS MET - * * 1. *VSN* IS NOT ASSIGNED TO ANOTHER TAPE FILE, DOES * NOT HAVE SYSTEM STATUS, AND IT-S SITE AND * OWNERSHIP STATUS MATCH THE STATUS OF THE FIRST * ASSIGNED VSN OF THE TAPE FILE. * * 2. THE TAPE FILE ENTRY HAS NO ASSIGNED VSNS AND *VSN* * IS NOT ASSIGNED TO ANOTHER TAPE FILE, OR IS THE * LAST VSN OF ANOTHER TAPE FILE BELONGING TO THE * USER (PROVIDING FOR MULTI-FILE SET CATALOGS). * * A NULL *VSN* IS INCORRECT. * * TSITE = SITE * SETS SITE AS THE OFF SITE/ON SITE STATUS OF ALL THE * VSNS ASSIGNED TO THE TAPE FILE ENTRY. USERS CANNOT * ACCESS OFF SITE TAPE FILES. VALID VALUES FOR SITE * ARE - * * ON - ON SITE. * * OFF - OFF SITE. * * DEFAULT IS ON. * * RDATE = YYMMDD * SET YYMMDD AS THE USER RELEASE DATE OF THE TAPE * FILE ENTRY. IF THE DIRECTIVE IS SPECIFIED WITH NO * DATE (RDATE=), THE USER RELEASE DATE IS CLEARED. * DEFAULT IS NO RELEASE DATE. * * URDATE = YYMMDD * SET YYMMDD AS THE UNCONDITIONAL RELEASE DATE OF THE * TAPE FILE ENTRY. IF THE DIRECTIVE IS SPECIFIED WITH NO * DATE (RDATE=), THE UNCONDITIONAL RELEASE DATE IS * CLEARED. DEFAULT IS NO RELEASE DATE. * * TOWNER = TYPE * SETS *TYPE* AS THE OWNERSHIP STATUS OF ALL THE VSNS * ASSIGNED TO THE TAPE FILE ENTRY. VALID VALUES FOR * *TYPE* ARE - * * CENTER - CENTER OWNED. * * USER - USER OWNED. * * DEFAULT IS CENTER. * * AUSER = USERNAM * BEGINS ALTERNATE USER LEVEL DIRECTIVES. ALL * DIRECTIVES FOLLOWING THE AUSER DIRECTIVE AND BEFORE * THE NEXT ADMIT, DROP, OR GO DIRECTIVE ARE ASSOCIATED * WITH THE PERMISSION GRANTED TO USER NAME *USERNAM* FOR * THE TAPE FILE ENTRY. INCORRECT ENTRY IF THE TAPE FILE * HAS NOT YET BEEN RESERVED. A NULL *USERNAM* IS * INCORRECT. IF ENTERED FROM THE ALTERNATE USER LEVEL, * AN IMPLIED DROP WILL BE PERFORMED AND NO UPDATE FOR * THE CURRENT LEVEL WILL OCCUR. SPACE 4,10 *** ALTERNATE USER LEVEL DIRECTIVES. * * ALTERNATE USER LEVEL DIRECTIVES REFERENCE AN ALTERNATE USER * GRANTED EXPLICIT PERMISSION TO ACCESS THE TAPE FILE. * ALTERNATE USER LEVEL DIRECTIVES MAY OCCUR ANYWHERE AFTER AN * AUSER DIRECTIVE AND BEFORE AN ADMIT, DROP, OR GO DIRECTIVE. * WHENEVER A ALTERNATE USER LEVEL DIRECTIVE IS ASSIGNED A NULL * VALUE, TFSP WILL SET THE DEFAULT VALUE. * * ADMIT * END PROCESSING OF ALTERNATE USER LEVEL DIRECTIVES. * THE CHANGES SPECIFIED BY THE ALTERNATE USER LEVEL * DIRECTIVES WILL BE MADE TO THE ALTERNATE USER. * * GO * SAME AS ADMIT. * * DROP * END PROCESSING OF ALTERNATE USER LEVEL DIRECTIVES. * CHANGES SPECIFIED BY THE ALTERNATE USER LEVEL * DIRECTIVES WILL BE IGNORED. * * AMODE = MODE * SETS *MODE* AS THE ACCESS PERMISSION GRANTED TO THE * USER. VALID VALUES FOR *MODE* ARE - * * NULL - NO ACCESS ALLOWED TO THE USER. * * READ - USER ALLOWED TO READ BUT NOT WRITE ON THE TAPE * FILE. * * WRITE - USER ALLOWED TO READ AND WRITE ON THE TAPE * FILE. * * IMPLICIT - SEMI-PRIVATE ACCESS. THE MODE SPECIFIED BY * THE M FILE LEVEL DIRECTIVE TAKES PRECEDENCE. * * SPECIAL - TMS CONVERSION MODE. * * DEFAULT IS IMPLICIT. * * AACOUNT = COUNT * SETS THE NUMBER OF ACCESSES BY THE USER TO *COUNT*. * DEFAULT IS ZERO. * * AADATE = YYMMDD * SETS THE DATE OF LAST ACCESS BY THE USER TO *YYMMDD*. * DEFAULT IS THE CURRENT DATE. * * AATIME = HHMMSS * SETS THE TIME OF LAST ACCESS BY THE USER TO *HHMMSS*. * DEFAULT IS THE CURRENT TIME. SPACE 4,10 *** INFORMATIVE DIRECTIVE MESSAGES. * * INFORMATIVE DIRECTIVE MESSAGES ARE ISSUED TO THE OUTPUT FILE * OR K-DISPLAY AFTER THE DIRECTIVE IS PROCESSED. THESE * MESSAGES ARE PREFIXED BY THE CHARACTERS *INFORM*. * THESE MESSAGES WILL NOT BE WRITTEN TO THE OUTPUT FILE * IF TFSP IS IN *BRIEF* MODE. * * P AND N PARAMETERS IGNORED. * FIRST MESSAGE ISSUED WHENEVER TFSP IS NOT RUN IN LOCAL * FILE (LF) MODE. * * I PARAMETER IGNORED. * FIRST MESSAGE ISSUED WHENEVER TFSP IS RUN WITH THE * OP=K OR OP=Z OPTION. * * VSN REMOVED FROM CATALOG. * THE REMOVE DIRECTIVE HAS COMPLETED. * * FILE RELEASED. * THE RELEASE, RELEASF, OR RELEASV DIRECTIVE HAS * COMPLETED. * * ALTERNATE USER CURRENTLY IS ADMITTED. * THE USER NAME SPECIFIED BY THE AUSER DIRECTIVE HAS * BEEN ADMITTED PREVIOUSLY. * * ALTERNATE USER NOT CURRENTLY ADMITTED. * THE USER NAME SPECIFIED BY THE AUSER DIRECTIVE HAS NOT * BEEN PREVIOUSLY ADMITTED. * * ALTERNATE USER NOT PROCESSED. * AN ALTERNATE USER DROP DIRECTIVE HAS BEEN ISSUED. * * ALTERNATE USER ADMITTED. * A NEW ALTERNATE USER HAS BEEN ADMITTED VIA THE ADMIT * DIRECTIVE. * * ALTERNATE USER ADMIT UPDATED. * THE ADMIT ENTRY FOR A PREVIOUSLY ADMITTED ALTERNATE * USER HAS BEEN UPDATED VIA THE ADMIT DIRECTIVE. * * PREMATURE END OF FILE, XXXXXXX. * A NULL INPUT LINE WAS FOUND WHILE READING DIRECTIVES * FROM FILE XXXXXXX. * * FILE CURRENTLY IS RESERVED. * THE TAPE FILE SPECIFIED BY THE FILE DIRECTIVE HAS BEEN * PREVIOUSLY RESERVED. * * FILE NOT CURRENTLY RESERVED. * THE TAPE FILE SPECIFIED BY THE FILE DIRECTIVE HAS NOT * BEEN PREVIOUSLY RESERVED. * * FILE NOT PROCESSED. * THE FILE LEVEL DROP DIRECTIVE HAS BEEN ISSUED. * * FILE RESERVED. * THE RESERVE DIRECTIVE HAS BEEN ISSUED FOR A TAPE FILE * THAT PREVIOUSLY WAS NOT RESERVED. * * FILE AMENDED. * THE AMEND DIRECTIVE HAS BEEN ISSUED FOR A TAPE FILE * THAT PREVIOUSLY WAS RESERVED. * * USER LEVEL COMPLETE. * THE USER LEVEL DROP DIRECTIVE HAS BEEN ISSUED. * * VSN CURRENTLY IN CATALOG. * THE VSN SPECIFIED BY THE VSN DIRECTIVE HAS PREVIOUSLY * BEEN ADDED TO THE TAPE CATALOG FILE. * * VSN INTERLOCKED. JSN IS XXXX. * THE VSN SPECIFIED BY THE VSN DIRECTIVE IS BUSY * AND ASSIGNED (WAITING FOR TAPE TO BE MOUNTED). * THE JSN OF THE JOB REQUESTING THE TAPE IS GIVEN. * * VSN NOT CURRENTLY IN CATALOG. * THE VSN SPECIFIED BY THE VSN DIRECTIVE HAS NOT BEEN * PREVIOUSLY ADDED TO THE TAPE CATALOG FILE. * * VSN RESERVED BY UUUUUUU. * THE VSN SPECIFIED BY THE VSN DIRECTIVE HAS PREVIOUSLY * BEEN ADDED TO THE TAPE CATALOG FILE AND IS ASSIGNED TO * A TAPE FILE OF USER NAME UUUUUUU. * * VSN NOT PROCESSED. * THE VSN LEVEL DROP DIRECTIVE HAS BEEN ISSUED. * * VSN ADDED TO CATALOG. * THE ADD DIRECTIVE HAS BEEN ISSUED FOR A VSN THAT HAS * NOT BEEN PREVIOUSLY ADDED TO THE TAPE CATALOG FILE. * * VSN REVISED. * THE REVISE DIRECTIVE HAS BEEN ISSUED FOR A VSN THAT * HAS BEEN PREVIOUSLY ADDED TO THE TAPE CATALOG FILE. SPACE 4,10 *** DIRECTIVE ERROR MESSAGES. * * TFSP DIRECTIVE ERROR MESSAGES ARE ISSUED TO THE OUTPUT FILE * OR K-DISPLAY AFTER TFSP HAS ATTEMPTED TO PROCESS THE * DIRECTIVE. THE MESSAGES ARE PREFIXED BY THE CHARACTERS * *ERROR*. * * ALTERNATE FAMILIES AT MAXIMUM. * AN ATTEMPT WAS MADE TO ADD A FAMILY NAME WITH THE * *ALTFAM* DIRECTIVE WHEN THE MAXIMUM NUMBER OF * ALTERNATE FAMILIES WERE ALREADY DEFINED. * * ASSIGNED VSNS AT MAXIMUM. * AN ATTEMPT WAS MADE TO ASSIGN MORE THAN 60 VSNS TO A * TAPE FILE OR TO ASSIGN A VSN TO A TAPE FILE THAT WAS * NOT THE LAST FILE OF A MULTI-FILE SET. * * CANNOT CHANGE SYSTEM VSN FLAG. * AN ATTEMPT WAS MADE TO CHANGE THE SYSTEM VSN FLAG OF * A VSN ENTRY WHICH WAS ALREADY IN THE CATALOG. * * CANNOT CHANGE TAPE TYPE / DENSITY. * AN ATTEMPT WAS MADE TO CHANGE THE TAPE TYPE OF A VSN * ENTRY WHICH WAS ALREADY IN THE CATALOG; OR AN ATTEMPT * WAS MADE TO CHANGE THE DENSITY OF A TAPE FILE WHICH * HAD VSN-S ASSIGNED, AND THAT NEW DENSITY IMPLIED A * CHANGE IN TAPE TYPE. * * DATA FIELD ERROR. * THE DATA SPECIFIED WITH THE DIRECTIVE IS NOT VALID FOR * THAT DIRECTIVE. * * DIRECTIVE INCORRECT FROM CURRENT LEVEL. * THE DIRECTIVE THAT WAS ENTERED MAY NOT BE ISSUED FROM * THE CURRENT LEVEL. CONSULT *HELP* DISPLAY FOR CORRECT * LEVEL. * * DIRECTIVE NOT VALID ON FAST ATTACH CATALOG. * THE DIRECTIVE CAN ONLY BE USED IN LOCAL FILE MODE. * * FILE BUSY. * THE TAPE FILE ENTRY SPECIFIED BY THE FILE OR FILEV * DIRECTIVE IS IN USE AND CANNOT BE ACCESSED AT THIS * TIME. * * FILE ALREADY RESERVED. * AN ATTEMPT WAS MADE TO ISSUE THE RESERVE DIRECTIVE FOR * A TAPE FILE THAT ALREADY WAS RESERVED. * * FILE IDENTIFIER CONFLICT. * THE FILE IDENTIFIER SPECIFIED BY THE FI DIRECTIVE IS * THE SAME AS THE FILE IDENTIFIER FOR ANOTHER OF THE * SYMBOLIC ACCESS FILES OF THE USER. * * FILE NAME CONFLICT. * THE FILE SPECIFIED BY THE READ DIRECTIVE IS THE SAME * AS A FILE USED BY ONE OF THE COMMAND * PARAMETERS. * * FILE NOT IN CATALOG. * THE TAPE FILE SPECIFIED BY THE RELEASF OR RELEASV * DIRECTIVE IS NOT AMONG THE TAPE FILES OF THE USER. * * FILE NOT RESERVED. * AN ATTEMPT WAS MADE TO ISSUE THE AUSER OR AMEND * DIRECTIVE FOR A TAPE FILE THAT IS NOT YET RESERVED. * * INCORRECT DIRECTIVE. * EITHER THE DIRECTIVE IS NOT A TFSP DIRECTIVE OR IT * CANNOT BE ISSUED AT THIS POINT IN THE DIRECTIVE * STREAM. * * INCORRECT FILE IDENTIFIER. * AN INCORRECT FILE IDENTIFIER WAS SPECIFIED. * * INCORRECT SEQUENCE NUMBER. * THE SEQUENCE NUMBER SPECIFIED BY THE FILEV DIRECTIVE * IS TOO LARGE. * * NO SCRATCH AVAILABLE. * NO MORE SCRATCH TAPES LEFT IN THE SCRATCH POOL. * SCRATCH TAPES MUST BE ADDED TO THE TAPE CATALOG * BEFORE ANY MORE SCRATCH TAPES CAN BE ASSIGNED. * * NON-MATCHING STATUSES. * THE STATUS OF THE VSN SPECIFIED BY THE AVSN DIRECTIVE * DOES NOT MATCH THE STATUS OF THE FIRST VSN OF THE TAPE * FILE. * * NON-MATCHING TAPE TYPE. * THE TAPE TYPE OF THE VSN SPECIFIED BY THE AVSN * DIRECTIVE EITHER DOES NOT MATCH THE TAPE TYPE IN THE * TAPE FILE CATALOG ENTRY, OR DOES NOT MATCH THE TAPE * TYPE OF THE FIRST VSN OF THE TAPE FILE. * * READ DIRECTIVE INCORRECT. * AN ATTEMPT WAS MADE TO ISSUE THE READ DIRECTIVE FROM * THE FILE BEING READ BY A PREVIOUS READ DIRECTIVE. * * REQUIRED DATA MISSING. * AN ATTEMPT WAS MADE TO RESERVE A TAPE FILE ENTRY * WITHOUT A VSN. * * SYSTEM VSN CANNOT BE USER-OWNED. * AN ATTEMPT WAS MADE TO CHANGE THE OWNERSHIP OF A VSN * WITH THE SYSTEM VSN FLAG SET FROM *CENTER* TO *USER*; * OR AN ATTEMPT WAS MADE TO SET THE SYSTEM VSN FLAG FOR * A USER-OWNED VSN. * * SYSTEM VSN MUST BE FIRST VSN. * AN ATTEMPT WAS MADE TO ADD A SYSTEM VSN TO AN EXISTING * TAPE FILE ENTRY. A SYSTEM VSN MAY BE THE FIRST VSN OF * A TAPE FILE ENTRY, BUT MAY NOT OCCUPY ANY OTHER PLACE * IN THE SET. * * VALIDATED USERS AT MAXIMUM. * AN ATTEMPT WAS MADE TO ADD A NINTH VALIDATED USER VIA * THE VALIDAT DIRECTIVE. * * VSN ALREADY ASSIGNED. * THE VSN SPECIFIED BY AN REMOVE OR AVSN DIRECTIVE IS * ASSIGNED TO A TAPE FILE ENTRY. * * VSN ALREADY IN CATALOG. * AN ATTEMPT WAS MADE TO ISSUE THE ADD DIRECTIVE FOR A * VSN THAT HAD ALREADY BEEN ADDED TO THE TAPE CATALOG * FILE. * * VSN BUSY. * THE VSN SPECIFIED BY THE VSN OR AVSN DIRECTIVE IS IN * USE AND CANNOT BE ACCESSED AT THIS TIME. * * VSN NOT ADDED TO CATALOG. * AN ATTEMPT WAS MADE TO ISSUE THE REVISE DIRECTIVE FOR * A VSN THAT HAD NOT YET BEEN ADDED TO THE TAPE CATALOG * FILE. * * VSN NOT ASSIGNED TO FILE. * THE VSN SPECIFIED BY THE RELEASE DIRECTIVE IS NOT * ASSIGNED TO A TAPE FILE. * * VSN NOT AVAILABLE. * THE VSN SPECIFIED BY THE FILEV DIRECTIVE IS EITHER NOT * IN THE TAPE CATALOG OR IS ASSIGNED TO ANOTHER USER. * * VSN NOT IN CATALOG. * THE VSN SPECIFIED BY AN RELEASE OR AVSN DIRECTIVE IS * NOT IN THE TAPE CATALOG FILE. TITLE SYSTEM EQUIVALENCES AND MACROS FOR MACROS. COMMON SPACE 4,10 ** COMMON DECKS. *CALL COMCMAC *CALL COMCCMD *CALL COMCDCM QUAL COMSMTX *CALL COMSMTX QUAL * *CALL COMSPRD *CALL COMSSFM *CALL COMSSSD *CALL COMSSSJ *CALL COMSTFM SETREG SPACE 4,15 ** SETREG - SET REGISTER WITH VALUE OR DEFAULT. * * SETREG REG,VALUE,DEFAULT * * ENTRY REG = REGISTER TO RECEIVE VALUE OR DEFAULT. * VALUE = VALUE SET INTO *REG* IF NOT NULL. * DEFAULT = VALUE SET INTO *REG* IF *VALUE* IS NULL. * * EXIT REGISTER SET TO *VALUE* OR *DEFAULT*. * * MACROS SETVAL. PURGMAC SETREG SETREG MACRO RG,VA,DF SETVAL ( R= RG,),VA,DF ENDM SETVAL SPACE 4,10 ** SETVAL - SET VALUE OR ITS DEFAULT. * * SETVAL (INST),VALUE,DEFAULT * * ENTRY INST = FIRST PART OF INSTRUCTION. (INCLUDE SPACES.) * VALUE = VALUE FOR *INST* IF NOT NULL. * DEFAULT = VALUE FOR *INST* IF *VALUE* IS NULL. * * EXIT INSTRUCTION SET WITH *VALUE* OR *DEFAULT*. PURGMAC SETVAL SETVAL MACRO IN,VA,DF IFC EQ,$VA$$ IF DEFAULT IN_DF ELSE IF NOT DEFAULT IN_VA ENDIF ENDM TITLE MACROS FOR TABLE GENERATION. BITMIC SPACE 4,15 ** BITMIC - GENERATE SPECIAL CHARACTER BIT STRING MICRO. * * TAG BITMIC (C1,C2,...,CN) * * ENTRY CI = SPECIAL CHARACTER (CODE .GE. 45B). * = *L* FOR LEFT PARENTHESIS. * = *R* FOR RIGHT PARENTHESIS. * = *U* FOR UNDERLINE/ARROW. * * EXIT DECIMAL MICRO *TAG* IS GENERATED. BIT POSITION * EQUALING (CHARACTER CODE - 45B) IS SET FOR EACH * CHARACTER *CI*. IF *TAG* IS REDEFINED, THE NEW VALUE * IS THE LOGICAL DIFFERENCE OF THE OLD VALUE WITH THE * NEW BIT STRING. FOR COLON, BIT POSITION 35 IS SET. PURGMAC BITMIC MACRO BITMIC,TAG,S LOCAL A,B,C A DECMIC 0 ECHO ,B=(S) .1 IFC EQ,D_B_D_L_D C DECMIC 1R(-1R+ .1 ELSE .2 IFC EQ,D_B_D_R_D C DECMIC 1R)-1R+ .2 ELSE .3 IFC EQ,D_B_D_U_D C DECMIC 65B-1R+ .3 ELSE .4 IFC EQ,D_B_D_:_D C DECMIC 100B-1R+ .4 ELSE C DECMIC 1R_B-1R+ ENDIF A DECMIC "A"&1S_"C" ENDD IF -MIC,TAG TAG DECMIC "A" ELSE TAG DECMIC "TAG"&"A" ENDIF ENDM CATBASE SPACE 4,10 ** CATBASE - INITIALIZE TABLE FOR *CATBIT* MACRO. * * NAME CATBASE * * ENTRY NAME = NAME OF TABLE. * * EXIT *NAME* DEFINED TO LOCATION COUNTER VALUE. * */CATBIT/BASE* SET TO ORIGIN COUNTER. PURGMAC CATBASE MACRO CATBASE,TAG TAG BSS 0 QUAL CATBIT BASE SET *O QUAL * LOC 0 ENDM CATBIT SPACE 4,25 ** CATBIT - GENERATE CATALOG ENTRY. * * NAME CATBIT WORD,UPB,BCOUNT,VALUE1,VALUE2 * * ENTRY NAME = IDENTIFIER TO BE ASSOCIATED WITH CATALOG * ENTRY. DEFAULT IN NO IDENTIFIER. * WORD = RELATIVE ADDRESS OF ENTRY IN CATALOG. VERIFIED * AGAINST ACTUAL ADDRESS. DEFAULT IS NO * VERIFICATION. * UPPERB = UPPER BIT POSITION OF CATALOG ENTRY. * VERIFIED AGAINST ACTUAL BIT POSITION. * DEFAULT IS NO VERIFICATION. * BCOUNT = BIT COUNT OF CATALOG ENTRY. * VALUE1 = VALUE OF CATALOG ENTRY IF *BCOUNT* .LE. 60. * VALUE OF FIRST 60 BITS OF CATALOG ENTRY IF * *BCOUNT* .GT. 60. DEFAULT IS 0. * VALUE2 = VALUE OF REMAINDER OF CATALOG ENTRY IF * *BCOUNT* IS .GT. 60. * * EXIT CATALOG ENTRY GENERATED. * */ADD/NAME* DEFINED TO ORIGIN COUNTER. * */CAT/NAME* DEFINED TO RELATIVE ADDRESS IN CATALOG. * CATALOG. * */UPB/NAME* DEFINED TO POSITION COUNTER. * */BTC/NAME* DEFINED TO *BCOUNT*. PURGMAC CATBIT MACRO CATBIT,TAG,WD,UB,BC,V1,V2 LOCAL A IFC NE,$TAG$$ IF *NAME* TO BE DEFINED QUAL ADD TAG EQU *O QUAL * QUAL CAT TAG EQU * QUAL * QUAL UPB TAG EQU *P-1 QUAL * QUAL BTC TAG EQU BC QUAL * ENDIF IFC NE,$WD$$ IF VERIFY RELATIVE ADDRESS ERRNZ WD-* INCONSISTENT CATALOG ADDRESS ENDIF IFC NE,$UB$$ IF VERIFY UPPER BIT ERRNZ UB-*P+1 INCONSISTENT BIT POSITION ENDIF IFLE BC,60 IF BIT COUNT .LE. 60 A DECMIC BC VFD "A"/V1 ELSE IF BIT COUNT .GT. 60 A DECMIC BC-60 VFD 60/V1 VFD "A"/V2 ENDIF ENDM CATEND SPACE 4,10 ** CATEND - END TABLE FOR CATBIT MACRO. * * CATEND LENGTH * * ENTRY LENGTH = TABLE LENGTH TO VERIFY AGAINST ACTUAL LENGTH. PURGMAC CATEND CATEND MACRO LN BSS 0 ERRNZ LN-* INCONSISTENT TABLE LENGTH LOC *O ENDM DCTAB SPACE 4,45 ** DCTAB - GENERATE DIRECTIVE CONTROL TABLE. * * NAME DCTAB IND,MNC,MXC,AC,SC,UB,BC,PRO,ENT,MNV,MXV,DEF * * ENTRY NAME = LABEL ASSOCIATED WITH DIRECTIVE. * IND = *DIP* PROCESSOR INDEX. * PIZF - ZERO FILL. * PIBF - BLANK FILL. * PIOP - OPTION SELECTION. * PIBD - NUMERIC BINARY DATA. * PIPD - PACKED DATE. * PIPT - PACKED TIME. * PIJD - JULIAN DATE. * PIVQ - VSN/SEQUENCE NUMBER. * PIVS - PADDED VSN. * MNC = MINIMUM NUMBER OF CHARACTERS. * MXC = MAXIMUM NUMBER OF CHARACTERS. * AC = ADDRESS OF ALLOWED CHARACTERS BIT STRING. * DEFAULT IS ="NC". * SC = ADDRESS OF SUPPRESSED CHARACTERS BIT STRING. * DEFAULT IS ="BL". * UB = UPPER BIT POSITION OF CATALOG ENTRY. * DEFAULT IS /UPB/NAME. * BC = BIT COUNT OF CATALOG ENTRY. * = 0 IF NO CATALOG ENTRY. * DEFAULT IS /BTC/NAME. * PRO = POST PROCESSOR ADDRESS. * DEFAULT IS 0 - NO POST PROCESSOR. * ENT = ADDRESS OF CATALOG ENTRY. * DEFAULT IS */ADD/NAME*. * MNV = ADDRESS OF MINIMUM VALUE FOR *PIBD* TYPE. * MXV = ADDRESS OF MAXIMUM VALUE FOR *PIBD* TYPE. * = ADDRESS OF OPTION TABLE FOR *PIOP* TYPE. * DEFAULT FOR *PIOP* TYPE IS /DOTAB/NAME. * DEF = ADDRESS OF DEFAULT VALUE. * DEFAULT FOR *PIOP* TYPE IS /DOTAB/NAME. * * EXIT LABEL /DCTAB/NAME IS GENERATED. * MICROS *POP*, *MNV*, *MXV*, AND *DEF* DEFINED * FOR *DCTABO*. * FIRST THREE WORDS OF TABLE ARE GENERATED. * 12/IND,6/MNC,6/MXC,18/AC,18/SC * 12/UB,12/BC,18/PRO,18/ENT * 6/,18/MNV,18/MXV,18/DEF * * NOTES THE *DCTAB* MACRO MUST BE FOLLOWED BY A *DCTABL* * MACRO. PURGMAC DCTAB MACRO DCTAB,TAG,IN,MC,XC,AC,SC,UB,BC,PR,EN,MV,XV,DF LOCAL A * SET FIRST WORD. A VFD 12/IN,6/MC,6/XC SETVAL ( VFD 18/),AC,(="NC") SETVAL ( VFD 18/),SC,(="BL") * DEFINE *NAME*. QUAL DCTAB TAG EQU A QUAL * * SET SECOND WORD. IF -DEF,/UPB/TAG IF NO DEFAULTS VFD 12/UB,12/BC,18/PR,18/EN ELSE IF DEFAULTS SETVAL ( VFD 12/),UB,/UPB/TAG SETVAL ( VFD 12/),BC,/BTC/TAG VFD 18/PR SETVAL ( VFD 18/),EN,/ADD/TAG ENDIF * SET MICROS FOR *DCTABO*. POP MICRO 1,, IN SETVAL ( MNV MICRO 1,, ),(MV),0 IFC NE,$IN$PIOP$ IF NOT OPTION TYPE SETVAL ( MXV MICRO 1,, ),(XV),0 SETVAL ( DEF MICRO 1,, ),(DF),0 ELSE IF OPTION TYPE SETVAL ( MXV MICRO 1,, ),(XV),/DOTAB/TAG SETVAL ( DEF MICRO 1,, ),(DF),/DOTAB/TAG ENDIF * SET CHECK FOR THIRD WORD. DCTRMT RMT ERRNZ /DCTAB/TAG+2-* NO *DCTABL* FOR TAG DCTRMT RMT ENDM DCTABL SPACE 4,20 ** DCTABL - GENERATE DIRECTIVE LEVEL CONTROL TABLE. * * NAME DCTABL PVL,DVL * * ENTRY NAME = LABEL ASSOCIATED WITH DIRECTIVE. * PVL = FLAG FOR IMPLIED DROP REQUIREMENT. * = 0 IF DIRECTIVE REQUIRES NO IMPLIED DROP. * = 1 IF DIRECTIVE REQUIRES IMPLIED DROP. * DVL = FLAG FOR LOWER LEVEL VALIDITY. * = 0 IF VALID FROM LOWER LEVEL. * = 1 IF NOT VALID FROM ANOTHER LEVEL. * MICROS *POP*, *MNV*, *MXV*, AND *DEF* DEFINED * BY *DCTAB*. * * EXIT WORD 2 OF DIRECTIVE CONTROL TABLE REGENERATED. * 1/,1/PVL,1/DVL,3/,18/MNV,18/MXV,18/DEF PURGMAC DCTABL MACRO DCTABL,TAG,PV,DV * SET MICROS FOR *DCTABO*. SETVAL ( PVL MICRO 1,, ),(PV),0 SETVAL ( DVL MICRO 1,, ),(DV),0 * SET THIRD WORD. DCTRMT HERE VFD 1/,1/"PVL",1/"DVL",3/,18/"MNV",18/"MXV",18/"DEF" ENDM DCTABO SPACE 4,40 ** DCTABO - GENERATE DIRECTIVE CONTROL TABLE OUTPUT BLOCK. * * NAME DCTABO KCH,KUB,KADD,ACH,AUB,AADD,SCH,SUB,SADD,MCH,MUB,MADD * * ENTRY NAME = DIRECTIVE IDENTIFIER. * KCH = NUMBER OF CHARACTERS IN K-DISPLAY. * DEFAULT IS 10. * KUB = UPPER BIT POSITION IN K-DISPLAY. * DEFAULT IS 5. * KADD = ADDRESS IN K-DISPLAY. * DEFAULT IS */KDIS/NAME*. * ACH = NUMBER OF CHARACTERS IN AUDIT LISTING. * DEFAULT IS */ALSC/NAME*. * AUB = UPPER BIT POSITION IN AUDIT LISTING. * DEFAULT IS */ALSU/NAME*. * AADD = ADDRESS IN AUDIT LISTING. * DEFAULT IS */ALS/NAME*. * SCH = NUMBER OF CHARACTERS IN SOURCE LISTING. * DEFAULT IS */SLSC/NAME*. * SUB = UPPER BIT POSITION IN SOURCE LISTING. * DEFAULT IS */SLSU/NAME*. * SADD = ADDRESS IN SOURCE LISTING. * DEFAULT IS */SLS/NAME*. * MCH = NUMBER OF CHARACTERS IN MACHINE READABLE LIST. * DEFAULT IS */MLSC/NAME*. * MUB = UPPER BIT POSITION IN MACHINE READABLE LISTING. * DEFAULT IS */MLSU/NAME*. * MADD = ADDRESS IN MACHINE READABLE LISTING. * DEFAULT IS */MSL/NAME*. * MICROS *POP*, *MNV*, *MXV*, *DEF*, *PVL*, * AND *DVL* DEFINED BY *DCTABL* AND * BY *DCTAB*. * * EXIT OUTPUT BLOCK FLAG SET IN DIRECTIVE CONTROL TABLE. * TWO WORD BLOCK GENERATED. * 6/KCH,6/KUB,18/KADD,6/ACH,6/AUB,18/AADD * 6/SCH,6/SUB,18/SADD,6/MCH,6/MUB,18/MADD PURGMAC DCTABO MACRO DCTABO,TAG,KC,KU,KA,AC,AU,AA,SC,SU,SA,MC,MU,MA LOCAL A,B * SET OUTPUT BLOCK FLAG IN DIRECTIVE CONTROL TABLE. A SET *O B SET * ORG /DCTAB/TAG+2 VFD 1/1,1/"PVL",1/"DVL",3/,18/"MNV",18/"MXV",18/"DEF" ORG A LOC B * SET OUTPUT BLOCK VALUES. IFC EQ,$"POP"$PIBD$ IF BINARY DATA TYPE A SET -1 ELSE IF NOT BINARY DATA TYPE A SET 1 ENDIF SETVAL ( VFD 6/),KC,10 SETVAL ( VFD 6/),KU,5 SETVAL ( VFD 18/),KA,(/KDIS/TAG) SETVAL ( VFD 6/),AC,(/ALSC/TAG*A) SETVAL ( VFD 6/),AU,(/ALSU/TAG) SETVAL ( VFD 18/),AA,(/ALS/TAG) SETVAL ( VFD 6/),SC,(/SLSC/TAG*A) SETVAL ( VFD 6/),SU,(/SLSU/TAG) SETVAL ( VFD 18/),SA,(/SLS/TAG) SETVAL ( VFD 6/),MC,(/MLSC/TAG*A) SETVAL ( VFD 6/),MU,(/MLSU/TAG) SETVAL ( VFD 18/),MA,(/MLS/TAG) ENDM DOTAB SPACE 4,15 ** DOTAB - GENERATE DIRECTIVE OPTION TABLE. * * NAME DOTAB ((OP1,VAL1),(OP2,VAL2),...,(OPN,VALN)) * * ENTRY NAME = LABEL ASSOCIATED WITH DIRECTIVE. * OPI = DIRECTIVE OPTION. * VALI = VALUE ASSOCIATED WITH OPTION *OPI*. * * EXIT LABEL /DOTAB/NAME IS GENERATED. * TWO WORD BLOCK FOR EACH OPTION IS GENERATED. * 60/0L*OPI* * 60/*VALI* * TABLE IS TERMINATED BY A ZERO WORD. PURGMAC DOTAB MACRO DOTAB,TAG,ST LOCAL A,B,DOENT * DEFINE MACRO FOR TABLE GENERATION. * DOENT OPTION,VALUE DOENT MACRO OP,VA VFD 60/0L_OP VFD 60/VA DOENT ENDM * GENERATE TABLE. A SET * ECHO ,B=(ST) DOENT B ENDD CON 0 * DEFINE *NAME*. QUAL DOTAB TAG EQU A QUAL * ENDM DTAB SPACE 4,15 ** DTAB - GENERATE DIRECTIVE TABLE ENTRY. * * NAME DTAB IDENT,ADDR * * ENTRY NAME = IF SPECIFIED, LABEL */DTAB/NAME* IS DEFINED. * IDENT = DIRECTIVE IDENTIFIER. * ADDR = PROCESSOR/CONTROL TABLE ADDRESS. * DEFAULT IS */DCTAB/NAME*. * * EXIT ONE WORD ENTRY GENERATED. * 42/*IDENT*,18/ADDR PURGMAC DTAB MACRO DTAB,TAG,ID,AD LOCAL A A VFD 42/0L_ID SETVAL ( VFD 18/),AD,(/DCTAB/ID) IFC NE,$TAG$$ IF DEFINE *NAME* QUAL DTAB TAG EQU A QUAL * ENDIF ENDM INDEX SPACE 4,15 ** INDEX - GENERATE INDEXED TABLE ENTRY. * * INDEX IND,OP,ADD * * ENTRY IND = INDEX VALUE. * OP = OPERATION FIELD OF TABLE ENTRY. * ADD = ADDRESS FIELD OF TABLE ENTRY. * LABELS /INDEX/NAME AND /INDEX/LENGTH DEFINED BY THE * *INDTAB* MACRO. * * EXIT TABLE ENTRY GENERATED. PURGMAC INDEX INDEX MACRO IN,OP,AD LOCAL A A SET *O ORG /INDEX/NAME+/INDEX/LENGTH*IN LOC IN OP AD ORG A+/INDEX/LENGTH LOC *O ENDM INDTAB SPACE 4,10 ** INDTAB - DEFINE START OF INDEXED TABLE. * * NAME INDTAB LENGTH * * ENTRY NAME = NAME OF INDEXED TABLE. * LENGTH = LENGTH OF INDEXED TABLE ENTRY. * * EXIT LABELS /INDEX/NAME AND /INDEX/LENGTH DEFINED FOR USE * BY THE *INDEX* MACRO. PURGMAC INDTAB MACRO INDTAB,TAG,LN TAG BSS 0 QUAL INDEX NAME SET TAG LENGTH SET LN QUAL * ENDM KEND SPACE 4,10 ** KEND - END K-DISPLAY. * * KEND * * EXIT QUALIFIED LABELS *NEXT*, *LENGTH*, AND *LINES* * DEFINED FOR K-DISPLAY TABLE. PURGMAC KEND KEND MACRO NEXT EQU * LENGTH EQU NEXT-START LINES EQU "KLINES" QUAL * CON 0 ENDM KLINE SPACE 4,10 ** KLINE - GENERATE K-DISPLAY LINE. * * KLINE (STRING),E,CPL * * ENTRY STRING = CHARACTER STRING TO DISPLAY. * E = END-OF-LINE GENERATED IF SPECIFIED. * CPL = MAXIMUM NUMBER OF CHARACTERS PER LINE. * DEFAULT IS 60. * MICROS *KLINEC* AND *KLINES* PREVIOUSLY DEFINED. * * EXIT DISPLAY LINE GENERATED. * MICROS *KLINEC* AND *KLINES* INCREMENTED. PURGMAC KLINE KLINE MACRO ST,EL,CC LOCAL A,B .1 IFC EQ,$EL$$ IF NOT END OF LINE DATA H$ST$ .1 ELSE IF END OF LINE DATA C$ST$ .2 IF MIC,KLINES IF *KLINES* PREVIOUSLY DEFINED KLINES DECMIC "KLINES"+1 ENDIF A MICRO 1,,$ST$ B MICCNT A IF -MIC,KLINEC IF *KLINEC* NOT PREVIOUSLY DEFINED KLINEC DECMIC 0 ENDIF KLINEC DECMIC "KLINEC"+B .1 IFC NE,$CC$$ ERRNG CC-"KLINEC" K-DISPLAY LINE TOO LONG .1 ELSE .2 IFC NE,$EL$$ ERRNG 60-"KLINEC" K-DISPLAY LINE TOO LONG ENDIF IFC NE,$EL$$ IF END OF LINE KLINEC DECMIC 0 ENDIF ENDM KNEXT SPACE 4,15 ** KNEXT - GENERATE POINTER TO REST OF K-DISPLAY. * * KNEXT NDISP,NOLAB * * ENTRY NDISP = ADDRESS OF REST OF K-DISPLAY. * NOLAB = IF SPECIFIED, LABELS *NEXT*, *LENGTH*, AND * *LINES* ARE NOT DEFINED. * * EXIT ONE WORD GENERATED TO POINT TO REST OF K-DISPLAY. * 12/7777B,30/,18/NDISP * LABEL *NEXT* DEFINED AT CURRENT LOCATION. * LABEL *LENGTH* DEFINED EQUAL TO *NEXT-START*. * LABEL *LINES* SET TO MICRO *KLINES*. PURGMAC KNEXT KNEXT MACRO ND,NL LOCAL A A EQU * VFD 12/7777B,30/,18//ND/START IFC EQ,$NL$$ IF NOT *NOLAB* NEXT EQU A LENGTH EQU NEXT-START LINES EQU "KLINES" QUAL * ENDIF ENDM KSTART SPACE 4,15 ** KSTART - START K-DISPLAY BUFFER. * * NAME KSTART CW * * ENTRY NAME = NAME ASSIGNED TO K-DISPLAY BUFFER. * CW = IF SPECIFIED, A CONTROL WORD SPECIFYING 64 * CHARACTERS PER LINE AND CODED FORMAT IS * GENERATED. * * EXIT LABEL *NAME* DEFINED AT CURRENT LOCATION. * CONTROL WORD IS GENERATED. * 10/0,1/0,1/1,47/0,1/0 IF *CW*. * 42/,18//NAME/LENGTH IF NOT *CW*. * LABEL */NAME/START* DEFINED AFTER CONTROL WORD. * *NAME* SET AS QUALIFIER. * MICRO *KLINES* INITIALIZED. PURGMAC KSTART MACRO KSTART,TAG,CW IFC EQ,$CW$$ IF NOT *CW* TAG VFD 42/,18//TAG/LENGTH ELSE IF *CW* TAG VFD 10/0,1/0,1/1,47/0,1/0 ENDIF QUAL TAG START BSS 0 KLINES DECMIC 0 ENDM LISTER SPACE 4,25 ** LISTER - GENERATE OUTPUT/SOURCE LISTING ENTRY. * * NAME LISTER QUAL,CHAR,STRING,E,CPL * * ENTRY NAME = IF SPECIFIED, THREE LABELS ARE DEFINED - * /"LQUAL"/NAME - ADDRESS OF LISTING ENTRY. * /"LQUAL"U/NAME - UPPER BIT OF LISTING ENTRY. * /"LQUAL"C/NAME - BIT COUNT OF LISTING ENTRY. * QUAL = IF SPECIFIED, MICRO *LQUAL* IS SET TO *QUAL*. * MUST BE LESS THAN 8 CHARACTERS. * CHAR = NUMBER OF CHARACTERS IN LISTING ENTRY. * STRING = CHARACTERS OF LISTING ENTRY. * DEFAULT IS BLANKS. * E = IF SPECIFIED, END OF LINE IS GENERATED. * CPL = MAXIMUM NUMBER OF CHARACTERS PER LINE. * DEFAULT IS UNLIMITED. * MICRO *LISTERC* SET TO NUMBER OF CHARACTERS IN LINE. * * EXIT LISTING ENTRY GENERATED. * THREE LABELS DEFINED. * MICRO *LQUAL* REDEFINED. * MICRO *LISTERC* INCREMENTED. PURGMAC LISTER MACRO LISTER,TAG,LQ,CH,ST,EN,CC LOCAL A,B,D,E,F,G,I,J A EQU *O B EQU *P-1 D DECMIC CH E MICRO 1,,$ST$ F SET CH-1 F SET F/10 DUP F D DECMIC "D"-10 G MICRO 1,10,$"E"$ E MICRO 11,,$"E"$ VFD 60/10H"G" ENDD I DECMIC "D"*6 VFD "I"/"D"H"E" .1 IFC NE,$EN$$ IF END OF LINE J DECMIC *P VFD "J"/0 .2 IFLT "J",12 IF MORE ZEROS NEEDED VFD 60/0 ENDIF IFC NE,$LQ$$ IF QUALIFIER SPECIFIED LQUAL MICRO 1,, LQ LISTERC DECMIC CH ELSE IF NO QUALIFIER LISTERC DECMIC "LISTERC"+CH ENDIF IFC NE,$TAG$$ IF *NAME* SPECIFIED QUAL "LQUAL" TAG EQU A QUAL * QUAL "LQUAL"U TAG EQU B QUAL * QUAL "LQUAL"C TAG EQU CH QUAL * ENDIF IFC NE,$CC$$ IF MAXIMUM NUMBER OF CHARACTERS SPECIFIED ERRNG CC-"LISTERC" LIST LINE TOO LONG ENDIF IFC NE,$EN$$ IF END OF LINE LISTERC DECMIC 0 ENDIF ENDM REWORD SPACE 4,10 ** REWORD - RESET VALUE IN PREVIOUSLY DEFINED WORD. * * REWORD ADDR,(VALUE) * * ENTRY ADDR = ADDRESS OF WORD TO BE RESET. * VALUE = NEW VALUE OF WORD IN *VFD* BIT FORMAT. * * EXIT (ADDR) = VALUE. PURGMAC REWORD REWORD MACRO AD,VA LOCAL A,B A SET * B SET *O ORG AD VFD VA ORG B LOC A ENDM TITLE MACROS FOR EXECUTABLE CODE. ABTMSG SPACE 4,15 ** ABTMSG - ABORT WITH ERROR MESSAGE * * ABTMSG EADD,NA * * ENTRY EADD = ERROR MESSAGE ADDRESS. (USES A6, X6.) * IF NOT SPECIFIED, ADDRESS IS NOT CHANGED. * * NA = IF SPECIFIED, NO JUMP TO *ABT*. * * EXIT *TFSP* ABORTED. ERROR MESSAGE ISSUED TO DAYFILE. * * USES A - 6. * X - 6. * * CALLS ABT. PURGMAC ABTMSG ABTMSG MACRO EA,NA MACREF ABTMSG IFC NE,$EA$$ IF SET ERROR MESSAGE ADDRESS R= X6,EA R= A6,EM ENDIF IFC EQ,$NA$$ IF ABORT *TFSP* EQ //ABT ABORT *TFSP* ENDIF ENDM CALLTFM SPACE 4,15 ** CALLTFM - CALL *TFM*. * * CALLTFM FET,REQ * * ENTRY FET = FET ADDRESS. (USES X2.) * REQ = FUNCTION CODE IF NO INTERLOCK. * = (-1)*FUNCTION CODE IF INTERLOCK. (USES X6.) * * EXIT (X2) = FET ADDRESS. * (X4) = ERROR CODE. * TO *ABT* IF UNRECOGNIZABLE ERROR CODE. * * USES X - 6. * * CALLS CTF. PURGMAC CALLTFM CALLTFM MACRO FT,RQ MACREF CALLTFM R= X6,RQ SET FUNCTION CODE R= X2,FT SET FET ADDRESS RJ //CTF CALL *TFM* ENDM CHKFIL SPACE 4,10 ** CHKFIL - CHECK IF FILE IS READY. * * CHKFIL FET * * ENTRY FET = FET ADDRESS OF FILE. (USES X2.) * * EXIT (X1) = 0 IF NO FILE NAME. * (X2) = FET ADDRESS. * * CALLS CFR. PURGMAC CHKFIL CHKFIL MACRO FT MACREF CHKFIL R= X2,FT RJ //CFR CHECK IF FILE IS READY ENDM CLEAR SPACE 4,15 ** CLEAR - CLEAR BUFFER. * * CLEAR BUF,LEN * * ENTRY BUF = ADDRESS OF BUFFER. (USES B6.) * LEN = LENGTH OF BUFFER. * * EXIT (B6) = BUFFER ADDRESS. * WORDS IN BUFFER SET TO ZERO. * * USES A - 6. * B - 7. * X - 6. PURGMAC CLEAR CLEAR MACRO BF,LN LOCAL A,B MACREF CLEAR R= B6,BF R= B7,LN R= X6,0 A SB7 B7-B1 NG B7,B IF END OF BUFFER SA6 B6+B7 CLEAR WORD IN BUFFER EQ A CHECK NEXT WORD B BSS 0 EXIT ENDM CLINES SPACE 4,15 ** CLINES - COUNT LINES IN BUFFER. * * CLINES BUF,WC * * ENTRY BUF = BUFFER ADDRESS. (USES A1, X1.) * WC = WORD COUNT OF BUFFER. (USES B6.) * * EXIT (A1) = LWA+1 OF BUFFER. * (B6) = WORD COUNT OF BUFFER. * (B7) = LINE COUNT OF BUFFER. * * USES B - 2. * X - 1. * * CALLS CWL. PURGMAC CLINES CLINES MACRO BF,WC MACREF CLINES R= A1,BF R= B6,WC R= B2,0 RJ CWL COUNT WORDS/LINES IN BUFFER ENDM CWORDS SPACE 4,15 ** CWORDS - COUNT WORDS IN BUFFER. * * CWORDS BUF,LC * * ENTRY BUF = BUFFER ADDRESS. (USES A1, X1.) * LC = LINE COUNT OF BUFFER. (USES B7.) * * EXIT (A1) = LWA+1 OF BUFFER. * (B6) = WORD COUNT OF BUFFER. * (B7) = LINE COUNT OF BUFFER. * * USES B - 2. * X - 1. * * CALLS CWL. PURGMAC CWORDS CWORDS MACRO BF,LC MACREF CWORDS R= A1,BF R= B7,LC R= B2,1 RJ CWL COUNT WORDS/LINES IN BUFFER ENDM DELVSN SPACE 4,15 ** DELVSN - DELETE VSN ENTRIES. * * DELVSN VBUF,VLEN * * ENTRY VBUF = ADDRESS OF VSN BUFFER. (USES B6.) * VLEN = LENGTH OF VSN BUFFER. (USES B7.) * * EXIT (X4) = 0 IF DELETE COMPLETE. * .NE. 0 IF A VSN IS ASSIGNED. * * USES B - 6, 7. * * CALLS DVS. PURGMAC DELVSN DELVSN MACRO VB,VL MACREF DELVSN R= B6,VB R= B7,VL RJ //DVS DELETE VSN ENTRIES ENDM DISLIS SPACE 4,25 ** DISLIS - DISPLAY LIST OF ENTRIES. * * DISLIS LADD,DADD,LLEN,BCE,BCB,EPL * * ENTRY LADD = LIST ADDRESS. (USES A1, X1.) * DADD = DISPLAY ADDRESS. (USES A2, X2.) * LLEN = LIST LENGTH. * .LT.0 IF ZERO WORD TERMINATED. * DEFAULT IS -1. (USES B3.) * BCE = BIT COUNT OF ENTRY. MAXIMUM IS 120. * DEFAULT IS 60. (USES B4.) * BCB = BIT COUNT BETWEEN ENTRIES. MAXIMUM IS 60. * DEFAULT IS 6. (USES B6.) * EPL = NUMBER OF ENTRIES PER DISPLAY LINE. * DEFAULT IS 5. (USES X7.) * (X6) = IMAGE TO SET BETWEEN ENTRIES, RIGHT JUSTIFIED. * * EXIT (A1) = LWA+1 OF LIST. * (A2) = LWA+1 OF DISPLAY. * (X3) = LAST BIT POSITION - 1 OF DISPLAY. * * USES B - 3, 4, 6. * X - 1, 2, 7. * * CALLS TLD. PURGMAC DISLIS DISLIS MACRO LA,DA,LL,BE,BB,EP MACREF DISLIS R= A1,LA R= A2,DA SETREG B3,LL,(-1) SETREG B4,BE,60 SETREG B6,BB,6 SETREG X7,EP,5 RJ TLD PROCESS TABLE LIST TO DISPLAY. ENDM GFILE SPACE 4,25 ** GFILE - GET FILE CATALOG VIA FILE IDENTIFIER. * * GFILE UADD,FADD,FBUF,PBUF,VBUF,NV * * ENTRY UADD = ADDRESS OF USER NAME. (USES A1, X1.) * FADD = ADDRESS OF FILE ID. (USES A2, A3, X2, X3.) * FBUF = ADDRESS OF FILE CATALOG BUFFER. (USES B6.) * PBUF = ADDRESS OF PREVIOUS FILE BUFFER. (USES B7.) * VBUF = ADDRESS OF VSN BUFFER. (USES B2.) * NV = 0 IF VERIFY FILE STATUS. * .NE. 0 IF ASSUME FILE NOT FOUND. * DEFAULT IS 0. (USES B4.) * * EXIT (X4) = 0 IF FILE FOUND. * .NE. 0 IF FILE NOT FOUND. DEFAULT SET IN BUFFER. * (X6) = FILE CATALOG RANDOM ADDRESS. * (X7) = PREVIOUS FILE RANDOM ADDRESS. * (B6) = FILE COUNT. * (B7) = VSN COUNT. * * USES A - 1, 2, 3. * B - 2, 4. * X - 1, 2, 3. * * CALLS GFI. PURGMAC GFILE GFILE MACRO UA,FA,FB,PB,VB,NV MACREF GFILE R= A1,UA R= A2,FA R= A3,A2+B1 R= B6,FB R= B7,PB R= B2,VB SETREG B4,NV,0 RJ GFI GET FILE CATALOG VIA FILE IDENTIFIER ENDM GFILEV SPACE 4,30 ** GFILEV - GET FILE CATALOG VIA VSN. * * GFILEV UADD,VADD,SQNO,FBUF,PBUF,VBUF,NV * * ENTRY UADD = ADDRESS OF USER NAME. * VADD = ADDRESS OF VSN. * SQNO = SEQUENCE NUMBER. (USES X3.) * FBUF = ADDRESS OF FILE CATALOG BUFFER. (USES B6.) * PBUF = ADDRESS OF PREVIOUS FILE BUFFER. (USES B7.) * VBUF = ADDRESS OF VSN BUFFER. (USES B2.) * NV = 0 IF VERIFY FILE STATUS. * .NE. 0 IF ASSUME FILE NOT FOUND. * DEFAULT IS 0. (USES B4.) * * EXIT (X4) = 0 IF FILE FOUND. * = 1 IF FILE NOT FOUND AND DEFAULT SET IN BUFFERS. * = -1 IF INCORRECT SEQUENCE NUMBER. * = -2 IF VSN NOT AVAILABLE. * (X6) = FILE CATALOG RANDOM ADDRESS. * (X7) = PREVIOUS FILE RANDOM ADDRESS. * (B6) = FILE COUNT. * (B7) = VSN COUNT. * * USES A - 1, 2. * B - 2, 4. * X - 1, 2, 3. * * CALLS GFV. PURGMAC GFILEV GFILEV MACRO UA,VA,QN,FB,PB,VB,NV MACREF GFILEV R= A1,UA R= A2,VA R= X3,QN R= B6,FB R= B7,PB R= B2,VB SETREG B4,NV,0 RJ GFV GET FILE CATALOG VIA VSN ENDM GRENTRY SPACE 4,15 ** GRENTRY - GET RECORD ENTRY. * * GRENTRY FET,BUF * * ENTRY FET = ADDRESS OF FET TO USE. (USES X2.) * BUF = ADDRESS OF WORKING BUFFER. (USES X1.) * * EXIT (X6) = 0 IF NO MORE ENTRIES. * CURRENT ENTRY SET INTO BUFFER. * * USES X - 1, 2. * * CALLS GRE. PURGMAC GRENTRY GRENTRY MACRO FT,BF MACREF GRENTRY R= X2,FT R= X1,BF RJ //GRE GET RECORD ENTRY ENDM ISSMSG SPACE 4,15 ** ISSMSG - ISSUE MESSAGE TO OUTPUT. * * ISSMSG MADD,TYPE * * ENTRY MADD = ADDRESS OF MESSAGE. (USES B5.) * TYPE = *I* IF INFORMATIVE. * = *E* IF ERROR. * (USES B2.) * * EXIT MESSAGE ISSUED TO OUTPUT/K-DISPLAY. * * USES B - 2, 5. * * CALLS MTO. PURGMAC ISSMSG ISSMSG MACRO MA,TY MACREF ISSMSG R= B5,MA IFC EQ,$TY$I$ IF INFORMATIVE R= B2,0 ELSE IF ERROR R= B2,1 ENDIF RJ //MTO ISSUE MESSAGE TO OUTPUT ENDM LISTAB SPACE 4,25 ** LISTAB - LIST ENTRIES FROM TABLE. * * LISTAB TADD,LADD,TLEN,RADD,ELEN,BC * * ENTRY TADD = TABLE ADDRESS. (USES X6.) * LADD = LIST ADDRESS. (USES X7.) * TLEN = TABLE LENGTH. * .LT. 0 IF ZERO WORD TERMINATED. * DEFAULT IS -1. (USES B2.) * RADD = RELATIVE ADDRESS IN ENTRY. * DEFAULT IS 0. (USES B3.) * ELEN = ENTRY LENGTH. DEFAULT IS 1. (USES B4.) * BC = BIT COUNT. MAXIMUM IS 120. * DEFAULT IS 60. (USES B5.) * * EXIT (X1) = LWA+1 OF TABLE. * * USES B - 2, 3, 4, 5. * X - 6, 7. * * CALLS TSL. PURGMAC LISTAB LISTAB MACRO TA,LA,TL,RA,EL,BC MACREF LISTAB R= X6,TA R= X7,LA SETREG B2,TL,(-1) SETREG B3,RA,0 SETREG B4,EL,1 SETREG B5,BC,60 RJ TSL PROCESS TABLE ENTRY TO SINGLE ENTRY LIST ENDM LISTVSN SPACE 4,20 ** LISTVSN - LIST VSN ENTRY. * * LISTVSN VADD,VBUF,ILOCK * * ENTRY VADD = ADDRESS OF VSN. (USES A1, X1.) * VBUF = ADDRESS OF VSN BUFFER. (USES A2, X2.) * ILOCK = 0 IF NO INTERLOCK SET ON VSN. * = 1 IF SET INTERLOCK ON VSN. * DEFAULT IS 0. (USES B2.) * * EXIT (X4) = 0 IF VSN FOUND. * VSN ENTRY IMAGE SET IN BUFFER. * DEFAULT ENTRY IMAGE SET IN BUFFER IF VSN NOT FOUND. * * USES A - 1. * B - 2, 6. * X - 1. * * CALLS LVS. PURGMAC LISTVSN LISTVSN MACRO VA,VB,IL MACREF LISTVSN R= A1,VA R= B6,VB SETREG B2,IL,0 RJ //LVS LIST VSN ENTRY ENDM LJUST SPACE 4,20 ** LJUST - LEFT JUSTIFY AND MASK FIELD IN X-REGISTER. * * LJUST XA,XB,BC,UB * * ENTRY XA = X-REGISTER WITH FIELD. * XB = X-REGISTER TO RECEIVE MASKED FIELD. * BC = BIT COUNT OF FIELD. * MUST BE 1 .LE. *BC* .LE. 60. * UB = UPPER BIT POSITION OF FIELD. * MUST BE 0 .LE. *UB* .LE. 59. * * EXIT (XA) = FIELD LEFT JUSTIFIED. * (XB) = FIELD LEFT JUSTIFIED AND MASKED. * (X0) = MASK OF LEFT JUSTIFIED FIELD. * * USES B - 2 IF *BC* AND/OR *UB* INCLUDE REGISTERS. PURGMAC LJUST LJUST MACRO XA,XB,BC,UB LOCAL A MACREF LJUST IF REG,BC IF BIT COUNT IN REGISTER MX0 1 SB2 BC-1 AX0 B2 ELSE IF CONSTANT BIT COUNT MX0 BC ENDIF .1 IF REG,UB IF UPPER BIT IN REGISTER SB2 UB-59 L_XA -B2 .1 ELSE IF CONSTANT UPPER BIT .2 IFNE UB,59 IF NON-ZERO SHIFT COUNT A SET UB L_XA 59-A ENDIF B_XB X0*XA ENDM MOVEBIT SPACE 4,30 ** MOVEBIT - MOVE BIT STRING. * * MOVEBIT SADD,DADD,COUNT,SUPPER,DUPPER * * ENTRY SADD = SOURCE ADDRESS OF BIT STRING. IF *SADD=A1*, * X1 IS ASSUMED TO HOLD ((A1)). (USES A1, X1.) * DADD = DESTINATION ADDRESS OF BIT STRING. IF * *DADD=A2*, X2 IS ASSUMED TO HOLD ((A2)). * (USES A2, X2.) * COUNT = BIT COUNT. DEFAULT IS 60. (USES B4.) * SUPPER = UPPER BIT POSITION OF SOURCE STRING. * DEFAULT IS 59. (USES B3.) * DUPPER = UPPER BIT POSITION OF DESTINATION STRING. * DEFAULT IS 59. (USES B2.) * * EXIT STRING FROM *SADD* MOVED INTO *DADD*. * (A1) = ADDRESS OF REMAINDER OF SOURCE STRING. * (A2) = ADDRESS OF REMAINDER OF DESTINATION STRING. * (B2) = UPPER BIT POSITION OF REMAINDER OF DESTINATION * STRING. * (B3) = UPPER BIT POSITION OF REMAINDER OF SOURCE * STRING. * * USES A - 1, 2. * B - 2, 3, 4. * X - 1, 2. * * CALLS MBS. PURGMAC MOVEBIT MOVEBIT MACRO SA,DA,C,SU,DU MACREF MOVEBIT R= A1,SA R= A2,DA SETREG B4,C,60 SETREG B3,SU,59 SETREG B2,DU,59 RJ //MBS MOVE BIT STRING ENDM NEWPAGE SPACE 4,20 ** NEWPAGE - GENERATE NEW PAGE HEADER FOR OUTPUT. * * NEWPAGE BUF,WC,NP * * ENTRY BUF = BUFFER ADDRESS OF NEW PAGE HEADER. * DEFAULT IS (HD). * WC = WORD COUNT OF NEW HEADER. * DEFAULT IS (HL). * NP = IF SPECIFIED HEADER WILL NOT BE PRINTED * AT THIS TIME. * * EXIT NEW PAGE HEADER SET FOR OUTPUT FILE. * * USES A - 6. * X - 6. * * CALLS NPG. PURGMAC NEWPAGE NEWPAGE MACRO BF,WC,NP MACREF NEWPAGE IFC NE,$BF$$ IF NOT DEFAULT HEADER R= X6,BF R= A6,HD ENDIF IFC NE,$WC$$ IF NOT DEFAULT WORD COUNT R= X6,WC R= A6,HL ENDIF IFC EQ,$NP$$ IF PRINT NEXT PAGE RJ //NPG PRINT NEW PAGE HEADER ELSE IF NO PRINT SX6 MXLP+1 SA6 LC ENDIF ENDM RCREC SPACE 4,20 ** RCREC - READ CATALOG RECORD. * * RCREC FET,REC,BUF,IL * * ENTRY FET = ADDRESS OF FET TO USE. (USES X2.) * REC = RECORD RANDOM ADDRESS. (USES X1.) * BUF = WORKING BUFFER TO RECEIVE RECORD. (USES X3.) * IL .NE. 0 IF UTILITY INTERLOCK TO BE SET BEFORE READ. * DEFAULT IS 0. (USES B2.) * * EXIT RECORD READ INTO BUFFER. * * USES B - 2. * X - 1, 2, 3. * * CALLS RCR. PURGMAC RCREC RCREC MACRO FT,RC,BF,IL MACREF RCREC R= X2,FT R= X1,RC SETREG X3,BF,0 SETREG B2,IL,0 RJ //RCR READ CATALOG RECORD ENDM READFET SPACE 4,15 ** READFET - READ WORDS FROM FET INTO WORKING BUFFER. * * READFET FET,BUF,N * * ENTRY FET = FET ADDRESS. (USES X2.) * BUF = WORKING BUFFER ADDRESS. (USES B6.) * N = NUMBER OF WORDS TO TRANSFER. (USES B7.) * * EXIT (X1) = 0 IF TRANSFER COMPLETE. * = (B6) IF (B7).NE.0. * (X2) = FET ADDRESS. * (B6) = LWA+1 OF WORKING BUFFER. * (B7) = NUMBER OF WORDS NOT TRANSFERRED. * * CALLS RDF. PURGMAC READFET READFET MACRO FT,BF,NW MACREF READFET R= B6,BF R= B7,NW R= X2,FT RJ //RDF READ WORDS FROM FET INTO WORKING BUFFER ENDM RELVSN SPACE 4,15 ** RELVSN - RELEASE FILE VIA VSN. * * RELVSN UADD,VADD,QNADD * * ENTRY UADD = ADDRESS OF USER NAME. * VADD = ADDRESS OF VSN. * QNADD = SEQUENCE NUMBER. * QNADD = 1 IF NO SEQUENCE NUMBER SUPPLIED. * * EXIT (X4) = 0 IF RELEASE COMPLETE. * .NE. 0 IF VSN NOT ASSIGNED TO USER. * * USES A - 1, 2. * X - 1, 2, 3. * * CALLS RLV. PURGMAC RELVSN RELVSN MACRO UA,VA,QN MACREF RELVSN R= A1,UA R= A2,VA IFC EQ,$QN$$,2 R= X3,1 SKIP 1 R= X3,QN RJ //RLV RELEASE FILE VIA VSN ENDM REPVSN SPACE 4,15 ** REPVSN - REPLACE/ADD VSNS. * * REPVSN VBUF,VLEN * * ENTRY VBUF = VSN BUFFER ADDRESS. (USES B6.) * VLEN = VSN BUFFER LENGTH. (USES B7.) * * EXIT VSN ENTRIES REPLACED/ADDED. * * USES B - 6, 7. * * CALLS RVS. PURGMAC REPVSN REPVSN MACRO VB,VL MACREF REPVSN R= B6,VB R= B7,VL RJ //RVS REPLACE/ADD VSNS ENDM RESETP SPACE 4,15 ** RESETP - RESET *IN* AND *OUT* POINTERS OF FILE. * * RESETP FET * * ENTRY FET = ADDRESS OF FET. (USES X2.) * * EXIT *IN* AND *OUT* SET TO *FIRST*. * (X2) = ADDRESS OF FET. * * USES A - 1, 6. * X - 1, 6. * * MACROS RECALL. PURGMAC RESETP RESETP MACRO FT MACREF RESETP RECALL FT SA1 X2+B1 SX6 X1 SA6 A1+B1 SA6 A6+B1 ENDM RJM SPACE 4,15 ** RJM - RETURN JUMP TO ADDRESS IN REGISTERS. * * RJM ADDR * * ENTRY ADDR = ADDRESS TO RETURN JUMP TO. * * EXIT RETURN JUMP EXECUTED. * * USES A - 1, 6. * B - 2. * X - 1, 6. PURGMAC RJM RJM MACRO AD LOCAL A MACREF RJM IF -REG,AD IF NORMAL RETURN JUMP RJ AD ELSE IF RETURN JUMP TO REGISTER VALUE R= B2,AD R= A1,A BX6 X1 R= A6,B2 JP B2+1 A EQ *+1 ENDIF ENDM RJUST SPACE 4,20 ** RJUST - RIGHT JUSTIFY AND MASK FIELD IN X-REGISTER. * * RJUST XA,XB,BC,UB * * ENTRY XA = X-REGISTER WITH FIELD. * XB = X-REGISTER TO RECEIVE MASKED FIELD. * BC = BIT COUNT OF FIELD. * MUST BE 1 .LE. *BC* .LE. 60. * UB = UPPER BIT POSITION OF FIELD. * MUST BE 0 .LE. *UB* .LE. 59. * * EXIT (XA) = FIELD RIGHT JUSTIFIED. * (XB) = FIELD RIGHT JUSTIFIED AND MASKED. * (X0) = (-1)*MASK OF RIGHT JUSTIFIED FIELD. * * USES B - 2 IF *BC* AND/OR *UB* INCLUDE REGISTERS. PURGMAC RJUST RJUST MACRO XA,XB,BC,UB LOCAL A MACREF RJUST .1 IF REG,BC IF BIT COUNT IN REGISTER MX0 1 SB2 BC-1 AX0 B2 L_XA B2 .2 IF REG,UB IF UPPER BIT IN REGISTER SB2 UB-60 L_XA -B2 .2 ELSE IF CONSTANT UPPER BIT .3 IFNE UB,60 IF NON-ZERO SHIFT COUNT A SET UB L_XA -A+60 .1 ELSE IF CONSTANT BIT COUNT A SET BC MX0 -A .2 IF REG,UB IF UPPER BIT IN REGISTER SB2 UB-60-BC+1 L_XA -B2 .2 ELSE IF CONSTANT UPPER BIT .3 IFNE BC-1,UB IF NON-ZERO SHIFT COUNT A SET UB L_XA BC-1-A+60 ENDIF B_XB -X0*XA ENDM SAFET SPACE 4,25 ** SAFET - SET AUDIT FET. * * SAFET UADD,VADD,FADD,TYPE,RADD * * ENTRY UADD = ADDRESS OF USER NAME. (USES A1, X1.) * VADD = ADDRESS OF VSN. DEFAULT IS *=0*. * (USES A2, X2.) * FADD = ADDRESS OF FILE IDENTIFIER. * DEFAULT IS *=0*. (USES A3, A4, X3, X4.) * TYPE = AUDIT TYPE. DEFAULT IS *FCST*. (USES B2.) * RADD = ADDRESS OF AUDIT RANDOM ADDRESS. * DEFAULT IS *=0*. (USES A4, X4, X6.) * * EXIT (X4) = 0 IF NO ERROR IN AUDIT. * (N3 - N3+15B) = AUDIT FET. * * USES A - 1, 2, 3, 4. * B - 2. * X - 1, 2, 3, 4, 6. * * CALLS SAF. PURGMAC SAFET SAFET MACRO UA,VA,FA,TY,RA MACREF SAFET R= A1,UA SETREG A2,VA,(=0) SETREG A4,RA,(=0) BX6 X4 SETREG A3,FA,(=0) IFC EQ,$FA$$ IF DEFAULT FILE IDENTIFIER R= A4,=0 ELSE IF NOT DEFAULT FILE IDENTIFIER R= A4,FA+1 ENDIF SETREG B2,TY,FCST RJ //SAF SET AUDIT FET ENDM SETSORC SPACE 4,20 ** SETSORC - SET SOURCE VALUES IN TABLE. * * SETSORC TYPE,LEVEL * * ENTRY TYPE = *A* IF AUDIT TABLE. * = *K* IF K-DISPLAY TABLE. * = *M* IF MACHINE READABLE TABLE. * = *S* IF SOURCE LISTING TABLE. * (USES B2.) * LEVEL = DIRECTIVE LEVEL. (USES X1.) * * EXIT SOURCE VALUES SET IN TABLE. * * USES B - 2. * X - 1. * * CALLS SST. PURGMAC SETSORC SETSORC MACRO TY,LV MACREF SETSORC .1 IFC EQ,$TY$A$ IF AUDIT R= B2,1 .1 ELSE .2 IFC EQ,$TY$K$ IF K-DISPLAY R= B2,0 .2 ELSE .3 IFC EQ,$TY$M$ IF MACHINE READABLE R= B2,3 .3 ELSE IF SOURCE LISTING R= B2,2 ENDIF R= X1,LV RJ //SST SET SOURCE VALUES IN TABLE ENDM SRCHTAB SPACE 4,35 ** SRCHTAB - SEARCH TABLE FOR ENTRY. * * SRCHTAB TADD,VADD,TLEN,ELEN,RADD. * * ENTRY TADD = ADDRESS OF TABLE. IF *TADD=A1*, X1 IS ASSUMED * TO HOLD THE FIRST WORD OF THE TABLE. * USES A1, X1. * VADD = ADDRESS OF VALUE. IF *VADD=A2*, X2 IS ASSUMED * TO HOLD THE VALUE. USES A2, X2. * TLEN = LENGTH OF TABLE. IF .LT. 0, TABLE IS * TERMINATED BY A ZERO WORD. DEFAULT IS -1. * USES B2. * ELEN = LENGTH OF TABLE ENTRY. DEFAULT IS 1. USES B3. * RADD = RELATIVE ADDRESS OF VALUE IN ENTRY. * DEFAULT IS 0. USES B4. * (X0) = SEARCH MASK. BIT POSITIONS OF VALUE SHOULD BE * SET. * * EXIT (A1) = ADDRESS OF ENTRY IF VALUE IS FOUND. * (A2) = *VADD*. * (A3) = ADDRESS OF VALUE WORD IF VALUE IS FOUND. * (B2) = *TLEN*. * (B3) = *ELEN*. * (B4) = *RADD*. * (B7) = RELATIVE ADDRESS OF VALUE WORD IN TABLE IF * VALUE IS FOUND. * (X1) = FIRST WORD OF ENTRY IF VALUE IS FOUND. * (X2) = VALUE. * (X3) = VALUE WORD OF ENTRY IF VALUE IS FOUND. * (X4) = 0 IF VALUE IS FOUND. * * CALLS STB. PURGMAC SRCHTAB SRCHTAB MACRO TA,VA,TL,EL,RA MACREF SRCHTAB R= A1,TA R= A2,VA SETREG B2,TL,(-1) SETREG B3,EL,1 SETREG B4,RA,0 RJ //STB SEARCH TABLE ENDM USERAUD SPACE 4,25 ** USERAUD - PROCESS USER AUDIT LIST. * * USERAUD TYPE,CN,VSN * * ENTRY (UN) = USER NAME. * TYPE = *A* IF *AUDIT*. * = *M* IF *MACHINE READABLE.* * = *S* IF *SOURCE*. * = *SNV* IF *SOURCE WITH NO VSNS.* * (USES B2.) * CN = ADDRESS OF CHARGE NUMBER. * DEFAULT IS IGNORE CHARGE NUMBER. (USES A1, X1.) * VSN = ADDRESS OF VSN. * DEFAULT IS IGNORE VSN. (USES A2, X2.) * * EXIT ALL FILES MATCHING ENTRY CONDITIONS PROCESSED. * * USES A - 1, 2. * B - 2. * X - 1, 2. * * CALLS USA. PURGMAC USERAUD USERAUD MACRO TY,CN,VS MACREF USERAUD .1 IFC EQ,$TY$A$ IF AUDIT R= B2,1 .1 ELSE .2 IFC EQ,$TY$M$ IF MACHINE READABLE R= B2,3 .2 ELSE .3 IFC EQ,$TY$S$ IF SOURCE R= B2,2 .3 ELSE IF SOURCE NO VSNS R= B2,4 ENDIF SETREG A1,CN,(=0) SETREG A2,VS,(=0) RJ //USA PROCESS USER AUDIT LIST ENDM WCREC SPACE 4,20 ** WCREC - WRITE CATALOG RECORD. * * WCREC FET,REC,BUF,IL * * ENTRY ADDRESS OF FET TO USE. (USES X2.) * REC = RECORD RANDOM ADDRESS. (USES X1.) * BUF = WORKING BUFFER ADDRESS. (USES X3.) * IL .NE. 0 IF CLEAR UTILITY INTERLOCK AFTER WRITE. * DEFAULT IS 0. (USES B2.) * * EXIT CATALOG RECORD REWRITTEN. * * USES B - 2. * X - 1, 2, 3. * * CALLS WCR. PURGMAC WCREC WCREC MACRO FT,REC,BUF,IL MACREF WCREC R= X2,FT R= X1,REC R= X3,BUF SETREG B2,IL,0 RJ //WCR WRITE CATALOG RECORD ENDM WLINES SPACE 4,15 ** WLINES - WRITE LINES TO OUTPUT FILE. * * WLINES BUF,LC * * ENTRY BUF = BUFFER ADDRESS. (USES A1, X1.) * LC = LINE COUNT OF BUFFER. (USES B7.) * * EXIT LINES WRITTEN TO OUTPUT FILE. * * USES A - 1. * B - 2, 7. * X - 1. * * CALLS WTL. PURGMAC WLINES WLINES MACRO BF,LC R= A1,BF R= B2,1 R= B7,LC RJ //WTL WRITE LINES TO OUTPUT ENDM WRITFET SPACE 4,15 ** WRITFET - WRITE WORDS FROM WORKING BUFFER INTO FET. * * WRITFET FET,BUF,N * * ENTRY FET = FET ADDRESS. (USES X2.) * BUF = WORKING BUFFER ADDRESS. (USES B6.) * N = NUMBER OF WORDS TO TRANSFER. (USES B7.) * * EXIT (X1) = 0 IF TRANSFER COMPLETE. * = (B6) IF (B7).NE.0. * (X2) = FET ADDRESS. * (B6) = LWA+1 OF WORKING BUFFER. * (B7) = NUMBER OF WORDS NOT TRANSFERRED. * * CALLS WTF. PURGMAC WRITFET WRITFET MACRO FT,BF,NW MACREF WRITFET R= B6,BF R= B7,NW R= X2,FT RJ //WTF WRITE WORDS FROM WORKING BUFFER INTO FET ENDM WWORDS SPACE 4,15 ** WWORDS - WRITE WORDS TO OUTPUT FILE. * * WWORDS BUF,WC * * ENTRY BUF = BUFFER ADDRESS. (USES A1, X1.) * WC = WORD COUNT OF BUFFER. (USES B6.) * * EXIT WORDS WRITTEN TO OUTPUT FILE. * * USES A - 1. * B - 2, 6. * X - 1. * * CALLS WTL. PURGMAC WWORDS WWORDS MACRO BF,WC R= A1,BF R= B2,0 R= B6,WC RJ //WTL WRITE LINES TO OUTPUT FILE ENDM TITLE PROGRAM EQUIVALENCES. QUAL SPACE 4,10 ** QUALIFIERS USED BY *TFSP*. QUAL QUAL ADD QUAL ALS QUAL ALSC QUAL ALSU QUAL BTC QUAL CAT QUAL CATBIT QUAL DCTAB QUAL DOTAB QUAL DTAB QUAL INDEX QUAL KAUSLS QUAL KAUSRS QUAL KDIS QUAL KFAMLS QUAL KFAMRS QUAL KFILLS1 QUAL KFILLS2 QUAL KFILLS3 QUAL KFILRS QUAL KLEFT QUAL KMESS QUAL KRIGHT QUAL KUSELS QUAL KUSERS QUAL KVSNLS QUAL KVSNRS QUAL LVAU QUAL LVFA QUAL LVFI QUAL LVUS QUAL LVVS QUAL MLS QUAL MLSC QUAL MLSU QUAL PAUA QUAL PAUAC QUAL PAUAU QUAL PDIR QUAL PDIRC QUAL PDIRU QUAL PDIS QUAL PDISC QUAL PDISU QUAL PFIA QUAL PFIAC QUAL PFIAU QUAL PHEL QUAL PHELC QUAL PHELU QUAL PRESET QUAL PVSA QUAL PVSAC QUAL PVSAU QUAL SCS QUAL SCSC QUAL SCSU QUAL SMA QUAL SMAC QUAL SMAU QUAL SMB QUAL SMBC QUAL SMBU QUAL SMC QUAL SMCC QUAL SMCU QUAL SMD QUAL SMDD QUAL SMDU QUAL SMF QUAL SMFC QUAL SMFU QUAL UPB QUAL MICRO SPACE 4,10 ** SPECIAL CHARACTER BIT STRING MICROS. AC BITMIC (+,-,*,/,L,R,$,=, ,(,),.,#,[,]) AC BITMIC (%,",U,!,&,',?,<,>,@,\,^,;,:) ALL CHARACTERS AH BITMIC (*,-) ASTERISK AND HYPHEN AS BITMIC (*) ASTERISK BL BITMIC ( ) BLANK CHARACTER CO BITMIC ((,)) COMMA EC BITMIC (+,-,*,/,L,R,$,=, ,(,),.,#,[,]) EC BITMIC (%,",U,!,&,',?,<,>,@,\,^,;) ALL EXCEPT COLON NC BITMIC () NO CHARACTERS MICRO SPACE 4,10 ** GENERAL MICROS. MXAA DECMIC 777777B MAXIMUM ALTERNATE USER ACCESS COUNT MXAC DECMIC 77777777B MAXIMUM ACCESS COUNT MXFC DECMIC 12000B MAXIMUM MAXIMUM BLOCK COUNT SPACE 4,10 ** GENERAL EQUATES. CAPL EQU 72 CHARACTERS ASSEMBLED PER LINE OF INPUT CSPL EQU 80 CHARACTERS SCANNED PER LINE OF INPUT MXLP EQU 60 MAXIMUM NUMBER OF LINES PER OUTPUT PAGE USBBL EQU CSPL+10 STRING BUFFER LENGTH BUFL SPACE 4,10 ** BUFFER LENGTHS. CBUFL EQU 5 CHARACTER BUFFER LENGTH EBUFL EQU 4 ERROR MESSAGE BUFFER LENGTH FBUFL EQU 1001B FILE BUFFER LENGTH KBUFL EQU 8 K-DISPLAY INPUT BUFFER LENGTH RBUFL EQU 1B REWIND FILE BUFFER LENGTH SBUFL EQU 101B SCRATCH FILE BUFFER LENGTH TBUFL EQU 1001B TAPE CATALOG FILE BUFFER LENGTH N1BUFL EQU 401B VSN BUFFER LENGTH N2BUFL EQU 101B USER NAME BUFFER LENGTH N3BUFL EQU 501B TAPE FILE BUFFER LENGTH N4BUFL EQU 101B ALTERNATE USER NAME BUFFER LENGTH TAVSL EQU TSVL*60+1 ASSIGNED VSNS BUFFER LENGTH UBUFL EQU 101B ALTERNATE USER BUFFER LENGTH VBUFL EQU 101B VSN ENTRY BUFFER LENGTH WBUFL EQU TCEL+TSVL*60+1 WORKING BUFFER SPACE 4,10 ** LEVEL DEFINITIONS. LVFA EQU 0 FAMILY LEVEL LVVS EQU 1 VSN LEVEL LVUS EQU 2 USER LEVEL LVFI EQU 3 FILE LEVEL LVAU EQU 4 ALTERNATE USER LEVEL OP SPACE 4,10 ** *OP* PARAMETER OPTIONS. KOPT EQU 0 *K* K-DISPLAY OPTION IOPT EQU 1 *I* INPUT FILE OPTION ZOPT EQU 2 *Z* CONTROL CARD OPTION SPACE 4,10 ** PROCESSOR INDICES. PIZF EQU 0 ZERO FILL PIBF EQU 1 BLANK FILL PIOP EQU 2 OPTION SELECTION PIBD EQU 3 NUMERIC BINARY DATA PIPD EQU 4 PACKED DATE PIPT EQU 5 PACKED TIME PIJD EQU 6 JULIAN DATE PIVQ EQU 7 VSN/SEQUENCE NUMBER PIVS EQU 8 PADDED VSN PIBS EQU 9 SPECIAL CHARACTER BIT STRING ORG SPACE 4,10 ** PROGRAM ORIGIN. ORIG EQU 110B ORG ORIG TITLE DATA AREA. FETS SPACE 4,10 ** FILE ENVIRONMENT TABLES. I BSS 0 INPUT FILE INPUT FILEC IBUF,FBUFL,(FET=16) L BSS 0 OUTPUT FILE OUTPUT FILEC LBUF,FBUFL,(FET=16),EPR N1 BSS 0 VSN TAPE CATALOG FILE NEW1 FILEB N1BUF,N1BUFL,(FET=8),EPR REWORD N1+5,(42/,18/EBUF) ERROR MESSAGE ADDRESS N2 BSS 0 USER NAME TAPE CATALOG FILE NEW2 FILEB N2BUF,N2BUFL,(FET=8),EPR REWORD N2+5,(42/,18/EBUF) ERROR MESSAGE ADDRESS N3 BSS 0 TAPE FILE TAPE CATALOG FILE NEW3 FILEB N3BUF,N3BUFL,(FET=16),EPR REWORD N3+5,(42/,18/EBUF) ERROR MESSAGE ADDRESS N4 BSS 0 ALTERNATE USER NAME TAPE CATALOG FILE NEW4 FILEB N4BUF,N4BUFL,(FET=8),EPR REWORD N4+5,(42/,18/EBUF) ERROR MESSAGE ADDRESS R BSS 0 REWIND FILE R FILEB RBUF,RBUFL,(FET=8) RD BSS 0 *READ* FILE RD FILEC SBUF,SBUFL,(FET=8) S BSS 0 SOURCE FILE SOURCE FILEC SSBUF,FBUFL,(FET=16),EPR SS BSS 0 MACHINE READABLE OUTPUT FILE SS FILEC SSBUF,FBUFL,(FET=16),EPR T BSS 0 TERMINAL INTERRUPT FILE ZZZZINT FILEC TBUF,SBUFL,(FET=8),(DTY=2RTT) UB BSS 0 ALTERNATE USER ENTRY BUFFER UB FILEB UBUF,UBUFL,(FET=8) VB BSS 0 VSN ENTRY BUFFER FET VB FILEB VBUF,VBUFL,(FET=8) WORKING SPACE 4,10 ** WORKING STORAGE. AA CON 0 AUDIT RANDOM ADDRESS AB CON 0 ABORT OPTION AF CON 0 ADMIT FLAG AI CON 0 ALTERNATE INPUT FILE NAME AP CON 0 ALTERNATE PROCESSING FLAG AU CON 0 ALTERNATE USER BF CON 0 BRIEF/NOBRIEF FLAG CF CON 0 CURRENT FAMILY NAME CI CON 0 CLEAR INTERLOCK FLAG CL CON "NC" SPECIAL CHARACTER FOR COLON DD CON 0 DISPLAY DATE DE CON 0 DENSITY / TAPE TYPE DF CON 0 DIRECTIVE IMAGE CON 0 PROCESSOR/CONTROL TABLE ADDRESS CON 0 DIRECTIVE SEPARATOR DM CON 0 DIRECTIVE MESSAGE FLAG DP CON 0 DROP PROCESSOR COUNT DT CON 0 DISPLAY TIME ED CON 0 EQUIVALENCED DIRECTIVE FLAG EF CON 0 ERROR FLAG EL CON 0 END OF LINE FLAG EM CON 0 DAYFILE ERROR MESSAGE ADDRESS ER CON 0 ERROR ADDRESS ET CON 0 EOF FOR INPUT FLAG FA CON 0 FAST-ATTACH FLAG FOR *TFSPE* FM CON 0 ALTERNATE FAMILY NAME HD CON PDIR SECOND PART OF HEADER LENGTH HL CON PDIRL PAGE HEADER LENGTH IF CON I INPUT FILE FET ADDRESS IS CON 0 INPUT FILE STATUS JD CON 0 JULIAN DATE LC CON MXLP+1 LINE COUNT OF OUTPUT PAGE LF CON 0 LOCAL FILE OPTION LV CON LVFA CURRENT LEVEL ME CON 0 MAINTENANCE AND ERROR STATUS MI CON 2RAA MACHINE ID MX CON 0 CATALOG DEVICE MACHINE INDEX-1 NI BSS 2 NEW FILE IDENTIFIER NL CON 0 NEXT LEVEL NUMBER NV CON 0 NO VERIFY FLAG OP DATA C*I* INPUT OPTION OS CON 0 OUTPUT FILE STATUS OT CON 0 ORIGIN TYPE PD CON 0 PACKED DATE PG CON 0 CURRENT PAGE NUMBER QN CON 0 SEQUENCE NUMBER RC CON 0 REEL COUNT RF CON 0 RESERVE FLAG RS CON 0 URDATE SPECIFIED FLAG RT CON 0 RETRY FLAG SB CON 0 ADDRESS OF STRING BUFFER SE CON "CO" SEPARATOR CHARACTER SF CON 0 SAVE SPECIAL STORAGE FLAG SM CON 0 STRING BUFFER MAXIMUM ADDRESS SP CON 0 STRING BUFFER POINTER ST CON 0 VSN STATUS BITS SV CON 0 SYMBOLIC ACCESS FLAG SVF CON 0 SYSTEM VSN FLAG TE CON 0 *TFSPE* FLAG TG CON 0 TOGGLE PAGE TI CON 0 TERMINAL INTERRUPT FLAG VTT CON 0 VSN TAPE TYPE WKSP SPACE 4,10 ** SPECIAL WORKING STORAGE. WKSP BSS 0 FIRST WORD OF SPECIAL STORAGE AV CON 0 NEW ASSIGNED VSN BUFFER ADDRESS CA CON 0 CATALOG RANDOM ADDRESS CN CON 0 CHARGE NUMBER EV CON 0 EXTERNAL VSN FI BSS 2 FILE IDENTIFIER FV CON 0 FIRST VSN PA CON 0 PREVIOUS FILE CATALOG RANDOM ADDRESS UF CON 0 USER NAME FOUND FLAG UN CON 0 USER NAME VC CON 0 VSN COUNT VF CON 0 VSN IN CATALOG FLAG VI CON 0 SCRATCH VSN INTERLOCK FLAG VS CON 0 VOLUME SERIAL NUMBER WKSPL EQU *-WKSP SPECIAL WORKING STORAGE LENGTH SSJ= SPACE 4,10 ** SSJ= BLOCK. SSJ= VFD 12/0,24/-0,12/LSCS,12/IRSI BSSZ SSJL-1 FCAT SPACE 4,10 ** FCAT - FILE CATALOG IMAGE. CIGS BSS 0 FIRST WORD OF CATALOG IMAGES FCAT CATBASE FI CATBIT CELI,59,FIKL*6,10H,7H LOGICAL FILE IDENTIFIER CATBIT CEST,17,6 AC CATBIT CEST,11,1,0 ALTERNATE AUDIT MODE RECOVER CATBIT CEST,10,1,0 RECOVERED STATUS CATBIT CEST,9,7 SV CATBIT CEST,2,1,0 SYMBOLIC ACCESS FLAG CE CATBIT CEST,1,1,0 ERROR FLAG FBIL CATBIT CEST,0,1,0 FILE BUSY INTERLOCK EVSN CATBIT CEES,59,36 EXTERNAL VSN CATBIT CEES,23,12 REELC CATBIT CEES,11,12,0 REEL COUNT CATBIT CETD,59,1 LB CATBIT CETD,58,2,2 LABEL TTYP CATBIT CETD,56,2,2 TAPE DEVICE TYPE POS *P+2 D CATBIT CETD,56,6,44B TAPE DEVICE TYPE / DENSITY CV CATBIT CETD,50,3,2 CONVERSION MODE CATBIT CETD,47,12 F CATBIT CETD,35,6,0 FORMAT NS CATBIT CETD,29,6,0 NOISE SIZE FC CATBIT CETD,23,24,"MXFC" MAXIMUM BLOCK SIZE IVSN CATBIT CEVS,59,36 INTERNAL VSN FA CATBIT CEVS,23,6,0 ACCESSIBILITY CHARACTER CATBIT CEVS,17,3 SN CATBIT CEVS,14,15,0001 SECTION NUMBER PI CATBIT CEPI,59,FIKL*6,10H,7H PHYSICAL FILE IDENTIFIER CATBIT CESQ,17,3 QN CATBIT CESQ,14,15,0001 SEQUENCE NUMBER SI CATBIT CESI,59,VSKL*6 SET IDENTIFIER E CATBIT CESI,23,9,00 GENERATION VERSION NUMBER G CATBIT CESI,14,15,0001 GENERATION NUMBER CR CATBIT CERC,59,30 CREATION DATE (YYDDD) RT CATBIT CERC,29,30 RETENTION DATE (YYDDD) PW CATBIT CEPW,59,PWKL*6,0 PASSWORD CATBIT CEPW,17,6 CT CATBIT CEPW,11,6,FCPR FILE CATEGORY M CATBIT CEPW,5,6,FMRE FILE MODE NCAT CATBIT CECD,59,24 NEXT CATALOG RANDOM ADDRESS CDATE CATBIT CECD,35,18 CREATION DATE (PACKED) CTIME CATBIT CECD,17,18 CREATION TIME (PACKED) AUCAT CATBIT CEMD,59,24 ADMIT CATALOG RANDOM ADDRESS MDATE CATBIT CEMD,35,18 MODIFICATION DATE (PACKED) MTIME CATBIT CEMD,17,18 MODIFICATION TIME (PACKED) ACOUNT CATBIT CEAD,59,24,0 ACCESS COUNT ADATE CATBIT CEAD,35,18 ACCESS DATE (PACKED) ATIME CATBIT CEAD,17,18 ACCESS TIME (PACKED) UC CATBIT CEUC,59,UCKL*6,0 USER CONTROL WORD CN CATBIT CECN,59,60 CHARGE NUMBER PN CATBIT CEPN,59,PNKL*6 PROJECT NUMBER CATBIT CEPN+2,59,60 CATBIT CEPN+3,59,60 CATBIT CEPN+4,59,60 CATEND TCEL END OF TAPE FILE CATALOG ACAT SPACE 4,10 ** ACAT - ALTERNATE USER CATALOG IMAGE. ACAT CATBASE AUSER CATBIT AEUN,59,UNKL*6 ALTERNATE USER NAME CATBIT AEUN,17,18 AACOUNT CATBIT AEAC,59,18,0000 ACCESS COUNT AMODE CATBIT AEAC,41,6,0 ADMIT MODE AADATE CATBIT AEAC,35,18 ACCESS DATE AATIME CATBIT AEAC,17,18 ACCESS TIME CATEND TAEL END OF ALTERNATE USER CATALOG VCAT SPACE 4,10 ** VCAT - VSN CATALOG IMAGE. VCAT CATBASE VSN CATBIT VEES,59,VSKL*6 VSN VASC CATBIT VEES,23,6,0 ASSIGNED VSN CATALOG NUMBER VASF CATBIT VEES,17,18,0 ASSIGNED FILE POINTER PRN CATBIT VEVS,59,VSKL*6 INTERNAL VSN (PRN) REELNO CATBIT VEVS,23,6,0 REEL NUMBER CATBIT VEVS,17,1 MAINT CATBIT VEVS,16,1,0 MAINTENANCE FLAG CATBIT VEVS,15,1,1 AVAILABLE SCRATCH STATUS CATBIT VEVS,14,2 OWNER CATBIT VEVS,12,1,0 OWNERSHIP TYPE CATBIT VEVS,11,4 SYSTEM CATBIT VEVS,7,1,0 SYSTEM VSN FLAG VT CATBIT VEVS,6,2,0 VSN ENTRY TAPE TYPE (0=MT/NT,1=CT,3=AT) NEWRDT CATBIT VEVS,4,1,0 NEW RELEASE DATE FORMAT SITE CATBIT VEVS,3,1,0 SITE STATUS CATBIT VEVS,2,1 ERRFLAG CATBIT VEVS,1,1,0 ERROR FLAG VSBF CATBIT VEVS,0,1,0 VSN BUSY FLAG FVSN CATBIT VEFV,59,36 FIRST VSN CATBIT VEFV,23,24 NVSN CATBIT VENV,59,36 NEXT VSN USAGE CATBIT VENV,23,6,0 USAGE COUNT URDATE CATBIT VENV,17,18 RELEASE DATE CATEND TSVL END OF VSN ENTRY CATALOG DFIC SPACE 4,10 ** DFIC - DEFAULT FILE CATALOG. DFIC CATBASE CATBIT CELI,59,FIKL*6,10H,7H LOGICAL FILE IDENTIFIER CATBIT CEST,17,6 CATBIT CEST,11,1,0 ALTERNATE AUDIT MODE CATBIT CEST,10,1,0 RECOVERED STATUS CATBIT CEST,9,7 CATBIT CEST,2,1,0 SYMBOLIC ACCESS FLAG CATBIT CEST,1,1,0 ERROR FLAG CATBIT CEST,0,1,0 FILE BUSY INTERLOCK CATBIT CEES,59,36 EXTERNAL VSN CATBIT CEES,23,12 CATBIT CEES,11,12,0 REEL COUNT CATBIT CETD,59,1 CATBIT CETD,58,2,2 LABEL CATBIT CETD,56,6,44B TAPE DEVICE TYPE / DENSITY CATBIT CETD,50,3,2 CONVERSION MODE CATBIT CETD,47,12 CATBIT CETD,35,6,0 FORMAT CATBIT CETD,29,6,0 NOISE SIZE CATBIT CETD,23,24,"MXFC" MAXIMUM BLOCK SIZE CATBIT CEVS,59,36 INTERNAL VSN CATBIT CEVS,23,6,0 ACCESSIBILITY CHARACTER CATBIT CEVS,17,3 CATBIT CEVS,14,15,0001 SECTION NUMBER CATBIT CEPI,59,FIKL*6 PHYSICAL FILE IDENTIFIER CATBIT CESQ,17,3 CATBIT CESQ,14,15,0001 SEQUENCE NUMBER CATBIT CESI,59,VSKL*6 SET IDENTIFIER CATBIT CESI,23,9,00 GENERATION VERSION NUMBER CATBIT CESI,14,15,0001 GENERATION NUMBER CATBIT CERC,59,30 CREATION DATE (YYDDD) CATBIT CERC,29,30 RETENTION DATE (YYDDD) CATBIT CEPW,59,PWKL*6,0 PASSWORD CATBIT CEPW,17,6 CATBIT CEPW,11,6,FCPR FILE CATEGORY CATBIT CEPW,5,6,FMRE FILE MODE CATBIT CECD,59,24 NEXT CATALOG RANDOM ADDRESS CATBIT CECD,35,18 CREATION DATE (PACKED) CATBIT CECD,17,18 CREATION TIME (PACKED) CATBIT CEMD,59,24 ADMIT CATALOG RANDOM ADDRESS CATBIT CEMD,35,18 MODIFICATION DATE (PACKED) CATBIT CEMD,17,18 MODIFICATION TIME (PACKED) CATBIT CEAD,59,24,0 ACCESS COUNT CATBIT CEAD,35,18 ACCESS DATE (PACKED) CATBIT CEAD,17,18 ACCESS TIME (PACKED) CATBIT CEUC,59,UCKL*6,0 USER CONTROL WORD CATBIT CECN,59,60 CHARGE NUMBER CATBIT CEPN,59,PNKL*6 PROJECT NUMBER CATBIT CEPN+2,59,60 CATBIT CEPN+3,59,60 CATBIT CEPN+4,59,60 CATEND TCEL END OF DEFAULT FILE CATALOG DAUC SPACE 4,10 ** DAUC - DEFAULT ALTERNATE USER CATALOG. DAUC CATBASE CATBIT AEUN,59,UNKL*6 ALTERNATE USER NAME CATBIT AEUN,17,18 CATBIT AEAC,59,18,0000 ACCESS COUNT CATBIT AEAC,41,1,0 ADMIT TYPE CATBIT AEAC,40,5,0 ADMIT MODE CATBIT AEAC,35,18 ACCESS DATE CATBIT AEAC,17,18 ACCESS TIME CATEND TAEL END OF DEFAULT ALTERNATE USER CATALOG DVSC SPACE 4,10 ** DVSC - DEFAULT VSN CATALOG. DVSC CATBASE CATBIT VEES,59,VSKL*6 VSN CATBIT VEES,23,6,0 ASSIGNED FILE CATALOG NUMBER CATBIT VEES,17,18,0 ASSIGNED FILE POINTER CATBIT VEVS,59,VSKL*6 INTERNAL VSN (PRN) CATBIT VEVS,23,6,0 REEL NUMBER CATBIT VEVS,17,1 CATBIT VEVS,16,1,0 MAINTENANCE FLAG CATBIT VEVS,15,1,1 AVAILABLE SCRATCH STATUS CATBIT VEVS,14,2 CATBIT VEVS,12,1,0 OWNERSHIP TYPE CATBIT VEVS,11,4 CATBIT VEVS,7,1,0 SYSTEM VSN FLAG CATBIT VEVS,6,2,0 VSN ENTRY TAPE DEVICE TYPE CATBIT VEVS,4,1,0 NEW RELEASE DATE FORMAT CATBIT VEVS,3,1,0 SITE STATUS CATBIT VEVS,2,1 CATBIT VEVS,1,1,0 ERROR FLAG CATBIT VEVS,0,1,0 VSN BUSY FLAG CATBIT VEFV,59,36 FIRST VSN CATBIT VEFV,23,24 CATBIT VENV,59,36 NEXT VSN CATBIT VENV,23,6,0 USAGE COUNT CATBIT VENV,17,18 RELEASE DATE CATEND TSVL END OF VSN ENTRY CATALOG CIGSL EQU *-CIGS LENGTH OF CATALOG IMAGES THBP SPACE 4,15 ** TABLE FOR HOLD BUFFER PROCESSING. * * THIS TABLE CONTAINS 2 WORD ENTRIES FOR EACH MEMORY PARTITION * THAT NEEDS TO BE SAVED WHEN PROCESSING HIGHER LEVEL * DIRECTIVES FROM A LOWER LEVEL. THE TABLE IS TERMINATED WITH * A ZERO WORD. * *T, 60/ADDRESS *T, 60/WORD COUNT THBP CON WKSP,WKSPL SPECIAL WORKING STORAGE CON CIGS,CIGSL CATALOG IMAGES CON TAVS,TAVSL TABLE OF ASSIGNED VSNS CON 0 * HBUFL SHOULD BE THE SUM OF LENGTHS OF THE MEMORY PARTITIONS * SAVED IN HBUF. HBUFL EQU WKSPL+CIGSL+TAVSL DTAB SPACE 4,15 ** DIRECTIVE TABLES. * * ENTRY ONE WORD PER DIRECTIVE. * 42/IDENT,18/ADDR * * IDENT = DIRECTIVE IDENTIFIER, LEFT JUSTIFIED. * ADDR = ADDRESS OF DIRECTIVE CONTROL TABLE IF * EQUIVALENCED DIRECTIVE. * = (-1) * PROCESSOR ADDRESS IF NOT EQUIVALENCED * DIRECTIVE. * * EACH DIRECTIVE TABLE IS TERMINATED BY A ZERO WORD. TFAD SPACE 4,10 ** TFAD - TABLE OF FAMILY LEVEL DIRECTIVES. TFAD BSS 0 DTAB ALTFAM DTAB AUDITCH DTAB AUDITUN DTAB AUDITVS DTAB BRIEF,-/LVFA/BRF DTAB CALTFAM DTAB CATERR DTAB COLON DTAB DISPLAY,-DIS DTAB DROP,-/LVFA/DRO DTAB STOP,-STO DTAB FAMNAME DTAB FOREIGN DTAB GLOBAL DTAB GO,-/LVFA/PGO DTAB HELP,-HEL DTAB INVALID DTAB ISV,-/LVFA/ISV DTAB LINKFAM DTAB MID DTAB MREADCH DTAB MREADUN DTAB MREADVS DTAB NOBRIEF,-/LVFA/NBF DTAB PURGALL DTAB PURGE DTAB READ DTAB RELEASE DTAB REMOVE DTAB REWIND DTAB SEPARAT DTAB SOURCCH DTAB SOURCE,-/LVFA/SOU DTAB SOURCUN DTAB SOURCVS DTAB USER DTAB VALIDAT DTAB VSN CON 0 END OF TABLE TVSD SPACE 4,10 ** TVSD - TABLE OF VSN LEVEL DIRECTIVES. TVSD BSS 0 DTAB ADD,-/LVVS/ADD DTAB BRIEF,-/LVFA/BRF DTAB COLON DTAB DISPLAY,-DIS DTAB DROP,-/LVVS/DRO DTAB STOP,-STO DTAB ERRFLAG DTAB GO,-/LVVS/PGO DTAB HELP,-HEL DTAB MAINT DTAB NOBRIEF,-/LVFA/NBF DTAB OWNER PRN DTAB PRN DTAB READ DTAB REVISE,-/LVVS/REV DTAB REWIND DTAB SEPARAT DTAB SITE DTAB STATUS DTAB SYSTEM DTAB USAGE DTAB VT CON 0 END OF TABLE TUSD SPACE 4,10 ** TUSD - TABLE OF USER LEVEL DIRECTIVES. TUSD BSS 0 DTAB AUDITCN DTAB AUDITFI DTAB AUDITFV DTAB BRIEF,-/LVFA/BRF DTAB COLON DTAB DISPLAY,-DIS DTAB DROP,-/LVUS/DRO DTAB STOP,-STO FILE DTAB FILE DTAB FILEV DTAB GO,-/LVUS/DRO DTAB HELP,-HEL DTAB MREADCN DTAB MREADFI DTAB MREADFV DTAB NOBRIEF,-/LVFA/NBF DTAB READ DTAB RELEASF DTAB RELEASV DTAB REWIND DTAB SEPARAT DTAB SOURCCN DTAB SOURCFI DTAB SOURCFV CON 0 END OF TABLE TFLD SPACE 4,10 ** TFLD - TABLE OF FILE LEVEL DIRECTIVES. TFLD BSS 0 DTAB AC DTAB ACOUNT DTAB ADATE DTAB AMEND,-/LVFI/ALT DTAB ATIME DTAB AUDITAU DTAB AUSER DTAB AVSN DTAB BRIEF,-/LVFA/BRF DTAB CDATE DTAB CE DTAB CN DTAB COLON DTAB CR DTAB CT DTAB CTIME DTAB CV DTAB D DTAB DISPLAY,-DIS DTAB DROP,-/LVFI/DRO DTAB E DTAB STOP,-STO DTAB F DTAB FA DTAB FC FI DTAB FI DTAB G DTAB GO,-/LVFI/PGO DTAB HELP,-HEL DTAB LB DTAB M DTAB MDATE DTAB MTIME DTAB NOBRIEF,-/LVFA/NBF DTAB NS PI DTAB PI DTAB PN PW DTAB PW DTAB RDATE DTAB READ DTAB RECOVER DTAB RESERVE,-/LVFI/RES DTAB REWIND DTAB RT DTAB SEPARAT SI DTAB SI DTAB SN DTAB SV DTAB TOWNER DTAB TSITE UC DTAB UC DTAB URDATE CON 0 END OF TABLE TAUD SPACE 4,10 ** TAUD - TABLE OF ALTERNATE USER LEVEL DIRECTIVES. TAUD BSS 0 DTAB AACOUNT DTAB AADATE DTAB AATIME DTAB ADMIT,-/LVAU/ADM DTAB AMODE DTAB BRIEF,-/LVFA/BRF DTAB COLON DTAB DISPLAY,-DIS DTAB DROP,-/LVAU/DRO DTAB STOP,-STO DTAB GO,-/LVAU/ADM DTAB HELP,-HEL DTAB NOBRIEF,-/LVFA/NBF DTAB READ DTAB REWIND DTAB SEPARAT CON 0 END OF TABLE TDTA SPACE 4,10 ** TDTA - TABLE OF DIRECTIVE TABLE ADDRESSES. TDTA INDTAB 1 INDEX LVFA,CON,TFAD FAMILY LEVEL INDEX LVVS,CON,TVSD VSN LEVEL INDEX LVUS,CON,TUSD USER LEVEL INDEX LVFI,CON,TFLD FILE LEVEL INDEX LVAU,CON,TAUD ALTERNATE USER LEVEL DCTAB SPACE 4,50 ** DIRECTIVE CONTROL TABLES. * * ENTRY AT LEAST THREE WORDS PER DIRECTIVE. * 12/INDEX,6/MINC,6/MAXC,18/ALLOW,18/SUPP * 12/UBIT,12/BITC,18/PROC,18/ENTRY * 1/OB,1/PVL,1/DVL,3/ ,18/MINV,18/MAXV,18/DEFAULT * * INDEX = *DIP* PROCESSOR INDEX. * PIZF - ZERO FILL. * PIOP - OPTION SELECTION. * PIBD - NUMERIC BINARY DATA. * PIPD - PACKED DATE. * PIPT - PACKED TIME. * PIJD - JULIAN DATE. * PIVQ - VSN/SEQUENCE NUMBER. * PIVS - PADDED VSN. * MINC = MINIMUM NUMBER OF CHARACTERS. * MAXC = MAXIMUM NUMBER OF CHARACTERS. * ALLOW = ADDRESS OF ALLOWED CHARACTERS BIT STRING. * SUPP = ADDRESS OF SUPPRESSED CHARACTERS BIT STRING. * UBIT = UPPER BIT POSITION OF CATALOG ENTRY. * BITC = BIT COUNT OF CATALOG ENTRY. * = 0 IF NO CATALOG ENTRY. * PROC = POST PROCESSOR ADDRESS. * = 0 IF NO POST PROCESSOR. * ENTRY = ADDRESS OF CATALOG ENTRY. * PVL = FLAG FOR IMPLIED DROP REQUIREMENT. * = 0 IF DIRECTIVE REQUIRES NO IMPLIED DROP. * = 1 IF DIRECTIVE REQUIRES AN IMPLIED DROP. * DVL = FLAG FOR LOWER LEVEL VALIDITY. * = 0 IF VALID FROM LOWER LEVEL. * = 1 IF NOT VALID FROM DIFFERENT LEVEL. * MINV = ADDRESS OF MINIMUM VALUE FOR *PIBD* TYPE. * MAXV = ADDRESS OF MAXIMUM VALUE FOR *PIBD* TYPE. * = ADDRESS OF OPTION TABLE FOR *PIOP* TYPE. * DEFAULT = ADDRESS OF DEFAULT VALUE. * OB = OUTPUT BLOCK FLAG. IF SET, AN EXTRA TWO WORD * BLOCK FOLLOWS. * 6/KCH,6/KUB,18/KADD,6/ACH,6/AUB,18/AADD * 6/SCH,6/SUB,18/SADD,6/MCH,6/MUB,18/MADD * * KCH = NUMBER OF CHARACTERS IN K-DISPLAY. * KUB = UPPER BIT POSITION IN K-DISPLAY. * KADD = ADDRESS IN K-DISPLAY. * ACH = NUMBER OF CHARACTERS IN AUDIT LISTING. * AUB = UPPER BIT POSITION IN AUDIT LISTING. * AADD = ADDRESS IN AUDIT LISTING. * SCH = NUMBER OF CHARACTERS IN SOURCE LISTING. * SUB = UPPER BIT POSITION IN SOURCE LISTING. * SADD = ADDRESS IN SOURCE LISTING. * MCH = NUMBER OF CHARACTERS IN MACHINE READABLE LIST. * MUB = UPPER BIT POSITION IN MACHINE READABLE LISTING. * MADD = ADDRESS IN MACHINE READABLE LISTING. * UNIVERSAL DIRECTIVE CONTROL TABLES. COLON DCTAB PIBS,0,1,="EC",,59,UCKL*6,,CL,,,=0 COLON DCTABL 0,0 COLON DCTABO ,,,0,0,0,0,0,0,0,0,0 READ DCTAB PIZF,1,7,,,59,42,REA,AI READ DCTABL 0,0 READ DCTABO ,,,0,0,0,0,0,0,0,0,0 REWIND DCTAB PIZF,1,7,,,59,42,REW,R REWIND DCTABL 0,0 SEPARAT DCTAB PIBS,0,1,="EC",,59,UCKL*6,,SE,,,(=C*,*) SEPARAT DCTABL 0,0 SEPARAT DCTABO ,,,0,0,0,0,0,0,0,0,0 * FAMILY LEVEL DIRECTIVE CONTROL TABLES. ALTFAM DCTAB PIZF,0,7,,,59,FNKL*6,/LVFA/AFM,/LVFA/AFMA,,,=0 ALTFAM DCTABL 0,0 AUDITCH DCTAB PIZF,1,10,="AS",,59,CNKL*6,/LVFA/ACH,CN AUDITCH DCTABL 0,0 AUDITUN DCTAB PIZF,0,7,="AS",,59,UNKL*6,/LVFA/AUN,UN,,,=0 AUDITUN DCTABL 0,0 AUDITVS DCTAB PIVS,0,6,,,59,VSKL*6,/LVFA/AVS,VS,,,=0 AUDITVS DCTABL 0,0 CALTFAM DCTAB PIZF,0,7,,,59,FNKL*6,/LVFA/CAF,/LVFA/CAFA,,,=0 CALTFAM DCTABL 0,0 CATERR DCTAB PIOP,0,10,,,0,1,/LVFA/CAT,/LVFA/CATA CATERR DCTABL 0,0 FAMNAME DCTAB PIZF,0,7,,,59,7*6,/LVFA/FAM,/LVFA/FAMA,,,FM FAMNAME DCTABL 0,0 FOREIGN DCTAB PIOP,0,10,,,0,1,/LVFA/FOR,/LVFA/FORA FOREIGN DCTABL 0,0 GLOBAL DCTAB PIOP,0,10,,,0,1,/LVFA/GLO,/LVFA/GLOA GLOBAL DCTABL 0,0 INVALID DCTAB PIZF,1,7,="AS",,59,UNKL*6,/LVFA/INV,UN INVALID DCTABL 0,0 LINKFAM DCTAB PIZF,0,7,,,59,FNKL*6,/LVFA/LKF,/LVFA/LKFA,,,=0 LINKFAM DCTABL 0,0 MID DCTAB PIZF,0,2,,,11,2*6,/LVFA/MID,/LVFA/MIDA,,,MI MID DCTABL 0,0 MREADCH DCTAB PIZF,1,10,="AS",,59,CNKL*6,/LVFA/MCH,CN MREADCH DCTABL 0,0 MREADUN DCTAB PIZF,0,7,="AS",,59,UNKL*6,/LVFA/MUN,UN,,,=0 MREADUN DCTABL 0,0 MREADVS DCTAB PIVS,0,6,,,59,VSKL*6,/LVFA/MVS,VS,,,=0 MREADVS DCTABL 0,0 PURGALL DCTAB PIZF,1,7,="AS",,59,UNKL*6,/LVFA/PGA,UN PURGALL DCTABL 1,1 PURGE DCTAB PIVS,1,6,,,59,VSKL*6,/LVFA/PTF,VS PURGE DCTABL 1,1 RELEASE DCTAB PIVS,1,6,,,59,VSKL*6,/LVFA/REL,VS RELEASE DCTABL 1,1 REMOVE DCTAB PIVS,1,6,,,59,VSKL*6,/LVFA/REM,VS REMOVE DCTABL 1,1 SOURCCH DCTAB PIZF,1,10,="AS",,59,CNKL*6,/LVFA/SCH,CN SOURCCH DCTABL 0,0 SOURCUN DCTAB PIZF,0,7,="AS",,59,UNKL*6,/LVFA/SUN,UN,,,=0 SOURCUN DCTABL 0,0 SOURCVS DCTAB PIVS,0,6,,,59,VSKL*6,/LVFA/SVS,VS,,,=0 SOURCVS DCTABL 0,0 USER DCTAB PIZF,1,7,="AS",,59,UNKL*6,/LVFA/USE,UN USER DCTABL 1,0 VALIDAT DCTAB PIZF,1,7,="AS",,59,UNKL*6,/LVFA/VAL,UN VALIDAT DCTABL 0,0 VSN DCTAB PIVS,1,6,,,59,VSKL*6,/LVFA/VSN,VS VSN DCTABL 1,0 * VSN LEVEL DIRECTIVE CONTROL TABLES. ERRFLAG DCTAB PIOP,0,10 ERRFLAG DCTABL 0,1 ERRFLAG DCTABO 0,0,0,0,0,0 MAINT DCTAB PIOP,0,10 MAINT DCTABL 0,1 MAINT DCTABO 0,0,0,0,0,0 OWNER DCTAB PIOP,0,10,,,,,/LVVS/OWN OWNER DCTABL 0,1 OWNER DCTABO PRN DCTAB PIBF,0,6,="AC",="NC",,,,,,,VS PRN DCTABL 0,1 PRN DCTABO ,,,,,,0,0,0 SITE DCTAB PIOP,0,10 SITE DCTABL 0,1 SITE DCTABO STATUS DCTAB PIOP,0,10,,,1,2,/LVVS/STA,ME STATUS DCTABL 0,1 STATUS DCTABO 0,0,0,0,0,0,0,0,0,0,0,0 SYSTEM DCTAB PIOP,2,3,,,,,/LVVS/SYS SYSTEM DCTABL 0,1 SYSTEM DCTABO USAGE DCTAB PIBD,0,10,,,,,,,=0,=77B,=C*0* USAGE DCTABL 0,1 USAGE DCTABO -2 VT DCTAB PIOP,2,4,,,,,/LVVS/VTY VT DCTABL 0,1 VT DCTABO * USER LEVEL DIRECTIVE CONTROL TABLES. AUDITCN DCTAB PIZF,1,10,="AS",,59,CNKL*6,/LVUS/ACN,CN AUDITCN DCTABL 0,0 AUDITFI DCTAB PIBF,1,17,="AC",="NC",59,FIKL*6,/LVUS/AFI,FI AUDITFI DCTABL 0,0 AUDITFV DCTAB PIVS,1,6,,,59,VSKL*6,/LVUS/AFV,VS AUDITFV DCTABL 0,0 FILE DCTAB PIBF,1,17,="AC",="NC",59,FIKL*6,/LVUS/FIL,FI FILE DCTABL 1,0 FILEV DCTAB PIVQ,1,6,,,59,60,/LVUS/FIV,FV FILEV DCTABL 1,0 MREADCN DCTAB PIZF,1,10,="AS",,59,CNKL*6,/LVUS/MCN,CN MREADCN DCTABL 0,0 MREADFI DCTAB PIBF,1,17,="AC",="NC",59,FIKL*6,/LVUS/MFI,FI MREADFI DCTABL 0,0 MREADFV DCTAB PIVS,1,6,,,59,VSKL*6,/LVUS/MFV,VS MREADFV DCTABL 0,0 RELEASF DCTAB PIBF,1,17,,,59,FIKL*6,/LVUS/RLF,FI RELEASF DCTABL 1,1 RELEASV DCTAB PIVQ,1,6,,,59,60,/LVUS/RLV,VS RELEASV DCTABL 1,1 SOURCCN DCTAB PIZF,1,10,="AS",,59,CNKL*6,/LVUS/SCN,CN SOURCCN DCTABL 0,0 SOURCFI DCTAB PIBF,1,17,="AC",="NC",59,FIKL*6,/LVUS/SFI,FI SOURCFI DCTABL 0,0 SOURCFV DCTAB PIVS,1,6,,,59,VSKL*6,/LVUS/SFV,VS SOURCFV DCTABL 0,0 * FILE LEVEL DIRECTIVE CONTROL TABLES. AC DCTAB PIOP,0,10 AC DCTABL 1,0 AC DCTABO ,,,,,,,,,0,0,0 ACOUNT DCTAB PIBD,0,10,,,,,,,=0,="MXAC",=C*0000* ACOUNT DCTABL 1,0 ACOUNT DCTABO -8 ADATE DCTAB PIPD,0,6,,,,,,,,,DD ADATE DCTABL 1,0 ADATE DCTABO ATIME DCTAB PIPT,0,6,,,,,,,,,DT ATIME DCTABL 1,0 ATIME DCTABO AUDITAU DCTAB PIZF,0,7,="AS",,59,UNKL*6,/LVFI/AAU,AU,,,=0 AUDITAU DCTABL 0,0 AUSER DCTAB PIZF,1,7,="AS",,59,UNKL*6,/LVFI/AUS,AU AUSER DCTABL 1,0 AVSN DCTAB PIVS,1,6,,,59,VSKL*6,/LVFI/AVS,VS AVSN DCTABL 1,0 CDATE DCTAB PIPD,0,6,,,,,,,,,DD CDATE DCTABL 1,0 CDATE DCTABO CE DCTAB PIOP,0,10 CE DCTABL 1,0 CE DCTABO CN DCTAB PIZF,0,10,="AS",,,,,,,=0 CN DCTABL 1,0 CN DCTABO CR DCTAB PIJD,0,5,,,,,,,,,JD CR DCTABL 1,0 CR DCTABO ,,,,,,,,,0,0,0 CT DCTAB PIOP,0,10 CT DCTABL 1,0 CT DCTABO CTIME DCTAB PIPT,0,6,,,,,,,,,DT CTIME DCTABL 1,0 CTIME DCTABO CV DCTAB PIOP,0,10 CV DCTABL 1,0 CV DCTABO D DCTAB PIOP,2,2,,,,,/LVFI/DEN D DCTABL 1,0 D DCTABO E DCTAB PIBD,0,10,,,,,,,=0,=99,=C*00* E DCTABL 1,0 E DCTABO -2,,,,,,,,,0,0,0 F DCTAB PIOP,0,10 F DCTABL 1,0 F DCTABO FA DCTAB PIZF,0,1,,,,,,,,,=0 FA DCTABL 1,0 FA DCTABO ,,,,,,,,,0,0,0 FC DCTAB PIBD,0,10,,,,,,,=0,="MXFC",=C*"MXFC"* FC DCTABL 1,0 FC DCTABO -4,,,,,,,,,0,0,0 FI DCTAB PIBF,0,17,="AC",="NC",,,/LVFI/PFI,,,,FI FI DCTABL 1,0 FI DCTABO 20,,,,,,0,0,0 G DCTAB PIBD,0,10,,,,,,,=1,=9999,=C*0001* G DCTABL 1,0 G DCTABO -4,,,,,,,,,0,0,0 LB DCTAB PIOP,0,10 LB DCTABL 1,0 LB DCTABO M DCTAB PIOP,0,10 M DCTABL 1,0 M DCTABO MDATE DCTAB PIPD,0,6,,,,,,,,,DD MDATE DCTABL 1,0 MDATE DCTABO MTIME DCTAB PIPT,0,6,,,,,,,,,DT MTIME DCTABL 1,0 MTIME DCTABO NS DCTAB PIBD,0,10,,,,,,,=0,=31,=C*0* NS DCTABL 1,0 NS DCTABO -2,,,,,,,,,0,0,0 PI DCTAB PIBF,0,17,="AC",="NC",,,,,,,FI PI DCTABL 1,0 PI DCTABO 20,,,,,,0,0,0 PN DCTAB PIZF,0,20,="AH",,,,,,,=0 PN DCTABL 1,0 PN DCTABO 20 PW DCTAB PIZF,0,7,="EC",,,,,,,,=0 PW DCTABL 1,0 PW DCTABO ,,,,,,0,0,0 RDATE DCTAB PIPD,0,6,,,17,18,/LVFI/RDA,/LVFI/RDAA,,,(=1L) RDATE DCTABL 1,0 RDATE DCTABO 0,0,0,0,0,0,0,0,0,0,0,0 RECOVER DCTAB PIOP,0,10 RECOVER DCTABL 1,0 RECOVER DCTABO ,,,0,0,0,,,,0,0,0 RT DCTAB PIJD,0,5,,,,,,,,,JD RT DCTABL 1,0 RT DCTABO ,,,,,,,,,0,0,0 SI DCTAB PIBF,0,6,="AC",="NC",,,,,,,=0 SI DCTABL 1,0 SI DCTABO ,,,,,,0,0,0,0,0,0 SN DCTAB PIBD,0,10,,,,,,,=1,=9999,=C*0001* SN DCTABL 1,0 SN DCTABO -4,,,,,,,,,0,0,0 SV DCTAB PIOP,0,10,,,,,/LVFI/PSV SV DCTABL 1,0 SV DCTABO ,,,,,,,,,0,0,0 TOWNER DCTAB PIOP,0,10,,,/UPB/OWNER,/BTC/OWNER,,ST TOWNER DCTABL 1,0 TOWNER DCTABO ,,,0,0,0,0,0,0,0,0,0 TSITE DCTAB PIOP,0,10,,,/UPB/SITE,/BTC/SITE,,ST TSITE DCTABL 1,0 TSITE DCTABO ,,,0,0,0,0,0,0,0,0,0 UC DCTAB PIBF,0,10,="AC",="NC",,,,,,,=0 UC DCTABL 1,0 UC DCTABO ,,,,,,0,0,0 URDATE DCTAB PIPD,0,6,,,,,/LVFI/URD,TAVS+/CAT/URDATE,,,(=1L) URDATE DCTABL 1,0 URDATE DCTABO * ALTERNATE USER LEVEL DIRECTIVE CONTROL TABLES. AACOUNT DCTAB PIBD,0,10,,,,,,,=0,="MXAA",=C*0000* AACOUNT DCTABL 1,0 AACOUNT DCTABO -6,,,,,,,,,0,0,0 AADATE DCTAB PIPD,0,6,,,,,,,,,DD AADATE DCTABL 1,0 AADATE DCTABO ,,,,,,,,,0,0,0 AATIME DCTAB PIPT,0,6,,,,,,,,,DT AATIME DCTABL 1,0 AATIME DCTABO ,,,,,,,,,0,0,0 AMODE DCTAB PIOP,0,10 AMODE DCTABL 1,0 AMODE DCTABO ,,,,,,,,,0,0,0 DOTAB SPACE 4,10 ** DIRECTIVE OPTION TABLES. * * ENTRY TWO WORDS PER OPTION. * 60/ IDENT * 60/ VALUE * * IDENT = OPTION IDENTIFIER, LEFT JUSTIFIED. * VALUE = VALUE ASSIGNED TO CATALOG ENTRY. * * EACH OPTION TABLE IS TERMINATED BY A ZERO WORD. * FAMILY LEVEL OPTION TABLES. CATERR DOTAB ((CLEAR,0),(SET,1)) FOREIGN DOTAB ((NO,0),(YES,1)) GLOBAL DOTAB ((NO,0),(YES,1)) * VSN LEVEL DIRECTIVE OPTION TABLES. ERRFLAG DOTAB ((CLEAR,0),(SET,1)) MAINT DOTAB ((AVAILABLE,0),(HOLD,1)) STATUS DOTAB ((AVAILABLE,0),(CLEANED,1),(HOLD,2),(ERROR,3)) OWNER DOTAB ((CENTER,0),(USER,1)) SITE DOTAB ((ON,0),(OFF,1)) SYSTEM DOTAB ((NO,0),(YES,1)) VT DOTAB ((MTNT,0),(CT,1),(AT,3)) * FILE LEVEL DIRECTIVE OPTION TABLES. AC DOTAB ((NO,0),(YES,1)) CE DOTAB ((CLEAR,0),(SET,1)) CT DOTAB ((PRIVATE,FCPR),(SPRIV,FCSP),(PUBLIC,FCPU)) CV DOTAB ((AS,2),(EB,3)) D DOTAB ((PE,44B),(GE,45B),(HI,2),(LO,1),(HY,3),(HD,43B),(CE,26 ,B),(AE,66B)) F DOTAB ((I,0),(SI,1),(F,2),(S,3),(L,4),(LI,5)) LB DOTAB ((KL,2),(KU,0),(NS,1)) M DOTAB ((READ,FMRE),(WRITE,FMWR),(NULL,FMNA)) RECOVER DOTAB ((NO,0),(YES,1)) SV DOTAB ((NO,0),(SET,1)) TOWNER DOTAB ((CENTER,0),(USER,1)) TSITE DOTAB ((ON,0),(OFF,1)) * ALTERNATE USER LEVEL DIRECTIVE OPTION TABLES. AMODE DOTAB ((IMPLICIT,0),(WRITE,FMWR),(READ,FMRE),(NULL,FMNA),(SPE ,CIAL,FMPF)) DMESS SPACE 4,10 ** DAYFILE MESSAGES. MABT DATA C* TFSP ABORTED.* MABU DATA C* TFSP ABORTED BY USER.* MANT DATA C* ABNORMAL TERMINATION, ERROR CODE = $$$$$$$.* MCOM DATA C* TFSP COMPLETE.* MDER DATA C* DIRECTIVE ERRORS.* MFNA DATA C* FAMILY NOT ACTIVE.* MINA DATA C* INCORRECT ACCESS.* MTCI DATA C* TAPE CATALOG FILE INTERLOCKED.* MUTE DATA C* UNEXPECTED TAPE CATALOG ERROR.* EMESS SPACE 4,10 ** DIRECTIVE ERROR MESSAGES. EAFM KLINE ( ALTERNATE FAMILIES AT MAXIMUM.),E,50 EAVM KLINE ( ASSIGNED VSNS AT MAXIMUM.),E,50 ECSV KLINE ( CANNOT CHANGE SYSTEM VSN FLAG.),E,50 ECTD KLINE ( CANNOT CHANGE TAPE TYPE / DENSITY.),E,50 EDFE KLINE ( DATA FIELD ERROR.),E,50 EDLE KLINE ( DIRECTIVE INCORRECT FROM CURRENT LEVEL.),E,50 ENVF KLINE ( DIRECTIVE NOT VALID ON FAST ATTACH CATALOG.),E,50 EFAR KLINE ( FILE ALREADY RESERVED.),E,50 EFIB KLINE ( FILE BUSY.),E,50 EFIC KLINE ( FILE IDENTIFIER CONFLICT.),E,50 EFNC KLINE ( FILE NAME CONFLICT.),E,50 EFNI KLINE ( FILE NOT IN CATALOG.),E,50 EFNR KLINE ( FILE NOT RESERVED.),E,50 EILD KLINE ( INCORRECT DIRECTIVE.),E,50 EIFI KLINE ( INCORRECT FILE IDENTIFIER.),E,50 EIQN KLINE ( INCORRECT SEQUENCE NUMBER.),E,50 EWSA KLINE ( NO SCRATCH AVAILABLE.),E,50 ENMS KLINE ( NON-MATCHING STATUSES.),E,50 ENMT KLINE ( NON-MATCHING TAPE TYPE.),E,50 ERDI KLINE ( READ DIRECTIVE INCORRECT.),E,50 ERDM KLINE ( REQUIRED DATA MISSING.),E,50 ESVC KLINE ( SYSTEM VSN CANNOT BE USER-OWNED.),E,50 ESVM KLINE ( SYSTEM VSN MUST BE FIRST VSN.),E,50 EVUM KLINE ( VALIDATED USERS AT MAXIMUM.),E,50 EVAA KLINE ( VSN ALREADY ASSIGNED.),E,50 EVAI KLINE ( VSN ALREADY IN CATALOG.),E,50 EVSB KLINE ( VSN BUSY.),E,50 EVNA KLINE ( VSN NOT ADDED TO CATALOG.),E,50 EVNF KLINE ( VSN NOT ASSIGNED TO FILE.),E,50 EVNV KLINE ( VSN NOT AVAILABLE.),E,50 EVNC KLINE ( VSN NOT IN CATALOG.),E,50 IMESS SPACE 4,10 ** INFORMATIVE MESSAGES. IAIA KLINE ( ALTERNATE USER CURRENTLY IS ADMITTED.),E,50 IANA KLINE ( ALTERNATE USER NOT CURRENTLY ADMITTED.),E,50 IANP KLINE ( ALTERNATE USER NOT PROCESSED.),E,50 IAUA KLINE ( ALTERNATE USER ADMITTED.),E,50 IAUU KLINE ( ALTERNATE USER ADMIT UPDATED.),E,50 IEOF KLINE ( PREMATURE END OF FILE, XXXXXXX.),E,50 IFAL KLINE ( FILE AMENDED.),E,50 IFIR KLINE ( FILE CURRENTLY IS RESERVED.),E,50 IFNP KLINE ( FILE NOT PROCESSED.),E,50 IFNR KLINE ( FILE NOT CURRENTLY RESERVED.),E,50 IFRC KLINE ( FILE RELEASED FROM CATALOG.),E,50 IFRE KLINE ( FILE RESERVED.),E,50 IIPI KLINE ( I PARAMETER IGNORED.),E,50 IPNI KLINE ( P AND N PARAMETERS IGNORED.),E,50 IULC KLINE ( USER LEVEL COMPLETE.),E,50 IVAC KLINE ( VSN ADDED TO CATALOG.),E,50 IVIC KLINE ( VSN CURRENTLY IN CATALOG.),E,50 IVNC KLINE ( VSN NOT CURRENTLY IN CATALOG.),E,50 IVNP KLINE ( VSN NOT PROCESSED.),E,50 IVRB KLINE ( VSN RESERVED BY #######.),E,50 IVRC KLINE ( VSN REMOVED FROM CATALOG.),E,50 IVSI KLINE ( VSN INTERLOCKED. JSN IS ????.),E,50 IVSR KLINE ( VSN REVISED.),E,50 PHEAD SPACE 4,10 ** PAGE HEADER MESSAGES. PAUA BSS 0 ALTERNATE USER AUDIT LISTING LISTER PAUA,17,( AUDIT LISTING.),E LISTER ,10,( USER = ) USER LISTER ,7 USER NAME LISTER ,10,( FILE = ) FILE LISTER ,17 FILE IDENTIFIER LISTER ,1,,E LISTER ,10,( FVSN = ) FVSN LISTER ,6 FIRST VSN LISTER ,11,( QN = ) QN LISTER ,4,0001,E SEQUENCE NUMBER LISTER ,1,( ),E LISTER ,30,( USER NAME MODE ) LISTER ,31,( ACCESSES DATE TIME),E LISTER ,1,( ),E PAUAL EQU *-PAUA LENGTH OF HEADER PDIR BSS 0 DIRECTIVE LISTING LISTER PDIR,21,( DIRECTIVE LISTING.),E LISTER ,1,( ),E PDIRL EQU *-PDIR LENGTH OF HEADER PDIS BSS 0 DISPLAY LISTING LISTER PDIS,19,( DISPLAY LISTING.),E PDISL EQU *-PDIS LENGTH OF HEADER PFIA BSS 0 FILE AUDIT LISTING LISTER PFIA,17,( AUDIT LISTING.),E LISTER ,1,( ),E LISTER ,40,( USER FILE-IDENTIFIER SV FVSN ) LISTER ,38,(QN CE CHARGE PROJECT-NUMBER ) EOL1 LISTER ,2 END OF LINE FOR MASS STORAGE OUTPUT LISTER ,42,( PASSWORD PHYSICAL-FILE-ID MD CT AC UCW),E LISTER ,40,( CR CV D E F FA FC G ) LISTER ,38,( LB NS RT SN SI ) EOL2 LISTER ,2 END OF LINE FOR MASS STORAGE OUTPUT LISTER ,40,( ACCESSES CDATE CTIME ADATE ATIME MD) LISTER ,10,(ATE MTIME),E LISTER ,1,( ),E PFIAL EQU *-PFIA LENGTH OF HEADER PHEL BSS 0 HELP DISPLAY LISTER PHEL,16,( HELP LISTING.),E PHELL EQU *-PHEL LENGTH OF HEADER PVSA BSS 0 VSN AUDIT LISTING LISTER PVSA,17,( AUDIT LISTING.),E LISTER ,1,( ),E LISTER ,48,( VSN PRN VT STATUS UC OWNER SITE SYSTEM) LISTER ,39,( USER CHARGE URDATE FVSN NVSN),E LISTER ,1,( ),E PVSAL EQU *-PVSA LENGTH OF HEADER TITLE MAIN PROGRAM. TFS SPACE 4,10 ** TFS - MAIN ROUTINE FOR *TFSP* AND *TFSPE*. TFS BSS 0 SX6 B1 FLAG CLEAR INTERLOCK ON ABORT SA6 CI RCREC N1,1,REC1 READ FIRST RECORD SX3 REC1+TBHL SET SYSTEM TABLE ADDRESS SX4 TSST SET SYSTEM TABLE IMAGE ADDRESS RJ MSV SAVE SYSTEM TABLE VALUES RJ KFM SET FAMILY LEVEL K-DISPLAY SA1 TE NZ X1,TFS2 IF *TFSPE* SA1 LF NZ X1,TFS1 IF LOCAL FILE MODE ISSMSG IPNI,I ISSUE INFORMATIVE MESSAGE TFS1 SA1 OP CHECK OPTION SX1 X1-IOPT ZR X1,TFS2 IF *OP=I* ISSMSG IIPI,I ISSUE INFORMATIVE MESSAGE TFS2 SA1 LV GET LEVEL SETSORC K,X1 SET SOURCE VALUES IN K-DISPLAY SA1 /KFILLS1/FILE PREVENT EXTRA END OF LINES SB3 59 RJ CFI CHECK FILE IDENTIFIER IN OUTPUT SA1 /KFILLS2/FILE SB3 59 RJ CFI CHECK FILE IDENTIFIER IN OUTPUT SA1 /KFILLS3/FILE SB3 59 RJ CFI CHECK FILE IDENTIFIER IN OUTPUT SA1 /KAUSLS/FILE SB3 59 RJ CFI CHECK FILE IDENTIFIER IN OUTPUT SA1 /KDIS/FI SB3 5 RJ CFI CHECK FILE IDENTIFIER IN OUTPUT SA1 /KDIS/PI SB3 5 RJ CFI CHECK FILE IDENTIFIER IN OUTPUT SA1 DM CHECK DIRECTIVE MESSAGE FLAG SX6 B0 CLEAR FLAG SA6 A1 NZ X1,TFS3 IF KEEP CURRENT MESSAGE MOVE 4,(=40H),/KMESS/DIRECT CLEAR CURRENT MESSAGE TFS3 RJ DIP PROCESS DIRECTIVE INPUT SA1 EF ZR X1,TFS4 IF NO ERROR ABTMSG MDER,NA SET ERROR MESSAGE ADDRESS SA1 AB NZ X1,TFS6 IF ABORT OPTION TFS4 SA1 ET PL X1,TFS2 IF NOT EOF SA1 IF CHECK INPUT FET ADDRESS SX1 X1-I NZ X1,TFS7 IF NOT END OF INPUT FILE SA1 IS CHECK INPUT FILE STATUS SX1 X1 ZR X1,TFS6 IF NO INPUT FILE PL X1,TFS5 IF NOT BATCH JOB MX0 42 SA1 I GET INPUT FILE NAME BX1 X0*X1 SB2 1RX SB3 TFSD SB5 -IEOF RJ SNM SET NAME IN MESSAGE ISSMSG TFSD,I ISSUE INFORMATIVE MESSAGE EQ TFS6 TERMINATE TFSP TFS5 ISSMSG EILD,E ISSUE ERROR MESSAGE SX6 B0 SA6 ET CLEAR EOF FLAG SA6 EF CLEAR ERROR FLAG SA1 I CLEAR *EOF* ON FET MX0 57 LX0 3 BX6 X0*X1 SA6 A1 EQ TFS2 READ NEXT LINE OF INPUT FILE TFS6 MOVE TFSAL,TFSA,USBB SET TERMINATION DIRECTIVES SX6 USBB-1 SA6 SP SX6 X6+B1 SA6 SB SX6 USBB+TFSAL SA6 SM EQ TFS8 SET FET ADDRESS TFS7 SA1 TFSB+0 RESET INPUT STRING BUFFER POINTERS SX6 X1 SA6 SB SA1 A1+B1 SX6 X1 SA6 SM SA1 A1+B1 SX6 X1 SA6 SP MOVE USBBL,TFSC,USBB RESET INPUT STRING BUFFER TFS8 SX6 I SET INPUT FET ADDRESS SA6 IF SX6 B0 CLEAR EOF FLAG SA6 ET SA6 AI CLEAR ALTERNATE INPUT FILE NAME EQ TFS2 READ NEXT LINE OF INPUT FILE TFSA DATA 1RD,1RR,1RO,1RP TERMINATION DIRECTIVES DATA 1R,,1RD,1RR,1RO,1RP DATA 1R,,1RD,1RR,1RO,1RP DATA 1R,,1RD,1RR,1RO,1RP TFSAL EQU *-TFSA LENGTH OF TERMINATION DIRECTIVE TFSB BSS 0 STRING POINTER IMAGES LOC 0 BSS 1 IMAGE OF (SB) BSS 1 IMAGE OF (SM) BSS 1 IMAGE OF (SP) LOC *O TFSC BSS USBBL IMAGE OF INPUT STRING BUFFER TFSD DATA C* PREMATURE END OF FILE, XXXXXXX.* ABT SPACE 4,10 ** ABT - ABORT *TFSP*. * * ENTRY (CI) = 0 IF NO CLEAR OF UTILITY INTERLOCK. * (EM) = DAYFILE ERROR MESSAGE ADDRESS. * = 0 IF NO ERROR MESSAGE. * * EXIT *TFSP* ABORTED. ABT BSS 0 ENTRY SA1 CI ZR X1,ABT1 IF NO CLEAR OF INTERLOCK SX6 B0 FLAG NO INTERLOCKS CLEARED SA6 A1 SA6 RT CLEAR RETRY FLAG RJ RVE REPLACE VSN ENTRIES SX1 B0 SET NO USER NAME RJ IUN INTERLOCK USER NAME ABT1 SA2 FM CHECK FAMILY NAME SA1 CF BX2 X1-X2 ZR X2,ABT2 IF NO FAMILY NAME CHANGE NEEDED RJ CFM CHANGE FAMILY ABT2 SA1 OS ZR X1,ABT3 IF NO OUTPUT FILE WRITER L,R FLUSH OUTPUT BUFFER ABT3 SA1 TE ZR X1,ABT5 IF NOT *TFSPE* ABT4 RETURN N1,R RETURN FILE ABT5 MESSAGE MABT,0,R ISSUE *TFSP ABORTED* MESSAGE SA5 EM ZR X5,ABT6 IF NO ERROR MESSAGE MESSAGE X5,3,R ISSUE ERROR MESSAGE ABT6 RETURN T,R RETURN INTERRUPT FILE ABORT ABORT PROGRAM END SPACE 4,10 ** END - TERMINATE *TFSP*. * * EXIT TO ABT IF DIRECTIVE ERRORS AND ABORT MODE. * *TFSP* TERMINATED. * * USES A - 1, 2. * X - 1, 2. * * CALLS ABT, CFM, IUN, RVE. * * MACROS ENDRUN, ENFA, MESSAGE, RETURN, WRITER. * * ENTERED AT END7 FROM TFR. END BSS 0 ENTRY SA1 EF ZR X1,END1 IF NO DIRECTIVE ERRORS SA1 AB NZ X1,ABT IF ABORT MODE END1 RJ RVE REPLACE VSN ENTRIES IN CATALOG FILE SX1 B0 SET NO USER NAME RJ IUN INTERLOCK USER NAME END2 SA1 OS ZR X1,END3 IF NO OUTPUT FILE WRITER L,R FLUSH OUTPUT BUFFER END3 SA1 EF ZR X1,END4 IF NO DIRECTIVE ERRORS MESSAGE MDER,3,R ISSUE DIRECTIVE ERROR MESSAGE END4 SA1 TE ZR X1,END6 IF NOT *TFSPE* END5 RETURN N1,R RETURN FILE END6 RETURN T,R RETURN INTERRUPT FILE * ENTRY FROM TFR. END7 SA2 FM CHECK FAMILY NAME SA1 CF BX2 X1-X2 ZR X2,END8 IF FAMILY NOT CHANGED RJ CFM CHANGE FAMILY END8 MESSAGE MCOM,0,R ISSUE COMPLETION MESSAGE ENDRUN TERMINATE PROGRAM RPV SPACE 4,10 ** RPV - REPRIEVE HANDLER. * * EXIT PROGRAM RESUMED IF TERMINAL INTERRUPT. * PROGRAM ABORTED IF SYSTEM ERROR. RPV BSS 0 ENTRY SA1 RPVA+7 CHECK ERROR FLAG RJUST X1,X1,12,11 SX6 X1-TIET ZR X6,RPV1 IF TERMINAL INTERRUPT SX6 X1-TAET ZR X6,RPV1 IF TERMINAL INTERRUPT EQ RPV7 ISSUE ERROR MESSAGE RPV1 SX6 B0 CLEAR INTERRUPT RESPONSE SA6 RPVC QUAL RPV RESETP T DISPLAY INTERRUPT INFORMATION WRITEW X2,RPVD,RPVDL WRITER X2,R READ X2,R GET USER RESPONSE READC X2,RPVC,1 QUAL * SA1 RPVA+4 NZ X1,RPV6 IF INTERRUPTS PENDING MX0 42 CHECK USER RESPONSE SA1 RPVC SA2 RPVE RPV2 ZR X2,RPV1 IF INCORRECT RESPONSE BX6 X0*X2 BX6 X6-X1 ZR X6,RPV3 IF RESPONSE FOUND SA2 A2+B1 EQ RPV2 CHECK NEXT TABLE ENTRY RPV3 SB2 X2 JP B2 PROCESS RESPONSE RPV4 SX6 B1 SET TERMINAL INTERRUPT FLAG SA6 TI RPV5 REPRIEVE RPVA,RESUME,237B RESUME PROGRAM RPV6 ABTMSG MABU ABORT *TFSP* RPV7 SX6 X1-RPVBL PL X6,RPV8 IF UNKNOWN ERROR SA2 X1+RPVB ZR X2,RPV8 IF UNKNOWN ERROR ABTMSG X2 ABORT *TFSP* RPV8 RJ COD CONVERT TO OCTAL DISPLAY BX1 X4 SET DISPLAY ERROR CODE SB2 1R$ SET CHARACTER TO REPLACE SB3 MANT SET DAYFILE MESSAGE ADDRESS SB5 B3 RJ SNM SET NAME IN MESSAGE ABTMSG MANT ABORT *TFSP* RPVA BSS 0 REPRIEVE BLOCK LOC 0 VFD 36/0 VFD 12/RPVAL BLOCK LENGTH VFD 2/0 VFD 9/ FUNCTION VFD 1/0 COMPLETION BIT VFD 30/0 CHECKSUM LWA VFD 30/RPV TRANSFER ADDRESS VFD 60/ CHECKSUM VALUE VFD 24/237B MASK VFD 24/ ERROR CLASS VFD 12/ ERROR CODE VFD 60/ PENDING INTERRUPTS VFD 60/ PENDING RA+1 REQUEST VFD 60/ INTERRUPTED TERMINAL I/O VFD 48/ VFD 12/ ERROR FLAG VFD 60/ BSS 20B EXCHANGE PACKAGE RPVAL EQU * LOC *O RPVB INDTAB 1 TABLE OF ERROR CODE MESSAGES INDEX 0,CON,0 INCORRECT - NORMAL TERMINATION INDEX ARET,CON,(=C* ARITHMETIC ERROR.*) INDEX ITET,CON,(=C* SCP INVALID TRANSFER ADDRESS.*) INDEX PSET,CON,(=C* PROGRAM STOP ERROR.*) INDEX PPET,CON,(=C* PPU ABORT.*) INDEX CPET,CON,0 INCORRECT - CPU ABORT INDEX PCET,CON,(=C* PPU CALL ERROR.*) INDEX MLET,CON,(=C* MESSAGE LIMIT.*) INDEX TLET,CON,(=C* TIME LIMIT ERROR.*) INDEX FLET,CON,(=C* FILE LIMIT ERROR.*) INDEX TKET,CON,(=C* TRACK LIMIT ERROR.*) INDEX SRET,CON,(=C* SRU LIMIT ERROR.*) INDEX FSET,CON,(=C* FORCED ERROR.*) INDEX RCET,CON,(=C* JOB HUNG IN AUTORECALL.*) INDEX ODET,CON,(=C* OPERATOR DROP.*) INDEX IDET,CON,(=C* IDLEDOWN.*) INDEX RRET,CON,(=C* OPERATOR RERUN.*) INDEX DRET,CON,(=C* DEADSTART RERUN.*) INDEX STET,CON,(=C* SUSPENSION TIMEOUT.*) INDEX OKET,CON,(=C* OPERATOR KILL.*) INDEX SVET,CON,(=C* SECURITY VIOLATION.*) INDEX SSET,CON,(=C* SUBSYSTEM ABORTED.*) INDEX ECET,CON,(=C* ECS PARITY ERROR.*) INDEX PEET,CON,(=C* CPU PARITY ERROR.*) INDEX SYET,CON,(=C* SYSTEM ABORT.*) INDEX RAET,CON,(=C* RECOVERY ABORT.*) INDEX RSET,CON,(=C* RECOVERED SUBSYSTEM.*) INDEX ORET,CON,(=C* OVERRIDE ERROR CONDITION.*) RPVBL EQU *-RPVB NUMBER OF RECOGNIZED ERROR CODES RPVC CON 0 INTERRUPT USER RESPONSE RPVD BSS 0 INTERRUPT INSTRUCTIONS DATA C* USER BREAK PROCESSING.* DATA C* * DATA C* PLEASE ENTER ONE OF THE FOLLOWING NUMBERS -* DATA C* * DATA C* 1 ABORT TFSP.* DATA C* 2 RESUME PROCESSING (SOME TERMINAL OUTPUT LOST).* DATA C* 3 TERMINATE CURRENT AUDIT OR SOURCE DIRECTIVE.* RPVDL EQU *-RPVD LENGTH OF INSTRUCTIONS RPVE BSS 0 TABLE OF USER INTERRUPT RESPONSES VFD 42/0L1,18/RPV6 TERMINATE TFSP VFD 42/0L2,18/RPV5 RESUME PROCESSING VFD 42/0L3,18/RPV4 TERMINATE AUDIT OR SOURCE DIRECTIVE CON 0 END OF TABLE COMMON SPACE 4,10 ** COMMON DECKS FOR REPRIEVE HANDLER. QUAL RPV QUAL$ EQU 1 FORCE UNQUALIFIED COMMON DECKS *CALL COMCCIO *CALL COMCRDC *CALL COMCSYS *CALL COMCWTW QUAL * TITLE SUBROUTINES FOR MACROS. CFR SPACE 4,10 ** CFR - CHECK IF FILE IS READY. * * ENTRY (X2) = FET ADDRESS. * * EXIT (X1) = 0 IF NO FILE NAME. * (X2) = FET ADDRESS. * * USES A - 1. * * MACROS RECALL. CFR SUBR ENTRY/EXIT SA1 X2 AX1 18 ZR X1,CFRX IF NO FILE NAME RECALL X2 WAIT UNTIL FILE IS READY SX1 B1 EQ CFRX RETURN CTF SPACE 4,15 ** CTF - CALL *TFM*. * * ENTRY (X2) = FET ADDRESS. * (X6) = FUNCTION IF NO INTERLOCK TO SET. * = (-1)*FUNCTION IF INTERLOCK TO SET. * * EXIT (X2) = FET ADDRESS. * (X4) = ERROR CODE. * TO *ABT* IF UNEXPECTED ERROR CODE. * * USES A - 1, 2, 4, 6, 7. * X - 0, 1, 6, 7. * * MACROS ABTMSG, MESSAGE, RECALL, RJUST, SYSTEM. CTF SUBR ENTRY/EXIT LX6 3 PL X6,CTF1 IF NO INTERLOCK TO SET BX6 -X6 RESET FUNCTION CODE SA1 LF NZ X1,CTF1 IF LOCAL FILE MODE SX6 X6+4 SET INTERLOCK BIT CTF1 SA6 CTFA SAVE FUNCTION CODE CTF2 RECALL X2 INSURE FET NOT BUSY MX0 42 SET FUNCTION CODE IN FET SA1 X2 BX6 X0*X1 SA1 CTFA BX6 X6+X1 SA6 X2 SX7 X2 SAVE FET ADDRESS SA7 CTFB SYSTEM TFM,R,X7,SSJF*100B CALL *TFM* SA2 CTFB GET ERROR CODE SA4 X2 RJUST X4,X4,8,16 SX1 X4-/EMSG/MXEC PL X1,CTF3 IF BEYOND KNOWN ERROR CODES SA1 X4+CTFC GET PROCESSOR ADDRESS SB2 X1 ZR B2,CTF3 IF NO PROCESSOR ADDRESS JP B2 JUMP TO PROCESSOR * PROCESS UNEXPECTED ERROR CODES. CTF3 MESSAGE EBUF,0,R ISSUE *TFM* ERROR MESSAGE ABTMSG MUTE ABORT *TFSP* CTFA BSS 1 FUNCTION CODE CTFB BSS 1 FET ADDRESS CTFC INDTAB 1 TABLE OF ERROR CODE PROCESSORS INDEX 0,CON,CTFX NO ERROR INDEX /EMSG/VBS,CON,CTFX VSN BUSY INDEX /EMSG/LNF,CON,CTFX FILE NOT FOUND INDEX /EMSG/FNF,CON,CTFX FILE NOT FOUND INDEX /EMSG/VNF,CON,CTFX VSN NOT FOUND INDEX /EMSG/UNF,CON,CTFX USER NOT FOUND INDEX /EMSG/NMT,CON,CTFX FILE NOT ON TAPE INDEX /EMSG/VSR,CON,CTFX VSN RESERVED INDEX /EMSG/VSD,CON,CTFX VSN DUPLICATE INDEX /EMSG/FAR,CON,CTFX FILE ALREADY RESERVED INDEX /EMSG/VAR,CON,CTFX VSN ALREADY RESERVED INDEX /EMSG/DLK,CON,CTF3 DEADLOCK INDEX /EMSG/ILR,CON,CTF3 *TFM* INCORRECT REQUEST INDEX /EMSG/TMD,CON,CTF3 *TMS* DISABLED INDEX /EMSG/MNA,CON,CTF3 *MAGNET* NOT ACTIVE INDEX /EMSG/EBP,CON,CTF3 ERRONEOUS BUFFER POINTER INDEX /EMSG/TUA,CON,CTF3 *TFM* UTILITY ACTIVE INDEX /EMSG/BAE,CON,CTF3 BUFFER ARGUMENT ERROR INDEX /EMSG/EID,CON,CTF3 ERROR IN INDEX DATA INDEX /EMSG/ECD,CON,CTF3 ERROR IN CATALOG DATA INDEX /EMSG/EAD,CON,CTF3 ERROR IN CATALOG DATA INDEX /EMSG/RAE,CON,CTF3 RANDOM ADDRESS ERROR INDEX /EMSG/TKL,CON,CTF3 TRACK LIMIT INDEX /EMSG/MSE,CON,CTF3 MASS STORAGE ERROR INDEX /EMSG/CNF,CON,CTFX CATALOG NOT FOUND INDEX /EMSG/ECF,CON,CTFX EMPTY CATALOG INDEX /EMSG/CLE,CON,CTF3 CATALOG LINKAGE ERROR INDEX /EMSG/IOS,CON,CTF3 I/O SEQUENCE ERROR ON CATALOG INDEX /EMSG/EOI,CON,CTF3 EOI NOT ON TRACK CHAIN INDEX /EMSG/NAE,CON,CTFX NO ADMITS INDEX /EMSG/TPI,CON,CTF3 TMS PROCESSING INHIBITED INDEX /EMSG/SFA,CON,CTF3 FAMILY ACTIVITY SUSPENDED INDEX /EMSG/FCE,CON,CTF3 FAMILY CATALOG ERROR INDEX /EMSG/WSA,CON,CTFX WAIT SCRATCH ASSIGNMENT INDEX /EMSG/NEU,CON,CTF3 NO EXTEND ON USER OWNED FILE INDEX /EMSG/WRF,CON,CTF3 WRITE REQUEST ON READ ONLY FILE INDEX /EMSG/MPE,CON,CTF3 MULTI-FILE PROCESSING ERROR INDEX /EMSG/FCI,CON,CTF3 FILE CREATION INCORRECT INDEX /EMSG/EFD,CON,CTFX ERROR IN FILE DATA INDEX /EMSG/CNA,CON,CTFX LINKED CATALOG NOT ACCESSIBLE ERRNZ *-CTFC-/EMSG/MXEC INCORRECT NUMBER OF ERROR CODES CWL SPACE 4,15 ** CWL - COUNT WORDS/LINES IN BUFFER. * * ENTRY (A1) = BUFFER ADDRESS. * (B2) = 0 IF COUNT NUMBER OF LINES. * = 1 IF COUNT NUMBER OF WORDS. * (B6) = WORD COUNT IF (B2) = 0. * (B7) = LINE COUNT IF (B2) = 1. * (X1) = FIRST WORD OF BUFFER. * * EXIT (A1) = LWA+1 OF BUFFER. * (B6) = WORD COUNT OF BUFFER. * (B7) = LINE COUNT OF BUFFER. * * USES B - 3, 4. * X - 0, 1. CWL SUBR ENTRY/EXIT SB3 B6 SET WORD COUNT FOR COUNTING LINES SB4 377777B ZR B2,CWL1 IF COUNTING LINES SB3 B4 SET LINE COUNT FOR COUNTING WORDS SB4 B7 CWL1 MX0 -12 SET END OF LINE MASK SB6 B0 PRESET WORD COUNT SB7 B0 PRESET LINE COUNT CWL2 GE B6,B3,CWLX IF NO MORE WORDS IN BUFFER GE B7,B4,CWLX IF NO MORE LINES IN BUFFER SB6 B6+B1 INCREMENT WORD COUNT BX6 -X0*X1 CHECK END OF LINE BYTE SA1 A1+B1 NZ X6,CWL2 IF NOT END OF LINE SB7 B7+B1 INCREMENT LINE COUNT EQ CWL2 CHECK WORD/LINE COUNTS DVS SPACE 4,15 ** DVS - DELETE VSN ENTRY. * * ENTRY (B6) = ADDRESS OF VSN BUFFER. * (B7) = LENGTH OF VSN BUFFER. * * EXIT (X4) = 0 IF DELETE COMPLETE. * .NE. 0 IF A VSN IS ASSIGNED TO A FILE. * * USES A - 1, 3, 6. * B - 6, 7. * X - 1, 3, 6. * * CALLS SMD. * * MACROS CALLTFM, RESETP, WRITFET. DVS SUBR ENTRY/EXIT SX6 B6 SAVE BUFFER ADDRESS SA6 DVSA SX6 B7 SAVE BUFFER LENGTH SA6 DVSB RESETP N1 SET VSN ENTRIES INTO FET BUFFER SA1 DVSA SA3 DVSB WRITFET X2,X1,X3 CALLTFM X2,DVES DELETE VSN ENTRIES NZ X4,DVSX IF ERROR SA1 DVSA SET BUFFER ADDRESS SB6 X1 SA1 DVSB SET BUFFER LENGTH SB7 X1 RJ SMD ISSUE *SDRM* ACCOUNT FILE MESSAGE SX4 B0 FLAG NO ERROR EQ DVSX RETURN DVSA BSS 1 VSN BUFFER ADDRESS DVSB BSS 1 VSN BUFFER LENGTH GFI SPACE 4,25 ** GFI - GET FILE CATALOG VIA FILE IDENTIFIER. * * ENTRY (X1) = USER NAME. * (X2) = FIRST 10 CHARACTERS OF FILE ID. * (X3) = LAST 7 CHARACTERS OF FILE ID. * (B2) = VSN BUFFER ADDRESS. * (B4) = 0 IF VERIFY FILE STATUS. * .NE. 0 IF ASSUME FILE NOT FOUND. * (B6) = FILE CATALOG BUFFER ADDRESS. * (B7) = PREVIOUS FILE BUFFER ADDRESS. * * EXIT (X4) = 0 IF FILE FOUND. * .NE. IF FILE NOT FOUND. DEFAULT SET IN BUFFER. * (X6) = FILE CATALOG RANDOM ADDRESS. * (X7) = PREVIOUS FILE RANDOM ADDRESS. * (B6) = FILE COUNT. * (B7) = VSN COUNT. * * USES A - 1, 2, 3, 6. * B - 2. * X - 1, 2, 3. * * CALLS UFA. * * MACROS GFILEV, MOVE, MOVEBIT, RJUST, SAFET. GFI3 SA3 GFIC SET DEFAULT CATALOG IMAGE IN BUFFER MOVE TCEL,DFIC,X3 SA2 GFIC SET DEFAULT FILE IDENTIFIER MOVEBIT GFIB,X2+/CAT/FI,/BTC/FI,,/UPB/FI SA2 GFIC SET DEFAULT PHYSICAL IDENTIFIER MOVEBIT GFIB,X2+/CAT/PI,/BTC/PI,,/UPB/PI SA2 GFIC SET SYMBOLIC ACCESS FLAG MOVEBIT (=1),X2+/CAT/SV,/BTC/SV,/BTC/SV-1,/UPB/SV SB7 B0 SET VSN COUNT SB6 B1 SET FILE COUNT SX7 B0 SET PREVIOUS FILE RANDOM ADDRESS SX6 B0 SET FILE CATALOG RANDOM ADDRESS SX4 B1 FLAG FILE NOT FOUND GFI SUBR ENTY/EXIT BX6 X1 SAVE USER NAME SA6 GFIA BX6 X2 SAVE FILE IDENTIFIER SA6 GFIB BX6 X3 SA6 A6+B1 SX6 B6 SAVE FILE CATALOG BUFFER ADDRESS SA6 GFIC SX6 B7 SAVE PREVIOUS FILE BUFFER ADDRESS SA6 GFID SX6 B2 SAVE VSN BUFFER ADDRESS SA6 GFIE NZ B4,GFI3 IF NO VERIFY SAFET GFIA,,GFIB,SCST SET AUDIT FET NZ X4,GFI3 IF FILE NOT FOUND SA1 GFIC SET BUFFER ADDRESSES SB6 X1 SA1 GFIE SB2 X1 RJ UFA UNPACK FILE AUDIT SA6 GFIF SAVE CATALOG RANDOM ADDRESS SA1 GFIC GET SEQUENCE NUMBER SA3 X1+/CAT/QN RJUST X3,X3,/BTC/QN,/UPB/QN SX3 X3-1 NZ X3,GFI2 IF MULTI-FILE SA1 X1+/CAT/NCAT CHECK NEXT CATALOG RANDOM ADDRESS RJUST X1,X1,/BTC/NCAT,/UPB/NCAT NZ X1,GFI2 IF MULTI-FILE SA1 A1+/CAT/REELC-/CAT/NCAT SET VSN COUNT RJUST X1,X1,/BTC/REELC,/UPB/REELC SB7 X1 SB6 B1 SET FILE COUNT SX7 B0 SET PREVIOUS FILE RANDOM ADDRESS SA1 GFIF SET FILE CATALOG RANDOM ADDRESS BX6 X1 EQ GFIX RETURN GFI2 SA2 GFIE SET ADDRESS OF FIRST VSN SA4 GFIC SET FILE CATALOG BUFFER ADDRESS SB6 X4 SA4 GFID SET PREVIOUS FILE BUFFER ADDRESS SB2 X2 SET VSN BUFFER ADDRESS GFILEV GFIA,X2,X3+B1,B6,X4,B2 GET FILE CATALOG VIA VSN EQ GFIX RETURN GFIA BSS 1 USER NAME GFIB BSS 2 FILE IDENTIFIER GFIC BSS 1 FILE CATALOG BUFFER ADDRESS GFID BSS 1 PREVIOUS FILE BUFFER ADDRESS GFIE BSS 1 VSN BUFFER ADDRESS GFIF BSS 1 FILE CATALOG RANDOM ADDRESS GFV SPACE 4,30 ** GFV - GET FILE CATALOG VIA VSN. * * ENTRY (X1) = USER NAME. * (X2) = VSN. * (X3) = SEQUENCE NUMBER. * (B2) = VSN BUFFER ADDRESS. * (B4) = 0 IF VERIFY FILE STATUS. * .NE. 0 IF ASSUME FILE NOT FOUND. * (B6) = FILE BUFFER ADDRESS. * (B7) = PREVIOUS FILE BUFFER ADDRESS. * * EXIT (X4) = 0 IF FILE FOUND. * = 1 IF FILE NOT FOUND. DEFAULT USED. * = -1 IF INCORRECT SEQUENCE NUMBER. * = -2 IF VSN UNAVAILABLE. * (X6) = FILE CATALOG RANDOM ADDRESS. * (X7) = PREVIOUS FILE CATALOG RANDOM ADDRESS. * (B6) = FILE COUNT. * (B7) = VSN COUNT. * * USES A - 1, 2, 3, 4, 6, 7. * B - 2, 6, 7. * X - 0, 1, 2, 3, 4, 6, 7. * * CALLS UFA. * * MACROS LISTVSN, MOVE, MOVEBIT, REPVSN, RJUST, SAFET. GFV11 SA1 GFVH GET FILE COUNT SB6 X1 SA1 GFVI GET VSN COUNT SB7 X1 SA1 GFVJ GET FILE RANDOM ADDRESS BX6 X1 SA1 GFVK GET PREVIOUS FILE RANDOM ADDRESS BX7 X1 GFV SUBR ENTRY/EXIT BX6 X1 SAVE USER NAME SA6 GFVA BX6 X2 SAVE VSN SA6 GFVB SX6 X3 SAVE SEQUENCE NUMBER SA6 GFVC SX6 B6 SAVE FILE BUFFER ADDRESS SA6 GFVD SX6 B7 SAVE PREVIOUS FILE BUFFER ADDRESS SA6 GFVE SX6 B2 SAVE VSN BUFFER ADDRESS SA6 GFVF SX6 B4 SAVE NO VERIFY FLAG SA6 GFVG SX6 B0 CLEAR FILE COUNT SA6 GFVH SA6 GFVI CLEAR VSN COUNT SA6 GFVJ CLEAR CATALOG RANDOM ADDRESS SA6 GFVK CLEAR PREVIOUS CATALOG RANDOM ADDRESS SA6 GFVL CLEAR LAST VSN ZR B4,GFV1 IF VERIFY STATUS SX3 X3-1 ZR X3,GFV7 IF FIRST FILE GFV1 SAFET GFVA,GFVB,,SCST SET AUDIT FET NZ X4,GFV7 IF NO FILE FOR USER GFV2 SB6 WBUF SET FILE BUFFER SB2 WBUF+TCEL SET VSN BUFFER RJ UFA UNPACK FILE AUDIT NZ X4,GFV6 IF END OF AUDIT SA1 GFVH INCREMENT FILE COUNT SX7 X1+B1 SA7 A1 SA1 GFVC COMPARE TO SEQUENCE NUMBER IX7 X1-X7 NG X7,GFV4 IF FILE ALREADY FOUND SA3 GFVE GET PREVIOUS FILE BUFFER ADDRESS SB2 GFVK GET PREVIOUS RANDOM ADDRESS ADDRESS NZ X7,GFV3 IF FILE NOT YET FOUND SA3 GFVD GET FILE BUFFER ADDRESS SB2 GFVJ GET RANDOM ADDRESS ADDRESS GFV3 SA6 B2 SET RANDOM ADDRESS MOVE TCEL,WBUF,X3 SET CATALOG IMAGE IN BUFFER GFV4 SA3 GFVI INCREMENT VSN COUNT SA2 WBUF+/CAT/REELC RJUST X2,X1,/BTC/REELC,/UPB/REELC IX6 X1+X3 LX1 2 SET SIZE OF VSN BUFFERS LX3 2 SB2 B0 MX0 VSKL*6 COMPARE LAST VSN TO EXTERNAL VSN SA2 GFVL SA4 WBUF+TCEL BX2 X2-X4 BX2 X0*X2 NZ X2,GFV5 IF VSNS NOT THE SAME SB2 -4 FLAG MATCHING VSNS SX6 X6-1 DECREMENT VSN COUNT GFV5 SA6 A3 RESET VSN COUNT SA2 X1+WBUF+TCEL-4 RESET LAST VSN BX6 X2 SA6 GFVL SA4 GFVF GET VSN BUFFER ADDRESS IX3 X4+X3 MOVE X1,WBUF+TCEL,X3+B2 SET VSNS IN BUFFER EQ GFV2 CHECK NEXT FILE GFV6 SA1 GFVH ZR X1,GFV7 IF NO FILES SA2 GFVC CHECK IF FILE FOUND IX6 X1-X2 SX4 B0 PL X6,GFV11 IF FILE FOUND SX6 X6+B1 CHECK IF VALID SEQUENCE NUMBER SX4 -B1 NZ X6,GFV11 IF INCORRECT SEQUENCE NUMBER SA3 GFVD SET DEFAULT FILE CATALOG MOVE TCEL,DFIC,X3 SA2 GFVD SET SEQUENCE NUMBER IN CATALOG MOVEBIT GFVC,X2+/CAT/QN,/BTC/QN,/BTC/QN-1,/UPB/QN SX4 B1 EQ GFV11 SET FILE COUNT GFV7 SA1 GFVC CHECK IF VALID SEQUENCE NUMBER SX1 X1-1 SX4 -B1 NZ X1,GFV11 IF INCORRECT SEQUENCE NUMBER LISTVSN GFVB,GFVM,1 LIST VSN ENTRY ZR X4,GFV8 IF VSN FOUND SX4 -2 EQ GFV11 SET FILE COUNT GFV8 SA1 GFVG NZ X1,GFV9 IF NO VERIFY SA1 GFVM+/CAT/VSBF CHECK IF VSN IS BUSY RJUST X1,X1,/BTC/VSBF,/UPB/VSBF SX4 -2 NZ X1,GFV11 IF VSN IS BUSY SA1 GFVM+/CAT/VASF CHECK IF VSN IS ASSIGNED RJUST X1,X1,/BTC/VASF,/UPB/VASF NZ X1,GFV10 IF VSN IS ASSIGNED TO ANOTHER USER SA1 LF NZ X1,GFV9 IF LOCAL FILE MODE SA1 GFVM+/CAT/NVSN CHECK IF IN SCRATCH POOL LJUST X1,X1,/BTC/NVSN,/UPB/NVSN NZ X1,GFV10 IF IN SCRATCH POOL GFV9 SA3 GFVD SET DEFAULT FILE CATALOG MOVE TCEL,DFIC,X3 SA3 GFVF SET ASSIGNED VSN MOVE TSVL,GFVM,X3 SA2 GFVD SET EXTERNAL VSN MOVEBIT GFVM+/CAT/VSN,X2+/CAT/EVSN,/BTC/EVSN,,/UPB/EVSN SA2 GFVD SET INTERNAL VSN MOVEBIT GFVM+/CAT/PRN,X2+/CAT/IVSN,/BTC/IVSN,,/UPB/IVSN SA2 GFVD SET REEL COUNT SA2 X2+/CAT/REELC MOVEBIT (=1),A2,/BTC/REELC,/BTC/REELC-1,/UPB/REELC SX6 B1 SET FILE COUNT SA6 GFVH SA6 GFVI SET VSN COUNT SX4 B1 EQ GFV11 SET FILE COUNT GFV10 MOVEBIT (=0),GFVM+/CAT/VSBF,/BTC/VSBF,,/UPB/VSBF REPVSN GFVM,4 REPLACE VSN ENTRY SX4 -2 EQ GFV11 SET FILE COUNT GFVA BSS 1 USER NAME GFVB BSS 1 VSN GFVC BSS 1 SEQUENCE NUMBER GFVD BSS 1 FILE BUFFER ADDRESS GFVE BSS 1 PREVIOUS FILE BUFFER ADDRESS GFVF BSS 1 VSN BUFFER ADDRESS GFVG BSS 1 NO VERIFY FLAG GFVH BSS 1 FILE COUNT GFVI BSS 1 VSN COUNT GFVJ BSS 1 FILE RANDOM ADDRESS GFVK BSS 1 PREVIOUS FILE RANDOM ADDRESS GFVL BSS 1 LAST VSN GFVM BSS TSVL VSN ENTRY BUFFER GRE SPACE 4,15 ** GRE - GET RECORD ENTRY. * * ENTRY (X1) = ENTRY BUFFER ADDRESS. * (X2) = TAPE CATALOG FET ADDRESS. * FET BUFFER CONTAINS IMAGE OF ONE RECORD * OF TAPE CATALOG FILE. * * EXIT (X6) = 0 IF NO MORE ENTRIES. * CURRENT ENTRY IMAGE IN ENTRY BUFFER. * * USES A - 1, 3. * X - 0, 1, 3, 4. * * MACROS RCREC, READFET, RJUST. GRE SUBR ENTRY/EXIT SX6 X1 SAVE ENTRY BUFFER ADDRESS SA6 GREA GRE1 SA1 X2+B1 CHECK IF FIRST READ OF RECORD SX1 X1 SA3 X2+3 IX3 X3-X1 NZ X3,GRE2 IF NOT FIRST READ READFET X2,GREB,TBHL POSITION PAST BUFFER CONTROL WORD GRE2 SA1 X2+B1 GET ENTRY COUNT SA3 X1 RJUST X3,X6,12,23 RJUST X3,X3,12,23 GET ENTRY LENGTH IX6 X6*X3 SX4 X1+4 CHECK IF ANY ENTRIES LEFT IX4 X4+X6 SA1 X2+3 IX4 X1-X4 PL X4,GRE3 IF NO MORE ENTRIES SA1 GREA GET NEXT ENTRY READFET X2,X1,X3 SX6 B1 FLAG ENTRY FOUND EQ GREX RETURN GRE3 MX0 -24 CHECK NEXT RANDOM ADDRESS SA1 X2+TFRR BX6 -X0*X1 ZR X6,GREX IF NO MORE RECORDS RCREC X2,X6 READ NEXT RECORD EQ GRE1 PROCESS NEXT ENTRY GREA BSS 1 ENTRY BUFFER ADDRESS GREB BSS TBHL BUFFER CONTROL WORD BUFFER LVS SPACE 4,15 ** LVS - LIST VSN ENTRY. * * ENTRY (X1) = VSN. * (B2) = 0 IF NO INTERLOCK OF VSN. * = 1 IF INTERLOCK VSN. * (B6) = VSN BUFFER ADDRESS. * * EXIT (X4) = 0 IF VSN FOUND. * VSN ENTRY IMAGE SET IN BUFFER. * DEFAULT SET IN BUFFER IF NOT FOUND. * * USES A - 1, 2, 3, 4, 6. * X - 1, 2, 3. * * MACROS CALLTFM, MOVE, MOVEBIT, RESETP, WRITFET. LVS SUBR ENTRY/EXIT BX6 X1 SAVE VSN SA6 LVSA SX6 B6 SAVE VSN BUFFER ADDRESS SA6 LVSB SX6 B2 SAVE INTERLOCK STATUS SA6 LVSC MOVE TSVL,DVSC,B6 SET DEFAULT VSN IMAGE SA2 LVSB MOVEBIT LVSA,X2+/CAT/VSN,/BTC/VSN,,/UPB/VSN SA2 LVSB MOVEBIT LVSA,X2+/CAT/PRN,/BTC/PRN,,/UPB/PRN RESETP N1 SET VSN ENTRY IMAGE IN FET SA1 LVSB WRITFET X2,X1,4 SA1 LVSC CHECK INTERLOCK STATUS SX6 LVES SET FUNCTION CODE ZR X1,LVS1 IF NO INTERLOCK SX6 -LVES SET FUNCTION CODE WITH INTERLOCK LVS1 CALLTFM X2,X6 LIST VSN ENTRY SX6 X4 SAVE ERROR CODE SA6 LVSD SA3 LVSB SET VSN ENTRY IMAGE IN BUFFER MOVE TSVL,N1BUF,X3 SA1 LF ZR X1,LVS2 IF NOT LOCAL FILE MODE SA2 LVSB CLEAR VSN BUSY FLAG MOVEBIT (=0),X2+/CAT/VSBF,/BTC/VSBF,,/UPB/VSBF LVS2 SA4 LVSD EQ LVSX RETURN LVSA BSS 1 VSN LVSB BSS 1 VSN ENTRY BUFFER ADDRESS LVSC BSS 1 INTERLOCK STATUS LVSD BSS 1 ERROR CODE MBS SPACE 4,20 ** MBS - MOVE BIT STRING. * * ENTRY (A1) = ADDRESS OF SOURCE STRING. * (A2) = ADDRESS OF DESTINATION STRING. * (B2) = UPPER BIT POSITION OF DESTINATION STRING. * (B3) = UPPER BIT POSITION OF SOURCE STRING. * (B4) = BIT COUNT. * (X1) = FIRST WORD OF SOURCE STRING. * (X2) = FIRST WORD OF DESTINATION STRING. * * EXIT (A1) = ADDRESS OF REMAINDER OF SOURCE STRING. * (A2) = ADDRESS OF REMAINDER OF DESTINATION STRING. * (B2) = UPPER BIT POSITION OF REMAINDER OF DESTINATION * STRING. * (B3) = UPPER BIT POSITION OF REMAINDER OF SOURCE * STRING. * * USES B - 4. * X - 1, 2. * * CALLS SBS. MBS SUBR ENTRY/EXIT MBS1 LE B4,MBSX IF NO MORE BITS TO TRANSFER RJ SBS SET BIT STRING SA6 A2 SET NEW STRING BX2 X6 PL B2,MBS2 IF MORE BITS IN DESTINATION WORD SB2 59 RESET UPPER BIT POSITION SA2 A2+B1 RESET DESTINATION ADDRESS MBS2 PL B3,MBS1 IF MORE BITS IN SOURCE WORD SB3 59 RESET UPPER BIT POSITION SA1 A1+B1 RESET SOURCE ADDRESS EQ MBS1 CHECK BIT COUNT MTO SPACE 4,15 ** MTO - ISSUE MESSAGE TO OUTPUT. * * ENTRY (B2) = 0 IF INFORMATIVE MESSAGE. * = 1 IF ERROR MESSAGE. * (B5) = MESSAGE ADDRESS. * * EXIT MESSAGE ISSUED TO OUTPUT FILE/K-DISPLAY. * * USES A - 1, 2, 6. * B - 2, 7. * X - 1, 2, 6. * * CALLS IRL. * * MACROS CWORDS, MOVE, WLINES. MTO SUBR ENTRY/EXIT SX6 B5 SAVE MESSAGE ADDRESS SA6 MTOA SA2 =10H *INFORM* ZR B2,MTO1 IF INFORMATIVE MESSAGE SX6 B1 SET ERROR FLAG SA6 EF SA6 DM SET DIRECTIVE MESSAGE FLAG SA2 =10H *ERROR* MTO1 BX6 X2 SET START OF MESSAGE IN K-DISPLAY SA6 /KMESS/MESSAGE+0 CWORDS B5,1 COUNT WORDS IN LINE SX6 B0 FLAG END OF K-DISPLAY SA6 B6+/KMESS/MESSAGE+1 SA2 MTOA SET MESSAGE IN K-DISPLAY MOVE B6,X2,/KMESS/MESSAGE+1 SA1 BF CHECK IF *BRIEF* MODE ZR X1,MTO2 IF NOT *BRIEF* MODE SA1 DM CHECK MESSAGE TYPE ZR X1,MTOX IF INFORMATIVE MESSAGE AND *BRIEF* WLINES /KMESS/DIRECT,1 WRITE DIRECTIVE TO OUTPUT MTO2 WLINES /KMESS/MESSAGE,1 WRITE MESSAGE TO OUTPUT SA1 DM CHECK MESSAGE TYPE ZR X1,MTOX IF INFORMATIVE MESSAGE RJ IRL IGNORE REST OF INPUT LINE EQ MTOX RETURN MTOA BSS 1 MESSAGE ADDRESS NPG SPACE 4,15 ** NPG - NEW PAGE HEADER GENERATOR. * * ENTRY (HD) = ADDRESS OF HEADER BUFFER. * (HL) = LENGTH OF HEADER. * (PG) = PAGE NUMBER. * * EXIT PAGE HEADER WRITTEN TO OUTPUT FILE. * * USES A - 1, 2, 6. * B - 7. * X - 0, 1, 2, 6. * * CALLS CDD. * * MACROS CLINES, WRITEW. NPG SUBR ENTRY/EXIT SA1 OS ZR X1,NPGX IF NO OUTPUT FILE PL X1,NPG1 IF TERMINAL OUTPUT SA1 PG RESET PAGE NUMBER SX1 X1+B1 SX6 X1 SA6 A1 RJ CDD CONVERT CONSTANT TO DECIMAL DISPLAY MX0 24 RESET PAGE NUMBER IN HEADER BX6 -X0*X6 SA1 =C*PAGE* BX6 X1+X6 SA6 NPGE CLINES NPGA,NPGAL COUNT LINES IN FIRST PART OF HEADER SX6 B7 SET LINE COUNT SA6 LC SB7 B6 WRITE FIRST PART OF HEADER TO OUTPUT FILE WRITEW L,A1-B6,B7 NPG1 SA1 HD COUNT LINES IN SECOND PART OF HEADER SA2 HL CLINES X1,X2 SA2 LC RESET LINE COUNT SX6 X2+B7 SA6 A2 SB7 B6 WRITE SECOND PART OF HEADER TO OUTPUT FILE WRITEW L,A1-B6,B7 EQ NPGX RETURN NPGA BSS 0 FIRST LINE OF PAGE HEADER DATA H*1 TAPE FILE SUPERVISOR. * NPGB DATA H$*TFSP* FAMILY = $ NPGC DATA H* * NPGD DATA H*YY/MM/DD. HH.MM.SS. * NPGE DATA C*PAGE 1* NPGF BSS 0 SECOND LINE OF PAGE HEADER DUP 9 DATA 10H ENDD NPGG BSS 0 DIRECTIVE IMAGE DATA 30H CON 0 NPGAL EQU *-NPGA LENGTH OF FIRST PART OF HEADER RCR SPACE 4,15 ** RCR - READ CATALOG RECORD. * * ENTRY (X1) = RECORD RANDOM ADDRESS. * (X2) = FET ADDRESS. * (X3) = WORKING BUFFER ADDRESS. * = 0 IF NO WORKING BUFFER. * (B2) .NE. 0 IF SET UTILITY INTERLOCK BEFORE READ. * * EXIT RECORD READ INTO BUFFER. * * USES A - 3, 6. * X - 3, 6. * * CALLS SUI. * * MACROS CALLTFM, READFET, RESETP. RCR SUBR ENTRY/EXIT BX6 X1 SET RANDOM ADDRESS SA6 X2+TFRR SX6 X3 SAVE WORKING BUFFER ADDRESS SA6 RCRA ZR B2,RCR1 IF NO INTERLOCK TO SET RJ SUI SET UTILITY INTERLOCK RCR1 RESETP X2 READ CATALOG RECORD CALLTFM X2,RDRS SA3 RCRA CHECK BUFFER ADDRESS ZR X3,RCRX IF NO WORKING BUFFER READFET X2,X3,100B MOVE TO WORKING BUFFER EQ RCRX RETURN RCRA BSS 1 WORKING BUFFER ADDRESS RDF SPACE 4,20 ** RDF - READ WORDS FROM FET INTO WORKING BUFFER. * * ENTRY (X2) = FET ADDRESS. * (B6) = WORKING BUFFER ADDRESS. * (B7) = NUMBER OF WORDS TO TRANSFER. * * EXIT (X1) = 0 IF TRANSFER COMPLETE. * = (B6) IF (B7).NE.0. * (X2) = FET ADDRESS. * (B6) = LWA+1 OF WORKING BUFFER. * (B7) = NUMBER OF WORDS NOT TRANSFERRED. * * USES A - 1, 3, 7. * X - 3, 6, 7. * * MACROS READW. RDF SUBR ENTRY/EXIT SA1 X2+2 COMPARE *IN* TO *OUT* SA3 A1+B1 IX6 X1-X3 PL X6,RDF1 IF *IN* .GE. *OUT* SA1 X2+B1 GET *FIRST* SX1 X1 SA3 A3+B1 GET *LIMIT* SX3 X3 IX1 X3-X1 GET NUMBER OF WORDS AVAILABLE IN BUFFER IX6 X6+X1 RDF1 SX1 B7 CHECK IF ENOUGH WORDS IN BUFFER IX1 X6-X1 SX7 B0 PL X1,RDF2 IF ENOUGH WORDS IN BUFFER SB7 X6 RESET WORD COUNT BX7 -X1 RDF2 SA7 RDFA SAVE NUMBER OF WORDS NOT TRANSFERRED READW X2,B6,B7 TRANSFER FROM FET BUFFER SA1 RDFA ZR X1,RDFX IF TRANSFER COMPLETE SB7 X1 SET NUMBER OF WORDS NOT TRANSFERRED SX1 B6 SET LWA+1 OF BUFFER EQ RDFX RETURN RDFA BSS 1 NUMBER OF WORDS NOT TRANSFERRED RLV SPACE 4,15 ** RLV - RELEASE BY VSN. * * ENTRY (X1) = USER NAME. * (X2) = VSN. * (X3) = SEQUENCE NUMBER. * * EXIT (X4) = 0 IF RELEASE COMPLETE. * .NE. 0 IF VSN NOT ASSIGNED TO USER. * * USES A - 1, 2, 6. * X - 1, 2, 6. * * CALLS SMB. * * MACROS CALLTFM, MOVEBIT, RESETP. RLV SUBR ENTRY/EXIT BX6 X1 SAVE USER NAME SA6 RLVA BX6 X2 SAVE VSN SA6 RLVB BX6 X3 SA6 RLVC RESETP N3 SET FET FOR RELEASE MOVEBIT RLVA,N3+TFUN,UNKL*6 MOVEBIT RLVB,N3+TFES,VSKL*6 SX6 B0 SA6 N3+TFID MOVEBIT (=0),N3+TFID+1,FIKL*6-60 MOVEBIT RLVC,N3+TFID+1,15,14,14 CALLTFM N3,RTCS RELEASE TAPE CATALOG FILE EQ RLVX RETURN RLVA BSS 1 USER NAME RLVB BSS 1 VSN RLVC BSS 1 SEQUENCE NUMBER RVS SPACE 4,15 ** RVS - REPLACE/ADD VSNS. * * ENTRY (B6) = VSN BUFFER ADDRESS. * (B7) = VSN BUFFER LENGTH. * * EXIT VSN ENTRIES REPLACED/ADDED. * * USES A - 1, 3, 6. * X - 1, 3, 6. * * MACROS CALLTFM, RESETP, WRITFET. RVS SUBR ENTRY/EXIT ZR B7,RVSX IF NO VSNS TO REPLACE SX6 B6 SAVE BUFFER ADDRESS SA6 RVSA SX6 B7 SAVE BUFFER LENGTH SA6 RVSB RESETP N1 SET VSN BUFFER INTO FET BUFFER SA1 RVSA SA3 RVSB WRITFET X2,X1,X3 CALLTFM X2,RVES REPLACE/ADD VSN ENTRIES EQ RVSX RETURN RVSA BSS 1 VSN BUFFER ADDRESS RVSB BSS 1 VSN BUFFER LENGTH SAF SPACE 4,20 ** SAF - SET AUDIT FET. * * ENTRY (X1) = USER NAME. * (X2) = VSN. * (X3) = FIRST TEN CHARACTERS OF FILE IDENTIFIER. * (X4) = LAST SEVEN CHARACTERS OF FILE IDENTIFIER. * (X6) = AUDIT RANDOM ADDRESS. * (B2) = AUDIT TYPE. * * EXIT (X4) = 0 IF NO ERROR IN AUDIT. * (N3 - N3+15B) = AUDIT FET. * * USES A - 1, 6. * X - 1, 6. * * MACROS CALLTFM, MOVEBIT, RESETP. SAF SUBR ENTRY/EXIT SA6 SAFA SAVE RANDOM ADDRESS BX6 X1 SAVE USER NAME SA6 SAFB BX6 X2 SAVE VSN SA6 SAFC BX6 X3 SAVE FILE IDENTIFIER SA6 SAFD BX6 X4 SA6 A6+B1 SX6 B2 SAVE AUDIT TYPE SA6 SAFE RESETP N3 RESET FET POINTERS SA1 SAFA SET AUDIT RANDOM ADDRESS BX6 X1 SA6 N3+TFRR MOVEBIT SAFB,N3+TFUN,UNKL*6 SET USER NAME IN FET MOVEBIT SAFC,N3+TFES,VSKL*6 SET VSN IN FET MOVEBIT SAFD,N3+TFID,FIKL*6 SET FILE ID IN FET MOVEBIT SAFE,N3+TFPW,3,2,2 SET AUDIT TYPE IN FET CALLTFM N3,AUCS ISSUE AUDIT REQUEST EQ SAFX RETURN SAFA BSS 1 AUDIT RANDOM ADDRESS SAFB BSS 1 USER NAME SAFC BSS 1 VSN SAFD BSS 2 FILE IDENTIFIER SAFE BSS 1 AUDIT TYPE SBS SPACE 4,20 ** SBS - SET BIT STRING. * * ENTRY (X1) = SOURCE STRING. * (X2) = DESTINATION STRING. * (B2) = UPPER BIT POSITION OF DESTINATION STRING. * (B3) = UPPER BIT POSITION OF SOURCE STRING. * (B4) = MAXIMUM BIT COUNT. * * EXIT (X6) = NEW STRING. * (B2) = LOWER BIT POSITION - 1 OF DESTINATION STRING. * .LT. 0 IF STRING AT END OF WORD. * (B3) = LOWER BIT POSITION - 1 OF SOURCE STRING. * .LT. 0 IF STRING AT END OF WORD. * (B4) = REMAINING BIT COUNT. * (B6) = NUMBER OF BITS TRANSFERRED. * * USES B - 7. * X - 0, 7. SBS SUBR ENTRY/EXIT SB6 B4-B1 LE B6,B3,SBS1 IF UPPER BIT OF SOURCE .GT. BIT COUNT SB6 B3 SBS1 LE B6,B2,SBS2 IF UPPER BIT OF DESTINATION .GT. COUNT SB6 B2 SBS2 BX6 X2 PRESET DESTINATION IMAGE NG B6,SBS4 IF NO BIT COUNT MX0 1 CREATE MASK AX0 B6 SB7 B3+B1 GET SOURCE STRING LX0 B7 BX6 X0*X1 SB7 B2-B3 GET DESTINATION IMAGE PL B7,SBS3 IF VALID SHIFT COUNT SB7 B7+60 SBS3 LX0 B7 BX0 -X0*X2 LX6 B7 SET NEW IMAGE BX6 X0+X6 SBS4 SB6 B6+B1 SET NUMBER OF BITS SET SB2 B2-B6 RESET UPPER BIT POSITIONS SB3 B3-B6 SB4 B4-B6 RESET BIT COUNT EQ SBSX RETURN SST SPACE 4,20 ** SST - SET SOURCE VALUES IN TABLE. * * ENTRY (B2) = 0 IF K-DISPLAY TABLE. * 1 IF AUDIT TABLE. * 2 IF SOURCE FILE TABLE. * (X1) = DIRECTIVE LEVEL. * * EXIT SOURCE VALUES SET IN TABLE. * * USES A - 1, 2, 6. * B - 2, 3, 4. * X - 0, 1, 2, 6. * * CALLS CXS. * * MACROS MOVEBIT. SST SUBR ENTRY/EXIT SX2 B2 SET LOWER BIT POSITION OF TABLE ADDRESS LX2 59-0 SX6 B0 NG X2,SST1 IF LOWER BIT 0 SX6 30 SST1 SA6 SSTA SX6 B2 SET ADDRESS OF TABLE ADDRESS AX6 1 SX6 CXSA+3+X6 SA6 SSTB SA1 TDTA+X1 GET DIRECTIVE TABLE ADDRESSES SX6 X1+B1 SAVE NEXT ADDRESS SA6 SSTC SST2 SA1 X1 ZR X1,SSTX IF END OF DIRECTIVE TABLES RJ CXS CONVERT CATALOG ENTRY TO SOURCE NG B3,SST4 IF NO DIRECTIVE CONTROL TABLE SA1 CXSA+2 PL X1,SST4 IF NO OUTPUT CONTROL BLOCK SA1 SSTB GET TABLE ADDRESS SA1 X1 SA2 SSTA SB2 X2 AX1 B2 SX2 X1 ZR X2,SST4 IF NO TABLE ADDRESS MX0 -6 GET UPPER BIT POSITION AX1 18 BX6 -X0*X1 SB2 X6 LX1 48 GET CHARACTER COUNT AX1 6+48 SB3 59 PRESET DATA FIELD BIT POSITION SX6 6 IX1 X1*X6 SB4 X1 PRESET BIT COUNT PL X1,SST3 IF CHARACTERS COUNTED FROM LEFT SB4 -B4 RESET BIT COUNT SB3 B4-B1 RESET BIT POSITION SST3 MOVEBIT CBUF+1,X2,B4,B3,B2 MOVE DATA FIELD TO SOURCE FIELD SST4 SA1 SSTC GET DIRECTIVE TABLE ADDRESS SX6 X1+B1 SAVE NEXT ADDRESS SA6 A1 EQ SST2 GET DIRECTIVE TABLE IMAGE SSTA CON 30 LOWER BIT POSITION OF TABLE ADDRESS SSTB CON CXSA+3 ADDRESS OF TABLE ADDRESS SSTC BSS 1 DIRECTIVE TABLE ADDRESS STB SPACE 4,20 ** STB - SEARCH TABLE. * * ENTRY (A1) = TABLE ADDRESS. * (B2) = TABLE LENGTH. * .LT. 0 IF TERMINATED BY A ZERO WORD. * (B3) = ENTRY LENGTH. * (B4) = RELATIVE ADDRESS IN ENTRY. * (X0) = MASK. * (X2) = VALUE TO COMPARE AGAINST. * * EXIT (A1) = ADDRESS OF ENTRY IF FOUND. * (A3) = (A1) + (B4). * (B7) = RELATIVE ADDRESS IN TABLE IF FOUND. * (X1) = FIRST WORD OF ENTRY IF FOUND. * (X3) = ENTRY WORD WITH VALUE. * (X4) .NE. 0 IF ENTRY NOT FOUND. * * USES B - 6. STB1 ZR X1,STBX IF END OF TABLE STB2 BX4 X3-X2 COMPARE ENTRIES BX4 X0*X4 ZR X4,STBX IF ENTRY FOUND SB7 B7+B3 GET NEXT ENTRY IN TABLE SA1 A1+B3 SA3 A3+B3 NG B2,STB1 IF TABLE TERMINATED BY A ZERO WORD SB6 B7-B2 NG B6,STB2 IF NOT END OF TABLE STB SUBR ENTRY/EXIT SA3 A1+B4 POSITION FIRST ENTRY SB7 B4 SX4 B1 PRESET ENTRY NOT FOUND ZR B2,STBX IF NO TABLE PL B2,STB2 IF TABLE LENGTH SPECIFIED EQ STB1 CHECK FOR END OF TABLE TLD SPACE 4,25 ** TLD - TABLE LIST TO DISPLAY PROCESSOR. * * ENTRY (A1) = ADDRESS OF TABLE. * (A2) = ADDRESS OF DISPLAY. * (B3) = TABLE LENGTH. * (B4) = BIT COUNT OF ENTRY. * (B6) = BIT COUNT OF IMAGE BETWEEN ENTRIES. * (X6) = IMAGE BETWEEN ENTRIES, RIGHT JUSTIFIED. * (X7) = NUMBER OF ENTRIES PER DISPLAY LINE. * * EXIT (A1) = LWA+1 OF TABLE. * (A2) = LWA+1 OF DISPLAY. * (X3) = LAST BIT POSITION + 1 OF DISPLAY. * * USES A - 3, 4, 5, 6, 7. * B - 2, 4. * X - 1, 2, 4, 5, 6, 7. * * CALLS FEL, ZTB. * * MACROS MOVEBIT. TLD8 SA3 TLDI SET LAST BIT POSITION + 1 OF DISPLAY TLD SUBR ENTRY/EXIT SA6 TLDA SET *BETWEEN* IMAGE SX6 B6-B1 SET UPPER BIT POSITION OF IMAGE SA6 TLDB SX6 B6+B4 SET BIT COUNT OF IMAGE SA6 TLDC SX6 B3 NG B3,TLD1 IF ZERO-WORD TERMINATED TABLE SX6 A1+B3 TLD1 SA6 TLDD SET LWA+1 OF TABLE SA7 TLDE SET ENTRIES PER DISPLAY LINE SX6 B0 SET ENTRY COUNT SA6 TLDF SX6 B0 PRESET ONE WORD PER ENTRY FLAG SB4 B4-60 NG B4,TLD2 IF ONE WORD PER ENTRY SX6 B1 SET TWO WORDS PER ENTRY FLAG TLD2 SA6 TLDG SX6 A1 SET TABLE ADDRESS SA6 TLDH SX6 59 SET UPPER BIT POSITION OF DISPLAY SA6 TLDI TLD3 SA1 TLDH GET ADDRESS OF TABLE SA3 TLDD GET LWA+1 OF TABLE IX6 X1-X3 SA1 X1 NG X3,TLD4 IF ZERO-WORD TERMINATED PL X6,TLD8 IF END OF TABLE EQ TLD5 SPACE FILL NAME TLD4 ZR X1,TLD8 IF END OF TABLE TLD5 RJ ZTB CONVERT ZEROES TO BLANKS SA6 TLDA+1 SET ENTRY IN IMAGE SA3 TLDG ZR X3,TLD6 IF ONE WORD PER ENTRY SA1 A1+B1 GET REST OF ENTRY RJ ZTB CONVERT ZEROES TO BLANKS SA6 A6+B1 SET REST OF ENTRY IN IMAGE TLD6 SX6 A1+B1 RESET TABLE ADDRESS SA6 TLDH SA3 TLDC GET BIT COUNT OF IMAGE SA4 TLDB GET UPPER BIT POSITION OF IMAGE SA5 TLDI GET UPPER BIT POSITION OF DISPLAY MOVEBIT TLDA,A2,X3,X4,X5 MOVE IMAGE TO DISPLAY SA1 TLDF RESET ENTRY COUNT SX6 X1+B1 SA6 A1 SA1 TLDE COMPARE TO ENTRIES PER LINE IX6 X6-X1 SA2 A2 PRESET DISPLAY ADDRESS NZ X6,TLD7 IF NOT LAST ENTRY ON LINE SA6 A6 SX3 B2 RJ FEL FORCE END OF LINE SB2 59 RESET UPPER BIT POSITION TLD7 SX6 B2 SA6 TLDI EQ TLD3 CHECK FOR END OF TABLE TLDA BSS 3 IMAGE OF ENTRY TLDB BSS 1 UPPER BIT POSITION OF IMAGE TLDC BSS 1 LENGTH OF IMAGE TLDD BSS 1 LWA+1 OF TABLE TLDE BSS 1 ENTRIES PER LINE TLDF BSS 1 ENTRY COUNT TLDG BSS 1 TWO WORD ENTRY FLAG TLDH BSS 1 ADDRESS OF TABLE TLDI BSS 1 UPPER BIT POSITION OF DISPLAY TSL SPACE 4,20 ** TSL - TABLE ENTRIES TO SINGLE ENTRY LIST PROCESSOR. * * ENTRY (X6) = TABLE ADDRESS. * (X7) = LIST ADDRESS. * (B2) = TABLE LENGTH. * .LT. 0 IF ZERO WORD TERMINATED. * (B3) = RELATIVE ADDRESS IN ENTRY. * (B4) = ENTRY LENGTH. * (B5) = BIT COUNT. MUST BE .LE. 120. * * EXIT (X1) = LWA+1 OF TABLE. * * USES A - 1, 2, 3, 4, 6, 7. * X - 2, 3, 4, 6, 7. * * MACROS MOVEBIT. TSL6 SA1 TSLA RETURN LWA+1 OF TABLE TSL SUBR ENTRY/EXIT SA6 TSLA SAVE TABLE ADDRESS SA7 TSLF SAVE LIST ADDRESS SX6 X6+B2 PL B2,TSL1 IF NOT ZERO WORD TERMINATED SX6 B2 TSL1 SA6 TSLB SAVE LWA+1 OF TABLE SX6 B3 SAVE RELATIVE ADDRESS IN ENTRY SA6 TSLC SX6 B4 SAVE ENTRY LENGTH SA6 TSLD SX6 B5 SAVE BIT COUNT SA6 TSLE TSL2 SA1 TSLA GET TABLE ADDRESS SA2 TSLB GET LWA+1 OF TABLE SA3 TSLC GET RELATIVE ADDRESS IN TABLE SA4 TSLD GET ENTRY LENGTH IX6 X1+X3 SET ADDRESS OF ENTRY IX7 X1+X4 SET ADDRESS OF NEXT ENTRY SA1 X1 PL X2,TSL3 IF NOT ZERO WORD TERMINATED ZR X1,TSL6 IF END OF TABLE EQ TSL4 MOVE TABLE ENTRY TO LIST TSL3 IX2 X6-X2 PL X2,TSL6 IF END OF TABLE TSL4 SA3 TSLE GET BIT COUNT SA2 TSLF GET LIST ADDRESS SA7 TSLA RESET TABLE ADDRESS SX7 X2+B1 RESET LIST ADDRESS SX4 X3-61 NG X4,TSL5 IF LESS THAN 60 BITS SX7 X7+B1 TSL5 SA7 A2 RESET LIST ADDRESS MOVEBIT X6,X2,X3 MOVE ENTRY FROM TABLE TO LIST EQ TSL2 CHECK NEXT ENTRY TSLA BSS 1 TABLE ADDRESS TSLB BSS 1 LWA+1 OF TABLE TSLC BSS 1 RELATIVE ADDRESS IN ENTRY TSLD BSS 1 ENTRY LENGTH TSLE BSS 1 BIT COUNT TSLF BSS 1 LIST ADDRESS USA SPACE 4,20 ** USA - USER AUDIT LIST PROCESSOR. * * ENTRY (X1) = 0 IF IGNORE CHARGE NUMBER. * = CHARGE NUMBER. * (X2) = VSN. * = 0 IF AUDIT ALL FILES. * (B2) = 1 IF *AUDIT*. * = 2 IF *SOURCE*. * = 3 IF *MACHINE READABLE.* * = 4 IF *SOURCE* WITHOUT VSNS. * * EXIT FILES PROCESSED FOR USER NAME. * * USES A - 1, 2, 6. * B - 2, 6. * X - 1, 2, 6. * * CALLS FIA, FIS, PMF, PSF, UFA. * * MACROS CLEAR, LJUST, MOVEBIT, RJUST, SAFET. USA8 SX4 B0 PRESET NO ERRORS SA1 UASB NZ X1,USAX IF FILES FOUND SX4 B1 FLAG ERRORS USA SUBR ENTRY/EXIT SX6 B2 SAVE TYPE SA6 USAC BX6 X1 SAVE CHARGE NUMBER SA6 USAA BX6 X2 SAVE VSN SA6 USAD SX6 B0 SET RANDOM ADDRESS TO ZERO SA6 UASB FLAG NO FILES FOUND SB2 FCST ZR X2,USA1 IF NO VSN SB2 SCST USA1 SAFET UN,USAD,,B2 SET FET FOR AUDIT NZ X4,USAX IF NO FILES FOUND USA2 CLEAR TAVS,TAVSL CLEAR VSN BUFFER SB6 FCAT SET BUFFER ADDRESSES SB2 TAVS RJ UFA UNPACK FILE AUDIT NZ X4,USA8 IF AUDIT COMPLETE SA1 TI NZ X1,USA8 IF TERMINAL INTERRUPT SA1 USAA ZR X1,USA3 IF NO CHARGE NUMBER SA2 /ADD/CN COMPARE CHARGE NUMBERS BX1 X1-X2 NZ X1,USA2 IF CHARGE NUMBERS DO NOT MATCH USA3 SX6 B1 FLAG FILE FOUND SA6 UASB SA1 USAC CHECK TYPE SX1 X1-1 NZ X1,USA4 IF NOT AUDIT RJ FIA PROCESS FILE AUDIT EQ USA2 CHECK NEXT FILE USA4 SX1 X1-1 NZ X1,USA6 IF NOT SOURCE SA1 /ADD/QN CHECK SEQUENCE NUMBER RJUST X1,X1,/BTC/QN,/UPB/QN SX6 X1-1 ZR X6,USA5 IF FIRST FILE SA1 /ADD/EVSN COMPARE LAST VSN TO EXTERNAL VSN LJUST X1,X1,/BTC/EVSN,/UPB/EVSN SA2 USAE SX6 B0 BX1 X1-X2 NZ X1,USA5 IF NOT THE SAME VSN SX6 B1 FLAG SKIP FIRST VSN USA5 RJ PSF PROCESS FILE SOURCE SA1 /ADD/REELC SET LAST VSN RJUST X1,X1,/BTC/REELC,/UPB/REELC LX1 2 MOVEBIT X1+TAVS+/CAT/VSN-4,USAE,/BTC/VSN,/UPB/VSN EQ USA2 CHECK NEXT FILE USA6 SX1 X1-1 NZ X1,USA7 IF NOT MACHINE READABLE RJ PMF PROCESS FILE MACHINE READABLE EQ USA2 CHECK NEXT FILE USA7 RJ FIS PROCESS FILE SOURCE LISTING EQ USA2 CHECK NEXT FILE USAA BSS 1 CHARGE NUMBER UASB BSS 1 FILE FOUND FLAG USAC BSS 1 TYPE CODE USAD BSS 1 VSN USAE BSS 1 LAST VSN WCR SPACE 4,15 ** WCR - WRITE CATALOG RECORD. * * ENTRY (X1) = RECORD RANDOM ADDRESS. * (X3) = WORKING BUFFER ADDRESS. * (B2) .NE. 0 IF CLEAR UTILITY INTERLOCK AFTER WRITE. * * EXIT RECORD REWRITTEN FROM BUFFER. * * USES A - 1, 6. * X - 1, 6. * * CALLS CUI. * * MACROS CALLTFM, RESETP, WRITFET. WCR SUBR ENTRY/EXIT SX6 B2 SAVE INTERLOCK STATUS SA6 WCRA SX6 X3 SAVE BUFFER ADDRESS SA6 WCRB BX6 X1 SET RANDOM ADDRESS SA6 X2+TFRR RESETP X2 RESET FET POINTERS SA1 WCRB GET BUFFER ADDRESS WRITFET X2,X1,100B WRITE CATALOG RECORD CALLTFM X2,WRRS SA1 WCRA ZR X1,WCRX IF NOT CLEAR INTERLOCK RJ CUI CLEAR UTILITY INTERLOCK EQ WCRX RETURN WCRA BSS 1 INTERLOCK STATUS WCRB BSS 1 BUFFER ADDRESS WTF SPACE 4,20 ** WTF - WRITE WORDS FROM WORKING BUFFER IN FET. * * ENTRY (X2) = FET ADDRESS. * (B6) = WORKING BUFFER ADDRESS. * (B7) = NUMBER OF WORDS TO TRANSFER. * * EXIT (X1) = 0 IF TRANSFER COMPLETE. * = (B6) IF (B7).NE.0. * (X2) = FET ADDRESS. * (B6) = LWA+1 OF WORKING BUFFER. * (B7) = NUMBER OF WORDS NOT TRANSFERRED. * * USES A - 1, 3, 7. * X - 3, 6, 7. * * MACROS WRITEW. WTF SUBR ENTRY/EXIT SA1 X2+2 COMPARE *IN* TO *OUT* SA3 A1+B1 IX6 X3-X1 SX6 X6-1 PL X6,WTF1 IF *OUT* .GT. *IN* SA1 X2+B1 GET *FIRST* SX1 X1 SA3 A3+B1 GET *LIMIT* SX3 X3 IX1 X3-X1 GET NUMBER OF WORDS AVAILABLE IN BUFFER IX6 X6+X1 WTF1 SX1 B7 CHECK IF ENOUGH WORDS IN BUFFER IX1 X6-X1 SX7 B0 PL X1,WTF2 IF ENOUGH WORDS IN BUFFER SB7 X6 RESET WORD COUNT BX7 -X1 WTF2 SA7 WTFA SAVE NUMBER OF WORDS NOT TRANSFERRED WRITEW X2,B6,B7 TRANSFER TO FET BUFFER SA1 WTFA ZR X1,WTFX IF TRANSFER COMPLETE SB7 X1 SET NUMBER OF WORDS NOT TRANSFERRED SX1 B6 SET LWA+1 OF BUFFER EQ WTFX RETURN WTFA BSS 1 NUMBER OF WORDS NOT TRANSFERRED WTL SPACE 4,15 ** WTL - WRITE LINES TO OUTPUT. * * ENTRY (A1) = BUFFER ADDRESS. * (B2) = 0 IF COUNT BY WORDS. * = 1 IF COUNT BY LINES. * (B6) = WORD COUNT IF (B2) = 0. * (B7) = LINE COUNT IF (B2) = 1. * (X1) = FIRST WORD OF BUFFER. * * EXIT LINES WRITTEN TO OUTPUT FILE. * * USES A - 1, 2, 6. * B - 2, 6. * X - 1, 2, 6. * * MACROS CLINES, CWORDS, NEWPAGE, WRITEW. WTL SUBR ENTRY/EXIT ZR B2,WTL1 IF COUNT BY WORDS CWORDS A1,B7 COUNT NUMBER OF WORDS IN BUFFER EQ WTL2 SAVE BUFFER ADDRESS WTL1 CLINES A1,B6 COUNT NUMBER OF LINES IN BUFFER WTL2 SB2 A1-B6 SAVE BUFFER ADDRESS SX6 B2 SA6 WTLA SX6 B6 SAVE WORD COUNT SA6 WTLB SX6 B7 SAVE LINE COUNT SA6 WTLC SA1 OS ZR X1,WTLX IF NO OUTPUT FILE PL X1,WTL3 IF TERMINAL OUTPUT SA1 LC CHECK LINE COUNT SX1 X1+B7 SX1 X1-MXLP NG X1,WTL3 IF NOT TOO MANY LINES ON PAGE NEWPAGE GENERATE NEW PAGE HEADER WTL3 SA1 WTLC RESET LINE COUNT SA2 LC IX6 X1+X2 SA6 A2 SA1 WTLA GET BUFFER ADDRESS SB6 X1 SA1 WTLB GET WORD COUNT WRITEW L,B6,X1 WRITE TO OUTPUT FILE EQ WTLX RETURN WTLA BSS 1 BUFFER ADDRESS WTLB BSS 1 WORD COUNT WTLC BSS 1 LINE COUNT TITLE MISCELLANEOUS SUBROUTINES. ACI SPACE 4,25 ** ACI - ASSEMBLE CHARACTERS INTERFACE. * * ENTRY (X1) = BIT STRING OF CHARACTERS TO PERMIT. * (X4) = MAXIMUM NUMBER OF CHARACTERS PERMITTED. * (X6) = BIT STRING OF CHARACTER TO SUPPRESS. * * EXIT (CBUF - CBUF+CBUFL) = LEFT JUSTIFIED * ASSEMBLED CHARACTERS. * (X4) = NUMBER OF CHARACTERS. * (B5) = SEPARATOR ( 0 IF END-OF-LINE). * (B6) = 0 IF EOF. * .NE. 0 IF ASSEMBLY COMPLETE. * (ET) = -1 IF EOF. * * USES A - 1, 2, 4, 6, 7. * B - 2, 4. * X - 1, 2, 6, 7. * * CALLS ASC. * * MACROS CLEAR. * * NOTES BASED ON SUBROUTINE *ACI* IN *MODVAL*. ACI SUBR ENTRY/EXIT SA6 ACIC SAVE BIT STRING TO SUPPRESS SX6 X4 SAVE MAXIMUM CHARACTER COUNT SA6 ACIE BX7 X1 SAVE BIT STRING TO PERMIT SX6 B0 CLEAR CHARACTER COUNT SA7 ACIB SA6 ACIA SA6 ACID CLEAR CHARACTER BUFFER INDEX CLEAR CBUF,CBUFL CLEAR CHARACTER BUFFER ACI1 SA2 ACIC CHARACTERS TO BE SUPPRESSED SA1 ACIB CHARACTERS TO BE ALLOWED BX6 X2 RJ ASC ASSEMBLE CHARACTERS SA2 ACID SA6 CBUF+X2 STORE ASSEMBLED CHARACTERS SA1 ACIA SB4 X4-10 IX4 X1+X4 INCREMENT CHARACTER COUNT NG B4,ACIX IF SEPARATOR ENCOUNTERED BX7 X4 SA7 A1 SA4 ACIE RESET MAXIMUM CHARACTER COUNT IX4 X4-X7 BX7 X4 SA7 A4 SX7 X2-CBUFL-1 PL X7,ACI1 IF BUFFER FULL SX7 X2+B1 INCREMENT CHARACTER BUFFER INDEX SA7 A2 EQ ACI1 ASSEMBLE MORE CHARACTERS ACIA BSS 1 CHARACTER COUNT ACIB BSS 1 BIT STRING OF CHARACTERS TO PERMIT ACIC BSS 1 BIT STRING OF CHARACTERS TO SUPPRESS ACID BSS 1 CHARACTER BUFFER INDEX ACIE BSS 1 MAXIMUM CHARACTER COUNT ARV SPACE 4,20 ** ARV - ADD/REVISE VSN ENTRY. * * ENTRY (VCAT) = VSN ENTRY IMAGE. * (VI) = 1, IF VSN BUSY AND ASSIGNED. * 0, IF VSN NOT BUSY OR ASSIGNED. * * EXIT VSN ENTRY ADDED REVISED IN *VBUF*. * (ER) = 0, IF NO ERROR FOUND. * = ERROR MESSAGE ADDRESS, IF ERROR OCCURRED. * (VI) = IF VSN INTERLOCKED, THIS WILL BE CLEARED. * * USES A - 1, 2, 6. * X - 0, 1, 2, 6. * * CALLS RVB, RVE. * * MACROS CALLTFM, MOVE, RESETP, WRITFET. ARV SUBR ENTRY/EXIT SX6 B0 SA6 ER CLEAR ERROR FLAG SA1 VI CHECK FOR VSN INTERLOCKED ZR X1,ARV4 IF VSN NOT INTERLOCKED MX0 36 SET UP MASK SX1 HMVS+UOVS+TVVS+ERVS BX0 X0+X1 SA1 VCAT+VEVS GET CURRENT STATUS SA2 VBUF+VEVS GET BEGINNING STATUS BX1 X0*X1 BX2 X0*X2 BX1 X1-X2 ZR X1,ARV4 IF STATUS NOT CHANGED WRITFET N1,VCAT,TSVL RESETP N1 RESET BUFFER POINTERS CALLTFM X2,-GNSS ZR X4,ARV3 IF NO ERRORS OCCURRED SX1 /EMSG/WSA CHECK FOR *WAIT SCRATCH ASSIGNMENT* IX2 X1-X4 NZ X2,ARV1 IF NOT THIS ERROR SX6 EWSA *NO SCRATCH AVAILABLE* BX6 -X6 SA6 ER EQ ARVX RETURN ARV1 SX1 /EMSG/VBS CHECK FOR ERROR IX2 X1-X4 NZ X2,ARV2 IF NOT THIS ERROR SX6 EVAA *VSN ALREADY ASSIGNED* BX6 -X6 SA6 ER EQ ARVX RETURN ARV2 SX6 IVNP *VSN NOT PROCESSED* SA6 ER EQ ARVX RETURN ARV3 MOVE TSVL,N1BUF,VCAT SX6 B0 SA6 VI CLEAR VSN INTERLOCK ARV4 RJ RVB REPLACE VSN IN BUFFER SA1 LF NZ X1,ARVX IF LOCAL FILE MODE RJ RVE REPLACE VSN ENTRIES EQ ARVX RETURN ASC SPACE 4,30 ** ASC - ASSEMBLE CHARACTERS. * * ENTRY (SP) = STRING BUFFER ADDRESS OF PREVIOUS CHAR. * (SM) = STRING BUFFER LIMIT. * (IF) = INPUT FET ADDRESS. * (X1) = BIT STRING OF CHARACTERS TO PERMIT. * (X4) = MAXIMUM CHARACTER COUNT. * (X6) = BIT STRING OF CHARACTERS TO SUPPRESS. * IF BIT POSITION EQUALING (SPECIAL CHARACTER DISPLAY * CODE - 45B) IS SET, THAT CHARACTER IS SUPPRESSED OR * PERMITTED AS DATA (NOT TREATED AS SEPARATOR). * * EXIT (SP) = UPDATED STRING BUFFER ADDRESS. * (X6) = LEFT -JUSTIFIED ASSEMBLED CHARACTERS. * (X5) = RIGHT-JUSTIFIED ASSEMBLED CHARACTERS. * (X4) = NUMBER OF CHARACTERS * (B5) = SEPARATOR (0 IF END OF LINE). * (B6) = 0 IF EOF. * (ET) = -1 IF EOF. * * USES A - 1, 2, 4, 6, 7. * B - 2, 3, 4, 7. * X - 1, 2, 7. * * CALLS ISB. * * NOTES BASED ON SUBROUTINE *ASC* IN *SFS*. ASC8 SX4 -B4 SET CHARACTER COUNT SX4 X4+10D SX6 B5 SAVE SEPARATOR SA6 EL SX6 B2 RESET STRING POINTER SA6 SP SX6 B0 SB3 B4+B4 ZR X4,ASCX IF NO CHARACTERS SB4 B3+B3 LEFT JUSTIFY CHARACTER STRING SB4 B4+B3 LX6 X5,B4 ASC SUBR ENTRY/EXIT SX4 X4-10 SAVE (10 - MAXIMUM NUMBER OF CHARACTERS) BX7 -X4 SA7 ASCC SX5 B0 PRESET CHARACTER STRING SB4 10 PRESET MAXIMUM CHARACTER COUNT BX7 X1 SB6 B1 PRESET NOT EOF ASC1 SA1 SP SET STRING POINTER SB2 X1 SA1 SM SET MAXIMUM SCAN CHARACTERS SB7 USBB+CAPL CHARACTER ASSEMBLY LIMIT SB3 X1 LE B3,B7,ASC2 IF LINE LENGTH .LE. CHARACTER LIMIT SB3 B7 ASC2 GE B2,B3,ASC7 IF BUFFER EMPTY ASC3 SA4 ASCC CHECK CHARACTER COUNT SB5 X4 GT B4,B5,ASC4 IF LESS THAN MAXIMUM SX6 -B1 FLAG MAXIMUM COUNT SA6 A4 SA4 ="BL" RESET TO SUPPRESS BLANKS BX6 X4 SA6 ASCA SA4 ="NC" RESET TO ALLOW NO SPECIAL CHARACTERS BX7 X4 SA7 A6+B1 ASC4 SB2 B2+B1 CHECK IF END OF BUFFER SB5 B0 GE B2,B3,ASC8 IF END OF STRING BUFFER SA1 B2 GET CHARACTER SB5 X1 SB7 X1-1R+ LT B7,ASC6 IF NOT SPECIAL CHARACTER AX4 X6,B7 CHECK IF SUPPRESSED CHARACTER LX4 59 NG X4,ASC3 IF CHARACTER TO BE SUPPRESSED SA4 CL CHECK FOR COLON CHARACTER AX4 B7 LX4 59 PL X4,ASC5 IF NOT COLON CHARACTER SX1 1R: SET COLON AS CHARACTER SB7 100B-1R+ ASC5 AX4 X7,B7 CHECK IF PERMITTED CHARACTER LX4 59 PL X4,ASC8 IF CHARACTER NOT TO BE PERMITTED ASC6 LX5 6 ADD TO CHARACTER STRING SB4 B4-1 BX5 X5+X1 NZ B4,ASC3 IF MORE CHARACTERS TO ASSEMBLE SB6 B1 EQ ASC8 SET CHARACTER COUNT ASC7 SA6 ASCA SAVE BIT STRINGS SA7 A6+B1 SX6 B4 SAVE CHARACTER COUNT SA6 ASCB RJ ISB INPUT STRING BUFFER SA2 ASCB RESTORE CHARACTER COUNT SA1 ASCA RESTORE BIT STRINGS SB4 X2 BX6 X1 SA1 A1+B1 SX7 X1 NZ B6,ASC1 IF NOT END OF FILE SA1 SP RESET STRING POINTER SB2 X1 SB5 B0 RESET END OF LINE INDICATOR EQ ASC8 SET CHARACTER COUNT ASCA BSS 1 SUPPRESSED CHARACTERS BIT STRING BSS 1 ALLOWED CHARACTERS BIT STRING ASCB BSS 1 HOLD AREA FOR CHARACTER COUNT ASCC BSS 1 10 - MAXIMUM NUMBER OF CHARACTERS AUA SPACE 4,15 ** AUA - ALTERNATE USER AUDIT LIST PROCESSOR. * * ENTRY (ACAT) = IMAGE OF ALTERNATE USER ENTRY. * * EXIT ALTERNATE USER INFORMATION WRITTEN TO OUTPUT FILE. * * USES A - 1. * X - 1. * * CALLS SFN. * * MACROS MOVEBIT, SETSORC, WLINES. AUA SUBR ENTRY/EXIT SA1 /ADD/AUSER SET ALTERNATE USER NAME IN LISTING LJUST X1,X1,/BTC/AUSER,/UPB/AUSER RJ SFN SPACE FILL NAME BX1 X6 MOVEBIT A1,/ALS/AUSER,UNKL*6,,/ALSU/AUSER SETSORC A,LVAU SET SOURCE VALUES IN AUDIT LIST WLINES AUAA,1 WRITE TO OUTPUT FILE EQ AUAX RETURN AUAA BSS 0 AUDIT LISTING LISTER ALS,4 AUSER LISTER ,7 ALTERNATE USER NAME LISTER ,7 AMODE LISTER ,5,WRITE ADMIT MODE LISTER ,8 AACOUNT LISTER ,6,000000 ACCESS COUNT LISTER ,8 AADATE LISTER ,6,YYMMDD ACCESS DATE LISTER ,6 AATIME LISTER ,6,HHMMSS,E ACCESS TIME AUL SPACE 4,10 ** AUL - ALTERNATE USER LEVEL PROCESSOR. * * EXIT PROGRAM SET FOR ALTERNATE USER DIRECTIVES. * * USES A - 1, 2, 6. * X - 1, 2, 6. * * MACROS MOVE, MOVEBIT. AUL SUBR ENTRY/EXIT SX6 LVAU SET ALTERNATE USER LEVEL SA6 LV SA1 UN SET USER NAME IN K-DISPLAY BX6 X1 SA6 /KAUSLS/USER MOVEBIT FI,/KAUSLS/FILE,FIKL*6 SET FILE ID IN K-DISPLAY SA1 AU SET ALTERNATE USER IN K-DISPLAY BX6 X1 SA6 /KAUSLS/AUSER SA1 AF CHECK ADMIT FLAG SA2 AULA PRESET MESSAGE ADDRESS ZR X1,AUL1 IF USER NOT ADMITTED SA2 AULB RESET MESSAGE ADDRESS AUL1 MOVE 3,A2,/KAUSLS/MESS SET ADMIT MESSAGE SA1 AULC RESET LEFT SCREEN POINTER BX6 X1 SA6 /KLEFT/NEXT SA1 AULD RESET RIGHT SCREEN POINTER BX6 X1 SA6 /KRIGHT/NEXT SA1 =H* ALT USER * SET LEVEL IN HELP DISPLAY BX6 X1 SA6 /KRIGHT/LV EQ AULX RETURN AULA DATA 30HUSER NOT CURRENTLY ADMITTED. AULB DATA 30HUSER CURRENTLY IS ADMITTED. AULC KNEXT KAUSLS,NOLAB AULD KNEXT KAUSRS,NOLAB AUS SPACE 4,15 ** AUS - ALTERNATE USER SOURCE LIST PROCESSOR. * * ENTRY (ACAT) = IMAGE OF ALTERNATE USER ENTRY. * * EXIT ALTERNATE USER INFORMATION WRITTEN TO SOURCE FILE. * * USES A - 1. * X - 1. * * CALLS SFN. * * MACROS MOVEBIT, SETSORC, WRITEW. AUS SUBR ENTRY/EXIT SA1 /ADD/AUSER SET ALTERNATE USER NAME IN LIST RJ SFN SPACE FILL NAME BX1 X6 MOVEBIT A1,/SLS/AUSER,UNKL*6,,/SLSU/AUSER SETSORC S,LVAU SET SOURCE VALUES IN SOURCE LISTING WRITEW S,AUSA,AUSAL WRITE TO SOURCE FILE EQ AUSX RETURN AUSA BSS 0 SOURCE LISTING LISTER SLS,6,AUSER= AUSER LISTER ,7 ALTERNATE USER LISTER ,7,(,AMODE=) AMODE LISTER ,5,WRITE,E,CAPL ADMIT MODE LISTER ,8,AACOUNT= AACOUNT LISTER ,6,000000 ACCESS COUNT LISTER ,8,(,AADATE=) AADATE LISTER ,6,YYMMDD ACCESS DATE LISTER ,8,(,AATIME=) AATIME LISTER ,6,HHMMSS ACCESS TIME LISTER ,3,(,GO),E,CAPL AUSAL EQU *-AUSA LENGTH OF SOURCE LISTING CAB SPACE 4,15 ** CAB - CHECK IF ALTERNATE USER ENTRY IN BUFFER. * * ENTRY (AU) = ALTERNATE USER NAME. * * EXIT (X4) = 0 IF ENTRY FOUND. * (A1) = ADDRESS OF ENTRY IN *UBUF*. * * USES B - 2, 3. * X - 0, 1. * * MACROS SRCHTAB. CAB SUBR ENTRY/EXIT SA1 UB+1 GET BUFFER LENGTH SB2 X1 SA1 A1+B1 SB3 X1 SB2 B3-B2 MX0 42 SEARCH BUFFER FOR ALTERNATE USER ENTRY SRCHTAB UBUF,AU,B2,2 EQ CABX RETURN CFC SPACE 4,10 ** CFC - CHECK FOR FILE NAME CONFLICT. * * ENTRY (X2) = ADDRESS OF FET TO CHECK AGAINST. * * EXIT (X4) = 0 IF NO CONFLICT. * = ADDRESS OF CONFLICTING FET. * * USES A - 1, 3, 4. * X - 0, 1, 3. CFC SUBR ENTRY/EXIT MX0 42 CHECK FILE NAME SA1 X2 BX4 X0*X1 ZR X4,CFCX IF NO FILE NAME SA4 CFCA SET TABLE ADDRESS CFC1 ZR X4,CFCX IF END OF TABLE IX3 X2-X4 ZR X3,CFC2 IF SAME FET SA3 X4 CHECK IF CONFLICT BX3 X3-X1 BX3 X0*X3 ZR X3,CFCX IF FILE NAME CONFLICT CFC2 SA4 A4+B1 EQ CFC1 CHECK NEXT FET CFCA BSS 0 TABLE OF FET ADDRESSES CON I INPUT FILE FET CON L OUTPUT FILE FET CON N1 TAPE CATALOG FILE FET CON S SOURCE FILE FET CON SS MACHINE READABLE FILE FET CON 0 END OF TABLE CFI SPACE 4,15 ** CFI - CHECK FILE IDENTIFIER IN OUTPUT. * * ENTRY (A1) = ADDRESS OF FILE ID IN OUTPUT. * (B3) = UPPER BIT POSITION OF FILE ID IN OUTPUT. * (X1) = FIRST WORD OF FILE ID IN OUTPUT. * * EXIT END OF LINE ELIMINATED FROM FILE ID IN OUTPUT. * * USES A - 1, 2, 3, 6, 7. * B - 6. * X - 0, 1, 2, 3, 6, 7. * * MACROS MOVEBIT. CFI2 MX0 -12 CHECK FOR END OF LINE SA1 CFIA SA2 CFIC IX2 X1+X2 SA2 X2 BX1 -X0*X2 NZ X1,CFI3 IF NOT END OF LINE MOVEBIT (=10H),A2,6,5,5 FORCE NO END OF LINE CFI3 MX0 -12 CHECK FOR END OF LINE SA1 CFIA SA2 CFID IX2 X1+X2 SA2 X2 BX1 -X0*X2 NZ X1,CFIX IF NOT END OF LINE MOVEBIT (=10H),A2,6,5,5 FORCE NO END OF LINE CFI SUBR ENTRY/EXIT SX6 A1 SAVE ADDRESS OF FILE ID IN OUTPUT SA6 CFIA SX6 B3 SAVE UPPER BIT POSITION OF FILE ID SA6 CFIB SX6 B1 CHECK FOR POSSIBLE END OF LINES SX7 B1 SB6 B3-6 NG B6,CFI1 IF NO END OF LINE IN FIRST WORD SX6 B0 SB6 B3-42 NG B6,CFI1 IF POSSIBLE END OF LINE IN TWO WORDS SX7 B0 CFI1 SA6 CFIC SET POSSIBLE END OF LINE POSITIONS SA7 CFID MOVEBIT A1,CFIE,FIKL*6,B3 GET FILE ID SA1 CFIE CHECK IF NO FILE ID SA2 A1+B1 BX1 X1+X2 NZ X1,CFI2 IF FILE ID IS PRESENT SA2 CFIA SPACE FILE FILE ID FIELD SA3 CFIB MOVEBIT (=17H),X2,FIKL*6,,X3 EQ CFIX RETURN CFIA BSS 1 ADDRESS OF FILE ID IN OUTPUT CFIB BSS 1 UPPER BIT OF FILE ID IN OUTPUT CFIC BSS 1 POSITION OF END OF LINE IN OUTPUT CFID BSS 1 POSITION OF END OF LINE IN OUTPUT CFIE BSS 2 IMAGE OF FILE ID CFM SPACE 4,10 ** CFM - CHANGE FAMILY. * * ENTRY (X1) = NEW FAMILY NAME. * * EXIT TO *ABT1* IF CHANGE NOT ALLOWED. * * USES A - 1, 6. * X - 1, 5, 6. * * MACROS ABTMSG, ENFAM. CFM SUBR ENTRY/EXIT BX6 X1 SA6 CFMA ENFAM CFMA CHANGE FAMILY SA1 CFMA LX1 59-11 PL X1,CFMX IF CHANGE SUCCESSFUL SA1 CF FORCE NO FAMILY CHANGE BX6 X1 SA6 FM ABTMSG MFNA ABORT *TFSP* CFMA BSS 1 NEW FAMILY NAME CJD SPACE 4,10 ** CJD - CHECK JULIAN DATE. * * ENTRY (X1) = JULIAN DATE LEFT JUSTIFIED. * * EXIT (X4) = 0 IF IN CORRECT FORMAT. * * USES A - 1, 5, 6, 7. * X - 0, 1, 5, 6, 7. * * CALLS DXB. CJD SUBR ENTRY/EXIT MX0 12 GET YEAR BX5 X0*X1 MX0 24 SAVE DAY LX1 12 SX2 1RD LX2 36 BX6 X1+X2 BX6 X0*X6 SA6 CJDA LX2 6 FLAG DECIMAL BX5 X5+X2 RJ DXB CONVERT DISPLAY TO BINARY NZ X4,CJDX IF ERROR MX0 -2 CHECK FOR LEAP YEAR BX0 -X0*X6 SX7 365 NZ X0,CJD1 IF NOT LEAP YEAR SX7 X7+B1 CJD1 SA5 CJDA GET DAY SA7 A5 SAVE NUMBER OF DAYS IN YEAR RJ DXB CONVERT DISPLAY TO BINARY NZ X4,CJDX IF ERROR SA1 CJDA CHECK NUMBER OF DAYS IX1 X1-X6 PL X1,CJDX IF LEGAL NUMBER OF DAYS SX4 B1 FLAG ERROR EQ CJDX RETURN CJDA BSS 1 DAY COUNT CRD SPACE 4,20 ** CRD - CHECK RELEASE DATE. * * IF THE RELEASE DATE WAS SPECIFIED, ISSUE THE CONDITIONAL * RELEASE (*SDCR*) MESSAGE, AND CLEAR THE SYMBOLIC ACCESS FLAGS * FROM ALL CATALOG ENTRIES. * * ENTRY (RS) = 1 IF URDATE SPECIFIED. * * EXIT (RS) = 0. * * USES A - 1, 2, 3, 6. * X - 1, 2, 3, 6. * * CALLS SMB. * * MACROS CALLTFM, GFILEV, ISSMSG, MOVEBIT, RESETP, RJUST, * WRITFET. CRD SUBR ENTRY/EXIT SA1 RS NZ X1,CRD1 IF URDATE SPECIFIED SA1 TAVS+/CAT/URDATE RJUST X1,X1,/BTC/URDATE,/UPB/URDATE ZR X1,CRDX IF NO URDATE SET SX6 B1 EQ CRD2 VERIFY NO CATALOG ENTRIES ARE SYMBOLIC CRD1 SX6 B0 CLEAR URDATE SPECIFIED SA6 A1 SA1 UN SA2 FV SA3 TAVS+/CAT/URDATE RJUST X3,X3,/BTC/URDATE,/UPB/URDATE RJ SMB ISSUE *SDCR* MESSAGE SA1 TAVS+/CAT/URDATE RJUST X1,X1,/BTC/URDATE,/UPB/URDATE ZR X1,CRDX IF URDATE CLEARED SX6 B1 CRD2 SA6 CRDA SAVE SEQUENCE NUMBER GFILEV UN,FV,X6,FCAT,PCAT,TAVS SA1 /ADD/SV RJUST X1,X1,/BTC/SV,/UPB/SV ZR X1,CRD3 IF NOT SYMBOLIC ACCESS SA6 N3+TFRR SET RANDOM ADDRESS MOVEBIT (=0),/ADD/SV,/BTC/SV,,/UPB/SV CLEAR SYMBOLIC ACCESS RESETP N3 WRITFET X2,FCAT,TCEL SX6 RCES REPLACE CATALOG ENTRY CALLTFM X2,X6 CRD3 SA1 /ADD/NCAT RJUST X1,X1,/BTC/NCAT,/UPB/NCAT ZR X1,CRDX IF NO MORE CATALOG ENTRIES SA1 CRDA SX6 X1+B1 EQ CRD2 CLEAR SYMBOLIC ACCESS IN NEXT CATALOG CRDA CON 0 SEQUENCE NUMBER CUI SPACE 4,10 ** CUI - CLEAR UTILITY INTERLOCK. * * EXIT UTILITY INTERLOCK CLEARED ON TAPE CATALOG FILE. * * USES A - 1. * X - 1. * * MACROS CALLTFM, RESETP. CUI SUBR ENTRY/EXIT SA1 LF NZ X1,CUIX IF LOCAL FILE MODE RESETP N1 CLEAR UTILITY INTERLOCK CALLTFM X2,CUAS EQ CUIX RETURN CVB SPACE 4,15 ** CVB - CHECK IF VSN ENTRY IN BUFFER. * * ENTRY (VS) = VSN. * * EXIT (X4) = 0 IF VSN FOUND. * (A1) = ADDRESS OF ENTRY IN *VBUF*. * * USES B - 2, 3. * X - 0, 1. * * MACROS SRCHTAB. CVB SUBR ENTRY/EXIT SA1 VB+1 GET BUFFER LENGTH SB2 X1 SA1 A1+B1 SB3 X1 SB2 B3-B2 MX0 36 SEARCH BUFFER FOR VSN ENTRY SRCHTAB VBUF,VS,B2,4 EQ CVBX RETURN CXS SPACE 4,10 ** CXS - CONVERT CATALOG IMAGE TO SOURCE. * * ENTRY (X1) = IMAGE OF DIRECTIVE TABLE ENTRY. * * EXIT (B2) .LT. 0 IF NO DIRECTIVE CONTROL TABLE. * (CBUF) = IMAGE OF DIRECTIVE WITH EQUAL SIGN. * (CBUF+1 - CBUF+2) = IMAGE OF DATA FIELD. * (CXSA - CXSA+3) = IMAGE OF CONTROL TABLE. * * USES A - 1, 2, 4, 6. * B - 3. * X - 0, 1, 2, 4, 6. * * CALLS CDD, SFN, UDT, ZTB. * * MACROS MOVE, MOVEBIT, SRCHTAB. CXS8 SA1 CXSA+0 GET SUPPRESSED CHARACTERS SA2 X1 AX1 18 GET ALLOWED CHARACTERS SA1 X1 LX1 59-100B+1R+ NG X1,CXS9 IF COLONS ALLOWED LX2 59-1R +1R+ PL X2,CXS9 IF BLANKS NOT SUPPRESSED SA1 CXSB SET FIRST WORD OF DATA FIELD IMAGE RJ ZTB CONVERT ZEROES TO BLANKS SA6 CBUF+1 SA1 CXSB+1 SET SECOND WORD OF DATA FIELD IMAGE RJ ZTB CONVERT ZEROES TO BLANKS SA6 CBUF+2 SB3 B0 FLAG CONTROL TABLE FOUND EQ CXSX RETURN CXS9 SA1 =H* * PRESET DATA FIELD BUFFER BX6 X1 SA6 CBUF+1 SA6 A6+B1 SA4 CXSA+0 GET BIT COUNT OF DATA FIELD LX4 18 AX4 36+18 SX0 6 IX4 X0*X4 MOVEBIT CXSB,CBUF+1,X4 MOVE DATA FIELD TO BUFFER SB3 B0 FLAG CONTROL TABLE FOUND CXS SUBR ENTRY/EXIT SB3 X1 NG B3,CXSX IF NO DIRECTIVE TABLE MX0 42 GET DIRECTIVE IMAGE BX1 X0*X1 RJ SFN SPACE FILL NAME LX6 -6+60 POSITION DIRECTIVE IMAGE SX2 1R=&1R BX6 X6-X2 SA6 CBUF+0 SET DIRECTIVE IMAGE IN BUFFER MOVE 5,B3,CXSA GET DIRECTIVE CONTROL TABLE SX6 B0 CLEAR DATA FIELD BUFFER SA6 CXSB SA6 A6+B1 SA2 CXSA+1 SET CATALOG TABLE ADDRESS SA1 X2 MX0 -12 SET BIT COUNT AX2 36 BX3 -X0*X2 SB4 X3 AX2 12 SET UPPER BITS SB3 X2 MOVEBIT A1,CXSB,B4,B3 MOVE ENTRY TO BUFFER SA1 CXSA+0 SET PROCESSOR ADDRESS AX1 48 SA2 CXSC+X1 SB2 X2 SA2 A1+B1 GET BIT COUNT LX2 12 AX2 36+12 SB3 X2 SA1 CXSB RIGHT JUSTIFY VALUE LX1 B3 JP B2 JUMP TO PROCESSOR * PROCESS OPTION SELECTION (PIOP). CXS1 BX2 X1 SET VALUE TO COMPARE SA1 CXSA+2 SET ADDRESS OF TABLE AX1 18 MX0 60 SET MASK SRCHTAB X1,A2,,2,1 SEARCH FOR OPTION BX6 X1 EQ CXS7 SAVE SOURCE ENTRY * PROCESS BINARY DATA (PIBD). CXS2 RJ CDD CONVERT CONSTANT TO DISPLAY CODE NZ B2,CXS3 IF VALUE NON-ZERO SX6 1R0 SET DATA FIELD OF ZERO SB2 6 CXS3 MX0 1 BUILD DATA FIELD MASK SB3 B2-B1 AX0 B3 LX0 B2 SA1 =H*0000000000* INSERT LEADING ZEROES BX1 -X0*X1 BX6 X0*X6 BX6 X1+X6 EQ CXS7 TRIM EXCESS BLANKS * PROCESS PACKED DATE (PIPD). CXS4 SB3 70 FLAG DATE RJ UDT UNPACK DATE EQ CXS7 SAVE SOURCE ENTRY * PROCESS PACKED TIME (PIPT). CXS5 SB3 100 FLAG TIME RJ UDT UNPACK TIME EQ CXS7 SAVE SOURCE ENTRY * PROCESS SPECIAL CHARACTER BIT STRING (PIBS). CXS6 SX6 B0 PRESET NO CHARACTER ZR X1,CXS7 IF NO CHARACTER NX1,B2 GET CHARACTER CODE SB2 B2-47 SB3 1R+ SX6 B3-B2 LX6 54 CXS7 SA6 CXSB EQ CXS8 SAVE SOURCE ENTRY CXSA BSS 5 CONTROL TABLE IMAGE CXSB BSS 2 DATA FIELD BUFFER CXSC INDTAB 1 TABLE OF PROCESSOR ADDRESSES INDEX PIZF,CON,CXS8 ZERO FILL INDEX PIBF,CON,CXS8 BLANK FILL INDEX PIOP,CON,CXS1 OPTION SELECTION INDEX PIBD,CON,CXS2 BINARY DATA INDEX PIPD,CON,CXS4 PACKED DATE INDEX PIPT,CON,CXS5 PACKED TIME INDEX PIJD,CON,CXS8 JULIAN DATE INDEX PIVQ,CON,CXS8 VSN/SEQUENCE NUMBER INDEX PIVS,CON,CXS8 PADDED VSN INDEX PIBS,CON,CXS6 SPECIAL CHARACTER BIT STRING DDC SPACE 4,15 ** DDC - DECIMAL DIGIT CONVERSION. * * ENTRY (X1) = DISPLAY CODE OF TWO DECIMAL DIGITS IN UPPER 12 * BITS. * (X2) = MINIMUM BINARY VALUE. * (X3) = MAXIMUM BINARY VALUE. * * EXIT (X4) = 0 IF NO CONVERSION ERROR. * (X6) = BINARY VALUE OF DECIMAL DIGITS. * * USES A - 2, 3, 6. * X - 0, 1, 2, 3, 5. * * CALLS DXB. DDC SUBR ENTRY/EXIT BX6 X2 SAVE MINIMUM VALUE SA6 DDCA BX6 X3 SAVE MAXIMUM VALUE SA6 DDCB MX0 12 GET FIRST TWO DIGITS BX1 X0*X1 SX2 1RD FORCE DECIMAL CONVERSION LX2 42 BX5 X1+X2 RJ DXB CONVERT DISPLAY TO BINARY NZ X4,DDCX IF CONVERSION ERROR SA2 DDCA COMPARE TO MINIMUM VALUE IX4 X6-X2 NG X4,DDCX IF LESS THAN MINIMUM SA3 DDCB COMPARE TO MAXIMUM VALUE IX4 X3-X6 NG X4,DDCX IF GREATER THAN MAXIMUM SX4 B0 FLAG NO ERROR EQ DDCX RETURN DDCA BSS 1 MINIMUM VALUE DDCB BSS 1 MAXIMUM VALUE DIP SPACE 4,15 ** DIP - DIRECTIVE INPUT PROCESSOR. * * ENTRY (IF) = INPUT FILE FET ADDRESS. * * EXIT (EF) .NE. 0 IF DIRECTIVE ERROR. * (ET) .LT. 0 IF END OF INPUT FILE. * * USES A - 1, 2, 3, 4, 5, 6, 7. * B - 2, 3, 4, 5, 6, 7. * X - 0, 1, 2, 3, 4, 5, 6, 7. * * CALLS ACI, CJD, DTO, DXB, DXD, DXT, PVS, SCI. * * MACROS ISSMSG, LJUST, MOVE, MOVEBIT, RJM, SRCHTAB. DIP28 SA1 DIPD SET ADDRESS OF DATA FIELD SB6 X1 RJ DTO ISSUE DIRECTIVE TO OUTPUT FILE SA1 DIPA+1 CHECK PROCESSOR ADDRESS AX1 18 SB2 X1 ZR B2,DIPX IF NO PROCESSOR RJM B2 JUMP TO PROCESSOR SA1 SF CHECK IF RESET NEEDED ZR X1,DIPX IF NO RESET NEEDED RJ RNS RESET NEEDED STORAGE DIP SUBR ENTRY/EXIT SX6 B0 CLEAR BUFFER SAVE FLAG SA6 SF SA6 AP CLEAR ALTERNATE PROCESSING FLAG SA1 LV GET TABLE OF DIRECTIVES FOR THIS LEVEL BX6 X1 STORE LEVEL NUMBER SA6 NL SA1 TDTA+X1 GET PROCESSOR ADDRESS BX6 X1 RJ SCI SCAN FOR CODE IDENTIFIER SX6 B0 CLEAR TERMINAL INTERRUPT FLAG SA6 TI ZR B6,DIPX IF END OF FILE ZR X1,DIP22 IF DIRECTIVE NOT FOUND SA1 AP CHECK IF ALTERNATE PROCESSING ZR X1,DIP3 IF DIRECTIVE AT CURRENT LEVEL NG B7,DIP23 IF NOT VALID AT CURRENT LEVEL SA1 B7+2 CHECK IF DIRECTIVE VALID AT CURRENT LEVEL LX1 59-57 NG X1,DIP23 IF NOT VALID AT CURRENT LEVEL LX1 59-58-59+57 CHECK IF DROP REQUIRED NG X1,DIP1 IF IMPLIED DROP REQUIRED SX6 B1 SET STORAGE COPY FLAG SA6 SF RJ SNS SAVE NEEDED STORAGE EQ DIP3 PROCESS DIRECTIVE AT CURRENT LEVEL DIP1 SX6 B7 SAVE EQUIVALENCED DIRECTIVE FLAG SA6 ED SA2 LV GET CURRENT LEVEL SA3 NL GET DESTINATION LEVEL IX6 X2-X3 COMPUTE NUMBER OF LEVELS TO DROP NG X6,DIP23 IF INCORRECT DROP ZR X6,DIP23 IF INCORRECT DROP SA6 DP NUMBER OF DROPS TO PROCESS DIP2 SA1 DIPE+X2 GET DROP PROCESSOR ADDRESS ZR X1,DIP3 IF NO DROP FOR THIS LEVEL RJM X1 EXECUTE DROP FOR THIS LEVEL SA2 LV GET CURRENT LEVEL NUMBER SA3 DP GET DROP COUNTER SX6 X3-1 DECREMENT DROP COUNTER SA4 ED RESET B7 FOR EQUIVALENCED DIRECTIVE SB7 X4 SA6 A3 STORE DROP COUNTER NZ X6,DIP2 IF MORE IMPLIED DROPS DIP3 PL B7,DIP4 IF EQUIVALENCED DIRECTIVE SB6 B0 FLAG NO DATA FIELD RJ DTO ISSUE DIRECTIVE TO OUTPUT FILE SA1 DF+1 SET PROCESSOR ADDRESS BX1 -X1 RJM X1 JUMP TO PROCESSOR SA1 SF CHECK IF RESET NEEDED ZR X1,DIPX IF NO RESET RJ RNS RESET NEEDED STORAGE EQ DIPX RETURN DIP4 SA1 DF+2 CHECK SEPARATOR SB4 X1-1R= NZ B4,DIP25 IF SEPARATOR NOT *=* MOVE 3,B7,DIPA GET DIRECTIVE CONTROL BLOCK SA2 DIPA SET CHARACTERS TO SUPPRESS SA1 X2 BX6 X1 AX2 18 SET CHARACTERS TO ALLOW SA1 X2 SA3 SE DO NOT ALLOW SEPARATOR CHARACTER BX1 -X3*X1 MX0 -6 GET MAXIMUM CHARACTER COUNT AX2 18 BX4 -X0*X2 RJ ACI ASSEMBLE CHARACTERS SX6 B5 SAVE SEPARATOR SA6 DF+2 SX6 -CBUF PRESET DATA FIELD ADDRESS SA6 DIPD MX0 -6 CHECK NUMBER OF CHARACTERS SA1 DIPA AX1 36 SET MAXIMUM NUMBER OF CHARACTERS BX2 -X0*X1 AX1 6 SET MINIMUM NUMBER OF CHARACTERS BX1 -X0*X1 IX1 X4-X1 NG X1,DIP24 IF TOO FEW CHARACTERS IX1 X2-X4 NG X1,DIP24 IF TOO MANY CHARACTERS SB3 X2 SET CHARACTER COUNT FOR *PIBF*, *PIOP* NZ X4,DIP6 IF NOT DEFAULT SB2 B1+B1 SET NUMBER OF WORDS OF DEFAULT DATA FIELD SX1 X2-11 PL X1,DIP5 IF TWO WORDS SB2 B1 SET ONE WORD SX6 B0 CLEAR SECOND WORD OF BUFFER SA6 CBUF+1 DIP5 SA1 DIPA+2 SET DEFAULT VALUE SX2 X1 MOVE B2,X2,CBUF SX4 B3 SET CHARACTER COUNT FOR *PIBF*, *PIOP* DIP6 SA1 DIPA CHECK DATA FIELD TYPE AX1 48 SA1 DIPC+X1 GET INDEX ADDRESS SB2 X1 JP B2 JUMP TO ADDRESS * ZERO FILL (PIZF). DIP7 MOVE 2,CBUF,DIPB DO NOT CHANGE DATA SB6 -2 FLAG LEFT JUSTIFIED EQ DIP20 SET VALUE IN TABLE * BLANK FILL (PIBF). DIP8 SX1 6 SET (X0) = CHARACTER MASK IX4 X4*X1 LJUST X1,X1,X4,59 SA1 =C* * PRESET BLANK FILL BX6 X1 SA6 DIPB SA6 A6+B1 MOVEBIT CBUF,DIPB,X4 MOVE DATA SX6 DIPB RESET DATA FIELD ADDRESS SA6 DIPD SB6 -2 FLAG LEFT JUSTIFIED EQ DIP20 SET VALUE IN TABLE * OPTION SELECTION (PIOP). DIP9 SX1 6 SET (X0) = CHARACTER MASK IX4 X4*X1 LJUST X1,X1,X4,59 SA1 DIPA+2 SET OPTION TABLE ADDRESS AX1 18 SRCHTAB X1,CBUF,,2 SEARCH FOR OPTION NZ X4,DIP24 IF ENTRY NOT FOUND SA4 A1+B1 SAVE VALUE BX6 X4 BX7 X3 SAVE DATA FIELD BX4 X3-X2 ZR X4,DIP10 IF EXACT MATCH SRCHTAB A1+B3,A2,B2,B3,B4 SEARCH REST OF TABLE NZ X4,DIP10 IF NO CONFLICT BX4 X3-X2 NZ X4,DIP24 IF NOT EXACT MATCH SA4 A1+B1 SAVE VALUE BX6 X4 BX7 X3 SAVE DATA FIELD DIP10 SA6 DIPB SA7 CBUF SB6 B1 FLAG RIGHT JUSTIFIED EQ DIP20 SET VALUE IN TABLE * NUMERIC BINARY DATA (PIBD). DIP11 SA5 CBUF SB7 B1 RJ DXB CONVERT DISPLAY CODE TO BINARY NZ X4,DIP24 IF ERROR IN DATA SA1 DIPA+2 GET MAXIMUM VALUE AX1 18 SA2 X1 AX1 18 GET MINIMUM VALUE SA1 X1 IX2 X2-X6 NG X2,DIP24 IF VALUE TOO LARGE IX1 X6-X1 NG X1,DIP24 IF VALUE TOO SMALL SA6 DIPB SB6 B1 FLAG RIGHT JUSTIFIED EQ DIP20 SET VALUE IN TABLE * PACKED DATE (PIPD). DIP12 SA1 CBUF RJ DXD CONVERT DISPLAY CODE TO PACKED DATE NZ X4,DIP24 IF ERROR IN DATA SA6 DIPB SB6 B1 FLAG RIGHT JUSTIFIED EQ DIP20 SET VALUE IN TABLE * PACKED TIME (PIPT). DIP13 SA1 CBUF RJ DXT CONVERT DISPLAY CODE TO PACKED TIME NZ X4,DIP24 IF ERROR IN DATA SA6 DIPB SB6 B1 FLAG RIGHT JUSTIFIED EQ DIP20 SET VALUE IN TABLE * JULIAN DATE (PIJD). DIP14 SA1 CBUF BX6 X1 SA6 DIPB RJ CJD CHECK FOR JULIAN DATE NZ X4,DIP24 IF NOT JULIAN DATE SB6 -2 FLAG LEFT JUSTIFIED EQ DIP20 SET VALUE IN TABLE * VSN/SEQUENCE NUMBER (PIVQ). DIP15 RJ PVS PAD VSN SA6 DIPB SAVE VSN SA1 =C*1* SET SEQUENCE NUMBER DEFAULT BX6 X1 SA6 CBUF SA1 DF+2 CHECK SEPARATOR SX1 X1-1R/ NZ X1,DIP16 IF SEQUENCE NOT SPECIFIED SA1 ="BL" SET SUPPRESSED CHARACTERS BX6 X1 SA1 ="NC" SET ALLOWED CHARACTERS SX4 10 SET MAXIMUM CHARACTERS RJ ACI ASSEMBLE CHARACTERS DIP16 SA1 CBUF SAVE SEQUENCE IMAGE BX6 X1 SA6 DIPB+1 MOVEBIT DIPB,CBUF,VSKL*6 SET DATA FIELD IMAGE MOVEBIT (=C*/*),CBUF,6,,59-VSKL*6 MOVEBIT DIPB+1,CBUF,60,,59-VSKL*6-6 SA5 DIPB+1 GET DISPLAY SEQUENCE NUMBER SB7 B1 RJ DXB CONVERT DISPLAY TO BINARY NZ X4,DIP24 IF CONVERSION ERROR ZR X6,DIP24 IF VALUE .EQ. 0 SX1 X6-10000 PL X1,DIP24 IF VALUE .GT. 9999 SA1 DIPB MERGE VSN AND SEQUENCE NUMBER BX6 X1+X6 SA6 A1 SB6 -2 FLAG LEFT JUSTIFIED EQ DIP20 SET VALUE IN TABLE * PADDED VSN (PIVS). DIP17 RJ PVS PAD VSN SA6 DIPB SA6 CBUF SB6 -2 FLAG LEFT JUSTIFIED EQ DIP20 SET VALUE IN TABLE * SPECIAL CHARACTER BIT STRING (PIBS). DIP18 SA1 CBUF CHECK IF SPECIFIED BX6 X1 ZR X1,DIP19 IF NO CHARACTER LX1 -54+60 GET BIT POSITION SB2 X1-1R+ NG B2,DIP24 IF NOT SPECIAL CHARACTER SX6 B1 POSITION BIT STRING LX6 B2 DIP19 SA6 DIPB SB2 -2 FLAG LEFT JUSTIFIED * EQ DIP20 SET VALUE IN TABLE * SET VALUE IN CATALOG TABLE. DIP20 SA3 DIPA+1 SET CATALOG TABLE ADDRESS SA2 X3 MX0 -12 SET BIT COUNT AX3 36 BX1 -X0*X3 SB4 X1 AX3 12 SET UPPER BIT OF FIELD SB2 X3 SB3 59 NG B6,DIP21 IF LEFT JUSTIFIED SB3 B4-B1 SET UPPER BIT POSITION OF VALUE DIP21 MOVEBIT DIPB,A2,B4,B3,B2 SET VALUE IN TABLE EQ DIP28 ISSUE DIRECTIVE TO OUTPUT FILE DIP22 SB6 B0 FLAG NO DATA FIELD RJ DTO ISSUE DIRECTIVE TO OUTPUT FILE SB5 EILD SET ERROR MESSAGE ADDRESS EQ DIP27 ISSUE MESSAGE DIP23 SB6 B0 FLAG NO DATA FIELD RJ DTO ISSUE DIRECTIVE TO OUTPUT SB5 EDLE SET ERROR MESSAGE ADDRESS EQ DIP27 ISSUE ERROR MESSAGE DIP24 SA1 DIPD SET DATA FIELD ADDRESS SB6 X1 EQ DIP26 ISSUE ERROR MESSAGE DIP25 SB6 B0 FLAG NO DATA FIELD DIP26 RJ DTO ISSUE DIRECTIVE TO OUTPUT FILE SB5 EDFE SET ERROR MESSAGE ADDRESS DIP27 ISSMSG B5,E ISSUE ERROR MESSAGE EQ DIPX RETURN DIPA BSS 3 IMAGE OF DIRECTIVE CONTROL BLOCK DIPB BSS 2 IMAGE OF DATA FIELD VALUE DIPC INDTAB 1 *DIP* PROCESSOR TABLE INDEX PIZF,CON,DIP7 ZERO FILL INDEX PIBF,CON,DIP8 BLANK FILL INDEX PIOP,CON,DIP9 OPTION SELECTION INDEX PIBD,CON,DIP11 NUMERIC BINARY DATA INDEX PIPD,CON,DIP12 PACKED DATE INDEX PIPT,CON,DIP13 PACKED TIME INDEX PIJD,CON,DIP14 JULIAN DATE INDEX PIVQ,CON,DIP15 VSN/SEQUENCE NUMBER INDEX PIVS,CON,DIP17 PADDED VSN INDEX PIBS,CON,DIP18 SPECIAL CHARACTER BIT STRING DIPD BSS 1 DATA FIELD ADDRESS DIPE BSS 0 DROP PROCESSOR TABLE LOC 0 CON 0 FAMILY LEVEL DROP CON /LVVS/DRO VSN LEVEL DROP CON /LVUS/DRO USER LEVEL DROP CON /LVFI/DRO FILE LEVEL DROP CON /LVAU/DRO ALTERNATE USER LEVEL DROP LOC *O CON 0 END OF PROCESSOR ADDRESS DTO SPACE 4,20 ** DTO - ISSUE DIRECTIVE TO OUTPUT FILE. * * ENTRY (DF) = DIRECTIVE LEFT JUSTIFIED. * (B6) = 0 IF NO DATA FIELD. * = ADDRESS OF SPACE FILLED DATA FIELD. * (BF) = BRIEF/NOBRIEF FLAG. * * EXIT DIRECTIVE ISSUED TO OUTPUT FILE. * ((B6) - (B6)+1) SPACE FILLED. * * USES A - 1, 6. * B - 6. * X - 1, 6. * * CALLS SFN. * * MACROS MOVE, MOVEBIT, WLINES. DTO SUBR ENTRY/EXIT SA1 =10H BLANK FILL DATA FIELD BX6 X1 SA6 /KMESS/DIRECT+2 SA6 A6+B1 SA1 DF GET DIRECTIVE RJ SFN SPACE FILL NAME LX6 -6+60 SET DIRECTIVE IN MESSAGE SA6 /KMESS/DIRECT+1 ZR B6,DTO2 IF NO DATA FIELD SX2 2R= &2R SET EQUAL SIGN IN MESSAGE BX6 X6-X2 SA6 A6 PL B6,DTO1 IF ALREADY SPACE FILLED SB6 -B6 GET DATA FIELD ADDRESS SA1 B6 RJ SFN SPACE FILL NAME SA6 B6 SA1 B6+B1 GET SECOND WORD OF DATA FIELD RJ SFN SPACE FILL NAME SA6 B6+B1 DTO1 MOVEBIT B6,/KMESS/DIRECT+1,PNKL*6,,5 MOVE FIELD TO MESSAGE DTO2 SX6 B0 CLEAR MESSAGE BUFFER SA6 /KMESS/MESSAGE SA6 A6+B1 SA1 =10H ********* SET START OF DIRECTIVE MESSAGE BX6 X1 SA6 /KMESS/DIRECT MOVE 3,/KMESS/DIRECT+1,NPGG MOVE DIRECTIVE TO PAGE HEADER SA1 BF CHECK *BRIEF* FLAG NZ X1,DTOX IF *BRIEF* MODE SET WLINES /KMESS/DIRECT,1 WRITE DIRECTIVE TO OUTPUT FILE EQ DTOX RETURN DXD SPACE 4,15 ** DXD - DISPLAY TO PACKED DATE CONVERSION. * * ENTRY (X1) = DISPLAY DATE LEFT JUSTIFIED IN YYMMDD FORMAT. * * EXIT (X4) = 0 IF NO CONVERSION ERROR. * (X6) = PACKED DATE. * * USES A - 1, 3, 6, 7. * X - 0, 1, 2, 3, 7. * * CALLS DDC. DXD SUBR ENTRY/EXIT SX4 B0 CHECK BLANK RELEASE DATE SA3 =C* * BX6 X1-X3 ZR X6,DXDX IF NO RELEASE DATE BX6 X1 SAVE MONTH AND DAY SA6 DXDA SX2 B0 SET MINIMUM VALUE SX3 99 SET MAXIMUM VALUE RJ DDC CONVERT DECIMAL DIGITS NZ X4,DXDX IF CONVERSION ERROR MX0 -2 CHECK FOR LEAP YEAR BX1 -X0*X6 SX7 28 NZ X1,DXD1 IF NOT LEAP YEAR SX7 X7+B1 DXD1 SA7 DXDC+2-1 SET NUMBER OF DAYS IN FEBRUARY SX6 X6-70 PL X6,DXD2 IF BETWEEN 1970 AND 1999 SX6 X6+100 DXD2 SX4 B1 CHECK IF YEAR TOO LARGE SX1 X6-100B PL X1,DXDX IF AFTER 2033 LX6 12 SET PACKED YEAR SA6 DXDB SA1 DXDA GET MONTH LX1 12 SX2 B1 SET MINIMUM NUMBER OF MONTHS/DAYS SX3 12 SET MAXIMUM NUMBER OF MONTHS RJ DDC CONVERT DECIMAL DIGITS NZ X4,DXDX IF CONVERSION ERROR SA3 DXDC+X6-1 GET NUMBER OF DAYS IN MONTH SA1 DXDB SET PACKED MONTH LX6 6 BX6 X1+X6 SA6 A1 SA1 DXDA GET DAY LX1 24 RJ DDC CONVERT DECIMAL DIGITS NZ X4,DXDX IF CONVERSION ERROR SA1 DXDB SET PACKED DAY BX6 X1+X6 EQ DXDX RETURN DXDA BSS 1 DISPLAY DATE DXDB BSS 1 PACKED DATE DXDC BSS 0 DAYS PER MONTH TABLE LOC 1 CON 31 JANUARY CON 28 FEBRUARY * CON 29 (FEBRUARY - LEAP YEAR) CON 31 MARCH CON 30 APRIL CON 31 MAY CON 30 JUNE CON 31 JULY CON 31 AUGUST CON 30 SEPTEMBER CON 31 OCTOBER CON 30 NOVEMBER CON 31 DECEMBER LOC *O DXT SPACE 4,15 ** DXT - DISPLAY TO PACKED TIME CONVERSION. * * ENTRY (X1) = DISPLAY TIME LEFT JUSTIFIED IN HHMMSS FORMAT. * * EXIT (X4) = 0 IF NO CONVERSION ERROR * (X6) = PACKED TIME. * * USES A - 1, 6. * X - 1, 2, 3. * * CALLS DDC. DXT SUBR ENTRY/EXIT BX6 X1 SAVE MINUTES AND SECONDS SA6 DXTA SX2 B0 SET MINIMUM VALUE SX3 23 SET MAXIMUM NUMBER OF HOURS RJ DDC CONVERT DISPLAY DIGITS NZ X4,DXTX IF CONVERSION ERROR LX6 12 SET PACKED HOURS SA6 DXTB SA1 DXTA GET MINUTES LX1 12 SX3 59 SET MAXIMUM NUMBER OF MINUTES/SECONDS RJ DDC CONVERT DISPLAY DIGITS NZ X4,DXTX IF CONVERSION ERROR SA1 DXTB SET PACKED MINUTES LX6 6 BX6 X1+X6 SA6 A1 SA1 DXTA GET SECONDS LX1 24 RJ DDC CONVERT DISPLAY DIGITS NZ X4,DXTX IF CONVERSION ERROR SA1 DXTB SET PACKED SECONDS BX6 X1+X6 EQ DXTX RETURN DXTA BSS 1 DISPLAY TIME DXTB BSS 1 PACKED TIME FAL SPACE 4,10 ** FAL - FAMILY LEVEL PROCESSOR. * * EXIT PROGRAM SET FOR FAMILY LEVEL DIRECTIVES. * * USES A - 1, 6. * X - 1, 6. FAL SUBR ENTRY/EXIT SX6 LVFA SET FAMILY LEVEL SA6 LV SA1 FALA RESET LEFT SCREEN POINTER BX6 X1 SA6 /KLEFT/NEXT SA1 FALB RESET RIGHT SCREEN POINTER BX6 X1 SA6 /KRIGHT/NEXT SA1 =H* FAMILY * SET LEVEL IN HELP DISPLAY BX6 X1 SA6 /KRIGHT/LV EQ FALX RETURN FALA KNEXT KFAMLS,NOLAB FALB KNEXT KFAMRS,NOLAB FEL SPACE 4,15 ** FEL - FORCE END OF LINE. * * ENTRY (A2) = ADDRESS TO START END OF LINE. * (X3) = BIT POSITION TO START END OF LINE. * * EXIT (A2) = ADDRESS OF END OF END OF LINE. * * USES A - 1. * B - 4. * X - 0, 1, 2, 6. * * MACROS MOVEBIT. FEL SUBR ENTRY/EXIT MX0 -12 CHECK BIT POSITION SX1 X3-59 NZ X1,FEL1 IF NOT AT START OF WORD SA1 A2-1 CHECK PREVIOUS WORD BX1 -X0*X1 ZR X1,FELX IF ALREADY AT END OF LINE FEL1 SA2 A2 SB4 X3+B1 PRESET BIT COUNT SX6 X3-6 PL X6,FEL2 IF END OF LINE ON ONLY ONE WORD SB4 B4+60 RESET BIT COUNT FEL2 MOVEBIT FELA,A2,B4,,X3 SET END OF LINE EQ FELX RETURN FELA BSS 2 END OF LINE IMAGE FEV SPACE 4,15 ** FEV - FIND EXTERNAL VSN. * * ENTRY (FCAT) = FILE CATALOG IMAGE. * (TAVS) = ASSIGNED VSN ENTRIES. * * EXIT (X4) = 0 IF VSN FOUND. * (A1) = ADDRESS OF EXTERNAL VSN ENTRY IN *TAVS*. * (X6) = VSN BUFFER SIZE. * * USES A - 2. * X - 0, 2. * * MACROS RJUST, SRCHTAB. FEV SUBR ENTRY/EXIT MX0 VSKL*6 FIND EXTERNAL VSN SA2 /ADD/EVSN SRCHTAB TAVS,A2,TAVSL,4 SA2 /ADD/REELC RJUST X2,X6,/BTC/REELC,/UPB/REELC LX6 2 EQ FEVX RETURN FIA SPACE 4,15 ** FIA - FILE AUDIT LIST PROCESSOR. * * ENTRY (FCAT) = IMAGE OF FILE CATALOG. * (TAVS) = IMAGE OF ASSIGNED VSNS. * * EXIT FILE INFORMATION WRITTEN TO OUTPUT FILE. * * USES A - 1, 6. * B - 2, 3, 7. * X - 1, 6, 7. * * CALLS CDD, FEL, FEV, SFN. * * MACROS CLEAR, DISLIS, LISTAB, MOVEBIT, RJUST, SETSORC, * WWORDS. FIA SUBR ENTRY/EXIT SA1 UN SET USER NAME IN LISTING RJ SFN SPACE FILL NAME BX1 X6 SET USER NAME IN LISTING MOVEBIT A1,/ALS/FUN,UNKL*6,59,/ALSU/FUN SA1 TAVS+/CAT/FVSN SET FIRST VSN IN LISTING MOVEBIT A1,/ALS/VSNF,VSKL*6,,/ALSU/VSNF SA1 /ADD/QN SET SEQUENCE NUMBER IN LISTING RJUST X1,X1,/BTC/QN,/UPB/QN SX1 X1+10000 RJ CDD CONVERT TO DECIMAL DISPLAY BX1 X6 MOVEBIT A1,/ALS/QN,24,23,/ALSU/QN SETSORC A,LVFI SET SOURCE VALUES IN AUDIT LISTING SA1 /ALS/FI CHECK FOR EXTRA END OF LINES SB3 /ALSU/FI RJ CFI CHECK FILE IDENTIFIER IN OUTPUT SA1 /ALS/PI SB3 /ALSU/PI RJ CFI CHECK FILE IDENTIFIER IN OUTPUT MOVE 4,FIAF,FIAD CLEAR RELEASE MESSAGE MX0 -18 SA1 TAVS+/CAT/URDATE SET UNCONDITIONAL RELEASE DATE BX1 -X0*X1 ZR X1,FIA1 IF NO CONDITIONAL RELEASE DATE SA1 TAVS+/CAT/NEWRDT CHECK RELEASE DATE FORMAT LJUST X1,X1,/BTC/NEWRDT,/UPB/NEWRDT NG X1,FIA0.1 IF NEW FORMAT MOVEBIT /ALS/URDATE,/ALS/RDATE,6*6,/ALSU/URDATE,/ALSU/RDATE MOVE 4,FIAE,FIAD SET CONDITIONALLY RELEASE MESSAGE EQ FIA1 CLEAR LIST OF VSNS FIA0.1 MOVE 4,FIAG,FIAD SET UNCONDITIONAL RELEASE MESSAGE FIA1 CLEAR FIAC,60 CLEAR LIST OF VSNS RJ FEV FIND EXTERNAL VSN SB2 X6 GET LIST OF VSNS LISTAB A1,FIAC,B2,,4,VSKL*6 SA1 =4R SET IMAGE BETWEEN VSNS BX6 X1 SX7 12 PRESET NUMBER OF VSN ENTRIES PER LINE SA1 OS NG X1,FIA2 IF MASS STORAGE OUTPUT SX7 6 RESET NUMBER OF VSN ENTRIES PER LINE FIA2 DISLIS FIAC,FIAB,,VSKL*6,24,X7 RJ FEL FORCE END OF LINE SA1 =C* * INSERT BLANK LINE BX6 X1 SA6 A2 SB7 A2-FIAA+1 SET ASSIGNED VSNS LIST LENGTH WWORDS FIAA,B7 WRITE ASSIGNED VSNS LIST EQ FIAX RETURN FIAA BSS 0 AUDIT LISTING LISTER ALS,1 FUN LISTER ,7 USER NAME LISTER ,2 FI LISTER ,17 FILE IDENTIFIER LISTER ,2 SV LISTER ,1 SYMBOLIC ACCESS FLAG LISTER ,2 VSNF LISTER ,6 FIRST VSN LISTER ,2 QN LISTER ,4 SEQUENCE NUMBER LISTER ,1 CE LISTER ,1 ERROR FLAG LISTER ,1 CN LISTER ,10 CHARGE NUMBER LISTER ,1 PN LISTER ,20 PROJECT NUMBER EOL1 LISTER ,2 END OF TERMINAL OUTPUT LINE LISTER ,1 PW LISTER ,7 PASSWORD LISTER ,2 PI LISTER ,17 PHYSICAL IDENTIFIER LISTER ,2 M LISTER ,1 MODE LISTER ,2 CT LISTER ,2 CATEGORY LISTER ,2 AC LISTER ,1 ALTERNATE AUDIT FLAG LISTER ,2 UC LISTER ,10 USER CONTROL WORD LISTER ,1,,E LISTER ,1 CR LISTER ,5 CREATION DATE LISTER ,3 CV LISTER ,2 CONVERSION MODE LISTER ,2 D LISTER ,2 DENSITY LISTER ,3 E LISTER ,2 GENERATION VERSION NUMBER LISTER ,3 F LISTER ,2 FORMAT LISTER ,2 FA LISTER ,1 ACCESSIBILITY CHARACTER LISTER ,3 FC LISTER ,4 MAXIMUM FRAME COUNT LISTER ,3 G LISTER ,4 GENERATION NUMBER LISTER ,2 LB LISTER ,2 LABEL TYPE LISTER ,2 NS LISTER ,2 NOISE SIZE LISTER ,3 RT LISTER ,5 RETENTION DATE LISTER ,3 SN LISTER ,4 SECTION NUMBER LISTER ,4 SI LISTER ,6 SET IDENTIFIER LISTER ,3 EOL2 LISTER ,2 END OF TERMINAL OUTPUT LINE LISTER ,1 ACOUNT LISTER ,8 ACCESS COUNT LISTER ,1 CDATE LISTER ,6 CREATION DATE LISTER ,1 CTIME LISTER ,6 CREATION TIME LISTER ,1 ADATE LISTER ,6 ACCESS DATE LISTER ,1 ATIME LISTER ,6 ACCESS TIME LISTER ,1 MDATE LISTER ,6 MODIFICATION DATE LISTER ,1 MTIME LISTER ,6,,E MODIFICATION TIME FIAD DATA 36L FIAB BSS 0 LISTING OF ASSIGNED VSNS DUP 10 DATA 30H DATA 26L ENDD DATA C* * FIAC BSS 60 LIST OF ASSIGNED VSNS FIAE BSS 0 LISTER ,27,( ** CONDITIONALLY RELEASED ) RDATE LISTER ,6,YYMMDD LISTER ,3,( **),E FIAF DATA 36L FIAG BSS 0 LISTER ,19,( ** TO BE RELEASED ) URDATE LISTER ,6,YYMMDD UNCONDITIONAL RELEASE DATE LISTER ,11,( ** ),E FIL SPACE 4,10 ** FIL - FILE LEVEL PROCESSOR. * * EXIT PROGRAM SET FOR FILE LEVEL DIRECTIVES. * * USES A - 1, 2, 6. * X - 1, 2, 6. * * CALLS RDA. * * MACROS LJUST, MOVE, MOVEBIT, RJUST. FIL SUBR ENTRY/EXIT SX6 B0 CLEAR ALTERNATE USER SA6 AU SX6 LVFI SET FILE LEVEL SA6 LV SA1 UN SET USER NAME IN K-DISPLAY BX6 X1 SA6 /KFILLS1/USER SA6 /KFILLS2/USER SA6 /KFILLS3/USER MOVEBIT FI,/KFILLS1/FILE,FIKL*6 SET FILE ID IN K-DISPLAY MOVEBIT FI,/KFILLS2/FILE,FIKL*6 MOVEBIT FI,/KFILLS3/FILE,FIKL*6 SA1 RF CHECK RESERVED FLAG SA2 FILA PRESET MESSAGE ADDRESS ZR X1,FIL1 IF FILE NOT RESERVED SA2 FILB RESET MESSAGE ADDRESS FIL1 MOVE 3,A2,/KFILLS1/MESS SET RESERVE MESSAGE IN K-DISPLAY MOVE 3,/KFILLS1/MESS,/KFILLS2/MESS MOVE 3,/KFILLS2/MESS,/KFILLS3/MESS SA1 /ADD/D GET FILE DENSITY RJUST X1,X2,/BTC/D,/UPB/D MX0 60 GET DENSITY MNEMONIC SRCHTAB /DOTAB/D,A2,,2,1 MOVEBIT A1,/KDIS/D,2*6,,5 SET MNEMONIC IN K-DISPLAY SA1 FILC RESET LEFT SCREEN POINTER BX6 X1 SA6 /KLEFT/NEXT SA1 FILD RESET RIGHT SCREEN POINTER BX6 X1 SA6 /KRIGHT/NEXT SA1 =H* FILE * SET LEVEL IN HELP DISPLAY BX6 X1 SA6 /KRIGHT/LV SX6 B1 SET FILE LEVEL TOGGLE PAGE SA6 TG SA1 TAVS+/CAT/URDATE CHECK RELEASE DATE RJUST X1,X6,/BTC/URDATE,/UPB/URDATE ZR X6,FILX IF NO RELEASE DATE SA1 TAVS+/CAT/NEWRDT CHECK RELEASE DATE FORMAT LJUST X1,X1,/BTC/NEWRDT,/UPB/NEWRDT NG X1,FILX IF NEW FORMAT SA6 /LVFI/RDAA RJ /LVFI/RDA CONVERT RDATE TO URDATE EQ FILX RETURN FILA DATA 30HFILE NOT CURRENTLY RESERVED. FILB DATA 30HFILE CURRENTLY IS RESERVED. FILC KNEXT KFILLS1,NOLAB FILD KNEXT KFILRS,NOLAB FIS SPACE 4,15 ** FIS - FILE SOURCE LISTING PROCESSOR. * * ENTRY (FCAT) = IMAGE OF FILE CATALOG. * (TAVS) = IMAGE OF ASSIGNED VSNS. * * EXIT FILE INFORMATION WRITTEN TO SOURCE FILE. * * USES A - 1, 2, 3, 6. * B - 2. * X - 1, 2, 3, 6. * * CALLS AUS, CDD, FEL, FEV, SCS. * * MACROS CLEAR, DISLIS, GRENTRY, LISTAB, MOVEBIT, RCREC, RJUST, * SETSORC, WRITEC, WRITEW. FIS7 WRITEC S,(=C*DROP*) WRITE LAST LINE OF ENTRY FIS SUBR ENTRY/EXIT SX6 B0 PRESET ADD ALL VSNS SA6 FISD SA1 /ADD/QN CHECK SEQUENCE NUMBER RJUST X1,X1,/BTC/QN,/UPB/QN SB2 X1-1 NZ B2,FIS2 IF NOT *QN=1* SA2 /ADD/SV CHECK SYMBOLIC ACCESS RJUST X2,X2,/BTC/SV,/UPB/SV ZR X2,FIS1 IF NOT SYMBOLIC ACCESS MOVEBIT FI,FISE,FIKL*6 SAVE VALUE OF (FI) MOVEBIT /ADD/FI,FI,FIKL*6 ADD *FILE* TO SOURCE ENTRY SA1 /DTAB/FILE RJ SCS PROCESS SPECIAL CHARACTER SOURCE ENTRY MOVEBIT FISE,FI,FIKL*6 RESTORE VALUE OF (FI) SX6 FISG FLAG *FILE* DIRECTIVE SA6 FISH MOVE CSPL/10,SCSB,X6 SAVE IMAGE OF DIRECTIVE EQ FIS3 GET SOURCE VALUES FIS1 SX6 B1 RESET TO IGNORE FIRST VSN SA6 FISD FIS2 RJ CDD CONVERT TO DECIMAL DISPLAY BX1 X4 SET SEQUENCE NUMBER IN IDENTIFIER MOVEBIT A1,/SLS/QN,4*6,,/SLSU/QN SA1 TAVS+/CAT/FVSN MOVEBIT A1,/SLS/IDENT,VSKL*6,,/SLSU/IDENT WRITEC S,FISF WRITE FIRST LINE OF SOURCE ENTRY SX6 FISF FLAG *FILEV* DIRECTIVE SA6 FISH FIS3 SA1 TAVS+/CAT/NEWRDT CHECK RELEASE DATE FORMAT LJUST X1,X6,/BTC/NEWRDT,/UPB/NEWRDT SX1 1RU NG X6,FIS3.1 IF NEW FORMAT SX1 1R FIS3.1 MOVEBIT A1,/SLS/NEWRDT,1*6,5,/SLSU/NEWRDT SETSORC S,LVFI SET SOURCE VALUES IN SOURCE LISTING SA1 /DTAB/FI ADD *FI* TO SOURCE ENTRY RJ SCS PROCESS SPECIAL CHARACTER SOURCE ENTRY WRITEW S,FISA,FISAL WRITE FIRST PART OF SOURCE LISTING SA1 /DTAB/PI ADD *PI* TO SOURCE ENTRY RJ SCS PROCESS SPECIAL CHARACTER SOURCE ENTRY SA1 /DTAB/PW ADD *PW* TO SOURCE ENTRY RJ SCS PROCESS SPECIAL CHARACTER SOURCE ENTRY SA1 /DTAB/UC ADD *UC* TO SOURCE ENTRY RJ SCS PROCESS SPECIAL CHARACTER SOURCE ENTRY SA1 /DTAB/SI ADD *SI* TO SOURCE ENTRY RJ SCS PROCESS SPECIAL CHARACTER SOURCE ENTRY CLEAR FISC,60 CLEAR LIST OF VSNS RJ FEV FIND EXTERNAL VSN SA2 FISD ZR X2,FIS4 IF SYMBOLIC ACCESS SA1 A1+TSVL SKIP FIRST VSN SX6 X6-4 FIS4 ZR X6,FIS5 IF NO ASSIGNED VSNS SB2 X6 GET LIST OF VSNS LISTAB A1,FISC,B2,,4,VSKL*6 SA3 =6R,AVSN= SET IMAGE BETWEEN ENTRIES BX6 X3 DISLIS FISC,FISB,,VSKL*6,36,6 SET VSNS IN SOURCE LISTING RJ FEL FORCE END OF LINE SX2 A2-FISB SET LENGTH OF SOURCE LISTING WRITEW S,FISB,X2 WRITE ASSIGNED VSNS TO SOURCE FIS5 WRITEC S,(=C*GO*) WRITE LAST LINE OF SOURCE ENTRY SA1 /ADD/AUCAT CHECK FOR ALTERNATE USERS RJUST X1,X1,/BTC/AUCAT,/UPB/AUCAT ZR X1,FISX IF NO ALTERNATE USERS SA1 FISH WRITE FIRST DIRECTIVE WRITEC S,X1 SA1 /ADD/AUCAT GET ALTERNATE USERS RANDOM ADDRESS RJUST X1,X1,/BTC/AUCAT,/UPB/AUCAT RCREC N4,X1 FIS6 GRENTRY N4,ACAT GET RECORD ENTRY ZR X6,FIS7 IF END OF ENTRIES RJ AUS PROCESS ALTERNATE USER SOURCE LISTING EQ FIS6 GET NEXT ENTRY FISA BSS 0 SOURCE LISTING LISTER SLS,3,(SV=) SV LISTER ,3,NO SYMBOLIC ACCESS STATUS LISTER ,9,(,RECOVER=) RECOVER LISTER ,3,NO RECOVERY STATUS LISTER ,4,(,PN=) PN LISTER ,20,,E,CAPL PROJECT NUMBER LISTER ,3,CN= CN LISTER ,10 CHARGE NUMBER LISTER ,4,(,CT=) CT LISTER ,7,PRIVATE FILE CATEGORY LISTER ,3,(,M=) M LISTER ,5,WRITE FILE MODE LISTER ,4,(,AC=) AC LISTER ,3,NO ALTERNATE AUDIT FLAG LISTER ,4,(,CE=) CE LISTER ,5,CLEAR,E,CAPL ERROR FLAG LISTER ,3,CR= CR LISTER ,5,YYDDD CREATION DATE LISTER ,4,(,CV=) CV LISTER ,2,AS CONVERSION MODE LISTER ,3,(,D=) D LISTER ,2,PE DENSITY LISTER ,3,(,E=) E LISTER ,2,00 GENERATION VERSION NUMBER LISTER ,3,(,F=) F LISTER ,2,I FORMAT LISTER ,4,(,FA=) FA LISTER ,1 ACCESSIBILITY CHARACTER LISTER ,4,(,FC=) FC LISTER ,4,"MXFC" MAXIMUM BLOCK COUNT LISTER ,3,(,G=) G LISTER ,4,0001 GENERATION NUMBER LISTER ,4,(,LB=) LB LISTER ,2,KL LABEL TYPE LISTER ,4,(,NS=) NS LISTER ,2,00,E,CAPL NOISE SIZE LISTER ,3,RT= RT LISTER ,5,YYDDD RETENTION DATE LISTER ,4,(,SN=) SN LISTER ,4,0001 SECTION NUMBER LISTER ,8,(,ACOUNT=) ACOUNT LISTER ,8,00000000 ACCESS COUNT LISTER ,7,(,CDATE=) CDATE LISTER ,6,YYMMDD CREATION DATE LISTER ,7,(,CTIME=) CTIME LISTER ,6,HHMMSS,E,CAPL CREATION TIME LISTER ,6,ADATE= ADATE LISTER ,6,YYMMDD LAST ACCESS DATE LISTER ,7,(,ATIME=) ATIME LISTER ,6,HHMMSS LAST ACCESS TIME LISTER ,7,(,MDATE=) MDATE LISTER ,6,YYMMDD LAST MODIFICATION DATE LISTER ,7,(,MTIME=) MTIME LISTER ,6,HHMMSS,E,CAPL LAST MODIFICATION TIME NEWRDT LISTER ,1,(U) URDATE/RDATE FLAG LISTER ,6,(RDATE=) URDATE LISTER ,6,YYMMDD,E,CAPL RELEASE DATE FISAL EQU *-FISA LENGTH OF SOURCE LISTING FISB BSS 0 ASSIGNED VSNS SOURCE LISTINGS DUP 10 DATA 24H,AVSN= ,AVSN= DATA 24H,AVSN= ,AVSN= DATA 24L,AVSN= ,AVSN= ENDD FISC BSS 60 ASSIGNED VSNS FISD BSS 1 PROCESS FIRST VSN FLAG FISE BSS 2 VALUE OF (FI) FISF BSS 0 FIRST LINE OF *FILEV* ENTRY LISTER SLS,6,FILEV= IDENT LISTER ,6 VSN IDENTIFIER LISTER ,1,/ QN LISTER ,4,,E,CAPL SEQUENCE NUMBER FISG BSS CSPL/10 FIRST LINE OF *FILE* ENTRY CON 0 FISH CON FISF ADDRESS OF FIRST DIRECTIVE FOB SPACE 4,10 ** FOB - FLUSH OUTPUT BUFFER. * * ENTRY (OS) .GT. 0 IF TERMINAL OUTPUT. * * EXIT OUTPUT WRITTEN TO TERMINAL FILE. * * USES A - 1. * X - 1. * * MACROS WRITER. FOB SUBR ENTRY/EXIT SA1 OS ZR X1,FOBX IF NO OUTPUT FILE NG X1,FOBX IF MASS STORAGE OUTPUT FILE WRITER L,R FLUSH OUTPUT BUFFER EQ FOBX RETURN GAE SPACE 4,15 ** GAE - GET ALTERNATE USER ENTRY. * * ENTRY (AU) = ALTERNATE USER NAME. * (CA) = RANDOM ADDRESS OF FILE CATALOG. * * EXIT (X4) .NE. 0 IF ALTERNATE USER NOT IN CATALOG. * (ACAT - ACAT+1) = ALTERNATE USER ENTRY. * * USES A - 1, 6. * X - 1, 2, 6. * * CALLS CAB. * * MACROS CALLTFM, MOVE, MOVEBIT, RESETP, WRITFET. GAE SUBR ENTRY/EXIT RJ CAB CHECK IF ALTERNATE USER IN BUFFER ZR X4,GAE1 IF ALTERNATE USER IN BUFFER MOVEBIT AU,DAUC+/CAT/AUSER,UNKL*6,,/UPB/AUSER MOVE TAEL,DAUC,ACAT SET DEFAULT ALTERNATE USER CATALOG SA1 CA CHECK CATALOG ADDRESS SX4 B1 PRESET ERROR FLAG ZR X1,GAEX IF NO CATALOG ADDRESS BX6 X1 SA6 N4+TFRR RESETP N4 LIST ALTERNATE USER ENTRY WRITFET X2,ACAT,TAEL CALLTFM X2,LAES NZ X4,GAEX IF ALTERNATE USER NOT FOUND SA1 N4BUF GAE1 SX2 A1 GET ALTERNATE USER ENTRY MOVE TAEL,X2,ACAT SX4 B0 EQ GAEX RETURN GUV SPACE 4,15 ** GUV - GET USER INFORMATION FOR VSN. * * ENTRY (VCAT) = VSN ENTRY IMAGE. * * EXIT (X1) = USER NAME. * = 0 IF NOT ASSIGNED. * (FI) = FILE IDENTIFIER. * (UN) = USER NAME. * * USES A - 1, 6. * X - 1, 2, 6. * * MACROS MOVE, MOVEBIT, RCREC, RJUST. GUV2 SA1 UN GET USER NAME GUV SUBR ENTRY/EXIT SA1 /ADD/VASF GET ASSIGNED FILE POINTER RJUST X1,X6,/BTC/VASF,/UPB/VASF ZR X6,GUV1 IF NOT ASSIGNED RCREC N3,X6 GET ASSIGNED FILE CATALOG SA2 /ADD/VASC GET CATALOG NUMBER RJUST X2,X2,/BTC/VASC,/UPB/VASC SX2 X2-1 GET ADDRESS OF FILE CATALOG IN BUFFER SX1 TCEL IX2 X2*X1 SX2 N3BUF+4+X2 MOVE X1,X2,FCAT SET FILE CATALOG IMAGE MOVEBIT N3BUF+3,UN,UNKL*6 SET USER NAME MOVEBIT /ADD/FI,FI,FIKL*6 SET FILE ID EQ GUV2 RETURN WITH USER NAME GUV1 SA6 UN CLEAR USER NAME SA1 =17H CLEAR FILE IDENTIFIER MOVEBIT A1,FI,FIKL*6 EQ GUV2 RETURN WITH USER NAME GVE SPACE 4,15 ** GVE - GET VSN ENTRY. * * ENTRY (VS) = VSN NAME. * (X6) = 0 IF NO INTERLOCK. * = 1 IF INTERLOCK. * * EXIT (X4) = 0 IF VSN IN CATALOG. * (VCAT - VCAT+3) = VSN ENTRY. * * USES A - 1, 6. * B - 2. * X - 1, 6. * * CALLS CVB. * * MACROS LISTVSN, MOVE. GVE1 SX2 A1 GET VSN ENTRY MOVE TSVL,X2,VCAT SX4 B0 GVE SUBR ENTRY/EXIT SA6 GVEA SAVE INTERLOCK STATUS RJ CVB CHECK IF VSN IN BUFFER ZR X4,GVE1 IF VSN IN BUFFER SA1 GVEA LIST VSN SB2 X1 LISTVSN VS,VCAT,B2 EQ GVEX RETURN GVEA CON 4 INTERLOCK STATUS IFP SPACE 4,15 ** IFP - INPUT FILE PROCESSOR. * * ENTRY (IF) = INPUT FILE FET ADDRESS. * * EXIT (KBUF - KBUF+KBUFL) = CODED LINE FROM INPUT FILE. * (X1) = 0 IF NOT EOR/EOF. * (X7) = 0 IF END OF LINE FOUND. * * USES A - 2, 3. * X - 0, 2, 3. * * MACROS READC. IFP SUBR ENTRY/EXIT SA2 IF SA3 OP CHECK INPUT OPTION SX3 X3-ZOPT ZR X3,IFP1 IF *Z* OPTION SA3 X2 CHECK IF NO FILE NAME SX1 -B1 AX3 18 ZR X3,IFPX IF NO FILE NAME IFP1 READC X2,KBUF,KBUFL MX0 -12 CHECK IF END OF LINE FOUND BX7 -X0*X4 EQ IFPX RETURN IRL SPACE 4,10 ** IRL - IGNORE REST OF INPUT LINE. * * EXIT CURRENT INPUT LINE SKIPPED. * * USES A - 1. * X - 1, 4, 6. * * CALLS ACI. IRL SUBR ENTRY/EXIT SA1 EL CHECK FOR END OF LINE ZR X1,IRLX IF END OF INPUT LINE MX1 60 ALLOW ALL CHARACTERS SX6 B0 SUPPRESS NO CHARACTERS SX4 CSPL SET MAXIMUM NUMBER OF CHARACTERS RJ ACI ASSEMBLE CHARACTERS EQ IRLX RETURN ISB SPACE 4,20 ** ISB - INPUT STRING BUFFER. * * ENTRY (IF) = INPUT FET ADDRESS. * * EXIT (SB) = STRING BUFFER ADDRESS. * (SP) = STRING BUFFER CHARACTER POINTER. * (SM) = STRING BUFFER LIMIT. * (B6) = 0 IF EOR OR EOF. * (ET) = -1 IF EOR OR EOF. * * USES A - 1, 2, 6, 7. * B - 2, 6. * X - 1, 2, 6, 7. * * CALLS FOB, IFP, KFI, KIP, TOG, USB. * * MACROS READS, RJM. * * NOTES BASED ON SUBROUTINE *ISB* IN *SFS*. ISB4 SX6 -B1 SET END OF FILE FLAG SA6 ET SB6 B0 ISB SUBR ENTRY/EXIT SA1 OP CHECK OPTION SX1 X1-KOPT NZ X1,ISB1 IF NOT K-DISPLAY SA1 IF CHECK INPUT FET ADDRESS SX1 X1-I NZ X1,ISB1 IF ALTERNATE INPUT FILE RJ KIP PROCESS K-DISPLAY INPUT SX7 B0 EQ ISB2 SET STRING BUFFER POINTERS ISB1 RJ FOB FLUSH OUTPUT BUFFER RJ IFP PROCESS INPUT FILE NZ X1,ISB4 IF EOR OR EOF ISB2 SA7 ISBA SET END OF LINE FOUND FLAG MX0 12 INSURE END OF LINE AFTER 72 CHARACTERS SA1 KBUF+7 BX7 X0*X1 SA7 A1 SB2 KBUF RJ USB UNPACK STRING BUFFER SX6 X6+B1 RESET STRING BUFFER LIMIT SA6 SM SX7 USBB-1 SET STRING BUFFER CHARACTER POINTER SA7 SP SX7 X7+B1 SET STRING BUFFER ADDRESS SA7 SB SA1 X7 CHECK FIRST CHARACTER SX1 X1-1R+ NZ X1,ISB3 IF NOT TOGGLE CHARACTER SA1 LV CHECK DIRECTIVE LEVEL SA1 X1+ISBB ZR X1,ISB3 IF NO TOGGLE PROCESSOR RJM X1 JUMP TO PROCESSOR ISB3 SB6 B1 FLAG NO EOR/EOF SA1 ISBA ZR X1,ISBX IF END OF LINE FOUND RJ IFP PROCESS INPUT FILE SA7 ISBA EQ ISB3 FIND END OF LINE ISBA BSS 1 END OF LINE FLAG ISBB INDTAB 1 TABLE OF TOGGLE PROCESSORS INDEX LVFA,CON,0 FAMILY LEVEL INDEX LVVS,CON,0 VSN LEVEL INDEX LVUS,CON,KFI USER LEVEL INDEX LVFI,CON,TOG FILE LEVEL INDEX LVAU,CON,0 ALTERNATE USER LEVEL IUN SPACE 4,10 ** IUN - INTERLOCK USER NAME. * * ENTRY (X1) = USER NAME TO INTERLOCK. * (X1) = 0 TO CLEAR INTERLOCK. * * EXIT USER NAME INTERLOCK SET. * * USES A - 1, 2, 6. * X - 1, 2, 6. * * MACROS RCREC, WCREC. IUN SUBR ENTRY/EXIT SA2 LF NZ X2,IUNX IF LOCAL FILE MODE BX6 X1 SAVE USER NAME SA6 IUNA RCREC N1,1,REC1,1 CHANGE INTERLOCKED USER NAME SA1 IUNA SA2 REC1+BWUN MX6 -18 BX6 -X6*X2 BX6 X6+X1 MERGE USER NAME SA6 A2 WRITE INTERLOCK WORD WCREC N1,1,REC1,1 EQ IUNX RETURN IUNA BSS 1 INTERLOCKED USER NAME KAV SPACE 4,15 ** KAV - SET ASSIGNED VSNS IN K-DISPLAY. * * ENTRY (FCAT) = FILE CATALOG IMAGE. * (TAVS) = ASSIGNED VSNS IMAGE. * * EXIT VSNS SET IN K-DISPLAY. * * USES A - 1, 6. * B - 2. * X - 1, 6. * * CALLS FEV. * * MACROS CLEAR, DISLIS, LISTAB. KAV SUBR ENTRY/EXIT CLEAR KAVA,60 CLEAR LIST OF VSNS RJ FEV FIND EXTERNAL VSN SB2 X6 GET LIST OF VSNS LISTAB A1,KAVA,B2,,4,36 SX6 3R DISPLAY LIST OF VSNS DISLIS KAVA,/KFILLS1/AVSN,TAVSL/4,36,18,6 SA1 RC SET LENGTH OF DISPLAY SX6 6 SX1 X1+5 IX1 X1/X6 SX6 6 IX1 X1*X6 SX6 X1+/KFILLS1/AVSN-/KFILLS1/START SA6 KFILLS1 LENGTH OF DISPLAY EQ KAVX RETURN KAVA BSS TAVSL/4 LIST OF ASSIGNED VSNS KFI SPACE 4,15 ** KFI - SET FILE IDENTIFIERS IN K-DISPLAY. * * ENTRY (AA) = AUDIT RANDOM ADDRESS. * * (AA) = NEW AUDIT RANDOM ADDRESS. * * USES A - 1, 2, 6. * B - 2, 3. * X - 1, 2, 6. * * CALLS CDD, SFN. * * MACROS DISLIS, CLEAR, MOVEBIT, READFET, RJUST, SAFET. KFI SUBR ENTRY/EXIT CLEAR KFIE,KFIEL CLEAR LIST OF FILE IDENTIFIERS SX6 KFIE SET LIST ADDRESS SA6 KFIA KFI1 SAFET UN,,,FCST,AA SET UP FET FOR AUDIT SX6 B0 PRESET NEW AUDIT RANDOM ADDRESS ZR X4,KFI2 IF FILES FOUND SA6 AA CLEAR RANDOM ADDRESS EQ KFI7 LIST FILES KFI2 SA1 N3 CHECK IF AUDIT COMPLETE RJUST X1,X1,1,1 NZ X1,KFI3 IF END OF AUDIT SA1 N3+TFRR RESET RANDOM ADDRESS BX6 X1 KFI3 SA6 AA KFI4 READFET N3,FCAT,TCEL SET CATALOG IMAGE NZ X1,KFI6 IF END OF BUFFER SA1 /ADD/REELC SET VSN ENTRIES RJUST X1,X1,/BTC/REELC,/UPB/REELC LX1 2 READFET X2,TAVS,X1 READFET X2,KFIC,1 SET CATALOG RANDOM ADDRESS SA1 /ADD/SV CHECK IF SYMBOLIC ACCESS RJUST X1,X1,/BTC/SV,/UPB/SV ZR X1,KFI5 IF NOT SYMBOLIC ACCESS SA2 KFIA INCREMENT LIST ADDRESS SX6 X2+2 SA6 A2 MOVEBIT /ADD/FI,X2,FIKL*6,/UPB/FI SET FILE ID IN LIST EQ KFI4 CHECK FOR NEXT FILE KFI5 SA2 KFIA SET FIRST VSN IN LIST MOVEBIT TAVS+/CAT/FVSN,X2,VSKL*6,/UPB/FVSN MOVEBIT (=C*/*),A2,1*6,,B2 SET SLASH IN LIST SA1 /ADD/QN GET SEQUENCE NUMBER RJUST X1,X1,/BTC/QN,/UPB/QN RJ CDD CONVERT TO DECIMAL DISPLAY BX1 X4 RJ SFN SPACE FILL NAME SA6 KFID SA2 KFIA INCREMENT LIST ADDRESS SX6 X2+2 SA6 A2 MOVEBIT KFID,X2,10*6,,17 SET *QN* IN LIST EQ KFI4 CHECK FOR NEXT FILE KFI6 SA1 AA ZR X1,KFI7 IF NO MORE FILES SA2 KFIA CHECK IF BUFFER FULL SX2 X2-KFIE-13*2 NG X2,KFI1 IF BUFFER NOT FULL SA2 KFIA SET DUMMY FILE IDENTIFIERS MOVEBIT (=17H),X2,FIKL*6 MOVEBIT (=17H MORE FILES),A2+B1,FIKL*6 KFI7 SX6 2R SET IMAGE BETWEEN ENTRIES DISLIS KFIE,/KUSELS/FILE,KFIEL,FIKL*6,12,3 SA1 KFIA SET LENGTH OF DISPLAY SX1 X1-KFIE+4 SX6 6 IX1 X1/X6 SX6 6 IX1 X1*X6 SX6 X1+/KUSELS/FILE-/KUSELS/START+6 SA6 KUSELS EQ KFIX GET *TFM* ERROR CODE KFIA BSS 1 LIST ADDRESS KFIC BSS 1 CATALOG RANDOM ADDRESS KFID BSS 1 SEQUENCE NUMBER KFIE BSS 24*2+6 FILE ID LIST BUFFER KFIEL EQU *-KFIE LIST BUFFER LENGTH KFM SPACE 4,10 ** KFM - SET FAMILY LEVEL K-DISPLAY. * * EXIT FAMILY LEVEL K-DISPLAY SET. * * USES A - 1, 2, 6. * X - 1, 2, 6. * * CALLS CDD, SFN. * * MACROS DISLIS, LJUST, MOVEBIT, RJUST. KFM SUBR ENTRY/EXIT SA1 TFMN GET FAMILY NAME LJUST X1,X1,42,59 RJ SFN SPACE FILL NAME SA6 KFMA MOVEBIT KFMA,/KFAMLS/FAMNAME,42,,5 SET FAMILY NAME MOVEBIT KFMA,NPGC,42 SET NAME IN PAGE HEADER MOVEBIT KFMA,/MLS/FAMILY,/MLSC/FAMILY*6,,/MLSU/FAMILY SA1 TLFM GET LINKED FAMILY NAME LJUST X1,X1,42,59 RJ SFN SPACE FILL NAME SA6 KFMA MOVEBIT KFMA,/KFAMLS/LINKFAM,42,,5 SET FAMILY NAME MOVEBIT TIDM,/KFAMLS/MID,2*6,,5 SET MACHINE ID SA1 TSTT SET ERROR STATUS RJUST X1,X6,1,2 SA1 =6HSET NZ X6,KFM1 IF ERROR STATUS SET SA1 =6HCLEAR KFM1 MOVEBIT A1,/KFAMLS/CATERR,6*6,,5 SA1 TSTT SET FOREIGN STATUS RJUST X1,X6,1,13 SA1 =3HYES NZ X6,KFM2 IF FOREIGN STATUS ON SA1 =3HNO KFM2 MOVEBIT A1,/KFAMLS/FOREIGN,3*6,,5 SA1 TSTT SET GLOBAL STATUS RJUST X1,X6,1,12 SA1 =3HYES NZ X6,KFM3 IF GLOBAL STATUS ON SA1 =3HNO KFM3 MOVEBIT A1,/KFAMLS/GLOBAL,3*6,,5 SA1 TCMB SET MESSAGE BUFFER RJ SFN SPACE FILL NAME SA6 KFMB SA1 TCMB+1 GET SECOND WORD RJ SFN SPACE FILL NAME SA6 KFMB+1 SA1 TCMB+2 GET THIRD WORD RJ SFN SPACE FILL NAME SA6 KFMB+2 SA1 TCMB+3 GET FOURTH WORD RJ SFN SPACE FILL NAME SA6 KFMB+3 MOVEBIT KFMB,/KFAMLS/MB,240,,53 MOVE TO K-DISPLAY SA1 TTCS GET CATALOG SIZE RJUST X1,X1,24,35 SA2 =100000000 IX1 X2+X1 RJ CDD CONVERT TO DECIMAL DISPLAY LJUST X6,X1,48,47 SET CATALOG SIZE IN K-DISPLAY MOVEBIT A1,/KFAMLS/SIZE+1,8*6,,23 SA1 TSMC GET *MT/NT* SCRATCH COUNT RJUST X1,X1,24,23 SA2 =100000000 IX1 X1+X2 RJ CDD CONVERT TO DECIMAL DISPLAY LJUST X6,X1,48,47 SET *MT/NT* SCRATCH COUNT IN K-DISPLAY MOVEBIT A1,/KFAMLS/SCM+2,8*6 SA1 TSCC GET *CT* SCRATCH COUNT RJUST X1,X1,24,23 SA2 =100000000 IX1 X1+X2 RJ CDD CONVERT TO DECIMAL DISPLAY LJUST X6,X1,48,47 SET *CT* SCRATCH COUNT IN K-DISPLAY MOVEBIT A1,/KFAMLS/SCC+2,8*6 SA1 TSAC GET *AT* SCRATCH COUNT RJUST X1,X1,24,23 SA2 =100000000 IX1 X1+X2 RJ CDD CONVERT TO DECIMAL DISPLAY LJUST X6,X1,48,47 SET *AT* SCRATCH COUNT IN K-DISPLAY MOVEBIT A1,/KFAMLS/SCA+2,8*6 SX6 1R DISPLAY LIST OF VALIDATED USER NAMES DISLIS TVUN,/KFAMLS/VALIDAT,UNCL,42,,4 SX6 1R DISPLAY LIST PERMITTED ALTERNATE FAMILIES DISLIS TAFM,/KFAMLS/ALTFAM,PAFL,42,,4 EQ KFMX RETURN KFMA BSS 1 SPACE FILLED FAMILY NAME KFMB BSS MBML SPACE FILLED MESSAGE BUFFER KIP SPACE 4,10 ** KIP - KEYBOARD INPUT PROCESSOR. * * ENTRY (KCW) = K-DISPLAY CONTROL WORD. * * EXIT DATA IN *KBUF*. * * USES A - 1, 6. * X - 1, 6. * * MACROS CONSOLE, MOVE, RECALL. * * NOTES BASED ON SUBROUTINE *KIP* IN *SFS*. KIP SUBR ENTRY/EXIT SX6 B0 CLEAR K-DISPLAY INPUT BUFFER SA6 KBUF MOVE 3,KIPA,/KMESS/STATUS MOVE MESSAGE TO K-DISPLAY CONSOLE KCW KIP1 SA1 KBUF CHECK K-DISPLAY INPUT NZ X1,KIP2 IF INPUT PRESENT RECALL EQ KIP1 KIP2 MOVE 3,KIPB,/KMESS/STATUS MOVE MESSAGE TO K-DISPLAY EQ KIPX RETURN KIPA DATA 28L WAITING FOR INPUT. KIPB DATA 28L PROCESSING DIRECTIVES. KST SPACE 4,10 ** KST - SET VSN STATUS IN K-DISPLAY. * * ENTRY (VCAT) = VSN CATALOG. * * EXIT VSN STATUS SET INTO K-DISPLAY. * * USES A - 1. * X - 1. * * MACROS RJUST. KST3 MOVEBIT A1,/KDIS/STATUS,10*6,59,5 KST SUBR ENTRY/EXIT SA1 /ADD/ERRFLAG CHECK ERROR FLAG RJUST X1,X1,/BTC/ERRFLAG,/UPB/ERRFLAG ZR X1,KST1 IF ERROR FLAG NOT SET SA1 =10HERROR EQ KST3 SET VSN STATUS IN K-DISPLAY KST1 SA1 /ADD/MAINT CHECK MAINTENANCE FLAG RJUST X1,X1,/BTC/MAINT,/UPB/MAINT ZR X1,KST2 IF MAINTENANCE FLAG NOT SET SA1 =10HHOLD EQ KST3 SET VSN STATUS IN K-DISPLAY KST2 SA1 =10HAVAILABLE EQ KST3 SET VSN STATUS IN K-DISPLAY KVQ SPACE 4,15 ** KVQ - SET FIRST VSN AND SEQUENCE NUMBER IN K-DISPLAY. * * ENTRY (FV) = FIRST VSN. * (QN) = SEQUENCE NUMBER. * * EXIT FIRST VSN AND SEQUENCE SET INTO K-DISPLAY. * * USES A - 1, 6. * X - 0, 1, 6. * * CALLS CDD, SFN. KVQ SUBR ENTRY/EXIT SA1 FV GET FIRST VSN RJ SFN SPACE FILL NAME MX0 36 SET SPACE FILLED FIRST VSN BX6 X0*X6 SA6 /KFILLS1/FVSN SA6 /KFILLS2/FVSN SA6 /KFILLS3/FVSN SA1 QN GET SEQUENCE NUMBER SX1 X1+10000 RJ CDD CONVERT TO DECIMAL DISPLAY MX0 -24 BX6 -X0*X6 SET DISPLAY VALUE LX6 36 SA6 /KFILLS1/QN SA6 /KFILLS2/QN SA6 /KFILLS3/QN EQ KVQX RETURN MSV SPACE 4,10 ** MSV - MOVE SYSTEM TABLE VALUES TO/FROM WORKING BUFFER. * * ENTRY (X3) = ADDRESS FROM WHICH TO MOVE VALUES. * (X4) = ADDRESS TO WHICH TO MOVE VALUES. * * EXIT TABLE VALUES MOVED. * * MACROS MOVEBIT. MSV SUBR ENTRY/EXIT MOVEBIT X3+TMFM,X4+TMFM,7*6 MOVE FAMILY NAME MOVEBIT X3+TMFM,X4+TMFM,18,17,17 STATUS FLAGS MOVEBIT X3+TMID,X4+TMID,2*6 MACHINE ID MOVEBIT X3+TMMB,X4+TMMB,MBML*60 MESSAGE BUFFER MOVEBIT X3+TMUN,X4+TMUN,UNCL*60 VALID USERNAME MOVEBIT X3+TMLF,X4+TMLF,7*6 LINKED FAMILY NAME MOVEBIT X3+TMPA,X4+TMPA,PAFL*60 PERMITTED FAMILIES EQ MSVX RETURN PFC SPACE 4,15 ** PFC - PACK DIRECT CELLS INTO FILE CATALOG. * * ENTRY (CA) = CATALOG RANDOM ADDRESS. * (EV) = EXTERNAL VSN. * (QN) = SEQUENCE NUMBER. * (RC) = REEL COUNT. * (RF) = 0 IF FILE NOT RESERVED. * (VC) = VSN COUNT. * * EXIT VALUES SET INTO FILE CATALOG. * * USES A - 1, 3. * X - 0, 1, 3. * * MACROS MOVEBIT, SRCHTAB. PFC SUBR ENTRY/EXIT MOVEBIT CA,PCAT+/CAT/NCAT,/BTC/NCAT,/BTC/NCAT-1,/UPB/NCAT MOVEBIT QN,/ADD/QN,/BTC/QN,/BTC/QN-1,/UPB/QN MOVEBIT RC,/ADD/REELC,/BTC/REELC,/BTC/REELC-1,/UPB/REELC MOVEBIT EV,/ADD/EVSN,/BTC/EVSN,,/UPB/EVSN MX0 VSKL*6 FIND INTERNAL VSN SA3 VC LX3 2 SRCHTAB TAVS,EV,VSKL*6,4 MOVEBIT A1+/CAT/PRN,/ADD/IVSN,/BTC/IVSN,,/UPB/IVSN EQ PFCX RETURN PMF SPACE 4,15 ** PMF - PROCESS MACHINE READABLE LIST FOR FILE. * * ENTRY (FCAT) = FILE CATALOG IMAGE. * (TAVS) = ASSIGNED VSNS IMAGE. * * EXIT FILE INFORMATION WRITTEN TO MACHINE READABLE FILE. * * USES A - 1, 2, 6. * X - 1, 2, 6. * * CALLS FEV, VSM. * * MACROS MOVE, RJUST. PMF SUBR ENTRY/EXIT SX6 B0 CLEAR VSN COUNT SA6 PMFA RJ FEV FIND EXTERNAL VSN SX6 A1 SAVE RELATIVE ADDRESS IN *TAVS* SA6 PMFB PMF1 SA2 PMFA CHECK VSN COUNT SA1 /ADD/REELC RJUST X1,X1,/BTC/REELC,/UPB/REELC IX1 X2-X1 PL X1,PMFX IF END OF VSNS SX6 X2+B1 RESET VSN COUNT SA6 A2 LX2 2 SET VSN ENTRY SA1 PMFB IX2 X1+X2 MOVE TSVL,X2,VCAT RJ VSM PROCESS VSN MACHINE READABLE LIST EQ PMF1 CHECK NEXT VSN PMFA BSS 1 VSN COUNT PMFB BSS 1 RELATIVE ADDRESS IN *TAVS* PSF SPACE 4,10 ** PSF - PROCESS SOURCE LISTING FOR FILE. * * ENTRY (FCAT) = FILE CATALOG IMAGE. * (TAVS) = ASSIGNED VSNS IMAGE. * (X6) = 0 IF INCLUDE EXTERNAL VSN. * = 1 IF EXCLUDE EXTERNAL VSN. * * EXIT FILE LEVEL DIRECTIVES WRITTEN TO SOURCE FILE. * * USES A - 1, 2, 6. * X - 1, 2, 6. * * CALLS FEV, FIS, VSS. * * MACROS MOVE, RJUST, WRITEC. PSF SUBR ENTRY/EXIT SA6 PSFA SET INITIAL VSN COUNT RJ FEV FIND EXTERNAL VSN SX6 A1 SAVE RELATIVE ADDRESS IN *TAVS* SA6 PSFB PSF1 SA2 PSFA CHECK VSN COUNT SA1 /ADD/REELC RJUST X1,X1,/BTC/REELC,/UPB/REELC IX1 X2-X1 PL X1,PSF2 IF END OF VSNS SX6 X2+B1 RESET VSN COUNT SA6 A2 LX2 2 SET VSN ENTRY SA1 PSFB IX2 X1+X2 MOVE TSVL,X2,VCAT RJ VSS PROCESS VSN SOURCE LISTING EQ PSF1 CHECK FOR NEXT VSN PSF2 SA1 UN SET USER NAME IN SOURCE LISTING BX6 X1 SA6 PSFD WRITEC S,PSFC WRITE *USER* DIRECTIVE RJ FIS PROCESS FILE SOURCE LISTING WRITEC S,(=C*DROP*) WRITE LAST DIRECTIVE EQ PSFX RETURN PSFA BSS 1 VSN COUNT PSFB BSS 1 RELATIVE ADDRESS IN *TAVS* PSFC DATA 10HUSER = INITIAL DIRECTIVE PSFD DATA C* * PVS SPACE 4,15 ** PVS - PAD VSN WITH CHARACTER *0*. * * ENTRY (X4) = NUMBER OF CHARACTERS IN UNPADDED VSN. * (CBUF) = LEFT JUSTIFIED UNPADDED VSN. * * EXIT (X6) = PADDED VSN. CHARACTER *0* INSERTED BEFORE * FIRST NUMERIC CHARACTER UNTIL VSN IS SIX * CHARACTERS LONG. * * USES A - 1, 2. * B - 2, 3. * X - 0, 1, 2, 3, 4, 7. PVS SUBR ENTRY/EXIT SX1 6 GET CORRECT NUMBER OF ZEROS IX4 X1*X4 SB2 X4 SA1 =36R000000 AX1 B2 SA2 CBUF GET UNPADDED VSN SB3 60 MX0 -6 SX6 B0 PVS1 BX7 X2 SAVE END OF VSN LX2 6 CHECK CHARACTER BX3 -X0*X2 ZR X3,PVS2 IF END OF CHARACTERS SX4 X3-1R0 PL X4,PVS2 IF NUMERIC CHARACTER LX6 6 BUILD FIRST PART OF VSN BX6 X6+X3 BX2 X0*X2 SB3 B3-6 EQ PVS1 CHECK NEXT CHARACTER PVS2 SB2 B2-36 ADD ZEROES TO VSN AX6 B2 BX6 X6+X1 BX6 X6+X7 ADD END OF VSN SB3 B3+B2 LX6 B3 EQ PVSX RETURN RAB SPACE 4,15 ** RAB - REPLACE ALTERNATE USER ENTRY IN BUFFER. * * ENTRY (ACAT) = ALTERNATE USER ENTRY IMAGE. * * EXIT IMAGE SET INTO *UBUF*. * * USES X - 3. * * CALLS CAB, RAE. * * MACROS MOVE, WRITFET. RAB2 SX3 A1 REPLACE ALTERNATE USER ENTRY IN BUFFER MOVE TAEL,ACAT,X3 RAB SUBR ENTRY/EXIT RJ CAB CHECK FOR ALTERNATE USER ENTRY IN BUFFER ZR X4,RAB2 IF ALTERNATE USER ENTRY IN BUFFER WRITFET UB,ACAT,TAEL SET ENTRY INTO BUFFER ZR X1,RABX IF TRANSFER COMPLETE RJ RAE REPLACE ALTERNATE USER ENTRIES WRITFET UB,ACAT,TAEL SET ENTRY INTO BUFFER EQ RABX RETURN RAE SPACE 4,10 ** RAE - REPLACE ALTERNATE USER ENTRY IN CATALOG FILE. * * ENTRY (UBUF) = ALTERNATE USER ENTRIES. * * EXIT ALTERNATE USER ENTRIES REPLACED IN CATALOG. * * USES A - 1, 2. * X - 1, 2. * * MACROS CALLTFM, RESETP, WRITFET. RAE SUBR ENTRY/EXIT RESETP N4 RESET FET POINTERS SA1 UB+1 GET WORD COUNT OF BUFFER SX1 X1 SA2 A1+B1 IX1 X2-X1 ZR X1,RAEX IF NO ENTRIES IN BUFFER SA2 CA SET CATALOG RANDOM ADDRESS BX6 X2 SA6 N4+TFRR WRITFET N4,UBUF,X1 REPLACE/ADD ADMIT ENTRIES CALLTFM X2,RAES RESETP UB EQ RAEX RETURN RAF SPACE 4,15 ** RAF - RESERVE/AMEND FILE CATALOG ENTRY. * * ENTRY DIRECT CELLS SET. * (FCAT) = FILE CATALOG BUFFER. * (PCAT) = PREVIOUS FILE BUFFER. * (TAVS) = ASSIGNED VSNS. * * EXIT FILE CATALOG ENTRY REPLACED IN CATALOG. * * USES A - 1, 2, 3, 5, 6, 7. * X - 0, 1, 2, 3, 4, 5, 6, 7. * * CALL CRD, PFC, SMA. * * MACROS CALLTFM, REPVSN, RESETP, RJUST, WRITFET. RAF9 SA1 VC REPLACE VSN ENTRIES LX1 2 REPVSN TAVS,X1 RJ SMA ISSUE *SDAU* ACCOUNT FILE MESSAGE SA1 RF NZ X1,RAF10 IF PREVIOUSLY RESERVED SA1 PA ZR X1,RAF10 IF NO PREVIOUS FILE RJ PFC PACK DIRECT CELLS INTO FILE CATALOG RESETP N3 SET UP FET SA1 PA SET PREVIOUS FILE RANDOM ADDRESS BX6 X1 SA6 X2+TFRR WRITFET X2,PCAT,TCEL SET PREVIOUS FILE INTO FET BUFFER CALLTFM X2,RCES REPLACE PREVIOUS FILE RAF10 RJ CRD CHECK RELEASE DATE RAF SUBR ENTRY/EXIT RJ PFC PACK DIRECT CELLS INTO FILE CATALOG SA1 /ADD/TTYP CHECK TAPE DEVICE TYPE RJUST X1,X6,/BTC/TTYP,/UPB/TTYP ZR X6,RAF1 IF SEVEN TRACK SA1 /ADD/CV RJUST X1,X6,/BTC/CV,/UPB/CV SX6 X6-2 PL X6,RAF2 IF CONVERSION MODE EQUAL AS OR EB SX6 B1 RAF1 SX6 X6+B1 SA6 RAFA MOVEBIT A6,/ADD/CV,/BTC/CV,/BTC/CV-1,/UPB/CV RAF2 SA1 /ADD/LB CHECK LABEL TYPE RJUST X1,X6,/BTC/LB,/UPB/LB ZR X6,RAF3 IF UNLABELED SA2 /ADD/PI NZ X2,RAF4 IF PHYSICAL FILE ID EXISTS MOVEBIT /ADD/FI,A2,FIKL*6 SET PHYSICAL FILE ID EQ RAF4 SET UP FET RAF3 SA6 /ADD/PI CLEAR PHYSICAL FILE ID MOVEBIT (=0),A6+B1,FIKL*6-10*6 RAF4 RESETP N3 SET UP FET SA1 CA SET FILE CATALOG RANDOM ADDRESS BX6 X1 SA6 X2+TFRR SA1 UN SET USER NAME BX6 X1 SA6 X2+TFUN WRITFET X2,FCAT,TCEL SET FILE CATALOG INTO FET BUFFER SA1 RF CHECK IF FILE IS RESERVED SX6 ICES ZR X1,RAF5 IF FILE NOT RESERVED SX6 RCES RAF5 CALLTFM X2,X6 RESERVE/AMEND FILE CATALOG SA2 CA NZ X2,RAF6 IF FILE PREVIOUSLY RESERVED SA1 N3+TFRR SET FILE CATALOG RANDOM ADDRESS RJUST X1,X2,24,59 BX6 X2 SA6 A2 RAF6 SA1 TAVS+/CAT/VASF CHECK FIRST FILE RANDOM ADDRESS RJUST X1,X1,24,23 ZR X1,RAF7 IF NO FIRST FILE BX2 X1 SET RANDOM ADDRESS FOR VSN ENTRIES RAF7 SA3 ST GET VSN STATUS BITS SX6 UOVS+TVVS BX3 X6*X3 SX6 B1 LX6 17-0 ERRNZ 400000B-RTVS INCORRECT BIT POSITION BX3 X6+X3 SA1 FV GET FIRST VSN BX7 X1 SX4 B0 PRESET VSN NUMBER MX0 VSKL*6 GET VSN MASK SA1 TAVS GET FIRST ENTRY IN TABLE RAF8 ZR X1,RAF9 IF END OF VSNS BX6 X0*X1 SET RANDOM INDEX BX6 X6+X2 SA6 A1 SA1 A1+B1 SET STATUS BITS SX6 ASVS+UOVS+TVVS+VIVS BX6 -X6*X1 BX6 X6+X3 SX4 X4+B1 SET REEL NUMBER LX4 18 BX6 X6+X4 AX4 18 SA6 A1 SA7 A1+B1 SET FIRST VSN SA1 A1+3 SET NEXT VSN BX6 X0*X1 SA5 A7+B1 BX5 -X0*X5 BX6 X6+X5 SA6 A7+B1 EQ RAF8 CHECK NEXT VSN RAFA BSS 1 CONVERSION MODE RNS SPACE 4,10 ** RNS - RESET NEEDED STORAGE. * * ENTRY NONE. * * EXIT CATALOG BUFFERS, SPECIAL WORKING STORAGE, AND TABLE * OF ASSIGNED VSNS RESTORED FROM HOLD BUFFER *HBUF*. * * USES A - 1, 2, 6. * B - 2, 3. * X - 1, 2, 6. RNS SUBR ENTRY/EXIT SA1 HBUF-1 FWA OF HOLD BUFFER-1 SA2 THBP-1 FWA OF TABLE OF MEMORY PARTITIONS-1 RNS1 SA2 A2+B1 MEMORY PARTITION TO RESET FROM TABLE ZR X2,RNSX IF RESET COMPLETE SB2 X2 SA2 A2+B1 GET WORD COUNT FROM TABLE SB3 X2 RNS2 SA1 A1+B1 HOLD BUFFER WORD TO MOVE BX6 X1 SA6 B2 WORD RESET IN MEMORY SB2 B2+B1 INCREMENT MEMORY ADDRESS TO RESET SB3 B3-B1 DECREMENT WORD COUNT NZ B3,RNS2 IF MORE WORDS TO MOVE EQ RNS1 CONTINUE RCW SPACE 4,10 ** RCW - READ CMR WORD. * * ENTRY (X2) = ADDRESS OF CMR WORD TO READ. * * EXIT (X1) = CMR WORD. * * USES A - 1. * X - 1, 2, 6. * * MACROS SYSTEM. RCW SUBR ENTRY/EXIT MX6 1 SET ABSOLUTE READ SA6 RCWB LX2 18 SET READ ADDRESS SX1 A6 SET BUFFER ADDRESS LX6 36-59 SET WORD COUNT BX6 X6+X2 BX6 X6+X1 SA6 RCWA WRITE STATUS WORD SYSTEM RSB,R,RCWA READ CMR WORD SA1 RCWB EQ RCWX RETURN RCWA CON 0 *RSB* STATUS WORD RCWB CON 0 *RSB* BUFFER RVB SPACE 4,15 ** RVB - REPLACE VSN ENTRY IN BUFFER. * * ENTRY (VCAT) = VSN ENTRY IMAGE. * * EXIT IMAGE SET INTO *VBUF*. * * USES X - 3. * * CALLS CVB, RVE. * * MACROS MOVE, WRITFET. RVB2 SX3 A1 REPLACE VSN ENTRY IN BUFFER MOVE TSVL,VCAT,X3 RVB SUBR ENTRY/EXIT RJ CVB CHECK FOR VSN ENTRY IN BUFFER ZR X4,RVB2 IF VSN ENTRY IN BUFFER WRITFET VB,VCAT,4 SET ENTRY INTO BUFFER ZR X1,RVBX IF TRANSFER COMPLETE RJ RVE REPLACE VSN ENTRIES WRITFET VB,VCAT,4 SET ENTRY INTO BUFFER EQ RVBX RETURN RVE SPACE 4,10 ** RVE - REPLACE VSN ENTRY IN CATALOG FILE. * * ENTRY (VBUF) = VSN ENTRIES. * * EXIT VSN ENTRIES REPLACED IN CATALOG. * * USES A - 1, 2. * X - 1, 2. * * MACROS REPVSN, RESETP. RVE SUBR ENTRY/EXIT SA1 VB+1 GET WORD COUNT OF BUFFER SX1 X1 SA2 A1+B1 IX1 X2-X1 ZR X1,RVEX IF NO ENTRIES IN BUFFER REPVSN VBUF,X1 REPLACE/ADD VSN ENTRIES RESETP VB EQ RVEX RETURN SCI SPACE 4,25 ** SCI - SCAN FOR CODE IDENTIFIER. * * ENTRY (SP) = ADDRESS OF LAST CHARACTER PROCESSED. * (SM) = STRING BUFFER LIMIT. * (X6) = TABLE ADDRESS OF TABLE INFORMATION. * (NL) = CURRENT PROCESSING LEVEL. * * EXIT (X1) = 0 IF ERROR. * (B6) = 0 IF END OF FILE. * (B7) = CONTROL BLOCK OR PROCESSOR ADDRESS. * (AP) = 1 IF DIRECTIVE FOUND AT A HIGHER LEVEL. * (NL) = LEVEL ON WHICH DIRECTIVE WAS FOUND. * (DF) = DIRECTIVE IMAGE. * (DF+1) = PROCESSOR/CONTROL TABLE ADDRESS. * (DF+2) = DIRECTIVE SEPARATOR. * (EL) = 0 IF END OF LINE. * (ET) = -1 IF EOF. * * USES A - 1, 2, 6, 7. * B - 4. * X - 0, 2, 4, 6, 7. * * CALLS ASC. * * MACROS LJUST, SRCHTAB. * * NOTES BASED ON SUBROUTINE *SCI* IN *SFS*. SCI5 SX1 B0 FLAG ERROR SCI SUBR ENTRY/EXIT SA6 SCIA SAVE DIRECTIVE TABLE ADDRESS SCI1 SA2 ="BL" SET CHARACTERS TO SUPPRESS BX6 X2 SA1 ="NC" SET CHARACTERS TO ALLOW RJ ASC ASSEMBLE CHARACTERS SX7 B5 GET SEPARATOR SA7 DF+2 SA6 DF SAVE DIRECTIVE IMAGE SB4 B5-1R= SET SEPARATOR SX1 B1 FLAG NO ERROR ZR B6,SCIX IF EOF SX2 X4-8 PL X2,SCI5 IF TOO MANY CHARACTERS ZR X4,SCI1 IF NO CHARACTERS SX1 6 SET (X0) = CHARACTER MASK IX4 X4*X1 LJUST X1,X1,X4,59 MX4 18 FORCE AT LEAST THREE CHARACTERS IN MASK BX0 X0+X4 SA1 SCIA GET DIRECTIVE TABLE ADDRESS BX2 X6 SET DIRECTIVE TO SEARCH FOR SCI2 SRCHTAB X1,A2,-1 SEARCH FOR DIRECTIVE ZR X4,SCI3 IF DIRECTIVE FOUND SA1 NL CHECK NEXT LEVEL SX6 X1-1 NG X6,SCI5 IF INCORRECT DIRECTIVE SA6 NL STORE LEVEL BEING PROCESSED SX7 B1 SA7 AP SET ALTERNATE PROCESSING FLAG SA1 TDTA+X6 GET FWA OF DIRECTIVE TABLE EQ SCI2 PROCESS NEXT LEVEL SCI3 BX6 X1 SAVE DIRECTIVE TABLE IMAGE SA6 SCIC BX6 X1-X2 AX6 18 ZR X6,SCI4 IF EXACT MATCH SRCHTAB A1+B3,A2,B2,B3,B4 CHECK FOR DIRECTIVE CONFLICT ZR X4,SCI5 IF DIRECTIVE CONFLICT SCI4 MX0 42 SAVE DIRECTIVE IMAGE SA1 SCIC BX6 X0*X1 SA6 DF BX6 -X0*X1 SAVE PROCESSOR/CONTROL TABLE ADDRESS SA6 A6+B1 SB7 X6 SB6 B1 FLAG NOT END OF FILE EQ SCIX RETURN SCIA BSS 1 ADDRESS OF DIRECTIVE TABLE SCIB BSS 1 ALLOWED CHARACTERS BIT STRING SCIC BSS 1 DIRECTIVE TABLE IMAGE SCS SPACE 4,15 ** SCS - SPECIAL CHARACTER SOURCE ENTRY PROCESSOR. * * ENTRY (X1) = FIRST WORD OF DIRECTIVE TABLE. * * EXIT DIRECTIVE WRITTEN TO SOURCE FILE. * (SCSB) = IMAGE OF LINE WRITTEN TO SOURCE FILE. * * USES A - 1, 6. * B - 2, 3, 5. * X - 0, 1, 2, 3, 6. * * CALLS CXS. * * MACROS MOVEBIT, WRITEC. SCS SUBR ENTRY/EXIT RJ CXS CONVERT CATALOG ENTRY TO SOURCE SB2 B0 UNPACK DATA FIELD SB3 B0 MX0 -6 SCS1 SA1 B2+CBUF+1 GET WORD OF CHARACTERS SB5 9 SCS2 LX1 6 GET CHARACTER BX6 -X0*X1 SA6 B3+SCSC SB3 B3+B1 SB5 B5-B1 PL B5,SCS2 IF MORE CHARACTERS IN WORD SB2 B2+B1 LE B2,B1,SCS1 IF MORE WORDS SX3 B1 FIND SPECIAL CHARACTERS IN STRING BUFFER LX3 1R -45B ASSUME SPACE SB2 19 SCS3 NG B2,SCS4 IF ALL CHARACTERS CHECKED SA1 B2+SCSC SB2 B2-B1 SB3 X1-45B NG B3,SCS3 IF NOT SPECIAL CHARACTER SX6 B1 FLAG SPECIAL CHARACTER LX6 B3 BX3 X3+X6 EQ SCS3 CHECK NEXT CHARACTER SCS4 SX6 100B FIND TWO CHARACTERS NOT IN STRING LX3 59-77B+45B-1 SB2 B0 SCS5 GT B2,B1,SCS7 IF TWO CHARACTERS FOUND SCS6 LX3 1 CHECK CHARACTER SX6 X6-1 NG X3,SCS6 IF CHARACTER IN STRING SA6 B2+SCSA SAVE UNUSED CHARACTER SB2 B2+B1 EQ SCS5 CHECK NUMBER OF CHARACTERS SCS7 SB5 B0 CHANGE COLON CHARACTERS IN STRING SA2 /SCS/FIELD SB2 /SCSU/FIELD SCS8 SX1 B5-20 PL X1,SCS10 IF ALL CHARACTERS CHECKED SA1 B5+SCSC NZ X1,SCS9 IF NOT COLON SA1 SCSA+1 GET COLON CHARACTER SCS9 MOVEBIT A1,A2,6,5,B2 SB5 B5+B1 EQ SCS8 CHECK NEXT CHARACTER SCS10 MOVEBIT CBUF,/SCS/DIRECT,,,/SCSU/DIRECT SET DIRECTIVE MOVEBIT SCSA+1,/SCS/COLON,6,5,/SCSU/COLON SET COLON MOVEBIT SCSA+0,/SCS/SEP1,6,5,/SCSU/SEP1 SET SEPARATOR MOVEBIT SCSA+0,/SCS/SEP2,6,5,/SCSU/SEP2 MOVEBIT SCSA+0,/SCS/SEP3,6,5,/SCSU/SEP3 WRITEC S,SCSB WRITE SOURCE ENTRY EQ SCSX RETURN SCSA BSS 1 SEPARATOR CHARACTER BSS 1 COLON CHARACTER SCSB BSS 0 SOURCE FILE ENTRY LISTER SCS,6,COLON= COLON LISTER ,1 LISTER ,9,(,SEPARAT=) SEP1 LISTER ,1 LISTER ,1,(,) DIRECT LISTER ,10,( =) FIELD LISTER ,20 SEP2 LISTER ,1 LISTER ,8,(SEPARAT=) SEP3 LISTER ,1 LISTER ,6,COLON=,E,CAPL SCSC BSS 20 UNPACKED DATA FIELD SMA SPACE 4,15 ** SMA - ISSUE *SDAU* ACCOUNT FILE MESSAGE. * * ENTRY (AV) = NEW ASSIGNED VSN TABLE ADDRESS. * = 0 IF NO NEW VSNS. * TABLE TERMINATED BY A ZERO WORD. * * EXIT MESSAGE ISSUED TO ACCOUNT FILE. * * USES A - 1, 6. * X - 1, 6. * * CALLS COD, SFN. * * MACROS MOVEBIT, MESSAGE. SMA SUBR ENTRY/EXIT SA1 LF NZ X1,SMAX IF LOCAL FILE MODE SA1 AV ZR X1,SMAX IF NO NEW VSNS SX6 X1 SAVE TABLE ADDRESS SA6 SMAA SA1 FM GET FAMILY NAME RJ SFN SPACE FILL NAME SA6 SMAB SET FAMILY NAME MOVEBIT SMAB,/SMA/FAMILY,42,,/SMAU/FAMILY SA1 UN GET USER NAME RJ SFN SPACE FILL NAME SA6 SMAB SET USER NAME MOVEBIT SMAB,/SMA/USER,UNKL*6,,/SMAU/USER SA1 SMAA SET FIRST VSN MOVEBIT X1+/CAT/FVSN,/SMA/FVSN,VSKL*6,/UPB/FVSN,/SMAU/FVSN SA1 QN GET SEQUENCE NUMBER SX6 100000B IX1 X6+X1 RJ COD CONVERT TO OCTAL DISPLAY SA6 SMAD SET SEQUENCE NUMBER IN MESSAGE MOVEBIT A6,/SMA/SEQNO,5*6,29,/SMAU/SEQNO SMA1 SA1 SMAA INCREMENT TABLE ADDRESS SX6 X1+4 SA6 A1 SA1 X1+/CAT/VSN ZR X1,SMAX IF END OF TABLE MOVEBIT A1,/SMA/VSN,VSKL*6,/UPB/VSN,/SMAU/VSN SET VSN IFNE TMSG,0,1 MESSAGE SMAC,TMSG/1S12,R ISSUE DAYFILE MESSAGE EQ SMA1 CHECK NEXT VSN SMAA BSS 1 NEW ASSIGNED VSN TABLE ADDRESS SMAB BSS 1 SPACE FILLED NAME SMAC BSS 0 ACCOUNT FILE MESSAGE LISTER SMA,6,(SDAU, ) FAMILY LISTER ,7 FAMILY NAME LISTER ,1,(/) USER LISTER ,7 USER NAME LISTER ,1,(/) SEQNO LISTER ,5 SEQUENCE NUMBER LISTER ,1,(/) FVSN LISTER ,6 FIRST VSN LISTER ,2,(, ) VSN LISTER ,6 VSN LISTER ,1,(.),E SMAD BSS 1 SEQUENCE NUMBER SMB SPACE 4,15 ** SMB - ISSUE *SDCR* CONDITIONAL RELEASE ACCOUNT FILE MESSAGE. * * ENTRY (X1) = USER NAME OF FILE RELEASED. * (X2) = FIRST VSN OF FILE RELEASED. * (X3) = UNCONDITIONAL RELEASE DATE. * * EXIT MESSAGE ISSUED TO ACCOUNT FILE. * * USES A - 1, 6. * X - 1, 6. * * CALLS SFN. * * MACROS EDATE, MESSAGE, MOVEBIT. SMB SUBR ENTRY/EXIT BX6 X1 SAVE USERNAME SA6 SMBA BX6 X2 SAVE VSN SA6 SMBB BX6 X3 SAVE RELEASE DATE SA6 SMBC SA1 LF NZ X1,SMBX IF LOCAL FILE MODE SA1 FM SET FAMILY RJ SFN SPACE FILL NAME SA6 SMBD MOVEBIT SMBD,/SMB/FAMILY,42,,/SMBU/FAMILY SA1 SMBA SET USERNAME RJ SFN SPACE FILL NAME SA6 SMBD MOVEBIT SMBD,/SMB/USER,42,,/SMBU/USER MOVEBIT SMBB,/SMB/FVSN,36,,/SMBU/FVSN SA1 SMBC SET RELEASE DATE NZ X1,SMB1 IF RELEASE DATE SET SA1 =10H. BX6 X1 EQ SMB2 ISSUE MESSAGE SMB1 EDATE X1 SMB2 MX0 18 REMOVE SLASHES FROM DATE BX1 X0*X6 LX6 6 BX6 -X0*X6 BX1 X1+X6 MX0 30 BX1 X0*X1 LX6 6 BX6 -X0*X6 BX1 X1+X6 RJ SFN SPACE FILL NAME SA6 SMBD MOVEBIT SMBD,/SMB/URDATE,60,,/SMBU/URDATE IFNE TMSG,0,1 MESSAGE SMBE,TMSG/1S12,R ISSUE DAYFILE MESSAGE EQ SMBX RETURN SMBA BSS 1 USERNAME SMBB BSS 1 FIRST VSN SMBC BSS 1 PACKED RELEASE DATE SMBD BSS 1 SPACED FILLED NAME SMBE BSS 0 ACCOUNT FILE MESSAGE LISTER SMB,6,(SDCR, ) FAMILY LISTER ,7 LISTER ,1,(/) USER LISTER ,7 LISTER ,1,(/) LISTER ,5,(00001) LISTER ,1,(/) FVSN LISTER ,6 LISTER ,2,(, ) URDATE LISTER ,10,,E SMC SPACE 4,15 ** SMC - ISSUE *SDAD* OR *SDRV* ACCOUNT FILE MESSAGE. * * ENTRY (B2) = 0 IF *SDAD*. * .NE. 0 IF *SDRV*. * (VCAT) = REVISED/ADDED VSN ENTRY. * * EXIT MESSAGE ISSUED TO ACCOUNT FILE. * * USES A - 1, 6. * X - 1, 6. * * CALLS COD, SFN. * * MACROS MESSAGE, MOVEBIT, RJUST. SMC SUBR ENTRY/EXIT SA1 LF NZ X1,SMCX IF LOCAL FILE MODE SA1 =4HSDAD SET MESSAGE TYPE ZR B2,SMC1 IF *SDAD* SA1 =4HSDRV SMC1 MOVEBIT A1,/SMC/TYPE,/SMCC/TYPE*6,,/SMCU/TYPE SA1 FM GET FAMILY NAME RJ SFN SPACE FILE NAME SA6 SMCA SET FAMILY NAME MOVEBIT SMCA,/SMC/FAMILY,42,,/SMCU/FAMILY MOVEBIT /ADD/VSN,/SMC/VSN,VSKL*6,,/SMCU/VSN SET VSN MOVEBIT /ADD/PRN,/SMC/PRN,VSKL*6,,/SMCU/PRN SET PRN SA1 VCAT+1 GET STATUS BITS RJUST X1,X1,18,17 SX6 B1 LX6 18-0 BX1 X6+X1 RJ COD CONVERT TO OCTAL DISPLAY CODE SA6 SMCA SET STATUS BITS MOVEBIT SMCA,/SMC/STATUS,36,35,/SMCU/STATUS IFNE TMSG,0,1 MESSAGE SMCB,TMSG/1S12,R ISSUE DAYFILE MESSAGE EQ SMCX RETURN SMCA BSS 1 SPACE FILLED NAME SMCB BSS 0 ACCOUNT FILE MESSAGE TYPE LISTER SMC,4,SDAD MESSAGE TYPE LISTER ,2,(, ) FAMILY LISTER ,7 FAMILY NAME LISTER ,2,(, ) VSN LISTER ,6 VSN LISTER ,2,(, ) PRN LISTER ,6 PRN LISTER ,2,(, ) STATUS LISTER ,6,000000 STATUS BITS LISTER ,1,(.),E SMD SPACE 4,15 ** SMD - ISSUE *SDRM* ACCOUNT FILE MESSAGE. * * ENTRY (B6) = ADDRESS OF VSN ENTRY BUFFER. * (B7) = BUFFER LENGTH. * * EXIT MESSAGE ISSUED TO ACCOUNT FILE. * * USES A - 1, 2, 6. * X - 1, 2, 6. * * CALLS SFN. * * MACROS MESSAGE, MOVEBIT. SMD SUBR ENTRY/EXIT SA1 LF NZ X1,SMDX IF LOCAL FILE MODE SX6 B6 SAVE BUFFER ADDRESS SA6 SMDA SX6 B7 SAVE BUFFER LENGTH SA6 SMDB SX6 B0 PRESET RELATIVE ADDRESS IN BUFFER SA6 SMDC SA1 FM GET FAMILY NAME RJ SFN SPACE FILL NAME SA6 SMDD SET FAMILY NAME MOVEBIT SMDD,/SMD/FAMILY,42,,/SMDU/FAMILY SMD1 SA1 SMDB CHECK IF END OF TABLE SA2 SMDC IX1 X2-X1 PL X1,SMDX IF END OF TABLE SX6 X2+B1 INCREMENT RELATIVE ADDRESS SA6 A2 SA1 SMDA GET ADDRESS OF VSN IX1 X1+X2 MOVEBIT X1,/SMD/VSN,VSKL*6,/UPB/VSN,/SMDU/VSN IFNE TMSG,0,1 MESSAGE SMDE,TMSG/1S12,R ISSUE DAYFILE MESSAGE EQ SMD1 CHECK NEXT VSN SMDA BSS 1 VSN BUFFER ADDRESS SMDB BSS 1 VSN BUFFER LENGTH SMDC BSS 1 RELATIVE ADDRESS IN VSN BUFFER SMDD BSS 1 SPACE FILLED NAME SMDE BSS 0 ACCOUNT FILE MESSAGE LISTER SMD,6,(SDRM, ) FAMILY LISTER ,7 FAMILY NAME LISTER ,2,(, ) VSN LISTER ,6 VSN LISTER ,1,(.),E SMF SPACE 4,15 ** SMF - ISSUE *SDAM* ACCOUNT FILE MESSAGE. * * ENTRY (FV) = FIRST VSN OF FILE AMENDED. * (ST) = VSN STATUS BITS OF FILE AMENDED. * (UN) = USER NAME OF FILE AMENDED. * * EXIT ACCOUNT FILE MESSAGE ISSUED. * * USES A - 1, 6. * X - 1, 6. * * CALLS COD, SFN. * * MACROS MOVEBIT, MESSAGE. SMF SUBR ENTRY/EXIT SA1 LF NZ X1,SMFX IF LOCAL FILE MODE SA1 FM GET FAMILY NAME RJ SFN SPACE FILL NAME SA6 SMFA SET FAMILY NAME MOVEBIT SMFA,/SMF/FAMILY,42,,/SMFU/FAMILY SA1 UN GET USER NAME RJ SFN SPACE FILL NAME SA6 SMFA SET USER NAME MOVEBIT SMFA,/SMF/USER,UNKL*6,,/SMFU/USER MOVEBIT FV,/SMF/FVSN,VSKL*6,,/SMFU/FVSN SET FIRST VSN SA1 ST GET STATUS BITS SX6 B1 LX6 18-0 BX1 X1+X6 RJ COD CONVERT TO OCTAL DISPLAY SA6 SMFA SET STATUS BITS MOVEBIT SMFA,/SMF/STATUS,36,35,/SMFU/STATUS IFNE TMSG,0,1 MESSAGE SMFB,TMSG/1S12,R ISSUE DAYFILE MESSAGE EQ SMFX RETURN SMFA BSS 1 SPACE FILLED NAME SMFB BSS 0 ACCOUNT FILE MESSAGE LISTER SMF,6,(SDAM, ) FAMILY LISTER ,7 FAMILY NAME LISTER ,2,(, ) USER LISTER ,7 USER NAME LISTER ,2,(, ) FVSN LISTER ,6 FIRST VSN LISTER ,2,(, ) STATUS LISTER ,6,000000 VSN STATUS BITS LISTER ,1,(.),E SNS SPACE 4,10 ** SNS - SAVE NEEDED STORAGE. * * ENTRY NONE. * * EXIT CATALOG BUFFERS, SPECIAL WORKING STORAGE, AND TABLE * OF ASSIGNED VSNS SAVED IN HOLD BUFFER *HBUF*. * * USES A - 1, 2, 6. * B - 2, 3. * X - 1, 2, 6. SNS SUBR ENTRY/EXIT SB2 HBUF FWA OF STORAGE BUFFER SA2 THBP-1 FWA OF TABLE OF MEMORY PARTITIONS-1 SNS1 SA2 A2+B1 MEMORY PARTITION TO SAVE FROM TABLE ZR X2,SNSX IF ALL MEMORY SAVED SA1 X2-1 SA2 A2+B1 WORD COUNT FROM TABLE SB3 X2 SNS2 SA1 A1+B1 GET WORD TO SAVE BX6 X1 SA6 B2 WORD SAVED IN BUFFER SB2 B2+B1 INCREMENT BUFFER ADDRESS SB3 B3-B1 DECREMENT WORD COUNT NZ B3,SNS2 IF MORE WORDS TO SAVE EQ SNS1 CONTINUE SUI SPACE 4,10 ** SUI - SET UTILITY INTERLOCK. * * EXIT UTILITY INTERLOCK SET IN TAPE CATALOG. * * USES A - 1. * X - 1. * * MACROS CALLTFM, RESETP. * * EXIT UTILITY INTERLOCK SET ON TAPE CATALOG FILE. * * USES A - 1. * X - 1. * * MACROS CALLTFM, RESETP. SUI SUBR ENTRY/EXIT SA1 LF NZ X1,SUIX IF LOCAL FILE MODE RESETP N1 SET UTILITY INTERLOCK CALLTFM X2,SUAS EQ SUIX RETURN TOG SPACE 4,10 ** TOG - TOGGLE FILE LEVEL LEFT SCREEN DISPLAY. * * ENTRY (TG) = 0 IF *HELP* DISPLAY ON LEFT SCREEN. * = PAGE NUMBER IF FILE LEVEL DISPLAY. * * EXIT (TG) TOGGLED IF FILE LEVEL. * LEFT SCREEN TOGGLED IF FILE LEVEL. * * USES A - 1, 6. * X - 1, 2, 6. TOG SUBR ENTRY/EXIT SA1 TG ZR X1,TOGX IF *HELP* DISPLAY SX6 X1+B1 SET NEXT PAGE SX2 X6-TOGAL NG X2,TOG1 IF NOT BEYOND LAST PAGE SX1 B0 SET FIRST PAGE SX6 B1 TOG1 SA6 TG RESET PAGE SA1 TOGA+X1 RESET DISPLAY ADDRESS BX6 X1 SA6 /KLEFT/NEXT EQ TOGX RETURN TOGA BSS 0 LOC 1 KNEXT KFILLS1,NOLAB KNEXT KFILLS2,NOLAB KNEXT KFILLS3,NOLAB TOGAL EQU * LOC *O UDT SPACE 4,15 ** UDT - UNPACK DATE/TIME. * * ENTRY (X1) = PACKED DATE/TIME. * (B3) = 70 IF UNPACKING DATE * = 100 IF UNPACKING TIME * * EXIT (X6) = DATE/TIME LEFT JUSTIFIED IN YYMMDD OR HHMMSS * FORMAT. * * USES A - 1, 6. * B - 3, 6. * X - 0, 1, 3. * * CALLS CDD. UDT3 SA1 =6L SET NO DATE BX6 X1 UDT SUBR ENTRY/EXIT NZ X1,UDT1 IF NON-ZERO DATE/TIME SB6 B3-70 ZR B6,UDT3 IF DATE UDT1 SX6 B0 CLEAR UNPACKED BUFFER SA6 UDTB LX1 -12+60 POSITION PACKED DATE/TIME SB6 B1+B1 SET FOR THREE TIMES THROUGH LOOP UDT2 MX0 12 SAVE REMAINDER OF PACKED DATE/TIME BX6 X0*X1 SA6 UDTA SX1 X1+B3 INSURE TWO DISPLAY DIGITS RJ CDD CONVERT CONSTANT TO DECIMAL DISPLAY MX0 -12 UPDATE UNPACKED DATE/TIME SA1 UDTB LX1 12 BX6 -X0*X6 BX6 X1+X6 SA6 A1 SA1 UDTA GET REMAINDER OF PACKED DATE/TIME LX1 6 SB3 100 INSURE TWO DISPLAY DIGITS SB6 B6-B1 PL B6,UDT2 IF MORE TO CONVERT LX6 24 EQ UDTX RETURN UDTA BSS 1 PACKED DATE/TIME UDTB BSS 1 UNPACKED DATE/TIME UFA SPACE 4,15 ** UFA - UNPACK FILE AUDIT. * * ENTRY (N3 - N3+15B) = AUDIT FET. * (B2) = ASSIGNED VSN BUFFER ADDRESS. * (B6) = FILE CATALOG BUFFER ADDRESS. * * EXIT (X4) = 0 IF FILE AUDIT UNPACKED. * .NE. 0 IF END OF AUDIT. * (X6) = RANDOM ADDRESS OF FILE CATALOG. * FILE CATALOG IMAGE SET IN BUFFER. * ASSIGNED VSN ENTRIES SET IN BUFFER. * * USES A - 1, 6. * B - 6. * X - 1. * * MACROS CALLTFM, MOVEBIT, READFET, RJUST. UFA SUBR ENTRY/EXIT SX6 B2 SAVE VSN BUFFER ADDRESS SA6 UFAA SX6 B6 SAVE FILE BUFFER ADDRESS SA6 UFAB UFA1 READFET N3,B6,TCEL SET FILE CATALOG IN BUFFER ZR X1,UFA2 IF CATALOG FOUND SA1 X2 CHECK IF AUDIT COMPLETE RJUST X1,X4,1,1 NZ X4,UFAX IF AUDIT COMPLETE CALLTFM X2,AUCS REISSUE AUDIT REQUEST NZ X4,UFAX IF END OF AUDIT SA1 UFAB RESET FILE BUFFER ADDRESS SB6 X1 EQ UFA1 SET FILE CATALOG IN BUFFER UFA2 SA1 B6-TCEL+/CAT/REELC GET REEL COUNT RJUST X1,X6,/BTC/REELC,/UPB/REELC LX6 2 SA1 UFAA GET VSN BUFFER ADDRESS READFET X2,X1,X6 SET ASSIGNED VSN ENTRIES IN BUFFER READFET X2,UFAC,1 GET CATALOG RANDOM ADDRESS SA1 LF ZR X1,UFA3 IF NOT LOCAL FILE MODE SA2 UFAB CLEAR FILE BUSY INTERLOCK MOVEBIT (=0),X2+/CAT/FBIL,/BTC/FBIL,,/UPB/FBIL UFA3 SA1 UFAC RJUST X1,X6,24,23 SX4 B0 FLAG UNPACK COMPLETE EQ UFAX RETURN UFAA BSS 1 VSN BUFFER ADDRESS UFAB BSS 1 FILE CATALOG BUFFER ADDRESS UFAC BSS 1 CATALOG RANDOM ADDRESS UFC SPACE 4,20 ** UFC - UNPACK FILE CATALOG INTO DIRECT CELLS. * * ENTRY (X6) = CATALOG RANDOM ADDRESS. * (X7) = PREVIOUS FILE RANDOM ADDRESS. * (B7) = VSN COUNT. * * EXIT (CA) = FILE CATALOG ADDRESS. * (EV) = EXTERNAL VSN. * (FI) = FILE IDENTIFIER. * (FV) = FIRST VSN. * (NI) = FILE IDENTIFIER. * (PA) = PREVIOUS FILE RANDOM ADDRESS. * (QN) = SEQUENCE NUMBER. * (RC) = REEL COUNT. * (ST) = VSN STATUS BITS. * (SV) = SYMBOLIC ACCESS FLAG. * (VC) = VSN COUNT. * * USES A - 1, 6, 7. * X - 0, 1, 6. * * MACROS MOVEBIT. UFC SUBR ENTRY/EXIT SA6 CA SET FILE CATALOG RANDOM ADDRESS SA7 PA SET PREVIOUS FILE CATALOG RANDOM ADDRESS SX6 B7 SET VSN COUNT SA6 VC NZ B7,UFC1 IF VSNS ASSIGNED SA6 FV CLEAR FIRST VSN SA6 ST CLEAR VSN STATUS EQ UFC2 SET FILE IDENTIFIER UFC1 MOVEBIT TAVS+/CAT/VSN,FV,/BTC/VSN,/UPB/VSN SET FIRST VSN SX0 277777B SET VSN STATUS BITS SA1 TAVS+1 BX1 X0*X1 MOVEBIT A1,ST,18,17,17 UFC2 MOVEBIT /ADD/FI,FI,/BTC/FI,/UPB/FI SET FILE ID MOVEBIT /ADD/FI,NI,/BTC/FI,/UPB/FI MOVEBIT /ADD/EVSN,EV,/BTC/EVSN,/UPB/EVSN MOVEBIT /ADD/QN,QN,/BTC/QN,/UPB/QN,/BTC/QN-1 MOVEBIT /ADD/SV,SV,/BTC/SV,/UPB/SV,/BTC/SV-1 MOVEBIT /ADD/REELC,RC,/BTC/REELC,/UPB/REELC,/BTC/REELC-1 MOVEBIT /ADD/D,DE,/BTC/D,/UPB/D,/BTC/D-1 EQ UFCX RETURN USL SPACE 4,10 ** USL - USER LEVEL PROCESSOR. * * EXIT PROGRAM SET FOR USER LEVEL DIRECTIVES. * * USES A - 1, 6. * X - 1, 6. * * CALLS KFI, RAE. USL SUBR ENTRY/EXIT RJ RAE REPLACE ALTERNATE USER ENTRIES SX6 B0 FLAG INITIAL AUDIT SA6 AA SA1 NV NZ X1,USL1 IF NO VERIFY MODE RJ KFI SET FILE-IDS IN K-DISPLAY USL1 SX6 LVUS SET USER LEVEL SA6 LV SA1 UN SET USER NAME IN K-DISPLAY BX6 X1 SA6 /KUSELS/USER SA1 USLA RESET LEFT SCREEN POINTER BX6 X1 SA6 /KLEFT/NEXT SA1 USLB RESET RIGHT SCREEN POINTER BX6 X1 SA6 /KRIGHT/NEXT SA1 =H* USER * SET LEVEL IN HELP DISPLAY BX6 X1 SA6 /KRIGHT/LV EQ USLX RETURN USLA KNEXT KUSELS,NOLAB USLB KNEXT KUSERS,NOLAB VSA SPACE 4,15 ** VSA - VSN AUDIT LIST PROCESSOR. * * ENTRY (VCAT) = VSN ENTRY IMAGE. * * EXIT VSN INFORMATION COPIED TO OUTPUT FILE. * * USES A - 1. * B - 3. * X - 0, 1. * * CALLS SFN. * * MACROS MOVEBIT, SETSORC, WLINES. VSA SUBR ENTRY/EXIT MX0 -18 SA1 /ADD/URDATE GET RELEASE DATE BX1 -X0*X1 SB3 70 RJ UDT UNPACK DATE/TIME SA6 VSAB SET RELEASE DATE MOVEBIT VSAB,/ALS/RELDATE,6*6,59,/ALSU/RELDATE SA1 /ADD/URDATE CHECK RELEASE DATE MX0 -18 BX6 -X0*X1 SX1 1R ZR X6,VSA0.1 IF NO RELEASE DATE SA1 /ADD/NEWRDT CHECK RELEASE DATE FORMAT LJUST X1,X6,/BTC/NEWRDT,/UPB/NEWRDT SX1 1R* PL X6,VSA0.1 IF OLD FORMAT SX1 1R VSA0.1 MOVEBIT A1,/ALS/NEWRDT,1*6,5,/ALSU/NEWRDT SA1 =18H PRESET USER AND CHARGE AS BLANK MOVEBIT A1,/ALS/VUSER,18*6,,/ALSU/VUSER SA1 UN GET USER NAME RJ SFN SPACE FILL NAME BX1 X6 SET USER NAME IN LISTING MOVEBIT A1,/ALS/VUSER,UNKL*6,,/ALSU/VUSER SA1 /ADD/CN GET CHARGE NUMBER RJ SFN SPACE FILL NAME BX1 X6 MOVEBIT A1,/ALS/VCHG,CNKL*6,,/ALSU/VCHG SA1 /ADD/FVSN GET FIRST VSN RJ SFN SPACE FILL NAME BX1 X6 SET FIRST VSN IN LISTING MOVEBIT A1,/ALS/FVSN,VSKL*6,,/ALSU/FVSN MX0 VSKL*6 CHECK IF LAST SCRATCH VSN SA1 /ADD/NVSN BX1 X0-X1 BX1 X0*X1 ZR X1,VSA1 IF LAST SCRATCH VSN SA1 A1 VSA1 RJ SFN SPACE FILL NAME BX1 X6 SET NEXT VSN IN LISTING MOVEBIT A1,/ALS/NVSN,VSKL*6,,/ALSU/NVSN SA1 UN NZ X1,VSA2 IF VSN ASSIGNED SA1 =18H *NOT ASSIGNED* SET MESSAGE IN LISTING MOVEBIT A1,/ALS/VUSER,18*6,,/ALSU/VUSER VSA2 MOVEBIT /ADD/VSN,/ALS/VSN,/ALSC/VSN*6,/UPB/VSN,/ALSU/VSN SA1 /ADD/ERRFLAG CHECK ERROR FLAG RJUST X1,X1,/BTC/ERRFLAG,/UPB/ERRFLAG ZR X1,VSA3 IF ERROR FLAG NOT SET SA1 =5HERROR EQ VSA5 SET VSN STATUS IN LISTING VSA3 SA1 /ADD/MAINT CHECK MAINTENANCE FLAG RJUST X1,X1,/BTC/MAINT,/UPB/MAINT ZR X1,VSA4 IF MAINTENANCE FLAG NOT SET SA1 =5HHOLD EQ VSA5 SET VSN STATUS IN LISTING VSA4 SA1 =5HAVAIL VSA5 MOVEBIT A1,/ALS/STATUS,5*6,,/ALSU/STATUS SETSORC A,LVVS SET SOURCE VALUES IN AUDIT LISTING WLINES VSAA,1 WRITE TO OUTPUT FILE EQ VSAX RETURN VSAA BSS 0 AUDIT LISTING LISTER ALS,2 VSN LISTER ,6 VSN LISTER ,1 PRN LISTER ,6 INTERNAL VSN (PRN) LISTER ,1 VT LISTER ,4 VSN TAPE TYPE LISTER ,1 STATUS LISTER ,6,AVAIL STATUS LISTER ,1 USAGE LISTER ,2,00 USAGE COUNT LISTER ,1 OWNER LISTER ,6,CENTER OWNERSHIP TYPE LISTER ,1 SITE LISTER ,3,ON SITE STATUS LISTER ,1 SYSTEM LISTER ,6,NO SYSTEM VSN FLAG LISTER ,1 VUSER LISTER ,7 USER NAME LISTER ,1 VCHG LISTER ,10 CHARGE NUMBER LISTER ,1 NEWRDT LISTER ,1 NEW RELEASE DATE FORMAT RELDATE LISTER ,6 RELEASE DATE LISTER ,1 FVSN LISTER ,6 FIRST VSN LISTER ,1 NVSN LISTER ,6,,E NEXT VSN VSAB CON 0 RELEASE DATE IMAGE VSL SPACE 4,10 ** VSL - VSN LEVEL PROCESSOR. * * EXIT PROGRAM SET FOR VSN LEVEL DIRECTIVES. * * USES A - 1, 2, 6. * X - 1, 2, 6. * * MACROS MOVE. VSL SUBR ENTRY/EXIT SX6 LVVS SET VSN LEVEL SA6 LV SA1 VS SET VSN IN K-DISPLAY BX6 X1 SA6 /KVSNLS/VSN SA1 VF CHECK VSN IN CATALOG FLAG SA2 VSLA PRESET MESSAGE ADDRESS ZR X1,VSL1 IF VSN NOT IN CATALOG SA2 VSLB RESET MESSAGE ADDRESS VSL1 MOVE 3,A2,/KVSNLS/MESS MOVEBIT /ADD/VT,VTT,/BTC/VT,/UPB/VT,/BTC/VT-1 MOVEBIT /ADD/SYSTEM,SVF,/BTC/SYSTEM,/UPB/SYSTEM,/BTC/SYSTEM-1 RJ KST SET VSN STATUS IN K-DISPLAY SA1 VSLC RESET LEFT SCREEN POINTER BX6 X1 SA6 /KLEFT/NEXT SA1 VSLD RESET RIGHT SCREEN POINTER BX6 X1 SA6 /KRIGHT/NEXT SA1 =H* VSN * SET LEVEL IN HELP DISPLAY BX6 X1 SA6 /KRIGHT/LV EQ VSLX RETURN VSLA DATA 30HVSN NOT CURRENTLY IN CATALOG. VSLB DATA 30HVSN CURRENTLY IS IN CATALOG. VSLC KNEXT KVSNLS,NOLAB VSLD KNEXT KVSNRS,NOLAB VSM SPACE 4,15 ** VSM - VSN MACHINE READABLE LIST PROCESSOR. * * ENTRY (VCAT) = VSN ENTRY IMAGE. * * EXIT VSN INFORMATION COPIED TO MACHINE READABLE OUTPUT * FILE. * * USES A - 1, 2. * B - 3. * X - 0, 1, 2. * * CALLS SFN, UDT. * * MACROS MOVEBIT, RJUST, SETSORC, WRITEC. VSM SUBR ENTRY/EXIT SA1 /ADD/VASF CHECK VSN ASSIGNED FLAG RJUST X1,X1,/BTC/VASF,/UPB/VASF ZR X1,VSM4 IF VSN NOT ASSIGNED TO A FILE SA2 /ADD/RECOVER CHECK FOR RECOVERED STATUS LX2 59-/UPB/RECOVER SA1 =C*N* PL X2,VSM1 IF NOT RECOVERED SA1 =C*S* VSM1 MOVEBIT A1,/MLS/RECOVER,1*6,59,/MLSU/RECOVER SA2 VCAT+VEVS CHECK IF FILE RESERVED LX2 59-17 ERRNZ 400000B-RTVS INCORRECT BIT POSITION SA1 =C*R* NG X2,VSM2 IF FILE RESERVED SA1 =C*N* VSM2 MOVEBIT A1,/MLS/RESF,1*6,59,/MLSU/RESF SET RESERVED STATUS SA1 UN SET USER NAME IN LISTING RJ SFN SPACE FILL NAME BX1 X6 MOVEBIT A1,/MLS/USER,/MLSC/USER*6,,/MLSU/USER SETSORC M,LVFI SET SOURCE VALUES IN MACHINE READ LIST SA1 /MLS/FI CHECK FOR EXTRA END OF LINES SB3 /MLSU/FI RJ CFI CHECK FILE IDENTIFIER IN OUTPUT SA1 /MLS/PI SB3 /MLSU/PI RJ CFI CHECK FILE IDENTIFIER IN OUTPUT SA1 /ADD/TTYP CHECK TAPE DEVICE TYPE RJUST X1,X6,/BTC/TTYP,/UPB/TTYP SA1 VSMB+X6 GET MNEMONIC MOVEBIT A1,/MLS/TTYP,/MLSC/TTYP*6,,/MLSU/TTYP EQ VSM5 ADD VSN INFORMATION VSM4 MOVEBIT (=50H),/MLS/USER,50*6,,/MLSU/USER SET BLANKS MOVEBIT (=50H),A2,50*6,,B2 MOVEBIT (=47H),A2,47*6,,B2 MOVEBIT (=19H),/MLS/LB,19*6,,/MLSU/LB MOVEBIT (=1HN),/MLS/RESF,1*6,59,/MLSU/RESF MOVEBIT (=1HN),/MLS/RECOVER,1*6,59,/MLSU/RECOVER VSM5 MOVEBIT /ADD/VSN,/MLS/VSN,/MLSC/VSN*6,/UPB/VSN,/MLSU/VSN SA1 /ADD/FVSN GET FIRST VSN RJ SFN SPACE FILL NAME BX1 X6 SET FIRST VSN IN LISTING MOVEBIT A1,/MLS/FVSN,VSKL*6,,/MLSU/FVSN MX0 VSKL*6 CHECK IF LAST SCRATCH VSN SA1 /ADD/NVSN BX1 X0*X1 BX1 X0-X1 ZR X1,VSM6 IF LAST SCRATCH VSN SA1 A1 BX1 X0*X1 VSM6 RJ SFN SPACE FILL NAME BX1 X6 SET NEXT VSN IN LISTING MOVEBIT A1,/MLS/NVSN,VSKL*6,,/MLSU/NVSN SA1 /ADD/REELNO GET REEL NUMBER RJUST X1,X1,/BTC/REELNO,/UPB/REELNO SX1 X1+100 RJ CDD CONVERT TO DECIMAL DISPLAY LJUST X6,X1,12,11 SET REEL NUMBER IN LISTING MOVEBIT A1,/MLS/REELNO,/MLSC/REELNO*6,,/MLSU/REELNO SA1 /ADD/URDATE GET RELEASE DATE MX0 -18 BX1 -X0*X1 SB3 70 SET DATE FLAG FOR UDT RJ UDT UNPACK DATE BX1 X6 SET RELEASE DATE IN LISTING MOVEBIT A1,/MLS/URDATE,6*6,,/MLSU/URDATE SA1 /ADD/URDATE CHECK RELEASE DATE MX0 -18 BX6 -X0*X1 SX1 1R ZR X6,VSM7 IF NO RELEASE DATE SA1 /ADD/NEWRDT CHECK IF NEW RELEASE DATE FORMAT LJUST X1,X6,/BTC/NEWRDT,/UPB/NEWRDT SX1 1R* PL X6,VSM7 IF OLD FORMAT SX1 1R VSM7 MOVEBIT A1,/MLS/NEWRDT,1*6,5,/MLSU/NEWRDT SETSORC M,LVVS SET SOURCE VALUES IN MACHINE READ LIST WRITEC SS,VSMA WRITE ENTRY TO MACHINE READABLE FILE EQ VSMX RETURN VSMA BSS 0 MATCHING READABLE LISTING LISTER MLS,1,2 RECORD TYPE FAMILY LISTER ,7 FAMILY NAME USER LISTER ,7 USER NAME CN LISTER ,7 CHARGE NUMBER PN LISTER ,20 PROJECT NUMBER FI LISTER ,17 FILE IDENTIFIER CT LISTER ,7,PRIVATE FILE CATEGORY CDATE LISTER ,6,YYMMDD CREATION DATE CTIME LISTER ,6,HHMMSS CREATION TIME ADATE LISTER ,6,YYMMDD LAST ACCESS DATE ATIME LISTER ,6,HHMMSS LAST ACCESS TIME MDATE LISTER ,6,YYMMDD LAST MODIFICATION DATE MTIME LISTER ,6,HHMMSS LAST MODIFICATION TIME M LISTER ,6,READ PERMISSION MODE ACOUNT LISTER ,10,0000000000 ACCESS COUNT F LISTER ,2,I FORMAT CV LISTER ,2,AS CONVERSION MODE TTYP LISTER ,2,NT TAPE DEVICE TYPE D LISTER ,2,PE DENSITY LISTER ,3 BLANKS UC LISTER ,10 USER CONTROL WORD LISTER ,4 BLANKS CE LISTER ,1,C ERROR FLAG LISTER ,1 BLANKS PW LISTER ,7 PASSWORD LISTER ,3 BLANKS VSN LISTER ,6 VSN PRN LISTER ,6 PRN FVSN LISTER ,6 FIRST VSN NVSN LISTER ,6 NEXT VSN MAINT LISTER ,5,AVAIL MAINTENANCE FLAG SITE LISTER ,3,ON SITE STATUS OWNER LISTER ,6,CENTER OWNERSHIP TYPE ERRFLAG LISTER ,1,C ERROR FLAG REELNO LISTER ,2,00 REEL NUMBER LB LISTER ,2,KL LABEL TYPE PI LISTER ,17 PHYSICAL FILE IDENTIFIER USAGE LISTER ,2,00 USAGE COUNT URDATE LISTER ,6 RELEASE DATE RESF LISTER ,1,N RESERVED FLAG RECOVER LISTER ,1,N RECOVER FLAG NEWRDT LISTER ,1 NEW RELEASE DATE FORMAT SYSTEM LISTER ,3,NO SYSTEM VSN FLAG VT LISTER ,4,MTNT,E VSN TAPE TYPE VSMB BSS 0 TABLE OF TAPE DEVICE TYPES CON 0LMT 7-TRACK TAPE CON 0LCT CARTRIDGE TAPE CON 0LNT 9-TRACK TAPE CON 0LAT ACS CARTRIDGE TAPE VSS SPACE 4,15 ** VSS - VSN SOURCE LISTING PROCESSOR. * * ENTRY (VCAT) = VSN ENTRY IMAGE. * * EXIT VSN INFORMATION COPIED TO SOURCE FILE. * * USES A - 1. * X - 1. * * CALLS SCS. * * MACROS MOVEBIT, SETSORC, WRITEC. VSS SUBR ENTRY/EXIT MOVEBIT /ADD/VSN,/SLS/VSN,VSKL*6,,/SLSU/VSN SETSORC S,LVVS SET SOURCE VALUES IN SOURCE LISTING WRITEC S,VSSA WRITE FIRST LINE OF SOURCE ENTRY SA1 /DTAB/PRN ADD PRN TO SOURCE ENTRY RJ SCS PROCESS SPECIAL CHARACTER SOURCE ENTRY WRITEC S,VSSB WRITE LAST LINE OF SOURCE ENTRY EQ VSSX RETURN VSSA BSS 0 FIRST LINE OF VSN SOURCE ENTRY LISTER SLS,4,VSN= VSN LISTER ,6 VSN LISTER ,4,(,VT=) VT LISTER ,4,MTNT VSN ENTRY TAPE TYPE LISTER ,7,(,USAGE=) USAGE LISTER ,2,00 USAGE COUNT LISTER ,9,(,ERRFLAG=) ERRFLAG LISTER ,5,CLEAR ERROR FLAG LISTER ,7,(,MAINT=) MAINT LISTER ,9,AVAILABLE MAINTENANCE FLAG LISTER ,6,(,SITE=) SITE LISTER ,3,ON,E,CAPL SITE STATUS VSSB BSS 0 LAST LINE OF VSN SOURCE ENTRY LISTER ,6,OWNER= OWNER LISTER ,6,CENTER OWNERSHIP TYPE LISTER ,8,(,SYSTEM=) SYSTEM LISTER ,3,NO SYSTEM VSN FLAG LISTER ,3,(,GO),E,CAPL COMMON SPACE 4,10 ** COMMON DECKS. *CALL COMCCDD *CALL COMCCOD *CALL COMCCPM *CALL COMCCIO *CALL COMCDXB *CALL COMCEDT *CALL COMCMVE *CALL COMCRDC *CALL COMCRDW *CALL COMCSFM *CALL COMCSFN *CALL COMCSNM *CALL COMCSYS USBB BSS CSPL+10 STRING BUFFER *CALL COMCUSB *CALL COMCWTC *CALL COMCWTW *CALL COMCZTB TITLE UNIVERSAL DIRECTIVE PROCESSORS. UNIDIR SPACE 4,10 ** UNIVERSAL DIRECTIVE PROCESSORS. * * ENTRY FROM *DIP*. * (AI) = ALTERNATE INPUT FILE NAME. * (IF) = INPUT FILE FET ADDRESS. * (TG) = FILE LEVEL K-DISPLAY PAGE NUMBER. * (BF) = BRIEF/NOBRIEF FLAG FOR HEADER DISPLAY. * * EXIT (EF) = 0 IF NO DIRECTIVE ERROR. DIS SPACE 4,10 ** DIS - PROCESS *DISPLAY* DIRECTIVE. DIS2 SX6 B1 SET FILE LEVEL TOGGLE SA6 TG SA1 DISA SET NORMAL LEFT SCREEN CONTROL WORD BX6 X1 SA6 KCW DIS SUBR ENTRY/EXIT SA1 OP CHECK OPTION SX1 X1-KOPT ZR X1,DIS2 IF *OP=K* SA1 BF CHECK *BRIEF* FLAG NZ X1,DIS1 IF *BRIEF* MODE SET NEWPAGE PDIS,PDISL FORCE NEW PAGE WWORDS /KLEFT/START,/KLEFT/LENGTH DIS1 SA1 /KLEFT/NEXT GET ADDRESS OF REMAINDER OF DISPLAY SX2 X1 SA1 X1-1 GET LENGTH OF REMAINDER OF DISPLAY SB6 X1 WWORDS X2,B6 WRITE REMAINDER OF LEFT SCREEN DISPLAY NEWPAGE PDIR,PDIRL,NP FORCE NEW PAGE ON NEXT DIRECTIVE EQ DISX RETURN DISA VFD 24/KBUF,18/KRIGHT,18/KLEFT CONTROL WORD IMAGE STO SPACE 4,10 ** STO - PROCESS *STOP* DIRECTIVE. * * SET TERMINATION DIRECTIVES (DROP) IN THE STRING BUFFER. * * EXIT (USBB) = SERIES OF *DROP* DIRECTIVES. * (SP) = BUFFER POINTER. * (SB) = BUFFER ADDRESS. * (SM) = BUFFER MAXIMUM ADDRESS. * * USES A - 6. * X - 6. * * MACROS MOVE. STO SUBR ENTRY/EXIT MOVE TFSAL,TFSA,USBB SET TERMINATION DIRECTIVES SX6 USBB-1 SET BUFFER POINTER SA6 SP SX6 X6+B1 SET BUFFER ADDRESS SA6 SB SX6 USBB+TFSAL SET BUFFER MAXIMUM ADDRESS SA6 SM EQ STOX RETURN HEL SPACE 4,10 ** HEL - PROCESS *HELP* DIRECTIVE. HEL1 SX6 B0 FLAG *HELP* DISPLAY SA6 TG SA1 HELA SET *HELP* CONTROL WORD BX6 X1 SA6 KCW HEL SUBR ENTRY/EXIT SA1 OP CHECK OPTION SX1 X1-KOPT ZR X1,HEL1 IF *OP=K* NEWPAGE PHEL,PHELL FORCE NEW PAGE WWORDS /KRIGHT/START,/KRIGHT/LENGTH WRITE HEADER SA1 /KRIGHT/NEXT GET ADDRESS OF REMAINDER OF DISPLAY SX2 X1 SA1 X1-1 GET LENGTH OF REMAINDER OF DISPLAY SB6 X1 WWORDS X2,B6 WRITE REMAINDER OF RIGHT SCREEN DISPLAY NEWPAGE PDIR,PDIRL,NP FORCE NEW PAGE ON NEXT DIRECTIVE EQ HELX RETURN HELA VFD 24/KBUF,18/KRIGHT,18/KRIGHT CONTROL WORD IMAGE REA SPACE 4,10 ** REA - PROCESS *READ* DIRECTIVE. REA1 SX6 B0 CLEAR ALTERNATE INPUT FILE NAME SA6 AI REA2 ISSMSG B5,E ISSUE ERROR MESSAGE REA SUBR ENTRY/EXIT SA1 IF CHECK INPUT FET ADDRESS SX1 X1-I SB5 ERDI SET ERROR MESSAGE ADDRESS NZ X1,REA2 IF ALTERNATE INPUT FILE SA1 DIPB SET FILE NAME IN FET SX6 B1 BX6 X1+X6 SA6 RD SX2 A6 RJ CFC CHECK FOR FILE NAME CONFLICT SB5 EFNC SET ERROR MESSAGE ADDRESS NZ X4,REA1 IF CONFLICT SX6 X2 SET INPUT FILE FET SA6 IF SA1 SB SAVE INPUT STRING BUFFER POINTERS SX6 X1 SA6 TFSB+0 SA1 SM SX6 X1 SA6 A6+B1 SA1 SP SX6 X1 SA6 A6+B1 MOVE USBBL,USBB,TFSC SAVE INPUT STRING BUFFER SX6 B0 PRESET INPUT STRING BUFFER POINTERS SA6 SB SA6 SM SA6 SP EQ REAX RETURN REW SPACE 4,10 ** REW - PROCESS *REWIND* DIRECTIVE. REW SUBR ENTRY/EXIT SX2 R RJ CFC CHECK FOR FILE NAME CONFLICT ZR X4,REW1 IF NO CONFLICT RECALL X4 REWIND FILE REWIND X2,R EQ REWX RETURN REW1 REWIND R,R REWIND FILE EQ REWX RETURN TITLE FAMILY LEVEL DIRECTIVE PROCESSORS. SPACE 4 QUAL LVFA FAMDIR SPACE 4,10 ** FAMILY LEVEL DIRECTIVE PROCESSORS. * * ENTRY FROM *DIP*. * (REC1) = IMAGE OF FIRST TAPE CATALOG FILE RECORD. * * EXIT (EF) = 0 IF NO DIRECTIVE ERROR. ACH SPACE 4,10 ** ACH - PROCESS *AUDITCH* DIRECTIVE. ACH SUBR ENTRY/EXIT NEWPAGE PFIA,PFIAL SET NEW PAGE HEADER ACH1 RCREC N2,5 GRENTRY N2,ACHA GET RECORD ENTRY FROM CATALOG ZR X6,ACH3 IF NO USERNAMES ACH2 GRENTRY N2,ACHA GET RECORD ENTRY FROM CATALOG ZR X6,ACH3 IF END OF USERNAMES SA1 TI NZ X1,ACH3 IF TERMINAL INTERRUPT MX0 42 GET USERNAME SA1 ACHA BX6 X0*X1 SA6 UN STORE USERNAME TO AUDIT USERAUD A,CN PROCESS CHARGE AUDIT EQ ACH2 CHECK NEXT USERNAME ACH3 NEWPAGE PDIR,PDIRL,NP FORCE NEW PAGE EQ ACHX RETURN ACHA BSS 1 SECONDARY USERNAME POINTER AFM SPACE 4,10 ** AFM - PROCESS *ALTFAM* DIRECTIVE. AFM2 ISSMSG ENVF,E ISSUE ERROR MESSAGE AFM SUBR ENTRY/EXIT SA1 LF ZR X1,AFM2 IF NOT LOCAL FILE MODE MX0 42 SRCHTAB TAFM,AFMA,PAFL SEARCH FOR FAMILY NAME ZR X4,AFMX IF ALREADY IN TABLE SRCHTAB TAFM,=0,B2,B3,B4 SEARCH FOR EMPTY ENTRY ZR X4,AFM1 IF EMPTY ENTRY FOUND ISSMSG EAFM,E ISSUE ERROR MESSAGE EQ AFMX RETURN AFM1 SA2 AFMA SET FAMILY NAME IN TABLE BX6 X2 SA6 A1 RJ KFM SET FAMILY LEVEL K-DISPLAY EQ AFMX RETURN AFMA BSS 1 ALTERNATE FAMILY NAME AUN SPACE 4,10 ** AUN - PROCESS *AUDITUN* DIRECTIVE. AUN3 NEWPAGE PDIR,PDIRL,NP FORCE NEW PAGE FOR NEXT DIRECTIVE AUN SUBR ENTRY/EXIT NEWPAGE PFIA,PFIAL SET NEW PAGE HEADER SA1 UN ZR X1,AUN1 IF MULTIPLE VSNS USERAUD A PROCESS USER AUDIT LIST EQ AUN3 FORCE NEW PAGE AUN1 RCREC N2,5 GRENTRY N2,AUNA GET RECORD ENTRY ZR X6,AUN3 IF END OF USER NAMES AUN2 GRENTRY N2,AUNA GET RECORD ENTRY ZR X6,AUN3 IF END OF USER NAMES SA1 TI NZ X1,AUN3 IF TERMINAL INTERRUPT MX0 42 GET USER NAME SA1 AUNA BX6 X0*X1 SA6 UN USERAUD A PROCESS USER AUDIT LIST EQ AUN2 CHECK NEXT USER NAME AUNA BSS 1 SECONDARY USER NAME POINTER IMAGE AVS SPACE 4,10 * AVS - PROCESS *AUDITVS* DIRECTIVE. AVS4 NEWPAGE PDIR,PDIRL,NP FORCE NEW PAGE FOR NEXT DIRECTIVE AVS SUBR ENTRY/EXIT NEWPAGE PVSA,PVSAL FORCE NEW PAGE SA1 VS ZR X1,AVS1 IF MULTIPLE VSNS SX6 B0 RJ GVE GET VSN ENTRY NZ X4,AVSX IF NOT FOUND RJ GUV GET USER INFORMATION ON VSN RJ VSA PROCESS VSN OUTPUT LIST EQ AVS4 FORCE NEW PAGE AVS1 SA1 LF ZR X1,AVS2 IF NOT LOCAL FILE MODE RJ RVE REPLACE VSN ENTRIES AVS2 RCREC N1,4 GET RECORD ENTRY OF DUMMY VSN GRENTRY N1,VCAT ZR X6,AVS4 IF NO MORE ENTRIES AVS3 GRENTRY N1,VCAT ZR X6,AVS4 IF NO MORE ENTRIES SA1 TI NZ X1,AVS4 IF TERMINAL INTERRUPT RJ GUV GET USER INFORMATION ON VSN RJ VSA PROCESS VSN OUTPUT LIST EQ AVS3 GET NEXT ENTRY BRF SPACE 4,10 ** BRF - PROCESS *BRIEF* DIRECTIVE. BRF SUBR ENTRY/EXIT SA1 BF CHECK BRIEF FLAG SX6 B1 SA6 A1 SET FLAG FOR BRIEF EQ BRFX RETURN CAF SPACE 4,10 ** CAF - PROCESS *CALTFAM* DIRECTIVE. CAF1 ISSMSG ENVF,E ISSUE ERROR MESSAGE CAF SUBR ENTRY/EXIT SA1 LF ZR X1,CAF1 IF NOT LOCAL FILE MODE MX0 42 SRCHTAB TAFM,CAFA,PAFL SEARCH FOR FAMILY NAME NZ X4,CAFX IF NOT IN TABLE SB7 B7+B3 MOVE END OF TABLE OVER DELETED FAMILY SB2 B2-B7 MOVE B2,A1+B3,A1 SX6 B0 CLEAR LAST ENTRY IN TABLE SA6 TAFM+PAFL-1 RJ KFM SET FAMILY LEVEL K-DISPLAY EQ CAFX RETURN CAFA BSS 1 ALTERNATE FAMILY NAME CAT SPACE 4,10 ** CAT - PROCESS *CATERR* DIRECTIVE. CAT1 MOVEBIT CATB,TCMB,40*6 SET NEW ERROR MESSAGE CAT2 RJ KFM SET FAMILY LEVEL K-DISPLAY CAT SUBR ENTRY/EXIT MOVEBIT CATA,TSTT,1,0,2 SET/CLEAR ERROR STATUS SA1 CATA NZ X1,CAT1 IF SET ERROR STATUS CLEAR TCMB,MBML CLEAR MESSAGE BUFFER EQ CAT2 REWRITE FIRST RECORD CATA BSS 1 CATALOG ERROR STATUS CATB DATA 38LERROR SET BY TFSP. DRO SPACE 4,10 ** DRO - PROCESS *DROP* DIRECTIVE. DRO SUBR ENTRY/EXIT EQ END END *TFSP* FAM SPACE 4,10 ** FAM - PROCESS *FAMNAME* DIRECTIVE. FAM SUBR ENTRY/EXIT MOVEBIT FAMA,TFMN,7*6 SET FAMILY NAME RJ KFM SET FAMILY LEVEL K-DISPLAY EQ FAMX RETURN FAMA BSS 1 NEW FAMILY NAME FOR SPACE 4,10 ** FOR - PROCESS *FOREIGN* DIRECTIVE. FOR SUBR ENTRY/EXIT MOVEBIT FORA,TSTT,1,0,13 SET FOREIGN STATUS RJ KFM SET FAMILY LEVEL K-DISPLAY EQ FORX RETURN FORA BSS 1 FOREIGN STATUS GLO SPACE 4,10 ** GLO - PROCESS *GLOBAL* DIRECTIVE. GLO SUBR ENTRY/EXIT MOVEBIT GLOA,TSTT,1,0,12 SET GLOBAL STATUS RJ KFM SET FAMILY LEVEL K-DISPLAY EQ GLOX RETURN GLOA BSS 1 GLOBAL STATUS INV SPACE 4,10 ** INV - PROCESS *INCORRECT* DIRECTIVE. INV SUBR ENTRY/EXIT MX0 42 SRCHTAB TVUN,UN,UNCL SEARCH FOR USER NAME NZ X4,INVX IF NOT IN TABLE SB7 B7+B3 MOVE END OF TABLE OVER DELETED USER SB2 B2-B7 MOVE B2,A1+B3,A1 SX6 B0 CLEAR LAST ENTRY IN TABLE SA6 TVUN+UNCL-1 RJ KFM SET FAMILY LEVEL K-DISPLAY EQ INVX RETURN ISV SPACE 4,10 ** ISV - PROCESS *ISV* DIRECTIVE. * * EXIT SCRATCH VSN-S INITIALIZED. * * CALLS KFM. * * MACROS CALLTFM, RCREC. ISV SUBR ENTRY\EXIT CALLTFM N1,ISFS INITIALIZE SCRATCH VSNS RCREC N1,1,REC1 REREAD FIRST RECORD RJ KFM UPDATE K-DISPLAY BUFFER EQ ISVX RETURN LKF SPACE 4,10 ** LKF - PROCESS *LINKFAM* DIRECTIVE. LKF1 ISSMSG ENVF,E * DIRECTIVE NOT VALID ON FAST ATTACH * LKF SUBR ENTRY/EXIT SA1 LF ZR X1,LKF1 IF NOT LOCAL FILE MODE MOVEBIT LKFA,TLFM,7*6 SET LINKED FAMILY NAME RJ KFM UPDATE FAMILY K-DISPLAY EQ LKFX EXIT LKFA BSS 1 LINKED FAMILY NAME MCH SPACE 4,10 ** MCH - PROCESS *MREADCH* DIRECTIVE. MCH SUBR ENTRY/EXIT CHKFIL SS CHECK FOR MACHINE READABLE FILE ZR X1,MCHX IF NO FILE WAS SPECIFIED MCH1 RCREC N2,5 GRENTRY N2,MCHA GET USERNAMES TO AUDIT ZR X6,MCH3 IF NO USERNAMES MCH2 GRENTRY N2,MCHA GET USERNAMES TO AUDIT ZR X6,MCH3 IF END OF USERNAMES TO AUDIT SA1 TI NZ X1,MCH3 IF TERMINAL INTERRUPT SA1 MCHA GET USERNAME MX0 42 BX6 X0*X1 MASK USERNAME TO AUDIT SA6 UN USERAUD M,CN PROCESS NEXT USERNAME TO MACHINE FILE EQ MCH2 CHECK NEXT USERNAME TO AUDIT MCH3 WRITER SS WRITE END OF RECORD ON FILE EQ MCHX RETURN MCHA BSS 1 SECONDARY USERNAME POINTER MID SPACE 4,10 ** MID - PROCESS *MID* DIRECTIVE. MID1 ISSMSG EDFE,E ISSUE ERROR MESSAGE MID SUBR ENTRY/EXIT SA1 MIDA CHECK FOR TWO CHARACTERS RJUST X1,X1,6,11 ZR X1,MID1 IF ONLY ONE CHARACTER MOVEBIT MIDA,TIDM,2*6,11 SET MACHINE ID RJ KFM SET FAMILY LEVEL K-DISPLAY EQ MIDX RETURN MIDA BSS 1 NEW MACHINE ID MUN SPACE 4,10 ** MUN - PROCESS *MREADUN* DIRECTIVE. MUN3 WRITER SS WRITE END OF RECORD MUN SUBR ENTRY/EXIT CHKFIL SS CHECK MACHINE READABLE FILE ZR X1,MUNX IF NO FILE SA1 UN ZR X1,MUN1 IF MULTIPLE VSNS USERAUD M PROCESS USER MACHINE READABLE LIST EQ MUN3 WRITE END OF RECORD MUN1 RCREC N2,5 GRENTRY N2,MUNA GET RECORD ENTRY OF DUMMY USER ZR X6,MUN3 IF END OF USER NAMES MUN2 GRENTRY N2,MUNA GET RECORD ENTRY ZR X6,MUN3 IF END OF USER NAMES SA1 TI NZ X1,MUN3 IF TERMINAL INTERRUPT MX0 42 GET USER NAME SA1 MUNA BX6 X0*X1 SA6 UN USERAUD M PROCESS USER MACHINE READABLE LIST EQ MUN2 CHECK NEXT USER NAME MUNA BSS 1 SECONDARY USER NAME POINTER IMAGE MVS SPACE 4,10 * MVS - PROCESS *MREADVS* DIRECTIVE. MVS4 WRITER SS SET END OF RECORD MVS SUBR ENTRY/EXIT CHKFIL SS ZR X1,MVSX IF NO MACHINE READABLE FILE SA1 VS ZR X1,MVS1 IF MULTIPLE VSNS SX6 B0 RJ GVE GET VSN ENTRY NZ X4,MVSX IF NOT FOUND RJ GUV GET USER INFORMATION ON VSN RJ VSM PROCESS VSN MACHINE READABLE LIST EQ MVS4 SET END OF RECORD MVS1 SA1 LF ZR X1,MVS2 IF NOT LOCAL FILE MODE RJ RVE REPLACE VSN ENTRIES MVS2 RCREC N1,4 GET RECORD ENTRY OF DUMMY VSN GRENTRY N1,VCAT ZR X6,MVS4 IF NO MORE ENTRIES MVS3 GRENTRY N1,VCAT ZR X6,MVS4 IF NO MORE ENTRIES SA1 TI NZ X1,MVS4 IF TERMINAL INTERRUPT RJ GUV GET USER INFORMATION ON VSN RJ VSM PROCESS VSN MACHINE READABLE LIST EQ MVS3 GET NEXT ENTRY NBF SPACE 4,10 ** NBF - PROCESS *NOBRIEF* DIRECTIVE. NBF SUBR ENTRY/EXIT SA1 BF CLEAR BRIEF FLAG SX6 B0 SA6 A1 SET BRIEF FLAG EQ NBFX RETURN PGA SPACE 4,10 ** PGA - PROCESS *PURGALL* DIRECTIVE. PGA4 MX1 42 SET GENERAL INTERLOCK RJ IUN INTERLOCK USER NAME PGA SUBR ENTRY/EXIT SA1 UN RJ IUN INTERLOCK USER NAME PGA1 SAFET UN,,,FCST SET AUDIT FET NZ X4,PGA4 IF NO MORE FILES SB6 FCAT SET BUFFER ADDRESSES SB2 TAVS RJ UFA UNPACK FILE AUDIT SA1 /ADD/NCAT CHECK IF MULTI-FILE RJUST X1,X1,/BTC/NCAT,/UPB/NCAT NZ X1,PGA2 IF MULTI-FILE RJ SUI SET UTILITY INTERLOCK RELVSN UN,TAVS RELEASE FILE VIA VSN SA1 /ADD/REELC SET VSN BUFFER LENGTH RJUST X1,X1,/BTC/REELC,/UPB/REELC EQ PGA3 DELETE VSN ENTRIES PGA2 GFILEV UN,TAVS,1,FCAT,FCAT,TAVS GET MULTI-FILE SX6 B7 SAVE VSN COUNT SA6 PGAA RJ SUI SET UTILITY INTERLOCK RELVSN UN,TAVS RELEASE FILE VIA VSN SA1 PGAA SET VSN BUFFER LENGTH PGA3 LX1 2 LIST VSN ENTRIES LISTAB TAVS,PGAB,X1,,TSVL,VSKL*6 SX1 X1-TAVS AX1 2 DELVSN PGAB,X1 DELETE VSN ENTRIES RJ ISV INTIALIZE SCRATCH VSNS RJ CUI CLEAR UTILITY INTERLOCK EQ PGA1 CHECK FOR MORE FILES PGAA BSS 1 VSN COUNT PGAB BSS 60 ASSIGNED VSNS PGO SPACE 4,10 ** PGO - PROCESS GO DIRECTIVE. * * EXIT FIRST PRU OF CATALOG READ, MODIFIED AND REWRITTEN. * EXIT TO *END*. * * CALLS END. * * USES X3, X4. * * CALLS MSV. * * MACROS RCREC, WCREC. PGO SUBR ENTRY/EXIT RCREC N1,1,REC1,1 READ FIRST RECORD SX3 TSST SET MODIFIED VALUE TABLE ADDRESS SX4 REC1+TBHL SET SYSTEM TABLE ADDRESS RJ MSV MOVE SYSTEM TABLE VALUES WCREC N1,1,REC1,1 REWRITE FIRST RECORD EQ END END *TFSP* PTF SPACE 4,10 ** PTF - PROCESS *PURGE* DIRECTIVE. PTF5 ISSMSG B5,E ISSUE ERROR MESSAGE RJ CUI CLEAR UTILITY INTERLOCK PTF SUBR ENTRY/EXIT RJ RVE REPLACE VSN ENTRIES SX6 B0 RJ GVE GET VSN ENTRY SB5 EVNC NZ X4,PTF5 IF VSN IS NOT IN CATALOG RJ GUV GET USER INFORMATION FOR THIS VSN SB5 EVNF ZR X1,PTF3 IF VSN NOT ASSIGNED TO TAPE FILE MOVEBIT /ADD/FVSN,VS,VSKL*6,/UPB/FVSN SET FIRST VSN SAFET UN,VS,,SCST GENERATE FET AUDIT SB5 EVNC NZ X4,PTF5 IF ERROR IN CATALOG FOR THIS FILE SB6 FCAT SET BUFFER ADDRESSES FOR FILE AUDIT SB2 TAVS RJ UFA UNPACK FILE AUDIT SA1 /ADD/NCAT CHECK IF MULTI-FILE RJUST X1,X1,/BTC/NCAT,/UPB/NCAT NZ X1,PTF1 IF MULTI-FILE SET RJ SUI SET UTILITY INTERLOCK RELVSN UN,TAVS RELEASE FILE VIA VSN SA1 /ADD/REELC SET VSN BUFFER LENGTH RJUST X1,X1,/BTC/REELC,/UPB/REELC EQ PTF2 DELETE VSN ENTRIES PTF1 GFILEV UN,TAVS,1,FCAT,FCAT,TAVS GET MULTI FILE SX6 B7 SAVE THE VSN COUNT SA6 PTFA RJ SUI SET UTILITY INTERLOCK RELVSN UN,TAVS RELEASE FILE VIA-VSN SA1 PTFA VSN BUFFER LENGTH PTF2 LX1 2 LIST OF VSN ENTRIES LISTAB TAVS,PTFB,X1,,TSVL,VSKL*6 DELVSN PTFB,X1-PTFB DELETE ENTRIES EQ PTF4 INITIALIZE SCRATCH VSNS PTF3 RJ SUI SET UTILITY INTERLOCK DELVSN VS,1 ZR X4,PTF4 IF NO ERRORS SB5 EVNC PRESET ERROR ADDRESS SX4 X4-/EMSG/VNF ZR X4,PTF5 IF NOT IN CATALOG SB5 EVAA RESET ERROR MESSAGE ADDRESS EQ PTF5 ISSUE ERROR MESSAGE PTF4 RJ ISV INITIALIZE SCRATCH VSNS RJ CUI CLEAR UTILITY INTERLOCK ISSMSG IVRC,I ISSUE INFORMATIVE MESSAGE EQ PTFX RETURN PTFA BSS 1 VSN COUNT PTFB BSS 60 ASSIGNED VSNS REL SPACE 4,10 ** REL - PROCESS *RELEASE* DIRECTIVE. REL1 ISSMSG B5,E ISSUE ERROR MESSAGE RJ CUI CLEAR UTILITY INTERLOCK REL SUBR ENTRY/EXIT RJ SUI SET UTILITY INTERLOCK SX6 B0 RJ GVE GET VSN ENTRY SB5 EVNC NZ X4,REL1 IF VSN NOT IN CATALOG RJ GUV GET USER INFORMATION FOR VSN SB5 EVNF ZR X1,REL1 IF VSN NOT ASSIGNED MOVEBIT /ADD/FVSN,VS,VSKL*6,/UPB/FVSN SET FIRST VSN RELVSN UN,VS RELEASE FILE VIA VSN RJ CUI CLEAR UTILITY INTERLOCK ISSMSG IFRC,I ISSUE INFORMATIVE MESSAGE EQ RELX RETURN REM SPACE 4,10 ** REM - PROCESS *REMOVE* DIRECTIVE. REM2 ISSMSG B5,E ISSUE ERROR MESSAGE RJ CUI CLEAR UTILITY INTERLOCK REM SUBR ENTRY/EXIT RJ RVE REPLACE VSN ENTRIES RJ SUI SET UTILITY INTERLOCK DELVSN VS,1 DELETE VSN ZR X4,REM1 IF NO ERRORS SB5 EVNC PRESET ERROR MESSAGE ADDRESS SX4 X4-/EMSG/VNF ZR X4,REM2 IF VSN NOT IN CATALOG SB5 EVAA RESET ERROR MESSAGE ADDRESS EQ REM2 ISSUE ERROR MESSAGE REM1 RJ ISV INITIALIZE SCRATCH VSNS RJ CUI CLEAR UTILITY INTERLOCK ISSMSG IVRC,I ISSUE INFORMATIVE MESSAGE EQ REMX RETURN SCH SPACE 4,10 ** SCH - PROCESS *SOURCCH* DIRECTIVE. SCH SUBR ENTRY/EXIT CHKFIL S CHECK IF FILE SPECIFIED ZR X1,SCHX IF FILE NOT SPECIFIED SCH1 RCREC N2,5 GRENTRY N2,SCHA GET DUMMY USER RECORD ZR X6,SCH3 IF NO USERNAMES SCH2 GRENTRY N2,SCHA GET USERNAMES ZR X6,SCH3 IF END OF USERNAMES SA1 TI NZ X1,SCH3 IF TERMINAL INTERRUPT MX0 42 SA1 SCHA BX6 X0*X1 MASK USERNAME TO PROCESS SA6 UN USERAUD S,CN PROCESS USER SOURCE LISTING EQ SCH2 CHECK IF MORE USERS TO PROCESS SCH3 WRITER S WRITE END OF RECORD EQ SCHX RETURN SCHA BSS 1 SECONDARY USERNAME POINTER SOU SPACE 4,10 ** SOU - PROCESS *SOURCE* DIRECTIVE. SOU4 WRITER S WRITE END OF RECORD SOU SUBR ENTRY/EXIT CHKFIL S CHECK SOURCE FILE ZR X1,SOUX IF NO FILE RCREC N1,4 GRENTRY N1,VCAT GET RECORD ENTRY FOR DUMMY VSN ZR X6,SOU2 IF END OF VSNS SOU1 GRENTRY N1,VCAT GET RECORD ENTRY ZR X6,SOU2 IF END OF VSNS RJ VSS PROCESS SOURCE VSN ENTRY SA1 TI NZ X1,SOU4 IF TERMINAL INTERRUPT EQ SOU1 GET NEXT VSN SOU2 RCREC N2,5 GRENTRY N2,SOUA GET RECORD ENTRY OF DUMMY USER NAME ZR X6,SOU4 IF END OF USER NAMES SOU3 GRENTRY N2,SOUA GET RECORD ENTRY ZR X6,SOU4 IF END OF USER NAMES SA1 TI NZ X1,SOU4 IF TERMINAL INTERRUPT MX0 42 GET USER NAME SA1 SOUA BX6 X0*X1 SA6 UN SA6 SOUC WRITEC S,SOUB WRITE USER DIRECTIVE USERAUD SNV PROCESS USER SOURCE LIST WITH NO VSNS WRITEC S,(=C*DROP*) WRITE *DROP* DIRECTIVE EQ SOU3 CHECK NEXT USER NAME SOUA BSS 1 SECONDARY USER NAME POINTER IMAGE SOUB DATA H*USER =* INITIAL DIRECTIVE SOUC DATA C* * SUN SPACE 4,10 ** SUN - PROCESS *SOURCUN* DIRECTIVE. SUN3 WRITER S WRITE END OF RECORD SUN SUBR ENTRY/EXIT CHKFIL S CHECK SOURCE FILE ZR X1,SUNX IF NO FILE SA1 UN ZR X1,SUN1 IF MULTIPLE VSNS USERAUD S PROCESS USER SOURCE LIST EQ SUN3 WRITE END OF RECORD SUN1 RCREC N2,5 GRENTRY N2,SUNA GET RECORD ENTRY OF DUMMY USER ZR X6,SUN3 IF END OF USER NAMES SUN2 GRENTRY N2,SUNA GET RECORD ENTRY ZR X6,SUN3 IF END OF USER NAMES SA1 TI NZ X1,SUN3 IF TERMINAL INTERRUPT MX0 42 GET USER NAME SA1 SUNA BX6 X0*X1 SA6 UN USERAUD S PROCESS USER SOURCE LIST EQ SUN2 CHECK NEXT USER NAME SUNA BSS 1 SECONDARY USER NAME POINTER IMAGE SVS SPACE 4,10 * SVS - PROCESS *SOURCVS* DIRECTIVE. SVS4 WRITER S SET END OF RECORD SVS SUBR ENTRY/EXIT CHKFIL S ZR X1,SVSX IF NO SOURCE FILE SA1 VS ZR X1,SVS1 IF MULTIPLE VSNS SX6 B0 RJ GVE GET VSN ENTRY NZ X4,SVSX IF NOT FOUND RJ GUV GET USER INFORMATION ON VSN RJ VSS PROCESS VSN SOURCE LIST EQ SVS4 SET END OF RECORD SVS1 SA1 LF ZR X1,SVS2 IF NOT LOCAL FILE MODE RJ RVE REPLACE VSN ENTRIES SVS2 RCREC N1,4 GET RECORD ENTRY OF DUMMY VSN GRENTRY N1,VCAT ZR X6,SVS4 IF NO MORE ENTRIES SVS3 GRENTRY N1,VCAT ZR X6,SVS4 IF NO MORE ENTRIES SA1 TI NZ X1,SVS4 IF TERMINAL INTERRUPT RJ GUV GET USER INFORMATION ON VSN RJ VSS PROCESS VSN SOURCE LIST EQ SVS3 GET NEXT ENTRY USE SPACE 4,10 ** USE - PROCESS *USER* DIRECTIVE. USE SUBR ENTRY/EXIT RJ RVE REPLACE VSN ENTRIES SA1 UN GET USER NAME RJ IUN INTERLOCK USER NAME SX6 B1 SET USER NAME NOT FOUND SA6 UF RJ USL PROCESS USER LEVEL EQ USEX RETURN VAL SPACE 4,10 ** VAL - PROCESS *VALIDAT* DIRECTIVE. VAL2 RJ KFM SET FAMILY LEVEL K-DISPLAY VAL SUBR ENTRY/EXIT MX0 42 SRCHTAB TVUN,UN,UNCL SEARCH FOR USER NAME ZR X4,VAL2 IF ALREADY IN TABLE SRCHTAB TVUN,=0,B2,B3,B4 SEARCH FOR EMPTY ENTRY NZ X4,VAL1 IF NO ROOM LEFT IN TABLE SA2 UN SET USER NAME IN TABLE BX6 X2 SA6 A1 EQ VAL2 REWRITE FIRST RECORD VAL1 ISSMSG EVUM,E ISSUE ERROR MESSAGE EQ VAL2 REWRITE FIRST RECORD VSN SPACE 4,10 ** VSN - PROCESS *VSN* DIRECTIVE. VSN6 RJ GUV GET USER INFORMATION FOR VSN RJ SUI SET UTILITY INTERLOCK GFILEV UN,VS,1,FCAT,PCAT,TAVS GET TAPE FILE ENTRY SA1 /ADD/FBIL LJUST X1,X1,/BTC/FBIL,/UPB/FBIL NZ X1,VSN7 IF FILE BUSY SA1 /ADD/REELNO CHECK REEL NUMBER OF VSN RJUST X1,X1,/BTC/REELNO,/UPB/REELNO SX1 X1-1 ZR X1,VSN6.1 IF FIRST REEL EQUALS CURRENT REEL SA1 TAVS+/CAT/VSBF CHECK IF FIRST VSN BUSY RJUST X1,X1,/BTC/VSBF,/UPB/VSBF NZ X1,VSN7 IF FIRST VSN BUSY VSN6.1 SX6 B7 SAVE VSN COUNT SA6 VC SA1 UN RJ IUN INTERLOCK USER NAME RJ CUI CLEAR UTILITY INTERLOCK SB2 1R# REPLACE USER NAME IN ERROR MESSAGE SB3 VSNA SB5 -IVRB SA1 UN RJ SNM SET NAME IN MESSAGE RJ RVE REPLACE VSN ENTRIES ISSMSG VSNA,I ISSUE INFORMATIVE MESSAGE SX6 B1 EQ VSN4 SET VSN IN CATALOG FLAG VSN7 RJ CUI CLEAR UTILITY INTERLOCK RJ RVE REPLACE VSN ENTRIES VSN8 SX6 B0 CLEAR VSN INTERLOCK FLAG SA6 VI SB5 EVSB *VSN BUSY* ISSMSG B5,E ISSUE ERROR MESSAGE VSN SUBR ENTRY/EXIT SX6 B0 SA6 VI CLEAR VSN INTERLOCK SA6 VC CLEAR VSN COUNT SA1 NV NZ X1,VSN1 IF NO VERIFY MODE SX6 B1 FLAG VSN INTERLOCK RJ GVE GET VSN ENTRY ZR X4,VSN2 IF VSN IN CATALOG VSN1 MOVE TSVL,DVSC,VCAT SET DEFAULT VSN ENTRY MOVEBIT VS,/ADD/VSN,/BTC/VSN,,/UPB/VSN MOVEBIT VS,/ADD/PRN,/BTC/PRN,,/UPB/PRN ISSMSG IVNC,I ISSUE INFORMATIVE MESSAGE SX6 B0 EQ VSN4 CLEAR VSN IN CATALOG FLAG VSN2 SA1 /ADD/VSBF CHECK IF VSN IS BUSY RJUST X1,X1,/BTC/VSBF,/UPB/VSBF SX6 B1 ZR X1,VSN3 IF VSN NOT BUSY SA6 VI SET VSN BUSY FLAG VSN3 RJ RVB REPLACE VSN IN BUFFER SA1 /ADD/VASF CHECK IF VSN IS ASSIGNED RJUST X1,X1,/BTC/VASF,/UPB/VASF NZ X1,VSN5 IF VSN ASSIGNED SA1 VI NZ X1,VSN8 IF VSN IS BUSY AND NOT ASSIGNED ISSMSG IVIC,I ISSUE INFORMATIVE MESSAGE SX6 B1 VSN4 SA6 VF SET/CLEAR VSN IN CATALOG FLAG RJ VSL PROCESS VSN LEVEL EQ VSNX RETURN * PROCESS VSN WITH FILE CATALOG ASSIGNED. VSN5 SA1 VI ZR X1,VSN6 IF VSN NOT BUSY, BUT ASSIGNED SA1 LF NZ X1,VSN8 IF LOCAL FILE MODE SX1 ASVS CHECK FOR SCRATCH VSN SA2 VCAT+VEVS BX1 X1*X2 ZR X1,VSN6 IF *VSN* NOT SCRATCH SA1 VCAT+VEFV SA2 MX MX3 -9 MX7 -4 BX3 -X3*X1 EXTRACT EJT ORDINAL LX1 -12 BX7 -X7*X1 EXTRACT MACHINE INDEX-1 BX7 X7-X2 NZ X7,VSN8 IF NOT ASSIGNED ON THIS MACHINE RJ IJM ISSUE JSN MESSAGE SX6 B1 SET VSN IN CATALOG EQ VSN4 SET VSN IN CATALOG FLAG VSNA DATA C* VSN RESERVED BY #######.* IJM SPACE 4,10 ** IJM - ISSUE JSN MESSAGE. * * ENTRY (X3) = EJT ORDINAL. * * EXIT VSN INTERLOCKED MESSAGE ISSUED. * * USES B - 2, 3, 5. * X - 0, 1, 2. * * CALLS RCW, SNM. * * MACROS ISSMSG. IJM SUBR ENTRY/EXIT SX2 EJTP READ EJT POINTERS RJ RCW SX2 EJTE SET EJT ENTRY LENGTH LX1 24 IX2 X3*X2 SX1 X1 IX2 X1+X2 ERRNZ JSNE-0 RJ RCW READ EJT *JSNE* WORD MX0 24 SET JSN BX1 X0*X1 SB2 1R? SB3 IJMA SET MESSAGE ADDRESS SB5 -IVSI SET TEMPLATE ADDRESS RJ SNM SET NAME IN MESSAGE ISSMSG IJMA,I EQ IJMX RETURN IJMA DATA C* VSN INTERLOCKED. JSN IS ????.* QUAL * TITLE VSN LEVEL DIRECTIVE PROCESSORS. SPACE 4 QUAL LVVS VSNDIR SPACE 4,10 ** VSN LEVEL DIRECTIVE PROCESSORS. * * ENTRY FROM *DIP*. * (VF) = 0 IF VSN NOT IN CATALOG. * (VS) = VSN NAME. * (VCAT) = VSN ENTRY IMAGE. * * EXIT (EF) = 0 IF NO DIRECTIVE ERROR. ADD SPACE 4,10 ** ADD - PROCESS *ADD* DIRECTIVE. ADD1 ISSMSG B5,E ISSUE ERROR MESSAGE ADD SUBR ENTRY/EXIT SA1 VF CHECK VSN FLAG SB5 EVAI SET ERROR MESSAGE ADDRESS NZ X1,ADD1 IF VSN ALREADY IN CATALOG RJ ARV ADD/REVISE VSN ENTRY SB2 B0 RJ SMC ISSUE *SDAD* ACCOUNT FILE MESSAGE ISSMSG IVAC,I ISSUE INFORMATIVE MESSAGE RJ FAL PROCESS FAMILY LEVEL EQ ADDX RETURN DRO SPACE 4,10 ** DRO - PROCESS *DROP* DIRECTIVE. DRO SUBR ENTRY/EXIT SA1 VF ZR X1,DRO1 IF VSN NOT IN CATALOG SA1 LF NZ X1,DRO1 IF LOCAL FILE MODE RJ RVE REPLACE VSN ENTRIES SA1 VC ZR X1,DRO1 IF NOT ASSIGNED VSN MX1 UNKL*6 RJ IUN INTERLOCK USER NAME DRO1 ISSMSG IVNP,I ISSUE INFORMATIVE MESSAGE RJ FAL PROCESS FAMILY LEVEL EQ DROX RETURN OWN SPACE 4,10 ** OWN - PROCESS *OWNER* DIRECTIVE. OWN SUBR ENTRY/EXIT SA1 /ADD/OWNER GET NEW OWNERSHIP RJUST X1,X1,/BTC/OWNER,/UPB/OWNER ZR X1,OWNX IF CENTER-OWNED VSN SA1 /ADD/SYSTEM GET SYSTEM VSN FLAG RJUST X1,X1,/BTC/SYSTEM,/UPB/SYSTEM ZR X1,OWNX IF SYSTEM VSN FLAG NOT SET SX1 B0+ RESET OWNERSHIP TO CENTER-OWNED MOVEBIT A1,/ADD/OWNER,/BTC/OWNER,/BTC/OWNER-1,/UPB/OWNER ISSMSG ESVC,E * SYSTEM VSN CANNOT BE USER-OWNED.* EQ OWNX RETURN PGO SPACE 4,10 ** PGO - PROCESS *GO* DIRECTIVE. * * ENTRY (VF) = 0, IF VSN NOT IN CATALOG. * * EXIT VSN ADDED OR REVISED. * * USES A - 1. * X - 1. * * CALLS ADD, REV. PGO1 RJ ADD ADD VSN ENTRY PGO SUBR ENTRY/EXIT SA1 VF ZR X1,PGO1 IF VSN NOT IN CATALOG RJ REV REVISE VSN EQ PGOX RETURN REV SPACE 4,10 ** REV - PROCESS *REVISE* DIRECTIVE. REV7 ISSMSG B5,E ISSUE ERROR MESSAGE REV SUBR ENTRY/EXIT SA1 VF CHECK VSN FLAG SB5 EVNA SET ERROR MESSAGE ADDRESS ZR X1,REV7 IF VSN NOT IN CATALOG SA1 VC NZ X1,REV4 IF ASSIGNED VSN RJ ARV ADD/REPLACE VSN ENTRY REV1 SB2 B1 RJ SMC ISSUE *SDRV* ACCOUNT FILE MESSAGE SA4 ER PL X4,REV2 IF NO *ERROR* MESSAGE SET BX4 -X4 SB5 X4 EQ REV7 ISSUE *ERROR* MESSAGE REV2 SB5 X4 NZ B5,REV3 IF *INFORM* MESSAGE ALREADY SET SB5 IVSR SET *INFORM* MESSAGE REV3 ISSMSG B5,I ISSUE *INFORM* MESSAGE RJ FAL PROCESS FAMILY LEVEL EQ REVX RETURN REV4 MX0 VSKL*6 FIND ENTRY IN VSN TABLE SA3 VC ERRNZ TSVL-4 VSN ENTRY LENGTH NOT 2**2 LX3 2 SRCHTAB TAVS,VS,X3,TSVL MOVE TSVL,VCAT,A1 REPLACE VSN ENTRY IN TABLE SX0 UOVS+TVVS RESET OWNERSHIP AND SITE STATUSES SA1 VCAT+VEVS BX1 X0*X1 SA2 VC LX2 2 REV5 SX2 X2-TSVL NG X2,REV6 IF END OF VSN TABLE SA3 X2+TAVS+VEVS RESET STATUS BITS BX6 -X0*X3 BX6 X6+X1 SA6 A3 EQ REV5 CHECK NEXT VSN REV6 SA1 VC REPLACE VSNS ASSIGNED TO TAPE FILE LX1 2 REPVSN TAVS,X1 MX1 UNKL*6 RJ IUN INTERLOCK USER NAME EQ REV1 ISSUE *SDRV* MESSAGE STA SPACE 4,10 ** STA - PROCESS *STATUS* DIRECTIVE STA4 RJ KST SET VSN STATUS IN K-DISPLAY STA SUBR ENTRY/EXIT SA1 ME ZR X1,STA2 IF AVAILABLE SX1 X1-1 ZR X1,STA1 IF CLEANED SX1 X1-1 ZR X1,STA3 IF HOLD MOVEBIT (=1),/ADD/ERRFLAG,/BTC/ERRFLAG,0,/UPB/ERRFLAG MOVEBIT (=1),/ADD/MAINT,/BTC/MAINT,0,/UPB/MAINT EQ STA4 SET STATUS IN K-DISPLAY STA1 MOVEBIT (=0),/ADD/USAGE,/BTC/USAGE,59,/UPB/USAGE STA2 MOVEBIT (=0),/ADD/ERRFLAG,/BTC/ERRFLAG,0,/UPB/ERRFLAG MOVEBIT (=0),/ADD/MAINT,/BTC/MAINT,0,/UPB/MAINT EQ STA4 SET STATUS IN K-DISPLAY STA3 MOVEBIT (=0),/ADD/ERRFLAG,/BTC/ERRFLAG,0,/UPB/ERRFLAG MOVEBIT (=1),/ADD/MAINT,/BTC/MAINT,0,/UPB/MAINT EQ STA4 SET STATUS IN K-DISPLAY SYS SPACE 4,10 ** SYS - PROCESS *SYSTEM* DIRECTIVE. SYS SUBR ENTRY/EXIT SA1 /ADD/SYSTEM GET NEW SYSTEM VSN FLAG RJUST X1,X1,/BTC/SYSTEM,/UPB/SYSTEM SA3 VF CHECK IF VSN ALREADY IN CATALOG ZR X3,SYS2 IF VSN NOT IN CATALOG SA2 SVF BX6 X1-X2 ZR X6,SYSX IF SYSTEM VSN FLAG DID NOT CHANGE SB5 ECSV * CANNOT CHANGE SYSTEM VSN FLAG.* SYS1 SA1 SVF RESET OLD *SYSTEM* VALUE INTO VSN ENTRY MOVEBIT A1,/ADD/SYSTEM,/BTC/SYSTEM,/BTC/SYSTEM-1,/UPB/SYSTEM ISSMSG B5,E ISSUE ERROR MESSAGE EQ SYSX RETURN SYS2 ZR X1,SYSX IF SYSTEM VSN FLAG NOT SET SA1 /ADD/OWNER CHECK VSN OWNERSHIP RJUST X1,X1,/BTC/OWNER,/UPB/OWNER ZR X1,SYSX IF CENTER-OWNED VSN SB5 ESVC * SYSTEM VSN CANNOT BE USER-OWNED.* EQ SYS1 RESET OLD VALUE AND ISSUE ERROR MESSAGE VTY SPACE 4,10 ** VTY - PROCESS *VT* DIRECTIVE. VTY SUBR ENTRY/EXIT SA1 VF CHECK IF VSN ALREADY IN CATALOG ZR X1,VTYX IF VSN NOT IN CATALOG SA1 /ADD/VT GET NEW VSN TAPE TYPE RJUST X1,X1,/BTC/VT,/UPB/VT SA2 VTT BX6 X1-X2 ZR X6,VTYX IF VSN TAPE TYPE DID NOT CHANGE SA1 VTT RESET OLD *VT* VALUE INTO VSN ENTRY MOVEBIT A1,/ADD/VT,/BTC/VT,1,/UPB/VT ISSMSG ECTD,E * CANNOT CHANGE TAPE TYPE / DENSITY.* EQ VTYX RETURN SPACE 4,10 QUAL * TITLE USER LEVEL DIRECTIVE PROCESSORS. SPACE 4 QUAL LVUS USEDIR SPACE 4,10 ** USER LEVEL DIRECTIVE PROCESSORS. * * ENTRY FROM *DIP*. * (AA) = AUDIT RANDOM ADDRESS FOR K-DISPLAY. * (UF) = 0 IF FILES ASSIGNED TO USER. * (UN) = USER NAME. * * EXIT (EF) = 0 IF NO DIRECTIVE ERROR. ACN SPACE 4,10 ** ACN - PROCESS *AUDITCN* DIRECTIVE. ACN SUBR ENTRY/EXIT NEWPAGE PFIA,PFIAL SET PAGE HEADER USERAUD A,CN PROCESS USER AUDIT LIST NEWPAGE PDIR,PDIRL,NP FORCE NEW PAGE FOR NEXT DIRECTIVE EQ ACNX FORCE NEW PAGE AFI SPACE 4,10 ** AFI - PROCESS *AUDITFI* DIRECTIVE. AFI SUBR ENTRY/EXIT NEWPAGE PFIA,PFIAL FORCE NEW PAGE GFILE UN,FI,FCAT,PCAT,TAVS GET FILE VIA FILE ID NZ X4,AFIX IF FILE NOT FOUND RJ FIA PROCESS FILE AUDIT NEWPAGE PDIR,PDIRL,NP FORCE NEW PAGE FOR NEXT DIRECTIVE EQ AFIX RETURN AFV SPACE 4,10 ** AFV - PROCESS *AUDITFV* DIRECTIVE. AFV SUBR ENTRY/EXIT NEWPAGE PFIA,PFIAL FORCE NEW PAGE USERAUD A,,VS PROCESS USER AUDIT LIST NEWPAGE PDIR,PDIRL,NP FORCE NEW PAGE FOR NEXT DIRECTIVE EQ AFVX RETURN DRO SPACE 4,10 ** DRO - PROCESS *DROP* DIRECTIVE. DRO SUBR ENTRY/EXIT MX1 42 SET GENERAL USER NAME INTERLOCK RJ IUN INTERLOCK USER NAME ISSMSG IULC,I ISSUE INFORMATIVE MESSAGE RJ FAL PROCESS FAMILY LEVEL EQ DROX RETURN FIL SPACE 4,10 ** FIL - PROCESS *FILE* DIRECTIVE. FIL3 ISSMSG B5,E ISSUE ERROR MESSAGE FIL SUBR ENTRY/EXIT SA4 NV GET FILE VIA FILE ID GFILE UN,FI,FCAT,PCAT,TAVS,X4 ZR X4,FIL1 IF FILE FOUND SX6 B0 PRESET URDATE FIELD SA6 TAVS+/CAT/URDATE SA6 TAVS+/CAT/NEWRDT RJ UFC UNPACK FILE CATALOG INTO DIRECT CELLS ISSMSG IFNR,I ISSUE INFORMATIVE MESSAGE SX6 B0 EQ FIL2 CLEAR RESERVE FLAG FIL1 RJ UFC UNPACK FILE CATALOG INTO DIRECT CELLS SA1 /ADD/FBIL CHECK IF FILE IS BUSY RJUST X1,X1,/BTC/FBIL,/UPB/FBIL SB5 EFIB NZ X1,FIL3 IF FILE IS BUSY ISSMSG IFIR,I ISSUE INFORMATIVE MESSAGE SX6 B1 SET RESERVE FLAG FIL2 SA6 RF SA1 VC CLEAR NEXT VSN ENTRY IN TABLE LX1 2 SX6 B0 SA6 X1+TAVS SA6 AV CLEAR NEW VSN TABLE ADDRESS RJ KVQ SET FIRST VSN AND SEQUENCE IN K-DISPLAY RJ KAV SET ASSIGNED VSNS IN K-DISPLAY RJ //FIL PROCESS FILE LEVEL EQ FILX RETURN FIV SPACE 4,10 ** FIV - PROCESS *FILEV* DIRECTIVE. FIV4 ISSMSG B5,E ISSUE ERROR MESSAGE FIV SUBR ENTRY/EXIT MX0 VSKL*6 SET FIRST VSN SA1 FV BX6 X0*X1 SA6 A1 SA6 VS BX3 -X0*X1 SET SEQUENCE NUMBER SA4 NV GET FILE VIA VSN GFILEV UN,FV,X3,FCAT,PCAT,TAVS,X4 ZR X4,FIV2 IF FILE FOUND PL X4,FIV1 IF DEFAULT IS SET SX4 X4+B1 CHECK IF INCORRECT SEQUENCE NUMBER SB5 EIQN ZR X4,FIV4 IF INCORRECT SEQUENCE NUMBER SB5 EVNV EQ FIV4 ISSUE ERROR MESSAGE FIV1 RJ UFC UNPACK FILE CATALOG INTO DIRECT CELLS RJ SDD SET DEFAULT DENSITY ISSMSG IFNR,I ISSUE INFORMATIVE MESSAGE SX6 B0 CLEAR NEW VSN TABLE ADDRESS SA6 AV SA1 QN SX1 X1-1 NZ X1,FIV3 IF NOT FIRST FILE SX6 TAVS SET NEW VSN TABLE ADDRESS SA6 AV SX6 B0 EQ FIV3 CLEAR RESERVE FLAG FIV2 RJ UFC UNPACK FILE CATALOG INTO DIRECT CELLS SA1 /ADD/FBIL CHECK IF FILE IS BUSY RJUST X1,X1,/BTC/FBIL,/UPB/FBIL SB5 EFIB NZ X1,FIV4 IF FILE IS BUSY ISSMSG IFIR,I ISSUE INFORMATIVE MESSAGE SX6 B0 CLEAR NEW VSN TABLE ADDRESS SA6 AV SX6 B1 SET RESERVE FLAG FIV3 SA6 RF SA1 VC CLEAR NEXT VSN ENTRY IN TABLE LX1 2 SX6 B0 SA6 X1+TAVS RJ KVQ SET FIRST VSN AND SEQUENCE IN K-DISPLAY RJ KAV SET ASSIGNED VSNS IN K-DISPLAY RJ //FIL PROCESS FILE LEVEL EQ FIVX RETURN MCN SPACE 4,10 ** MCN - PROCESS *MREADCN* DIRECTIVE. MCN SUBR ENTRY/EXIT CHKFIL SS CHECK MACHINE READABLE FILE ZR X1,MCNX IF NO FILE USERAUD M,CN PROCESS MACHINE READABLE LIST WRITER SS WRITE END OF RECORD EQ MCNX RETURN MFI SPACE 4,10 ** MFI - PROCESS *MREADFI* DIRECTIVE. MFI SUBR ENTRY/EXIT CHKFIL SS ZR X1,MFIX IF NO MACHINE READABLE FILE GFILE UN,FI,FCAT,PCAT,TAVS GET FILE VIA FILE ID NZ X4,MFIX IF FILE NOT FOUND RJ PMF PROCESS FILE MACHINE READABLE WRITER SS SET END OF RECORD EQ MFIX RETURN MFV SPACE 4,10 ** MFV - PROCESS *MREADFV* DIRECTIVE. MFV SUBR ENTRY/EXIT CHKFIL SS ZR X1,MFVX IF NO MACHINE READABLE FILE USERAUD M,,VS PROCESS MACHINE READABLE LIST WRITER SS SET END OF RECORD EQ MFVX RETURN RLF SPACE 4,10 ** RLF - PROCESS *RELEASF* DIRECTIVE. RLF1 ISSMSG EFNI,E ISSUE ERROR MESSAGE RLF SUBR ENTRY/EXIT GFILE UN,FI,FCAT,PCAT,TAVS GET FILE VIA FILE ID NZ X4,RLF1 IF FILE NOT FOUND MOVEBIT TAVS+/CAT/VSN,VS,/BTC/VSN,/UPB/VSN SET VSN RELVSN UN,VS RELEASE FILE VIA VSN ISSMSG IFRC,I ISSUE INFORMATIVE MESSAGE SAFET UN,,,FCST CHECK IF FILES ASSIGNED SX6 X4 SET/CLEAR USER NAME FOUND FLAG SA6 UF RJ USL PROCESS USER LEVEL EQ RLFX RETURN RLV SPACE 4,10 ** RLV - PROCESS *RELEASV* DIRECTIVE. RLV3 ISSMSG EFNI,E ISSUE ERROR MESSAGE RLV SUBR ENTRY/EXIT SX6 B0 RJ GVE GET VSN ENTRY NZ X4,RLV3 IF VSN NOT IN CATALOG SA1 /ADD/FVSN CHECK FIRST VSN LJUST X1,X6,/BTC/FVSN,/UPB/FVSN SA1 LF ZR X1,RLV1 IF NOT LOCAL FILE MODE MX0 VSKL*6 SA1 VS SAVE VSN BX6 X0*X1 SA6 A1 BX3 -X0*X1 EQ RLV2 RELEASE VSN RLV1 SA6 VS SET VSN TO FIRST VSN SX3 B1+ RLV2 RELVSN UN,VS,X3 RELEASE VSN NZ X4,RLV3 IF FILE NOT FOUND ISSMSG IFRC,I ISSUE INFORMATIVE MESSAGE SAFET UN,,,FCST CHECK IF FILES ASSIGNED SX6 X4 SET/CLEAR USER NAME FOUND FLAG SA6 UF RJ USL PROCESS USER LEVEL EQ RLVX RETURN SCN SPACE 4,10 ** SCN - PROCESS *SOURCCN* DIRECTIVE. SCN SUBR ENTRY/EXIT CHKFIL S CHECK SOURCE FILE ZR X1,SCNX IF NO FILE USERAUD S,CN PROCESS USER SOURCE LIST WRITER S WRITE END OF RECORD EQ SCNX RETURN SFI SPACE 4,10 ** SFI - PROCESS *SOURCFI* DIRECTIVE. SFI SUBR ENTRY/EXIT CHKFIL S ZR X1,SFIX IF NO SOURCE FILE GFILE UN,FI,FCAT,PCAT,TAVS GET FILE VIA FILE ID NZ X4,SFIX IF FILE NOT FOUND SX6 B0 FLAG DO NOT SKIP FIRST VSN RJ PSF PROCESS FILE SOURCE WRITER S SET END OF RECORD EQ SFIX RETURN SFV SPACE 4,10 ** SFV - PROCESS *SOURCFV* DIRECTIVE. SFV SUBR ENTRY/EXIT CHKFIL S ZR X1,SFVX IF NO SOURCE FILE USERAUD S,,VS PROCESS USER SOURCE LIST WRITER S SET END OF RECORD EQ SFVX RETURN SDD SPACE 4,15 ** SDD - SET DEFAULT DENSITY IN FILE CATALOG. * * ENTRY (VS) = VSN. * FILE CATALOG ENTRY IN *FCAT* BUFFER. * * EXIT (DE) = DEFAULT FILE DENSITY FOR VSN TAPE TYPE. * NEW FILE DENSITY SET IN FILE CATALOG ENTRY. * VSN ENTRY IN *VCAT* BUFFER. * * USES X - 1, 6. * A - 1, 6. * * CALLS GVE. * * MACROS MOVEBIT, RJUST. SDD SUBR ENTRY/EXIT RJ GVE GET VSN ENTRY SA1 /ADD/VT GET VSN TAPE TYPE RJUST X1,X1,/BTC/VT,/UPB/VT SA1 X1+SDDA SET DEFAULT DENSITY FOR TAPE TYPE BX6 X1 SA6 DE MOVEBIT A1,/ADD/D,/BTC/D,5,/UPB/D EQ SDDX RETURN SDDA BSS 0 DEFAULT DENSITIES (INDEXED BY TAPE TYPE) CON 44B PE DENSITY (MT/NT TAPE TYPE) CON 26B CE DENSITY (CT TAPE TYPE) CON 0 CON 66B AE DENSITY (AT TAPE TYPE) QUAL * TITLE FILE LEVEL DIRECTIVE PROCESSORS. SPACE 4 QUAL LVFI FIL SPACE 4,30 ** FILE LEVEL DIRECTIVE PROCESSORS. * * ENTRY (AV) = ADDRESS OF NEW VSNS WITHIN *TAVS*. * (CA) = RANDOM ADDRESS OF FILE CATALOG. * (CN) = CHARGE NUMBER. * (EV) = EXTERNAL VSN. * (FC) = MAXIMUM FRAME COUNT. * (FI) = ORIGINAL FILE IDENTIFIER. * (FV) = FIRST VSN. * (NI) = NEW FILE IDENTIFIER. * (NS) = NOISE SIZE. * (PA) = PREVIOUS FILE RANDOM ADDRESS. * (QN) = SEQUENCE NUMBER. * (RC) = REEL COUNT. * (RF) = 0 IF FILE NOT RESERVED. * (ST) = ASSIGNED VSNS STATUS BITS. * (SV) = 0 IF NOT SYMBOLIC ACCESS. * (UF) = 0 IF FILES ASSIGNED TO USER. * (UN) = USER NAME. * (VC) = VSN COUNT. * (FCAT) = FILE CATALOG IMAGE. * (TAVS) = ASSIGNED VSNS IMAGE. * * EXIT (EF) = 0 IF NO DIRECTIVE ERROR. AAU SPACE 4,10 ** AAU - PROCESS *AUDITAU* DIRECTIVE. AAU3 NEWPAGE PDIR,PDIRL,NP FORCE NEW PAGE FOR NEXT DIRECTIVE AAU SUBR ENTRY/EXIT SA1 UN GET USER NAME RJ SFN SPACE FILL NAME BX1 X6 SET USER NAME IN HEADER MOVEBIT A1,/PAUA/USER,UNKL*6,,/PAUAU/USER MOVEBIT FI,/PAUA/FILE,FIKL*6,,/PAUAU/FILE SET FILE ID SA1 /PAUA/FILE CHECK FOR EXTRA END OF LINES SB3 /PAUAU/FILE RJ CFI CHECK FILE IDENTIFIER IN OUTPUT SA1 FV GET FIRST VSN RJ SFN SPACE FILL NAME BX1 X6 SET FIRST VSN IN HEADER MOVEBIT A1,/PAUA/FVSN,VSKL*6,,/PAUAU/FVSN SA1 QN GET SEQUENCE NUMBER SX1 X1+10000 RJ CDD CONVERT TO DECIMAL DISPLAY MX0 -24 SET SEQUENCE NUMBER IN HEADER BX1 -X0*X6 MOVEBIT A1,/PAUA/QN,4*6,23,/PAUAU/QN NEWPAGE PAUA,PAUAL FORCE NEW PAGE SA1 AU ZR X1,AAU1 IF MULTIPLE USER AUDIT RJ GAE GET ALTERNATE USER ENTRY SA1 RF ZR X1,AAU3 IF FILE NOT RESERVED NZ X4,AAU3 IF ALTERNATE USER NOT FOUND RJ AUA PROCESS ALTERNATE USER AUDIT EQ AAU3 RETURN AAU1 RJ RAE REPLACE ALTERNATE USER ENTRIES SA1 /ADD/AUCAT GET ADMIT CATALOG RANDOM ADDRESS RJUST X1,X1,/BTC/AUCAT,/UPB/AUCAT ZR X1,AAU3 IF NO ADMIT CATALOG RCREC N4,X1 AAU2 GRENTRY N4,ACAT GET RECORD ENTRY ZR X6,AAU3 IF NO MORE ENTRIES SA1 TI NZ X1,AAU3 IF TERMINAL INTERRUPT RJ AUA PROCESS ALTERNATE USER AUDIT EQ AAU2 GET NEXT ENTRY AUS SPACE 4,10 ** AUS - PROCESS *AUSER* DIRECTIVE. AUS7 ISSMSG B5,E ISSUE ERROR MESSAGE AUS SUBR ENTRY/EXIT SA1 NV NZ X1,AUS1 IF NO VERIFY MODE SA1 RF CHECK RESERVE FLAG SB5 EFNR SET ERROR MESSAGE ADDRESS ZR X1,AUS7 IF FILE NOT RESERVED RJ GAE GET ALTERNATE USER ENTRY ZR X4,AUS5 IF ENTRY FOUND ISSMSG IANA,I ISSUE INFORMATIVE MESSAGE SX6 B0 EQ AUS6 CLEAR ALTERNATE USER FLAG AUS1 SA1 RF NZ X1,AUS4 IF FILE RESERVED SA1 SV NZ X1,AUS2 IF SYMBOLIC ACCESS SA3 QN GET FILE VIA VSN GFILEV UN,FV,X3,FCAT,PCAT,TAVS SB5 EFNR NZ X4,AUS7 IF FILE NOT RESERVED EQ AUS3 UNPACK FILE CATALOG AUS2 GFILE UN,FI,FCAT,PCAT,TAVS GET FILE VIA FILE ID SB5 EFNR NZ X4,AUS7 IF FILE NOT RESERVED AUS3 RJ UFC UNPACK FILE CATALOG INTO DIRECT CELLS SX6 B1 SET RESERVED FLAG SA6 RF SA1 VC CLEAR NEXT VSN ENTRY IN TABLE LX1 2 SX6 B0 SA6 X1+TAVS SA6 AV CLEAR NEW VSN TABLE ADDRESS RJ KVQ SET FIRST VSN AND SEQUENCE IN K-DISPLAY RJ KAV SET ASSIGNED VSNS IN K-DISPLAY AUS4 MOVE TAEL,DAUC,ACAT SET DEFAULT ALTERNATE USER MOVEBIT AU,/ADD/AUSER,/BTC/AUSER,,/UPB/AUSER SX6 B0 EQ AUS6 CLEAR ALTERNATE USER FLAG AUS5 ISSMSG IAIA,I ISSUE INFORMATIVE MESSAGE SX6 B1 SET ALTERNATE USER FLAG AUS6 SA6 AF RJ AUL PROCESS ALTERNATE USER EQ AUSX RETURN ALT SPACE 4,10 ** ALT - PROCESS *AMEND* DIRECTIVE. ALT1 ISSMSG B5,E ISSUE ERROR MESSAGE ALT SUBR ENTRY/EXIT SA1 RF CHECK RESERVE FLAG SB5 EFNR SET ERROR MESSAGE ADDRESS ZR X1,ALT1 IF FILE NOT RESERVED RJ RAF RESERVE/AMEND FILE CATALOG ENTRY ISSMSG IFAL,I ISSUE INFORMATIVE MESSAGE RJ SMF ISSUE *SDAM* ACCOUNT FILE MESSAGE RJ USL PROCESS USER LEVEL EQ ALTX RETURN AVS SPACE 4,10 ** AVS - PROCESS *AVSN* DIRECTIVE. AVS8 ISSMSG B5,E ISSUE ERROR MESSAGE REPVSN VCAT,TSVL REPLACE VSN ENTRY EQ AVSX RETURN AVS9 ISSMSG B5,E ISSUE ERROR MESSAGE AVS SUBR ENTRY/EXIT SA1 /ADD/NCAT CHECK IF LAST FILE RJUST X1,X1,/BTC/NCAT,/UPB/NCAT SB5 EAVM NZ X1,AVS9 IF NOT LAST FILE SA3 VC CHECK VSN BUFFER LENGTH LX3 2 ZR X3,AVS2 IF NO VSNS ASSIGNED SA1 RC NZ X1,AVS1 IF REELS ASSIGNED TO THIS FILE SA2 X3+TAVS-4 COMPARE TO LAST VSN SA4 VS BX4 X4-X2 LJUST X4,X4,VSKL*6,59 NZ X4,AVS1 IF NOT LAST VSN SX6 X1+B1 INCREMENT REEL COUNT SA6 A1 SA1 VS SET EXTERNAL VSN BX6 X1 SA6 EV SX6 A2 SET NEW VSN TABLE ADDRESS SA6 AV EQ AVS7 CLEAR NEXT ENTRY AVS1 MX0 VSKL*6 CHECK IF VSN IS ALREADY ASSIGNED SRCHTAB TAVS,VS,X3,4 SB5 EVAA ZR X4,AVS9 IF ALREADY ASSIGNED MOVE TSVL,DVSC,VCAT SET DEFAULT VSN ENTRY AVS2 LISTVSN VS,VCAT,1 GET VSN ENTRY SB5 EVNC NZ X4,AVS9 IF VSN NOT FOUND SA1 /ADD/VSBF CHECK IF VSN IS BUSY RJUST X1,X1,/BTC/VSBF,/UPB/VSBF SB5 EVSB NZ X1,AVS9 IF VSN IS BUSY SA1 /ADD/VT GET TAPE TYPE BITS FOR VSN ENTRY RJUST X1,X1,/BTC/VT,/UPB/VT SA2 /ADD/TTYP GET TAPE TYPE FIELD FROM TAPE FILE CATALOG RJUST X2,X2,/BTC/TTYP,/UPB/TTYP SX6 X2-2 NZ X6,AVS2.1 IF NOT *NT* SX2 B0+ SET TAPE TYPE TO *MT/NT* AVS2.1 BX1 X1-X2 COMPARE TAPE TYPES SB5 ENMT NZ X1,AVS8 IF TAPE TYPES DO NOT MATCH SA1 LF NZ X1,AVS3 IF LOCAL FILE MODE SA1 /ADD/NVSN CHECK IF LAST VSN LJUST X1,X1,/BTC/NVSN,/UPB/NVSN SB5 EVAA NZ X1,AVS8 IF NOT LAST VSN AVS3 SA1 VC ZR X1,AVS5 IF NO VSNS ASSIGNED SA1 /ADD/VASF CHECK IF VSN IS ASSIGNED RJUST X1,X1,/BTC/VASF,/UPB/VASF SB5 EVAA NZ X1,AVS8 IF VSN ALREADY ASSIGNED SA1 VCAT+VEVS SX0 SVVS SB5 ESVM BX2 X0*X1 NZ X2,AVS8 IF SYSTEM VSN SX0 UOVS+TVVS CHECK IF STATUSES MATCH SA2 ST BX1 X1-X2 BX2 X0*X1 SB5 ENMS NZ X2,AVS8 IF STATUSES DO NOT MATCH SX0 CTVS+ACVS CHECK IF TAPE TYPES MATCH SB5 ENMT BX2 X0*X1 NZ X2,AVS8 IF TAPE TYPES DO NOT MATCH SA3 VC INCREMENT VSN COUNT SX6 X3+B1 SA6 A3 LX3 2 SA1 AV NZ X1,AVS4 IF NOT FIRST ADDED VSN SX6 X3+TAVS SET NEW VSN TABLE ADDRESS SA6 A1 AVS4 MOVE TSVL,VCAT,X3+TAVS SET NEW VSN IN TABLE SA1 RC INCREMENT REEL COUNT SX6 X1+B1 SA6 A1 NZ X1,AVS7 IF NOT FIRST REEL SA1 VS SET EXTERNAL VSN BX6 X1 SA6 EV EQ AVS7 CLEAR NEXT ENTRY AVS5 SA1 /ADD/VASF RJUST X1,X1,/BTC/VASF,/UPB/VASF NZ X1,AVS6 IF VSN ASSIGNED SA1 TAVS+/CAT/URDATE RESTORE RELEASE DATE MOVEBIT A1,/ADD/URDATE,/BTC/URDATE,/UPB/URDATE,/UPB/URDATE SA1 TAVS+/CAT/NEWRDT RESTORE NEW RELEASE DATE FLAG MOVEBIT A1,/ADD/NEWRDT,/BTC/NEWRDT,/UPB/NEWRDT,/UPB/NEWRDT SX6 TAVS SET NEW VSN TABLE ADDRESS SA6 AV MOVE TSVL,VCAT,TAVS SET NEW VSN IN TABLE SX6 B1 SET VSN COUNT SA6 VC SA6 RC SET REEL COUNT SA1 VS SET EXTERNAL VSN BX6 X1 SA6 EV EQ AVS7 CLEAR NEXT ENTRY AVS6 SA1 /ADD/NVSN CHECK IF LAST VSN LJUST X1,X1,/BTC/NVSN,/UPB/NVSN SB5 EVAA NZ X1,AVS8 IF NOT LAST VSN GFILEV UN,VS,10000,PCAT,PCAT,TAVS GET LAST FILE SX4 X4+B1 SB5 EVAA NG X4,AVS8 IF VSN NOT AVAILABLE SA7 PA SET PREVIOUS FILE RANDOM ADDRESS SX6 B6+B1 SET SEQUENCE NUMBER SA6 QN SX6 B7 SET VSN COUNT SA6 VC LX6 2 SET NEW VSN TABLE ADDRESS SX6 X6+TAVS-4 SA6 AV SX6 B1 SET REEL COUNT SA6 RC SA1 VS SET EXTERNAL VSN BX6 X1 SA6 EV AVS7 SA1 VC CLEAR NEXT VSN ENTRY LX1 2 SX6 B0 SA6 X1+TAVS SX0 UOVS+TVVS+CTVS+ACVS SET STATUS BITS SA1 VCAT+1 BX1 X0*X1 MOVEBIT A1,ST,18,17,17 MOVEBIT TAVS+/CAT/VSN,FV,/BTC/VSN SET FIRST VSN RJ //PFC PACK FILE CATALOG RJ KVQ SET FIRST VSN AND SEQUENCE IN K-DISPLAY RJ KAV SET ASSIGNED VSNS IN K-DISPLAY EQ AVSX RETURN DEN SPACE 4,10 ** DEN - PROCESS *D* DIRECTIVE. DEN SUBR ENTRY/EXIT SA1 /ADD/EVSN MX0 36 BX1 X0*X1 ZR X1,DENX IF NO VSN-S ASSIGNED SA1 /ADD/TTYP GET NEW TAPE TYPE RJUST X1,X1,/BTC/TTYP,/UPB/TTYP SA2 DE AX2 4 BX6 X1-X2 ZR X6,DENX IF NEW DENSITY DOES NOT CHANGE TAPE TYPE SA1 DE RESET OLD VALUE INTO TAPE CATALOG ENTRY MOVEBIT A1,/ADD/D,/BTC/D,5,/UPB/D ISSMSG ECTD,E * CANNOT CHANGE TAPE TYPE / DENSITY.* EQ DENX RETURN DRO SPACE 4,10 ** DRO - PROCESS *DROP* DIRECTIVE. DRO SUBR ENTRY/EXIT SA1 VC REPLACE ORIGINAL VSNS LX1 2 REPVSN TAVS,X1 ISSMSG IFNP,I ISSUE INFORMATIVE MESSAGE RJ USL PROCESS USER LEVEL EQ DROX RETURN PGO SPACE 4,10 ** PGO - PROCESS *GO* DIRECTIVE. * * ENTRY (RF) = 0, IF FILE NOT RESERVED. * * EXIT VSN AMENDED OR RESERVED. * * USES A - 1. * X - 1. * * CALLS ALT, RES. PGO1 RJ RES RESERVE FILE PGO SUBR ENTRY/EXIT SA1 RF ZR X1,PGO1 IF FILE NOT RESERVED RJ ALT AMEND FILE EQ PGOX RETURN PFI SPACE 4,10 ** PFI - PROCESS *FI* DIRECTIVE. PFI4 MOVEBIT NI,/ADD/FI,/BTC/FI,,/UPB/FI RESET NEW FILE ID ISSMSG EFIC,E ISSUE ERROR MESSAGE PFI SUBR ENTRY/EXIT SA1 SV ZR X1,PFI3 IF NOT SYMBOLIC ACCESS MOVEBIT /ADD/FI,PFIA,/BTC/FI,/UPB/FI GET NEW FILE ID SA1 PFIA COMPARE FILE IDS SA2 A1+B1 SA3 FI BX3 X3-X1 NZ X3,PFI1 IF NOT THE SAME AS ORIGINAL FILE ID SA3 A1+B1 BX3 X3-X2 ZR X3,PFI3 IF THE SAME AS ORIGINAL FILE ID PFI1 SA3 NI BX3 X3-X1 NZ X3,PFI2 IF NOT THE SAME AS NEW FILE ID SA3 A3+B1 BX3 X3-X2 NZ X3,PFI3 IF THE SAME AS NEW FILE ID PFI2 SA1 NV NZ X1,PFI3 IF NO VERIFY MODE SAFET UN,,PFIA,SCST CHECK IF FILE EXISTS ZR X4,PFI4 IF ANOTHER FILE HAS THAT NAME PFI3 MOVEBIT /ADD/FI,NI,/BTC/FI,/UPB/FI SET NEW FILE ID EQ PFIX RETURN PFIA BSS 2 NEW FILE IDENTIFIER PSV SPACE 4,10 ** PSV - PROCESS *SV* DIRECTIVE. PSV3 MOVEBIT SV,/ADD/SV,/BTC/SV,/BTC/SV-1,/UPB/SV ISSMSG EFIC,E ISSUE ERROR MESSAGE PSV SUBR ENTRY/EXIT SA1 /ADD/SV CHECK IF SYMBOLIC ACCESS RJUST X1,X1,/BTC/SV,/UPB/SV ZR X1,PSV2 IF CHANGE TO NOT SYMBOLIC ACCESS SA1 SV CHECK IF ALREADY SYMBOLIC ACCESS NZ X1,PSVX IF ALREADY SYMBOLIC ACCESS SA1 NI CHECK NEW FILE IDENTIFIER SA2 A1+B1 SA3 =10H BX3 X3-X1 ZR X3,PSV3 IF INCORRECT FILE ID SA3 FI BX3 X3-X1 NZ X3,PSV1 IF NOT THE SAME AS ORIGINAL FILE ID SA3 A3+B1 BX3 X3-X2 ZR X3,PSV2 IF THE SAME AS ORIGINAL FILE ID PSV1 SA1 NV NZ X1,PSV2 IF NO VERIFY MODE SAFET UN,,NI,SCST CHECK FILE EXISTS ZR X4,PSV3 IF FILE ALREADY EXISTS PSV2 MOVEBIT /ADD/SV,SV,/BTC/SV,/UPB/SV,/BTC/SV-1 EQ PSVX RETURN RDA SPACE 4,10 ** RDA - CONVERT RDATE TO URDATE. * * USES X - ALL. * A - 2, 4. * B - 3, 4, 5, 6. * * CALLS URD. * * MACROS MOVEBIT. RDA SUBR ENTRY/EXIT SA2 RDAA GET CONDITIONAL RELEASE DATE SX6 B0 ZR X2,RDA7 IF NO RELEASE DATE SX5 CRDP GET TERM MX0 -12 BX1 -X0*X5 MX0 -6 UNPACK DATE BX3 -X0*X2 SB3 X3 DAY AX2 6 BX3 -X0*X2 SB4 X3 MONTH AX2 6 BX2 -X0*X2 SB5 X2 YEAR MX0 -2 MASK FOR LEAP YEAR * ADVANCE YEAR. RDA1 SX4 X1-366D (TERM REMAINING) - (DAYS IN LEAP YEAR) NG X4,RDA4 IF LESS THAN 1 YEAR REMAINING SB5 B5+B1 ADD 1 YEAR TO EXPIRATION DATE SX3 B5+B1 SB6 B1+B1 BX2 -X0*X3 ZR X2,RDA2 IF CURRENT YEAR IS A LEAP YEAR SX2 X3+B1 YEAR + 1 + LEAP YEAR OFFSET BX2 -X0*X2 NZ X2,RDA3 IF NEXT YEAR IS NOT A LEAP YEAR LE B4,B6,RDA3 IF BEFORE LEAP DAY SX1 X1-1 SUBTRACT 1 DAY TO OFFSET LEAP DAY EQ RDA3 SUBTRACT 1 YEAR FROM TERM RDA2 GT B4,B6,RDA3 IF AFTER LEAP DAY SX1 X1-1 SUBTRACT 1 DAY TO OFFSET LEAP DAY RDA3 SX1 X1-365D SUBTRACT 1 YEAR FROM TERM EQ RDA1 CONTINUE PROCESSING * ADVANCE MONTH. RDA4 SA4 RDAB-1+B4 GET DAYS IN CURRENT MONTH SX7 B4-2 NZ X7,RDA5 IF CURRENT MONTH NOT FEBRUARY SX2 B5+2 BX7 -X0*X2 NZ X7,RDA5 IF NOT LEAP YEAR SX4 X4+B1 ADD LEAP DAY RDA5 SX2 B3+ IX2 X4-X2 DAYS TO END OF CURRENT MONTH IX3 X1-X2 SUBTRACT FROM TERM REMAINING NG X3,RDA6 IF NOT ENOUGH TERM REMAINING TO FILL MONTH ZR X3,RDA6 IF TERM EXACTLY FILLS CURRENT MONTH SB3 B0+ SB4 B4+B1 INCREMENT MONTH BX1 X3 SET NEW TERM SX7 B4-13 NZ X7,RDA4 IF NOT END OF YEAR SB5 B5+B1 INCREMENT YEAR SB4 B1 SET MONTH TO JANUARY EQ RDA4 CONTINUE * RETURN NEW PACKED DATE. RDA6 SB3 X1+B3 SET DAYS SX6 B5 ADD IN YEAR LX6 6 SX6 X6+B4 ADD IN MONTH LX6 6 SX6 X6+B3 ADD IN DAY RDA7 SA6 RDAA MOVEBIT A6,TAVS+/CAT/URDATE,/BTC/URDATE,17,/UPB/URDATE RJ URD PROCESS UNCONDITIONAL RELEASE DATE EQ RDAX RETURN RDAA CON 0 PACKED CONDITIONAL/UNCONDITIONAL DATE RDAB BSS 0 TABLE OF DAYS IN MONTH LOC 1 CON 31 JANUARY CON 28 FEBRUARY CON 31 MARCH CON 30 APRIL CON 31 MAY CON 30 JUNE CON 31 JULY CON 31 AUGUST CON 30 SEPTEMBER CON 31 OCTOBER CON 30 NOVEMBER CON 31 DECEMBER LOC *O RES SPACE 4,10 ** RES - PROCESS *RESERVE* DIRECTIVE. RES2 ISSMSG B5,E ISSUE ERROR MESSAGE RES SUBR ENTRY/EXIT SA1 RF CHECK RESERVE FLAG SB5 EFAR SET ERROR MESSAGE ADDRESS NZ X1,RES2 IF FILE ALREADY RESERVED SA1 RC SB5 ERDM *REQUIRED DATA MISSING.* ZR X1,RES2 IF NO VSNS ASSIGNED SA1 UF ZR X1,RES1 IF USER NAME ALREADY IN FILE RESETP N2 INSERT USER NAME WRITFET X2,UN,1 CALLTFM X2,IUES RES1 RJ RAF RESERVE/AMEND FILE CATALOG ENTRY ISSMSG IFRE,I ISSUE INFORMATIVE MESSAGE SX6 B0 FLAG USER NAME FOUND SA6 UF RJ USL PROCESS USER LEVEL EQ RESX RETURN URD SPACE 4,10 ** URD - SET URDATE FLAG. * * EXIT (RS) = 1. * * USES X - 6. * A - 6. * * MACROS MOVEBIT. URD SUBR ENTRY/EXIT SX6 B1 FLAG *URDATE* ISSUED SA6 RS SA1 TAVS+/CAT/URDATE CHECK RELEASE DATE RJUST X1,X6,/BTC/URDATE,/UPB/URDATE SA1 =1 NZ X6,URD1 IF DATE SET SA1 =0 URD1 MOVEBIT A1,TAVS+/CAT/NEWRDT,/BTC/NEWRDT,0,/UPB/NEWRDT EQ URDX RETURN QUAL * TITLE ALTERNATE USER LEVEL PROCESSORS. SPACE 4 QUAL LVAU AUS SPACE 4,15 ** ALTERNATE USER LEVEL DIRECTIVE PROCESSORS. * * ENTRY FROM *DIP*. * (AF) = 0 IF ALTERNATE USER NOT ADMITTED. * (AU) = ALTERNATE USER NAME. * (FV) = FIRST VSN. * (QN) = SEQUENCE NUMBER. * (UN) = USER NAME. * (ACAT) = ALTERNATE USER CATALOG IMAGE. * (FCAT) = FILE CATALOG IMAGE. * * EXIT (EF) = 0 IF NO DIRECTIVE ERROR. ADM SPACE 4,10 ** ADM - PROCESS *ADMIT* DIRECTIVE. ADM SUBR ENTRY/EXIT RJ RAB REPLACE ALTERNATE USER IN BUFFER SA1 AF CHECK ADMIT FLAG SB5 IAUU PRESET INFORMATIVE MESSAGE ADDRESS NZ X1,ADM2 IF OLD ADMIT ENTRY SA1 /ADD/AUCAT CHECK ADMIT RANDOM ADDRESS RJUST X1,X1,/BTC/AUCAT,/UPB/AUCAT NZ X1,ADM1 IF NOT FIRST ALTERNATE USER RJ RAE REPLACE ALTERNATE USER ENTRIES SA3 QN RESET ADMIT RANDOM ADDRESS GFILEV UN,FV,X3,ADMA,PCAT,TAVS MOVEBIT ADMA+/CAT/AUCAT,/ADD/AUCAT,24 ADM1 SB5 IAUA ADM2 ISSMSG B5,I ISSUE INFORMATIVE MESSAGE RJ FIL PROCESS FILE LEVEL EQ ADMX RETURN ADMA BSS TCEL FILE CATALOG IMAGE DRO SPACE 4,10 ** DRO - PROCESS *DROP* DIRECTIVE. DRO SUBR ENTRY/EXIT ISSMSG IANP,I ISSUE INFORMATIVE MESSAGE RJ FIL PROCESS FILE LEVEL EQ DROX RETURN QUAL * TITLE K-DISPLAY AREA. KCW SPACE 4,10 ** K-DISPLAY CONTROL WORD. KCW VFD 24/KBUF,18/KRIGHT,18/KLEFT CONTROL WORD KLEFT SPACE 4,10 ** KLEFT - LEFT SCREEN K-DISPLAY HEADER. KLEFT KSTART CW KLINE ( ),E PROGRAM KLINE ( *TFSP* - TAPE FILE SUPERVISOR.),E KLINE ( ),E SEPARAT KLINE ( SEPARAT=, ) KLINE (SEPARATOR CHARACTER. (0-1 CHARACTERS.)),E COLON KLINE ( COLON = ) KLINE (COLON CHARACTER. (0-1 CHARACTERS.)),E READ KLINE ( READ = ) KLINE (ALTERNATE INPUT FILE.),E KNEXT KFAMLS KRIGHT SPACE 4,10 ** KRIGHT - RIGHT SCREEN K-DISPLAY HEADER. KRIGHT KSTART CW KLINE ( ),E PROGRAM KLINE ( *TFSP*) LV KLINE ( FAMILY LEVEL *HELP* DISPLAY.),E KLINE ( ),E KLINE ( HELP ) KLINE (DISPLAY LEGAL DIRECTIVES.),E KLINE ( DISPLAY ) KLINE (TOGGLE OUT OF *HELP* DISPLAY.),E KLINE ( SEPARAT = CHAR ) KLINE (SET SEPARATOR CHARACTER.),E KLINE ( ) KLINE (DEFAULT IS COMMA.),E KLINE ( COLON = CHAR ) KLINE (SET COLON CHARACTER. DEFAULT IS NONE.),E KLINE ( READ = FILENAM ) KLINE (READ DIRECTIVES OFF OF LOCAL FILE.),E KLINE ( REWIND = FILENAM ) KLINE (REWIND LOCAL FILE.),E KLINE ( BRIEF/NOBRIEF ) KLINE (ENABLE/DISABLE INFORMATIVE OUTPUT.),E KLINE ( STOP ) KLINE (TERMINATE TFSP.),E KNEXT KFAMRS KFAMLS SPACE 4,10 ** KFAMLS - LEFT SCREEN FAMILY LEVEL K-DISPLAY. KFAMLS KSTART KLINE ( ),E FAMNAME KLINE ( FAMNAME= ) KLINE (FAMILY NAME. (1-7 CHARACTERS)),E LINKFAM KLINE ( LINKFAM= ) KLINE (LINKED CATALOG FAMILY. (1-7 CHARACTERS)),E MID KLINE ( MID =AA ) KLINE (MACHINE ID. (2 CHARACTERS)),E CATERR KLINE ( CATERR =CLEAR ) KLINE (ERROR STATUS. (CLEAR, SET)),E FOREIGN KLINE ( FOREIGN=NO ) KLINE (FOREIGN STATUS. (NO, YES)),E GLOBAL KLINE ( GLOBAL =NO ) KLINE (GLOBAL STATUS. (NO, YES)),E KLINE ( ),E TFSPE KLINE ( TAPE CATALOG ERROR DISCOVERED AT - ) TDATE KLINE (YY/MM/DD, HH.MM.SS.),E TFSPEL EQU *-TFSPE LENGTH OF *TFSPE* MESSAGE KLINE ( ),E KLINE ( CURRENT MESSAGE BUFFER -),E KLINE ( ),E MB KLINE ( ),E KLINE ( ),E SIZE KLINE ( CATALOG SIZE = 00000000. MT) SCM KLINE (/NT SCRATCH COUNT = 00000000.),E SCC KLINE ( CT SCRATCH COUNT = 00000000.) SCA KLINE ( AT SCRATCH COUNT = 00000000.),E KLINE ( ),E KLINE ( USER NAMES VALIDATED TO ACCESS),E KLINE ( TAPE CATALOG FILE VIA *TFSP* -),E KLINE ( ),E VALIDAT BSS 0 DUP 2 KLINE ( ),E ENDD KLINE ( ),E KLINE ( FAMILIES PERMITTED TO ACCESS CATALOG -),E KLINE ( ),E ALTFAM KLINE ( ),E KNEXT KMESS KFAMRS SPACE 4,10 ** KFAMRS - RIGHT SCREEN FAMILY LEVEL K-DISPLAY. KFAMRS KSTART KLINE ( AUDITCH = CHARGNO ) KLINE (AUDIT BY CHARGE NUMBER.),E KLINE ( AUDITUN = USERNAM ) KLINE (AUDIT USER. DEFAULT IS ALL USERS.),E KLINE ( AUDITVS = VSN ) KLINE (AUDIT VSN. DEFAULT IS ALL VSNS.),E KLINE ( MREADCH = CHARGNO ) KLINE (MACHINE READABLE *AUDITCH*.),E KLINE ( MREADUN = USERNAM ) KLINE (MACHINE READABLE *AUDITUN*.),E KLINE ( MREADVS = VSN ) KLINE (MACHINE READABLE *AUDITVS*.),E KLINE ( SOURCCH = CHARGNO ) KLINE (SOURCE OF CHARGE NUMBER.),E KLINE ( SOURCUN = USERNAM ) KLINE (SOURCE OF USER. DEFAULT IS ALL USERS.),E KLINE ( SOURCVS = VSN ) KLINE (SOURCE OF VSN.),E KLINE ( SOURCE ) KLINE (SOURCE OF ALL OF TAPE CATALOG FILE.),E KLINE ( RELEASE = VSN ) KLINE (RELEASE VSN AND ITS TAPE FILE.),E KLINE ( REMOVE = VSN ) KLINE (REMOVE VSN FROM TAPE CATALOG FILE.),E KLINE ( PURGALL = USERNAM ) KLINE (RELEASE ALL TAPE FILES OF USER.),E KLINE ( PURGE = VSN ) KLINE (PURGE TAPE FILES CONTAINING VSN.),E KLINE ( VALIDAT = USERNAM ) KLINE (VALIDATE USER TO USE *TFSP*.),E KLINE ( INVALID = USERNAM ) KLINE (INVALIDATE USER TO USE *TFSP*.),E KLINE ( ALTFAM = FAMILY ) KLINE (ALLOW ALTERNATE FAMILY ACCESS.),E KLINE ( CALTFAM = FAMILY ) KLINE (DISALLOW ALTERNATE FAMILY ACCESS.),E KLINE ( ISV ) KLINE (INITIALIZE SCRATCH VSNS.),E KLINE ( VSN = VSN ) KLINE (BEGIN VSN LEVEL DIRECTIVES.),E KLINE ( USER = USERNAM ) KLINE (BEGIN USER LEVEL DIRECTIVES.),E KLINE ( DROP ) KLINE (TERMINATE *TFSP*.),E KLINE ( GO ) KLINE (MAKE UPDATES AND TERMINATE *TFSP*.),E KEND KVSNLS SPACE 4,10 ** KVSNLS - LEFT SCREEN VSN LEVEL K-DISPLAY. KVSNLS KSTART KLINE ( VSN = ) VSN KLINE ( ),E KLINE ( ),E KLINE ( ) MESS KLINE (VSN NOT CURRENTLY IN CATALOG.),E KLINE ( ),E VT KLINE ( VT =MTNT ) KLINE (TAPE TYPE. (MTNT, CT OR AT)),E PRN KLINE ( PRN = ) KLINE (PHYSICAL VSN (PRN). (1-6 CHARACTERS)),E STATUS KLINE ( STATUS =AVAILABLE ) KLINE (STATUS. (AVAILABLE,CLEANED,HOLD,ERROR)),E SITE KLINE ( SITE =ON ) KLINE (SITE STATUS. (ON, OFF)),E OWNER KLINE ( OWNER =CENTER ) KLINE (OWNERSHIP TYPE. (CENTER, USER)),E SYSTEM KLINE ( SYSTEM =NO ) KLINE (SYSTEM VSN FLAG. (NO, YES)),E USAGE KLINE ( USAGE =0 ) KLINE (USAGE COUNTER. (0 - 63)),E KNEXT KMESS KVSNRS SPACE 4,10 ** KVSNRS - RIGHT SCREEN VSN LEVEL K-DISPLAY. KVSNRS KSTART KLINE ( ADD ) KLINE (PROCESS ADDING VSN TO CATALOG.),E KLINE ( REVISE ) KLINE (PROCESS REVISING VSN IN CATALOG.),E KLINE ( DROP ) KLINE (IGNORE ADD/REVISE OF VSN.),E KLINE ( GO ) KLINE (ADD OR REVISE VSN.),E KEND KUSELS SPACE 4,10 ** KUSELS - LEFT SCREEN USER LEVEL K-DISPLAY. * * ENTRY (KUSELS) = LENGTH OF DISPLAY FOR TERMINAL OUTPUT. KUSELS KSTART KLINE ( USER = ) USER KLINE ( ),E KLINE ( ),E KLINE ( TAPE FILES -),E KLINE ( ),E FILE BSS 0 DUP 9 KLINE ( ) KLINE ( ),E ENDD KNEXT KMESS KUSERS SPACE 4,10 ** KUSERS - RIGHT SCREEN USER LEVEL K-DISPLAY. KUSERS KSTART KLINE ( AUDITCN = CHARGNO ) KLINE (AUDIT TAPE FILES WITH CHARGE NUMBER.),E KLINE ( AUDITFI = FILEID ) KLINE (AUDIT TAPE FILE.),E KLINE ( AUDITFV = VSN ) KLINE (AUDIT TAPE FILES WITH VSN.),E KLINE ( MREADCN = CHARGNO ) KLINE (MACHINE READABLE *AUDITCN*.),E KLINE ( MREADFI = FILEID ) KLINE (MACHINE READABLE *AUDITFI*.),E KLINE ( MREADFV = VSN ) KLINE (MACHINE READABLE *AUDITFV*.),E KLINE ( SOURCCN = CHARGNO ) KLINE (SOURCE OF TAPE FILES WITH CHARGE NUMBER.),E KLINE ( SOURCFI = FILEID ) KLINE (SOURCE OF TAPE FILE.),E KLINE ( SOURCFV = VSN ) KLINE (SOURCE OF TAPE FILES WITH VSN.),E KLINE ( RELEASF = FILEID ) KLINE (RELEASE BY TAPE FILE.),E KLINE ( RELEASV = VSN ) KLINE (RELEASE BY VSN.),E KLINE ( FILE = FILEID ) KLINE (BEGIN FILE LEVEL DIRECTIVES.),E KLINE ( FILEV = VSN/QN ) KLINE (BEGIN FILE LEVEL DIRECTIVES.),E KLINE ( DROP ) KLINE (END USER LEVEL DIRECTIVES.),E KEND KFILLS1 SPACE 4,10 ** KFILLS1 - LEFT SCREEN FILE LEVEL K-DISPLAY, PAGE 1. KFILLS1 KSTART KLINE ( USER = ) USER KLINE ( ),E KLINE ( FVSN = ) FVSN KLINE ( ),E KLINE ( QN = ) QN KLINE ( ),E KLINE ( FILE = ) FILE KLINE ( PAGE 1 OF 3),E KLINE ( ),E KLINE ( ) MESS KLINE (FILE NOT CURRENTLY RESERVED. ),E KLINE ( ),E SV KLINE ( SV = ) KLINE (SYMBOLIC ACCESS. (NO, SET)),E RECOVER KLINE ( RECOVER= ) KLINE (RECOVERED STATUS. (NO, YES)),E CN KLINE ( CN = ) KLINE (CHARGE NUMBER. (0-10 CHARACTERS)),E PN KLINE ( PN = ) KLINE (PROJECT NUMBER.(0-20 CHARS)),E CE KLINE ( CE =CLEAR ) KLINE (ERROR FLAG. (CLEAR, SET)),E UC KLINE ( UC = ) KLINE (USER CONTROL WORD. (0-10 CHARACTERS)),E TSITE KLINE ( TSITE =ON ) KLINE (SITE STATUS. (ON, OFF)),E URDATE KLINE ( URDATE = ) KLINE (RELEASE DATE. (YYMMDD)),E TOWNER KLINE ( TOWNER =CENTER ) KLINE (OWNERSHIP TYPE. (CENTER, USER)),E KLINE ( ASSIGNED VSNS - ),E AVSN BSS 0 DUP 10 KLINE ( ) KLINE ( ),E ENDD KNEXT KMESS KFILLS2 SPACE 4,10 ** KFILLS2 - LEFT SCREEN FILE LEVEL K-DISPLAY, PAGE 2. KFILLS2 KSTART KLINE ( USER = ) USER KLINE ( ),E KLINE ( FVSN = ) FVSN KLINE ( ),E KLINE ( QN = ) QN KLINE ( ),E KLINE ( FILE = ) FILE KLINE ( PAGE 2 OF 3),E KLINE ( ),E KLINE ( ) MESS KLINE (FILE NOT CURRENTLY RESERVED. ),E KLINE ( ),E FI KLINE ( FI = ) KLINE (LOGICAL FILE IDENTIFIER.),E KLINE ( (1-17 CHARACTERS)),E PW KLINE ( PW = ) KLINE (PASSWORD. (0-7 CHARACTERS)),E CT KLINE ( CT =PRIVATE ) KLINE (ACCESS CATEGORY.),E KLINE ( ) KLINE ((PRIVATE, SPRIV, PUBLIC)),E M KLINE ( M =READ ) KLINE (ACCESS MODE. (READ, WRITE, NULL)),E AC KLINE ( AC =NO ) KLINE (ALTERNATE CATLIST. (NO, YES)),E ACOUNT KLINE ( ACOUNT =0000 ) KLINE (ACCESS COUNT. (0-"MXAC")),E CDATE KLINE ( CDATE = ) KLINE (CREATION DATE. (YYMMDD)),E CTIME KLINE ( CTIME = ) KLINE (CREATION TIME. (HHMMSS)),E ADATE KLINE ( ADATE = ) KLINE (LAST ACCESS DATE. (YYMMDD)),E ATIME KLINE ( ATIME = ) KLINE (LAST ACCESS TIME. (HHMMSS)),E MDATE KLINE ( MDATE = ) KLINE (LAST MODIFICATION DATE. (YYMMDD)),E MTIME KLINE ( MTIME = ) KLINE (LAST MODIFICATION TIME. (HHMMSS)),E KNEXT KMESS KFILLS3 SPACE 4,10 ** KFILLS3 - LEFT SCREEN FILE LEVEL K-DISPLAY, PAGE 3. * * ENTRY (KFILLS3) = LENGTH OF DISPLAY FOR TERMINAL OUTPUT. KFILLS3 KSTART KLINE ( USER = ) USER KLINE ( ),E KLINE ( FVSN = ) FVSN KLINE ( ),E KLINE ( QN = ) QN KLINE ( ),E KLINE ( FILE = ) FILE KLINE ( PAGE 3 OF 3),E KLINE ( ),E KLINE ( ) MESS KLINE (FILE NOT CURRENTLY RESERVED. ),E KLINE ( ),E PI KLINE ( PI = ) KLINE (PHYSICAL FILE IDENTIFIER.),E KLINE ( (1-17 CHARACTERS)),E CR KLINE ( CR = ) KLINE (CREATION DATE. (YYDDD)),E CV KLINE ( CV =AS ) KLINE (CONVERSION MODE. (AS, EB)),E D KLINE ( D =PE ) KLINE (DENSITY. (PE, GE, HI, HY, HD, CE, AE)),E E KLINE ( E =00 ) KLINE (GENERATION VERSION NUMBER. (0-99)),E F KLINE ( F =I ) KLINE (FORMAT. (I, LI, S, L, SI, F)),E FA KLINE ( FA = ) KLINE (ACCESSIBILITY. (0-1 CHARACTERS)),E FC KLINE ( FC ="MXFC" ) KLINE (F-FORMAT MAX BLOCK SIZE. (1-"MXFC")),E G KLINE ( G =0001 ) KLINE (GENERATION NUMBER. (1-9999)),E LB KLINE ( LB =KL ) KLINE (LABEL TYPE. (KL, KU, NS)),E NS KLINE ( NS =0 ) KLINE (NOISE SIZE. (0-31)),E RT KLINE ( RT = ) KLINE (RETENTION DATE. (YYDDD)),E SI KLINE ( SI = ) KLINE (SET IDENTIFIER. (0-6 CHARACTERS)),E SN KLINE ( SN =0001 ) KLINE (SECTION NUMBER. (1-9999)),E KNEXT KMESS KFILRS SPACE 4,10 ** KFILRS - RIGHT SCREEN FILE LEVEL K-DISPLAY. KFILRS KSTART KLINE ( AUDITAU = USERNAM ) KLINE (AUDIT ALTERNATE USER.),E KLINE ( AVSN = VSN ) KLINE (ASSIGN VSN TO TAPE FILE.),E KLINE ( AUSER = USERNAM ) KLINE (BEGIN ALTERNATE USER LEVEL DIRECTIVES.),E KLINE ( RESERVE ) KLINE (PROCESS RESERVE OF TAPE FILE.),E KLINE ( AMEND ) KLINE (PROCESS AMEND OF TAPE FILE.),E KLINE ( DROP ) KLINE (IGNORE RESERVE/AMEND OF TAPE FILE.),E KLINE ( GO ) KLINE (RESERVE OR AMEND TAPE FILE.),E KEND KAUSLS SPACE 4,10 ** KAUSLS - LEFT SCREEN ALTERNATE USER LEVEL K-DISPLAY. KAUSLS KSTART KLINE ( USER = ) USER KLINE ( ),E KLINE ( FILE = ) FILE KLINE ( ),E KLINE ( AUSER = ) AUSER KLINE ( ),E KLINE ( ),E KLINE ( ) MESS KLINE (USER NOT CURRENTLY ADMITTED. ),E KLINE ( ),E AMODE KLINE ( AMODE =WRITE ) KLINE (PERMISSION MODE.),E KLINE ( ) KLINE ((IMPLICIT, WRITE, READ, NULL, SPECIAL)),E AACOUNT KLINE ( AACOUNT=0000 ) KLINE (ACCESS COUNT. (0-"MXAA")),E AADATE KLINE ( AADATE = ) KLINE (LAST ACCESS DATE. (YYMMDD)),E AATIME KLINE ( AATIME = ) KLINE (LAST ACCESS TIME. (HHMMSS)),E KNEXT KMESS KAUSRS SPACE 4,10 ** KAUSRS - RIGHT SCREEN ALTERNATE USER LEVEL K-DISPLAY. KAUSRS KSTART KLINE ( ADMIT ) KLINE (PROCESS ALTERNATE USER ADMIT.),E KLINE ( DROP ) KLINE (IGNORE ALTERNATE USER ADMIT.),E KLINE ( GO ) KLINE (PROCESS ALTERNATE USER ADMIT.),E KEND KMESS SPACE 4,10 ** K-DISPLAY STATUS MESSAGES. KMESS KSTART KLINE ( ),E STATUS KLINE ( PROCESSING DIRECTIVES.),E DIRECT KLINE ( *********) KLINE ( ),E MESSAGE KLINE ( ) KLINE ( ),E KEND END OF K-DISPLAY * INSURE DISPLAYS LESS THAN 40 LINES. ERRNG 37-/KLEFT/LINES-/KFAMLS/LINES-/KMESS/LINES ERRNG 37-/KLEFT/LINES-/KVSNLS/LINES-/KMESS/LINES ERRNG 37-/KLEFT/LINES-/KUSELS/LINES-/KMESS/LINES ERRNG 37-/KLEFT/LINES-/KFILLS1/LINES-/KMESS/LINES ERRNG 37-/KLEFT/LINES-/KFILLS2/LINES-/KMESS/LINES ERRNG 37-/KLEFT/LINES-/KFILLS3/LINES-/KMESS/LINES ERRNG 37-/KLEFT/LINES-/KAUSLS/LINES-/KMESS/LINES ERRNG 37-/KRIGHT/LINES-/KFAMRS/LINES ERRNG 37-/KRIGHT/LINES-/KUSERS/LINES ERRNG 37-/KRIGHT/LINES-/KFILRS/LINES ERRNG 37-/KRIGHT/LINES-/KAUSRS/LINES KDIS SPACE 4,10 ** K-DISPLAY DIRECTIVE POINTERS. QUAL KDIS AACOUNT EQU /KAUSLS/AACOUNT AADATE EQU /KAUSLS/AADATE AATIME EQU /KAUSLS/AATIME AC EQU /KFILLS2/AC ACOUNT EQU /KFILLS2/ACOUNT ADATE EQU /KFILLS2/ADATE AMODE EQU /KAUSLS/AMODE ATIME EQU /KFILLS2/ATIME CDATE EQU /KFILLS2/CDATE CE EQU /KFILLS1/CE CN EQU /KFILLS1/CN COLON EQU /KLEFT/COLON CR EQU /KFILLS3/CR CT EQU /KFILLS2/CT CTIME EQU /KFILLS2/CTIME CV EQU /KFILLS3/CV D EQU /KFILLS3/D E EQU /KFILLS3/E F EQU /KFILLS3/F FA EQU /KFILLS3/FA FC EQU /KFILLS3/FC FI EQU /KFILLS2/FI G EQU /KFILLS3/G LB EQU /KFILLS3/LB M EQU /KFILLS2/M MDATE EQU /KFILLS2/MDATE MTIME EQU /KFILLS2/MTIME NS EQU /KFILLS3/NS OWNER EQU /KVSNLS/OWNER PI EQU /KFILLS3/PI PN EQU /KFILLS1/PN PRN EQU /KVSNLS/PRN PW EQU /KFILLS2/PW READ EQU /KLEFT/READ RECOVER EQU /KFILLS1/RECOVER RT EQU /KFILLS3/RT SEPARAT EQU /KLEFT/SEPARAT SI EQU /KFILLS3/SI SITE EQU /KVSNLS/SITE SN EQU /KFILLS3/SN STATUS EQU /KVSNLS/STATUS SV EQU /KFILLS1/SV SYSTEM EQU /KVSNLS/SYSTEM TOWNER EQU /KFILLS1/TOWNER TSITE EQU /KFILLS1/TSITE UC EQU /KFILLS1/UC URDATE EQU /KFILLS1/URDATE USAGE EQU /KVSNLS/USAGE VT EQU /KVSNLS/VT QUAL * TITLE BUFFER AREA. BUFFER SPACE 4,10 ** BUFFER ASSIGNMENTS. USE BUFFERS BUF1 BSS 0 MAIN PROGRAM BUFFERS CBUF BSS CBUFL CHARACTER BUFFER EBUF BSS EBUFL ERROR MESSAGE BUFFER KBUF BSS KBUFL K-DISPLAY INPUT BUFFER LBUF BSS FBUFL OUTPUT FILE BUFFER PCAT BSS TCEL PREVIOUS FILE CATALOG IMAGE N1BUF BSS N1BUFL VSN TAPE CATALOG BUFFER N2BUF BSS N2BUFL USER NAME TAPE CATALOG BUFFER N3BUF BSS N3BUFL TAPE FILE TAPE CATALOG BUFFER N4BUF BSS N4BUFL ALTERNATE USER NAME TAPE CATALOG BUFFER RBUF BSS RBUFL REWIND FILE BUFFER REC1 BSS 100B IMAGE OF FIRST TAPE CATALOG FILE RECORD TAVS BSS TAVSL TABLE OF ASSIGNED VSNS TBUF BSS SBUFL TERMINAL INTERRUPT FILE BUFFER TSMC EQU REC1+TBHL+TMSM *MT/NT* SCRATCH COUNT TSCC EQU REC1+TBHL+TMSC *CT* SCRATCH COUNT TSAC EQU REC1+TBHL+TMSA *AT* SCRATCH COUNT TTCS EQU REC1+TBHL+TMCT TAPE CATALOG SIZE TSST BSS TSTL IMAGE OF SYSTEM TABLE TFMN EQU TSST+TMFM FAMILY NAME TSTT EQU TFMN STATUS WORD TIDM EQU TSST+TMID MACHINE ID TCMB EQU TSST+TMMB MESSAGE BUFFER TVUN EQU TSST+TMUN VALIDATED USERS TLFM EQU TSST+TMLF LINKED FAMILY NAME TAFM EQU TSST+TMPA PERMITTED ALTERNATE FAMILIES SBUF BSS SBUFL SCRATCH FILE BUFFER SSBUF BSS FBUFL MACHINE READABLE/SOURCE FILE BUFFER UBUF BSS UBUFL ALTERNATE USER ENTRY BUFFER VBUF BSS VBUFL VSN ENTRY BUFFER WBUF BSS WBUFL WORKING BUFFER HBUF BSS HBUFL HOLD BUFFER BUF1E BSS 0 END OF MAIN PROGRAM BUFFERS TITLE PRESET AREA. SPACE 4 ORG BUF1 OVERWRITTEN BY ALL BUFFERS EXCEPT *IBUF* COMMON SPACE 4,10 ** COMMON DECKS. *CALL COMCWTS *CALL COMCZAP SPACE 4 QUAL PRESET COMMON SPACE 4,10 ** COMMON DECKS. *CALL COMSPFM PRS SPACE 4,10 ** PRS - PRESET *TFSP* AND *TFSPE*. * * EXIT TO *TFS*. PRS28 RJ ZAP ENTER *Z* DIRECTIVES INTO INPUT BUFFER EQ TFS ENTER MAIN PROGRAM BUF2 BSS 0 CAN BE OVERWRITTEN BY *IBUF* * ENTRY TO *TFSP*. TFSP SB1 1 ENTRY RJ ZFN ZERO OUT FILE NAMES IN FETS MOVE PRSAL,PRSA,/KFAMLS/TFSPE CLEAR *TFSPE* MESSAGE RJ GOT GET ORIGIN TYPE SX1 X6-SYOT ZR X1,PRS1 IF SYSTEM ORIGIN SX6 B0 DISABLE *FM* PARAMETER SA6 TPARSY SA6 TOPOK DISABLE *OP=K* PRS1 SB5 TPAR SET PARAMETER TABLE ADDRESS SA1 ACTR SET NUMBER OF ARGUMENTS SB4 X1 SA4 ARGR SET START OF ARGUMENTS RJ ARG PROCESS ARGUMENTS SB5 MPER SET ERROR MESSAGE ADDRESS NZ X1,ABT IF ARGUMENT ERROR SA1 LF ZR X1,PRS2 IF NOT LOCAL FILE MODE SA1 FM SA4 =C*FM* SET PARAMETER NAME NZ X1,ABT IF *FM* SPECIFIED PRS2 MX0 42 SEARCH FOR OPTION SRCHTAB TOPO,OP ZR X4,PRS3 IF OPTION FOUND SB5 MILO SET ERROR MESSAGE ADDRESS BX4 X2 SET OPTION NAME EQ ABT ABORT WITH ERROR MESSAGE PRS3 BX6 -X0*X3 SET *OP* OPTION SA6 OP SX1 X6-IOPT ZR X1,PRS5 IF *OP=I* SETFET I,(LFN=B0) SET *I=0* EQ PRS5 CHECK FILE NAMES * ENTRY TO *TFSPE*. TFSPE SB1 1 ENTRY RJ GOT GET ORIGIN TYPE SX1 X6-SYOT ZR X1,PRS4 IF SYSTEM ORIGIN ABTMSG MILA ABORT *TFSP* PRS4 RJ ZFN ZERO OUT FILE NAMES IN FETS SA1 =10H *TFSPE* SET NAME OF PROGRAM IN K-DISPLAY BX6 X1 SA6 /KLEFT/PROGRAM SA6 /KRIGHT/PROGRAM SA6 NPGB SET NAME OF PROGRAM IN PAGE HEADER SX6 KOPT SET *OP=K* SA6 OP SETFET I,(LFN=B0) SET *I=0* SX6 B1 SET *TFSPE* FLAG SA6 TE SB5 TPAE SET PARAMETER TABLE ADDRESS SA1 ACTR SET NUMBER OF ARGUMENTS SB4 X1 SA4 ARGR SET START OF ARGUMENTS ADDRESS RJ ARG PROCESS ARGUMENTS SB5 MPER SET ERROR MESSAGE ADDRESS NZ X1,ABT IF ARGUMENT ERRORS * PROCESS FILE NAMES. PRS5 RJ GSF GET SCRATCH FILE NAME SX1 B1 SET TERMINAL INTERRUPT FILE NAME BX6 X6+X1 SA6 T SA1 OT CHECK ORIGIN TYPE SX1 X1-TXOT NZ X1,PRS6 IF NOT INTERACTIVE ORIGIN REQUEST A6,TT,NOMSG ASSIGN TO TERMINAL EQ PRS7 REDUCE QUEUE PRIORITY PRS6 SA1 LF ZR X1,PRS8 IF NOT LOCAL FILE MODE PRS7 SETRNR OPROLL REDUCE QUEUE PRIORITY PRS8 SA1 LF ZR X1,PRS10 IF NOT LOCAL FILE MODE SA1 TE NZ X1,PRS10 IF *TFSPE* MX0 42 CHECK TAPE CATALOG FILE NAMES SA1 N BX1 X0*X1 NZ X1,PRS11 IF NEW FILE NAME SPECIFIED SA1 P BX1 X0*X1 NZ X1,PRS9 IF OLD FILE NAME SPECIFIED SETFET N,(LFN==C*NEW*) SET NEW TAPE CATALOG FILE NAME EQ PRS11 SET REMAINING FETS PRS9 SETFET N,(LFN=P) SET NEW TAPE CATALOG FILE NAME EQ PRS11 SET REMAINING FETS PRS10 SETFET P,(LFN=B0) SET OLD TAPE CATALOG FILE NAME SETFET N,(LFN==C*"TMFC"*) SET NEW TAPE CATALOG FILE NAME PRS11 SA1 LF NZ X1,PRS12 IF LOCAL FILE MODE SA1 TE NZ X1,PRS12 IF *TFSPE* SETFET N1,(LFN=B0) SET FILE NAME FOR FETS SETFET N2,(LFN=B0) SETFET N3,(LFN=B0) SETFET N4,(LFN=B0) EQ PRS13 SET TAPE CATALOG IMAGES PRS12 SETFET N1,(LFN=N) SET FILE NAMES FOR FETS SETFET N2,(LFN=N) SETFET N3,(LFN=N) SETFET N4,(LFN=N) PRS13 SB5 MFNC PRESET ERROR MESSAGE ADDRESS MX0 42 COMPARE TAPE CATALOG FILE NAMES SA3 P SA4 N BX3 X3-X4 BX3 X0*X3 SA2 PRSB PRESET TABLE ADDRESS NZ X3,PRS14 IF TAPE CATALOG NAMES DO NOT MATCH SA2 A2+B1 RESET TABLE ADDRESS PRS14 ZR X2,PRS17 IF END OF TABLE SA4 X2 CHECK FILE NAME BX4 X0*X4 ZR X4,PRS16 IF NO FILE NAME SA1 A2+B1 PRS15 ZR X1,PRS16 IF END OF TABLE SA3 X1 COMPARE FILE NAMES BX3 X3-X4 BX3 X0*X3 ZR X3,ABT IF FILE NAME CONFLICT SA1 A1+B1 EQ PRS15 CHECK NEXT FET PRS16 SA2 A2+B1 EQ PRS14 CHECK NEXT FILE NAME * PRESET TABLES IN MAIN PROGRAM. PRS17 SB3 7 SPACE FILL COMMAND IMAGE PRS18 SA1 CCDR+B3 RJ SFN SPACE FILL NAME SA6 A1 SB3 B3-B1 PL B3,PRS18 MOVEBIT CCDR,NPGF,480,,41 MOVE IMAGE TO PAGE HEADER MACHID MI SET MACHINE ID PDATE PD SET PACKED DATE AND TIME MOVEBIT PD,DFIC+/CAT/CDATE,36,35,35 SET DEFAULT DATES MOVEBIT PD,DFIC+/CAT/MDATE,36,35,35 MOVEBIT PD,DFIC+/CAT/ADATE,36,35,35 MOVEBIT PD,DAUC+/CAT/AADATE,36,35,35 SA1 PD GET PACKED TIME SX1 X1 SB3 100 RJ UDT UNPACK TIME SA6 DT SAVE DISPLAY TIME SA1 PD GET PACKED DATE AX1 18 SB3 70 RJ UDT UNPACK DATE SA6 DD SAVE DISPLAY DATE DATE NPGD MOVE DATE INTO PAGE HEADER CLOCK NPGD+1 MOVE TIME INTO PAGE HEADER SA1 TE ZR X1,PRS19 IF NOT *TFSPE* MOVE 2,NPGD,/KFAMLS/TDATE MOVE DATE/TIME TO MESSAGE PRS19 JDATE JD SET JULIAN DATE SA1 JD BX6 X1 LX6 30 SA6 A1 MOVEBIT JD,DFIC+/CAT/RT,30 SET DEFAULT DATES MOVEBIT JD,DFIC+/CAT/CR,30,,29 SA2 L RJ CFS CHECK FILE STATUS OF OUTPUT SA6 OS NG X6,PRS20 IF MASS STORAGE OUTPUT SA1 =0 SET TERMINAL OUTPUT FOR AUDIT LISTING MOVEBIT A1,/ALS/EOL1,12,,11 SA1 =0 MOVEBIT A1,/ALS/EOL2,12,,11 MOVEBIT (=0),/PFIA/EOL1,/PFIAC/EOL1*6,,/PFIAU/EOL1 MOVEBIT (=0),/PFIA/EOL2,/PFIAC/EOL2*6,,/PFIAU/EOL2 * PROCESS FAMILY NAME. PRS20 RJ SFL SET FAMILY NAME RJ SFN SPACE FILL NAME SA6 NPGC SET FAMILY NAME IN PAGE HEADER BX1 X6 SET FAMILY NAME IN MACHINE READABLE ENTRY MOVEBIT A1,/MLS/FAMILY,/MLSC/FAMILY*6,,/MLSU/FAMILY SA1 TE NZ X1,PRS24 IF *TFSPE* SA1 LF ZR X1,PRS23 IF NOT LOCAL FILE MODE * PROCESS *TFSP* - LOCAL FILE MODE. MX0 42 CHECK OLD TAPE CATALOG NAME SA1 P BX1 X0*X1 NZ X1,PRS21 IF FILE NAME SPECIFIED RJ CDN COPY DEFAULT NEW TAPE CATALOG FILE REPRIEVE RPVA,SET,237B SET EXTENDED REPRIEVE EQ PRS26 INITIALIZE FILES PRS21 RJ CPN COPY OLD TAPE CATALOG TO NEW ZR X4,PRS22 IF NOT EMPTY TAPE CATALOG ABTMSG METC ABORT *TFSP* PRS22 RJ RFP READ FIRST PRU RJ CIL CLEAR INTERLOCKS ON FILE REPRIEVE RPVA,SET,237B SET EXTENDED REPRIEVE EQ PRS26 INITIALIZE FILES * PROCESS *TFSP* - NOT LOCAL FILE MODE. PRS23 REPRIEVE RPVA,SET,237B SET EXTENDED REPRIEVE RJ SIL SET INTERLOCK ON FILE ZR X4,PRS26 IF INTERLOCK SET ABTMSG X6 ABORT *TFSP* * PROCESS *TFSPE*. PRS24 REPRIEVE RPVA,SET,237B SET EXTENDED REPRIEVE SB3 PTWR SELECT WRITE MODE REGULAR ATTACH RJ ATT ATTACH TAPE CATALOG FILE ZR X4,PRS25 IF FILE ATTACHED ABTMSG MFNA ABORT *TFSP* PRS25 RJ CIL CLEAR INTERLOCKS ON FILE SX6 B1 SET LOCAL FILE MODE FLAG SA6 LF RJ CCF CHECK COPY FILE PRS26 RJ INF INITIALIZE FILES SX6 B0 CHECK IF NO VERIFY MODE IS VALID SA1 LF ZR X1,PRS27 IF NOT LOCAL FILE MODE SA1 P LJUST X1,X1,42,59 NZ X1,PRS27 IF NOT *P=0* SA1 NV KEEP NO VERIFY STATUS SX6 X1 PRS27 SA6 NV SET/CLEAR NO VERIFY STATUS SA1 OP CHECK OPTION SX1 X1-ZOPT NZ X1,TFS IF NOT *OP=Z* SX2 I SET INPUT FET ADDRESS EQ PRS28 GET *Z* DIRECTIVES PRSA BSS 0 CLEAR *TFSPE* MESSAGE IMAGE DUP /KFAMLS/TFSPEL-1 KLINE ( ) ENDD KLINE (),E PRSAL EQU *-PRSA PRSB BSS 0 TABLE OF FET ADDRESSES CON P OLD TAPE CATALOG FILE FET CON N NEW TAPE CATALOG FILE FET CON I INPUT FILE FET CON L OUTPUT FILE FET CON S SOURCE FILE FET CON SS MACHINE READABLE FILE FET CON COPF COPY FILE FOR *TFSPE* CON 0 END OF TABLE TFR SPACE 4,10 ** TFR - PROCESS *TFSPR* COMMAND. * * EXIT TO END7 IF NO ERROR. * TO ABT IF ERROR. * * USES A - 1, 4, 6, 7. * X - 0, 1, 4, 6, 7. * B - 4, 5. * * CALLS ABT, ARG, END, GOT, SFL. * * MACROS ABTMSG, MESSAGE, SYSTEM. TFSPR BSS 0 ENTRY SB1 1 RJ GOT GET ORIGIN TYPE SX6 X6-SYOT ZR X6,TFR1 IF SYSTEM ORIGIN ABTMSG MILA * INCORRECT ACCESS.* TFR1 RJ ZFN ZERO OUT FILE NAMES SA1 ACTR READ ARGUMENT COUNT SA4 ARGR SET ARGUMENT ADDRESS SB4 X1 SET ARGUMENT COUNT SB5 TPPR SET ARGUMENT TABLE ADDRESS RJ ARG PROCESS ARGUMENTS ZR X1,TFR2 IF NO ERROR IN ARGUMENTS ABTMSG MPER * PARAMETER ERROR.* TFR2 RJ SFL SET FAMILY NAME SX6 ISFS*10B SET SUBFUNCTION CODE SA6 N SX6 30000B SET PROCESS DOWN MACHINES OPTION SX7 TFRA SET ERROR MESSAGE ADDRESS SA6 N+TFES SA7 N+5 SYSTEM TFM,R,N,SSJF*100B CLEAN UP CATALOG SA1 N CHECK ERROR CODE MX0 -9 LX0 17-8 BX1 -X0*X1 ZR X1,END7 IF NO ERROR MESSAGE TFRA ISSUE ERROR MESSAGE EQ ABT ABORT TFRA BSSZ 4 ERROR MESSAGE ABT SPACE 4,10 ** ABT - *PRESET* ABORT PROCESSOR. * * ENTRY (B5) = ERROR MESSAGE ADDRESS. * (X4) = IMAGE TO INSERT IN ERROR MESSAGE. * * EXIT *TFSP* ABORTED. ABT BSS 0 ENTRY MX0 42 GET LAST SEVEN CHARACTERS OF IMAGE BX1 X0*X4 SB3 B5 SET ERROR MESSAGE ADDRESS SB2 1R$ RJ SNM SET NAME IN MESSAGE ABTMSG B5 ABORT *TFSP* DMESS SPACE 4,10 ** DAYFILE ERROR MESSAGES. MCRC DATA C$ *CF* PARAMETER REQUIRED WITH *CLEAR*.$ MERC DATA C$ CATALOG ERROR REQUIRED WITH *CLEAR*.$ METC DATA C* EMPTY TAPE CATALOG FILE.* MFNC DATA C* FILE NAME CONFLICT - $$$$$$$.* MILA DATA C* INCORRECT ACCESS.* MILO DATA C* INCORRECT OPTION - $$$$$$$.* MPER DATA C* PARAMETER ERROR - $$$$$$$.* FETS SPACE 4,10 ** FILE ENVIRONMENT TABLES. P BSS 0 OLD TAPE CATALOG FILE OLD FILEB PBUF,TBUFL,(FET=8),EPR N BSS 0 NEW TAPE CATALOG FILE NEW FILEB NBUF,TBUFL,(FET=16),EPR REWORD N+CFPW,(42/,18/PBUF) WORKING SPACE 4,10 ** WORKING STORAGE FOR PRESET. COPF CON 0 COPY FILE NAME FOR *TFSPE* CLR CON 0 *CLEAR* OPTION FOR *TFSPE* TOPO SPACE 4,10 ** TOPO - TABLE OF OPTIONS FOR *OP* PARAMETER. * * ENTRY ONE WORD PER OPTION. * 42/OP,18/VALUE * * OP = OPTION LEFT JUSTIFIED. * VALUE = NUMERIC VALUE OF OPTION. * * TABLE TERMINATED BY A ZERO WORD. TOPO BSS 0 VFD 42/0LI,18/IOPT *I* OPTION VFD 42/0LZ,18/ZOPT *Z* OPTION TOPOK VFD 42/0LK,18/KOPT *K* OPTION * CON 0 (NON-SYSTEM ORIGIN) CON 0 END OF TABLE TPAE SPACE 4,10 ** TPAE - TABLE OF COMMAND PARAMETERS FOR *TFSPE*. * * ENTRY ONE WORD PER PARAMETER FORMATTED FOR *COMCARG*. * * TABLE TERMINATED BY A ZERO WORD. TPAE BSS 0 *TFSPE* PARAMETERS L ARG L,L OUTPUT FILE S ARG S,S SOURCE FILE SS ARG SS,SS MACHINE READABLE FILE FM ARG FM,FM,400B FAMILY CF ARG (=0LZFCCOPY),COPF COPY FILE CLEAR ARG (-=1),CLR CLEAR CATALOG OPTION CON 0 END OF TABLE TPAR SPACE 4,10 ** TPAR - TABLE OF COMMAND PARAMETERS FOR *TFSP*. * * ENTRY ONE WORD PER PARAMETER FORMATTED FOR *COMCARG*. * * TABLE TERMINATED BY A ZERO WORD. TPAR BSS 0 *TFSP* PARAMETERS I ARG I,I INPUT FILE N ARG N,N,400B NEW TAPE CATALOG FILE P ARG P,P OLD TAPE CATALOG FILE OP ARG OP,OP,400B INPUT OPTION A ARG (-=1),AB ABORT OPTION NV ARG (-=1),NV NO VERIFY OPTION RT ARG (-=1),RT RETRY ON UTILITY ACTIVE OPTION LF ARG (=-1),LF LOCAL FILE OPTION L ARG L,L OUTPUT FILE S ARG S,S SOURCE FILE SS ARG SS,SS MACHINE READABLE FILE TPARSY BSS 0 SYSTEM ORIGIN PARAMETERS FM ARG FM,FM,400B FAMILY * CON 0 (NON-SYSTEM ORIGIN) CON 0 END OF TABLE TPPR SPACE 4,10 ** TPPR - TABLE OF COMMAND PARAMETERS FOR *TFSPR*. TPPR BSS 0 FM ARG FM,FM,400B FAMILY. ARG ATT SPACE 4,10 ** ATT - ATTACH FILE. * * ENTRY (B3) = 0 FILE MODE. * FAST ATTACH PERFORMED IF UPDATE OR READ/UPDATE MODE. * REGULAR ATTACH PERFORMED IF WRITE MODE. * * EXIT (X4) = 0 IF FILE IS ATTACHED. * (WBUF - WBUF+100B) = FIRST PRU OF FILE. * * USES X - 1, 4, 6. * A - 4, 6. * * CALLS RFP. * * MACROS ATTACH, RJUST, ROLLOUT. ATT4 RJ RFP READ FIRST PRU SX4 B0 FLAG NO ERRORS ATT SUBR ENTRY/EXIT SX6 B3 SAVE MODE SA6 ATTA ATT1 SX1 B3-PTWR ZR X1,ATT2 IF WRITE MODE ATTACH N,,,,ATTA,,,IP,FA ATTACH FAST ATTACH FILE EQ ATT3 CHECK IF FILE ATTACHED ATT2 ATTACH N,,,,ATTA,,,IP ATTACH LOCAL FILE ATT3 SA4 N CHECK IF FILE ATTACHED RJUST X4,X4,8,17 ZR X4,ATT4 IF FILE ATTACHED SX1 X4-/ERRMSG/FBS NZ X1,ATTX IF NOT FILE BUSY ROLLOUT =10 EQ ATT1 RETRY ATTACH ATTA CON PTRU MODE OF ATTACH CCF SPACE 4,20 ** CCF - CHECK COPY FILE. * * EXIT CURRENT TAPE CATALOG FILE COPIED TO COPY FILE IF *CF* * SPECIFIED ON COMMAND. * CURRENT TAPE CATALOG REWRITTEN AS EMPTY IF *CLEAR* * SPECIFIED ON COMMAND. * * ERRORS ABORT WITH *MCRC* ERROR MESSAGE IF *CLEAR* SPECIFIED * WITHOUT *CF*. * ABORT WITH *MERC* ERROR MESSAGE IF *CLEAR* SPECIFIED * WITHOUT CATALOG ERROR. * ABORT IF UNABLE TO DEFINE COPY FILE. * * USES X - 0, 1, 5. * A - 1. * * CALLS CDN. * * MACROS ABTMSG, DEFINE, MOVEBIT, READEI, READW, RETURN, * REWIND, SETFET, WRITER, WRITEW. CCF4 ABTMSG X5 ABORT PROGRAM CCF SUBR ENTRY/EXIT SA1 CLR ZR X1,CCF1 IF *CLEAR* NOT SPECIFIED SA1 COPF SX5 MCRC **CF* PARAMETER REQUIRED WITH *CLEAR** ZR X1,CCF4 IF NO COPY FILE SX0 FETS CHECK FOR CATALOG ERROR SA1 SYBL+TMFM BX1 X0*X1 SX5 MERC *CATALOG ERROR REQUIRED WITH *CLEAR** ZR X1,CCF4 IF NO CATALOG ERROR CCF1 SA1 COPF ZR X1,CCFX IF NO COPY FILE MOVEBIT A1,P,42 CREATE COPY FILE RETURN P,R SETFET P,(ERA=CCFA),(DTY=B0) DEFINE P,,,,,,,,,IP MX0 -8 CHECK FOR ERROR SA1 P AX1 10 BX1 -X0*X1 SX5 CCFA *PFM* ERROR MESSAGE NZ X1,CCF4 IF ERROR REWIND P,R COPY TAPE CATALOG FILE REWIND N,R READEI N,R INITIATE READ CCF2 READW N,CCFC,CCFCL NG X1,CCF3 IF EOI WRITEW P,CCFC,CCFCL EQ CCF2 CONTINUE READ CCF3 SB7 B6-CCFC COMPLETE RECORD WRITEW P,CCFC,B7 WRITER P,R WRITE EOR RETURN P SA1 CLR ZR X1,CCFX IF NOT *CLEAR* OPTION MOVE 100B,CCFB,BCW1 RESET FIRST PRU RJ CDN COPY DEFAULT TAPE CATALOG FILE EQ CCFX RETURN CCFA BSS 4 *PFM* ERROR MESSAGE BLOCK CCFB BSS 0 DEFAULT SYSTEM BLOCK FOR *CLEAR* LOC 0 BWRT VFD 6/RTSB,6/0,12/0,12/100B-TBHL,12/1,12/TBHL BWDT VFD 24/0,36/ BWRI VFD 12/0,24/0,24/0 BWUN VFD 42/,18/0 LOC *O LOC 0 TMFM VFD 42/,18/FFTS+FETS FOREIGN FAMILY, CATALOG ERROR TMID VFD 12/,24/0,24/0 TMCT VFD 12/0,24/0,24/0 TMSV VFD 36/-0,24/0 TMMB DATA 38L CATALOG CLEARED BY *TFSPE*. TMUN BSS UNCL BSS 100B-TBHL-* LOC *O CCFC BSS 100B WORKING BUFFER FOR COPY FILE CCFCL EQU *-CCFC WORKING BUFFER LENGTH CDN SPACE 4,10 ** CDN - COPY DEFAULT TAPE CATALOG FILE. * * EXIT (WBUF) COPIED TO NEW TAPE CATALOG FILE. * * USES A - 1, 6. * X - 1, 6. * * MACROS MOVEBIT, REWIND, WRITER, WRITEW. CDN SUBR ENTRY/EXIT REWIND N,R WRITE DEFAULT SYSTEM BLOCK MOVEBIT MI,SYBL+TMID,12,11 SET MACHINE ID IN BLOCK MOVEBIT CF,SYBL+TMFM,42 SET FAMILY NAME IN BLOCK SA1 PD GET PACKED DATE/TIME BX6 X1 SA6 BCW1+BWDT SET DATE IN BUFFER CONTROL WORDS SA6 BCW2+BWDT SA6 BCW3+BWDT SA6 BCW4+BWDT SA6 BCW5+BWDT WRITEW N,WBUF,WBUFL WRITER N,R WRITE EOR EQ CDNX RETURN CFS SPACE 4,10 ** CFS - CHECK FILE STATUS. * * ENTRY (A2) = FET ADDRESS. * (X2) = FIRST WORD OF FET. * * EXIT (X6) = -1 IF MASS STORAGE FILE. * = 0 IF NO FILE. * = 1 IF TERMINAL FILE. * * USES X - 0, 2. * * CALLS STF. CFS1 SX6 B1 SET TERMINAL FILE STATUS CFS SUBR ENTRY/EXIT MX0 42 CHECK FILE NAME BX6 X0*X2 ZR X6,CFSX IF NO FILE NAME SX2 A2 RJ STF SET TERMINAL FILE ZR X6,CFS1 IF TERMINAL FILE SX6 -B1 SET MASS STORAGE FILE STATUS EQ CFSX RETURN CIL SPACE 4,10 ** CIL - CLEAR INTERLOCKS ON FILE. * * ENTRY (WBUF - WBUF+100B) = FIRST PRU OF FILE. * * EXIT UTILITY INTERLOCKS CLEARED. * * CALLS WFP. * * MACROS MOVEBIT. CIL SUBR ENTRY/EXIT MOVEBIT (=0),SYBL+TMFM,1,,0 CLEAR INTERLOCKS MOVEBIT (=0),SYBL+TMID,24,,47 MOVEBIT (=0),WBUF+BWUN,UNKL*6 RJ WFP REWRITE FIRST PRU EQ CILX RETURN CPN SPACE 4,10 ** CPN - COPY OLD TAPE CATALOG TO NEW FILE. * * EXIT (X4) = 0 IF OLD TAPE CATALOG FILE COPIED TO NEW. * * USES A - 1, 2. * B - 7. * X - 1, 2. * * CALLS GFL. * * MACROS READEI, READW, REWIND, WRITER, WRITEW. CPN SUBR ENTRY/EXIT SA2 P RJ GFL GET FILE LENGTH SX4 B1 ZR X1,CPNX IF ZERO-LENGTH FILE MX0 42 COMPARE FILE NAMES SA1 N SA2 P BX1 X1-X2 BX4 X0*X1 ZR X4,CPNX IF SAME FILE NAMES REWIND N,R COPY OLD TAPE CATALOG FILE TO NEW REWIND P,R READEI P,R INITIATE READ CPN1 READW P,WBUF,WBUFL NG X1,CPN2 IF EOI WRITEW N,WBUF,WBUFL WRITE DATA EQ CPN1 CONTINUE READ CPN2 SB7 B6-WBUF COMPLETE RECORD WRITEW N,WBUF,B7 WRITER N,R WRITE EOR SX4 B0 EQ CPNX RETURN GFI SPACE 4,10 ** GFI - GET FILE INFORMATION. * * ENTRY (X2) = FIRST WORD OF FET. * * EXIT (X2) = ADDRESS OF *FILINFO* BLOCK. * * USES A - 6. * X - 0, 2, 6. * * MACROS FILINFO. GFI SUBR ENTRY/EXIT MX0 42 SET FILE NAME IN *FILINFO* BLOCK BX2 X0*X2 SX6 50001B BX6 X2+X6 SA6 GFIA FILINFO GFIA GET FILE INFORMATION EQ GFIX RETURN GFIA BSS 5 *FILINFO* BLOCK GFL SPACE 4,10 ** GFL - GET FILE LENGTH. * * ENTRY (X2) = FIRST WORD OF FET. * * EXIT (X1) = NUMBER OF PRUS IN FILE. * * USES A - 1. * X - 1. * * CALLS GFI. * * MACROS RJUST. GFL SUBR ENTRY/EXIT RJ GFI GET FILE INFORMATION SA1 X2+3 GET FILE LENGTH RJUST X1,X1,24,59 EQ GFLX RETURN GOT SPACE 4,10 ** GOT - GET JOB ORIGIN. * * ENTRY NONE. * * EXIT (X6) = ORIGIN TYPE. * (OT) = ORIGIN TYPE. * * USES A - 1, 6. * X - 1, 2. GOT SUBR ENTRY/EXIT MX0 -12 GET ORIGIN TYPE SA1 JOPR AX1 24 BX6 -X0*X1 SA6 OT EQ GOTX RETURN GSF SPACE 4,10 *** GSF - GET SCRATCH FILE NAME. * * EXIT (X6) = UNASSIGNED SCRATCH FILE NAME. * * USES A - 1, 6. * X - 1, 4, 6. * * MACROS PDATE, STATUS. GSF4 SX1 B1 SET FILE NAME IN FET BX6 X6+X1 SA6 Z STATUS Z CHECK FILE STATUS SX6 7776B SA1 Z BX6 X6*X1 NZ X6,GSF1 IF FILE EXISTS MX6 42 GET FILE NAME BX6 X6*X1 GSF SUBR ENTRY/EXIT GSF1 SA1 GSFA NZ X1,GSF2 IF BINARY NUMBER EXISTS SA1 GSFC SET INITIAL BINARY BX6 X1 SA6 GSFA PDATE GSFB GET PACKED DATE AND TIME MX6 -6 RANDOMIZE BINARY SA1 GSFB BX6 -X6*X1 LX6 15 SA1 GSFA BX6 X1-X6 SA6 A1 BX1 X6 GSF2 SX6 B1 RESET BINARY IX6 X1-X6 SA6 A1 * CONVERT BINARY TO FILE NAME. SX6 B0 GSF3 ZR X1,GSF4 IF END OF BINARY MX4 -5 CONVERT 5 BINARY BITS TO CHARACTER CODE BX4 -X4*X1 SX4 X4+B1 BX6 X6+X4 LX6 -6+60 AX1 5 EQ GSF3 GET NEXT CHARACTER CODE GSFA CON 0 BINARY NUMBER GSFB CON 0 PACKED DATE AND TIME GSFC CON 317777777777B Z BSS 0 *STATUS* FET Z555555 FILEB 0,0,(FET=5) INF SPACE 4,10 ** INF - INITIALIZE FILES. * * EXIT INPUT, OUTPUT, SOURCE, MACHINE READABLE, AND * NEW TAPE CATALOG FILES SET WITH ID=0. * * USES A - 1, 2, 6. * X - 1, 2, 6. * * CALLS CFS, GFL. * * MACROS SETID. INF SUBR ENTRY/EXIT SA2 I GET INPUT FILE RJ CFS CHECK FILE STATUS SA6 IS SAVE FILE STATUS SA1 OS SAVE FILE STATUS PL X1,INF1 IF TERMINAL FILE OR NO FILE SA2 L RJ GFL GET FILE LENGTH NZ X1,INF1 IF NOT ZERO-LENGTH FILE SETFS L,0 FORCE ID OF ZERO INF1 SA2 S GET SOURCE FILE RJ CFS CHECK FILE STATUS PL X6,INF2 IF TERMINAL FILE OR NO FILE SA2 S RJ GFL GET FILE LENGTH NZ X1,INF2 IF NOT ZERO-LENGTH FILE SETFS S,0 FORCE ID OF ZERO INF2 SA2 SS GET MACHINE READABLE FILE RJ CFS CHECK FILE STATUS PL X6,INF3 IF TERMINAL FILE OR NO FILE SA2 SS RJ GFL GET FILE LENGTH NZ X1,INF3 IF NOT ZERO-LENGTH FILE SETFS SS,0 INF3 SA1 LF ZR X1,INFX IF NOT LOCAL FILE MODE SETFS N,0 FORCE ID FOR NEW TAPE CATALOG TO ZERO EQ INFX RETURN RFP SPACE 4,10 ** RFP - READ FIRST PRU OF FILE. * * EXIT (WBUF - WBUF+100B) = FIRST PRU OF FILE. * * USES A - 6. * X - 6. * * MACROS READW, RECALL, RPHRLS. RFP SUBR ENTRY/EXIT RECALL N READ FIRST PRU OF FILE SX6 RFPA SA6 N+5 RPHRLS X2,R READW X2,WBUF,100B EQ RFPX RETURN RFPA CON 1 TABLE OF PRUS TO READ CON 0 SFL SPACE 4,10 ** SFL - SET FAMILY NAME. * * EXIT (X1) = FAMILY NAME. * (CF) = CURRENT (ORIGINAL) FAMILY NAME. * (FM) = SPECIFIED FAMILY NAME. * * USES A - 1, 2, 6. * X - 1, 2, 6. * * CALLS CFM. * * MACROS GETPFP. SFL1 BX6 X1 SET FAMILY NAME SA6 FM SFL SUBR ENTRY/EXIT GETPFP SFLA GET PERMANENT FILE PARAMETERS SA1 SFLA GET CURRENT FAMILY NAME BX6 X1 SA6 CF SA2 FM ZR X2,SFL1 IF NO ALTERNATE FAMILY BX1 X2 RJ CFM CHANGE FAMILY SA1 FM EQ SFLX RETURN SFLA BSS 3 PARAMETER BLOCK SIL SPACE 4,10 ** SIL - SET INTERLOCK ON FILE. * * EXIT (X4) = 0 IF INTERLOCK SET. * (X6) = ERROR MESSAGE ADDRESS IF INTERLOCK NOT SET. * * USES A - 1, 2. * X - 0, 1, 2, 3, 4, 6. * * CALLS ATT, GFI, RCW, WFP. * * MACROS MOVEBIT, RETURN, RJUST, ROLLOUT, SRCHTAB. SIL SUBR ENTRY/EXIT SIL1 SB3 PTRU SELECT READ/UPDATE FAST ATTACH RJ ATT ATTACH FILE SX6 MFNA NZ X4,SILX IF FILE NOT FOUND RETURN N,R RETURN FILE SA1 SYBL+TMFM CHECK UTILITY INTERLOCK BIT RJUST X1,X6,1,0 SA1 WBUF+BWUN CHECK USER NAME FIELD MX0 42 BX1 X0*X1 BX1 X1+X6 ZR X1,SIL3 IF NOT INTERLOCKED SIL2 SA1 RT SX6 MTCI SX4 B1 SET FLAG FOR INTERLOCK SET ZR X1,SILX IF NO RETRY REQUESTED ROLLOUT =10 EQ SIL1 RETRY REQUEST SIL3 SA1 OT CHECK ORIGIN SX1 X1-SYOT ZR X1,SIL4 IF SYSTEM ORIGIN MX0 42 CHECK IF USER IS VALIDATED SRCHTAB SYBL+TMUN,SSJ=+UIDS,UNCL SX6 MILA NZ X4,SILX IF USER NOT VALIDATED SIL4 SB3 PTUP SELECT UPDATE MODE FAST ATTACH RJ ATT ATTACH FILE SX6 MFNA NZ X4,SILX IF FILE NOT FOUND SA1 SYBL+TMFM CHECK UTILITY INTERLOCK BIT RJUST X1,X6,1,0 SA1 WBUF+BWUN CHECK USER NAME FIELD MX0 42 BX1 X0*X1 BX1 X1+X6 ZR X1,SIL5 IF NOT INTERLOCKED RETURN N,R RETURN FILE EQ SIL2 CHECK IF RETRY SIL5 SX2 ESTP READ EST POINTER RJ RCW LX1 24 SET EST FWA SX3 X1 SA2 N RJ GFI GET FILE INFORMATION SA2 X2+2 GET EST ORDINAL OF CATALOG MX0 -9 SX4 ESTE LX2 12 BX2 -X0*X2 EXTRACT EST ORDINAL IX2 X2*X4 IX2 X2+X3 SET EST ADDRESS RJ RCW READ EST ENTRY MX0 -12 LX1 59-52 PL X1,SIL6 IF NOT SHARED DEVICE LX1 52-59 BX1 -X0*X1 LX1 3 SX2 X1+DULL SET ADDRESS OF MST *DULL* WORD RJ RCW READ MACHINE INDEX MX0 -4 SET MACHINE INDEX-1 LX1 -24 BX6 -X0*X1 SA6 MX MOVEBIT MX,WBUF+BWUN,4,3,15 SET MACHINE INDEX-1 SIL6 MOVEBIT (=-0),WBUF+BWUN,UNKL*6 SET USER NAME INTERLOCK RJ WFP REWRITE FIRST PRU RETURN N,R RETURN FILE SX4 B0 EQ SILX RETURN WFP SPACE 4,10 ** WFP - REWRITE FIRST PRU OF FILE. * * ENTRY (WBUF - WBUF+100B) = NEW FIRST PRU OF FILE. * * MACROS REWIND, REWRITE, WRITEW. WFP SUBR ENTRY/EXIT REWIND N,R REWRITE FIRST PRU REWRITE X2,* WRITEW X2,WBUF,100B REWRITE X2,R EQ WFPX RETURN ZFN SPACE 4,10 ** ZFN - ZERO OUT FILE NAMES IN FETS. * * EXIT FILE NAMES IN FETS *N*, *SS*, *UB*, AND *VB* CLEARED. * * MACROS SETFET. ZFN SUBR ENTRY/EXIT SETFET N,(LFN=B0) CLEAR NEW TAPE CATALOG FILE NAME SETFET SS,(LFN=B0) CLEAR MACHINE READABLE FILE NAME SETFET VB,(LFN=B0) CLEAR VSN ENTRY BUFFER FET SETFET UB,(LFN=B0) CLEAR ALTERNATE USER NAME BUFFER FET EQ ZFNX RETURN COMMON SPACE 4,10 ** COMMON DECKS. *CALL COMCARG *CALL COMCLFM *CALL COMCPFM *CALL COMCSTF WBUF SPACE 4,10 ** WBUF - WORKING BUFFER FOR TAPE CATALOG FILES. * * PRESET WITH FIRST FOUR BLOCKS OF TAPE CATALOG FILE. WBUF BSS 0 * FIRST PRU - SYSTEM BLOCK. BCW1 BSS 0 BUFFER CONTROL WORD - BLOCK 1 LOC 0 BWRT VFD 6/RTSB,6/0,12/0,12/100B-TBHL,12/1,12/TBHL BWDT VFD 24/0,36/ BWRI VFD 12/0,24/0,24/0 BWUN VFD 42/,18/0 LOC *O SYBL BSS 0 SYSTEM BLOCK LOC 0 TMFM VFD 42/,18/0 TMID VFD 12/,24/0,24/0 TMCT VFD 12/0,24/0,24/0 TMSM VFD 36/-0,24/0 TMMB BSSZ MBML TMUN BSSZ UNCL TMLF VFD 42/0,18/0 TMPA BSSZ PAFL TMSC VFD 36/-0,24/0 TMSA VFD 36/-0,24/0 BSS 100B-TBHL-* LOC *O * SECOND PRU - PRIMARY VSN BLOCK. BCW2 BSS 0 BUFFER CONTROL WORD - BLOCK 2 LOC 0 BWRT VFD 6/RTVB,6/1,12/100B-TBHL-TPIL,12/TPIL,12/1,12/TBHL BWDT VFD 24/0,36/ BWRI VFD 12/0,24/0,24/0 BWUN VFD 42/,18/0 LOC *O PVBL BSS 0 PRIMARY VSN BLOCK LOC 0 VFD 12/1,24/0,6/0,18/4 DUMMY VSN ENTRY BSS 100B-TBHL-* LOC *O * THIRD PRU - PRIMARY USER NAME BLOCK. BCW3 BSS 0 BUFFER CONTROL WORD - BLOCK 3 LOC 0 BWRT VFD 6/RTUB,6/1,12/100B-TBHL-TPIL,12/TPIL,12/1,12/TBHL BWDT VFD 24/0,36/ BWRI VFD 12/0,24/0,24/0 BWUN VFD 42/,18/0 LOC *O PUBL BSS 0 PRIMARY USER NAME BLOCK LOC 0 VFD 12/1,30/0,18/5 DUMMY USER NAME ENTRY BSS 100B-TBHL-* LOC *O * FOURTH PRU - SECONDARY VSN BLOCK. BCW4 BSS 0 BUFFER CONTROL WORD - BLOCK 4 LOC 0 BWRT VFD 6/RTVB,6/2,12/100B-TBHL-TSVL,12/TSVL,12/1,12/TBHL BWDT VFD 24/0,36/ BWRI VFD 12/0,24/0,24/0 BWUN VFD 42/,18/0 LOC *O SVBL BSS 0 SECONDARY VSN BLOCK LOC 0 VFD 12/1,24/0,24/0 DUMMY VSN ENTRY VFD 36/0,6/0,18/0 VFD 36/0,24/0 VFD 36/0,24/0 BSS 100B-TBHL-* LOC *O * FIFTH PRU - SECONDARY USER NAME INDEX. BCW5 BSS 0 BUFFER CONTROL WORD BLOCK 5 LOC 0 BWRT VFD 6/RTUB,6/2,12/100B-TBHL-TSUL,12/TSUL,12/1,12/TBHL BWDT VFD 24/0,36/ BWRI VFD 12/0,24/0,24/0 BWUN VFD 42/,18/0 LOC *O SUBL BSS 0 SECONDARY VSN BLOCK LOC 0 VFD 12/1,30/0,18/0 DUMMY USER NAME ENTRY BSS 100B-TBHL-* LOC *O WBUFL EQU *-WBUF LENGTH OF WORKING BUFFER BUFFERS SPACE 4,10 ** FILE BUFFERS. PBUF BSS TBUFL NBUF BSS TBUFL SPACE 4 QUAL ENTRY SPACE 4,10 ** ENTRY POINTS. TFSP EQU /PRESET/TFSP TFSPE EQU /PRESET/TFSPE TFSPR EQU /PRESET/TFSPR RFL= SPACE 4,10 ** FIELD LENGTH. D1 MAX BUF1E,/PRESET/BUF2 IBUF EQU D1 INPUT FILE BUFFER D1 MAX IBUF+FBUFL,* RFL= EQU D1 REQUIRED FIELD LENGTH SPACE 4 END