CATLIST 
          IDENT  CATLIST,I,PRS
*COMMENT  CATLIST - CATALOG PERMANENT FILES.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          ABS 
          ENTRY  CATLIST
          ENTRY  RFL= 
          ENTRY  SSM= 
          SYSCOM B1 
          SST 
          TITLE  CATLIST - CATALOG PERMANENT FILES. 
          SPACE  4,10 
***       CATLIST - CATALOG PERMANENT FILE. 
*         J. L. WARDELL.     71/01/25.
*         W. B. CHAPIN.      79/01/31.
*         P. C. SMITH.       88/01/22.
          SPACE  4,10 
*         CATLIST IS A UTILITY WHICH ENABLES A USER TO INTERROGATE
*         THE PERMANENT FILE SYSTEM.
          SPACE  4,10 
***       CATLIST (DN,EF,FN,L,LO,NA,PN,R,RS,TY,UN,WB) 
* 
*         KEYWORD OPTION     DESCRIPTION
* 
*         DN     DEVICE      LIST FILES THAT RESIDE ON THIS DEVICE
*                NUMBER      NUMBER.
* 
*         EF     FILENAME/FILENAME/.../FILENAME 
*                            EXCLUDED PERMANENT FILE NAME.  THIS
*                            PARAMETER EXCLUDES FROM LISTING THESE
*                            PERMANENT FILES. 
* 
*                            AN ASTERISK (*) PRESENT IN A FILE NAME 
*                            INDICATES THAT A SET OF FILES IS TO BE 
*                            EXCLUDED.  FOR EXAMPLE, EF=***OPL WILL 
*                            EXCLUDE ALL THE FILES WITH SIX CHARACTER 
*                            FILE NAMES THAT END IN *OPL*; EF=M****** 
*                            WILL EXCLUDE ALL THE FILES WITH FILE 
*                            NAMES THAT START WITH THE LETTER *M*.
* 
*                            MULTIPLE FILE NAMES MAY BE SPECIFIED,
*                            SEPARATED BY SLASHES; FOR EXAMPLE, 
*                            EF=A******/B******/C****** WILL EXCLUDE
*                            ALL THE FILES WITH NAMES THAT BEGIN WITH 
*                            THE LETTERS *A*, *B* OR *C*. 
* 
*                            THE *EF* PARAMETER MAY BE SPECIFIED
*                            TOGETHER WITH THE *FN* PARAMETER; FOR
*                            EXAMPLE, FN=AB*****,EF=ABC**** WILL LIST 
*                            INFORMATION ABOUT ALL FILES WITH NAMES 
*                            THAT START WITH THE LETTERS *AB*, EXCEPT 
*                            FOR THOSE FILES WITH NAMES THAT START
*                            WITH THE LETTERS *ABC*.
* 
*                            THIS PARAMETER IS NOT ALLOWED WHEN 
*                            LISTING PERMIT INFORMATION (LO=FP, 
*                            LO=P), NOR WHEN LISTING SECURITY ACCESS
*                            CATEGORIES (LO=X). 
* 
*         FN     FILENAME/FILENAME/.../FILENAME 
*                            PERMANENT FILE NAME.  THIS PARAMETER 
*                            SPECIFIES THAT CATALOG INFORMATION IS
*                            DESIRED ONLY FOR THESE PERMANENT FILES.
* 
*                            AN ASTERISK (*) PRESENT IN A FILE NAME 
*                            INDICATES THAT A SET OF FILES IS TO BE 
*                            LISTED.  FOR EXAMPLE, FN=***OPL WILL 
*                            LIST ALL THE FILES WITH SIX CHARACTER
*                            FILE NAMES THAT END IN *OPL*; FN=M****** 
*                            WILL LIST ALL THE FILES WITH FILE NAMES
*                            THAT START WITH THE LETTER *M*.
* 
*                            MULTIPLE FILE NAMES MAY BE SPECIFIED,
*                            SEPARATED BY SLASHES; FOR EXAMPLE, 
*                            FN=A******/B******/C****** WILL LIST ALL 
*                            THE FILES WITH NAMES THAT BEGIN WITH THE 
*                            LETTERS *A*, *B* OR *C*. 
* 
*                            THE *FN* PARAMETER MAY BE SPECIFIED
*                            TOGETHER WITH THE *EF* PARAMETER; FOR
*                            EXAMPLE, FN=AB*****,EF=ABC**** WILL LIST 
*                            INFORMATION ABOUT ALL FILES WITH NAMES 
*                            THAT START WITH THE LETTERS *AB*, EXCEPT 
*                            FOR THOSE FILES WITH NAMES THAT START
*                            WITH THE LETTERS *ABC*.
* 
*                            IF A SINGLE FILE NAME WITH NO ASTERISK 
*                            (*) CHARACTERS IS SPECIFIED TOGETHER 
*                            WITH *LO=0*, A MESSAGE (*FN FOUND.*) 
*                            INDICATES WHETHER OR NOT THE SPECIFIED 
*                            FILE IS FOUND IN THE SPECIFIED CATALOG.
*                            IF A SUCH A FILE NAME IS SPECIFIED 
*                            TOGETHER WITH *LO=P* AND *UN=USERNAME*,
*                            A MESSAGE (*USERNAME FOUND.*) INDICATES
*                            WHETHER OR NOT PERMISSION TO ACCESS THAT 
*                            FILE HAS BEEN GRANTED TO THAT USER NAME. 
* 
*                            THIS PARAMETER IS REQUIRED WHEN LISTING
*                            PERMIT INFORMATION (*LO=FP*, *LO=P*),
*                            AND WHEN LISTING SECURITY ACCESS 
*                            CATEGORIES (*LO=X*).  WHEN *LO=FP*,
*                            *LO=P* OR *LO=X* IS SPECIFIED, ONLY A
*                            SINGLE FILE NAME MAY BE SPECIFIED, AND 
*                            NO ASTERISK (*) CHARACTERS MAY BE
*                            SPECIFIED. 
* 
*         L      LFN         OUTPUT FILE NAME.  THIS IS THE NAME
*                            OF THE FILE TO WHICH THE CATLIST 
*                            INFORMATION IS WRITTEN.
* 
*         LO                 LIST OPTION
*                F           SELECT FULL LISTING OF CATALOG ENTRY.
*                            IF THE FILES BEING CATALOGED RESIDE IN 
*                            AN ALTERNATE CATALOG, ONLY PERTINENT 
*                            ACCESS INFORMATION IS LISTED.
* 
*                FP          SELECT FULL LISTING OF FILES PERMIT ENTRIES
*                            THIS OPTION REQUIRES THAT A FILE NAME
*                            BE SPECIFIED (FN PARAMETER). ALL PERTINENT 
*                            PERMISSION INFORMATION IS LISTED.  IF
*                            THE USER NAME IS SPECIFIED (UN 
*                            PARAMETER), ONLY PERMISSION DATA 
*                            FOR THAT USER AND THE SPECIFIED
*                            FILE IS LISTED.
*                            THE USER NAMES LISTED HERE WILL
*                            INCLUDE: 
*                                  THOSE THAT HAVE BEEN GRANTED 
*                                  EXPLICIT PERMISSION. 
*                                  THOSE THAT HAVE ACCESSED THE 
*                                  FILE BECAUSE OF IMPLICIT 
*                                  PERMISSION (SEMI-PRIVATE FILES 
*                                  ONLY). 
* 
*                P           SELECT SHORT LIST OF PERMIT ENTRIES. 
*                            THIS OPTION IS SIMILAR TO THE *FP* 
*                            OPTION EXCEPT THAT ONLY USER 
*                            NUMBERS ARE LISTED FOR THE PERMIT
*                            ENTRIES. 
* 
*                X           SELECT FULL LISTING OF CATALOG ENTRY,
*                            INCLUDING THE FILE ACCESS CATEGORY SET.
*                            THIS OPTION REQUIRES THAT A FILE NAME
*                            BE SPECIFIED (FN PARAMETER).  THIS OPTION
*                            IS NOT VALID FOR USE ON ALTERNATE USER 
*                            CATALOGS.
* 
*                            FOR SECURITY REASONS, THE SECURITY 
*                            ACCESS CATEGORIES ASSOCIATED WITH A FILE 
*                            WILL NOT BE LISTED UNLESS YOUR CURRENT 
*                            JOB SECURITY ACCESS LEVEL IS AT LEAST AS 
*                            HIGH AS THE CURRENT PERMANENT FILE 
*                            SECURITY ACCESS LEVEL OF THE FILE. 
* 
*                0           SELECT SHORT LIST OF CATALOG ENTRIES.
*                            THIS LISTS ONLY THE FILE NAMES FOR THE 
*                            SPECIFIED CATALOG ENTRIES. 
* 
*         NA     NO ABORT    IF SET, JOB WILL NOT BE ABORTED IF AN
*                            ERROR IS ENCOUNTERED.  *NA* CANNOT BE
*                            SPECIFIED TOGETHER WITH *WB*.
* 
*         PN     PACKNAM     REMOVABLE PACK NAME.  THIS PARAMETER 
*                            SPECIFIES THE CATALOG OF THIS DEVICE 
*                            IS DESIRED INSTEAD OF THE USERS
*                            NORMAL CATALOG.  THIS WILL OVERRIDE
*                            ANY PACK NAME SPECIFIED BY THE PACKNAM 
*                            COMMAND.  IF OMITTED THE DEVICE
*                            CATALOGED IS EITHER THAT SPECIFIED BY
*                            THE LAST PACKNAM COMMAND OR THE
*                            USER MASTER CATALOG IF NO PACKNAM
*                            REQUEST WAS ISSUED.
* 
*         R      RESIDENCE   DEVICE TYPE REQUESTED. 
* 
*         RS                 RESIDENCE OF PERMANENT FILES TO BE 
*                            INCLUDED.  SPECIFY ONE OR MORE OR THE
*                            FOLLOWING CHARACTERS-
* 
*                C           SELECT LISTING OF PERMANENT FILES WHICH
*                            RESIDE ON CARTRIDGE.  THESE FILES MAY
*                            ALSO RESIDE ON OTHER MEDIA (DISK AND/OR
*                            TAPE). 
* 
*                D           SELECT LISTING OF PERMANENT FILES WHICH
*                            RESIDE ON DISK.  THESE FILES MAY ALSO
*                            RESIDE ON OTHER MEDIA (CARTRIDGE AND/OR
*                            TAPE). 
* 
*                T           SELECT LISTING OF PERMANENT FILES WHICH
*                            RESIDE ON TAPE.  THESE FILES MAY ALSO
*                            RESIDE ON OTHER MEDIA (DISK AND/OR 
*                            CARTRIDGE).
* 
*         TY                 FILE TYPE.  SPECIFY ONE OR MORE OF THE 
*                            FOLLOWING CHARACTERS-
*                A           SELECT LISTING OF ALL FILE TYPES.
* 
*                D           SELECT LISTING OF DIRECT ACCESS FILES. 
* 
*                I           SELECT LISTING OF INDIRECT ACCESS FILES. 
* 
*         UN     USERNUM     USER NAME.  THIS PARAMETER HAS 
*                            TWO PURPOSES:  
*                                   1.  FOR L0=F AND L0=0:  
*                                       INDICATES THE ALTERNATE 
*                                       CATALOG FOR WHICH THE USER
*                                       DESIRES INFORMATION.
*                                       FILE WILL BE LISTED IF
*                                       A. USER IS EXPLICITLY PERMITTED 
*                                          TO FILE. 
*                                       B. FILE IS A SEMI-PRIVATE OR
*                                          LIBRARY TYPE FILE AND NO 
*                                          NO PASSWORD EXISTS FOR FILE. 
*                                   2.  FOR L0=FP AND L0=P: 
*                                        INDICATES THE SPECIFIC USER
*                                        FOR WHICH PERMIT INFORMATION 
*                                        IS DESIRED.
* 
*         WB     WAIT BUSY   IF SET, JOB WILL WAIT FOR A PACK MOUNT,
*                            BUT WILL ABORT ON ALL OTHER ERRORS.  *WB*
*                            CANNOT BE SPECIFIED TOGETHER WITH *NA*.
          SPACE  4,10 
***       ASSUMED PARAMETERS. 
*         DN=0
*         EF=0
*         FN=*******
*         L=OUTPUT
*         LO=0
*         NA=0
*         PN=0
*         R=0 
*         RS=0
*         RSM=7 
*         TY=0
*         UN=0
*         WB=0
          SPACE  4,15 
***       DAYFILE MESSAGES. 
* 
*         *CATLIST COMPLETE.* = NORMAL TERMINATION WITHOUT ERRORS.
* 
*         *EMPTY CATALOG.* = NO ENTRIES EXIST FOR OPTIONS SELECTED. 
* 
*         *FILE NAME MISSING.* = *LO=P*, *LO=FP* OR *LO=X* OPTION WAS 
*                SELECTED BUT NO FILE NAME WAS SPECIFIED. 
* 
*         *INCORRECT LIST OPTION.* = THE OPTION SELECTED IS NOT ALLOWED.
* 
*         *INCORRECT PARAMETER.* = INCORRECT PARAMETER OR COMBINATION 
*                OF PARAMETERS WAS SPECIFIED. 
* 
*         *NO FILES FOUND.* = NO FILES EXIST WHICH MATCH THE VALUES 
*                SPECIFIED FOR THE *FN* AND/OR THE *EF* PARAMETERS. 
* 
*         *NO PERMITS.* = NO PERMIT ENTRIES EXIST FOR THE 
*                SPECIFIED FILE.
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMCMAC 
*CALL     COMCCMD 
*CALL     COMSMLS 
*CALL     COMSPFM 
*CALL     COMSPRD 
*CALL     COMSSFM 
          SPACE  4,10 
**        ASSEMBLY CONSTANTS. 
  
  
 OBFL     EQU    1001B       OUTPUT BUFFER LENGTH 
 IBFL     EQU    701B        INPUT BUFFER LENGTH
 SBFL     EQU    300B        INITIAL SORT BUFFER LENGTH 
 FLIN     EQU    1000B       FL INCREMENT FOR SORT BUFFER 
 LMDL     EQU    99999       TERMINAL - LINE MODE DEFAULT SCREEN SIZE 
 MSBL     EQU    SBFL+5*FLIN MAXIMUM SORT BUFFER LENGTH 
 SMDL     EQU    24          TERMINAL - SCREEN MODE DEFAULT SCREEN SIZE 
 SSM=     EQU    0           SECURE SYSTEM MEMORY 
          TITLE  DATA LOCATIONS.
          ORG    110B 
          SPACE  4,10 
**        FETS. 
  
  
 I        BSS    0
 INPUT    FILEB  IBUF,IBFL,FET=CFLM 
 .I       BSS    0
          ORG    I+1         SUPPRESS ADDRESS ON *PFM* ERRORS 
          VFD    13/0,1/1,22/0,6/CFLM-5,18/IBUF 
          ORG    .I 
  
 O        BSS    0
 OUTPUT   FILEB  OBUF,OBFL,EPR,FET=10B
  
  
**        DATA LOCATIONS. 
  
  
 BL       CON    0           BUFFER LENGTH
 BLK      CON    1L          BLANK LINE 
 BO       CON    0,0         BUFFER OFFSETS FOR THIS PAGE AND NEXT PAGE 
 BOVF     CON    0           BUFFER OVERFLOW FLAG 
 DN       CON    0           DEVICE NUMBER
 DT       CON    0           DEVICE TYPE
 ERRF     CON    0           *PFM* ERROR FLAG 
 FILENAM  CON    0           FILE NAME (ONLY ONE FILE SPECIFIED)
 FLNM     BSS    0           SELECTION FILE NAME LIST 
          CON    7L*******   DEFAULT FILE NAME SELECTION MASK 
          BSSZ   35 
 EFNM     BSS    0           EXCLUSION FILE NAME LIST 
          BSSZ   36 
 FCDD     CON    0           FILE COUNT (DIRECT ACCESS DISK FILES)
 FCID     CON    0           FILE COUNT (INDIRECT ACCESS DISK FILES)
 FCDA     CON    0           FILE COUNT (DAPF-S ON ALTERNATE STORAGE) 
 FCIA     CON    0           FILE COUNT (IAPF-S ON ALTERNATE STORAGE) 
 FLN      CON    0           ENTRY NUMBER (DISPLAY) 
 FSDD     CON    0           FILE SIZE (DIRECT ACCESS DISK FILES) 
 FSID     CON    0           FILE SIZE (INDIRECT ACCESS DISK FILES) 
 FSDA     CON    0           FILE SIZE (DAPF-S ON ALTERNATE STORAGE)
 FSIA     CON    0           FILE SIZE (IAPF-S ON ALTERNATE STORAGE)
 JT       CON    0           JOB TYPE 
 LL       CON    0           LINE LIMIT-1 (NUMBER OF LINES ON A PAGE) 
 LN       CON    99999       LINE NUMBER
 LO       CON    0           LIST OPTION
 MODE     CON    0           LIST MODE
 NABT     CON    0           NO ABORT FLAG
 NO       CON    0           ENTRY NUMBER 
 NZ       CON    1           NONZERO VALUE
 PACK     CON    0           PACKNAME 
 PD       CON    0           JOB PRINT DENSITY
 PG       CON    0           PAGE NUMBER
 RES      CON    0           RESIDENCE
 RS       CON    0           RESIDENCE OF FILE SELECTION
 RSM      CON    7           RESIDENCE SELECTION MASK 
 SSM      CON    0           SYSTEM SECURITY MODE 
 TP       CON    0           TITLE PAGE FLAG FOR TERMINAL 
 TY       CON    0           FILE TYPE SELECTION
 TYM      CON    0           FILE TYPE SELECTION MASK 
 USER     CON    0           USER NAME OF CALLER
 USERNUM  CON    0           SELECTED USER NAME 
 WBSY     CON    0           WAIT BUSY FLAG 
  
  
**        SORT BUFFER CONTROL WORDS.
  
 MBS      CON    MSBL        MAXIMUM SORT BUFFER SIZE 
 CBS      CON    SBFL        CURRENT SORT BUFFER SIZE 
 CFL      CON    RFL=        CURRENT FL 
          TITLE  MAIN PROGRAM.
 CTL      SPACE  4,10 
**        MAIN ROUTINE. 
  
  
 CTL      BSS    0           ENTRY
          RJ     FCB         FILL CATALOG BUFFER
          NG     X6,CTL5     IF ERROR RETURN STATUS 
          SA1    CTLA 
          NZ     X1,CTL9     IF SELECTED FILE LIST
          ZR     X6,CTL7     IF NO CATALOGS 
          RJ     CSU         CHECK FOR SPECIAL USER 
 CTL1     SA2    MODE        PROCESS LIST OPTION
          SA2    X2+TLOT
          SB2    X2 
          JP     B2          CALL PROCESSOR 
  
*         RETURN HERE ON NORMAL COMPLETION. 
  
 CTL3     SA1    DT 
          ZR     X1,CTL4     IF TERMINAL FILE 
          MESSAGE (=C* CATLIST COMPLETE.*),3
          EQ     CTL5 
  
 CTL4     MESSAGE (=C**),1   CLEAR MESSAGE BUFFER 
  
*         RETURN HERE ON ERRORS.
  
 CTL5     WRITER O           FLUSH OUTPUT 
          EQ     END         ENDRUN/ABORT 
  
*         NO CATALOG/PERMIT ENTRIES FOUND.  ISSUE APPROPRIATE MESSAGE 
*         TO DAYFILE OR (IF TERMINAL OUTPUT FILE) TO OUTPUT FILE. 
  
 CTL7     SA2    CTLB        MESSAGE ADDRESS
          SA1    DT 
          ZR     X1,CTL8     IF TERMINAL FILE 
          MESSAGE  X2,3      ISSUE MESSAGE TO DAYFILE 
          EQ     END         ENDRUN/ABORT 
  
 CTL8     WRITEH O,X2,2      WRITE MESSAGE TO OUTPUT
          EQ     CTL4        FLUSH OUTPUT AND END 
  
 CTL9     RJ     SFN         SPACE FILL ENTRY 
          LX6    54 
          SA6    A1 
          SA1    DT 
          ZR     X1,CTL10    IF TERMINAL FILE 
          MESSAGE CTLA,3     *(ENTRY) FOUND.* 
          EQ     END         ENDRUN 
  
 CTL10    WRITEC O,CTLA      *(ENTRY) FOUND*
          EQ     CTL4        FLUSH OUTPUT AND END 
  
 CTLA     CON    0           SELECTED ENTRY 
          CON    6LFOUND. 
  
 CTLB     CON    CTLC 
 CTLC     DATA   C* EMPTY CATALOG.* 
 CTLD     DATA   C* NO PERMITS.*
 CTLE     DATA   C* NO FILES FOUND.*
  
  
 TLOT     BSS    0           TABLE OF LIST OPTIONS
          LOC    0
          CON    SSL         SHORT SORTED FILE LIST 
          CON    FFL         FULL FILE LIST 
          CON    FLC         FILE LIST AND CATEGORY SET 
          CON    SSL         SHORT SORTED ALTERNATE FILE LIST 
          CON    FAC         FULL ALTERNATE FILE LIST 
          CON    SPD         SHORT PERMIT DATA LIST 
          CON    FPD         FULL LIST OF PERMIT DATA 
          LOC    *O 
 END      SPACE  4,10 
**        END - END PROCESSING. 
* 
*         USES   X - 1. 
*                A - 1. 
* 
*         MACROS ABORT, ENDRUN. 
  
  
 END      BSS    0           ENTRY
          SA1    ERRF 
          ZR     X1,END1     IF NO *PFM* ERROR OCCURRED 
          SA1    NABT 
          NZ     X1,END1     IF *NA* SPECIFIED RATHER THAN *WB* 
          ABORT 
  
 END1     ENDRUN
          TITLE  PROCESSING ROUTINES. 
 FAC      SPACE  4,10 
**        FAC - FULL ALTERNATE CATALOG LIST.
  
  
 FAC      BSS    0           ENTRY
 FAC1     READW  I,CBUF,NWCE READ NEXT CATALOG ENTRY
          NG     X1,FAC2     IF END OF BUFFER 
          RJ     CRS         CHECK FILE RESIDENCE AND TYPE
          ZR     X1,FAC1     IF FILE NOT TO BE LISTED 
          SA3    CBUF        GET FILENAME 
          SB2    FLNM        CHECK INCLUSION LIST 
          RJ     CFN
          NZ     X6,FAC1     IF FILE NOT IN INCLUSION LIST
          SB2    EFNM        CHECK EXCLUSION LIST 
          RJ     CFN
          ZR     X6,FAC1     IF FILE IN EXCLUSION LIST
          RJ     AEN         ADVANCE ENTRY NUMBER 
          RJ     AFS         ACCUMULATE FILE STATISTICS 
          SB2    /COMCFCE/CHDRN+1  ADVANCE LINE COUNT 
          RJ     ALN
          SA1    NO 
          SA3    SSM
          EDCAT  CBUF,LBUF,X1,1,,X3,1 
          WRITEH O,LBUF,FCELL          FIRST LINE 
          WRITEH O,LBUF+FCELL,FCELL    SECOND LINE
          WRITEH O,LBUF+2*FCELL,FCELA  THIRD LINE 
          WRITEH O,LBUF+3*FCELL,FCELB  FOURTH LINE
          WRITEC O,BLK
          EQ     FAC1        LOOP FOR NEXT CATALOG ENTRY
  
 FAC2     RJ     FCB         FILL CATALOG BUFFER
          NG     X6,CTL5     IF ERROR RETURN STATUS 
          NZ     X6,FAC1     IF MORE CATALOGS 
          SA1    NO          NUMBER OF ENTRIES
          ZR     X1,CTL7     IF NO CATALOGS 
          RJ     PAS         PRINT ACCUMULATED STATISTICS 
          EQ     CTL3        COMPLETE PROCESSING
 FFL      SPACE  4,10 
**        FFL - FULL LISTING. 
  
  
 FFL      BSS    0           ENTRY
 FFL1     READW  I,CBUF,NWCE READ NEXT CATALOG ENTRY
          NG     X1,FFL2     IF END OF BUFFER 
          RJ     CRS         CHECK FILE RESIDENCE AND TYPE
          ZR     X1,FFL1     IF FILE NOT TO BE LISTED 
          SA3    CBUF        GET FILENAME 
          SB2    FLNM        CHECK INCLUSION LIST 
          RJ     CFN
          NZ     X6,FFL1     IF FILE NOT IN INCLUSION LIST
          SB2    EFNM        CHECK EXCLUSION LIST 
          RJ     CFN
          ZR     X6,FFL1     IF FILE IN EXCLUSION LIST
          RJ     AEN         ADVANCE ENTRY NUMBER 
          RJ     AFS         ACCUMULATE FILE STATISTICS 
          SB2    /COMCFCE/CHDRN+1  ADVANCE LINE COUNT 
          RJ     ALN
          SA1    NO 
          SA3    SSM
          EDCAT  CBUF,LBUF,X1,1,,X3 
          WRITEH O,LBUF,FCELL          FIRST LINE 
          WRITEH O,LBUF+FCELL,FCELL    SECOND LINE
          WRITEH O,LBUF+2*FCELL,FCELA  THIRD LINE 
          WRITEH O,LBUF+3*FCELL,FCELB  FOURTH LINE
          WRITEC O,BLK
          EQ     FFL1        PROCESS NEXT CATALOG ENTRY 
  
 FFL2     RJ     FCB         FILL CATALOG BUFFER
          NG     X6,CTL5     IF ERROR RETURN STATUS 
          NZ     X6,FFL1     IF MORE CATALOGS 
          SA1    NO          NUMBER OF ENTRIES
          ZR     X1,CTL7     IF NO CATALOGS 
          RJ     PAS         PRINT ACCUMULATED STATISTICS 
          EQ     CTL3        COMPLETE PROCESSING
 FLC      SPACE  4,10 
**        FLC - FILE LIST AND CATEGORY SET. 
  
  
 FLC      BSS    0           ENTRY
          READW  I,CBUF,NWCE
          RJ     AEN         ADVANCE ENTRY NUMBER 
          SB2    /COMCFCE/CHDRN+1  ADVANCE LINE COUNT 
          RJ     ALN
          SA1    NO 
          SA3    SSM
          EDCAT  CBUF,LBUF,X1,1,,X3 
          WRITEH O,LBUF,FCELL          FIRST LINE 
          WRITEH O,LBUF+FCELL,FCELL    SECOND LINE
          WRITEH O,LBUF+2*FCELL,FCELA  THIRD LINE 
          WRITEH O,LBUF+3*FCELL,FCELB  FOURTH LINE
          WRITEC O,BLK
          RJ     LCS         LIST CATEGORY SET FOR FILE 
          EQ     CTL3        COMPLETE PROCESSING
 FPD      SPACE  4,10 
**        FPD - FULL LIST OF PERMIT DATA. 
  
  
 FPD      BSS    0           ENTRY
 FPD1     READW  I,CBUF,NWPE READ NEXT PERMIT ENTRY 
          NG     X1,FPD4     IF END OF BUFFER 
          RJ     AEN         ADVANCE ENTRY NUMBER 
          SB2    B1          ADVANCE LINE NUMBER BY 1 
          RJ     ALN
          MX0    42          PICK USER NAME 
          SA5    CBUF 
          BX1    X0*X5
          RJ     SFN         SPACE FILL NAME
          SA1    FLN         SET USER NAME COUNT
          MX0    30 
          LX1    30 
          BX1    X0*X1       PICK FIRST PART OF USER NAME 
          LX6    24 
          BX7    -X0*X6 
          BX7    X7+X1
          SA7    LBUF 
          SA5    CBUF+1      SET USER PERMISSION
          MX0    4
          LX0    40 
          BX1    X0*X5
          LX1    24 
          SA1    /COMCFCE/MDTB+X1 
          LX1    35-59
          MX0    18 
          BX6    X0*X6       PICK LAST 3 CHARACTERS OF USER NAME
          BX1    -X0*X1      MERGE WITH PERMISSION
          BX6    X6+X1
          SA6    LBUF+1 
          MX0    18          CONVERT ACCESS COUNT 
          BX1    X0*X5
          LX1    18 
          RJ     CDD         CONVERT TO DECIMAL 
          MX0    1           CHECK PERMIT TYPE
          LX0    41 
          BX1    X0*X5
          NZ     X1,FPD2     IF ACCOUNTING PERMIT 
          SX1    1R*&1R      SET EXPLICIT PERMIT FLAG 
          LX1    54 
          BX6    X1-X6
 FPD2     SA2    FPDA 
          SA6    A2+B1       SAVE ACCESS COUNT
          ERRNZ  FPDB-FPDA-1 CODE DEPENDS ON VALUE
          BX6    X2 
          MX0    1           CHECK IF EXPIRATION DATE IS PRESENT
          LX0    42 
          BX1    X0*X5
          ZR     X1,FPD3     IF NO EXPIRATION DATE
          SA1    CBUF 
          MX0    -18
          BX1    -X0*X1      PICK UP EXPIRATION DATE
          ZR     X1,FPD3     IF NONEXPIRING PERMIT
          EDATE  X1          CONVERT DATE 
          LX6    -6 
 FPD3     MX0    6           SWITCH AROUND FIRST CHARACTERS 
          SA4    FPDB 
          BX2    X0*X6
          BX3    X0*X4
          BX6    -X0*X6 
          BX7    -X0*X4 
          BX6    X3+X6
          BX7    X2+X7
          SA6    LBUF+2      SET PERMIT TYPE/EXPIRATION DATE
          SA7    LBUF+3      SET ACCESS COUNT 
          BX3    X5          CONVERT DATE AND TIME
          RJ     /COMCFCE/CDT  CONVERT TIME AND DATE
          SA6    LBUF+4 
          BX7    X5 
          SA7    LBUF+5 
          WRITEC O,LBUF 
          EQ     FPD1        LIST NEXT PERMIT 
  
*         READ NEXT BUFFER OF PERMITS.
  
 FPD4     RJ     FCB         FILL BUFFER
          NG     X6,CTL5     IF ERROR 
          ZR     X6,CTL3     IF END OF PERMITS
          EQ     FPD1        LIST NEXT PERMIT 
  
 FPDA     DATA   10H            BLANK LINE
 FPDB     CON    0
 SPD      SPACE  4,10 
**        SPD - SHORT LIST OF PERMIT DATA.
  
  
 SPD      BSS    0           ENTRY
 SPD1     READW  I,CBUF,NWPE READ NEXT PERMIT ENTRY 
          NG     X1,SPD2     IF BUFFER EMPTY
          RJ     GSL         GENERATE ENTRY FOR SHORT LIST
          EQ     SPD1        PROCESS NEXT PERMIT ENTRY
  
 SPD2     RJ     FCB         FILL BUFFER
          NG     X6,CTL5     IF ERROR 
          NZ     X6,SPD1     IF NOT END OF DATA 
          WRITEC O,LBUF 
          SA1    NO          SET NUMBER OF USERS
          SX6    X1-1 
          NZ     X6,SPD3     IF MORE THAN ONE USER FOUND
          SA2    SPDB        CHANGE SYNTAX OF MESSAGE 
          BX7    X2 
          SA7    SPDA+1 
 SPD3     RJ     CDD         CONVERT TO DECIMAL 
          SA6    SPDA 
          WRITEC O,BLK
          WRITEC O,SPDA 
          EQ     CTL3        COMPLETE PROCESSING
  
 SPDA     CON    0           NUMBER OF USERS
          DATA   C* USERS*
  
 SPDB     DATA   C* USER* 
 SSL      SPACE  4,15 
**        SSL - SHORT SORTED LIST.
* 
*         USES   X - 0, 1, 2, 3, 6, 7.
*                A - 0, 1, 2, 3, 6, 7.
*                B - 2, 3, 7. 
* 
*         CALLS  AFS, ALN, CFN, DSB, FCB, GNI, GSL, PAS, RQS, SNP,
*                SST=.
* 
*         MACROS READW, WRITEC, WRITEH. 
  
  
 SSL      BSS    0           ENTRY
 SSL1     SA0    B0          INITIALIZE BUFFER POINTER
 SSL2     READW  I,CBUF,NWCE
          PL     X1,SSL4     IF DATA READ 
          RJ     FCB         FILL CATALOG BUFFER
          NG     X6,SSL3     IF ERROR RETURN STATUS 
          NZ     X6,SSL2     IF BUFFER NOT EMPTY
 SSL3     BX6    X6-X6       CLEAR BUFFER OVERFLOW FLAG 
          SA6    BOVF 
          EQ     SSL7        PROCESS SORT OF BUFFER 
  
 SSL4     RJ     CRS         CHECK FILE RESIDENCE AND TYPE
          ZR     X1,SSL2     IF FILE NOT TO BE LISTED 
          SA3    CBUF        GET FILENAME 
          SB2    FLNM        CHECK INCLUSION LIST 
          RJ     CFN
          NZ     X6,SSL2     IF FILE NOT IN INCLUSION LIST
          SB2    EFNM        CHECK EXCLUSION LIST 
          RJ     CFN
          ZR     X6,SSL2     IF FILE IN EXCLUSION LIST
          RJ     AFS         ACCUMULATE STATISTICS (GET TYPE/RESIDENCE) 
          SA2    CBUF        GET FILE NAME
          SA3    CBUF+FCEC   GET ERROR CODE 
          MX0    42 
          LX3    18 
          MX6    -3 
          BX2    X0*X2
          LX1    57-0        POSITION FILE TYPE FLAG (NONZERO IF DAPF)
          BX6    -X6*X3      ERROR CODE 
          LX2    -6          POSITION FILE NAME 
          BX6    X6+X1       MERGE IN PF TYPE 
          ZR     B2,SSL6     IF FILE DISK RESIDENT
          SX1    10B         SET *FILE NOT DISK RESIDENT* FLAG
          BX6    X6+X1
 SSL6     BX6    X6+X2       MERGE IN FILE NAME 
          SA6    A0+SBUF
          SA1    CBS         GET CURRENT BUFFER MAXIMUM 
          SA0    A0+B1
          SX3    A0+B1
          IX2    X1-X3
          PL     X2,SSL2     IF BUFFER NOT FULL 
          RJ     RQS         REQUEST MORE BUFFER SPACE
          PL     X1,SSL2     IF MORE AVAILABLE
          SA3    BOVF        CHECK IF MESSAGE NEEDED
          NZ     X3,SSL7     IF MESSAGE PREVIOUSLY OUTPUT 
          MX6    1           SET BUFFER OVERFLOW FLAG 
          SB2    B1 
          SA6    BOVF 
          RJ     ALN         ADVANCE LINE NUMBER
          WRITEC O,SSLD      OUTPUT WARNING MESSAGE 
          WRITEC O,BLK
  
*         SORT DIRECT AND INDIRECT FILES ALPHABETICALLY.
  
 SSL7     SX1    A0          NUMBER OF ENTRIES
          ZR     X1,CTL7     IF NO CATALOGS 
          SB2    B1 
          RJ     ALN         ADVANCE LINE NUMBER
          SX1    A0 
          SB7    SBUF        ADDRESS OF BUFFER
          RJ     SST=        SORT ENTRIES 
          SB2    B0          DETERMINE COUNT OF EACH TYPE 
 SSL8     SA1    SBUF+B2
          LX1    59-57
          NG     X1,SSL9     IF DIRECT ACCESS FILE
          SB2    B2+B1
          SB3    A0-B2
          NZ     B3,SSL8     IF NOT END OF BUFFER 
 SSL9     SX6    B2          NUMBER OF INDIRECT ACCESS FILES
          SA6    SSLA 
          SX7    A0-B2       NUMBER OF DIRECT ACCESS FILES
          SA6    SSLC 
          SA7    SSLB 
  
*         LIST INDIRECT ACCESS FILES. 
  
          SA1    SSLA        GET COUNT OF INDIRECT ACCESS FILES 
          ZR     X1,SSL12    IF NO INDIRECT ACCESS FILES
          WRITEC O,BLK
          WRITEH O,SSLE,SSLEL 
          WRITEC O,BLK
          SB2    B1+B1
          RJ     ALN         ADVANCE LINE NUMBER
          SX7    8           SET LINE POSITION
          SA7    GSLA 
          SB2    B1+
          RJ     ALN
          SA1    SSLA        GET NUMBER OF INDIRECT FILES 
          RJ     SNP         SET NEXT PAGE
 SSL10    SA3    BL 
          SX6    X3-1 
          SA6    A3+
          NG     X6,SSL11    IF END OF ENTRIES
          RJ     GNI         GET NEXT ENTRY 
          SA3    BO          CURRENT BUFFER OFFSET
          IX1    X1+X3
          SA1    X1+SBUF     GET ACTUAL ENTRY 
          LX1    6
          BX6    X1 
          SA6    CBUF 
          RJ     GSL         GENERATE ENTRY FOR SHORT LIST
          EQ     SSL10       GET NEXT ENTRY 
  
 SSL11    WRITEC O,LBUF      LAST LINE OF INDIRECT ACCESS FILES 
          SA1    SSLA 
          RJ     DSB         DISPLAY SORT BREAK 
          SA1    SSLA 
          RJ     SNP         SET NEXT PAGE
          NZ     X1,SSL10    IF MORE FILES TO LIST
  
*         LIST DIRECT ACCESS FILES. 
  
 SSL12    SA1    SSLB 
          ZR     X1,SSL17    IF NO DIRECT ACCESS FILES
          SA1    SSLA        CHECK IF ANY INDIRECT ACCESS FILES 
          ZR     X1,SSL13    IF NO INDIRECT ACCESS FILES
          WRITEC O,BLK
          SB2    B1 
          RJ     ALN         ADVANCE LINE NUMBER
 SSL13    WRITEH O,SSLF,SSLFL 
          SB2    B1 
          RJ     ALN         ADVANCE LINE NUMBER
          SA1    LN          CHECK IF HEADER JUST PRINTED 
          SX2    3
          IX1    X2-X1
          ZR     X1,SSL14    IF HEADER JUST PRINTED 
          WRITEC O,BLK
          SB2    B1 
          RJ     ALN         ADVANCE LINE NUMBER
 SSL14    SX7    8           RESET LINE POSITION
          SA7    GSLA 
          SA1    SSLB 
          RJ     SNP         SET UP NEXT PAGE 
 SSL15    SA3    BL          DECREMENT NUMBER OF DIRECT FILES 
          SX6    X3-1 
          SA6    A3+
          NG     X6,SSL16    IF END OF ENTRIES
          RJ     GNI         GET NEXT ENTRY 
          SA2    SSLC        DETERMINE POSITION IN BUFFER 
          SA3    BO          GET CURRENT BUFFER OFFSET
          IX2    X2+X3
          SB2    SBUF+X2
          SA1    X1+B2       GET ACTUAL ENTRY 
          LX1    6
          BX6    X1 
          SA6    CBUF 
          RJ     GSL         GENERATE ENTRY FOR SHORT LIST
          EQ     SSL15       GET NEXT ENTRY 
  
 SSL16    WRITEC O,LBUF      LAST LINE
          SA1    SSLB 
          RJ     DSB         DISPLAY SORT BREAK 
          SA1    SSLB 
          RJ     SNP         SET NEXT PAGE
          NZ     X1,SSL15    IF MORE FILE NAMES TO LIST 
          SB2    B1+
          RJ     ALN
 SSL17    SA2    ERRF        CHECK ERROR FLAG 
          NZ     X2,SSL18    IF *PFM* ERROR 
          SA2    BOVF        CHECK OVERFLOW FLAG
          NZ     X2,SSL1     IF OVERFLOW OCCURRED (MORE FILES TO LIST)
 SSL18    WRITEC O,BLK
          RJ     PAS         PRINT ACCUMULATED STATISTICS 
          EQ     CTL3        CONTINUE PROCESSING
  
  
 SSLA     CON    0           NUMBER OF INDIRECT ACCESS FILES
 SSLB     CON    0           NUMBER OF DIRECT ACCESS FILES
 SSLC     CON    0           COUNT OF ENTRIES BEFORE DIRECT ACCESS FILE 
 SSLD     DATA   C* BUFFER OVERFLOW - ALL FILES LISTED BUT NOT SORTED.* 
 SSLE     DATA   C* INDIRECT ACCESS FILES*
 SSLEL    EQU    *-SSLE 
 SSLF     DATA   C* DIRECT ACCESS FILES*
 SSLFL    EQU    *-SSLF 
          TITLE  GENERAL SUBROUTINES. 
 AEN      SPACE  4,15 
**        AEN - ADVANCE ENTRY NUMBER. 
* 
*         ENTRY  (NO) = NUMBER OF FILES.
* 
*         EXIT   (NO) ADVANCED. 
*                (FLN) = ADVANCED FILE NUMBER IN DISPLAY CODE.
* 
*         USES   X - 0, 1, 6. 
*                A - 1, 6.
* 
*         CALLS  CDD. 
  
  
 AEN      SUBR               ENTRY/EXIT 
          SA1    NO          ADVANCE FILE NUMBER
          SX1    X1+B1
          BX6    X1 
          SA6    A1 
          RJ     CDD
          SX1    1R.         SET PERIOD 
          MX0    54 
          LX6    6
          BX6    X0*X6
          BX6    X1+X6
          SA6    FLN
          EQ     AENX        RETURN 
 AFS      SPACE  4,20 
**        AFS - ACCUMULATE FILE STATISTICS. 
* 
*         INCREMENT THE FILE COUNT AND TOTAL PRU-S FOR -
*                INDIRECT ACCESS FILES ON DISK. 
*                DIRECT ACCESS FILES ON DISK. 
*                IAPF-S ON ALTERNATE STORAGE. 
*                DAPF-S ON ALTERNATE STORAGE. 
* 
*         ENTRY  (CBUF) = CATALOG ENTRY.
* 
*         EXIT   COUNTERS UPDATED.
*                (X1) = 1 IF DIRECT ACCESS FILE.
*                     = 0 IF INDIRECT ACCESS FILE.
*                (B2) = 0 IF FILE ON DISK.
*                     = 1 IF FILE ON ALTERNATE STORAGE. 
* 
*         USES   X - 1, 2, 3, 6.
*                A - 1, 2, 3, 6.
*                B - 2. 
  
  
 AFS      SUBR               ENTRY/EXIT 
          SA1    CBUF+FCLF   GET LENGTH OF FILE 
          MX2    -24
          BX3    -X2*X1      GET TRACK POINTER
          AX3    12 
          LX1    24 
          BX6    -X2*X1 
          LX1    0-11-24+60  CHECK FILE TYPE
          MX2    -1 
          BX1    -X2*X1      (X1)=1 IF DIRECT, 0 IF INDIRECT
          ZR     X3,AFS2     IF FILE NOT ON DISK
          SB2    B0+         SET RESIDENCE TO DISK
          SA2    FSID        SET COUNTERS FOR INDIRECT ACCESS DISK FILE 
          SA3    FCID 
          ZR     X1,AFS1     IF INDIRECT ACCESS FILE
          SA2    FSDD        SET COUNTERS FOR DIRECT ACCESS DISK FILE 
          SA3    FCDD 
 AFS1     IX6    X6+X2       INCREMENT ACCUMULATED SIZE 
          SA6    A2 
          SX6    X3+B1       INCREMENT FILE COUNT 
          SA6    A3 
          EQ     AFSX        RETURN 
  
*         FILE ON ALTERNATE STORAGE.
  
 AFS2     SB2    B1+         SET RESIDENCE TO ALTERNATE STORAGE 
          SA2    FSIA        SET COUNTERS FOR IAPF ON ALTERNATE STORAGE 
          SA3    FCIA 
          ZR     X1,AFS1     IF INDIRECT ACCESS FILE
          SA2    FSDA        SET COUNTERS FOR DAPF ON ALTERNATE STORAGE 
          SA3    FCDA 
          EQ     AFS1        UPDATE COUNTERS
 ALN      SPACE  4,15 
**        ALN - ADVANCE LINE NUMBER.
* 
*         ENTRY  (LN) = CURRENT PAGE LINE NUMBER. 
*                (B2) = NUMBER OF LINES TO ADVANCE. 
* 
*         EXIT   FILE NUMBER UPDATED IN OUTPUT LINE.
*                LINE BUFFER CLEARED. 
* 
*         USES   X - 1, 6.
*                A - 1, 6.
*                B - 2. 
* 
*         CALLS  HDR, PTP.
  
  
 ALN      SUBR               ENTRY/EXIT 
          SA1    LN          ADVANCE LINE NUMBER
          SX6    X1+B2
          SA6    A1 
          SA1    LL          GET LINE LIMIT 
          IX1    X1-X6
          PL     X1,ALN2     IF NOT END OF PAGE 
          SX6    B2 
          SA6    A6          RESET LINE NUMBER
          SA1    DT          CHECK DEVICE TYPE
          NZ     X1,ALN1     IF FILE NOT ASSIGNED TO A TERMINAL 
          SA1    TP          CHECK IF TITLE PAGE ALREADY PRINTED
          NZ     X1,ALN2     IF TITLE ALREADY PRINTED 
 ALN1     RJ     PTP         PRINT TITLE PAGE 
          SX6    B1          SET TITLE PAGE FLAG FOR TERMINAL 
          SA6    TP 
          RJ     HDR         PRINT HEADER 
 ALN2     SB2    7           CLEAR LINE BUFFER
          SX6    B0 
 ALN3     ZR     B2,ALNX     IF END OF LINE BUFFER
          SA6    LBUF+B2
          SB2    B2-B1
          EQ     ALN3        CLEAR NEXT WORD
 CFN      SPACE  4,15 
**        CFN - CHECK FILENAME IN LIST. 
* 
*         *CFN* CHECKS A FILE NAME FOR INCLUSION IN A LIST, 
*         WITH WILDCARD MATCHING. 
* 
*         ENTRY  (X3) = FILENAME. 
*                (B2) = FWA OF LIST.
* 
*         EXIT   (X6) = 0 IF FILE IN LIST.
* 
*         USES   X - 1, 3, 4, 5, 6, 7.
*                A - 1, 4, 5. 
*                B - 2. 
  
  
 CFN2     SX6    B1+
  
 CFN      SUBR               ENTRY/EXIT 
          MX7    42 
          BX3    X7*X3
 CFN1     SA4    B2 
          SB2    B2+B1
          ZR     X4,CFN2     IF END OF LIST 
          SA1    CFNA        CHARACTER MASK 
          SA5    CFNB        ASTERISKS
          BX5    X4-X5
          BX6    X1*X5
          BX7    -X1*X5 
          IX6    X1+X6
          BX6    X6+X7
          BX7    -X1*X6 
          BX6    X7 
          LX7    -5 
          IX7    X6-X7
          BX7    X6+X7
          BX6    X4-X3
          BX6    X7*X6
          ZR     X6,CFNX     IF IN LIST 
          EQ     CFN1        CHECK NEXT ENTRY IN LIST 
  
  
 CFNA     CON    37373737373737000000B
 CFNB     CON    7L*******
 CRS      SPACE  4,15 
**        CRS - CHECK RESIDENCE AND FILE TYPE.
* 
*         *CRS* CHECKS TO SEE IF THE FILE RESIDENCE AND TYPE SELECTED 
*         MATCH THE CURRENT FILE RESIDENCE AND TYPE, TO DETERMINE IF
*         THE FILE IS TO BE LISTED. 
* 
*         ENTRY  (CBUF) = CATALOG ENTRY.
*                (RSM) = FILE RESIDENCE SELECTION MASK. 
*                (TYM) = FILE TYPE SELECTION MASK.
* 
*         EXIT   (X1) = 0 IF FILE IS NOT TO BE LISTED.
* 
*         USES   X - 1, 3.
*                A - 3. 
*                B - 3, 6.
  
  
 CRS      SUBR               ENTRY/EXIT 
          SB6    CBUF 
          SB3    B0          INITIALIZE FILE RESIDENCE
          SA3    B6+FCBT     CHECK FOR DISK RESIDENCE 
          MX1    -24
          BX3    -X1*X3 
          AX3    12          EXAMINE TRACK ONLY 
          ZR     X3,CRS1     IF NOT DISK RESIDENT 
          SB3    B3+4        SET DISK RESIDENT INDICATOR
 CRS1     SA3    B6+FCAA     CHECK FOR CARTRIDGE RESIDENCE
          MX1    -36
          BX1    -X1*X3 
          ZR     X1,CRS2     IF NOT CARTRIDGE RESIDENT
          LX3    59-48       CHECK FOR OBSOLETE FLAG
          NG     X3,CRS2     IF CARTRIDGE COPY OBSOLETE 
          SB3    B3+B1       SET CARTRIDGE RESIDENCE INDICATOR
 CRS2     SA3    B6+FCTV     CHECK FOR TAPE VSN 
          MX1    -24
          BX3    -X1*X3 
          ZR     X3,CRS3     IF NO TAPE VSN 
          SB3    B3+2        SET TAPE RESIDENT INDICATOR
 CRS3     SA3    RSM         GET FILE RESIDENCE SELECTION MASK
          SX1    B3          GET ACTUAL FILE RESIDENCE
          BX1    X1*X3       COMPARE ACTUAL AND SELECTED RESIDENCE
          ZR     X1,CRSX     IF FILE FAILED RESIDENCE CRITERIA
          SA1    B6+FCBS     CHECK FILE TYPE
          MX3    -1 
          LX1    0-11 
          BX3    -X3*X1      01 = DIRECT, 00 = INDIRECT 
          SX1    X3+B1       10 = DIRECT, 01 = INDIRECT 
          SA3    TYM
          ZR     X3,CRSX     IF FILE TYPE NOT SPECIFIED 
          BX1    X1*X3       CHECK FILE TYPE MATCH
          EQ     CRSX        RETURN 
 CSU      SPACE  4,15 
