cdc:nos2.source:opl871:genpfd
Table of Contents
GENPFD
Table Of Contents
- [00007] GENPFD - PERMANENT FILE ARCHIVE SELECTION UTILITY.
- [00011] PERMANENT FILE ARCHIVE SELECTION UTILITY.
- [00129] DAYFILE MESSAGES.
- [00223] COMMON DECKS.
- [00232] ASSEMBLY CONSTANTS.
- [00272] MACRO DEFINITIONS.
- [00276] COPITEM - COPY ITEM FROM ONE FILE TO ANOTHER.
- [00300] COPYRUN - COPY RUN OF ENTRIES BETWEEN FILES.
- [00323] GETITEM - GET AN ITEM FROM A FILE.
- [00347] PUTITEM - WRITE ITEM TO FILE.
- [00370] RESET - REWIND FILE AND PREPARE FOR READING.
- [00392] REWRYTE - REWIND FILE AND PREPARE FOR WRITING.
- [00412] TABLES.
- [00417] ITEM - INTERNAL PRIORITY SORT RECORD.
- [00446] TDIR - TABLE OF DIRECTIVES.
- [00469] TDEN - TABLE OF TAPE DENSITIES AND GAP SIZES.
- [00502] TFMT - TABLE OF TAPE FORMATS AND BLOCK SIZES.
- [00519] TPRG - TABLE OF PREFERRED RESIDENCE GROUPS.
- [00542] TCDV - TABLE OF CATALOG DEVICES.
- [00568] TSDV - TABLE OF SELECTED DEVICE TYPES AND NUMBERS.
- [00590] TSFV - TABLE OF SPECIFIC FILE AND VSN SELECTIONS.
- [00618] GLOBAL CONSTANTS AND VARIABLES
- [00653] ERROR MESSAGES.
- [00663] MAIN LOOP.
- [00786] PRIMARY SUBROUTINES.
- [00788] ABT - ABORT PROCESSING.
- [00813] BDT - BUILD DEVICE TABLE.
- [00887] BSF - BUILD SELECTION FILE.
- [01171] BUD - BUILD UTILITY DIRECTIVES.
- [01341] CTL - CONVERT *DT* AND *DL* LENGTHS.
- [01388] IIS - ISSUE INITIAL STATISTICS.
- [01466] IFS - ISSUE FINAL STATISTICS.
- [01613] RCS - RESTORE CHARACTER SET.
- [01633] SRT - MERGE SORT OF *ITEML* SIZE ENTRIES.
- [01680] DIRECTIVE PROCESSORS.
- [01682] PDL - PROCESS *DL* DIRECTIVE.
- [01711] PDT - PROCESS *DT* DIRECTIVE.
- [01740] PPG - PROCESS *PG* DIRECTIVE.
- [01790] PRL - PROCESS *RL* DIRECTIVE.
- [01951] PSF - PROCESS *SF* AND *XF* DIRECTIVES.
- [02005] PSV - PROCESS *SV* DIRECTIVE.
- [02032] PTD - PROCESS *D* DIRECTIVE.
- [02069] PTF - PROCESS *F* DIRECTIVE.
- [02095] SECONDARY SUBROUTINES.
- [02097] CAP - CHECK FOR ALLOWABLE PATTERNS.
- [02153] GSH - GET SUMMARY RECORD HEADER.
- [02200] GSR - GET SUMMARY RECORD.
- [02406] PFV - PROCESS FILE NAMES AND VSN-S.
- [02520] SORTMERGE PROCESSING SUBROUTINES.
- [02522] CIT - COPY ONE ITEM FROM ONE FILE TO ANOTHER.
- [02566] CRN - COPY RUN OF ENTRIES BETWEEN FILES.
- [02598] DTR - DISTRIBUTE RUNS FROM C ONTO A AND B.
- [02623] GIT - GET AN ITEM FROM A FILE.
- [02651] MRG - MERGE PHASE OF MERGESORT.
- [02710] MRN - MERGE ONE RUN FROM A AND B ONTO C.
- [02752] PIT - WRITE AN ITEM TO A FILE.
- [02764] RST - REWIND FILE AND PREPARE FOR READING.
- [02788] RWR - REWIND FILE AND PREPARE FOR WRITING.
- [02806] COMMON DECKS.
- [02831] FILE ENVIRONMENT TABLES.
- [02862] PRS - PRESET ROUTINES.
- [02865] PRS - PRESET PROGRAM.
Source Code
- GENPFD.txt
- IDENT GENPFD,ORIG
- ABS
- SST
- ENTRY GENPFD
- ENTRY RFL=
- SYSCOM B1
- TITLE GENPFD - PERMANENT FILE ARCHIVE SELECTION UTILITY.
- *COMMENT GENPFD - PERMANENT FILE ARCHIVE SELECTION UTILITY.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- GENPFD SPACE 4,10
- *** GENPFD - PERMANENT FILE ARCHIVE SELECTION UTILITY.
- *
- * R. E. DUNBAR. 87/02/01.
- SPACE 4,10
- *** *GENPFD* IS A UTILITY TO GENERATE A *PFDUMP* DIRECTIVE FILE.
- *
- SPACE 4,20
- *** COMMAND FORMAT.
- *
- *
- * GENPFD(P1,P2,...,PN)
- * OR
- * GENPFD(P1,P2,...,PN)/DIR1,DIR2,...,DIRN.
- *
- *
- * *PN* MAY BE ONE OF THE FOLLOWING -
- *
- * PARAMETER DESCRIPTION
- * --------- -----------
- *
- * I=IFILE LOCAL FILE NAME OF THE INPUT DIRECTIVE
- * FILE. THE DEFAULT NAME IS *INPUT*.
- *
- * L=OFILE LOCAL FILE NAME OF THE OUTPUT LISTING
- * FILE. THE DEFAULT NAME IS *OUTPUT*.
- *
- * PO=POPT PROCESSING OPTION.
- *
- * PO=R. SELECT FILES TO BE RELEASED.
- * PO=D. SELECT FILES TO BE DESTAGED.
- *
- * U=UNITS DESTAGE LIMIT/THRESHOLD UNIT OF MEASURE.
- *
- * U=FT. MEASURED IN FEET OF TAPE.
- * U=MB. MEASURED IN MEGABYTES.
- * THE DEFAULT IS *U=FT*.
- *
- * S=PFILE LOCAL FILE NAME OF THE SUMMARY FILE.
- * THE DEFAULT NAME IS *SUMMARY*.
- *
- * UD=DFILE LOCAL FILE NAME OF THE PERMANENT FILE
- * UTILITY DIRECTIVE FILE. THE DEFAULT
- * NAME IS *UDIR*.
- *
- * Z INDICATES DIRECTIVES ARE TO BE TAKEN FROM
- * COMMAND LINE. DEFAULT IS FROM *INPUT*.
- *
- * GENPFD(...Z...)/DIR/DIR/DIR
- * / IS ANY CHARACTER NOT IN *DIR*.
- SPACE 4,20
- *** *DIRN* MAY BE ONE OF THE FOLLOWING -
- *
- *
- * *DIRN* DESCRIPTION
- * ------ -----------
- *
- *
- * D,DENSITY. THE DENSITY THAT WILL BE USED FOR THE
- * ARCHIVE DUMP TAPE. THE DEFAULT IS *GE*.
- * THE FOLLOWING DENSITIES ARE RECOGNIZED.
- *
- * 7 TRACK (MT) 9 TRACK (NT) CARTRIDGE (CT/AT)
- * D=LO 200 CPI D=HD 800 CPI D=CE 38000 CPI
- * D=HI 556 CPI D=PE 1600 CPI D=AE 38000 CPI
- * D=HY 800 CPI D=GE 6250 CPI D=38000 38000 CPI
- * D=200 200 CPI D=1600 1600 CPI
- * D=556 556 CPI D=6250 6250 CPI
- *
- * DL,LIMIT. TOTAL LENGTH OF ARCHIVE DUMP, IN FEET OF
- * TAPE IF *U=FT*, OR IN MEGABYTES IF *U=MB*.
- * FOR TAPE, *DL* IS USED IN CONJUNCTION WITH
- * *D* IN CALCULATING WHETHER A FILE WILL
- * FIT ON THE DUMP SET. THE DEFAULT FOR
- * *MT* OR *NT* TAPE IS 2200 FEET, ALLOWING
- * A SIGNIFICANT NUMBER OF RECOVERED ERRORS
- * ON A 2400 FOOT REEL. THE DEFAULT LENGTH
- * FOR *CT* OR *AT* TAPE IS 500 FEET; A
- * CARTRIDGE CONTAINS 530 FEET OF TAPE. THE
- * DEFAULT SIZE FOR OPTICAL DISK IS 102MB.
- *
- * DT,THRESHOLD. MINIMUM LENGTH OF ARCHIVE DUMP, IN FEET OF
- * TAPE IF *U=FT*, OR IN MEGABYTES IF *U=MB*.
- * IF SELECTED FILES WOULD FILL LESS THAN THE
- * SPECIFIED MINIMUM SPACE, NO PERMANENT FILE
- * UTILITY DIRECTIVE FILE WILL BE WRITTEN.
- * THE DEFAULT IS NINETY PERCENT OF THE VALUE
- * OF *DL*.
- *
- * F,FORMAT. FORMAT IN WHICH THE ARCHIVE TAPE IS TO BE
- * RECORDED. ACCEPTABLE VALUES ARE *I* AND
- * *LI*. THE DEFAULT IS *I* FORMAT.
- *
- * PG,PR1,PR2,PR3. PRIORITY GROUPS, BASED ON THE MNEMONIC FOR
- * PREFERRED RESIDENCE. CODES D, L, M, N AND
- * T ARE GROUPED IN 1 TO 5 GROUPS IN ORDER OF
- * THEIR PRIORITY FOR ARCHIVING.
- *
- * RL,DN,TRACKS. DEFINES THE NUMBER OF AVAILABLE TRACKS
- * RL,DT,TRACKS. GOAL FOR THE SPECIFIED DEVICE NUMBER OR
- * FOR EACH DEVICE OF THE SPECIFIED DEVICE
- * TYPE. A *TRACKS* VALUE SPECIFIED FOR A
- * DEVICE NUMBER TAKES PRECEDENCE OVER ONE
- * SPECIFIED FOR A DEVICE TYPE WHEN BOTH
- * ARE APPLICABLE.
- *
- * SF,UI,F1,F2,..FN. SELECT FILES FOR USER INDEX *UI*, FILE
- * SF,UI. NAMES *F1* THROUGH *FN*. IF *F1*...*FN*
- * ARE OMITTED, SELECT ALL FILES FOR USER
- * INDEX *UI*.
- *
- * SV,V1,V2,..VN. SELECT FILES WHOSE CATALOG ENTRIES SHOW
- * ALTERNATE VSN-S WHICH MATCH TO ANY OF THE
- * *V1* THROUGH *VN* VALUES.
- *
- * XF,UI,F1,F2,..FN. EXCLUDE FILES FOR USER INDEX *UI*, FILE
- * XF,UI. NAMES *F1* THROUGH *FN*. IF *F1*...*FN
- * ARE OMITTED, EXCLUDE ALL FILES FOR USER
- * INDEX *UI*.
- TITLE DAYFILE MESSAGES.
- SPACE 4,20
- *** DAYFILE MESSAGES.
- *
- * * DIRECTIVE ARGUMENT ERROR.* - *GENPFD* DETECTED AN ERROR IN
- * AN INPUT DIRECTIVE. THIS COULD BE A BAD SEPARATOR,
- * AN INCORRECT VALUE, TOO MANY VALUES, ETC.
- *
- * * DN = NN, FILE TRACK COUNT = XXXXXXXXX.* - FOR DEVICE NN,
- * SPECIFIED VIA *RL* DIRECTIVE, FILES REPRESENTING THE
- * EQUIVALENT OF X..X TRACKS WERE SELECTED.
- *
- * * DT = TTT, FILE TRACK COUNT = XXXXXXXXX.* - FOR DEVICE TYPE
- * TTT, SPECIFIED VIA *RL* DIRECTIVE, FILES REPRESENTING
- * THE EQUIVALENT OF X..X TRACKS WERE SELECTED.
- *
- * * DUMP THRESHOLD NOT REACHED.* - TOO FEW FILES QUALIFIED FOR
- * SELECTION.
- *
- * * FEET OF DUMP TAPE REQUIRED = XXXXXXXXX.* - FILES SPECIFIED
- * BY THE UTILITY DIRECTIVES GENERATED BY *GENPFD* WILL
- * FILL X..X FEET OF TAPE AT THE SELECTED DENSITY.
- *
- * * FILES SELECTED FOR PPPPPPP = XXXXXXXXX.* - *GENPFD* WROTE
- * UTILITY DIRECTIVES FOR X..X FILES TO THE *UD* FILE.
- * P..P IS EITHER *DESTAGE* OR *RELEASE*, DEPENDING ON
- * THE *PO=* OPTION SPECIFIED ON THE *GENPFD* COMMAND.
- *
- * * FIRST SELECTION FILE COUNT = XXXXXXXXX.* - X..X FILES WERE
- * QUALIFIED BY SELECTED USER INDEX/FILE NAME, SELECTED
- * ARCHIVE VSN, OR PREFERRED RESIDENCE AND RELEASE DEVICE
- * RESIDENCE TO BE PRIORITIZED FOR FINAL SELECTION.
- *
- * * GENPFD ABORTED.* - *GENPFD* HAS DETECTED AN ERROR OR
- * THE USER HAS INITIATED AN ABORT.
- *
- * * GENPFD ARGUMENT ERROR.* - AN INCORRECT ARGUMENT WAS
- * DETECTED ON THE *GENPFD* COMMAND.
- *
- * * GENPFD COMPLETE.* - NORMAL COMPLETION.
- *
- * * INCORRECT ARGUMENT VALUE.* - A VALUE ENTRY ON A DIRECTIVE
- * IS NOT VALID FOR THAT DIRECTIVE. THIS COULD BE A NAME
- * LONGER THAN SEVEN CHARACTERS, AN ALPHABETIC STRING
- * WHEN A NUMBER IS EXPECTED, ETC.
- *
- * * MAXIMUM TOTAL FEET OF TAPE = XXXXXXXXX.* - FILES QUALIFYING
- * FOR FINAL SELECTION WOULD OCCUPY X..X FEET OF TAPE AT
- * THE SELECTED DENSITY IF THEY WERE ALL SELECTED.
- *
- * * MAXIMUM TOTAL MEGABYTES = XXXXXXXXX.* - FILES QUALIFYING
- * FOR FINAL SELECTION WOULD OCCUPY X..X MEGABYTES IF
- * THEY WERE ALL SELECTED.
- *
- * * MEGABYTES REQUIRED FOR DUMP= XXXXXXXXX.* - FILES SPECIFIED
- * BY THE UTILITY DIRECTIVES GENERATED BY *GENPFD* WILL
- * FILL X..X MEGABYTES.
- *
- * * NO FILES SELECTED FOR PPPPPPP.* - EITHER NO FILES MET THE
- * SELECTION CRITERIA OR NONE OF THE SELECTED FILES CAN
- * BE DUMPED WITHOUT EXCEEDING THE *DL* MAXIMUM.
- * P..P IS EITHER *DESTAGE* OR *RELEASE*, DEPENDING ON
- * THE *PO=* OPTION SPECIFIED ON THE *GENPFD* COMMAND.
- *
- * * SELECTION FILE DEVICE NUMBER ERROR.* - PROGRAM ERROR - A
- * DEVICE NUMBER NOT IN THE CATALOG DEVICE TABLE
- * WAS FOUND IN A RECORD DURING FINAL SELECTION.
- *
- * * SUFFICIENT TRACKS ALREADY AVAILABLE.* - THE *TRACKS* GOAL
- * SPECIFIED ON THE *RL* DIRECTIVE IS ALREADY AVAILABLE
- * ON THE DESIGNATED DEVICE(S).
- *
- * * SUMMARY FILE IS EMPTY OR MISPOSITIONED.* - END OF
- * FILE OR END OF RECORD WAS DETECTED ON THE FIRST READ
- * OF THE SUMMARY FILE.
- *
- * * SUMMARY FILE PREFIX TABLE ERROR.* - NO PREFIX TABLE
- * RECORD WAS FOUND ON THE SUMMARY FILE.
- *
- * * TOO MANY DEVICE SELECTION (RL) ENTRIES.* - THE SIZE OF THE
- * *TSDV* TABLE WAS EXCEEDED. THERE ARE TOO MANY *RL*
- * DIRECTIVES.
- *
- * * TOO MANY FILE/VSN SELECTION (SF SV XF) ENTRIES.* - THE SIZE
- * OF THE *TSFV* TABLE WAS EXCEEDED. THERE ARE TOO MANY
- * *SF*, *SV*, AND/OR *XF* DIRECTIVE ENTRIES.
- *
- * * TOO MANY PRIORITY GROUP (PG) ENTRIES.* - THE SIZE OF THE
- * *TPRG* TABLE WAS EXCEEDED. THERE ARE TOO MANY ENTRIES
- * ON THE *PG* DIRECTIVE.
- *
- * * *WARNING* - FILE(S) LARGER THAN *DL* LIMIT.* - *GENPFD*
- * ENCOUNTERED AND SKIPPED ONE OR MORE FILES LARGER THAN
- * THE LIMIT SPECIFIED ON THE *DL* DIRECTIVE.
- TITLE COMMON DECKS.
- SPACE 4,10
- * COMMON DECKS.
- *CALL COMCCMD
- *CALL COMCMAC
- *CALL COMSPFM
- *CALL COMSRPV
- TITLE ASSEMBLY CONSTANTS.
- SPACE 4,10
- **** ASSEMBLY CONSTANTS.
- * SUMMARY FILE RECORD SIZES.
- SFPTL EQU 16B SUMMARY FILE PREFIX TABLE LENGTH
- SFSHL EQU 13B SUMMARY FILE SYSTEM RECORD HEADER LENGTH
- SFSIL EQU 0 SUMMARY FILE SYSTEM RECORD ITEM LENGTH
- SFDHL EQU 2 SUMMARY FILE DEVICE RECORD HEADER LENGTH
- SFDIL EQU 2 SUMMARY FILE DEVICE RECORD ITEM LENGTH
- SFFHL EQU 0 SUMMARY FILE CATALOG ENTRY HEADER LENGTH
- SFFIL EQU 21B SUMMARY FILE CATALOG ENTRY ITEM LENGTH
- DLMB EQU 102 MEGABYTES DEFAULT FOR *DL* DIRECTIVE.
- DLDF EQU 2200 DEFAULT FOR *DL* DIRECTIVE (*MT*/*NT*)
- DLDFC EQU 500 DEFAULT FOR *DL* DIRECTIVE (*CT*/*AT*)
- DTDF EQU 90 *DT* DEFAULT PERCENT OF *DL* VALUE
- ITEML EQU 3 LENGTH OF PRIORITY SORT ITEM RECORD
- MFETL EQU 6 FET SIZE FOR MERGE/SORT FILES
- PBYT EQU 480 NUMBER OF 8-BIT BYTES PER PRU
- MPRU EQU 2083 NUMBER OF SECTORS PER MEGABYTE
- RPTR EQU MFETL RECORD POINTER FOR MERGE/SORT FILES
- EOF EQU RPTR+ITEML END OF FILE FLAG FOR MERGE/SORT FILES
- TCDVE EQU 2 TABLE OF CATALOG DEVICES ENTRY SIZE
- TCDVN EQU 120B TABLE OF CATALOG DEVICES ENTRIES
- TSDVE EQU 2 TABLE OF SELECTED DEVICES ENTRY SIZE
- TSDVN EQU 120B TABLE OF SELECTED DEVICES ENTRIES
- TSFVE EQU 1 TABLE OF SELECTED FILES/VSN-S ENTRY SIZE
- TSFVN EQU 1000 TABLE OF SELECTED FILES/VSN-S ENTRIES
- * BUFFER SIZE DEFINITIONS.
- IBUFL EQU 201B INPUT BUFFER LENGTH
- OBUFL EQU 201B OUTPUT BUFFER LENGTH
- SBUFL EQU 1001B SUMMARY FILE BUFFER LENGTH
- SMBFL EQU 1001B SELECTION/MERGE SORT BUFFER LENGTH
- UBUFL EQU 201B UTILITY DIRECTIVES BUFFER LENGTH
- WSAL EQU 1000B WORKING STORAGE BUFFER LENGTH
- TITLE MACRO DEFINITIONS.
- SPACE 4,10
- * MACRO DEFINITIONS USED FOR MERGESORT.
- COPITEM SPACE 4,15
- ** COPITEM - COPY ITEM FROM ONE FILE TO ANOTHER.
- *
- * COPITEM FILEX,FILEY
- *
- * ENTRY *FILEX* = FET ADDRESS OF FILE TO READ FROM.
- * *FILEY* = FET ADDRESS OF FILE TO WRITE TO.
- *
- * EXIT ITEM COPIED.
- * *ERUN* SET IF ITEM COPIED WAS END OF A RUN.
- *
- * USES X - 2, 5.
- *
- * CALLS CIT.
- PURGMAC COPITEM
- COPITEM MACRO FILEX,FILEY
- MACREF COPITEM
- R= X2,FILEX
- R= X5,FILEY
- RJ CIT
- COPITEM ENDM
- COPYRUN SPACE 4,15
- ** COPYRUN - COPY RUN OF ENTRIES BETWEEN FILES.
- *
- * COPYRUN FILEX,FILEY
- *
- * ENTRY *FILEX* = FET ADDRESS OF FILE TO READ FROM.
- * *FILEY* = FET ADDRESS OF FILE TO WRITE TO.
- *
- * EXIT RUN COPIED FROM *FILEX* TO *FILEY*.
- *
- * USES X - 2, 5.
- *
- * CALLS CRN.
- PURGMAC COPYRUN
- COPYRUN MACRO FILEX,FILEY
- MACREF COPYRUN
- R= X2,FILEX
- R= X5,FILEY
- RJ CRN
- COPYRUN ENDM
- GETITEM SPACE 4,15
- ** GETITEM - GET AN ITEM FROM A FILE.
- *
- * GETITEM FET,ITEM
- *
- * ENTRY *FET* = FET ADDRESS OF FILE.
- * *ITEM* = ITEM DESTINATION ADDRESS.
- *
- * EXIT VALUE MOVED.
- * EOF FLAG SET IF NEXT READ FAILS.
- *
- * USES X - 0, 5.
- *
- * CALLS GIT.
- PURGMAC GETITEM
- GETITEM MACRO FET,ITEM
- MACREF GETITEM
- R= X0,FET
- R= X5,ITEM
- RJ GIT
- GETITEM ENDM
- PUTITEM SPACE 4,15
- ** PUTITEM - WRITE ITEM TO FILE.
- *
- * PUTITEM FET,ITEM
- *
- * ENTRY *FET* = FET ADDRESS OF FILE.
- * *ITEM* = ADDRESS OF ITEM TO WRITE.
- *
- * EXIT ITEM WRITTEN TO FILE.
- *
- * USES X - 2, 5.
- *
- * CALLS PIT.
- PURGMAC PUTITEM
- PUTITEM MACRO FET,ITEM
- MACREF PUTITEM
- R= X2,FET
- R= X5,ITEM
- RJ PIT
- PUTITEM ENDM
- RESET SPACE 4,15
- ** RESET - REWIND FILE AND PREPARE FOR READING.
- *
- * RESET FILE
- *
- * ENTRY *FILE* = FET ADDRESS OF FILE TO REWIND AND READ.
- *
- * EXIT FILE REWOUND AND PARTIALLY READ.
- * EOF FLAG SET IF FILE IS EMPTY.
- *
- * USES X - 2.
- *
- * CALLS RST.
- PURGMAC RESET
- RESET MACRO FET
- MACREF RESET
- R= X2,FET
- RJ RST
- RESET ENDM
- REWRYTE SPACE 4,15
- ** REWRYTE - REWIND FILE AND PREPARE FOR WRITING.
- *
- * REWRYTE FILE
- *
- * ENTRY *FILE* = FET ADDRESS OF FILE TO REWIND AND WRITE.
- *
- * EXIT FILE REWOUND, EOF FLAG SET ON.
- *
- * USES X - 2.
- *
- * CALLS RWR.
- PURGMAC REWRYTE
- REWRYTE MACRO FILE
- MACREF REWRYTE
- R= X2,FILE
- RJ RWR
- REWRYTE ENDM
- TITLE TABLES.
- ORIG SPACE 4,10
- ORG 110B
- ORIG EQU * PROGRAM ORIGIN
- ITEM SPACE 4,30
- ** ITEM - INTERNAL PRIORITY SORT RECORD.
- *
- * *ITEM* IS USED BY *GENPFD* TO BUILD THE PRIORITY SORT
- * RECORD AND TO PROCESS IT AFTER THE SORT IS COMPLETED.
- *
- *T 6/ PG, 36/ PDTM, 18/ SIZE
- *T, 42/ FILE NAME, 18/ USER INDEX
- *T, 6/ DN, 24/ TSC, 30/ LEN
- *
- * PG PRIORITY GROUP 0-7, 10-17.
- * 0 OR 10B FOR FILES MATCHING *SF* OR *SV* ENTRIES.
- * 0 - 7 FOR FILES MATCHING *RL* DEVICE ENTRIES.
- * 10B-17B FOR FILES NOT MATCHING *RL* DEVICE ENTRIES.
- * PDTM PACKED DATE AND TIME - LAST ACCESS IF *PO=R*,
- * LAST DATA MODIFICATION IF *PO=D*.
- * SIZE COMPLEMENT OF FILE SIZE IN SECTORS. FILE SIZES
- * OVER 17 BITS ARE REPRESENTED WITH BIT 17 CLEAR AND
- * THE COMPLEMENT OF THE HIGH 17 BITS OF THE FILE SIZE.
- * DN DEVICE NUMBER ON WHICH FILE RESIDES.
- * TSC TOTAL SECTOR COUNT ADJUSTED FOR FULL TRACKS.
- * LEN TAPE REQUIRED IN 32NDS OF AN INCH (INCHES*32).
- ITEM BSSZ ITEML
- ITKY EQU ITEM PG / PDTM / SIZE (SORT KEY)
- ITFN EQU ITEM+1 FILE NAME / USER INDEX
- ITDN EQU ITEM+2 DN / TSC / LEN
- ITSC EQU ITDN ALTERNATE FOR *ITDN*
- TDIR SPACE 4,10
- ** TDIR - TABLE OF DIRECTIVES.
- *
- * *TDIR* CONTAINS THE LEGAL DIRECTIVES AND THE ADDRESS
- * OF THE ROUTINE THAT PROCESSES THAT DIRECTIVE.
- *
- *T 42/ DNAME, 18/ PADDR
- *
- * DNAME DIRECTIVE NAME.
- * PADDR ADDRESS OF PROCESSING ROUTINE FOR *DNAME*.
- TDIR BSS 0
- VFD 42/0LD,18/PTD TAPE DENSITY
- VFD 42/0LDL,18/PDL DESTAGE LIMIT - FEET/MEGABYTES
- VFD 42/0LDT,18/PDT DESTAGE THRESHOLD - FEET/MEGABYTES
- VFD 42/0LF,18/PTF TAPE FORMAT
- VFD 42/0LPG,18/PPG PRIORITY GROUPS
- VFD 42/0LRL,18/PRL RELEASE LIMIT
- VFD 42/0LSF,18/PSF SPECIFIC FILE/USER INDEX SELECTIONS
- VFD 42/0LSV,18/PSV SPECIFIC VSN SELECTIONS
- TDIRX VFD 42/0LXF,18/PSF SPECIFIC FILE/USER INDEX EXCLUSIONS
- CON 0
- TDEN SPACE 4,15
- ** TDEN - TABLE OF TAPE DENSITIES AND GAP SIZES.
- *
- * *TDEN* CONTAINS THE TAPE DENSITY SYMBOLS *GENPFD* RECOGNIZES,
- * A FLAG THAT INDICATES IF THIS IS A CARTRIDGE TAPE DENSITY,
- * THE INTER-RECORD GAP SIZE FOR THAT DENSITY IN 1/32NDS OF AN
- * INCH (INCHES*32), AND THE NUMBER OF 8-BIT BYTES CONTAINED IN
- * ONE INCH OF MAGNETIC TAPE RECORDED AT THAT DENSITY.
- *
- *T 30/ DEN, 1/ CTF, 11/ GAP, 18/ BYTES
- *
- * DEN THE DISPLAY CODE SYMBOL FOR THE DENSITY.
- * CTF NONZERO IF CARTRIDGE TAPE DENSITY.
- * GAP THE INTER-RECORD GAP SIZE IN INCHES*32.
- * BYTES THE NUMBER OF 8-BIT BYTES PER INCH OF TAPE. FOR
- * 7-TRACK TAPE, THIS IS 3/4 OF THE RATED DENSITY.
- TDEN BSS 0 TABLE OF TAPE DENSITIES AND GAP SIZES
- VFD 30/2LLO,1/0,11/24,18/200*3/4
- VFD 30/2LHI,1/0,11/24,18/556*3/4
- VFD 30/2LHY,1/0,11/24,18/800*3/4
- VFD 30/2LHD,1/0,11/20,18/800
- VFD 30/2LPE,1/0,11/20,18/1600
- VFD 30/2LGE,1/0,11/10,18/6250
- VFD 30/2LCE,1/1,11/3,18/37871
- VFD 30/2LAE,1/1,11/3,18/37871
- VFD 30/3L200,1/0,11/24,18/200*3/4
- VFD 30/3L556,1/0,11/24,18/556*3/4
- VFD 30/4L1600,1/0,11/20,18/1600
- VFD 30/4L6250,1/0,11/10,18/6250
- VFD 30/5L38000,1/1,11/3,18/37871
- CON 0
- TFMT SPACE 4,15
- ** TFMT - TABLE OF TAPE FORMATS AND BLOCK SIZES.
- *
- * *TFMT* CONTAINS THE TAPE FORMAT SYMBOLS *GENPFD* RECOGNIZES,
- * AND THE NUMBER OF DISK PRU-S (MINUS ONE) CONTAINED IN ONE
- * TAPE BLOCK RECORDED IN THAT FORMAT.
- *
- *T 12/ FORMAT, 36/ 0, 12/ (PBLK-1)
- *
- * FORMAT THE DISPLAY CODE SYMBOL FOR THE FORMAT.
- * PBLK THE NUMBER OF DISK PRU-S PER TAPE BLOCK.
- TFMT BSS 0 TABLE OF TAPE FORMATS AND BLOCK SIZES
- VFD 12/1LI,36/0,12/10B-1
- VFD 12/2LLI,36/0,12/100B-1
- CON 0
- TPRG SPACE 4,15
- ** TPRG - TABLE OF PREFERRED RESIDENCE GROUPS.
- *
- * *TPRG* CONTAINS THE PREFERRED RESIDENCE PRIORITY GROUPINGS
- * AS DETERMINED BY THE *PG* DIRECTIVES OR BY DEFAULT. EACH
- * WORD IN THE TABLE REPRESENTS ONE PRIORITY GROUP, EARLIER
- * ENTRIES BEING HIGHER PRIORITY.
- *
- *T TPRGP 60/ N
- *
- *T,TPRG 6/PR, 6/PR, 6/PR, 6/PR, 6/PR, 6/PR, 6/PR, 6/PR, 6/PR, 6/PR
- *T,TPRG+N 60/ 0
- *
- * N NUMBER OF PRIORITY GROUPS.
- * PR PREFERRED RESIDENCE CODES IN THIS PRIORITY GROUP.
- TPRGP CON 3 NUMBER OF PRIORITY GROUPS (DEFAULT = 3)
- TPRG DATA 0LT PREFERRED RESIDENCE *T*
- DATA 0LMN PREFERRED RESIDENCES *M* AND *N*
- DATA 0LD PREFERRED RESIDENCE *D*
- BSSZ 2
- TPRGL EQU *-TPRG MAXIMUM NUMBER OF ENTRIES
- TCDV SPACE 4,10
- ** TCDV - TABLE OF CATALOG DEVICES.
- *
- * *TCDV* IS USED TO STORE THE INFORMATION FROM THE *DEVSTAT*
- * RECORDS OF THE SUMMARY FILE.
- *
- *T TCDVP 60/ N
- *
- *T TCDV 12/ DT, 12/ TKSZ, 12/ TKAV, 12/ TKS, 3/ 0, 3/ U, 6/ DN
- *T,TCDV+1 6/ 0, 24/ TASC, 14/ 0, 8/ SM, 8/ DM
- *
- * N NUMBER OF WORDS USED IN *TCDV* TABLE.
- * DT DEVICE TYPE MNEMONIC.
- * TKSZ TRACK SIZE OF THIS DEVICE IN SECTORS.
- * TKAV NUMBER OF TRACKS LEFT AVAILABLE.
- * TKS TOTAL NUMBER OF TRACKS ON DEVICE.
- * U NUMBER OF UNITS(SPINDLES) - 1.
- * DN DEVICE NUMBER.
- * TASC TOTAL AVAILABLE SECTOR COUNT.
- * NCT NUMBER OF CATALOG TRACKS ON DEVICE.
- * SM SECONDARY DEVICE MASK.
- * DM DEVICE MASK.
- TCDVP CON 0 NUMBER OF WORDS IN TABLE
- TCDV BSSZ TCDVN*TCDVE+TCDVE
- CON -0
- TSDV SPACE 4,10
- ** TSDV - TABLE OF SELECTED DEVICE TYPES AND NUMBERS.
- *
- * *TSDV* CONTAINS ENTRIES FOR DEVICE TYPES OR NUMBERS
- * SELECTED BY MEANS OF *RL* DIRECTIVES.
- *
- *T 12/ DT, 12/ TKSZ, 24/ GOAL, 3/ 0, 3/ U, 6/ DN
- *T, 30/ 0, 30/ SFSC
- *
- * DT DEVICE TYPE MNEMONIC, IF SUPPLIED ON *RL* DIRECTIVE.
- * TKSZ TRACK SIZE FOR DEVICE/ DEVICE TYPE.
- * GOAL SECTORS NEEDED TO MEET RELEASE GOAL.
- * U NUMBER OF UNITS(SPINDLES) - 1, IF SUPPLIED ON *RL*.
- * DN DEVICE NUMBER, IF SUPPLIED ON *RL* DIRECTIVE.
- * SFSC SELECTED FILE SECTOR COUNT.
- *
- * EITHER *DT* AND *U* APPEAR OR *DN* APPEARS, DEPENDING ON THE
- * FORMAT OF THE *RL* DIRECTIVE WHICH PROVIDED THE INFORMATION.
- TSDV BSSZ TSDVN*TSDVE+TSDVE
- CON -0
- TSFV SPACE 4,10
- ** TSFV - TABLE OF SPECIFIC FILE AND VSN SELECTIONS.
- *
- * *TSFV* CONTAINS SELECTED VSN ENTRIES SUPPLIED VIA *SV*
- * DIRECTIVES, SELECTED FILE/USER INDEX ENTRIES SUPPLIED
- * VIA *SF* DIRECTIVES, AND EXCLUDED FILE/USER INDEX ENTRIES
- * SUPPLIED VIA *XF* DIRECTIVES.
- *
- *T TSFVP 60/ N
- *
- *T TSFV 12/ VSNL2, 12/ VSNR4, 36/0
- * OR
- *T TSFV 42/ FN, 18/ UI
- *
- * N NUMBER OF WORDS IN THE *TSFV* TABLE.
- * VSNL2 THE LEFTMOST TWO CHARACTERS OF THE PRIMARY VSN.
- * VSNR4 12-BIT VALUE REPRESENTING THE RIGHTMOST 4 DIGITS
- * OF THE PRIMARY VSN OF A DUMP FILE SET.
- * FN THE FILE NAME OF A FILE TO BE SELECTED OR EXCLUDED.
- * *FN* IS ALWAYS ACCOMPANIED BY *UI*.
- * UI USER INDEX TO BE SELECTED OR EXCLUDED. A NEGATIVE
- * *UI* INDICATES AN EXCLUSION. IF *FN* ACCOMPANIES
- * *UI*, ONLY THAT FILE IS TO BE SELECTED OR EXCLUDED.
- * *UI* APPEARS ALONE, ALL FILES FOR *UI* ARE TO BE
- * SELECTED OR EXCLUDED.
- TSFVP CON 0 NUMBER OF WORDS IN THE TABLE
- TSFV BSS TSFVN*TSFVE+TSFVE
- TITLE GLOBAL CONSTANTS AND VARIABLES
- SPACE 4,10
- * GLOBAL CONSTANTS AND VARIABLES.
- ADOT DATA 1L. TERMINATING PERIOD FOR VARIOUS MESSAGES
- BLNK CON 10H
- CSET CON 0 CHARACTER SET CHANGED FLAG
- CTSF CON 0 CARTRIDGE TAPE FLAG
- DENS CON 6250 DENSITY OF TAPE TO BE USED FOR DUMP
- DIRV BSS 1 CURRENT DIRECTIVE
- CFBT CON 0 FILES LARGER THAN THRESHOLD
- DLFV CON 0 DESTAGE LIMIT - FEET/MEGABYTES
- DTFV CON 0 DESTAGE THRESHOLD - FEET/MEGABYTES
- ERUN CON 0 END OF RUN INDICATOR FOR SORTING
- FCNT CON 0 NUMBER OF FILES SELECTED
- GAPS CON 10 INTER-RECORD GAP SIZE IN INCHES*32
- IDTP CON 1 INPUT DEVICE TYPE
- INCH CON 0 INCHES*32 OR BYTES*MILLION FOR SELECTIONS
- JORG BSS 1 JOB ORIGIN
- LDFH CON 10H GENPFD- DAYFILE HEADER FOR DIRECTIVE LINE
- LINE BSSZ 9 DIRECTIVE INPUT, MESSAGE OUTPUT BUFFER
- LOFL CON 3 LIST OF FILES LENGTH
- CON 0LOUTPUT+O LIST OF FILES ENTRY FOR *OUTPUT*
- CON 0 LIST OF FILES TERMINATOR
- LOFP VFD 30/LOFL,30/1 LIST OF FILES POINTER WORD
- NRUN CON 0 NUMBER OF RUNS INDICATOR FOR SORTING
- ODTP CON 1 OUTPUT DEVICE TYPE
- PBLK CON 10B-1 DISK PRU-S PER TAPE BLOCK (MINUS 1)
- PNFM CON 0 UTILITY *PN=* OR *FM=* DIRECTIVE
- POPT DATA 0LR PROCESSING OPTION - DEFAULT IS *R*
- UNITS DATA 2LFT DEFAULT DESTAGE UNITS = FEET
- PRCD DATA 6L.LDMNT PREFERRED RESIDENCE CODES IN SEQUENCE
- ZINF CON 0 *Z* PARAMETER FLAG
- TITLE ERROR MESSAGES.
- * ERROR MESSAGES.
- SPACE 4,10
- ERDA DATA C* DIRECTIVE ARGUMENT ERROR.*
- ERDT DATA C* DEVICE TYPE/NUMBER NOT FOUND.*
- ERIA DATA C* INCORRECT ARGUMENT VALUE.*
- ERSF DATA C* SELECTION FILE DEVICE NUMBER ERROR.*
- ERST DATA C* SUFFICIENT TRACKS ALREADY AVAILABLE.*
- ERSE DATA C* SUMMARY FILE IS EMPTY OR MISPOSITIONED.*
- ERSP DATA C* SUMMARY FILE PREFIX TABLE ERROR.*
- TITLE MAIN LOOP.
- GENPFD SPACE 4,15
- ** MAIN LOOP.
- *
- * *GENPFD* READS DIRECTIVES FROM THE INPUT FILE AND CREATES
- * A SELECTION FILE OF *PFDUMP* UTILITY DIRECTIVES THAT SATISY
- * THE SPECIFIED CONDITIONS.
- *
- * CALLS BDT, BSF, BUD, CTL, POP, PRS, RCS, SRT, USB.
- *
- * MACROS MESSAGE, READ, READC, WRITEC, WRITEW.
- GENPFD BSS 0 ENTRY
- RJ PRS PRESET
- RJ BDT BUILD DEVICE TABLE
- * GET NEXT DIRECTIVE.
- GEN1 SA1 ZINF
- SA2 INPUT
- NZ X1,GEN2 IF *Z* OPTION SELECTED
- ZR X2,GEN6 IF NO INPUT FILE (I=0)
- SA1 IDTP
- SA2 ODTP
- NZ X1,GEN2 IF NOT TERMINAL INPUT
- NZ X2,GEN2 IF NOT TERMINAL OUTPUT
- WRITEC O,GENA * ENTER DIRECTIVE.*
- READ I,R
- GEN2 READC I,LINE,8
- NZ X1,GEN6 IF EOR FOUND
- SA1 ODTP
- ZR X1,GEN3 IF A TERMINAL OUTPUT FILE
- WRITEW O,BLNK,1 ISSUE SPACES TO MOVE LINE TO THE RIGHT
- WRITEC O,LINE,8 COPY DIRECTIVE TO LISTING FILE
- GEN3 MESSAGE LDFH,3,R PLACE DIRECTIVE IN DAYFILE
- * PROCESS INPUT LINE.
- SB2 LINE UNPACK LINE
- RJ USB
- SX6 X6+B1 APPEND TERMINATOR TO INPUT LINE
- SA6 A6
- SX6 1R.
- SA6 B7+B1
- RJ POP PICK OUT DIRECTIVE VERB
- ZR B6,GEN11 IF NO ARGUMENTS
- NG B6,GEN11 IF NO TERMINATOR FOUND
- NG B5,GEN11 IF ARGUMENT ERROR
- * SEARCH TABLE FOR DIRECTIVE.
- MX0 42
- SA4 TDIR START OF DIRECTIVE TABLE
- GEN4 BX1 X0*X4
- ZR X1,GEN11 IF UNIDENTIFIABLE DIRECTIVE
- BX1 X1-X6
- ZR X1,GEN5 IF DIRECTIVE FOUND
- SA4 A4+B1
- EQ GEN4 CHECK NEXT DIRECTIVE
- GEN5 SA6 DIRV SAVE DIRECTIVE
- SB3 X4+
- RJ POP GET THE FIRST ARGUMENT
- NZ B5,GEN11 IF ERROR OR ARGUMENT TOO LONG
- SA0 B6+ SAVE THE STRING BUFFER ADDRESS
- JP B3 ENTER DIRECTIVE PROCESSOR
- * DIRECTIVES COMPLETE - CREATE THE SELECTION FILE.
- GEN6 RJ CTL CONVERT *DL* AND *DT* LENGTHS
- RJ BSF BUILD SELECTION FILE
- SA1 FCNT
- ZR X1,GEN8 IF NO FILES SELECTED
- RJ IIS ISSUE INITIAL STATISTICS
- SA1 DTFV
- ZR X1,GEN7 IF NO THRESHOLD SPECIFIED
- SA2 INCH
- IX6 X1-X2
- SX5 GENC * DUMP THRESHOLD NOT REACHED.*
- PL X6,GEN9 IF NOT ENOUGH FILES SELECTED
- GEN7 RJ SRT SORT SELECTION FILE
- RJ BUD BUILD UTILITY DIRECTIVE FILE
- SA1 FCNT
- ZR X1,GEN8 IF NO FILES SELECTED
- RJ IFS ISSUE FINAL STATISTICS
- EQ GEN10 TERMINATE PROCESSING
- GEN8 SA1 POPT
- SX5 GEND * NO FILES SELECTED FOR DESTAGE.*
- ZR X1,GEN9 IF *PO=D*
- SX5 GENE * NO FILES SELECTED FOR RELEASE.*
- GEN9 MESSAGE X5,3
- WRITEC O,X5
- GEN10 WRITER O,R
- UNLOAD CF UNLOAD THE SELECTION FILE
- MESSAGE GENB,3 * GENPFD COMPLETE.*
- RJ RCS RESET CHARACTER SET IF CHANGED
- ENDRUN
- * PROCESS DIRECTIVE ERRORS.
- GEN11 SX5 ERDA * DIRECTIVE ARGUMENT ERROR *
- EQ GEN13 ISSUE ERROR MESSAGE
- GEN12 SX5 ERIA * INCORRECT ARGUMENT VALUE *
- EQ GEN13 ISSUE ERROR MESSAGE
- * DIRECTIVE ERROR MESSAGE ABORT/CONTINUE ENTRY.
- * (X5) = ADDRESS OF ERROR MESSAGE TO BE DISPLAYED.
- GEN13 SA1 IDTP CHECK FOR TERMINAL INPUT
- NZ X1,ABT IF NOT A TERMINAL THEN ABORT
- MESSAGE X5,3
- WRITEC O,X5
- EQ GEN1 PROMPT FOR NEXT DIRECTIVE
- GENA DATA C* ENTER DIRECTIVE.*
- GENB DATA C* GENPFD COMPLETE.*
- GENC DATA C* DUMP THRESHOLD NOT REACHED.*
- GEND DATA C* NO FILES SELECTED FOR DESTAGE.*
- GENE DATA C* NO FILES SELECTED FOR RELEASE.*
- TITLE PRIMARY SUBROUTINES.
- ABT SPACE 4,10
- ** ABT - ABORT PROCESSING.
- *
- * ENTRY (X5) = ADDRESS OF ERROR MESSAGE.
- *
- * EXIT ALL FILES RETURNED.
- * ERROR MESSAGES ISSUED.
- * *GENPFD* ABORTED.
- *
- * MACROS ABORT, MESSAGE, UNLOAD, WRITEC, WRITER.
- ABT BSS 0 ENTRY
- MESSAGE X5,3 ISSUE ERROR MESSAGE
- WRITEC O,X5
- UNLOAD CF UNLOAD FILES
- UNLOAD BF
- UNLOAD AF
- WRITER OUTPUT,R
- RJ RCS RESET CHARACTER SET IF CHANGED
- MESSAGE ABTA,3,R * GENPFD ABORTED.*
- SYSTEM ABT,R ABORT
- ABTA DATA C* GENPFD ABORTED.*
- BDT SPACE 4,20
- ** BDT - BUILD DEVICE TABLE.
- *
- * READ SUMMARY FILE DEVICE RECORDS, STORE FAMILY OR PACK
- * NAME AND BUILD CATALOG DEVICE TABLE.
- *
- * EXIT *FM=* OR *PN=* INFORMATION STORED.
- * CATALOG DEVICE TABLE COMPLETED.
- * SUMMARY FILE POSITIONED AFTER *DEVSTAT* RECORDS.
- *
- * USES X - 1, 2, 6.
- * A - 1, 2, 6.
- * B - 3.
- *
- * CALLS GSR, ZTB.
- BDT SUBR ENTRY/EXIT
- BDT1 SA1 BDTA CALLING SEQUENCE ADDRESS
- RJ GSR GET SUMMARY FILE *DEVSTAT* RECORD
- SA1 BDTE
- NZ X1,BDTX IF END OF *DEVSTAT* RECORDS
- SA1 PNFM
- NZ X1,BDT3 IF PACK/FAMILY NAME ALREADY STORED
- SA1 BDTD CHECK DEVICE NUMBER OF FIRST RECORD
- MX6 -6
- BX1 -X6*X1
- SX2 3RFM= PRESET FOR FAMILY NAME
- NZ X1,BDT2 IF DEVICE NUMBER NON-ZERO
- SX2 3RPN= SET FOR PACK NAME
- BDT2 SA1 BDTC+1 GET PACK/FAMILY NAME FROM *DEVSTAT* HEADER
- MX6 42
- BX6 X6*X1
- BX1 X2+X6 ADD UTILITY DIRECTIVE ID *FM=* OR *PN=*
- LX1 42
- RJ ZTB BLANK FILL
- SA6 PNFM
- BDT3 SA1 BDTD TRACK SIZE AND COUNTS
- MX2 12
- LX1 12
- BX6 X2*X1 EXTRACT TRACK SIZE
- BX2 X1-X6 EXTRACT TRACKS AVAILABLE
- LX6 12
- AX2 36
- IX1 X2*X6 NUMBER OF SECTORS INITIALLY AVAILABLE
- SA2 A1+B1 RUNNING TOTAL OF AVAILABLE SECTORS
- MX6 -24
- LX1 30
- BX2 -X6*X2
- BX6 X1+X2 SET RUNNING TOTAL TO INITIAL AVAILABILITY
- SA1 TCDVP ADVANCE CATALOG DEVICE TABLE POINTER
- SA6 A2
- SX6 X1+TCDVE
- SA6 A1
- SX2 X1+TCDV POINT TO NEXT AVAILABLE ENTRY
- SB3 TCDVE-1 SET COUNTER FOR MOVE
- BDT4 SA1 BDTD+B3 MOVE RECORD TO CATALOG DEVICE TABLE
- BX6 X1
- SA6 X2+B3
- SB3 B3-B1
- PL B3,BDT4 IF MORE WORDS TO MOVE
- BX6 X6-X6 CLEAR THE FOLLOWING WORD IN THE TABLE
- SA6 A6+SFDIL
- EQ BDT1 GET NEXT ITEM
- BDTA CON BDTB POINTER TO RECORD ID WORD
- CON SUMMARY POINTER TO FET
- CON BDTC POINTER TO BUFFER
- CON BDTE POINTER TO STATUS WORD
- BDTB DATA 0LDEVSTAT
- BDTC BSS SFDHL+1 *DEVSTAT* HEADER BUFFER
- BDTD BSS SFDIL *DEVSTAT* ITEM BUFFER
- BDTE BSS 1 STATUS WORD
- BSF SPACE 4,20
- ** BSF - BUILD SELECTION FILE.
- *
- * *BSF* CREATES THE INITIAL SELECTION FILE BY MATCHING THE
- * CATALOG ENTRIES TO THE SPECIFIED PARAMETERS. SPECIFICALLY
- * SELECTED FILES, THOSE RESIDING ON SPECIFICALLY DESIGNATED
- * ARCHIVE VOLUMES, THOSE RESIDING ON SELECTED DEVICE NUMBERS
- * AND THOSE RESIDING ON SELECTED DEVICE TYPES ARE WRITTEN TO
- * THE SELECTED CANDIDATES FILE, WITH SORT KEYS SET FOR SORTING
- * BY PRIORITY GROUP, THEN BY AGE WITHIN THE ABOVE GROUPINGS.
- *
- * ENTRY SUMMARY FILE POSITIONED AFTER *DEVSTAT* RECORDS.
- *
- * EXIT SELECTED FILE SORT RECORDS WRITTEN TO SELECTION FILE.
- *
- * USES X - ALL.
- * A - 1, 2, 3, 4, 5, 6, 7.
- * B - 2, 3.
- *
- * CALLS GSR.
- *
- * MACROS MESSAGE, REWIND, WRITE, WRITEC, WRITER, WRITEW.
- BSF24 WRITER CF,R TERMINATE SELECTION FILE
- REWIND CF,R
- BSF SUBR ENTRY/EXIT
- UNLOAD CF,R
- WRITE CF,* PRESET WRITE FOR SELECTION FILE
- SA1 TPRGP SET PRIORITY GROUP TABLE TERMINATOR
- BX6 X6-X6
- SB2 X1
- SA6 TPRG+B2
- BSF1 SA1 BSFA
- RJ GSR GET SUMMARY FILE RECORD
- SA1 BSFE
- NZ X1,BSF24 IF END OF CATALOG ENTRIES
- SA1 BSFD+FCFN FILE NAME / USER INDEX
- MX0 -3
- BX6 X1
- SA6 ITFN
- BX0 -X0*X1 LOWER OCTAL DIGIT OF USER INDEX
- SB3 X0+B1
- * CHECK IF FILE MATCHES A SPECIFIC FILENAME/UI/VSN SELECTION.
- * (B3) = DEVICE MASK SHIFT COUNT.
- SA2 TSFVP
- SA3 BSFD+FCTV VSN FROM SUMMARY FILE
- SB2 X2-1
- LX3 59-23
- MX0 42
- BSF2 NG B2,BSF7 IF NO MATCH OF SPECIFIC FILE/UI OR VSN
- SA2 TSFV+B2
- SB2 B2-B1
- SX4 X2
- NZ X4,BSF3 IF NOT A VSN SPECIFICATION
- MX6 24
- BX2 X2-X3
- BX6 X6*X2
- EQ BSF6 COMPLETE MATCH
- BSF3 PL X4,BSF4 IF NOT AN EXCLUSION
- BX2 -X0-X2 INVERT USER INDEX FOR EXCLUSIONS
- BSF4 BX6 X0*X2
- ZR X6,BSF5 IF FILE NAME NOT SUPPLIED
- MX6 42
- BSF5 BX6 X0-X6
- BX6 -X6*X1
- BX6 X2-X6
- BSF6 NZ X6,BSF2 IF NOT THE SAME FILE / USER INDEX / VSN
- NG X4,BSF1 IF MATCH WAS TO AN EXCLUSION
- SA6 BSFD+FCFN MARK FILE SELECTED
- EQ BSF10 FIND DEVICE NUMBER
- * FILE DID NOT MATCH SPECIFIC FILE OR VSN SELECTIONS.
- * CHECK FOR A MATCH TO A PREFERRED RESIDENCE PRIORITY GROUP.
- * (B3) = DEVICE MASK SHIFT COUNT.
- BSF7 SA1 BSFD+FCRS PREFERRED RESIDENCE FOR FILE
- MX0 3
- BX0 X0*X1
- SA1 PRCD PREFERRED RESIDENCE MNEMONICS
- LX0 4 COMPUTE SHIFT COUNT
- SB2 X0
- LX0 1
- SB2 X0+B2
- LX1 B2 POSITION PREFERRED RESIDENCE MNEMONIC
- SB2 B0
- MX0 6
- BX1 X0*X1 PREFERRED RESIDENCE MNEMONIC
- BSF8 SA2 TPRG+B2
- ZR X2,BSF1 IF NO MORE GROUPS TO CHECK
- SB2 B2+1
- BSF9 BX6 X0*X2
- LX2 6
- ZR X6,BSF8 IF NO MATCH IN THIS GROUP
- BX6 X1-X6
- NZ X6,BSF9 IF NOT THIS PREFERRED RESIDENCE
- SX6 B2 PRIORITY GROUP = TABLE ORDINAL + 1
- LX6 59-5
- * FILE MATCHED SPECIFIC SELECTION OR PREFERRED RESIDENCE GROUP.
- * FIND THE DEVICE NUMBER IN THE CATALOG DEVICE TABLE.
- * (X6) = PRIORITY GROUP, BITS 59-54.
- * (B3) = DEVICE MASK SHIFT COUNT.
- BSF10 SA1 BSFD+FCEO DEVICE NUMBER / ACCESS DATE
- SA3 POPT
- BX2 X1 SET UP TO USE ACCESS DATE
- NZ X3,BSF11 IF DESTAGE WAS NOT SPECIFIED
- SA2 BSFD+FCMD DATA MODIFICATION DATE
- BSF11 MX0 -36 DATE FOR SORT KEY
- BX0 -X0*X2
- LX0 18
- BX6 X0+X6 PRIORITY GROUP / DATE
- MX0 -6
- LX1 5-41
- BX1 -X0*X1 DEVICE NUMBER
- NZ X1,BSF12 IF DEVICE NUMBER IS KNOWN
- MX0 1
- LX0 B3 SET UP FOR DEVICE MASK SEARCH
- BSF12 SA2 TCDVP LENGTH OF CATALOG DEVICE TABLE
- SB3 X2
- BSF13 ZR B3,BSF1 IF DEVICE NOT FOUND IGNORE THIS FILE
- SB3 B3-TCDVE LOOK AT NEXT ENTRY
- ZR X1,BSF14 IF LOOKING FOR MASTER DEVICE
- SA2 TCDV+B3
- BX3 -X0*X2
- BX3 X1-X3
- NZ X3,BSF13 IF NOT THE RIGHT DEVICE
- EQ BSF15 GET FILE LENGTH
- BSF14 SA3 TCDV+1+B3
- BX3 X0*X3
- ZR X3,BSF13 IF NOT THE MASTER DEVICE
- SA2 TCDV+B3 GET DEVICE NUMBER OF MASTER DEVICE
- MX0 -6
- BX1 -X0*X2
- * CATALOG DEVICE ENTRY HAS BEEN FOUND. ADD FILE SIZE TO KEY.
- * (X1) = DEVICE NUMBER.
- * (X2) = FIRST WORD OF CATALOG DEVICE ENTRY.
- * (X6) = PRIORITY GROUP / DATE.
- * (B3) = OFFSET INTO CATALOG DEVICE ENTRY TABLE.
- BSF15 SA3 BSFD+FCLF FILE SIZE
- MX0 24
- BX3 X0*X3
- LX3 24
- MX0 -17
- BX0 X0*X3
- ZR X0,BSF16 IF FILE SIZE IS LESS THAN 2**17
- * FILE SIZE EXCEEDS 2**17 SECTORS, SO USE HIGH 17 BITS FOR KEY.
- * BIT 2**17 IS SET, FORCING THESE SIZE KEYS TO BE HIGHER.
- AX3 7
- MX0 1 SET HIGH ORDER BIT
- LX0 18
- BX3 X0+X3
- BSF16 MX0 18 INVERT FILE SIZE FOR SORT KEY
- LX0 18
- IX3 X0-X3
- BX6 X3+X6 PRIORITY GROUP / DATE / SIZE KEY
- SA6 ITKY
- LX1 -6
- BX6 X1 DEVICE NUMBER
- SA6 ITDN
- SA3 BSFD+FCLF FILE SIZE
- MX1 24
- BX3 X1*X3
- LX3 24
- SX1 B1
- IX3 X3+X1 INCREMENT FOR SYSTEM SECTOR
- * CHECK IF FILE RESIDENCE DEVICE IS A SELECTED RELEASE DEVICE.
- * (X2) = FIRST WORD OF CATALOG DEVICE ENTRY.
- * (X3) = FILE SIZE IN SECTORS, ADJUSTED FOR SYSTEM SECTOR.
- * (B3) = OFFSET INTO CATALOG DEVICE ENTRY TABLE.
- MX0 -6 DEVICE NUMBER MASK
- SA4 TSDV FIRST SELECTED DEVICE TABLE ENTRY
- ZR X4,BSF18 IF NO SELECTED DEVICE ENTRIES
- BSF17 BX4 X2-X4
- BX6 -X0*X4
- ZR X6,BSF20 IF MATCH ON DEVICE ENTRY
- SA4 A4+TSDVE NEXT TABLE ENTRY
- NZ X4,BSF17 IF NOT FINISHED WITH THIS PASS
- PL X0,BSF18 IF FINISHED BOTH PASSES WITH NO MATCH
- MX1 21 FORM MASK FOR DEVICE TYPE / SPINDLES
- LX1 9
- BX0 X0-X1
- SA4 TSDV FIRST ENTRY AGAIN
- EQ BSF17 CHECK FOR MATCH ON DEVICE TYPE
- BSF18 SA1 POPT
- ZR X1,BSF19 IF *OP=D*
- SA1 BSFD+FCFN
- NZ X1,BSF1 IF FILE WAS NOT SELECTED
- BSF19 SA1 ITKY DEGRADE PRIORITY GROUP
- SX6 10B
- LX6 54
- BX6 X1+X6
- SA6 A1+
- * FILE HAS SURVIVED TESTS AND PRIORITY HAS BEEN DETERMINED.
- * CALCULATE FILE SIZE IN TRACKS, FOR RELEASE GOAL CHECKING.
- * (X3) = FILE SIZE IN SECTORS, ADJUSTED FOR SYSTEM SECTOR.
- * (B3) = OFFSET INTO CATALOG DEVICE ENTRY TABLE.
- BSF20 BX4 X3 FILE SIZE IN SECTORS
- SX0 B1+
- IX4 X4+X0 ADD EOI SECTOR FOR TRACK CALCULATION
- SA1 BSFD+FCRI CHECK IF THERE ARE PERMITS
- MX2 24
- BX1 X1*X2
- ZR X1,BSF21 IF NO RANDOM INDEX
- IX3 X3+X0 ALLOW ONE SECTOR FOR PERMITS ON ARCHIVE
- BSF21 SA2 BSFD+FCBS CHECK TYPE OF FILE
- MX0 -12
- BX2 -X0*X2
- SX2 X2-4000B
- NZ X2,BSF22 IF INDIRECT FILE
- SA2 TCDV+B3 CATALOG DEVICE TRACK SIZE
- MX0 -12
- LX2 24
- BX2 -X0*X2
- BX1 X2
- BX0 X4
- IX6 X4/X2 DIVIDE SECTORS BY TRACK SIZE
- IX4 X1*X6 MULTIPLY RESULT BY TRACK SIZE
- BX2 X0-X4
- ZR X2,BSF22 IF EVEN TRACKS
- IX4 X1+X4 INCREMENT TO EVEN TRACKS
- * CALCULATE AMOUNT OF SPACE THAT THIS FILE WILL TAKE. INTEGER
- * ARITHMETIC ERROR IS MINIMIZED BY USING 1/32 INCH INCREMENTS
- * FOR CALCULATING SPACE OCCUPIED ON TAPE.
- * (X3) = FILE SIZE IN SECTORS.
- * (X4) = FILE SIZE IN SECTORS FOR COMPLETE TRACKS.
- BSF22 SA1 UNITS FEET OR MEGABYTES
- BX2 X3 DISK SECTORS
- LX1 12
- SX1 X1-2RMB
- ZR X1,BSF23.1 IF MEASURING MEGABYTES
- SA1 PBLK
- SX0 X1+B1
- IX1 X1+X3
- IX2 X1/X0 NUMBER OF TAPE BLOCKS
- SA1 GAPS INTER-RECORD GAP SIZE IN INCHES*32
- IX6 X1*X2
- SX1 PBYT*32
- IX3 X1*X3 NUMBER OF BYTES*32 IN FILE
- SX1 16/2*15*32 PFC BYTES*32
- IX3 X1+X3
- SA1 DENS NUMBER OF BYTES/INCH
- IX2 X3/X1 NUMBER OF INCHES*32 FOR DATA
- IX2 X2+X6 TOTAL INCHES*32 FOR THE FILE
- BSF23.1 SA1 INCH INCREMENT TOTAL
- IX6 X1+X2
- SA6 A1
- SA1 ITDN STORE DEV.NO. / SECTORS / ARCHIVE UNITS
- LX4 30 SECTORS
- BX4 X2+X4 SECTORS / ARCHIVE UNITS
- BX6 X1+X4 DEVICE NUMBER / SECTORS / ARCHIVE UNITS
- SA6 A1
- WRITEW CF,ITEM,ITEML WRITE OUT THE COMPLETED ENTRY
- SA1 FCNT
- SX6 X1+B1
- SA6 A1
- EQ BSF1 GET NEXT SUMMARY FILE RECORD
- BSFA CON BSFB POINTER TO RECORD ID WORD
- CON SUMMARY POINTER TO FET
- CON BSFC POINTER TO BUFFER
- CON BSFE POINTER TO STATUS WORD
- BSFB DATA 0LCATE
- BSFC BSS SFFHL+1 FILE HEADER BUFFER
- BSFD BSS SFFIL FILE ITEM BUFFER
- BSFE BSS 1 STATUS WORD
- BUD SPACE 4,20
- ** BUD - BUILD UTILITY DIRECTIVES.
- *
- * PROCESS SORT SELECTIONS AGAINST TAPE AND DEVICE LIMITS
- * AND BUILD UP THE UTILITY DIRECTIVES FILE.
- *
- * EXIT UTILITY DIRECTIVES WRITTEN TO FILE *UDIR*
- * IF AT LEAST ONE FILE IS SELECTED.
- *
- * USES X - 0, 1, 2, 3, 4, 5, 6.
- * A - 1, 2, 3, 4, 5, 6.
- * B - 3.
- *
- * CALLS CDD, COD.
- *
- * MACROS READ, READW, WRITE, WRITEC, WRITER.
- BUD11 SA1 FCNT
- ZR X1,BUDX IF NO UTILITY DIRECTIVES WRITTEN
- WRITER UD,R TERMINATE UTILITY DIRECTIVE FILE
- BUD SUBR ENTRY/EXIT
- WRITE UD,* PRESET WRITE FUNCTION
- READ CF,R
- SX6 B0+
- SA6 INCH
- SA6 FCNT
- BUD1 READW CF,ITEM,ITEML
- NZ X1,BUD11 IF END OF SELECTION FILE
- SA1 DLFV LENGTH LIMIT IN INCHES*32 OR MEGABYTES
- ZR X1,BUD2 IF THERE IS NO LENGTH LIMIT
- SA2 ITSC
- MX0 -30
- BX6 -X0*X2 FILE LENGTH IN INCHES*32 OR SECTORS
- SA2 INCH TOTAL LENGTH ALREADY ACCEPTED
- IX3 X6-X1
- NG X3,BUD1.2 IF FILE .LE. LIMIT
- SA1 UNITS
- SA3 FCNT
- LX1 12
- SX1 X1-2RMB
- ZR X1,BUD1.1 IF MEGABYTES
- ZR X3,BUD2 IF NO FILES SELECTED YET
- BUD1.1 SA1 CFBT INCREMENT COUNT OF FILES .GT. LIMIT
- SX6 A1+B1
- SA6 A1
- EQ BUD1 CONTINUE PROCESSING
- BUD1.2 IX2 X2+X6
- IX1 X1-X2
- NG X1,BUD1 IF LIMIT WOULD BE EXCEEDED
- BUD2 SA3 TSDV
- ZR X3,BUD6 IF NO SELECTED DEVICES
- * FIND CATALOG DEVICE ENTRY FOR MATCHING DEVICE.
- * (X3) = THE FIRST SELECTED DEVICE TABLE ENTRY.
- SA2 ITDN
- MX0 -6 DEVICE NUMBER MASK
- LX2 6
- SA1 TCDV GET FIRST CATALOG DEVICE
- BUD3 BX6 X1-X2
- BX6 -X0*X6
- ZR X6,BUD4 IF MATCHING DEVICE ENTRY FOUND
- SA1 A1+TCDVE
- NZ X1,BUD3 IF MORE DEVICES TO SEARCH
- SX5 ERSF * SELECTION FILE DEVICE NUMBER ERROR.*
- EQ ABT ABORT
- * THE CATALOG DEVICE ENTRY FOR THE FILE HAS BEEN LOCATED.
- * SEARCH FOR MATCHING SELECTED DEVICE ENTRY.
- * (X0) = MASK FOR DEVICE NUMBER.
- * (X1) = THE CURRENT CATALOG DEVICE ENTRY.
- * (X3) = THE CURRENT SELECTED DEVICE TABLE ENTRY.
- BUD4 BX2 X1-X3
- BX2 -X0*X2
- ZR X2,BUD7 IF MATCHING ENTRY FOUND
- SA3 A3+TSDVE GET NEXT SELECTED DEVICE ENTRY
- NZ X3,BUD4 IF MORE ENTRIES TO CHECK
- BUD5 PL X0,BUD6 IF BOTH KINDS OF ENTRIES CHECKED
- MX2 21 SET UP MASK FOR DEVICE TYPE / SPINDLES
- LX2 9
- BX0 X0-X2 EXCLUDE DEVICE NUMBER FROM MASK
- SA3 TSDV
- NZ X3,BUD4 IF SELECTED DEVICE ENTRIES TO PROCESS
- BUD6 SA2 POPT
- ZR X2,BUD9 IF *PO=D*
- SA2 ITKY CHECK PRIORITY FIELD OF KEY
- MX6 3
- LX2 3
- BX2 X6*X2
- ZR X2,BUD9 IF FILE SELECTED VIA *SF* OR *SV*
- EQ BUD1 BYPASS THIS FILE
- * FILE MATCHES ONE OF THE SELECTED DEVICE ENTRIES.
- * UPDATE COUNT OF SECTORS SELECTED IN THE MATCHING ENTRY.
- * (X0) = MASK FOR DEVICE TYPE OR DEVICE NUMBER.
- * (X1) = THE CURRENT CATALOG DEVICE ENTRY.
- * (X3) = FIRST WORD OF SELECTED DEVICE ENTRY.
- BUD7 SA4 A1+B1 GET SECTORS AVAILABLE ON DEVICE
- MX2 24 BUILD MASK FOR SECTOR COUNTS
- LX2 -6
- LX3 18
- BX3 X2*X3 SECTORS GOAL FROM SELECTED DEVICE ENTRY
- BX6 X2*X4 SECTORS AVAILABLE ON DEVICE
- SA5 ITSC
- IX3 X6-X3
- PL X3,BUD5 IF NO MORE SECTORS NEEDED FOR THIS DEVICE
- SA3 A3+B1
- BX5 X2*X5 SECTOR COUNT FOR FILE
- LX5 30 UPDATE SECTORS SELECTED
- IX6 X3+X5
- SA6 A3
- * ACCUMULATE SPACE REQUIRED FOR FILE AND SECTORS
- * AVAILABLE FOR THE DEVICE UPON WHICH IT RESIDES.
- * (X1) = THE CURRENT CATALOG DEVICE ENTRY.
- BUD9 SA4 A1+B1 SECTORS AVAILABLE ON DEVICE ENTRY
- SA1 ITSC SECTORS AND INCHES*32 FOR THIS FILE
- MX2 24 MASK FOR SECTOR COUNT
- LX2 -6
- BX6 X2*X1 FILE LENGTH IN SECTORS
- IX6 X4+X6 UPDATE SECTORS AVAILABLE ON DEVICE
- SA6 A4
- MX6 -30
- BX6 -X6*X1 FILE LENGTH IN INCHES*32 OR SECTORS
- SA1 INCH UPDATE ACCUMULATED ARCHIVE SIZE
- IX6 X1+X6
- SA6 A1
- * WRITE *FM=*/*PN=* DIRECTIVE IF NOT ALREADY WRITTEN.
- SA1 PNFM
- ZR X1,BUD10 IF *FM=*/*PN=* ALREADY WRITTEN
- BX6 X1
- SA6 BUDA+1
- WRITEC UD,BUDA+1,R WRITE THE *FM=*/*PN=* DIRECTIVE
- SX6 B0+
- SA6 PNFM
- * BUILD UTILITY DIRECTIVES FOR THE SELECTED FILE.
- BUD10 SA1 ITFN
- MX0 42
- BX5 X0*X1 SAVE FILE NAME
- BX1 -X0*X1
- RJ COD CONVERT USER INDEX TO DISPLAY
- MX0 -24
- SA2 =4R,UI= BUILD *UI* DIRECTIVE
- BX4 X0*X4
- BX6 X2+X4
- LX6 42
- SA6 BUDA
- SA2 =3RPF= BUILD *PF* DIRECTIVE
- BX1 X2+X5
- LX1 42
- RJ ZTB
- SA6 BUDA+1
- WRITEC UD,BUDA,R WRITE THE DIRECTIVE SET
- SA1 FCNT INCREMENT FILES SELECTED
- SX6 X1+B1
- SA6 A1
- EQ BUD1 PROCESS NEXT FILE
- BUDA DATA C*UI=UUUUUU,PF=FFFFFFF.*
- CTL SPACE 4,20
- ** CTL - CONVERT *DT* AND *DL* LENGTHS.
- *
- * CONVERT *DL* AND *DT* DIRECTIVE VALUES TO WORKING VALUES, IN
- * 1/32 INCH INCREMENTS (INCHES*32) FOR *U=FT*, OR IN PRU-S FOR
- * *U=MB*. FOR *DT*, THE DEFAULT VALUE IS A PERCENTAGE OF *DL*.
- *
- * EXIT PARAMETERS CONVERTED TO WORKING VALUES.
- *
- * USES X - 1, 2, 3, 4, 6.
- * A - 1, 2, 3, 4, 6.
- CTL SUBR ENTRY/EXIT
- SA4 UNITS FEET OR MEGABYTES
- LX4 12
- SX4 X4-2RMB
- SX6 12*32 CONVERSION FOR FEET TO INCHES*32
- NZ X4,CTL1 IF *U=FT*
- SX6 MPRU SECTORS PER MEGABYTE CONVERSION FACTOR
- CTL1 SA1 POPT
- SA2 DLFV
- SA3 DTFV
- NZ X2,CTL1.1 IF *DL* DIRECTIVE WAS SPECIFIED
- NG X2,CTL2 IF *DL=0* WAS SPECIFIED
- NZ X1,CTL2 IF NOT *OP=D*
- SX2 DLMB DEFAULT LIMIT FOR MEGABYTES
- ZR X4,CTL1.1 IF *U=MB*
- SA4 CTSF
- SX2 DLDF DEFAULT LIMIT FEET (*MT*/*NT* TAPE)
- ZR X4,CTL1.1 IF NOT CARTRIDGE TAPE
- SX2 DLDFC DEFAULT LIMIT FEET (*CT*/*AT* TAPE)
- CTL1.1 IX2 X2*X6
- CTL2 NZ X3,CTL3 IF *DT* DIRECTIVE WAS SPECIFIED
- NG X3,CTL4 IF *DT=0* WAS SPECIFIED
- NZ X1,CTL4 IF NOT *OP=D*
- BX3 X2 CALCULATE *DT* AS A PERCENTAGE OF *DL*
- NG X3,CTL4 IF *DL=0* WAS SPECIFIED
- SX1 100
- IX6 X3/X1
- SX3 DTDF DEFAULT THRESHOLD PERCENTAGE
- CTL3 IX3 X3*X6
- CTL4 BX6 X2
- SA6 A2 STORE CONVERTED *DL*
- BX6 X3
- SA6 A3 STORE CONVERTED *DT*
- EQ CTLX RETURN
- IIS SPACE 4,15
- ** IIS - ISSUE INITIAL STATISTICS.
- *
- * ISSUE STATISTICAL MESSAGES FOR INITIAL SELECTION.
- *
- * EXIT INITIAL STATISTICS ISSUED TO OUTPUT AND DAYFILE.
- *
- * USES X - 0, 1, 2, 3, 6.
- * A - 1, 2, 3, 6.
- * B - 3.
- *
- * CALLS CDD.
- *
- * MACROS MESSAGE, WRITEC.
- IIS SUBR ENTRY/EXIT
- SA1 FCNT
- RJ CDD CONVERT FILE COUNT TO DISPLAY
- MX0 6
- BX6 -X0*X6
- SA1 ADOT
- BX6 X1+X6
- SB3 60
- SB3 B3-B2
- LX6 B3
- SA6 IISA+3
- MESSAGE IISA,3 * FIRST SELECTION FILE COUNT = XXXXXXXXX.*
- WRITEC O,IISA
- SA2 INCH
- SA3 UNITS FEET OR MEGABYTES
- LX3 12
- SX3 X3-2RMB
- NZ X3,IIS1 IF FEET
- SX6 IISC * MAXIMUM TOTAL MEGABYTES = X..X.*
- SA6 IISD
- SX3 PBYT NUMBER OF 8-BIT BYTES PER PRU
- IX2 X2*X3 MAXIMUM TOTAL BYTES
- SX3 500 ROUND TO KILOBYTES
- IX2 X2+X3
- LX3 1
- IX1 X2/X3 KILOBYTES
- RJ CFD CONVERT TO F10.3 DISPLAY MEGABYTES
- SB3 B2+60
- EQ IIS2 CONTINUE PROCESSING MESSAGE
- IIS1 SX3 12*32 CONVERSION FROM INCHES*32 TO FEET
- SX6 IISB * MAXIMUM TOTAL FEET OF TAPE = X..X.*
- IX1 X2/X3
- SA6 IISD
- RJ CDD CONVERT MAXIMUM TOTAL TO DISPLAY
- IIS2 SA1 ADOT
- MX0 6
- BX2 X0*X6
- BX6 -X0*X6
- BX6 X1+X6
- SB3 60
- SB3 B3-B2
- NZ B3,IIS3 IF NOT TEN CHARACTERS
- LX6 6
- IIS3 LX6 B3
- SA3 IISD
- SA6 X3+3
- SA1 A6-B1 STORE UPPER DIGIT OF AMOUNT
- LX1 54
- BX1 -X0*X1
- BX6 X1+X2
- LX6 6
- SA6 A1
- MESSAGE X3,3 * MAXIMUM TOTAL MEGABYTES/FEET OF TAPE...*
- WRITEC O,X3
- EQ IISX RETURN
- IISA DATA C* FIRST SELECTION FILE COUNT = XXXXXXXXX.*
- IISB DATA C* MAXIMUM TOTAL FEET OF TAPE = XXXXXXXXX.*
- IISC DATA C* MAXIMUM TOTAL MEGABYTES =XXXXXX.XXX.*
- IISD BSS 1 POINTER TO MESSAGE TO BE ISSUED
- IFS SPACE 4,15
- ** IFS - ISSUE FINAL STATISTICS.
- *
- * ISSUE FINAL STATISTICAL MESSAGES.
- *
- * EXIT FINAL STATISTICS ISSUED TO OUTPUT AND DAYFILE.
- *
- * USES X - 0, 1, 2, 3, 5, 6.
- * A - 1, 2, 3, 5, 6.
- * B - 3.
- *
- * CALLS CDD, COD.
- *
- * MACROS MESSAGE, WRITEC.
- IFS SUBR ENTRY/EXIT
- SA1 CFBT
- ZR X1,IFS0 IF NO FILES LARGER THAN THRESHOLD
- MESSAGE IFSF,3
- MESSAGE IFSE,3
- MESSAGE IFSF,3
- WRITEC O,IFSF
- WRITEC O,IFSE
- WRITEC O,IFSF
- IFS0 SA1 FCNT
- RJ CDD CONVERT FILE COUNT TO DISPLAY
- MX0 6
- BX6 -X0*X6
- SA1 ADOT
- BX6 X1+X6
- SB3 60
- SB3 B3-B2
- LX6 B3
- SA6 IFSA+3
- SA1 POPT
- SA5 =10HDESTAGE =
- ZR X1,IFS1 IF *PO=D*
- SA5 =10HRELEASE =
- IFS1 BX6 X5
- SA6 IFSA+2
- MESSAGE IFSA,3 * FILES SELECTED FOR PPPPPPP = XXXXXXXXX.*
- WRITEC O,IFSA
- MX0 -6 SET MASK FOR DEVICE NUMBER SEARCH
- IFS2 SA5 TSDV
- ZR X5,IFS8 IF NO SELECTED DEVICE
- IFS3 BX1 -X0*X5
- ZR X1,IFS7 IF THIS ENTRY NOT APPLICABLE
- PL X0,IFS4 IF PROCESSING DEVICE TYPE ENTRIES
- SX1 X1+100B
- RJ COD CONVERT TO DISPLAY
- SA3 =8L, DN = SET DEVICE NUMBER INTO MESSAGE
- MX2 -12
- BX2 -X2*X6
- BX6 X2+X3
- LX6 12
- SA6 IFSC
- EQ IFS6 ADD TRACK COUNT TO MESSAGE
- IFS4 SA3 =6L DT = SET DEVICE TYPE AND SPINDLES INTO MESSAGE
- MX2 12
- BX6 X2*X1
- LX6 24
- BX1 -X2*X1
- SX2 2R,
- ZR X1,IFS5 IF SINGLE SPINDLE DEVICE
- SX2 X1+2R1,
- IFS5 BX2 X2+X6
- BX6 X2+X3
- SA6 IFSC
- IFS6 SA2 A5+B1 SECTORS SELECTED
- MX6 12
- BX5 -X6*X5
- AX5 36 TRACK SIZE
- IX1 X2/X5 NUMBER OF TRACKS
- RJ COD CONVERT TRACKS TO DISPLAY
- MX1 6
- BX6 -X1*X6
- SA1 ADOT
- BX6 X1+X6
- SB3 60
- SB3 B3-B2
- LX6 B3
- SA6 IFSC+3
- * MESSAGE IFSC,3 * DT = TTT, FILE TRACK COUNT = XXXXXXXXX.*
- MESSAGE IFSC,3 * DN = NN, FILE TRACK COUNT = XXXXXXXXX.*
- WRITEC O,IFSC
- IFS7 SA5 A5+TSDVE
- NZ X5,IFS3 IF MORE SELECTED DEVICES
- PL X0,IFS8 IF CHECKING DEVICE TYPE
- MX2 21 SET MASK FOR DEVICE TYPE/SPINDLES
- LX2 9
- BX0 X0-X2
- EQ IFS2 SEARCH FOR DEVICE TYPES
- IFS8 SA2 INCH
- SA3 UNITS FEET OR MEGABYTES
- LX3 12
- SX3 X3-2RMB
- NZ X3,IFS9 IF FEET
- SX6 IFSD * MEGABYTES REQUIRED FOR DUMP= X..X*
- SA6 IFSG
- SX3 PBYT NUMBER OF 8-BIT BYTES PER PRU
- IX2 X2*X3 BYTES
- SX3 500 ROUND TO KILOBYTES FOR CONVERSION
- IX2 X2+X3
- LX3 1
- IX1 X2/X3 KILOBYTES
- RJ CFD CONVERT TO F10.3 DISPLAY MEGABYTES
- SB2 B3+60
- EQ IFS10 CONTINUE PROCESSING MESSAGE
- IFS9 SX3 12*32 CONVERSION FROM INCHES*32 TO FEET
- SX6 IFSB * FEET OF DUMP TAPE REQUIRED = X..X*
- IX1 X2/X3
- SA6 IFSG
- RJ CDD CONVERT AMOUNT REQUIRED TO DISPLAY
- IFS10 SA1 ADOT
- MX0 6
- BX2 X0*X6
- BX6 -X0*X6
- BX6 X1+X6
- SB3 60
- SB3 B3-B2
- NZ B3,IFS11 IF NOT TEN CHARACTERS
- LX6 6
- IFS11 LX6 B3
- SA3 IFSG
- SA6 X3+3
- SA1 A6-B1
- LX1 54
- BX1 -X0*X1
- BX6 X1+X2
- LX6 6
- SA6 A1
- MESSAGE X3,3 * MEGABYTES/FEET OF DUMP TAPE REQUIRED..*
- WRITEC O,X3
- EQ IFSX RETURN
- IFSA DATA C* FILES SELECTED FOR PPPPPPP = XXXXXXXXX.*
- IFSB DATA C* FEET OF DUMP TAPE REQUIRED = XXXXXXXXX.*
- IFSC DATA C* DT = XXX, FILE TRACK COUNT = XXXXXXXXX.*
- IFSD DATA C* MEGABYTES REQUIRED FOR DUMP=XXXXXX.XXX.*
- IFSE DATA C+ *WARNING* - FILES LARGER THAN *DL* LIMIT SKIPPED.+
- IFSF DATA C+ *WARNING*+
- IFSG BSS 1 POINTER TO MESSAGE TO BE ISSUED
- RCS SPACE 4,15
- ** RCS - RESTORE CHARACTER SET.
- *
- * RESTORES ORIGINAL CHARACTER SET IF IT WAS CHANGED.
- *
- * ENTRY (CSET) .NE. 0 IF CHARACTER SET WAS CHANGED.
- *
- * EXIT CHARACTER SET IS THE SAME AS UPON ENTERING *GENPFD*.
- *
- * USES X - 1.
- * A - 1.
- *
- * MACROS CSET.
- RCS SUBR ENTRY/EXIT
- SA1 CSET
- ZR X1,RCSX IF CHARACTER SET WAS NOT CHANGED
- CSET RESTORE RESTORE ORIGINAL CHARACTER SET
- EQ RCSX RETURN
- SRT SPACE 4,20
- ** SRT - MERGE SORT OF *ITEML* SIZE ENTRIES.
- *
- * *SRT* SORTS THE *ITEML* SIZE ENTRIES ON THE SELECTION FILE
- * ON THE FIRST WORD OF EACH ENTRY, USED AS AN UNSIGNED, 60-BIT
- * NUMERIC SORT KEY. THE ALGORITHM USED IS TAKEN
- * FROM N. WIRTH, *ALGORITHMS + DATA STRUCTURES = PROGRAMS*,
- * PRENTICE-HALL, PP. 97-98.
- *
- * ENTRY THE SELECTION FILE CONTAINS AT LEAST ONE ENTRY.
- *
- * EXIT SORTED ENTRIES ON SELECTION FILE.
- *
- * USES X - 1, 2, 6.
- * A - 1, 6.
- *
- * CALLS DTR, MRG.
- *
- * MACROS RESET, REWIND, REWRYTE, UNLOAD, WRITER.
- SRT SUBR ENTRY/EXIT
- UNLOAD AF UNLOAD WORK FILES
- UNLOAD BF
- * REPEAT DISTRIBUTE/MERGE PASSES.
- SRT1 REWRYTE AF
- REWRYTE BF
- RESET CF
- RJ DTR DISTRIBUTE RUNS FROM C ONTO A AND B
- WRITER AF,R
- WRITER BF,R
- RESET AF
- RESET BF
- REWRYTE CF
- SX6 B0+ INITIALIZE COUNT OF RUNS FOR THIS PASS
- SA6 NRUN
- RJ MRG MERGE RUNS FROM A AND B ONTO C
- WRITER CF,R
- SA1 NRUN
- SX2 B1
- IX1 X1-X2
- NZ X1,SRT1 IF NOT A SINGLE RUN YET
- UNLOAD AF
- UNLOAD BF
- REWIND CF,R
- EQ SRTX RETURN
- TITLE DIRECTIVE PROCESSORS.
- PDL SPACE 4,20
- ** PDL - PROCESS *DL* DIRECTIVE.
- *
- * EXTRACT AND STORE DESTAGE MAXIMUM SIZE IN FEET OR MEGABYTES.
- *
- * ENTRY (X6) = FIRST ARGUMENT.
- * (B6) = NEXT STRING BUFFER ADDRESS.
- * = 0, IF TERMINATOR ENCOUNTERED.
- *
- * EXIT DESTAGE MAXIMUM SIZE STORED.
- * TO *GEN1* IF NO ERRORS.
- * TO *GEN12* IF ERROR DETECTED.
- *
- * USES X - 5, 6.
- * A - 6.
- * B - 7.
- *
- * CALLS DXB.
- PDL BSS 0 ENTRY
- BX5 X6
- SB7 B1 INDICATE DECIMAL CONVERSION
- RJ DXB
- NZ X4,GEN12 IF ARGUMENT ERROR
- NZ X6,PDL1 IF ARGUMENT IS NOT ZERO
- MX6 -0 MARK *DL=0* ENTRY
- PDL1 SA6 DLFV SAVE THE DESTAGE LIMIT
- EQ GEN1 RETURN
- PDT SPACE 4,20
- ** PDT - PROCESS *DT* DIRECTIVE.
- *
- * EXTRACT AND STORE DESTAGE MINIMUM SIZE IN FEET OR MEGABYTES.
- *
- * ENTRY (X6) = FIRST ARGUMENT.
- * (B6) = NEXT STRING BUFFER ADDRESS.
- * = 0, IF TERMINATOR ENCOUNTERED.
- *
- * EXIT DESTAGE MINIMUM SIZE STORED.
- * TO *GEN1* IF NO ERRORS.
- * TO *GEN12* IF ERROR DETECTED.
- *
- * USES X - 5, 6.
- * A - 6.
- * B - 7.
- *
- * CALLS DXB.
- PDT BSS 0 ENTRY
- BX5 X6
- SB7 B1 INDICATE DECIMAL CONVERSION
- RJ DXB
- NZ X4,GEN12 IF ARGUMENT ERROR
- NZ X6,PDT1 IF ARGUMENT IS NOT ZERO
- MX6 -0 MARK *DT=0* ENTRY
- PDT1 SA6 DTFV SAVE DESTAGE MINIMUM
- EQ GEN1 RETURN
- PPG SPACE 4,20
- ** PPG - PROCESS *PG* DIRECTIVE.
- *
- * PROCESS PREFERRED RESIDENCE GROUPINGS.
- *
- * ENTRY (X6) = FIRST ARGUMENT.
- * (B6) = NEXT STRING BUFFER ADDRESS.
- * = 0, IF TERMINATOR ENCOUNTERED.
- *
- * EXIT PREFERRED RESIDENCE GROUPINGS STORED.
- * TO *GEN1* IF NO ERRORS.
- * TO *GEN11*, *GEN12* OR *GEN13* IF ERROR DETECTED.
- *
- * USES X - 0, 1, 2, 3, 4, 5, 6.
- * A - 1, 2, 6.
- *
- * CALLS POP.
- PPG BSS 0 ENTRY
- SX1 B0+ CLEAR TABLE POINTER
- PPG1 SA6 TPRG+X1 SAVE PARAMETER VALUE IN TABLE
- BX5 X6
- MX0 6
- SX6 X1+1
- SA6 TPRGP SAVE PRIORITY GROUP TABLE POINTER
- PPG2 ZR X5,PPG4 IF NO MORE CODES TO CHECK
- BX1 X0*X5
- BX5 X5-X1
- LX5 6
- SA2 PRCD VALID PREFERRED RESIDENCE CODES
- PPG3 LX2 6
- BX3 X0*X2
- BX4 X1-X3
- ZR X4,PPG2 IF CODES MATCH
- NZ X3,PPG3 IF MORE CODES TO CHECK
- EQ GEN12 REPORT ERROR
- PPG4 ZR B6,GEN1 IF NO MORE ARGUMENTS
- NG B6,GEN11 IF NO TERMINATOR FOUND
- RJ POP GET THE NEXT ARGUMENT
- NZ B5,GEN11 IF ERROR OR ARGUMENT TOO LONG
- SA1 TPRGP
- SX2 X1-TPRGL
- NG X2,PPG1 IF ROOM REMAINS IN PRIORITY GROUP TABLE
- SX5 PPGA * TOO MANY PRIORITY GROUP (PG) ENTRIES.*
- EQ GEN13 ISSUE ERROR MESSAGE
- PPGA DATA C* TOO MANY PRIORITY GROUP (PG) ENTRIES.*
- PRL SPACE 4,20
- ** PRL - PROCESS *RL* DIRECTIVE.
- *
- * PROCESS RELEASE LIMITS FOR DEVICES OR DEVICE TYPES.
- *
- * ENTRY (X6) = FIRST ARGUMENT.
- * (B6) = NEXT STRING BUFFER ADDRESS.
- * = 0, IF TERMINATOR ENCOUNTERED.
- *
- * EXIT RELEASE LIMITS DEFINED.
- * TO *GEN1* IF NO ERRORS.
- * TO *GEN11*, *GEN12* OR *GEN13* IF ERROR DETECTED.
- *
- * USES X - 0, 1, 2, 5, 6, 7.
- * A - 0, 1, 5, 6.
- * B - 6, 7.
- *
- * CALLS CAP, DXB, POP.
- *
- * MACROS MESSAGE, WRITEC.
- PRL BSS 0 ENTRY
- BX1 X6
- LX1 6
- SX1 X1-1R0
- BX5 X6
- NG X1,PRL1 IF A DEVICE TYPE
- SB7 B0 INDICATE OCTAL CONVERSION
- RJ DXB CONVERT DEVICE NUMBER
- NZ X4,GEN12 IF ERROR
- MX0 6 SET UP MASK FOR DEVICE NUMBER
- LX0 6
- EQ PRL3 CHECK ACTIVE DEVICES
- * VALIDATE DEVICE TYPE.
- PRL1 SA2 PRLA
- RJ CAP CHECK FOR ALLOWABLE PATTERN
- NZ X1,GEN12 IF NOT ALLOWABLE PATTERN
- MX0 12
- BX5 -X0*X6 NUMBER OF SPINDLES
- BX6 X0*X6 DEVICE MNEMONIC
- MX1 -3 MASK FOR SPINDLE COUNT
- ZR X5,PRL2 IF NUMBER OF SPINDLES NOT SPECIFIED
- LX5 18
- SX5 X5-1R1
- BX7 X1*X5
- NG X5,GEN12 IF NUMBER OF SPINDLES INCORRECT
- NZ X7,GEN12 IF TOO MANY SPINDLES SPECIFIED
- PRL2 LX5 6
- BX6 X5+X6 MERGE SPINDLES WITH DEVICE TYPE
- LX1 6
- BX0 -X1+X0 DEVICE TYPE / SPINDLES MASK
- * FIND MATCHING CATALOG DEVICE ENTRY.
- * (X0) = MASK FOR DEVICE NUMBER OR DEVICE TYPE/SPINDLES.
- * (X6) = DEVICE NUMBER OR DEVICE TYPE/SPINDLES SPECIFIED.
- PRL3 SA1 TCDV GET FIRST ACTIVE DEVICE TABLE ENTRY
- BX7 X7-X7 CLEAR FOR TRACK DATA
- MX2 36 SET UP MASK
- PRL4 BX5 X0*X1
- BX5 X5-X6
- NZ X5,PRL5 IF DEVICE TYPE/NUMBER DOES NOT MATCH
- LX1 12 POSITION TRACK SIZE
- BX5 X2*X1
- LX5 -12
- IX1 X5-X7
- ZR X7,PRL4.1 IF FIRST MATCHING ENTRY
- PL X1,PRL5 IF PREVIOUS ENTRY HAD LESS AVAILABLE
- PRL4.1 BX7 X5
- SA7 PRLB SAVE TRACK SIZE, AVAILABLE AND TOTAL
- PRL5 SA1 A1+TCDVE GET NEXT CATALOG DEVICE ENTRY
- NZ X1,PRL4 IF NOT END OF TABLE
- NZ X7,PRL5.1 IF A MATCH WAS FOUND
- SX5 ERDT * DEVICE TYPE/NUMBER NOT FOUND.*
- MESSAGE X5,3
- WRITEC O,X5
- EQ GEN1 RETURN
- * ADD VALIDATED ENTRY TO SELECTED DEVICE TABLE.
- * (X0) = MASK FOR DEVICE NUMBER OR DEVICE TYPE/SPINDLES.
- * (X6) = DEVICE NUMBER OR DEVICE TYPE/SPINDLES SPECIFIED.
- PRL5.1 SA1 TSDV GET FIRST SELECTED DEVICE TABLE ENTRY
- ZR X1,PRL7 IF TABLE IS EMPTY
- PRL6 BX5 X0*X1
- BX1 X5-X6
- ZR X1,PRL7 IF MATCHING ENTRY FOUND IN TABLE
- SA1 A1+TSDVE
- NZ X1,PRL6 IF ANOTHER ENTRY TO CHECK
- PL X1,PRL7 IF ROOM IN TABLE TO ADD NEW ENTRY
- SX5 PRLC * TOO MANY DEVICE SELECTION (RL) ENTRIES.*
- EQ GEN13 ISSUE ERROR MESSAGE
- PRL7 SA6 A1 ADD ENTRY TO TABLE
- SA0 A1 SAVE ADDRESS OF ENTRY
- * PROCESS REQUIRED TRACKS ARGUMENT IF PRESENT.
- * (A0) = ADDRESS OF SELECTED DEVICE ENTRY.
- NG B6,PRL8 IF NO SEPARATOR/TERMINATOR
- ZR B6,PRL8 IF NO MORE ARGUMENTS
- RJ POP PICK OUT NEXT ARGUMENT
- NZ B5,GEN11 IF ERROR OR ARGUMENT TOO LONG
- NZ B6,GEN11 IF TOO MANY ARGUMENTS
- BX5 X6
- SB7 B0 INDICATE OCTAL CONVERSION
- RJ DXB CONVERT REQUIRED TRACKS
- NZ X4,GEN12 IF ERROR
- SA5 PRLB CHECK TOTAL TRACKS
- MX0 -12
- AX5 12
- BX1 -X0*X5 TOTAL TRACKS
- IX1 X1-X6
- PL X1,PRL8 IF LESS REQUIRED THAN TOTAL
- IX6 X1+X6 SET REQUIRED EQUAL TO TOTAL
- PRL8 AX5 12
- BX1 -X0*X5 AVAILABLE TRACKS
- IX1 X6-X1
- PL X1,PRL11 IF SUFFICIENT TRACKS NOT ALREADY AVAILABLE
- SX5 ERST * SUFFICIENT TRACKS ALREADY AVAILABLE.*
- MESSAGE X5,3
- WRITEC O,X5
- SA1 TSDVE+A0 MOVE ALL FOLLOWING ENTRIES BACK ONE
- PRL9 BX6 X1
- SA1 A1+B1
- NZ X6,PRL10 IF NOT AN EMPTY ENTRY
- SX6 B0+
- SX1 B0+
- PRL10 SA6 A0
- BX7 X1
- SA1 A1+B1
- SA7 A6+B1
- SA0 A7+B1
- NZ X6,PRL9 IF ALL ENTRIES NOT MOVED
- EQ GEN1 RETURN
- * CONSTRUCT SELECTED DEVICE TABLE ENTRY.
- * (A0) = ADDRESS OF ENTRY.
- * (X5) = TRACK SIZE (BITS 23-12).
- * (X6) = TRACKS GOAL.
- PRL11 SA1 A0
- AX5 12 TRACK SIZE
- MX0 24
- IX6 X5*X6 TOTAL SECTORS REQUIRED
- LX0 12
- BX1 X0*X1 DEVICE TYPE/NUMBER
- LX5 36 TRACK SIZE
- LX6 12 REQUIRED SECTORS
- BX6 X5+X6 TRACK SIZE AND REQUIRED SECTORS
- BX6 X1+X6 ADD DEVICE TYPE/NUMBER
- SA6 A0
- EQ GEN1 RETURN
- PRLA VFD 9/113B,51/0 PATTERN FOR DEVICE TYPE CHECK
- PRLB BSS 1 TEMPORARY STORAGE
- PRLC DATA C* TOO MANY DEVICE SELECTION (RL) ENTRIES.*
- PSF SPACE 4,15
- ** PSF - PROCESS *SF* AND *XF* DIRECTIVES.
- *
- * PROCESS SPECIFIC FILE/USER INDEX SELECTIONS AND EXCLUSIONS.
- *
- * ENTRY (X6) = FIRST ARGUMENT.
- * (B6) = NEXT STRING BUFFER ADDRESS.
- * = 0, IF TERMINATOR ENCOUNTERED.
- *
- * EXIT SPECIFIED FILE SELECTIONS STORED.
- * TO *GEN1* IF NO ERRORS.
- * TO *GEN11* OR *GEN12* IF ERROR DETECTED.
- *
- * USES X - 0, 2, 5, 6.
- * A - 0, 2, 5, 6.
- * B - 7.
- *
- * CALLS DXB, PFV, POP.
- PSF BSS 0 ENTRY
- ZR X6,GEN11 IF NO USER INDEX SPECIFIED
- BX5 X6
- SB7 B0 INDICATE OCTAL CONVERSION
- RJ DXB
- NZ X4,GEN12 IF ERROR
- ZR X6,GEN12 IF USER INDEX IS ZERO
- MX0 -17
- BX5 X0*X6
- NZ X5,GEN12 IF USER INDEX EXCEEDS 377777B
- SA5 TDIRX
- SA2 DIRV
- MX0 -18
- BX5 X0*X5
- BX5 X2-X5
- NZ X5,PSF1 IF NOT EXCLUSION DIRECTIVE
- BX6 -X0-X6 INVERT USER INDEX FOR EXCLUSIONS
- PSF1 SA5 PSFA ADD USER INDEX TO PATTERN
- BX5 X0*X5
- BX6 X5+X6
- SA6 A5
- BX6 X6-X6 CLEAR FILE NAME
- NG B6,PSF2 IF NO TERMINATOR
- ZR B6,PSF2 IF NO MORE ARGUMENTS
- RJ POP GET FIRST FILE NAME
- NZ B5,GEN11 IF ERROR EXTRACTING ARGUMENT
- PSF2 SA0 PSFA
- RJ PFV PROCESS POSSIBLE LIST OF FILE NAMES
- EQ GEN1 RETURN
- PSFA VFD 21/4444444B,21/0,18/0 PATTERN / USER INDEX
- PSFB CON 77777777777777000000B MASK FOR FILE NAMES IN *PFV*
- PSFC DATA C* ENTER FILE NAME(S).* PROMPT
- PSV SPACE 4,15
- ** PSV - PROCESS *SV* DIRECTIVE.
- *
- * PROCESS ALTERNATE STORAGE VSN SPECIFICATIONS.
- *
- * ENTRY (X6) = FIRST ARGUMENT.
- * (B6) = NEXT STRING BUFFER ADDRESS.
- * = 0, IF TERMINATOR ENCOUNTERED.
- *
- * EXIT ALTERNATE STORAGE VSN ENTRIES PROCESSED.
- * TO *GEN1* IF NO ERRORS.
- * TO *GEN12* FROM *PFV* IF ERROR DETECTED.
- *
- * USES A - 0.
- *
- * CALLS PFV.
- PSV BSS 0 ENTRY
- SA0 PSVA
- RJ PFV PROCESS POSSIBLE LIST OF VSN-S
- EQ GEN1 RETURN
- PSVA VFD 18/443333B,42/0 PATTERN
- PSVB CON 77777777777700000000B MASK FOR VSN-S IN *PFV*
- PSVC DATA C* ENTER VSN(S).* PROMPT
- PTD SPACE 4,20
- ** PTD - PROCESS *D* DIRECTIVE.
- *
- * EXTRACT AND STORE THE DESTAGE TAPE DENSITY.
- *
- * ENTRY (X6) = FIRST ARGUMENT.
- *
- * EXIT (DENS) = NUMBER OF BYTES/INCH FOR SELECTED DENSITY.
- * (GAPS) = SIZE OF INTERRECORD GAP IN INCHES*32.
- * (CTSF) = NONZERO IF CARTRIDGE TAPE DENSITY.
- * TO *GEN1* IF NO ERRORS.
- * TO *GEN12* IF ERROR DETECTED.
- *
- * USES X - 0, 1, 5, 6.
- * A - 1, 6.
- PTD BSS 0 ENTRY
- MX0 30
- SA1 TDEN-1
- PTD1 SA1 A1+1
- ZR X1,GEN12 IF NOT A VALID TAPE DENSITY
- BX5 X1-X6
- BX5 X0*X5
- NZ X5,PTD1 IF NO MATCH
- MX0 -18
- BX6 -X0*X1 SAVE THE DENSITY
- SA6 DENS
- MX0 -11
- AX1 18 SAVE THE GAP SIZE
- BX6 -X0*X1
- MX0 -1
- SA6 GAPS
- AX1 11 SAVE THE CARTRIDGE TAPE FLAG
- BX6 -X0*X1
- SA6 CTSF
- EQ GEN1 RETURN
- PTF SPACE 4,20
- ** PTF - PROCESS *F* DIRECTIVE.
- *
- * EXTRACT AND STORE THE DESTAGE TAPE FORMAT.
- *
- * ENTRY (X6) = FIRST ARGUMENT.
- *
- * EXIT (PBLK) = NUMBER OF DISK PRU-S PER TAPE BLOCK (MINUS 1).
- * TO *GEN1* IF NO ERRORS.
- * TO *GEN12* IF ERROR DETECTED.
- *
- * USES X - 0, 1, 5, 6.
- * A - 1, 6.
- PTF BSS 0 ENTRY
- MX0 12
- SA1 TFMT-1
- PTF1 SA1 A1+1
- ZR X1,GEN12 IF NOT A VALID TAPE FORMAT
- BX5 X1-X6
- BX5 X0*X5
- NZ X5,PTF1 IF NO MATCH
- MX0 -12
- BX6 -X0*X1 SAVE THE PRU-S PER TAPE BLOCK
- SA6 PBLK
- EQ GEN1 RETURN
- TITLE SECONDARY SUBROUTINES.
- CAP SPACE 4,30
- ** CAP - CHECK FOR ALLOWABLE PATTERNS.
- *
- * CHECK PARAMETERS FOR ALLOWABLE CHARACTER PATTERNS.
- *
- * ENTRY (X5) = PARAMETER, LEFT JUSTIFIED ZERO FILLED.
- * (X2) = PATTERN, LEFT JUSTIFIED ZERO FILLED. PATTERN
- * CONSISTS OF ONE OCTAL DIGIT FOR EACH CHARACTER
- * POSITION OF THE PARAMETER. EACH OCTAL DIGIT
- * INDICATES THE CHARACTERS THAT ARE VALID FOR
- * THAT CHARACTER POSITION, AS FOLLOWS.
- *
- * 0 - ANY CHARACTER.
- * 1 - CHARACTERS A THROUGH Z.
- * 2 - DIGITS 0 THROUGH 4.
- * 3 - DIGITS 0 THROUGH 9.
- * 4 - CHARACTERS A THROUGH Z, DIGITS 0 THROUGH 9.
- * 5 - NO CHARACTER IS VALID.
- *
- * EXIT (X1) = 0 IF PARAMETER MATCHES PATTERN.
- * (X1) .NE. 0 IF PARAMETER DOES NOT MATCH PATTERN.
- *
- * USES X - 1, 2, 4, 5.
- * A - 1.
- * B - 3, 4.
- CAP SUBR ENTRY/EXIT
- CAP1 LX5 6
- SX1 X5
- ZR X1,CAPX IF ALL CHARACTERS CHECKED
- BX5 X5-X1
- SB4 X1
- LX2 3
- SX1 X2 INDEX TO PATTERNS
- ZR X1,CAP1 IF NO RESTRICTION ON THIS CHARACTER
- BX2 X2-X1
- LX1 2 PATTERN INDEX * 4
- SB3 X1
- LX1 1 PATTERN INDEX * 8
- SB3 B3+X1 PATTERN INDEX * 12
- SA1 CAPA
- MX4 -6
- LX1 X1,B3
- BX4 -X4*X1
- SB3 X4
- GT B4,B3,CAPX IF CHARACTER OUT OF RANGE
- MX4 -6
- LX1 -6
- BX4 -X4*X1
- SB3 X4
- GE B4,B3,CAP1 IF CHARACTER WITHIN RANGE
- EQ CAPX RETURN WITH ERROR INDICATION
- CAPA VFD 12/2LAZ,12/2L04,12/2L09,12/2LA9,12/2L10
- GSH SPACE 4,20
- ** GSH - GET SUMMARY RECORD HEADER.
- *
- * GSH IDENTIFIES A RECORD AND MOVES THE HEADER INFORMATION
- * TO THE WORKING STORAGE AREA. GSH IS CALLED ONLY BY GSR, AND
- * SHOULD BE CONSIDERED AS A PART OF THAT ROUTINE.
- *
- * ENTRY (X6) = FIRST WORD OF RECORD HEADER.
- *
- * EXIT (X1) .EQ. 0 IF HEADER READ OK.
- * (X1) .NE. 0 IF EOR/EOF/EOI ON READ.
- * (GSRB) = HEADER SIZE - 1.
- * (GSRC) = ITEM SIZE.
- * (GSRE) = FIRST WORD OF RECORD HEADER. THE REST OF THE
- * HEADER FOLLOWS IN THE NEXT (GSRB) WORDS.
- *
- * USES X - 0, 1, 2, 6, 7.
- * A - 1, 6, 7.
- *
- * MACROS READO, READW.
- GSH SUBR ENTRY/EXIT
- READO X5
- NZ X1,GSHX IF EOR/EOF/EOI ON SUMMARY FILE
- SA6 GSRE
- MX0 42
- SA1 TCER-1
- BX6 X0*X6
- GSH1 SA1 A1+B1
- BX2 X0*X1
- ZR X2,GSH2 IF AT END OF TABLE
- BX2 X2-X6
- NZ X2,GSH1 IF NO MATCH ON THIS TYPE
- GSH2 MX0 -9
- BX6 -X0*X1 SAVE ITEM SIZE
- SA6 GSRC
- LX1 -9
- BX6 -X0*X1 SAVE HEADER SIZE
- SA6 GSRB
- BX1 X6
- ZR X1,GSHX IF NO HEADER INFO TO READ
- SA1 GSRE DECREMENT WORD COUNT FOR HEADER
- IX7 X1-X6
- SA7 A1
- READW X5,GSRE+1,X6 READ HEADER INFORMATION
- EQ GSHX RETURN
- GSR SPACE 4,40
- ** GSR - GET SUMMARY RECORD.
- *
- * GSR LOCATES A SPECIFIED TYPE OF RECORD AND RETURNS IT TO
- * THE CALLER IN THE SPECIFIED LOCATION.
- *
- * ENTRY (A1) = ADDRESS OF FIRST WORD OF PARAMETER LIST.
- * (X1) = FIRST WORD OF PARAMETER LIST.
- *
- * PARAMETER LIST IS AS FOLLOWS:
- *
- * WORD 1 - FWA OF REQUESTED RECORD TYPE.
- * REQUESTED RECORD TYPES CAN BE:
- *
- * INIT - OPEN/INITIALIZE FILE - RETURNS
- * THE PREFIX TABLE.
- * SYSTEM - RETURNS THE SYSTEM ID BLOCK.
- * DEVSTAT - RETURNS A DEVICE STATUS ENTRY.
- * CATE - RETURNS A CATALOG ENTRY.
- *
- * WORD 2 - FWA OF FET.
- * WORD 3 - FWA OF BUFFER TO RECEIVE DATA.
- * WORD 4 - ADDRESS OF STATUS RETURN WORD.
- *
- * EXIT (STATUS WORD) = 0, A RECORD OF THE DESIRED TYPE WAS
- * RETURNED.
- * .GT. 0, AN EXCEPTION OF SOME TYPE OCCURRED
- * ON THE *READW* CALL. USUALLY THIS
- * WILL BE *EOR*, *EOF* OR *EOI*.
- * .LT. 0, THE NEXT AVAILABLE RECORD IS NOT
- * THE REQUESTED TYPE, AFTER PREVIOUS
- * TRANSFER OF THAT RECORD TYPE.
- *
- * (BUFFER) = A RECORD OF THE REQUESTED TYPE, PROVIDED
- * THAT THE STATUS IS ZERO.
- *
- * THE REQUESTED RECORD IS RETURNED TO SPECIFIED BUFFER.
- * THE RECORD RETURNED (EXCEPT WHEN THE REQUEST ISSUED IS
- * *INIT*) CONSISTS OF ONE RECORD TYPE WORD CONTAINING
- * THE RECORD IDENTIFIER AND THE COUNT OF REMAINING WORDS
- * IN THE CURRENT BLOCK, A COPY OF THE HEADER PORTION OF
- * THE RECORD, AND THE CURRENT ITEM OF THE RECORD.
- * THE LENGTHS OF THE HEADER AND ITEM PORTIONS OF THE
- * RETURNED RECORD DEPEND UPON THE PARTICULAR TYPE OF
- * RECORD BEING RETURNED.
- * THE DATA RETURNED IN RESPONSE TO THE *INIT* REQUEST
- * CONSISTS OF THE PREFIX TABLE FOR THE FILE.
- *
- * TO *ABT* WITH MESSAGE IF SUMMARY FILE ERROR.
- *
- * USES X - 0, 1, 2, 3, 4, 5, 6.
- * A - 1, 2, 3, 4, 6.
- * B - 2.
- *
- * CALLS GSH.
- *
- * MACROS READ, READO, READW.
- GSR SUBR ENTRY/EXIT
- SX6 A1 SAVE THE CALLING SEQUENCE POINTER
- SA6 GSRA
- SA5 A1+B1 GET FET ADDRESS
- SA3 GSRE CHECK CURRENT RECORD TYPE
- NZ X3,GSR2 IF ALREADY INITIALIZED
- * PROCESS INITIAL REQUEST.
- READ X5,R
- READO X5 READ FIRST WORD OF FILE
- NZ X1,GSR9 IF EOR/EOF/EOI ON SUMMARY FILE
- SA6 GSRE SAVE RECORD TYPE INDICATOR
- SA1 GSRA RESTORE ENTRY REGISTERS
- SA1 X1
- SA2 X1 GET REQUESTED RECORD TYPE
- SA3 GSRD CHECK AGAINST PREFIX HEADER
- BX6 X3-X6
- NZ X6,GSR10 IF NOT A CORRECT PREFIX RECORD
- SA3 =4LINIT
- BX6 X2-X3
- SA4 A1+2 GET BUFFER ADDRESS
- ZR X6,GSR1 IF *INIT* REQUEST
- SX4 WSA USE SCRATCH BUFFER IF NOT *INIT* REQUEST
- GSR1 SA3 GSRE
- BX6 X3
- LX3 12
- AX3 -12 NUMBER OF WORDS TO READ
- SA6 X4 SAVE PREFIX HEADER IN BUFFER
- SX4 X4+B1
- READW X5,X4,X3 READ THE PREFIX TABLE INTO BUFFER
- SA2 GSRA
- SA3 X2+3 GET STATUS WORD ADDRESS
- BX6 X1
- SA6 X3 SAVE STATUS
- SA1 X2
- SA2 X1
- SA3 =4LINIT
- BX6 X2-X3
- ZR X6,GSRX IF REQUEST WAS *INIT*
- * SEARCH FOR REQUESTED RECORD TYPE.
- GSR2 SA2 X1 GET REQUESTED RECORD TYPE
- SA3 GSRE
- MX0 42
- BX6 X2-X3
- BX6 X0*X6
- ZR X6,GSR5 IF REQUEST IS FOR CURRENT RECORD TYPE
- * REQUEST IS NOT FOR CURRENT RECORD TYPE - FIND NEXT RECORD.
- BX6 -X0*X3
- NZ X6,GSR3 IF CURRENT BLOCK NOT EXHAUSTED
- RJ GSH GET CATALOG RECORD HEADER
- NZ X1,GSR7 IF EOR/EOF/EOI ON SUMMARY FILE
- SA1 GSRA
- SA1 X1
- EQ GSR2 CHECK IF REQUESTED RECORD TYPE
- GSR3 SX2 WSAL
- IX1 X6-X2
- BX6 X0*X3
- PL X1,GSR4 IF REMAINING WORDS EXCEED SCRATCH BUFFER
- BX2 -X0*X3 SET REMAINING WORD COUNT
- BX1 X1-X1
- GSR4 BX6 X1+X6
- SA6 A3 UPDATE RECORD HEADER WORD COUNT
- READW X5,WSA,X2
- NZ X1,GSR7 IF EOR/EOF/EOI ON SUMMARY FILE
- SA2 GSRA
- SA1 X1
- EQ GSR2 REPEAT UNTIL REQUESTED RECORD TYPE FOUND
- * REQUEST IS FOR CURRENT RECORD TYPE.
- GSR5 BX6 -X0*X3
- ZR X6,GSR8 IF CURRENT BLOCK IS EXHAUSTED
- SA4 A1+2 GET BUFFER ADDRESS
- SA2 GSRB HEADER SIZE
- SB2 X2
- SA2 GSRC GET ITEM SIZE
- IX6 X3-X2 DECREMENT WORDS REMAINING
- SA6 A3+
- GSR6 SA6 X4 STORE WORD OF HEADER
- SA3 A3+B1
- SX4 X4+B1 INCREMENT BUFFER ADDRESS
- SB2 B2-B1
- BX6 X3
- PL B2,GSR6 IF MORE WORDS TO TRANSFER
- READW X5,X4,X2 READ NEXT ITEM INTO BUFFER AFTER HEADER
- GSR7 SA2 GSRA
- SA3 X2+3 GET STATUS WORD ADDRESS
- MX6 1
- BX6 -X6*X1
- SA6 X3+ SAVE STATUS
- EQ GSRX RETURN
- GSR8 RJ GSH GET CATALOG RECORD HEADER
- NZ X1,GSR7 IF EOR/EOF/EOI ON SUMMARY FILE
- SA1 GSRA
- SA1 X1
- SA2 X1
- SA3 GSRE
- MX0 42
- BX6 X2-X3
- BX6 X0*X6
- ZR X6,GSR5 IF STILL SAME RECORD TYPE
- SA2 A1+3
- MX6 1 STORE END OF CURRENT RECORD TYPE STATUS
- SA6 X2
- EQ GSRX RETURN
- GSR9 SX5 ERSE * SUMMARY FILE IS EMPTY.*
- EQ ABT ABORT
- GSR10 SX5 ERSP * SUMMARY FILE PREFIX TABLE ERROR.*
- EQ ABT ABORT
- GSRA BSS 1 PARAMETER LIST ADDRESS
- GSRB BSS 1 LENGTH OF RECORD HEADER PORTION
- GSRC BSS 1 LENGTH OF RECORD ITEM PORTION
- GSRD VFD 12/7700B,12/SFPTL,36/0 PREFIX TABLE HEADER
- GSRE CON 0 RECORD IDENTIFIER WORD
- BSS SFSHL ALLOW FOR LONGEST RECORD HEADER
- ** TABLE OF SUMMARY FILE RECORD TYPES.
- *
- * *TCER* CONTAINS THE NAMES AND HEADER AND ITEM SIZES
- * ASSOCIATED WITH KNOWN SUMMARY FILE RECORD TYPES.
- * UNKNOWN RECORD TYPES CAN EXIST ON THE SUMMARY FILE.
- * THEY WILL BE CONSIDERED TO HAVE A HEADER LENGTH OF ZERO AND
- * AN ITEM SIZE OF ONE WORD FOR BYPASSING PURPOSES.
- *
- *T 42/ RID, 9/ HL, 9/ IL
- *
- * RID RECORD IDENTIFIER.
- * HL NUMBER OF WORDS IN HEADER.
- * IL NUMBER OF WORDS IN EACH ITEM.
- TCER BSS 0
- VFD 42/0LSYSTEM,9/SFSHL,9/SFSIL
- VFD 42/0LDEVSTAT,9/SFDHL,9/SFDIL
- VFD 42/0LCATE,9/SFFHL,9/SFFIL
- VFD 42/0,9/0,9/1
- PFV SPACE 4,15
- ** PFV - PROCESS FILE NAMES AND VSN-S.
- *
- * ENTRY (X6) = FIRST FILE NAME OR VSN TO ADD TO TABLE.
- * (A0) = ADDRESS OF PARAMETER LIST.
- *
- * EXIT FILE NAME OR VSN ENTRIES ADDED TO *TSFV* TABLE.
- *
- * ERROR TO *GEN13* WITH ERROR MESSAGE AND POSSIBLE ABORT.
- *
- * USES X - 0, 1, 2, 5, 6, 7.
- * A - 1, 2, 5, 6, 7.
- * B - 2.
- *
- * CALLS CAP, DXB, POP, USB.
- *
- * MACROS READ, READC, WRITEC, WRITEW.
- PFV SUBR ENTRY/EXIT
- SA5 TSFVP SAVE CURRENT TABLE SIZE
- BX0 X5
- BX7 X5
- SA7 PFVC
- PFV1 SA2 A0+B1 GET MASK
- BX5 -X2*X6
- NZ X5,PFV9 IF ARGUMENT IS TOO LONG
- SX5 X0-TSFVN
- ZR X5,PFV8 IF TOO MANY FILES/VSN-S
- SA5 A0 GET USER INDEX/VSN FLAG WORD
- BX2 X2*X5 EXTRACT VERIFICATION PATTERN
- BX5 X5-X2 ISOLATE USER INDEX/VSN FLAG
- BX6 X5+X6 MERGE UI/VSN FLAG WITH FILE NAME/VSN
- SA6 TSFV+X0
- SX0 X0+1
- BX5 X6-X5 ISOLATE FILE NAME/VSN
- RJ CAP CHECK FOR ALLOWABLE PATTERN
- NZ X1,PFV9 IF INCORRECT ARGUMENT
- SX1 X6
- NZ X1,PFV2 IF NOT A VSN SPECIFICATION
- LX6 12
- MX1 24
- BX5 X1*X6 EXTRACT THE DIGITS FROM THE VSN
- BX6 X0
- SA6 PFVB
- SB7 B1+ INDICATE DECIMAL CONVERSION
- RJ DXB
- NZ X4,PFV9 IF ERROR IN CONVERSION
- SA1 PFVB RESTORE TABLE POINTER
- BX0 X6
- AX0 12
- NZ X0,PFV9 IF NUMERIC VALUE EXCEEDS 4095
- BX0 X1
- SA1 TSFV-1+X0
- MX5 24 REPLACE DISPLAY DIGITS WITH BINARY
- LX5 -12
- BX1 -X5*X1
- LX6 36
- BX6 X1+X6
- SA6 A1+
- PFV2 ZR B6,PFV3 IF TERMINATOR ENCOUNTERED
- PL B6,PFV4 IF MORE ARGUMENTS
- PFV3 BX6 X6-X6
- SA6 TSFV+X0
- BX6 X0 UPDATE TABLE SIZE
- SA6 TSFVP
- EQ PFVX RETURN
- * GET NEXT FILE NAME OR VSN.
- PFV4 RJ POP
- NG B5,PFV9 IF ERROR
- NZ X6,PFV1 IF ANOTHER FILE NAME/VSN
- ZR B6,PFV3 IF TERMINATOR ENCOUNTERED
- PL B6,PFV4 IF MORE ON THIS LINE
- SA1 ZINF
- NZ X1,PFV3 IF CALLED WITH *Z* OPTION
- SA1 IDTP
- NZ X1,PFV6 IF NOT TERMINAL INPUT
- SX2 A0+2 ADDRESS OF PROMPT MESSAGE
- WRITEC O,X2
- READ I,R
- PFV6 READC I,LINE,8
- NZ X1,PFV3 IF END-OF-RECORD FOUND
- SA1 ODTP
- ZR X1,PFV7 IF OUTPUT FILE IS A TERMINAL FILE
- WRITEW O,BLNK,1 MOVE LINE OVER
- WRITEC O,LINE,8 COPY LINE OF FILE NAMES TO LISTING
- PFV7 SB2 LINE
- RJ USB
- SX6 B7+B1
- SA6 A6
- SX6 1R.
- SA6 B7+B1
- EQ PFV4 GET NEXT FILE NAME/VSN
- * TOO MANY ENTRIES.
- PFV8 SX5 PFVA * TOO MANY FILE/VSN SELECTION ENTRIES.*
- EQ PFV10 RESTORE *TSFV* TABLE AND ABORT
- * ERROR WHILE CRACKING FILE LIST.
- PFV9 SX5 ERDA * DIRECTIVE ARGUMENT ERROR.*
- PFV10 SA1 PFVC RESTORE *TSFV* TABLE
- BX6 X1
- SA6 TSFVP
- SX6 B0+
- SA6 TSFV+X1
- EQ GEN13 DISPLAY ERROR AND ABORT
- PFVA DATA C* TOO MANY FILE/VSN SELECTION (SF SV XF) ENTRIES.*
- PFVB BSS 1 TEMPORARY STORAGE
- PFVC BSS 1 SIZE OF *TSFV* TABLE AT ENTRY
- TITLE SORTMERGE PROCESSING SUBROUTINES.
- CIT SPACE 4,15
- ** CIT - COPY ONE ITEM FROM ONE FILE TO ANOTHER.
- *
- * ENTRY (X2) = ADDRESS OF FET TO READ FROM.
- * (X5) = ADDRESS OF FET TO WRITE TO.
- *
- * EXIT ITEM COPIED.
- * *ERUN* SET IF ITEM COPIED WAS END OF A RUN.
- *
- * USES X - 1, 2, 3, 5, 6, 7.
- * A - 1, 2, 3, 5, 6, 7.
- *
- * MACROS GETITEM, PUTITEM.
- CIT2 NG X1,CIT1 IF NEXT ITEM .LT. COPIED ITEM
- CIT SUBR ENTRY/EXIT
- SX6 X2 SAVE X FET ADDRESS
- SX7 X5 SAVE Y FET ADDRESS
- SA6 CITA
- SA7 CITB
- GETITEM X2,CITC
- SA5 CITB
- PUTITEM X5,CITC
- SA2 CITA
- SA1 X2+EOF CHECK STATUS OF THIS FILE
- NZ X1,CIT1 IF EOF(X)
- SA1 X2+RPTR
- SA3 CITC
- SX6 B0+ CLEAR END OF RUN FLAG
- SA6 ERUN
- BX6 X1-X3
- IX1 X1-X3
- PL X6,CIT2 IF SAME SIGN (NO OVERFLOW POSSIBLE)
- PL X3,CITX IF NEXT ITEM .GT. COPIED ITEM
- CIT1 SX6 B1+ SET END OF RUN FLAG
- SA6 ERUN
- EQ CITX RETURN
- CITA BSS 1 INPUT FET ADDRESS
- CITB BSS 1 OUTPUT FET ADDRESS
- CITC BSS ITEML BLOCK FOR HOLDING COPIED ENTRY
- CRN SPACE 4,15
- ** CRN - COPY RUN OF ENTRIES BETWEEN FILES.
- *
- * ENTRY (X2) = FET READ FROM.
- * (X5) = FET WRITTEN TO.
- *
- * EXIT RUN COPIED FROM X2 FILE TO X5 FILE.
- *
- * USES X - 1, 2, 5, 6, 7.
- * A - 1, 2, 5, 6, 7.
- *
- * MACROS COPITEM.
- CRN SUBR ENTRY/EXIT
- SX6 X2 SAVE INPUT FET ADDRESS
- SX7 X5 SAVE OUTPUT FET ADDRESS
- SA6 CRNA
- SA7 CRNB
- * REPEAT COPYING ITEMS UNTIL END-OF-RUN.
- CRN1 SA2 CRNA
- SA5 CRNB
- COPITEM X2,X5
- SA1 ERUN
- ZR X1,CRN1 IF NOT END OF RUN BEING COPIED
- EQ CRNX RETURN
- CRNA BSS 1 INPUT FET ADDRESS
- CRNB BSS 1 OUTPUT FET ADDRESS
- DTR SPACE 4,15
- ** DTR - DISTRIBUTE RUNS FROM C ONTO A AND B.
- *
- * ENTRY ALL ENTRIES ARE ON THE *CF* FILE.
- * ALL THREE FILES ARE READY TO GO.
- *
- * EXIT RUNS ARE DISTRIBUTED EVENLY BETWEEN *AF* AND *BF*.
- *
- * USES X - 1, 3.
- * A - 1, 3.
- *
- * MACROS COPYRUN.
- DTR SUBR ENTRY/EXIT
- * REPEAT COPY RUNS UNTIL EOF(C).
- DTR1 COPYRUN CF,AF
- SA1 CF+EOF
- NZ X1,DTR2 IF EOF(C)
- COPYRUN CF,BF
- SA1 CF+EOF
- DTR2 ZR X1,DTR1 IF NOT EOF(C)
- EQ DTRX RETURN
- GIT SPACE 4,20
- ** GIT - GET AN ITEM FROM A FILE.
- *
- * *GIT* PERFORMS A PASCAL-LIKE READ FROM A FILE INTO
- * A SPECIFIED LOCATION. THIS INVOLVES MOVING THE
- * CURRENT FILE POINTER VALUE INTO THE LOCATION AND
- * READING THE NEXT ENTRY FROM THE FILE INTO THE POINTER.
- *
- * ENTRY (X0) = FET ADDRESS.
- * (X5) = ITEM DESTINATION ADDRESS.
- * FILE POINTER HAS DESIRED ENTRY, OR BAD VALUE
- * IF THE FILE IS AT EOF.
- *
- * EXIT VALUE MOVED.
- * EOF FLAG SET IF NEXT READ FAILS.
- *
- * USES X - 6.
- * A - 6.
- *
- * MACROS MOVE, READW.
- GIT SUBR ENTRY/EXIT
- MOVE ITEML,X0+RPTR,X5
- READW X0,X0+RPTR,ITEML
- SX6 X1+ SET EOF FLAG APPROPRIATELY
- SA6 X2+EOF
- EQ GITX RETURN
- MRG SPACE 4,20
- ** MRG - MERGE PHASE OF MERGESORT.
- *
- * *MRG* IS THE LOGICAL COMPLEMENT OF ROUTINE *DTR*. *MRG*
- * MERGES ALL THE RUNS DISTRIBUTED ONTO *AF* AND *BF* AND
- * WRITES THEM ON *CF*.
- *
- * ENTRY *AF* AND *BF* HAVE ITEM RUNS.
- *
- * EXIT *AF* AND *BF* ARE EMPTY.
- * *CF* CONTAINS ALL RUNS.
- * NUMBER OF RUNS IS APPROXIMATELY CUT IN HALF.
- *
- * USES X - 1, 2, 3, 6.
- * A - 1, 2, 3, 6.
- *
- * CALLS MRN.
- *
- * MACROS COPYRUN.
- MRG SUBR ENTRY/EXIT
- * WHILE NOT EOF(A) AND EOF(B) DO MERGE RUN.
- MRG1 SA2 AF+EOF
- SA3 BF+EOF
- CX2 X2
- CX3 X3
- IX2 X2+X3 EOF(A) OR EOF(B)
- NZ X2,MRG2 IF EITHER AT EOF THEN STOP
- RJ MRN MERGE ONE RUN ONTO C
- SA1 NRUN
- SX6 1
- IX6 X1+X6 INCREMENT COUNT OF RUNS
- SA6 A1
- EQ MRG1 LOOP FOR NEXT RUN TO MERGE
- * COPY REST OF A ONTO C.
- MRG2 SA2 AF+EOF
- NZ X2,MRG3 IF EOF(A) THEN STOP
- COPYRUN AF,CF
- SA1 NRUN
- SX6 1
- IX6 X1+X6 INCREMENT COUNT OF RUNS
- SA6 A1
- EQ MRG2 LOOP FOR NEXT RUN TO COPY
- * COPY REST OF B ONTO C.
- MRG3 SA3 BF+EOF
- NZ X3,MRGX IF EOF(B) THEN RETURN
- COPYRUN BF,CF
- SA1 NRUN INCREMENT COUNT OF RUNS
- SX6 1
- IX6 X1+X6
- SA6 A1
- EQ MRG3 LOOP FOR NEXT RUN TO COPY
- MRN SPACE 4,15
- ** MRN - MERGE ONE RUN FROM A AND B ONTO C.
- *
- * ENTRY AT LEAST ONE RUN IS ON *AF* AND ON *BF*.
- *
- * EXIT ONE FEWER RUN ON *AF* AND *BF*.
- * ONE MORE RUN ON *CF*.
- *
- * USES X - 1, 3, 4.
- * A - 1, 3, 4.
- *
- * MACROS COPITEM, COPYRUN.
- MRN SUBR ENTRY/EXIT
- * REPEAT COPYING ITEMS UNTIL END-OF-RUN.
- MRN1 SA3 AF+RPTR
- SA4 BF+RPTR
- BX1 X3-X4
- IX3 X4-X3
- PL X1,MRN3 IF SAME SIGN (NO OVERFLOW POSSIBLE)
- NG X4,MRN4 IF A.KEY .LT. B.KEY
- * A.KEY .GT. B.KEY.
- MRN2 COPITEM BF,CF
- SA1 ERUN
- ZR X1,MRN1 IF NOT END OF RUN ON B
- COPYRUN AF,CF
- EQ MRNX RETURN
- MRN3 NG X3,MRN2 IF A.KEY .GT. B.KEY
- * A.KEY .LE. B.KEY.
- MRN4 COPITEM AF,CF
- SA1 ERUN
- ZR X1,MRN1 IF NOT END OF RUN ON A
- COPYRUN BF,CF
- EQ MRNX RETURN
- PIT SPACE 4,10
- ** PIT - WRITE AN ITEM TO A FILE.
- *
- * ENTRY (X2) = FET ADDRESS.
- * (X5) = ADDRESS OF ITEM TO WRITE.
- *
- * MACROS WRITEW.
- PIT SUBR ENTRY/EXIT
- WRITEW X2,X5,ITEML
- EQ PITX RETURN
- RST SPACE 4,15
- ** RST - REWIND FILE AND PREPARE FOR READING.
- *
- * *RST* REWINDS THE SPECIFIED FILE AND READS THE FIRST
- * ENTRY INTO THE FILE-S POINTER.
- *
- * ENTRY (X2) = FET ADDRESS.
- *
- * EXIT FILE REWOUND AND PARTIALLY READ
- * EOF FLAG SET IF FILE IS EMPTY.
- *
- * USES X - 6.
- * A - 6.
- *
- * MACROS READ, READW, REWIND.
- RST SUBR ENTRY/EXIT
- REWIND X2,R
- READ X2,R
- READW X2,X2+RPTR,ITEML
- SX6 X1+ NON-ZERO IF READW HIT EOR/EOF/EOI
- SA6 X2+EOF
- EQ RSTX RETURN
- RWR SPACE 4,10
- ** RWR - REWIND FILE AND PREPARE FOR WRITING.
- *
- * ENTRY (X2) = FET ADDRESS.
- *
- * EXIT FILE REWOUND, EOF FLAG SET ON.
- *
- * USES X - 6.
- * A - 6.
- *
- * MACROS REWIND, WRITE.
- RWR SUBR ENTRY/EXIT
- REWIND X2,R
- WRITE X2,*
- SX6 77B FLAG FILE ALWAYS EOF
- SA6 X2+EOF
- EQ RWRX RETURN
- TITLE COMMON DECKS.
- SPACE 4,10
- * COMMON DECKS.
- *CALL COMCCDD
- *CALL COMCCFD
- *CALL COMCCIO
- *CALL COMCCOD
- *CALL COMCCPM
- *CALL COMCDXB
- *CALL COMCLFM
- *CALL COMCMVE
- *CALL COMCPOP
- *CALL COMCRDC
- *CALL COMCRDO
- *CALL COMCRDW
- *CALL COMCSNM
- *CALL COMCSYS
- *CALL COMCUSB
- *CALL COMCWTC
- *CALL COMCWTO
- *CALL COMCWTS
- *CALL COMCWTW
- *CALL COMCZTB
- TITLE FILE ENVIRONMENT TABLES.
- FETS SPACE 4,10
- * FETS.
- I BSS 0 INPUT
- INPUT FILEB IBUF,IBUFL,(FET=8)
- O BSS 0 OUTPUT
- OUTPUT FILEB OBUF,OBUFL,(FET=8)
- UD BSS 0 UTILITY DIRECTIVE FILE
- UDIR FILEB UBUF,UBUFL,(FET=8)
- SUMMARY BSS 0 SUMMARY FILE
- SUMMARY FILEB SBUF,SBUFL
- AF BSS 0 MERGE SORT SCRATCH FILE ONE
- ZZZZZG1 FILEB AFBUF,SMBFL,FET=MFETL
- APTR BSSZ ITEML
- AEOF BSSZ 1
- BF BSS 0 MERGE SORT SCRATCH FILE TWO
- ZZZZZG2 FILEB BFBUF,SMBFL,FET=MFETL
- BPTR BSSZ ITEML
- BEOF BSSZ 1
- CF BSS 0 MERGE SORT FILE
- ZZZZZG3 FILEB CFBUF,SMBFL,FET=MFETL
- CPTR BSSZ ITEML
- CEOF BSSZ 1
- TITLE PRS - PRESET ROUTINES.
- USE PRESET
- PRS SPACE 4,20
- ** PRS - PRESET PROGRAM.
- *
- * *PRS* CRACKS THE COMMAND, SETS UP FETS FOR I/O, DETERMINES
- * IF INPUT IS FROM A TERMINAL AND SETS FLAGS AND POINTERS.
- *
- * USES X - 0, 1, 2, 4, 6.
- * A - 0, 1, 2, 4, 6.
- * B - 1, 2, 3, 4, 5, 6.
- *
- * CALLS ARG, STF, ZAP.
- *
- * MACROS CSET, GETJO, MESSAGE, READ, SETLOF.
- PRS SUBR ENTRY/EXIT
- SB1 1
- * CRACK PARAMETERS FROM COMMAND.
- SA1 ACTR GET NUMBER OF ARGUMENTS
- SB4 X1+
- SA4 ARGR GET FIRST ARGUMENT
- SB5 TCAT COMMAND ARGUMENT TABLE ADDRESS
- RJ ARG PROCESS ARGUMENTS
- NZ X1,PRS9 IF ERROR
- * CHECK FOR FILE NAME CONFLICTS.
- SB2 B0+ BEGINNING ORDINAL FOR LFN CHECK
- SB4 B2+TLFNL TERMINATION ORDINAL FOR LFN CHECK
- MX0 42
- PRS1 SA1 TLFN+B2 NEXT ENTRY FROM ARGUMENT TABLE
- LX1 -30
- SA1 X1 LFN FROM FET
- BX1 X0*X1
- SB3 B2+B1 BEGIN CHECKING WITH FOLLOWING ENTRY
- EQ B3,B4,PRS3 IF ALL LFNS HAVE BEEN CHECKED
- PRS2 SA2 TLFN+B3 NEXT ENTRY FROM ARGUMENT TABLE
- LX2 -30
- SA2 X2 LFN FROM FET
- BX2 X1-X2
- BX2 X0*X2
- ZR X2,PRS9 IF FILE NAME CONFLICT
- SB3 B3+B1
- LT B3,B4,PRS2 IF MORE LFNS TO CHECK
- SB2 B2+B1
- EQ PRS1 PROCESS NEXT FILE IN LIST
- * PROCESS *Z* PARAMETER IF SPECIFIED.
- PRS3 SA1 ZINF COMMAND LINE INPUT FLAG SET BY *ARG*
- ZR X1,PRS4 IF *Z* ARGUMENT NOT GIVEN
- SX2 I SET FET ADDRESS FOR *ZAP*
- RJ ZAP *Z* ARGUMENT PROCESSOR
- * DETERMINE JOB ORIGIN TYPE.
- PRS4 GETJO JORG
- SA1 JORG
- SX2 X1-SYOT
- ZR X2,PRS7 IF SYSTEM ORIGIN
- SX1 X1-IAOT
- NZ X1,PRS5 IF THIS JOB IS NOT INTERACTIVE
- CSET NORMAL
- MX6 1 INDICATE CHARACTER SET CHANGED
- SA6 CSET
- * CHECK FOR TERMINAL FILES.
- PRS5 SA1 ZINF
- NZ X1,PRS6 IF INPUT IS FROM COMMAND LINE
- SX2 I
- RJ STF CHECK FOR INPUT FILE DISPOSITION
- SA6 IDTP
- ZR X6,PRS6 IF INPUT IS A TERMINAL FILE
- READ I READ FIRST PART OF DISK INPUT FILE
- PRS6 WRITE O,* PRESET WRITE FUNCTION
- SX2 O CHECK OUTPUT FILE EQUIPMENT TYPE
- RJ STF
- SA6 ODTP
- MX0 42
- NZ X6,PRS7 IF OUTPUT NOT ASSIGNED TO TERMINAL
- SETLOF LOFP SET LIST-OF-FILES ADDRESS
- EQ PRS8 CONVERT PROCESSING OPTION
- PRS7 GETPP OBUF,PRSB,PRSC GET PRINT PARAMETERS
- WRITEC O,PRSC SET PRINT DENSITY
- WRITEC O,PRSD ISSUE PAGE EJECT
- PRS8 SA1 POPT VALIDATE AND CONVERT PROCESSING OPTION
- LX1 6
- SX6 X1-1RD
- SX1 X1-1RR
- SA6 POPT
- ZR X6,PRSX IF *PO=D*
- ZR X1,PRSX IF *PO=R*
- PRS9 SX5 PRSA * GENPFD ARGUMENT ERROR.*
- EQ ABT ABORT
- PRSA DATA C* GENPFD ARGUMENT ERROR.*
- PRSB BSS 1
- PRSC BSS 1 PRINT DENSITY FORMAT EFFECTOR
- PRSD DATA 0L1 PAGE EJECT FORMAT EFFECTOR
- SPACE 4,10
- * COMMAND ARGUMENT TABLE.
- TCAT BSS 0 COMMAND ARGUMENT TABLE
- TLFN BSS 0 FILE NAME ARGUMENT LIST
- I ARG I,I INPUT DIRECTIVE FILE NAME
- L ARG O,O LIST OUTPUT FILE NMAE
- U ARG UNITS,UNITS UNITS PARAMETER
- S ARG SUMMARY,SUMMARY SUMMARY FILE NAME
- UD ARG UDIR,UDIR UTILITY DIRECTIVE FILE NAME
- TLFNL EQU *-TCAT LENGTH OF FILE NAME ARGUMENT LIST
- Z ARG -BLNK,ZINF *Z* INPUT FLAG
- PO ARG POPT,POPT PROCESSING OPTION
- CON 0 ARGUMENT LIST TERMINATOR
- SPACE 4,10
- * PRESET COMMON DECKS.
- *CALL COMCARG
- *CALL COMCSTF
- *CALL COMCZAP
- SPACE 4,10
- * BUFFERS.
- USE BUFFERS
- LIST G
- BEGIN BSSN PRS
- AFBUF BSSN SMBFL MERGESORT SCRATCH ONE BUFFER
- BFBUF BSSN SMBFL MERGESORT SCRATCH TWO BUFFER
- CFBUF BSSN SMBFL SELECTION/MERGE SORT BUFFER
- IBUF BSSN IBUFL INPUT BUFFER
- OBUF BSSN OBUFL OUTPUT BUFFER
- SBUF BSSN SBUFL SUMMARY FILE BUFFER
- UBUF BSSN UBUFL UTILITY DIRECTIVES BUFFER
- WSA BSSN WSAL WORKING STORAGE BUFFER
- PAD BSSN 20B UNUSED END OF FL BUFFER AREA
- RFL= BSSN 0 SET INITIAL FIELD LENGTH
- END BSSN
- LIST *
- SPACE 4,10
- * OVERFLOW CHECK.
- USE PRESET
- ERRPL *-IBUF PRESET OVERFLOWS INTO INPUT BUFFER
- SPACE 4
- END GENPFD
cdc/nos2.source/opl871/genpfd.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator