IDENT MFILES,FETS ABS SST ENTRY CLEAR ENTRY OUT ENTRY OVWRITE ENTRY RETURN ENTRY REWIND ENTRY SETFS ENTRY UNLOAD ENTRY NPC= ENTRY RFL= ENTRY SSM= SYSCOM B1 TITLE MFILES - MULTIPLE FILE PROCESSOR. *COMMENT MFILES - MULTIPLE FILE PROCESSOR. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4,10 ***** MFILES - MULTIPLE FILE PROCESSOR. * * A. SKJOLDEBRAND. 75/09/07. * H. G. VARNIS. 79/01/02. * * *MFILES* REQUESTS THAT CERTAIN OPERATIONS BE PERFORMED ON A * SUBSET OF FILES ASSIGNED TO A JOB. MFILES SPACE 4,30 *** *MFILES* REQUESTS THAT CERTAIN OPERATIONS BE PERFORMED ON A * SUBSET OF FILES ASSIGNED TO A JOB. THE SUBSET IS DEFINED BY * THE COMMAND AS FOLLOWS: * * FORMAT FORMAT SUBSET * CODE * * 0 NAME. ALL FILES * 1 NAME(*) ALL FILES * 2 NAME(*,LFN1,...,LFNN) ALL FILES EXCEPT LFN1,...,LFNN * 3 NAME(LFN1,...,LFNN) FILES LFN1,...,LFNN * * LEGAL COMMAND NAMES ARE *CLEAR*, *OUT*, *OVWRITE*, * *RETURN*, *REWIND*, *SETFS*, AND *UNLOAD*. OPERATIONS AND * ALLOWED FORMATS ARE GIVEN BY THE FOLLOWING TABLE. * * 0 1 2 3 * --- --- --- --- * CLEAR RELEASE FILE FROM JOB X X X - * OUT RELEASE FILE TO OUTPUT QUEUE X X X - * OVWRITE OVERWRITE FILES - X X X * RETURN RELEASE FILE FROM JOB - X X X * REWIND POSITION FILE AT BOI - X X X * SETFS SET FILE STATUS - X X X * UNLOAD RELEASE FILE FROM JOB - X X X * * WHERE: X = FORMAT ALLOWED FOR THIS COMMAND. * - = FORMAT NOT ALLOWED FOR THIS COMMAND. * * * NOTES: * * 1. THE *CLEAR* AND *RETURN* COMMANDS PRODUCE * IDENTICAL OPERATIONS ON THE FILES TO WHICH THEY REFER. * THEY DIFFER ONLY IN ALLOWED COMMAND FORMATS. MFILES SPACE 4,20 *** THE COMMAND. * * * CLEAR. RETURNS ALL FILES EXCEPT FOR FILES WITH * *CBST*, *CKST* OR *NDST* STATUS, AND * THE OPTICAL DISK CONTROL FILE *ZZZZZOD*. * * CLEAR/OP=O. RETURNS ALL OPTICAL DISK FILES AND THE * OPTICAL DISK CONTROL FILE *ZZZZZOD*. * * CLEAR(*) RETURNS ALL FILES EXCEPT FOR FILES WITH * *CBST*, *CKST* OR *NDST* STATUS, AND * THE OPTICAL DISK CONTROL FILE *ZZZZZOD*. * * CLEAR(*/OP=O) RETURNS ALL OPTICAL DISK FILES AND THE * OPTICAL DISK CONTROL FILE *ZZZZZOD*. * * CLEAR(*,LFN1,...,LFNN) RETURNS ALL FILES EXCEPT FOR * FILES LFN1,...,LFNN, FILES WITH *CBST*, * *CKST* OR *NDST* STATUS, AND THE OPTICAL * DISK CONTROL FILE *ZZZZZOD*. * * * OUT. RELEASES TO THE OUTPUT QUEUE ALL * FILES OF TYPE *QFFT* AND ALL FILES * WITH THE SPECIAL NAMES *OUTPUT*, * *PUNCH*, *PUNCHB*, AND *P8*. * * OUT(*) SAME AS *OUT.* * * OUT(*/OP=X) SAME AS *OUT.* USING THE OPTION *X*. * THIS FORM IS USED ONLY BY THE SYSTEM * DURING JOB TERMINATION PROCESSING. * THE POSSIBLE VALUES OF THE OPTION * *X* AND THEIR MEANINGS ARE SHOWN * BELOW. * * E PERFORM END-OF-JOB ROUTING. * * OUT(*,LFN1,...,LFNN) SAME AS *OUT* WITH THE * EXCEPTION OF FILES LFN1,...,LFNN. * * * OVWRITE,*. OVERWRITE ALL MASS STORAGE FILES EXCEPT * FOR FILES NOT IN WRITE MODE. * * OVWRITE,*/OP=OPTIONS. OVERWRITE ALL MASS STORAGE FILES * EXCEPT FOR FILES NOT IN WRITE MODE WITH * THE FOLLOWING OPTIONS. * Z - OVERWRITE THE FILE WITH BINARY ZEROES. * BOTH THE Z AND THE X OPTIONS CANNOT * BE SIMULTANEOUSLY SELECTED. THIS IS * THE DEFAULT VALUE. * * X - OVERWRITE THE FILE FIRST WITH BINARY * ZEROS, THEN WITH BINARY ONES, THEN * WITH A PATTERN OF ALTERNATING BINARY * ONES AND ZEROS. * * R - RETURN ALL FILES PROCESSED AFTER * COMPLETION. * * OVWRITE,*,LFN1,...,LFNN/OP=OPTIONS. * OVERWRITE ALL MASS STORAGE FILES EXCEPT * FOR FILES NOT IN WRITE MODE AND FILES * LFN1,...LFNN USING SELECTED OPTIONS. * * OVWRITE,LFN1,...,LFNN/OP=OPTIONS. * OVERWRITE FILES LFN1,...,LFNN USING * SELECTED OPTIONS. NON-MASS STORAGE FILES * AND FILES NOT IN WRITE MODE WILL BE * IGNORED. * * * RETURN(*) RETURNS ALL FILES EXCEPT FOR FILES WITH * *CBST*, *CKST* OR *NDST* STATUS, AND * THE OPTICAL DISK CONTROL FILE *ZZZZZOD*. * * RETURN(*/OP=O) RETURNS ALL OPTICAL DISK FILES AND THE * OPTICAL DISK CONTROL FILE *ZZZZZOD*. * * RETURN(*,LFN1,...,LFNN) RETURNS ALL FILES EXCEPT FOR * FILES LFN1,...,LFNN, FILES WITH *CBST*, * *CKST* OR *NDST* STATUS, AND THE OPTICAL * DISK CONTROL FILE *ZZZZZOD*. * * RETURN(LFN1,...LFNN) RETURNS FILES LFN1,...,LFNN. * WILL *NOT* RETURN THE OPTICAL DISK * CONTROL FILE *ZZZZZOD*. * * * REWIND(*) REWINDS ALL FILES. * * REWIND(*,LFN1,...,LFNN) REWINDS ALL FILES EXCEPT * FOR FILES LFN1,...,LFNN. * * REWIND(LFN1,...,LFNN) REWINDS FILES LFN1,...LFNN. * * * SETFS(*/FS=S) SET FILE STATUS *S* ON ALL FILES. * * SETFS(*,LFN1,...,LFNN/FS=S) SET FILE STATUS *S* ON ALL FILES * EXCEPT FILES LFN1,...,LFNN. * * SETFS(LFN1,...,LFNN/FS=S) SET FILE STATUS *S* ON FILES * LFN1,....,LFNN. * * * UNLOAD(*) UNLOADS ALL FILES EXCEPT FOR FILES WITH * *CBST*, *CKST* OR *NDST* STATUS, AND * THE OPTICAL DISK CONTROL FILE *ZZZZZOD*. * * UNLOAD(*/OP=O) UNLOADS ALL OPTICAL DISK FILES AND THE * OPTICAL DISK CONTROL FILE *ZZZZZOD*. * * UNLOAD(*,LFN1,...,LFNN) UNLOADS ALL FILES EXCEPT FOR * FILES LFN1,...,LFNN, FILES WITH *CBST*, * *CKST* OR *NDST* STATUS, AND THE OPTICAL * DISK CONTROL FILE *ZZZZZOD*. * * UNLOAD(LFN1,...,LFNN) UNLOADS FILES LFN1,...LFNN. * WILL *NOT* UNLOAD THE OPTICAL DISK * CONTROL FILE *ZZZZZOD*. SPACE 4,10 *** DAYFILE MESSAGES. * * * * ERROR IN ARGUMENTS.* = AN INCORRECT ARGUMENT OR FORMAT * WAS USED ON THE COMMAND. COMPARE THE * COMMAND USED WITH THE DOCUMENTED FORMATS. * * * FILE STATUS NOT SPECIFIED.* = A *SETFS* COMMAND WAS * ISSUED WITH NO FILE STATUS SPECIFIED. * * * INCORRECT FILE STATUS.* = THE FILE STATUS SPECIFIED * ON A *SETFS* COMMAND WAS NOT VALID. * * * INCORRECT */* OPTION.* = AN INCORRECT COMMAND * OPTION WAS ENTERED FOLLOWING A */* SEPARATOR. * * * NNN FILE(S) PROCESSED.* = NNN IS THE NUMBER OF FILES FOR * WHICH THE FUNCTION WAS REQUESTED. * * * XXXXXXX ROUTED. JSN IS YYYY.* = XXXXXXX IS THE NAME * OF THE FILE BEING ROUTED AND YYYY IS THE JSN WHICH * WAS ASSIGNED TO THAT FILES QFT ENTRY. * * * (FILENAME) NOT ON MASS STORAGE.* = THE NAMED FILE WAS NOT * PROCESSED BECAUSE IT DOES NOT RESIDE ON MASS STORAGE. * * * (FILENAME) NOT IN WRITE MODE.* = THE NAMED FILE WAS NOT * PROCESSED BECAUSE IT IS NOT IN WRITE MODE. MFILES TITLE CONSTANTS AND MACRO DEFINITIONS. MFILES SPACE 4,10 ** DEFINITION COMMON DECKS. *CALL COMCMAC *CALL COMCCMD *CALL COMSDSP *CALL COMSJCE *CALL COMSLFD SPACE 4,15 ** MACRO DEFINITIONS. ACON SPACE 4,10 ** ACON - SET ARGUMENT CONTROL. * * ACON P,T * * ENTRY *P* = ARGUMENT PROCESSOR ADDRESS. * *T* = ARGUMENT TABLE (*COMCARG* FORMAT) ADDRESS. * * EXIT 24/0, 18/P, 18/T PURGMAC ACON ACON MACRO P,T + VFD 24/0,18/P,18/T ENDM SCON SPACE 4,10 ** SCON - SET COMMAND CONTROL. * * SCON A,B,C,D,EXP,CF * * ENTRY *A* = 1 IF FORMAT 0 ALLOWED. * *B* = 1 IF FORMAT 1 ALLOWED. * *C* = 1 IF FORMAT 2 ALLOWED. * *D* = 1 IF FORMAT 3 ALLOWED. * *EXP* = ADDRESS OF FILE EXCLUSION PROCESSOR. * *CF* = *CIO* FUNCTION CODE. PURGMAC SCON SCON MACRO A,B,C,D,EXP,CF VFD 1/A,1/B,1/C,1/D,20/0,18/EXP,18/CF ENDM MFILES SPACE 4,10 **** INSTALLATION PARAMETERS. MNF EQU 200B FILES PROCESSED PER *GETFNT* CALL **** SPACE 4,10 ** ASSEMBLY CONSTANTS. FMT0 EQU 0 FORMAT 0 FMT1 EQU 1 FORMAT 1 FMT2 EQU 2 FORMAT 2 (EXCLUSION FORMAT) FMT3 EQU 3 FORMAT 3 (INCLUSION FORMAT) FNTBL EQU 2*MNF+2 *GETFNT* BUFFER SIZE PSBFL EQU 1 LENGTH OF PSEUDO BUFFER FOR FETS FRDC EQU 20B *DSP* FLAG FOR DISPOSITION CODE MFILES TITLE TABLES AND DATA STORAGE. ** FETS. ORG 110B FETS BSS 0 FET1 FILEB PSBF,PSBFL,(FET=8) FET2 FILEB PSBF,PSBFL,(FET=8) FET3 FILEB PSBF,PSBFL,(FET=8) FETX FILEB PSBF,PSBFL,(FET=13) *GETFNT* FET (MUST BE LAST FET) FETC EQU FETX+8 *GETFNT* CONTROL WORD ADDRESS FETL EQU FET2-FET1 FET LENGTH FETW EQU FETX-FETS LENGTH OF FET BLOCK FETN EQU FETW/FETL+1 NUMBER OF FETS SPACE 4,10 ** RESERVED LOCATIONS. CSOC CON 0 COMMAND OPTION COUNT EOJS CON 0 END-OF-JOB PROCESSING STATUS FICT CON 0 FILE COUNT FLST CON 0 FILE STATUS TO BE SET FRMT CON 0 FORMAT CODE OPARG CON 0 *OP=* ARGUMENT OPOF CON 0 *OP=O* PROCESSED FLAG OVWF CON 0 *OVWRITE* OPTION FLAG NOJF CON 1 *NOJT* TERMINATION FLAG ZODF CON 0 OPTICAL DISK CONTROL FILE FOUND FLAG SPACE 4,10 ** PRESERVED REGISTER STORAGE LOCATIONS. SVA3 CON 0 SAVE (A3) SVB2 CON 0 SAVE (B2) SVB3 CON 0 SAVE (B3) SVB4 CON 0 SAVE (B4) SPACE 4,10 ** *GETFNT* CONTROL WORD. GFCW VFD 12/MNF,6/0,18/0,2/0,1/1,3/4,18/FNTB SPACE 4,10 ** COMMAND TABLE. TCSC BSS 0 FWA OF CONTROL WORD TABLE CLCC SCON 1,1,1,0,CPF,70B CLEAR OUCC SCON 1,1,1,0,COF,0B OUT OVCC SCON 0,1,1,1,CMS,244B OVWRITE OVCR SCON 0,1,1,1,CMS,254B OVWRITE RETURN RTCC SCON 0,1,1,1,CPF,70B RETURN RWCC SCON 0,1,1,1,0,50B REWIND SFCC SCON 0,1,1,1,CIF,0 SETFS UNCC SCON 0,1,1,1,CPF,60B UNLOAD TACW SPACE 4,10 ** TACW - TABLE OF ARGUMENT CONTROL WORDS. * * THIS TABLE IS ADDRESSED USING THE OFFSET (*TACW*) FROM * THE CORRESPONDING ENTRY IN THE COMMAND * CONTROL WORD TABLE. TACW EQU *-TCSC TABLE OFFSET FROM *TCSC* ACON CAP,TOARG CLEAR ACON OAP,TOARG OUT ACON VAT,TOARG OVWRITE ACON VAT,TOARG OVWRITE RETURN ACON CAP,TOARG RETURN ACON 0,0 REWIND ACON SAP,TSARG SETFS ACON CAP,TOARG UNLOAD TDSP SPACE 4,10 ** TDSP - *DSP* PARAMETER BLOCK. TDSP BSSZ 1 VFD 42/0,18/FRFN RETURN JSN TO CALLER BSSZ 5 TSFN SPACE 4,10 ** TSFN - TABLE OF SPECIAL FILE NAMES. * *T 42/FILE NAME, 18/ 0 TSFN BSS 0 START OF TABLE LOC 0 OTPT CON 0LOUTPUT CON 0LPUNCH CON 0LPUNCHB CON 0LP8 CON 0 END OF TABLE LOC *O SPACE 4,10 MFILES TITLE COMMAND ENTRY POINTS. ** CLEAR. * * RETURN FILES ASSIGNED TO A JOB. CLEAR SB2 CLCC SET COMMAND WORD ADDRESS EQ MFP ENTER MAIN ROUTINE OUT SPACE 4,10 ** OUT. * OUT(.../OP=X) * * RELEASE FILES ASSIGNED TO A JOB TO THE OUTPUT QUEUE. * THE OPTION SPECIFIED BY *X* IS DESCRIBED BELOW. IT * IS VALID ONLY DURING JOB TERMINATION PROCESSING. * * E PERFORM END-OF-JOB ROUTING. * * Q QUEUE FILE REGARDLESS OF USER * VALIDATION LIMITS. OUT SB2 OUCC SET COMMAND WORD ADDRESS EQ MFP ENTER MAIN LOOP OVWRITE SPACE 4,10 ** OVWRITE. * * OVERWRITE FILES. OVWRITE SB2 OVCC SET COMMAND WORD ADDRESS EQ MFP ENTER MAIN ROUTINE SPACE 4,10 ** RETURN. * * RETURN FILES ASSIGNED TO A JOB. RETURN SB2 RTCC SET COMMAND WORD ADDRESS EQ MFP ENTER MAIN ROUTINE SPACE 4,10 ** REWIND. * * REWIND FILES ASSIGNED TO A JOB. REWIND SB2 RWCC SET COMMAND WORD ADDRESS EQ MFP ENTER MAIN ROUTINE SETFS SPACE 4,10 ** SETFS. * * SET STATUS ON FILES ASSIGNED TO A JOB. SETFS SB2 SFCC SET COMMAND WORD ADDRESS EQ MFP ENTER MAIN ROUTINE SPACE 4,10 ** UNLOAD. * * UNLOAD FILES ASSIGNED TO A JOB. UNLOAD SB2 UNCC SET COMMAND WORD ADDRESS * EQ MFP ENTER MAIN ROUTINE MFILES TITLE MAIN PROGRAM. MFILES SPACE 4,10 ** RESERVED REGISTER USAGE. * * (A3) = ADDRESS OF FIRST FILE NAME ARGUMENT. * (B2) = COMMAND WORD ADDRESS. MFP SPACE 4,15 ** MFP - MULTIPLE FILE PROCESSOR. * * ENTRY (B2) = COMMAND WORD ADDRESS. * * USES X - 4, 6, 7. * A - 4, 6, 7. * * CALLS IFC, PAF, PRS. * * MACROS ENDRUN, GETFNT, RECALL. MFP BSS 0 ENTRY RJ PRS PRESET SA4 GFCW PUT *GETFNT* CONTROL WORD IN FET BX6 X4 SX7 B0 SA6 FETC SA7 FNTB SET INITIAL *GETFNT* CALL MFP1 GETFNT FETX RJ PAF PROCESS ALL FILES ZR X1,MFP2 IF ALL FILES RETURNED IN BUFFER RECALL FETX EQ MFP1 GET ANOTHER BUFFER OF FNT ENTRIES * TERMINATE JOB. MFP2 SA4 FRMT GET FORMAT CODE SX4 X4-FMT3 ZR X4,MFP3 IF FORMAT 3 RJ IFC ISSUE FILE COUNT MESSAGE MFP3 ENDRUN TITLE SUBROUTINES. ABT SPACE 4,10 ** ABT - ISSUE MESSAGE AND ABORT. * * ENTRY (X2) = MESSAGE ADDRESS. * * MACROS ABORT, MESSAGE. ABT BSS 0 ENTRY MESSAGE X2,3 ABORT ABORT CONTROL POINT CFN SPACE 4,20 ** CFN - CHECK FILE NAME FOR EXCLUSION. * * *CFN* CHECKS AN ARGUMENT LIST FOR THE PRESENCE OF THE FILE * NAME GIVEN BY AN FNT ENTRY. DEPENDING ON THE CONTROL * COMMAND, OTHER EXCLUSION TESTS MAY BE MADE. * * ENTRY (X1) = FNT ENTRY. * (X3) = FILE NAME. * (A1) = ADDRESS OF FNT ENTRY IN *GETFNT* BUFFER. * (A3) = ADDRESS OF FIRST ARGUMENT. * (B2) = COMMAND WORD ADDRESS. * * EXIT (X6) = 0 IF FILE TO BE EXCLUDED. * (X6) .NE. 0 IF FILE NOT TO BE EXCLUDED. * * USES X - 0, 4, 6. * A - 4. * B - 7. * * CALLS IRJ. * * NOTE EXCLUSION PROCESSOR SUBROUTINES MUST NOT DESTROY * REGISTERS A3, X3, B2, B3, OR B4. CFN SUBR ENTRY/EXIT SA4 B2 GET EXCLUSION PROCESSOR ADDRESS MX0 -18 AX4 18 BX4 -X0*X4 ZR X4,CFN1 IF NO EXCLUSION PROCESSOR DEFINED SB7 X4+ SET PROCESSOR ADDRESS RJ IRJ EXECUTE EXCLUSION PROCESSOR ZR X6,CFNX IF FILE TO BE EXCLUDED CFN1 SA4 FRMT GET FORMAT CODE SB7 X4-FMT3 SA4 A3+ READ FIRST FILE NAME ARGUMENT CFN2 ZR X4,CFN3 IF END OF ARGUMENT LIST BX6 X4-X3 SA4 A4+B1 READ NEXT ARGUMENT NZ X6,CFN2 IF NOT FOUND * THE FILE NAME WAS FOUND AS ONE OF THE ARGUMENTS SPECIFIED * (EITHER FORMAT 2 OR FORMAT 3 WAS USED). AN ADDITIONAL CHECK * IS REQUIRED TO DETERMINE IF THE FILE IS TO BE INCLUDED * OR EXCLUDED FROM PROCESSING. IF THE INCLUSION FORMAT * (FORMAT 3) WAS SPECIFIED, THE FILE WILL NOT BE EXCLUDED. NZ B7,CFNX IF NOT FORMAT 3 SX6 B1+ SET FILE NOT EXCLUDED EQ CFNX RETURN * THE FILE NAME DID NOT MATCH ANY OF THE ARGUMENTS SPECIFIED. * A CHECK MUST BE MADE TO DETERMINE IF THE FILE SHOULD * BE EXCLUDED OR INCLUDED BY THE PROCESSING TYPE SPECIFIED. * IF THE INCLUSION FORMAT (FORMAT 3) WAS SPECIFIED, THE * FILE WILL BE EXCLUDED. CFN3 NZ B7,CFNX IF NOT FORMAT 3 SX6 B0+ SET FILE EXCLUDED EQ CFNX RETURN CIF SPACE 4,10 ** CIF - CHECK FOR INPUT* FILE. * * ENTRY (X1) = FNT ENTRY. * * EXIT (X6) = 0 IF FILE IS INPUT*. * * USES X - 0, 4, 6, 7. * A - 4. CIF SUBR ENTRY/EXIT SA4 =6LINPUT* MX0 42 BX7 X0*X1 BX6 X4-X7 EQ CIFX RETURN CMS SPACE 4,15 ** CMS - CHECK FOR MASS STORAGE AND READ ONLY FILE. * * ENTRY (X1) = FNT ENTRY. * (A1) = ADDRESS OF FNT ENTRY IN *GETFNT* BUFFER. * (X3) = FILE NAME. * (A3) = ADDRESS OF FIRST ARGUMENT. * * EXIT (X6) = 0 IF FILE TO BE EXCLUDED. * * USES X - 0, 1, 4, 6. * A - 4. * B - 2, 3, 5. * * CALLS CIF, RSR, SNM, SVR. * * MACROS MESSAGE. CMS SUBR ENTRY/EXIT MX0 2 LX0 14-59 BX6 X0*X1 SB5 -CMSA MESSAGE TEXT NZ X6,CMS1 IF FILE NOT MASS STORAGE RJ CIF ZR X6,CMSX IF INPUT* FILE SA4 A1+B1 CHECK FOR WRITE MODE MX0 -4 SX6 B1+ SET FILE INCLUDED LX4 -4 BX4 -X0*X4 SB5 X4 EQ B5,B1,CMSX IF FILE IN WRITE MODE SB5 -CMSB MESSAGE TEXT * SEARCH ARGUMENT LIST FOR MATCHING FILE NAME TO DETERMINE * IF WARNING MESSAGE SHOULD BE ISSUED. CMS1 SA4 A3+ READ FIRST FILE NAME ARGUMENT CMS2 ZR X4,CMS3 IF END OF ARGUMENT LIST BX0 X4-X3 SA4 A4+B1 READ NEXT ARGUMENT NZ X0,CMS2 IF NOT FOUND SA4 FRMT GET FORMAT CODE SX4 X4-FMT3 NZ X4,CMS3 IF NOT FORMAT 3 * ISSUE WARNING MESSAGE AND EXCLUDE FILE. RJ SVR SAVE REGISTERS SB2 1R+ SET SEARCH CHARACTER SB3 CMSC MESSAGE ASSEMBLY BUFFER MX0 42 BX1 X0*X1 FILE NAME RJ SNM SET NAME IN MESSAGE MESSAGE CMSC,3,R RJ RSR RESTORE REGISTERS CMS3 SX6 B0+ EXCLUDE FILE EQ CMSX RETURN CMSA DATA C* +++++++ NOT ON MASS STORAGE.* CMSB DATA C* +++++++ NOT IN WRITE MODE.* CMSC BSS 4 ASSEMBLY BUFFER COC SPACE 4,10 ** COC - CHECK FOR OPTICAL CONTROL FILE *ZZZZZOD*. * * ENTRY (X1) = FNT ENTRY. * * EXIT (X6) = 0 IF FILE IS ZZZZZOD. * * USES X - 0, 4, 6, 7. * A - 4. COC SUBR ENTRY/EXIT MX0 2 LX0 14-59 BX6 X0*X1 NZ X6,COCX IF FILE NOT MASS STORAGE SA4 =7LZZZZZOD MX0 42 BX7 X0*X1 BX6 X4-X7 EQ COCX RETURN COF SPACE 4,20 ** COF - CHECK IF OUTPUT FILE. * * *COF* CHECKS TO SEE IF THE GIVEN FILE SHOULD BE * ROUTED TO THE OUTPUT QUEUE. THE CRITERIA USED * FOR SELECTION ARE - * * (1) FILE TYPE IS *QFFT*. * (2) FILE IS A LOCAL FILE (FILE TYPE *LOFT*) AND * HAS A SPECIAL NAME, *OUTPUT*, *PUNCH*, *P8*, * OR *PUNCHB*. * * ENTRY (X1) = FNT ENTRY. * (X3) = FILE NAME. * * EXIT (X6) = NONZERO IF FILE TO BE ROUTED TO QUEUE. * * USES X - 4, 6, 7. * A - 4. * B - 6. COF SUBR ENTRY/EXIT * CHECK FILE TYPE. BX4 X1 CHECK FNT PARAMETERS MX6 -2 AX4 13 BX6 -X6*X4 NZ X6,COF3 IF NOT MASS STORAGE FILE BX4 X1 CHECK FILE TYPE MX6 -6 AX4 6 BX7 -X6*X4 SB6 X7-QFFT ZR B6,COF1.1 IF QUEUED FILE SB6 X7-LOFT NZ B6,COF3 IF NOT LOCAL FILE SA4 NOJF CHECK TERMINATION OPTION FLAG ZR X4,COF3 IF NOT ROUTING *SPECIAL NAME* LOCAL FILES * CHECK FOR SPECIAL FILE NAMES. COF1 SA4 TSFN+B6 READ TABLE ENTRY ZR X4,COF3 IF END OF TABLE BX7 X4-X3 COMPARE FILE NAMES SB6 B6+B1 ADVANCE TABLE INDEX NZ X7,COF1 IF NO MATCH * PROCESS END-OF-JOB FILE ROUTING. COF1.1 SA4 EOJS CHECK FOR END-OF-JOB PROCESSING ZR X4,COF2 IF NOT END-OF-JOB BX7 -X6*X1 CHECK FILE STATUS SX7 X7-SOST ZR X7,COF2 IF *SOST* STATUS SA4 NOJF CHECK TERMINATION OPTION FLAG ZR X4,COF2 IF ROUTING ANY QUEUED FILE SA4 TSFN+OTPT CHECK FILE NAME BX7 X3-X4 NZ X7,COF2 IF FILE NAME .NE. *OUTPUT* BX4 X1 CHECK IF *OUTPUT* IS LOCKED LX4 59-12 PL X4,COF3 IF *OUTPUT* IS NOT LOCKED * RETURN STATUS TO ROUTE FILE. COF2 SX6 B1+ EQ COFX RETURN * RETURN STATUS TO IGNORE FILE. COF3 SX6 B0+ EQ COFX RETURN CPF SPACE 4,10 ** CPF - CHECK FOR PROTECTED FILE. * * ENTRY (X1) = FNT ENTRY. * (X3) = FILE NAME. * (A3) = ADDRESS OF FIRST ARGUMENT. * * EXIT (X6) = 0 IF PROTECTED FILE TO BE EXCLUDED. * * USES X - 4, 6, 7. * A - 4, 7. * * CALLS COC, CIF, RSR, SVR. * * MACROS FILINFO. CPF5 SX7 X4+ SET CONTROL FILE FOUND FLAG IF *OP=O* SA7 ZODF CPF SUBR ENTRY/EXIT RJ CIF ZR X6,CPFX IF INPUT* FILE RJ COC CHECK FOR OPTICAL CONTROL FILE SA4 OPOF ZR X6,CPF5 IF OPTICAL CONTROL FILE NZ X4,CPF4 IF *OP=O* SPECIFIED MX4 -6 CHECK IF *CBST*, *CKST* OR *NDST* STATUS BX4 -X4*X1 SX6 X4-CBST ZR X6,CPF1 IF CHECKPOINT FILE SX6 X4-CKST ZR X6,CPF1 IF CHECKPOINT FILE SX6 X4-NDST NZ X6,CPFX IF NOT NO-AUTO-DROP STATUS * IT IS A PROTECTED FILE. SEARCH THE ARGUMENT LIST FOR * MATCHING FILE NAME. IF A MATCH IS FOUND AND INCLUSION * PROCESSING (FORMAT 3) HAS BEEN SELECTED, RETURN (X6) * NON-ZERO SO THAT THE FILE WILL BE PROCESSED. OTHERWISE, * RETURN (X6) = 0 SO THAT THE FILE WILL BE EXCLUDED. CPF1 SA4 A3+ READ FIRST FILE NAME ARGUMENT CPF2 ZR X4,CPFX IF END OF ARGUMENT LIST BX7 X4-X3 SA4 A4+B1 READ NEXT ARGUMENT NZ X7,CPF2 IF NOT FOUND SA4 FRMT GET FORMAT CODE SX4 X4-FMT3 CHECK FOR FORMAT 3 CPF3 NZ X4,CPFX IF FILE TO BE EXCLUDED SX6 B1+ PROCESS THE FILE EQ CPFX RETURN * *OP=O* SPECIFIED - CHECK FOR OPTICAL DISK FILE. CPF4 SA4 CPFA SET UP *FILINFO* PARAMETER BLOCK MX6 42 BX7 X6*X1 BX6 -X6*X4 BX7 X6+X7 SA7 A4+ RJ SVR SAVE REGISTERS FILINFO CPFA GET FILE INFORMATION RJ RSR RESTORE REGISTERS SA4 CPFA+1 BX6 X6-X6 SET TO EXCLUDE FILE IF NOT OPTICAL DISK AX4 48 SX4 X4-2ROD EQ CPF3 EXCLUDE FILE UNLESS ON OPTICAL DISK CPFA VFD 42/0,6/5,12/1 *FILINFO* PARAMETER BLOCK BSSZ 5 GNF SPACE 4,20 ** GNF - GET NONBUSY FET. * * *GNF* DETERMINES WHETHER ANY FET IN THE SET OF FETS IS * CURRENTLY BUSY WITH THE GIVEN FILE AND IF NONE IS, RETURNS * THE ADDRESS OF A NONBUSY FET. * * ENTRY (X3) = FILE NAME TO LOOK FOR. * * EXIT (X2) = 0 IF A FET IS BUSY WITH THE FILE. * (X2) = ADDRESS OF A NONBUSY FET OTHERWISE. * * USES X - 0, 1, 2. * A - 1. * B - 5, 7. * * MACROS RECALL. GNF2 SX2 A1+ SAVE ADDRESS OF NONBUSY FET NZ B5,GNFX IF EXCLUSION FORM GNF3 SA1 A1+FETL SB7 A1-FETX-1 NG B7,GNF1 IF NOT PAST END OF FETS NZ X2,GNFX IF NONBUSY FET FOUND RECALL FETS GNF SUBR ENTRY/EXIT SA1 FRMT GET FORMAT CODE SB5 X1-FMT3 SA1 FETS MX0 42 BX2 X2-X2 GNF1 LX1 59-0 NG X1,GNF2 IF NOT BUSY LX1 1 RESTORE X1 NZ B5,GNF3 IF EXCLUSION FORM BX1 X0*X1 BX1 X1-X3 NZ X1,GNF3 IF NOT A FILE NAME MATCH SX2 B0+ EQ GNFX RETURN IFC SPACE 4,15 ** IFC - ISSUE FILE COUNT MESSAGE. * * ENTRY (FICT) = FILE COUNT. * * EXIT MESSAGE ISSUED. * * USES X - 1, 2, 6. * A - 1, 6. * * CALLS CDD. * * MACROS MESSAGE. IFC SUBR ENTRY/EXIT SA1 FICT GET FILE COUNT SX2 IFCA ASSUME NO FILES ZR X1,IFC1 IF NO FILES PROCESSED SX6 X1-1 CHECK FILE COUNT SX2 IFCB ZR X6,IFC1 IF ONE FILE PROCESSED RJ CDD CONVERT TO DECIMAL SA1 IFCC MERGE FILE COUNT WITH MESSAGE MX2 24 LX6 36 BX1 -X2*X1 BX6 X2*X6 BX6 X6+X1 SA6 A1 SX2 A1 SET MESSAGE ADDRESS IFC1 MESSAGE X2,3 ISSUE DAYFILE MESSAGE EQ IFCX RETURN IFCA DATA C* NO FILES PROCESSED.* IFCB DATA C* 1 FILE PROCESSED.* IFCC DATA C* 000 FILES PROCESSED.* IRJ SPACE 4,15 ** IRJ - INDEX RETURN JUMP. * * EXECUTES A RETURN JUMP TO (B7). * * ENTRY (B7) = BRANCH ADDRESS. * * EXIT TO (B7)+1. * JUMP INSTRUCTION TO RETURN LOCATION IN ((B7)). * * USES X - 5, 6. * A - 5, 6. IRJ SUBR ENTRY/EXIT SA5 IRJ READ RETURN INSTRUCTION BX6 X5 SET RETURN IN CALLED ROUTINE SA6 B7 JP B7+1 ENTER CALLED ROUTINE PAF SPACE 4,20 ** PAF - PROCESS ALL FILES. * * *PAF* REQUESTS AN OPERATION FOR EACH FILE IN THE SET OF * FNT ENTRIES EXCEPT THOSE THAT ARE EXCLUDED. * * ENTRY (A3) = ADDRESS OF THE FIRST ARGUMENT. * (B2) = COMMAND WORD ADDRESS. * * EXIT (X1) = 0 IF ALL FILES RETURNED IN THE BUFFER. * * USES X - 0, 1, 3. * A - 1, 3. * B - 3, 4. * * CALLS CFN, POF. PAF3 SA1 ZODF ZR X1,PAFX IF NOT PROCESSING OPTICAL CONTROL FILE SA3 =7LZZZZZOD RJ POF PROCESS ONE FILE * SX1 0 (*POF* EXIT CONDITION) PAF SUBR ENTRY/EXIT SB4 FNTBL-1 END OF *GETFNT* BUFFER SB3 B1 PAF1 SA1 B3+FNTB GET FNT ENTRY MX0 42 BX3 X0*X1 ZR X1,PAF3 IF END OF ENTRIES RJ CFN CHECK FILE NAME FOR EXCLUSION ZR X6,PAF2 IF FILE TO BE EXCLUDED RJ POF PROCESS ONE FILE PAF2 SB3 B3+2 NE B3,B4,PAF1 IF MORE FNT ENTRIES SX1 B1+ EQ PAFX RETURN POF SPACE 4,20 ** POF - PROCESS ONE FILE. * * *PAF* REQUESTS AN OPERATION FOR ONE FILE. * * ENTRY (X3) = NAME OF FILE TO BE PROCESSED. * (B2) = COMMAND WORD ADDRESS. * * EXIT SPECIFIED FILE PROCESSED AS REQUESTED. * (X1) = 0. * * USES X - 0, 1, 2, 4, 6, 7. * A - 1, 4, 6, 7. * B - 2, 3, 5, 6. * * CALLS CIO=, GNF, RSR, SNM, SVR. * * MACROS MESSAGE, ROUTE, SETFS. POF SUBR ENTRY/EXIT SB6 B2-OUCC ZR B6,POF3 IF *OUT* COMMAND SA4 B2 GET *CIO* CODE SX7 X4 RJ GNF GET NONBUSY FET ZR X2,POF5 IF FILE ALREADY DONE SX4 B1 BX6 X3+X4 SA6 X2+ SB6 B2-SFCC ZR B6,POF2 IF *SETFS* COMMAND SB6 B2-OVCC NZ B6,POF1 IF NOT *OVWRITE* COMMAND SA1 OVWF OPTIONAL PARAMETER INDICATOR LX1 18-0 BX2 X1+X2 COMBINE OPTIONAL PARAMETER WITH FILE NAME * PROCESS *CIO* FUNCTION. POF1 RJ CIO= MAKE REQUEST EQ POF4 INCREMENT FILE COUNT * PROCESS *LFM* REQUEST. POF2 SA1 FLST SET FILE STATUS SETFS X2,X1 EQ POF4 INCREMENT FILE COUNT * PROCESS *DSP* FUNCTION. POF3 BX7 X3 SET FILE NAME MX0 42 BX1 X0*X7 SA7 TDSP RJ SVR SAVE REGISTERS SB2 1R= SET SCAN PARAMETER SB5 -POFA SET STENCIL ADDRESS SB3 POFB SET ASSEMBLY BUFFER ADDRESS RJ SNM SET NAME IN MESSAGE ROUTE TDSP,RECALL MX0 24 SA1 TDSP GET JSN RETURNED BX1 X0*X1 SB2 1R+ SET SCAN PARAMETER SB5 POFB SET *POFB* AS ASSEMBLY BUFFER RJ SNM SET NAME IN MESSAGE MESSAGE POFB,0,RECALL SEND MESSAGE TO USER DAYFILE RJ RSR RESTORE REGISTERS POF4 SA1 FICT INCREMENT FILE COUNT SX6 X1+B1 SA6 A1 POF5 SX1 B0+ EQ POFX RETURN POFA DATA C* ======= ROUTED. JSN IS ++++. * POFB DATA C* ======= ROUTED. JSN IS ++++. * RSR SPACE 4,10 ** RSR - RESTORE RESERVED REGISTERS. * * RESTORES THE CONTENTS OF X3, A3, B2, B3, AND B4. * * ENTRY (SVA3) = (A3). * ((SVA3)) = (X3). * (SVB2) = (B2). * (SVB4) = (B4). * (SVB3) = (B3). * * USES X - 3. * A - 3. * B - 2, 3, 4. RSR SUBR ENTRY/EXIT SA3 SVB4 RESTORE (B4) SB4 X3 SA3 A3-B1 RESTORE (B3) SB3 X3 SA3 A3-B1 RESTORE (B2) SB2 X3 SA3 A3-B1 READ A3 SA3 X3+ RESTORE (A3) AND (X3) EQ RSRX RETURN SVR SPACE 4,15 ** SVR - SAVE RESERVED REGISTERS. * * SAVES RESERVED REGISTERS A3, X3, B2, B3, AND B4. * THESE REGISTERS MAY LATER BE RESTORED BY * EXECUTING *RSR*. NOTE THAT X3 IS NOT SAVED * DIRECTLY, BUT IS AUTOMATICALLY RELOADED WHEN * A3 IS RESTORED. * * EXIT (SVA3) = (A3). * (SVB2) = (B2). * (SVB4) = (B4). * (SVB3) = (B3). * * USES X - 6. * A - 6. SVR SUBR ENTRY/EXIT SX6 A3 SAVE (A3) SA6 SVA3 SX6 B2 SAVE (B2) SA6 A6+B1 SX6 B3+ SAVE (B3) SA6 A6+B1 SX6 B4 SAVE (B4) SA6 A6+B1 EQ SVRX RETURN SPACE 4,10 * COMMON DECKS. *CALL COMCCDD *CALL COMCCIO *CALL COMCCPM *CALL COMCLFM *CALL COMCSNM *CALL COMCSYS BUFFERS SPACE 4,10 ** BUFFER ASSIGNMENTS. USE BUFFERS PSBF EQU * PSEUDO BUFFER FOR FETS FNTB EQU PSBF+PSBFL BUFFER FOR *GETFNT* RFL= EQU FNTB+FNTBL NPC= EQU 0 FORCE OPERATING SYSTEM PARAMETER FORMAT SSM= EQU 0 DECLARE *SSM=* ENTRY POINT ERRNG JTFL*100B-RFL= IF OVERFLOW MAXIMUM JOB TERMINATION FL MFILES TITLE OVERLAID PRESET. PRS SPACE 4,30 ** PRS - PRESET. * * *PRS* DETERMINES THE FORMAT OF THE CALLING CONTROL * COMMAND, SETS THE ADDRESS OF THE FIRST ARGUMENT * TO PROCESS AND CHECKS FOR THE PRESENCE OF NONZERO * SEPARATORS (= OR /). * * ENTRY (B2) = COMMAND WORD ADDRESS. * * EXIT (X3) = FIRST ARGUMENT. * (A3) = ADDRESS OF FIRST ARGUMENT TO PROCESS. * (FRMT) = COMMAND FORMAT CODE. * TO *ABT* IF ARGUMENT ERROR. * * USES X - 0, 1, 2, 3, 4, 5, 6. * A - 1, 3, 4, 6. * B - 1, 3, 4, 5, 6. * * CALLS MOL, POL. * * ERROR TO *ABT*. PRS SUBR ENTRY/EXIT SB1 1 SET CONSTANT B1=1 RJ MOL MOVE */* OPTION LIST SX2 =C* ERROR IN ARGUMENTS.* SB4 B0 INITIALIZE FORMAT CODE TO 0 ERRNZ FMT0 ADJUST IF VALUE CHANGES MX0 42 SA3 ARGR GET FIRST ARGUMENT SA4 ACTR GET ARGUMENT COUNT SB3 X4+ ZR B3,PRS1 IF NO ARGUMENTS - FORMAT 0 SB4 FMT3 SA4 PRSA GET SPECIAL ARGUMENT VALUE (*) BX4 X3-X4 NZ X4,PRS1 IF ARGUMENT NOT * - FORMAT 3 SA3 A3+B1 SB3 B3-B1 ADJUST ARGUMENT COUNT FOR * SB4 B1 ERRNZ FMT1-1 ADJUST IF VALUE CHANGES ZR B3,PRS1 IF ONLY * - FORMAT 1 SB4 B4+B1 SET FORMAT CODE TO 2 ERRNZ FMT2-FMT1-1 ADJUST IF VALUE CHANGES * CHECK COMMAND FORMAT VALIDITY. PRS1 SA1 B2 GET CONTROL WORD LX4 X1,B4 PL X4,ABT IF INCORRECT COMMAND FORMAT * CHECK SEPARATORS OF ARGUMENTS. SA1 A3 GET FIRST ARGUMENT SB5 B0 SX6 B4+ SAVE FORMAT CODE SA6 FRMT SB6 B4-FMT3 NZ B6,PRS2 IF NOT FORMAT 3 MX6 6 BX4 X6*X1 SX5 1R* LX4 6 BX4 X4-X5 ZR X4,ABT IF FIRST CHARACTER OF FILENAME IS * PRS2 EQ B5,B3,PRS3 IF END OF ARGUMENTS BX4 -X0*X1 ZR X1,ABT IF BLANK ARGUMENT NZ X4,ABT IF SEPARATOR IS = OR / SA1 A1+B1 SB5 B5+B1 EQ PRS2 CHECK NEXT ARGUMENT PRS3 NZ X1,ABT IF NOT ZERO LAST WORD RJ POL PROCESS */* OPTION LIST EQ PRSX RETURN PRSA DATA 0L* SPECIAL ARGUMENT MFILES TITLE OVERLAID PRESET SUBROUTINES. MOL SPACE 4,20 ** MOL - MOVE */* OPTION LIST. * * MOVES THE OPTION LIST DELIMITED BY THE */* SEPARATOR * TO A SEPARATE OPTION LIST AND CLEARS IT FROM THE * ORIGINAL COMMAND PARAMETER LIST. THE PARAMETER * COUNT OF THE REMAINING COMMAND PARAMETER LIST * IS ADJUSTED TO REFLECT THE NEW PARAMETER COUNT. * * ENTRY (B2) = COMMAND WORD ADDRESS. * * EXIT (CSOC) = COUNT OF */* OPTION LIST PARAMETERS. * (TOPS) = */* OPTION LIST. * (ACTR) = ADJUSTED PARAMETER COUNT. * * ERROR TO *ABT* IF NO FILE STATUS SPECIFIED ON *SETFS*. * * USES X - 0, 1, 2, 6, 7. * A - 1, 6, 7. * B - 4, 5, 6, 7. MOL SUBR ENTRY/EXIT SA1 ACTR GET ARGUMENT COUNT SB6 B0 CLEAR INDEX MX0 42 SET PARAMETER MASK SB7 X1+ (B7) = ARGUMENT COUNT ZR B7,MOLX IF NO ARGUMENTS, RETURN * SEARCH FOR */* DELIMITER IN PARAMETER LIST. MOL1 SA1 ARGR+B6 READ ARGUMENT SB6 B6+B1 COUNT ARGUMENT BX6 -X0*X1 CHECK SEPARATOR SX6 X6-1R/ ZR X6,MOL2 IF */* NE B6,B7,MOL1 IF NOT END OF PARAMETER LIST SX2 =C* FILE STATUS NOT SPECIFIED.* SB5 B2-SFCC ZR B5,ABT IF *SETFS* COMMAND EQ MOLX RETURN * ADJUST PARAMETER COUNT. MOL2 BX7 X0*X1 CLEAR */* FROM PARAMETER SA7 A1 SA1 ACTR READ PARAMETER COUNT WORD SX6 B6 SET NEW PARAMETER COUNT BX1 X0*X1 NZ X7,MOL3 IF NOT NOW A NULL LAST PARAMETER SX6 X6-1 DECREMENT PARAMETER COUNT MOL3 BX6 X1+X6 STORE NEW PARAMETER COUNT SA6 A1+ SX7 B7-B6 SET OPTION LIST ARGUMENT COUNT SA7 CSOC SX7 B0 CLEAR (X7) SB4 B0 CLEAR INDEX * MOVE OPTIONS TO SEPARATE LIST. MOL4 SA1 ARGR+B6 READ OPTION FROM PARAMETER LIST SB6 B6+B1 COUNT OPTION BX6 X1 SA6 TOPS+B4 STORE OPTION IN OPTION LIST SA7 A1 CLEAR OPTION FROM PARAMETER LIST SB4 B4+B1 NE B6,B7,MOL4 IF NOT END OF LIST EQ MOLX RETURN CAP SPACE 4,25 ** CAP - *CLEAR* ARGUMENT PROCESSOR. * * PROCESSES THE OPTIONAL ARGUMENTS FOR THE *CLEAR*, * *RETURN* AND *UNLOAD* COMMANDS. *OP=O* ALLOWED * ONLY ON FORMAT 0 OR 1 FOR THESE COMMANDS. * * ENTRY (OPARG) = *OP=* ARGUMENT. * (B4) = FORMAT MODE. * * EXIT (OPOF) = NON-ZERO IF PROCESSING ONLY OPTICAL DISK * FILES AND THE *ZZZZZOD* FILE (*O* OPTION). * * ERROR TO *ABT* IF INCORRECT ARGUMENT OR FORMAT. * * USES X - 1, 2, 6. * A - 1, 6. CAP SUBR ENTRY/EXIT SX2 =C+ INCORRECT */* OPTION.+ PRESET ERROR MESSAGE SA1 OPARG READ ARGUMENT SX6 1RO CLEAR, RETURN OR UNLOAD W/OP=O. LX1 6 BX1 X6-X1 NZ X1,ABT IF NOT *O* OPTION * PROCESS *O* OPTION. GT B4,B1,ABT IF NOT FORMAT 0 OR 1. SA6 OPOF EQ CAPX RETURN OAP SPACE 4,25 ** OAP - *OUT* ARGUMENT PROCESSOR. * * PROCESSES THE OPTIONAL ARGUMENTS FOR THE *OUT* * COMMAND. * * ENTRY (OPARG) = *OP=* ARGUMENT. * * EXIT (EOJS) = END-OF-JOB STATUS IF PROCESSING * *E* OPTION. * * ERROR TO *ABT* IF INCORRECT ARGUMENT. * * USES X - 1, 2, 4, 6. * A - 1, 4, 6. * * MACROS GETEOJS. OAP SUBR ENTRY/EXIT SX2 =C+ INCORRECT */* OPTION.+ PRESET ERROR MESSAGE ZR B4,ABT IF FORMAT CODE = 0 SA1 OPARG READ ARGUMENT SX6 1RE LX1 6 BX6 X6-X1 NZ X6,ABT IF NOT *E* OPTION * CHECK FOR JOB TERMINATION IN PROGRESS. GETEOJS OAPA READ END-OF-JOB STATUS SA4 OAPA READ REPLY WORD SX2 =C+ INCORRECT */* OPTION.+ SX6 X4-100B CHECK FOR TERMINATION IN PROGRESS NG X6,ABT IF TERMINATION NOT IN PROGRESS MX2 -3 MASK FOR TERMINATION DISPOSITION BX2 -X2*X4 SX6 X2-NOJT SA6 NOJF SET *NOJT* TERMINATION OPTION * PROCESS *E* OPTION. SX6 X4+ SET END-OF-JOB PROCESSING STATUS SA6 EOJS EQ OAPX RETURN OAPA CON 0 *GETEOJS* REPLY WORD SAP SPACE 4,15 ** SAP - *SETFS* ARGUMENT PROCESSOR. * * PROCESSES THE ARGUMENTS FOR THE *SETFS* COMMAND. * * ENTRY (FLST) = SPECIFIED FILE STATUS (DISPLAY CODE). * * EXIT (FLST) = FILE STATUS (BINARY). * * ERROR TO *ABT* IF INCORRECT ARGUMENT. * * USES X - 0, 1, 2, 4, 6. * A - 1, 4, 6. SAP SUBR ENTRY/EXIT SA1 FLST SX2 =C* INCORRECT FILE STATUS.* MX0 42 SA4 SAPA SAP1 BX6 X0*X4 CHECK TABLE FOR MATCH BX6 X1-X6 ZR X6,SAP2 IF SPECIFIED FILE STATUS FOUND SA4 A4+B1 NZ X4,SAP1 IF NOT END OF TABLE EQ ABT PROCESS INCORRECT FILE STATUS SAP2 SX6 X4 SAVE FILE STATUS VALUE SA6 A1 EQ SAPX RETURN SAPA BSS 0 TABLE OF VALID FILE STATUSES VFD 42/0LAD,18/0 VFD 42/0LNAD,18/NDST CON 0 VAT SPACE 4,15 ** VAT - *OVWRITE* ARGUMENT PROCESSOR. * * PROCESSES THE OPTIONAL ARGUMENTS FOR THE *OVWRITE* COMMAND. * * ENTRY (OPARG) = *OP=* ARGUMENT. * * EXIT (OVWF) = 0, IF *Z* OPTION SELECTED. * 3, IF *X* OPTION SELECTED. * (B2) = COMMAND WORD ADDRESS. * * ERROR TO *ABT* IF INCORRECT ARGUMENT. * * USES X - 0, 2, 4, 6, 7. * A - 4, 6. * B - 2, 3, 5. VAT SUBR ENTRY/EXIT SX2 =C+ INCORRECT */* OPTION.+ SX6 3 PRESET *X* OPTION MX0 -6 SA4 OPARG LIST OF OPTIONAL PARAMETERS SB3 B1 INITIALIZE OPTION COUNTER VAT1 LX4 6 RIGHT JUSTIFY CHARACTER BX7 -X0*X4 ZR X7,VAT4 IF END OF OPTIONAL PARAMETERS SB5 X7-1RZ ZR B5,VAT3 IF *Z* PARAMETER SB5 X7-1RX ZR B5,VAT2 IF *X* PARAMETER SB5 X7-1RR NZ B5,ABT IF NOT A LEGAL OPTION SB2 OVCR RESET COMMAND EQ VAT1 CHECK NEXT OPTION VAT2 SA6 OVWF SET *X* OPTION FLAG VAT3 SB3 B3-1 DECREMENT OPTION COUNT EQ VAT1 PROCESS NEXT OPTION VAT4 LT B3,ABT IF INCORRECT OPTION COMBINATION EQ VATX RETURN POL SPACE 4,15 ** POL - PROCESS OPTION LIST. * * CRACKS THE COMMAND OPTIONAL ARGUMENTS * AND EXECUTES THE ARGUMENT PROCESSOR DEFINED FOR * THE COMMAND. * * ERROR TO *ABT* IF ARGUMENT ERROR. * * USES X - 1, 2, 4. * A - 1, 4. * B - 4, 5, 7. * * CALLS ARG, IRJ, RSR, SVR. * * NOTE THE ARGUMENT PROCESSOR SUBROUTINES MUST NOT * DESTROY (B4), (A3), OR (X3). POL SUBR ENTRY/EXIT SA4 CSOC CHECK OPTION LIST PARAMETER COUNT ZR X4,POLX IF NULL LIST, RETURN SA1 B2+TACW GET ARGUMENT CONTROL WORD ZR X1,POL1 IF NO ARGUMENTS ALLOWED * PROCESS ARGUMENT LIST. RJ SVR SAVE RESERVED REGISTERS SB4 X4 SET ARGUMENT COUNT SB5 X1 SET ARGUMENT TABLE ADDRESS SA4 TOPS READ FIRST ARGUMENT RJ ARG CRACK ARGUMENT LIST RJ RSR RESTORE RESERVED REGISTERS NZ X1,POL1 IF ERROR IN ARGUMENT LIST * EXECUTE ARGUMENT PROCESSOR. SA1 B2+TACW GET ARGUMENT CONTROL WORD AX1 18 SB7 X1 SET PROCESSOR ADDRESS ZR B7,POLX IF NO PROCESSOR DEFINED RJ IRJ EXECUTE PROCESSOR EQ POLX RETURN * PROCESS ARGUMENT ERROR. POL1 SX2 =C+ INCORRECT */* OPTION.+ EQ ABT ABORT SPACE 4,10 * *CLEAR*, *OUT*, *OVWRITE*, *RETURN* AND *UNLOAD* * COMMAND ARGUMENT TABLE. TOARG BSS 0 ARGUMENT TABLE FOR *COMCARG* OP ARG OPARG,OPARG ARG TSARG SPACE 4,10 * *SETFS* COMMAND ARGUMENT TABLE. TSARG BSS 0 FS ARG FLST,FLST ARG MFILES SPACE 4,10 ** OVERLAID COMMON DECKS. *CALL COMCARG MFILES SPACE 4,10 ** TOPS - TABLE OF COMMAND */* OPTIONS. TOPS BSS 0 OPTIONS TABLE FWA TOPSE EQU TOPS+64 END OF TABLE ERRNG RFL=-TOPSE PRESET OVERFLOWS BUFFERS. END