**        CSU - CHECK FOR SPECIAL USER. 
* 
*         ENTRY  (AUSER) = ALTERNATE USER.
*                (USER) = USER NAME OF CALLER.
* 
*         EXIT   (MODE) UPDATED TO NON-ALTERNATE CATALOG IF 
*                USER REQUESTING CATLIST HAS AUTOMATIC PERMISSION.
* 
*         USES   X - 0, 1, 2, 3, 6, 7.
*                A - 1, 2, 6. 
*                B - 2. 
  
  
 CSU      SUBR               ENTRY/EXIT 
          SA2    MODE 
          SX2    X2-PMTL
          PL     X2,CSUX     IF PERMIT DATA REQUEST 
          SA2    AUSER
          ZR     X2,CSUX     IF NO ALTERNATE USER 
          SA1    USER 
          MX0    -6 
          SB2    8
 CSU1     LX1    6           POSITION NEXT CHARACTER
          LX2    6
          SB2    B2-B1
          ZR     B2,CSU2     IF USER NAMES MATCH
          BX3    -X0*X1      USER 
          BX6    -X0*X2      AUSER
          SX7    X3-1R* 
          ZR     X7,CSU1     IF CHARACTER = * 
          IX6    X3-X6
          ZR     X6,CSU1     IF CHARACTERS COMPARE
          EQ     CSUX        EXIT 
  
 CSU2     SA1    MODE        PROCEED AS NON-ALTERNATE CATALOG 
          SX6    X1-ALTC
          SA6    A1 
          EQ     CSUX        RETURN 
DSB       SPACE  4,15 
**        DSB - DISPLAY SORT BREAK. 
* 
*         ENTRY  (X1) = TOTAL NUMBER OF FILE NAMES. 
*                (BO) = CURRENT BUFFER OFFSET.
* 
*         EXIT   SORT-BREAK LINE DISPLAYED. 
* 
*         USES   X - 2, 3.
*                A - 2. 
*                B - 2. 
* 
*         CALLS  ALN. 
* 
*         MACROS WRITEC.
  
  
 DSB      SUBR               ENTRY/EXIT 
          SA2    BO+1        GET CURRENT BUFFER OFFSET
          IX3    X2-X1
          ZR     X3,DSBX     IF NO MORE FILES IN THIS GROUP 
          SA2    DT 
          NZ     X2,DSBX     IF NOT TERMINAL FILE 
          SB2    1
          RJ     ALN         ADVANCE LINE NUMBER
          WRITEC O,(=C* ...*) 
          EQ     DSBX        RETURN 
 FCB      SPACE  4,10 
**        FCB - FILL CATALOG AND PERMIT BUFFER. 
* 
*         EXIT   (X6) = NUMBER OF WORDS READ. 
*                (X6) .LT. 0, IF ERROR DETECTED.
* 
*         USES   X - 0, 1, 2, 6.
*                A - 1, 2, 6. 
* 
*         MACROS CATLIST. 
  
  
 FCB1     SA6    ERRF        SET *PFM* ERROR FLAG 
  
 FCB      SUBR               ENTRY/EXIT 
          SA1    I           CHECK FOR EOI ON LAST READ 
          LX1    59-9 
          SX6    B0 
          NG     X1,FCBX     IF EOI ENCOUNTERED 
          SA2    A1+B1       SET IN = OUT = FIRST 
          SX6    X2 
          SA6    A2+B1       SET IN 
          SA6    A6+B1       SET OUT
          CATLIST A1,,,,,,,DN 
          SA1    X2+         CHECK ERROR STATUS 
          MX0    -8 
          AX1    10 
          BX2    -X0*X1 
          MX6    1           SET ERROR RETURN CONDITION 
          NZ     X2,FCB1     IF ERROR RETURN STATUS SET 
          SA1    A1+2        SET NUMBER OF WORDS READ 
          SA2    A1+B1
          IX6    X1-X2
          EQ     FCBX        RETURN 
 GNI      SPACE  4,15 
**        GNI - GET NEXT ENTRY INDEX. 
* 
*         ENTRY  MUST HAVE GONE TO *NIP* TO PRESET INDEX. 
* 
*         EXIT   (X1) = INDEX FOR NEXT ENTRY TO PROVIDE A SORTED
*                       LIST ORDERED BY COLUMNS.
* 
*         USES   X - 1, 2, 3, 4, 6. 
*                A - 1, 2, 4, 6.
  
  
 GNI3     IX6    X1+X4       ADD INCREMENT
          SA6    GNIB 
  
 GNI      SUBR               ENTRY/EXIT 
          SA2    GNIA 
          SX3    7           CHECK LINE LENGTH
          IX4    X2-X3
          PL     X4,GNI2     IF END OF LINE 
          SA1    A2+B1       GET ENTRY BIAS 
 GNI1     SX6    X2+B1       UPDATE COLUMN NUMBER 
          SA4    GNID        GET REMAINDER
          SA6    A2 
          IX3    X2-X4
          SA4    A4-B1       GET INCREMENT
          NG     X3,GNI3     IF FULL INCREMENT TO BE USED 
          SX4    X4-1 
          EQ     GNI3        USE INCREMENT-1
  
 GNI2     SA1    GNIE        GET LINE INDEX 
          SX6    X1+B1
          MX2    0           CLEAR C0LUMN NUMBER
          BX1    X6 
          SA6    A1 
          EQ     GNI1        SET CELLS FOR NEW LINE 
  
  
 GNIA     CON    0           COLUMN NUMBER
 GNIB     CON    0           ENTRY BIAS 
 GNIC     CON    0           ROW INCREMENT
 GNID     CON    0           REMAINDER
 GNIE     CON    0           LINE INDEX 
 GSL      SPACE  4,25 
**        GSL - GENERATE ENTRY FOR SHORT LIST.
* 
*         ENTRY  (CBUF) = FILE/USER DESCRIPTOR. 
*                FOR *SSL* CALL - 
*                42/PFN,8/0,1/N,3/EC,2/0,1/D,3/0. 
*                            PFN = PERMANENT FILE NAME. 
*                            N = 1 IF FILE NOT ON DISK. 
*                            EC = ERROR CODE FROM PFC.
*                            D = 1 IF DIRECT ACCESS FILE. 
*                FOR *SPD* CALL - 
*                42/USERNAME,18/0 
* 
*         EXIT   FILE NAME SET IN OUTPUT LINE.
*                IF FILE ON ALTERNATE STORAGE, FILE NAME IN ( ).
*                IF ERROR CODE PRESENT, LEADING ASTERISK ON FILE NAME.
* 
*         USES   X - 0, 1, 2, 3, 4, 5, 6, 7.
*                A - 1, 2, 3, 4, 5, 6.
*                B - 2. 
* 
*         CALLS  AEN, ALN, MTP, SFN.
* 
*         MACROS WRITEC.
  
  
 GSL      SUBR               ENTRY/EXIT 
          SA5    GSLA        CHECK LINE FILE COUNT
          SX2    7
          IX2    X2-X5
          NG     X2,GSL1     IF FIRST ENTRY 
          NZ     X2,GSL2     IF NOT END OF LINE 
          WRITEC O,LBUF 
 GSL1     SB2    B1          ADVANCE LINE NUMBER BY 1 
          RJ     ALN
          SX5    B0          RESET LINE COUNT 
 GSL2     RJ     AEN         ADVANCE ENTRY NUMBER 
          SA3    CBUF        PICK ENTRY 
          SA4    MODE 
          SB2    B0          SET DEFAULT IMAGE PATTERN
          MX0    42 
          BX1    X0*X3
          MX6    -3 
          SX4    X4-MOSP
          LX3    0-6
          BX6    -X6*X3      EXTRACT ERROR CODE 
          LX3    59-9-0+6 
          ZR     X4,GSL4     IF SHORT PERMIT MODE CATLIST 
          ZR     X6,GSL3     IF NO ERROR CODE 
          SB2    B2+1        SET IMAGE PATTERN FOR ERROR
 GSL3     PL     X3,GSL4     IF FILE ON DISK
          SB2    B2+2        SET IMAGE PATTERNS FOR ALTERNATE STORAGE 
 GSL4     SA2    GSLB+B2     LOAD IMAGE 
          SA4    GSLC        =01010101010101010101B 
          SX6    B1 
          IX3    X1-X6       EXTEND RIGHTMOST BIT 
          BX3    X3-X1       REMOVE ALL UNCHANGED BITS
          IX3    X3+X6       SET RIGHTMOST BIT OF FILE NAME 
          BX7    X3 
          LX7    -6 
          IX3    X3-X7       SHIFT 1 AND EXTEND 6 (RIGHTMOST BIT) 
          BX3    X4*X3       ISOLATE SINGLE BIT 
          LX3    -6          POSITION FOR CHARACTER TO RIGHT
          BX3    X3+X6       ADD IN BOTTOM CHARACTER OF WORD
          BX7    X3 
          LX3    6
          IX3    X3-X7       PREPARE MASK OF SURROUNDING CHARACTERS 
          BX2    X3*X2       ISOLATE SURROUNDING CHARACTERS 
          LX6    6
          IX6    X3-X6       EXTEND MASK OF REMAINING CHARACTERS
          BX6    -X3*X6      FINALIZE MASK
          SA4    GSLD 
          BX4    X6*X4       EXTRACT REQUIRED BLANKS
          BX6    X1+X2       MERGE CHARACTERS INTO FINAL ASSEMBLY 
          BX6    X6+X4
          LX6    48 
          SA6    LBUF+X5
          SX6    X5+B1       ADVANCE LINE FILE COUNT
          SA6    GSLA 
          EQ     GSLX        EXIT 
  
  
 GSLA     CON    8           LINE POSITION
 GSLB     BSS    0           IMAGE MAPS 
          DATA   10H            NO ERROR, FILE ON DISK
          DATA   10H         *  ERROR, FILE ON DISK 
          DATA   10H)))))))) (  NO ERROR, FILE ON ALTERNATE STORAGE 
          DATA   10H)))))))) *  ERROR, FILE ON ALTERNATE STORAGE
 GSLC     DATA   01010101010101010101B
 GSLD     EQU    GSLB        =10H 
 HDR      SPACE  4,15 
**        HDR - HEADERS FOR LISTING CATALOGS AND PERMIT BUFFERS.
* 
*         ENTRY  (MODE) = MODE OF LISTING.
* 
*         EXIT   HEADER LINE PLACED IN OUTPUT BUFFER. 
* 
*         USES   X - 0, 1, 6. 
*                A - 1, 6.
* 
*         MACROS WRITEC.
  
  
 HDR      SUBR               ENTRY/EXIT 
          SA1    HDRI 
          SX0    B0+         INITIALIZE LINE COUNT
          ZR     X1,HDR0     IF NO FILE NAMES SPECIFIED 
          SX0    B1+B1       INCREMENT LINE COUNT 
          WRITEC O,X1        PRINT FILE NAME SUBHEADER
          WRITEC O,BLK
 HDR0     SA1    MODE        INDEX INTO HEADER POINTER TABLE
          SA1    X1+HDRB
          ZR     X1,HDR2     IF NO HEADER MESSAGE DEFINED 
          BX6    X1 
          SA6    HDRA        SET INDEX BASE OF HEADER MESSAGES FOR MODE 
  
*         LOOP PRINTING HEADER MESSAGE LINES. 
  
 HDR1     SA1    HDRA        EXAMINE CURRENT MESSAGE POINTER
          SA1    X1 
          ZR     X1,HDR2     IF END OF HEADER MESSAGES
          SX6    A1+B1       SET NEXT MESSAGE POINTER 
          SA6    HDRA 
          SX0    X0+B1       INCREMENT LINE COUNT 
          WRITEC O,X1 
          EQ     HDR1        CONTINUE LOOP
  
*         COMPLETE HEADER PROCESSING. 
  
 HDR2     WRITEC O,BLK
          SA1    LN          INCREMENT LINE COUNT 
          IX6    X1+X0
          SX1    B1 
          IX6    X6+X1
          SA6    A1 
          EQ     HDRX        RETURN 
  
*         HEADER MESSAGE BASE POINTERS. 
  
 HDRA     CON    0
 HDRB     CON    0,HDRD,HDRD,0,HDRF,HDRG,HDRH 
  
*         HEADER MESSAGE POINTERS.
  
 HDRD     CON    /COMCFCE/CHDR1  FULL FILE LIST 
          CON    /COMCFCE/CHDR2 
          CON    /COMCFCE/CHDR3 
          CON    /COMCFCE/CHDR4 
          CON    0
  
 HDRF     CON    /COMCFCE/CHDR1  FULL ALTERNATE CATALOG 
          CON    HDR42
          CON    HDR43
          CON    HDR44
          CON    0
  
 HDRG     CON    HDR51       SHORT PERMIT ENTRIES 
          CON    0
  
 HDRH     CON    HDR61       FULL PERMIT ENTRIES
          CON    0
  
 HDRI     CON    0           SUBHEADER IF FILE NAMES SPECIFIED
*         CON    HDR71       (SINGLE FILE NAME TEMPLATE SPECIFIED)
*         CON    HDR72       (MULTIPLE FILE NAMES SPECIFIED)
          CON    0
  
*         HEADERS.
  
 HDR42    DATA   C*               COUNT        PERM. SUBSYS DATE/TIME DA
,TE/TIME DATE/TIME* 
 HDR43    DATA   C*                       PR BR AC RS*
  
 HDR44    DATA   40C
  
 HDR51    DATA   C*  USER NAMES*
  
 HDR61    DATA   C* USER NAME      PERM.  EXPIRES  ACCESSES   DATE
,TIME*
  
 HDR71    CON    1H 
          CON    10HFILE NAME 
          CON    0
  
 HDR72    CON    1H 
          DATA   C*SELECTED FILES*
 LCS      SPACE  4,15 
**        LCS - LIST CATEGORY SET FOR FILE. 
* 
*         ENTRY  (CBUF) = CATALOG ENTRY.
* 
*         EXIT   FILE-S CATEGORY SET IS SORTED AND LISTED.
* 
*         USES   X - 0, 1, 2, 6, 7. 
*                A - 0, 1, 2, 6, 7. 
*                B - 2, 7.
* 
*         CALLS  ALN, GNI, GSL, NIP.
* 
*         MACROS WRITEC, WRITEH.
  
  
 LCS      SUBR               ENTRY/EXIT 
          SA1    CBUF+FCFC   CATEGORY SET WORD
          MX0    -32
          BX1    -X0*X1 
          SB2    32          NUMBER OF CATEGORIES POSSIBLE
          SA0    B0          INITIALIZE CATEGORY SET COUNTER
          MX0    42 
          LX1    59-32
 LCS1     SB2    B2-B1
          NG     B2,LCS2     IF DONE ANALYZING CATEGORY WORD
          LX1    1
          PL     X1,LCS1     IF CATEGORY NOT VALIDATED
          SA2    TACT+B2     SET CATEGORY MNEMONIC IN BUFFER
          BX6    X0*X2
          SA6    SBUF+A0
          SA0    A0+B1
          EQ     LCS1        CHECK NEXT CATEGORY
  
 LCS2     SX1    A0 
          ZR     X1,LCSX     IF NO ACCESS CATEGORY SET ENTRIES
          SB7    SBUF        SORT CATEGORY ENTRIES
          RJ     SST= 
          SX1    A0 
          SX6    A0 
          SA6    LCSA 
          RJ     NIP         PRESET *GNI* 
          WRITEH O,LCSB,LCSBL 
          WRITEC O,BLK
          SB2    B1+B1
          RJ     ALN         ADVANCE LINE NUMBER
          SX7    8
          SA7    GSLA 
 LCS3     SA1    LCSA 
          SX6    X1-1 
          SA6    A1 
          NG     X6,LCS4     IF END OF ENTRIES
          RJ     GNI         GET NEXT ENTRY 
          SA1    X1+SBUF     GET ACTUAL ENTRY 
          BX6    X1 
          SA6    CBUF 
          RJ     GSL         GENERATE SHORT LIST
          EQ     LCS3        GET NEXT CATEGORY ENTRY
  
 LCS4     WRITEC O,LBUF      LAST LINE OF CATEGORY SET
          WRITEC O,BLK
          EQ     LCSX        RETURN 
  
 LCSA     CON    0           NUMBER OF VALIDATED CATEGORY SETS
 LCSB     DATA   C*    FILE ACCESS CATEGORY SET*
 LCSBL    EQU    *-LCSB 
 NIP      SPACE  4,10 
**        NIP - NEXT INDEX PRESET (PRESET *GNI*). 
* 
*         ENTRY  (X1) = ENTRY COUNT.
* 
*         EXIT   TEMPORARY CELLS PRESET FOR *GNI*.
* 
*         USES   X - 1, 3, 6, 7.
*                A - 6, 7.
  
  
 NIP      SUBR               ENTRY/EXIT 
          MX6    0
          SX3    7           LINE LENGTH
          SA6    GNIA 
          SA6    GNIB 
          SA6    GNIE 
 NIP1     IX1    X1-X3       DIVIDE BY 7
          SX6    X6+B1
          PL     X1,NIP1     IF NOT POSITION IN ROW 
          IX7    X3+X1
          SA6    GNIC 
          SA7    GNID 
          EQ     NIPX        RETURN 
 PAS      SPACE  4,15 
**        PAS - PRINT ACCUMULATED STATISTICS. 
* 
*         ENTRY  (FCID, FSID) = INDIRECT ACCESS DISK FILE COUNT, SIZE.
*                (FCDD, FSDD) = DIRECT ACCESS DISK FILE COUNT, SIZE.
*                (FCIA, FSIS) = IAPF ON ALTERNATE STORAGE COUNT, SIZE.
*                (FCDA, FSDA) = DAPF ON ALTERNATE STORAGE COUNT, SIZE.
* 
*         USES   X - 1, 2.
*                A - 1, 2.
*                B - 2, 3, 5. 
* 
*         CALLS  ALN, CDD, SNM. 
* 
*         MACROS WRITEC.
  
  
 PAS      SUBR               ENTRY/EXIT 
          SB2    5           ADVANCE LINE COUNT BY 5
          RJ     ALN
  
*         PRINT STATISTICS FOR INDIRECT ACCESS FILES ON DISK. 
  
          SB5    PASA        SET MESSAGE TEMPLATE 
          SA1    FCID        NUMBER OF INDIRECT ACCESS FILES ON DISK
          SB3    X1 
          ZR     B3,PAS2     IF NO INDIRECT ACCESS FILES ON DISK
          NE     B3,B1,PAS1  IF MORE THAN ONE FILE
          SB5    PASB        USE ALTERNATE MESSAGE TEMPLATE 
 PAS1     RJ     CDD         CONVERT FILE COUNT TO DECIMAL
          MX1    -54         CLEAR LEADING BLANK
          BX1    -X1*X6 
          LX1    6           LEFT JUSTIFY NINE-DIGIT INTEGER
          SB2    1R#
          RJ     SNM         SET FILE COUNT INTO MESSAGE
          SA1    FSID        TOTAL SIZE OF INDIRECT ACCESS FILES
          RJ     CDD         CONVERT TO DECIMAL 
          MX1    -54         CLEAR LEADING BLANK
          BX1    -X1*X6 
          LX1    6           LEFT JUSTIFY NINE-DIGIT INTEGER
          SB2    1R$
          RJ     SNM         SET TOTAL FILE SIZE INTO MESSAGE 
          WRITEC O,B5 
  
*         PRINT STATISTICS FOR DIRECT ACCESS FILES ON DISK. 
  
 PAS2     SB5    PASC        SET MESSAGE TEMPLATE 
          SA1    FCDD        NUMBER OF DIRECT ACCESS FILES ON DISK
          SB3    X1 
          ZR     B3,PAS4     IF NO DIRECT ACCESS FILES ON DISK
          NE     B3,B1,PAS3  IF MORE THAN ONE FILE
          SB5    PASD        USE ALTERNATE MESSAGE TEMPLATE 
 PAS3     RJ     CDD         CONVERT FILE COUNT TO DECIMAL
          MX1    -54         CLEAR LEADING BLANK
          BX1    -X1*X6 
          LX1    6           LEFT JUSTIFY NINE-DIGIT INTEGER
          SB2    1R#
          RJ     SNM         SET FILE COUNT INTO MESSAGE
          SA1    FSDD        TOTAL SIZE OF DIRECT ACCESS FILES
          RJ     CDD         CONVERT TO DECIMAL 
          MX1    -54         CLEAR LEADING BLANK
          BX1    -X1*X6 
          LX1    6           LEFT JUSTIFY NINE-DIGIT INTEGER
          SB2    1R$
          RJ     SNM         SET TOTAL FILE SIZE INTO MESSAGE 
          WRITEC O,B5 
  
*         PRINT STATISTICS FOR IAPF-S ON ALTERNATE STORAGE. 
  
 PAS4     SB5    PASE        SET MESSAGE TEMPLATE 
          SA1    FCIA        NUMBER OF IAPF-S ON ALTERNATE STORAGE
          SB3    X1 
          ZR     B3,PAS6     IF NO IAPF-S ON ALTERNATE STORAGE
          NE     B3,B1,PAS5  IF MORE THAN ONE FILE
          SB5    PASF        USE ALTERNATE MESSAGE TEMPLATE 
 PAS5     RJ     CDD         CONVERT FILE COUNT TO DECIMAL
          MX1    -54         CLEAR LEADING BLANK
          BX1    -X1*X6 
          LX1    6           LEFT JUSTIFY NINE-DIGIT INTEGER
          SB2    1R#
          RJ     SNM         SET FILE COUNT INTO MESSAGE
          SA1    FSIA        TOTAL SIZE OF IAPF-S ON ALTERNATE STORAGE
          RJ     CDD         CONVERT TO DECIMAL 
          MX1    -54         CLEAR LEADING BLANK
          BX1    -X1*X6 
          LX1    6           LEFT JUSTIFY NINE-DIGIT INTEGER
          SB2    1R$
          RJ     SNM         SET TOTAL FILE SIZE INTO MESSAGE 
          WRITEC O,B5 
  
*         PRINT STATISTICS FOR DAPF-S ON ALTERNATE STORAGE. 
  
 PAS6     SB5    PASG        SET MESSAGE TEMPLATE 
          SA1    FCDA        NUMBER OF DAPF-S ON ALTERNATE STORAGE
          SB3    X1 
          ZR     B3,PAS8     IF NO DAPF-S ON ALTERNATE STORAGE
          NE     B3,B1,PAS7  IF MORE THAN ONE FILE
          SB5    PASH        USE ALTERNATE MESSAGE TEMPLATE 
 PAS7     RJ     CDD         CONVERT FILE COUNT TO DECIMAL
          MX1    -54         CLEAR LEADING BLANK
          BX1    -X1*X6 
          LX1    6           LEFT JUSTIFY NINE-DIGIT INTEGER
          SB2    1R#
          RJ     SNM         SET FILE COUNT INTO MESSAGE
          SA1    FSDA        TOTAL SIZE OF DAPF-S ON ALTERNATE STORAGE
          RJ     CDD         CONVERT TO DECIMAL 
          MX1    -54         CLEAR LEADING BLANK
          BX1    -X1*X6 
          LX1    6           LEFT JUSTIFY NINE-DIGIT INTEGER
          SB2    1R$
          RJ     SNM         SET TOTAL FILE SIZE INTO MESSAGE 
          WRITEC O,B5 
 PAS8     WRITEC O,BLK
          EQ     PASX        RETURN 
  
  
 PASA     DATA   C* ######### INDIRECT ACCESS FILES ON DISK.  TOTAL PRUS
, = $$$$$$$$$.* 
 PASB     DATA   C* ######### INDIRECT ACCESS FILE ON DISK.   TOTAL PRUS
, = $$$$$$$$$.* 
  
 PASC     DATA   C* ######### DIRECT ACCESS FILES ON DISK.    TOTAL PRUS
, = $$$$$$$$$.* 
 PASD     DATA   C* ######### DIRECT ACCESS FILE ON DISK.     TOTAL PRUS
, = $$$$$$$$$.* 
  
 PASE     DATA   C* ######### INDIRECTS ON ALTERNATE STORAGE. TOTAL PRUS
, = $$$$$$$$$.* 
 PASF     DATA   C* ######### INDIRECT ON ALTERNATE STORAGE.  TOTAL PRUS
, = $$$$$$$$$.* 
  
 PASG     DATA   C* ######### DIRECTS ON ALTERNATE STORAGE.   TOTAL PRUS
, = $$$$$$$$$.* 
 PASH     DATA   C* ######### DIRECT ON ALTERNATE STORAGE.    TOTAL PRUS
, = $$$$$$$$$.* 
 PTP      SPACE  4,10 
**        PTP - PRINT TITLE PAGE. 
* 
*         ENTRY  (PG) = PAGE NUMBER.
* 
*         EXIT   TITLE PAGE PRINTED.
*                (LN) RESET TO 2. 
* 
*         CALLS  CDD. 
  
  
 PTP      SUBR               ENTRY/EXIT 
          SA1    PG          ADVANCE TO NEXT PAGE 
          SX1    X1+B1
          BX6    X1 
          SA6    A1 
          RJ     CDD         CONVERT TO DECIMAL 
          MX0    48 
          BX6    -X0*X6 
          SA1    PAGE 
          BX1    X0*X1
          BX6    X1+X6
          SA6    PAGE 
  
          DATE   DATE 
          CLOCK  TIME 
          SB2    6           FOR TELEX ORIGIN JOBS
          SA1    DT 
          SX0    B0+         INITIALIZE LINE COUNTER
          ZR     X1,PTP1     IF TERMINAL FILE 
  
          SA1    PD 
          ZR     X1,PTP0     IF *PD* ALREADY PROCESSED
          WRITEC O,A1 
          SX6    B0+
          SA6    PD          INDICATE *PD* PROCESSED
 PTP0     WRITEH O,PTPA,B1
          SB2    7           FOR NON-TELEX ORIGIN JOBS
          SX0    X0+B1       COUNT PAGE EJECT 
 PTP1     WRITEH O,PTPB,B2+  WRITE TITLE LINE 
          SX0    X0+B1       COUNT TITLE LINE 
          SA1    PTPC        WRITE SUB TITLE
          WRITEC O,X1 
          SX0    X0+B1       COUNT SUBTITLE LINE
          SA1    LN 
          IX6    X1+X0       RESET LINE NUMBER
          SA6    LN 
          EQ     PTPX        EXIT 
  
  
 PTPA     CON    1H1
 PTPB     DATA   30H CATALOG OF 
 PKNM     CON    10H
 DATE     CON    0
 TIME     CON    0
 PAGE     DATA   8L  PAGE 
  
 PTPC     CON    BLK         SUBTITLE FLAG
 PTPD     CON    1H 
          CON    10HFILE NAME 
 FILE     CON    0
  
 PTPE     CON    1H 
          CON    10HALTERNATE 
          CON    10HCATALOG 
 AUSER    CON    0
  
 RQS      SPACE  4,15 
**        RQS - REQUEST STORAGE.
* 
*         ENTRY  (X1) = CURRENT BUFFER SIZE.
* 
*         EXIT   (X1) = NEGATIVE IF NO MORE STORAGE AVAILABLE.
*                (CFL) = NEW CURRENT FL.
*                (CBS) = NEW CURRENT BUFFER SIZE. 
* 
*         USES   X - 1, 3, 6. 
*                A - 1, 3, 6. 
* 
*         MACROS MEMORY.
  
  
 RQS      SUBR               ENTRY/EXIT 
          SA3    MBS         GET MAXIMUM BUFFER SIZE
          SX6    X1+FLIN     ADD POSSIBLE INCREMENT 
          IX1    X3-X6
          NG     X1,RQSX     IF NO MORE SPACE 
          SA3    CFL         SET POSSIBLE NEW FL
          SX6    X3+FLIN
          SA6    A3 
          LX6    30 
          SA6    RQSA 
          MEMORY CM,RQSA,R,,NA
          SA3    RQSA 
          SA1    CFL
          AX3    30 
          IX1    X3-X1
          NG     X1,RQSX     IF NO MORE ALLOCATED 
          SA1    CBS         UPDATE CURRENT SORT BUFFER SIZE
          SX6    X1+FLIN
          SA6    A1 
          EQ     RQSX        RETURN 
  
  
 RQSA     CON    0           FL CONTROL WORD
 SNP      SPACE  4,15 
**        SNP - SET NEXT PAGE.
* 
*         ENTRY  (X1) = TOTAL NUMBER OF FILES.
* 
*         EXIT   (X1) = 0 IF NO MORE FILES TO PRINT.
*                (BO) = BUFFER OFFSET FOR THIS PAGE.
*                (BL) = BUFFER LENGTH FOR THIS PAGE.
* 
*         USES   X - 1, 2, 3, 4, 6, 7.
*                A - 1, 2, 3, 4, 6, 7.
*                B - 2. 
* 
*         CALLS  ALN, NIP.
* 
  
  
 SNP4     MX6    0
          SA6    A2          CLEAR BUFFER OFFSET
          MX1    0           EXIT WITH NO MORE FILES
          SA6    A6-B1
 SNP5     SX7    8           RESET *GSL* LIST ROUTINE 
          SA7    GSLA 
  
 SNP      SUBR               ENTRY/EXIT 
          SA2    BO+1 
          IX3    X2-X1
          BX6    X2 
          ZR     X3,SNP4     IF NO MORE FILES TO LIST 
          BX7    X1 
          SA6    A2-B1       SET UP NEW OFFSET
          SA7    SNPA        SAVE (X1)
 SNP1     SA3    LN 
          SX6    7           LINE LENGTH
          SA4    LL 
          IX7    X4-X3
          NG     X7,SNP3     IF END OF PAGE 
          ZR     X7,SNP3     IF END OF PAGE 
          IX6    X6*X7
          SA2    BO+1 
          IX7    X6+X2       FORM NEW OFFSET
          SA1    SNPA 
          IX4    X1-X7
          PL     X4,SNP2     IF MORE THAN ONE PAGE
          IX7    X7+X4
          IX6    X6+X4
 SNP2     SA6    BL          COUNT OF FILE NAMES ON PAGE
          SA7    BO+1        OFFSET FOR NEXT PASS 
          BX1    X6 
          RJ     NIP         PRESET *GNI* 
          SA1    BL          EXIT WITH FILE COUNT 
          EQ     SNP5        RETURN 
  
 SNP3     SB2    B1 
          RJ     ALN         ADVANCE LINE 
          EQ     SNP1        RETURN TO MAIN LINE
  
 SNPA     CON    0           TEMPORARY STORAGE (TOTAL NUMBER OF FILES)
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMCCDD 
*CALL     COMCCIO 
*CALL     COMCCOD 
*CALL     COMCCPM 
*CALL     COMCDXB 
*CALL     COMCEDT 
*CALL     COMCLFM 
*CALL     COMCPFM 
*CALL     COMCRDW 
*CALL     COMCSCB 
*CALL     COMCSFN 
*CALL     COMCSNM 
*CALL     COMCSST 
*CALL     COMCSYS 
*CALL     COMCWTC 
*CALL     COMCWTH 
*CALL     COMCWTW 
*CALL     COMCZTB 
          LIST   X,F
*CALL     COMCFCE 
          LIST   *
          SPACE  4,10 
**        EQUIVALENCES. 
  
  
 FCELL    EQU    /COMCFCE/FCELL  OUTPUT BUFFER LINE LENGTH
 FCELA    EQU    /COMCFCE/FCELA  OUTPUT BUFFER THIRD LINE LENGTH
 FCELB    EQU    /COMCFCE/FCELB  OUTPUT BUFFER FOURTH LINE LENGTH 
          SPACE  4
**        BUFFERS.
  
  
          USE    LITERALS 
 LBUF     EQU    *           OUTPUT LINE BUFFER 
 CBUF     EQU    LBUF+/COMCFCE/CHDRN*FCELL  CATALOG READ BUFFER 
 IBUF     EQU    CBUF+NWCE   INPUT BUFFER 
 OBUF     EQU    IBUF+IBFL   OUTPUT BUFFER
 SBUF     EQU    OBUF+OBFL   CATALOG SORT BUFFER
 RFL=     EQU    SBUF+SBFL   DEFAULT FL 
 PRS      TITLE  PRESET.
**        PRS - PRESET ROUTINE. 
* 
*         EXIT   TO MAIN LOOP(CTL)
*                FETS AND BUFFERS SET UP AND COMMAND
*                ARGUMENTS PROCESSED. 
*                (MODE) = LIST OPTION.
*                         0 = SHORT FILE LIST.
*                         1 = FULL FILE LIST. 
*                         2 = FILE LIST AND CATEGORY SET. 
*                         3 = SHORT ALTERNATE CATALOG LIST. 
*                         4 = FULL ALTERNATE CATALOG LIST.
*                         5 = SHORT PERMIT DATA LIST. 
*                         6 = FULL PERMIT DATA LIST.
*                B1 = 1.
*                DT = 0 IF OUTPUT TO TERMINAL FILE. 
*                JT = 0 IF TERMINAL ORIGIN JOB. 
*                TITLE LINES PRESET 
*                PFM CALL FET PRESET. 
*                (CTLA) SET IF SELECTED ENTRY DESIRED.
  
  
 CATLIST  BSS    0           ENTRY POINT
 PRS      BSS    0
          SB1    1
          GETSSM SSM         GET SYSTEM SECURITY MODE 
          SA4    ACTR 
          ZR     X4,PRS15    IF NO ARGUMENTS
          SB4    X4          SET ARGUMENT COUNT 
          SA4    ARGR        GET FIRST ARGUMENT 
          SB5    TARG        SET ARGUMENT TABLE ADDRESS 
          RJ     ARG         PROCESS ARGUMENTS
          ZR     X1,PRS2     IF NO ARGUMENT ERROR 
  
 PRS1     MESSAGE  (=C* INCORRECT PARAMETER.*)
          ABORT 
  
*         PROCESS FILE NAME SELECTION PARAMETERS. 
  
 PRS2     SA1    EFNM 
          SX7    HDR72       SUBHEADER FOR MULTIPLE FILE NAME TEMPLATES 
          NZ     X1,PRS2.1   IF *EF* SPECIFIED
          SA1    FLNM+1 
          NZ     X1,PRS2.1   IF MORE THAN ONE FILE SPECIFIED FOR *FN* 
          SA1    FLNM 
          SA3    =7L******* 
          BX6    X1-X3
          ZR     X6,PRS3     IF *FN* NOT SPECIFIED
          BX7    X3-X1       CLEAR * FROM NAME
          SA3    PRSA        =37373737373737373737B 
          BX6    X3*X7
          BX7    -X3*X7 
          IX6    X6+X3
          BX6    X6+X7
          BX7    -X3*X6 
          BX6    X7 
          LX7    -5 
          IX7    X6-X7
          BX7    X6+X7
          SA3    =777777B 
          IX4    X7+X3
          MX0    42 
          BX6    X0*X1
          ZR     X4,PRS2.2   IF NO ASTERISKS IN FILE NAME 
          SA6    HDR71+2     SET FILE NAME IN HEADER
          SX7    HDR71       SUBHEADER FOR SINGLE FILE NAME TEMPLATE
 PRS2.1   SA7    HDRI        SET SUBHEADER ADDRESS
          SX6    CTLE        SET ADDRESS FOR *NO FILES FOUND* MESSAGE 
          SA6    CTLB 
          EQ     PRS3        SET UP OUTPUT FET
  
 PRS2.2   SA6    FILENAM     SET FILE NAME FOR PERMANENT FILE FET 
  
*         SET UP OUTPUT FET.
  
 PRS3     SA1    O           SET STATUS IN OUTPUT FET 
          MX0    42 
          SX6    B1 
          BX2    X0*X1
          ZR     X2,PRS1     IF NO FILE NAME
          IX6    X6+X2
          SA6    A1 
          SX2    A1          CHECK FOR TERMINAL FILE
          RJ     STF
          SA6    DT          SET DEVICE TYPE FLAG (0 FOR TYPE *TT*) 
          SA1    JOPR        SET JOB ORIGIN 
          MX0    -12
          LX1    36 
          BX1    -X0*X1 
          SX6    X1-TXOT
          SA6    JT 
  
*         PROCESS FILE RESIDENCE PARAMETER
  
          SA1    RS          GET FILE RESIDENCE SELECTION PARAM 
          NZ     X1,PRS3.1   IF FILE RESIDENCE SELECTION NOT 0
          MX6    -3          SET PARAMETER SELECTION FOR 0
          BX6    -X6
          EQ     PRS3.5      RESIDENCE SELECTION MASK SET 
 PRS3.1   MX0    -6 
          BX6    X6-X6       INITIALIZE RESIDENCE SELECTION MASK
 PRS3.2   LX1    6           GET NEXT RESIDENCE SELECTION PARAM 
          BX2    -X0*X1 
          ZR     X2,PRS3.5   IF END OF SELECTIONS 
          SA3    PRSE        GET VALID RESIDENCE SELECTION OPTIONS
          MX7    1
 PRS3.3   LX3    6           GET NEXT RESIDENCE SELECTION OPTION
          BX4    -X0*X3 
          BX5    X2-X4       COMPARE
          ZR     X4,PRS3.4   IF END OF VALID OPTIONS
          LX7    1
          NZ     X5,PRS3.3   IF NO MATCH
          BX6    X6+X7       ADD VALID SELECTION TO MASK
          EQ     PRS3.2      GET NEXT SELECTION 
  
 PRS3.4   MESSAGE  (=C* ERROR IN FILE RESIDENCE SELECTION.*)
          ABORT 
 PRS3.5   SA6    RSM         SAVE RESIDENCE SELECTION MASK
  
*         PROCESS FILE TYPE PARAMETER.
  
          SA1    TY          GET FILE TYPE SELECTION PARAM
          BX6    X6-X6       INITIALIZE FILE TYPE SELECTION 
          ZR     X1,PRS3.9   IF NO FILE TYPE SELECTION
          MX0    -6 
 PRS3.6   LX1    6           GET NEXT FILE TYPE SELECTION PARAM 
          BX2    -X0*X1 
          ZR     X2,PRS3.9   IF END OF SELECTIONS 
          SA3    PRSF        GET VALID FILE TYPE OPTIONS
          BX7    X7-X7
 PRS3.7   LX3    6           GET NEXT FILE TYPE OPTION
          BX4    -X0*X3 
          BX5    X2-X4       COMPARE
          ZR     X4,PRS3.8   IF END OF VALID OPTIONS
          SX7    X7+B1
          NZ     X5,PRS3.7   IF NO MATCH
          BX6    X6+X7       ADD VALID SELECTION TO MASK
          EQ     PRS3.6      GET NEXT SELECTION 
  
 PRS3.8   MESSAGE  (=C* ERROR IN FILE TYPE SELECTION.*) 
          ABORT 
  
 PRS3.9   SA6    TYM         SAVE FILE TYPE SELECTION MASK
  
*         PROCESS LIST OPTION.
  
          MX0    59          SET OPTION 
          SA2    LO 
          SA1    LOPT 
          SB2    B0 
          SB3    LOPTL
          SX5    B0 
 PRS4     BX4    -X0*X1      PICK SHORT LIST FLAG 
          BX1    X0*X1
          IX6    X1-X2
          ZR     X6,PRS5     IF OPTION FOUND
          SA1    A1+B1
          SB2    B2+B1
          LE     B2,B3,PRS4  IF NOT END OF TABLE
          MESSAGE (=C* INCORRECT LIST OPTION.*) 
          ABORT 
  
*         CHECK FOR PARAMETER CONFLICT. 
  
 PRS5     SA1    USERNUM
          SA2    FILENAM
          BX3    X2          SET SELECTED ENTRY FLAG
          SB3    PMTL        SET PROPER MODE
          SX6    B0 
          SX7    PTPE        SUBTITLE FOR ALTERNATE USER
          LT     B2,B3,PRS6  IF NOT PERMIT DATA REQUEST 
          SX5    B1          SET PERMIT LIST FLAG 
          SX7    PTPD        SUBTITLE FOR SPECIFIED FILE NAME 
          BX3    X1          SET SELECTED ENTRY FLAG
          NZ     X2,PRS7     IF FILE NAME SPECIFIED 
 PRS5.1   MESSAGE  (=C* FILE NAME MISSING.*)
          ABORT 
  
 PRS6     SB3    B2-MOLC
          NZ     B3,PRS6.1   IF *LO=X* OPTION NOT SPECIFIED 
          SA3    HDRI 
          NZ     X1,PRS1     IF USER NAME SPECIFIED 
          NZ     X3,PRS1     IF MULTIPLE FILE NAMES SPECIFIED 
          ZR     X2,PRS5.1   IF FILE NAME NOT SPECIFIED 
 PRS6.1   ZR     X1,PRS8     IF USER NAME NOT SPECIFIED 
          SX6    ALTC        SET ALTERNATE CATALOG MODE 
 PRS7     SA7    PTPC        SET SUBTITLE FLAG
 PRS8     SX6    X6+B2
          SA6    MODE 
          MX0    42 
          ZR     X4,PRS9     IF NOT SHORT FILE LIST 
          BX6    X0*X3       SET SELECTIVE ENTRY FLAG 
          SA6    CTLA 
  
*         SET *PFM* FET PARAMETERS. 
  
 PRS9     BX6    X0*X2
          SA6    FILE        SET FILE NAME IN SUBTITLE LINE 
          BX6    X6+X5
          SA6    I+CFPN 
          BX7    X0*X1       SET USER NAME
          SA7    I+CFOU 
          SA7    AUSER
          ZR     X5,PRS10    IF NOT PERMIT DATA 
          SX6    CTLD        SET PERMIT MESSAGE ADDRESS 
          SA6    CTLB 
  
*         SET USER NAME OR USER INDEX IN TITLE LINE.
  
 PRS10    GETPFP PRSB 
          SA1    PRSB+2      SET USER NAME IN TITLE LINE
          BX6    X0*X1
          SA6    USER 
          NZ     X6,PRS10.1  IF USER NAME FOUND 
          RJ     COD         SET USER INDEX IN TITLE LINE 
          MX7    42 
          BX4    X7*X4
          SX6    3RUI/
          BX6    X4+X6
          LX6    -18
 PRS10.1  BX1    X6          SPACE FILL NAME
          RJ     SFN
          SB3    PRSC        SET CHARACTERS IN BUFFER 
          SB7    PTPB 
          RJ     SCB
  
*         SET PACKNAME OR FAMILY NAME IN TITLE LINE.
  
          SA1    PACK 
          ZR     X1,PRS11    IF NO PACKNAME SPECIFIED 
          BX6    X1 
          SA6    I+CFPK      SET PACKNAME IN FET
          SX7    1R0
          LX7    54 
          BX7    X6-X7
          ZR     X7,PRS11.1  IF *PN=0* SPECIFIED
 PRS10.2  SX4    3RPN/
          EQ     PRS12       SET PACK NAME IN TITLE LINE
  
 PRS11    SA1    PRSB+1 
          ZR     X1,PRS11.1  IF NO PACKNAME SET IN CPA
          BX6    X0*X1
          EQ     PRS10.2     SET PACKNAME IN TITLE LINE 
  
 PRS11.1  SA1    PRSB        SET FAMILY NAME IN TITLE LINE
          SX4    3RFM/
          BX6    X1 
 PRS12    BX1    X6+X4       MERGE FAMILY/PACK NAME WITH DESIGNATOR 
          LX1    -18
          RJ     SFN         SPACE FILL NAME
          SA6    PKNM 
  
*         PROCESS *NO ABORT* AND *WAIT BUSY* PARAMETERS.
  
          SA1    NABT        CHECK NO ABORT OPTION
          SA2    WBSY 
          IX1    X1+X2
          ZR     X1,PRS13    IF NEITHER *NA* NOR *WB* SELECTED
          SX2    X1-2 
          ZR     X2,PRS1     IF BOTH *NA* AND *WB* SPECIFIED
          SA1    I+1         SET ERROR PROCESSING BIT 
          SX6    B1 
          LX6    44 
          BX6    X1+X6
          SA6    A1 
  
*         PROCESS RESIDENCE.
  
 PRS13    SA1    RES         CHECK RESIDENCE OPTION 
          ZR     X1,PRS14    IF RESIDENCE NOT SET 
          MX0    12 
          BX6    X0*X1       SET DEVICE TYPE IN FET+1 
          SA2    I+1
          BX5    -X0*X2 
          BX6    X5+X6
          SA6    A2 
          LX1    12 
          BX5    X0*X1
          ZR     X5,PRS14    IF NO UNIT NUMBER
          SB7    B1 
          RJ     DXB         CONVERT TO OCTAL 
          NZ     X4,PRS1     IF ERROR 
          SA2    I+CFPK      SET UNIT COUNT IN FET+CFPK 
          MX0    -12
          BX5    X0*X2
          BX6    X6+X5
          SA6    A2 
  
*         PROCESS DEVICE NUMBER.
  
 PRS14    SA5    DN          CHECK DEVICE NUMBER
          ZR     X5,PRS15    IF NOT SET 
          SB7    B0 
          RJ     DXB
          SX2    X6-100B
          NZ     X4,PRS1     IF ERROR 
          PL     X2,PRS1     IF DEVICE NUMBER OUT OF RANGE
          SA5    I+CFOU 
          BX1    X6 
          LX6    12 
          BX6    X6+X5
          SA6    A5 
          RJ     COD         SET DEVICE NUMBER IN TITLE LINE
          MX0    12 
          BX4    X0*X4
          SX6    3RDN/
          BX1    X6+X4
          LX1    -18
          RJ     SFN
          SB3    PRSD 
          SB7    PTPB 
          RJ     SCB
 PRS15    RJ     IPP         INITIALIZE PAGE PARAMETERS 
          JP     CTL
  
  
 PRSA     DATA   37373737373737373737B
 PRSB     BSSZ   3           *GETPFP* PARAMETER BLOCK 
 PRSC     CFORM  13,9        FIELD IN TITLE FOR USER NAME/USER INDEX
 PRSD     CFORM  24,5        FIELD IN TITLE FOR DEVICE NUMBER 
 PRSE     CON    3LCTD       VALID RESIDENCE SELECTION OPTIONS
 PRSF     CON    3LIDA       VALID FILE TYPE SELECTION OPTIONS
 LOPT     SPACE  4,10 
**        LIST OPTIONS. 
*         BIT 0 SET IF SHORT LIST OPTION. 
* 
*         ANY CHANGES MADE TO THIS TABLE WILL AFFECT THE
*         DOCUMENTATION OF MODE VALUES IN THE *PRS* HEADER, 
*         TABLE *TLOT* IN THE MAIN ROUTINE, AND THE PROCESSING
*         FOR HEADERS IN *HDR*. 
  
 LOPT     BSS    0           LIST OPTIONS 
  
          LOC    0           CATALOG DATA LISTS 
 MOSF     VFD    59/0,1/1    SHORT FILE LIST
 MOFL     CON    1LF         FULL FILE LIST 
 MOLC     CON    1LX         LIST FILE AND CATEGORY SET 
  
 ALTC     EQU    *           ALTERNATE CATALOG DATA LISTS 
 MOSA     CON    0           SHORT ALTERNATE FILE LIST
 MOFA     CON    0           LONG ALTERNATE FILE LIST 
  
 PMTL     EQU    *           PERMIT DATA LISTS
 MOSP     VFD    6/0LP,54/1  SHORT PERMIT LIST
 MOFP     CON    0LFP        FULL PERMIT LIST 
  
 LOPTL    EQU    *           TABLE LENGTH 
          LOC    *O 
  
*         ARGUMENT TABLE. 
  
 TARG     BSS    0
 LO       ARG    =0,LO
 UN       ARG    =0,USERNUM,400B
 EF       ARG    EFNM,EFNM,200B 
 FN       ARG    FLNM,FLNM,200B 
 PN       ARG    =0,PACK,400B 
 L        ARG    =0LOUTPUT,O,400B 
 R        ARG    =0,RES 
 NA       ARG    -NZ,NABT 
 RS       ARG    =0,RS
 WB       ARG    -NZ,WBSY 
 DN       ARG    =0,DN,400B 
 TY       ARG    =0,TY
          ARG 
 IPP      SPACE  4,15 
**        IPP - INITIALIZE PAGE PARAMETERS. 
* 
*         ENTRY  NONE.
* 
*         EXIT   JOB DEFAULT PAGE PARAMETERS SET. 
* 
*         USES   X - 0, 1, 2, 6, 7. 
*                A - 1, 2, 6. 
*                B - NONE.
* 
*         MACROS GETPP, SETSLM. 
  
  
 IPP1     SETSLM IPPC        GET CURRENT SCREEN DEFINITION
          SA1    IPPC 
          MX0    -6 
          BX2    -X0*X1      ISOLATE ORDINAL
          LX1    59-6 
          SX6    LMDL        ASSUME LINE MODE 
          PL     X1,IPP3     IF LINE MODE 
          SA2    IPPB+X2     COMPUTE TABLE OFFSET BY ORDINAL
          SX6    X2          GET LINE LIMIT 
 IPP3     SA6    LL          INITIALIZE LINE LIMIT
  
 IPP      SUBR               ENTRY/EXIT 
          SA1    DT 
          ZR     X1,IPP1     IF TTY OUTPUT FILE 
          GETPP  IPPA,LL,PD  GET PAGE PARAMETERS
          SA1    LL          ADJUST LINE LIMIT
          SX6    X1-1 
          EQ     IPP3        RETURN 
  
 IPPA     BSSZ   2           *GETPP* REPLY BUFFER 
  
*         SCREEN SIZE DEFINITIONS.
* 
*         THIS TABLE DEFINES THE NUMBER OF LINES TO OUTPUT TO 
*         FILL A SCREEN, BASED ON THE SCREEN TYPE.  THIS IS 
*         USED IN TERMINAL MODE TO CONTROL OUTPUT OF THE SHORT
*         SORTED LIST, SUCH THAT FILES WILL APPEAR IN 
*         ALPHABETICAL ORDER ON A FULL SCREEN.
* 
*T        60/LC 
* 
*         WHERE  LC = TERMINAL MODE SCREEN LINE COUNT.
* 
*         NOTE :  IF MORE RESIDENT TERMINAL TYPES ARE ADDED 
*         TO *COMCGTO*, MORE ENTRIES SHOULD BE ADDED TO THIS
*         TABLE.
* 
  
 IPPB     BSS    0
          VFD    60/LMDL     NO SCREEN DEFINED
          VFD    60/SMDL     USER DEFINED 
          VFD    60/SMDL+6   RESIDENT *721* DEFINED 
          CON    0           END OF TABLE 
  
 IPPC     CON    0           SETSLM RESPONSE WORD 
          SPACE  4,10 
**        PRESET COMMON DECKS.
  
  
*CALL     COMCARG 
*CALL     COMCSTF 
*CALL     COMCVLC 
          SPACE  4
          END 
