KRONREF 
          IDENT  KRONREF,FETS,KRONREF 
          ABS 
          ENTRY  KRONREF
          ENTRY  MFL= 
          SYSCOM B1          DEFINE (B1) = 1
*COMMENT  KRONREF - SYSTEM CROSS REFERENCE PROGRAM. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  KRONREF - KRONOS SYSTEM CROSS REFERENCE PROCESSOR. 
          SPACE  4
*****     *KRONREF* - KRONOS SYSTEM CROSS REFERENCE PROCESSOR.
*         G. R. MANSFIELD.   70/10/26.
*         A. D. FORET.       75/04/18.
          SPACE  4
***              *KRONREF* GENERATES A CROSS REFERENCE OF SYSTEM
*         SYMBOLS USED BY DECKS ON A MODIFY OPL.
          SPACE  4
***       CONTROL CARD CALL.
* 
* 
*         KRONREF(P1,P2,P3) 
*                PN MAY BE OF THE FOLLOWING FORMS.
*                            PN 
*                            PN=NAME
* 
*         OPTIONS.
* 
*                P           OPL INPUT FROM FILE *OPL*. 
*                P=FNAME     OPL INPUT FROM FILE *FNAME*. 
* 
*                L           LIST OUTPUT ON FILE *OUTPUT*.
*                L=FNAME     LIST OUTPUT ON FILE *FNAME*. 
* 
*                S           SYSTEMS TEXT FROM OVERLAY *NOSTEXT*. 
*                S=NAME      SYSTEMS TEXT FROM OVERLAY *NAME*.
* 
*                G           SYSTEMS TEXT FROM FILE *TEXT*. 
*                G=FNAME     SYSTEMS TEXT FROM FILE *FNAME*.
*                            OVERRIDES ANY *S* SELECTION. 
          SPACE  4
***       DAYFILE MESSAGES. 
* 
*         * ERROR IN KRONREF ARGUMENTS. * - AN ILLEGAL CONTROL CARD 
*                                           WAS SELECTED. 
* 
*         * ERROR IN SYSTEM TEXT. * - DESIGNATED SYSTEM TEXT IS IN THE
*                                     WRONG FORMAT. 
* 
*         * KRONREF COMPLETE.* - NORMAL COMPLETION MESSAGE. 
* 
*         * MEMORY OVERFLOW. * - NOT ENOUGH STORAGE AVAILABLE TO STORE
*                                TABLES.
* 
*         * NO REFERENCES LISTED.* - OPL FILE DID NOT REFERENCE ANY 
*                                    SYSTEM TEXT SYMBOLS.  CHECK FOR
*                                    EMPTY OR INVALID OPL FILE OR BAD 
*                                    SYSTEM TEXT. 
* 
*         * PL ERROR IN DECK (NAME). * - BAD OPL/OPLC DECK. 
          SPACE  4,10 
***       OPERATOR MESSAGES.
* 
*         * SCANNING DECKNAME * - WHERE DECKNAME IS CURRENTLY BEING 
*                                 PROCESSED.
          SPACE  4
****      ASSEMBLY CONSTANTS. 
  
  
 BUFL     EQU    100B        SCRATCH BUFFER LENGTH
 PBUFL    EQU    4001B       OPL FILE BUFFER LENGTH 
 MXCCL    EQU    37B         MAXIMUM LENGTH OF ONE COMPRESSED CARD
 MTBSL    EQU    26000B      NOMINAL TABLE LENGTH 
 MINC     EQU    1000B       MEMORY INCREMENT FOR *TOV* 
 LCFE     EQU    99999       LINE COUNT TO FORCE EJECT
****
          TITLE  MACRO DEFINITIONS. 
 ADDWRD   SPACE  4
**        COMMON DECKS. 
  
  
*CALL     COMCMAC 
*CALL     COMCCMD 
          SPACE  4
**        ADDWRD - ADD WORD TO MANAGED TABLE. 
* 
*         ADDWRD TNAM,WORD
* 
*         ENTRY  *TNAM* = TABLE NAME. 
*                *WORD* = -X- REGISTER CONTAINING WORD. 
*                *WORD* = BOOLEAN -X- REGISTER EXPRESSION.
* 
*         USES   A0, X1.
* 
*         CALLS  ADW. 
  
  
          PURGMAC  ADDWRD 
 ADDWRD   MACRO  TNAM,WORD
          IFC    NE,$X1$WORD$,1 
          BX1    WORD 
          R=     A0,TNAM
          RJ     ADW
 ADDWRD   ENDM
 ALLOC    SPACE  4,10 
**        ALLOC - ALLOCATE TABLE SPACE. 
* 
*         ALLOC  TNAM,N 
* 
*         ENTRY  *TNAM* = TABLE NAME. 
*                *N* = NUMBER OF WORDS TO ADD.
* 
*         USES   A0, X1.
* 
*         CALLS  ATS. 
  
  
          PURGMAC  ALLOC
 ALLOC    MACRO  TNAM,N 
          R=     X1,N 
          R=     A0,TNAM
          RJ     ATS
 ALLOC    ENDM
 OPC      SPACE  4,10 
**        OPC - OPCODE TABLE ENTRY. 
* 
*         OPC    OPCODE,ADDRESS 
* 
*         ENTRY  *OPCODE* = OPERATION CODE. 
*                *ADDRESS* = ADDRESS OF PROCESSOR.
  
  
          PURGMAC  OPC
 OPC      MACRO  OPCODE,ADDR
          VFD    60/0R;A
          IFC    NE,*ADDR** 
          VFD    60/ADDR
          ELSE   1
          CON    OPCX 
 OPC      ENDM
 TABLE    SPACE  4,10 
**        TABLE - GENERATE MANAGED TABLE POINTERS.
* 
*         TABLE  TNAM 
* 
*         ENTRY  *TNAM* = TABLE NAME. 
* 
*         EXIT   *F.TNAM* = ADDRESS OF TABLE FWA POINTER. 
*                *L.TNAM* = ADDRESS OF TABLE LENGTH POINTER.
  
  
          PURGMAC  TABLE
          MACRO  TABLE,TNAM,N 
 TNAM     EQU    *
          VFD    60/MTBS
 F.TNAM   EQU    FTAB+TNAM
          RMT 
 L.TNAM   EQU    LTAB+TNAM
          ORG    L.TNAM 
          DATA   0
          ORG    NTAB+TNAM
          VFD    60/N 
          RMT 
 TABLE    ENDM
          TITLE  FETS AND STORAGE ASSIGNMENTS.
 FETS     SPACE  4,10 
**        FETS. 
  
  
          ORG    103B 
 FETS     BSS    0
  
 O        BSS    0
 OUTPUT   FILEC  PBUF,PBUFL,(FET=6) 
  
 P        BSS    0
 OPL      RFILEB PBUF,PBUFL,(FET=8),EPR 
 FTAB     SPACE  4,10 
**        MANAGED TABLES ARE REFERENCED BY THE TABLE NUMBER *TNAM*. 
*         THE FWA OF A TABLE IS CONTAINED IN *F.TNAM*.
*         THE LENGTH OF A TABLE IS CONTAINED IN *L.TNAM*. 
*         THESE SYMBOLS ARE GENERATED BY THE *TABLE* MACRO. 
  
  
 FTAB     BSS    0
          LOC    0
 TNME     SPACE  4,10 
**        TNME - TABLE OF REFERENCED NAMES. 
*         ENTRY = 1 WORD. 
* 
*T        12/,48/  *NAME* 
*         NAME   NAME RIGHT JUSTIFIED 
  
  
 TNME     TABLE  10          NAMES
 TREF     SPACE  4,10 
**        TREF - TABLE OF REFERENCES. 
*         ENTRY = 1 WORD. 
* 
*T        42/  *DECK*,18/  IN 
*         DECK   DECK NAME
*         IN     INDEX IN *TNME*
  
  
 TREF     TABLE  200
  
*         REMAINDER OF MANAGED TABLE VALUES.
  
 FTABL    BSS    0
          LOC    *O 
  
          VFD    60/MTBS     LWA+1 ALL TABLES 
 LTAB     BSS    0
 NTAB     EQU    LTAB+FTABL 
          HERE
          TITLE  STORAGE ASSIGNMENTS. 
 DATA     SPACE  4,10 
*         COMMON DATA.
  
  
 T1       DATA   0           TEMPORARY STORAGE
 T2       DATA   0
 FL       DATA   0           FIELD LENGTH 
 SL       DATA   0           SYSTEM SYMBOL LENGTH 
 RF       DATA   0           REFERENCE FLAG 
 PP       DATA   0           PP CODE
 DN       DATA   0           DECK NAME
 CH       DATA   0           NEXT CHARACTER 
 CP       DATA   0           CHARACTER POINTER
 LIST     SPACE  4,10 
*         LIST CONTROLS.
  
  
 LC       CON    LCFE        LINE COUNT 
 LL       CON    0           LINE LIMIT 
 PD       CON    0           PRINT DENSITY
 PN       CON    1           PAGE NUMBER
 ST       CON    0,LSRA      ADDRESS OF SUBTITLE LINES
 TX       CON    0           SYSTEXT PRESENT FLAG 
          SPACE  4
*         PROGRAM LIBRARY STATISTICS. 
  
  
 BLANK    CON    0           BLANK STATEMENTS 
 CALL     CON    0           *CALL STATEMENTS 
 CODE     CON    0           LINES OF CODE NOT OTHERWISE COUNTED
 COMNT    CON    0           * TYPE COMMENT STATEMENTS
 INACT    CON    0           INACTIVE STATEMENTS
 BLOCK    SPACE  4
*         BLOCK STORAGE.
  
  
          USE    BUFFERS
  
*         TITLE LINE. 
  
 TITL     DATA   30H1  CROSS REFERENCE OF OPL.
          DATA   10H OPL FILE=
 PLNM     DATA   10H
          DATA   10HSYS. TEXT=
 TXNM     DATA   10H *NONE* 
          DATA   10H
          DATA   10H
 DATE     DATA   1H 
 TIME     DATA   1H 
          DATA   4APAGE 
 PAGE     DATA   1H 
 TITLL    EQU    *-TITL 
  
 CDTX     BSS    MXCCL       CARD TEXT
          USE    *
          TITLE  MAIN PROGRAM.
 KRONREF  SPACE  4,10 
**        KRONREF - MAIN PROGRAM. 
* 
*         USES   X - 1, 6.
*                A - 1, 6.
*                B - 1. 
* 
*         CALLS  LCL, LNK, LOC, LSR, LSS, OPC, PRS, RMT, SCA. 
* 
*         MACROS ENDRUN, MESSAGE, RECALL, WRITEC, WRITER. 
  
  
 KRONREF  SB1    1           (B1) = 1 
          RJ     PRS         PRESET PROGRAM 
          RJ     LSS         LOAD SYSTEMS SYMBOLS 
  
*         BEGIN NEW DECK. 
  
 REF1     RJ     RMT         READ MODIFIER TABLE
          NZ     X1,REF4     IF EOR 
  
*         SCAN DECK CARDS.
  
 REF2     RJ     RPF         READ CARD
          NZ     X1,REF1     IF EOR 
          SA1    CDTX        CHECK FIRST CHARACTER
          NZ     X1,REF3     IF NOT BLANK STATEMENT 
          SA1    BLANK       COUNT BLANK STATEMENT
          SX6    B1 
          IX6    X6+X1
          SA6    A1 
          EQ     REF2        LOOP FOR NEXT STATEMENT
  
 REF3     RJ     LOC         PROCESS LOCATION FIELD 
          ZR     X6,REF2     IF NO PROCESSING 
          SA1    TX 
          ZR     X1,REF2     IF NO SYSTEXT
          RJ     OPC         PROCESS OPCODE 
          NZ     X1,REF2     IF NOT INTERESTING 
          SA2    RF 
          ZR     X2,REF2     IF REFERENCE FLAG OFF
          RJ     SCA         SCAN ADDRESS 
          EQ     REF2        CONTINUE SCAN
  
*         LIST REFERENCE TABLE. 
  
 REF4     SA1    L.TREF 
          ZR     X1,REF6     IF NO REFERENCES 
          RJ     LNK         LINK TABLES
          RECALL P
          SA1    TX 
          ZR     X1,REF4.1   IF NO SYSTEXT
          RJ     LSR         LIST SYMBOL REFERENCES 
 REF4.1   RJ     LCL         LIST SPECIAL CALLS 
          RJ     PLS         ISSUE PROGRAM LIBRARY STATISTICS MESSAGES
          SA1    PN 
          LX1    59 
          NG     X1,REF5     IF PAGE COUNT EVEN 
          WRITEC O,(=2L1 )
 REF5     WRITER O,R
          MESSAGE  (=C* KRONREF COMPLETE.*) 
          ENDRUN
  
 REF6     MESSAGE  (=C* NO REFERENCES LISTED.*) 
          ENDRUN
          TITLE  DECK SCANNING. 
 LOC      SPACE  4,10 
**        LOC - PROCESS LOCATION FIELD. 
* 
*         EXIT   (X6) = NEXT CHARACTER OR 0 IF NO NEXT CHARACTER. 
* 
*         USES   X - 1, 2, 5, 6, 7. 
*                A - 1, 2, 6. 
* 
*         CALLS  ASN, ESR, SNC. 
  
  
 LOC4     SA1    COMNT       COUNT * TYPE COMMENT STATEMENTS
          SX6    B1 
          IX6    X6+X1
          SA6    A1+
          SX6    B0+         CLEAR NEXT CHARACTER 
*         EQ     LOCX        RETURN 
  
 LOC      SUBR               ENTRY/EXIT 
          SX1    B0          SET CHARACTER POINTER
          PX6    X1,B0
          SA6    CP 
          RJ     SNC         SET NEXT CHARACTER 
          SA2    CDTX 
          AX2    54 
          ZR     X2,LOC1     IF NO LOCATION FIELD 
          SX7    X6-1R* 
          ZR     X7,LOC2     IF FIRST CHARACTER = (*) 
          RJ     SNC         SET NEXT CHARACTER 
          RJ     ASN         ASSEMBLE NAME
 LOC1     RJ     SNC         SET NEXT CHARACTER 
          SA1    CODE        COUNT LINE OF CODE 
          SX6    B1 
          IX6    X6+X1
          SA6    A1 
          EQ     LOCX        RETURN 
  
 LOC2     RJ     SNC         SET NEXT CHARACTER 
          RJ     ASN         ASSEMBLE NAME
          SA1    =4RCALL
          BX2    X1-X6
          ZR     X2,LOC2.1   IF CALL FOUND
          SA1    =5RCALLC 
          BX2    X1-X6       CHECK CALLC
          ZR     X2,LOC2.1   IF *CALLC
          SA1    =6RIFCALL
          BX2    X1-X6       CHECK IFCALL 
          ZR     X2,LOC2.0   IF *IFCALL 
          SA1    =7RNIFCALL 
          BX2    X1-X6       CHECK IFCALL 
          NZ     X2,LOC4     IF NOT *IFCALL 
 LOC2.0   RJ     SNC         SET NEXT CHARACTER 
          RJ     ASN         ASSEMBLE NAME
 LOC2.1   SA1    CALL        COUNT *CALL, *CALLC, *IF/NIFCALL 
          SX6    B1 
          IX6    X6+X1
          SA6    A1 
          RJ     SNC         SET NEXT CHARACTER 
          SX2    X6-1R
          NG     X2,LOC3     IF NEXT " SEPARATOR
          RJ     SNC         SET NEXT CHARACTER 
 LOC3     RJ     ASN         ASSEMBLE NAME
          SX5    B0          ENTER COMMON DECK REFERENCE
          RJ     ESR         ENTER SPECIAL REFERENCE
          SX6    B0 
          EQ     LOCX        RETURN 
 OPC      SPACE  4,10 
**        OPC - CHECK OP CODE.
* 
*         ENTRY  (CP) = CHARACTER POINTER,
*                (X0) = SEPARATOR MASK. 
* 
*         EXIT   (X1) = 0 IF ADDRESS FIELD TO BE PROCESSED. 
* 
*         USES   X - 1, 2, 6. 
*                A - 1, 2, 6. 
*                B - 2. 
* 
*         CALLS  ASN. 
  
  
 OPC4     SA6    RF 
          SX1    B1 
  
 OPC      SUBR               ENTRY/EXIT 
          RJ     ASN         ASSEMBLE NAME
          SA1    TOPC        CHECK OPCODE TABLE 
          SB2    B1+B1
 OPC1     ZR     X1,OPCX     IF END OF TABLE - RETURN 
          BX2    X6-X1
          SA1    A1+B2
          NZ     X2,OPC1     LOOP IF NO MATCH FOUND 
          SA2    A1-B1       EXIT TO PROCESSOR
          SB2    X2 
          JP     B2          GO TO PROCESSOR
  
 OPC2     SX6    1
          EQ     OPC4        SET REFERENCE FLAG 
  
 OPC3     SX6    0           CLEAR REFERENCE FLAG 
          SA6    PP          CLEAR PP CODE
          EQ     OPC4        SET REFERENCE FLAG 
 TOPC     SPACE  4,10 
**        TOPC - TABLE OF OPCODES.
* 
*         ALL THOSE WITHOUT A SECOND ARGUMENT WILL NOT HAVE THE 
*         ADDRESS FIELD EVALUATED.
  
  
 TOPC     BSS    0
          OPC    IDENT
          OPC    SST,OPC2 
          OPC    END,OPC3 
          OPC    TITLE
          OPC    EJECT
          OPC    SPACE
          OPC    PERIPH,PERIPH
          OPC    EXECUTE,EXECUTE
          OPC    SYSTEM,SYSTEM
          OPC    ABS
          OPC    STEXT
          OPC    BASE 
          OPC    LIST 
          OPC    ENDM 
          OPC    ENDIF
          OPC    ENDD 
          OPC    ENTRY,ENTRY
          OPC    DIS
          OPC    MICRO
          OPC    IFC
          OPC    XTEXT
          OPC    NOLABEL
          OPC    LIT
          OPC    ERR
          OPC    DATA 
          OPC    STEXT
          OPC    COMMENT
          OPC    MACRO
          OPC    OPDEF
          OPC    USE
          DATA   0
          TITLE  DECK SCANNING. 
 ENTRY    SPACE  4,10 
**        ENTRY - PROCESS ENTRY FOR SPECIAL ENTRY POINTS. 
* 
*         ENTRY  (CP) = CHARACTER POINTER.
* 
*         EXIT   (X1) = 0, IF ADDRESS FIELD TO BE PROCESSED.
* 
*         USES   X - 1, 5.
*                A - 1. 
* 
*         CALLS  ASN, ESR, SNC. 
  
  
 ENTRY    BSS    0           ENTRY
          SA1    PP 
          NZ     X1,OPCX     IF PP CODE 
          RJ     SNC         SET NEXT CHARACTER 
          RJ     ASN         ASSEMBLE NAME
          SA1    ETRA-1      CHECK FOR SPECIAL ENTRY POINTS 
 ETR1     SA1    A1+B1
          ZR     X1,OPCX     IF END OF TABLE - SET NOT INTERESTING
          BX1    X6-X1
          NZ     X1,ETR1     IF NO MATCH
          SX5    B1+B1
          RJ     ESR         ENTER SPECIAL REFERENCE
          SX1    B1 
          EQ     OPCX        RETURN 
  
*         TABLE OF SPECIAL ENTRY POINTS.
  
 ETRA     BSS    0
          CON    4RARG=      SUPPRESS ARGUMENT CRACKING 
          CON    4RCLB=      COMMAND LINE BUFFER FET
          CON    4RDMP=      DUMP CONTROL 
          CON    4RDPA=      *DMP=* PROGRAM WITH ARGUMENTS
          CON    4RLDR=      ALLOW EXECUTE-ONLY READ (LOADER) 
          CON    4RLIB=      ALLOW EXECUTE-ONLY READ (OTHER)
          CON    4RMFL=      SET MINIMUM FIELD LENGTH 
          CON    4RNPC=      NOS PARAMETER CRACKING FORMAT FLAG 
          CON    4RRFL=      SET FIELD LENGTH 
          CON    4RSDM=      SUPPRESS DAYFILE MESSAGE 
          CON    4RSSJ=      SPECIAL SYSTEM JOB 
          CON    4RSSM=      SECURE SYSTEM MEMORY 
          CON    4RUTL=      PF UTILITY 
          CON    4RVAL=      VALIDATION JOB 
          CON    0
 EXECUTE  SPACE  4,10 
**        EXECUTE - PROCESS EXECUTE MACRO.
* 
*         ENTRY  (CP) = CHARACTER POINTER.
* 
*         EXIT   (X1) = 0, IF ADDRESS FIELD TO BE PROCESSED.
* 
*         USES   X - 1. 
*                A - 1. 
* 
*         CALLS  ASN, ESR, SNC. 
  
  
 EXECUTE  BSS    0           ENTRY
          SA1    PP 
          ZR     X1,OPC      IF NOT PP CODE 
          RJ     SNC         ASSEMBLE CALLED PACKAGE
          RJ     ASN         ASSEMBLE NAME
          SX5    B1          ENTER PP CALL
          RJ     ESR
          SX1    B1          ADDRESS FIELD NOT TO BE PROCESSED
          EQ     OPCX        EXIT 
 PERIPH   SPACE  4,10 
**        PERIPH - PROCESS PERIPH.
* 
*         ENTRY  (CP) = CHARACTER POINTER.
* 
*         EXIT   (X1) = 0, IF ADDRESS FIELD TO BE PROCESSED.
* 
*         USES   X - 1, 5.
*                A - 1. 
* 
*         CALLS  ASN, ESR, SNC. 
  
  
 PERIPH   BSS    0           ENTRY
          SX6    B1          SET PP FLAG
          SA6    PP 
          SX5    B1 
          RJ     ENT         ENTER PP NAME
          EQ     OPCX        EXIT 
 SYSTEM   SPACE  4,10 
**        SYSTEM - PROCESS SYSTEM.
* 
*         ENTRY  (CP) = CHARACTER POINTER.
* 
*         EXIT   (X1) = 0, IF ADDRESS FIELD TO BE PROCESSED.
* 
*         USES   X - 1, 5.
*                A - 1. 
* 
*         CALLS  ASN, ESR, SNC. 
  
  
 SYSTEM   BSS    0           ENTRY
          SA1    PP 
          NZ     X1,OPCX     IF PP CODE 
          RJ     SNC         SET NEXT CHARACTER 
          RJ     ASN         ASSEMBLE NAME
          MX5    42          ONLY ENTER 3 CHARACTER NAME
          BX5    X5*X6
          NZ     X5,SYS1     IF MORE THAN 3 CHARACTERS IN NAME
          SX5    3
          RJ     ESR         ENTER SPECIAL REFERENCE
          SX1    B1          SET INTERESTING FLAG 
          EQ     OPCX        RETURN 
  
 SYS1     SX1    B0+         SET NOT INTERESTING FLAG 
          EQ     OPCX        RETURN 
 SCA      SPACE  4,10 
**        SCA - SCAN ADDRESS. 
* 
*         ENTRY  (X0) = SEPARATOR MASK. 
* 
*         USES   X - 1, 2, 6, 7.
*                A - 1, 2, 6. 
*                B - 2, 3, 4. 
* 
*         CALLS  ADW, ASN, SNC. 
* 
*         MACRO  ADDWRD.
  
  
 SCA      SUBR               ENTRY/EXIT 
 SCA1     RJ     SNC         SET NEXT CHARACTER 
 SCA2     SB2    X6-1R
          ZR     B2,SCAX     IF END OF FIELD - RETURN 
          SB3    X6 
          LX7    X0,B3
          NG     X7,SCA1     SKIP SEPARATOR 
          SB2    X6-1R0 
          NG     B2,SCA4     IF ALPHA 
          SB3    X6-1R+ 
          NG     B3,SCA3     IF NUMERIC 
          SB2    X6-1R$ 
          ZR     B2,SCA      IF *$* - RETURN
          EQ     B2,B1,SCAX  IF *$*  - RETURN 
          EQ     SCA4        OTHER THAN *$* 
  
 SCA3     RJ     SNC         NEXT CHARACTER 
          SB3    X6 
          LX7    X0,B3
          PL     X7,SCA3     IF END OF ELEMENT
          EQ     SCA2        PROCESS CHARACTER
  
 SCA4     RJ     ASN         ASSEMBLE NAME
          SA1    SL 
          SA2    F.TNME 
          SB2    B1+B1
          SB3    X1 
          SA1    X2 
          SB4    X2 
 SCA5     BX7    X1-X6
          SB3    B3-B2
          ZR     X7,SCA6     IF FOUND 
          SA1    A1+B2
          NZ     B3,SCA5     LOOP TO END OF TABLE 
          SA1    CH 
          BX6    X1 
          EQ     SCA2        PROCESS CHARACTER
  
 SCA6     MX4    1           SET REFERENCE FLAG 
          SA2    DN 
          BX6    X1+X4
          SX3    A1-B4
          SA6    A1 
          ADDWRD TREF,X2+X3  ENTER REFERENCE
          SA1    CH 
          BX6    X1 
          EQ     SCA2        PROCESS CHARACTER
          TITLE  LIST PROCESSORS. 
 LCL      SPACE  4,10 
**        LCL - LIST SPECIAL CALLS. 
* 
*         USES   X - ALL. 
*                A - ALL. 
* 
*         CALLS  LRC, SFN, SSR. 
  
  
 LCL      SUBR               ENTRY/EXIT 
          SA1    TX 
          NZ     X1,LCL0     IF SYSTEXT PRESENT 
          MX6    0           ZERO TITLES
          SA6    LCLD 
          SA6    A6+B1
 LCL0     SA1    =1H
          SA1    =1H
          SX6    LCLA        SET SUBTITLE 
          BX7    X1 
          SA6    ST+1 
          SA7    BUF+1
          RJ     SSR         SORT SPECIAL REFERENCES
 LCL1     SA1    LCLC        ADVANCE POINTER
          SX6    X1+2 
          SA2    X6 
          SA6    A1 
          ZR     X2,LCLX     IF END OF TABLE - RETURN 
          SA4    A2+B1       TYPE CODE
          SX6    X2          SET SUBTITLE 
          SX7    LCFE        FORCE EJECT
          SA6    ST 
          SA7    LC 
          SA1    F.TNME      (X1) = FWA 
          SA2    SL          (X2) = LENGTH
          IX1    X1+X2
          SA3    L.TNME 
          IX2    X3-X2
 LCL2     ZR     X2,LCL1     IF END OF REFERENCE TABLE
          SA3    X1+B1       NEXT ENTRY 
          BX6    X3-X4
          ZR     X6,LCL4     IF REQUESTED TYPE
 LCL3     SX1    X1+2        ADVANCE TABLE
          SX2    X2-2 
          EQ     LCL2        LOOP 
  
 LCL4     SX6    X1          SAVE POSITION
          SX7    X2 
          SA6    T1 
          SA7    A6+B1
          MX0    42          SPACE FILL NAME
          SA5    A3-B1
          BX1    X0*X5
          RJ     SFN         SPACE FILL NAME
          LX6    -3*6 
          SA6    BUF
          RJ     LRC         LIST REFERENCE CHAIN 
          SA1    T1          RESET POSITION 
          SA2    A1+B1
          SA3    LCLC        RESET TYPE 
          SA4    X3+B1
          EQ     LCL3        LOOP 
  
 LCLA     DATA   10H   DECK 
          DATA   10H
          DATA   C*DECK REFERENCES.*
  
 LCLB     BSS    0
          CON    =C*   COMMON DECK CALLS.*
          CON    0
  
 LCLD     BSS    0
          CON    =C*   PP PACKAGES CALLED.* 
          CON    1
  
          CON    =C*   SPECIAL ENTRY POINTS.* 
          CON    2
  
          CON    =C*   SYSTEM MACRO REQUEST REFERENCES.*
          CON    3
  
          CON    0
  
 LCLC     CON    LCLB-2 
 LNK      SPACE  4,10 
**        LNK - LINK TABLES.
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 6, 7. 
*                B - 2, 3, 4. 
  
  
 LNK      SUBR               ENTRY/EXIT 
          SA1    L.TNME      LEFT JUSTIFY NAMES 
          SA2    F.TNME 
          MX0    6
          SB2    B1+B1
          SB3    X1 
          SA1    X2 
 LNK1     LX1    6
          BX2    X0*X1
          ZR     X2,LNK1     IF CHARACTER NOT LEFT JUSTIFIED
          BX6    X1 
          SA6    A1 
          SB3    B3-B2
          SA1    A1+B2
          NZ     B3,LNK1     IF NOT THE LAST NAME 
          SA1    L.TREF      LINK REFERENCES
          SA2    F.TREF 
          MX0    42 
          SB2    X1 
          SA3    F.TNME 
          SB2    B2-B1
          SA2    X2+B2
          SB4    X3 
          BX5    X0*X2
 LNK2     SA1    B4+X2
          SX3    A2 
          BX4    X0*X1
          SB2    B2-B1
          SA2    A2-B1
          BX7    -X0*X1 
          IX6    X4+X3
          BX7    X5+X7
          SA6    A1 
          SA7    A2+B1
          BX5    X0*X2
          PL     B2,LNK2     IF MORE REFERENCES 
          EQ     LNKX        RETURN 
 LRC      SPACE  4,10 
**        LRC - LIST REFERENCE CHAIN. 
* 
*         ENTRY  (X5) = FIRST CHAIN ENTRY.
* 
*         USES   X - 0, 1, 2, 3, 5, 6, 7. 
*                A - 1, 2, 3, 6, 7. 
*                B - 2, 6.
* 
*         CALLS  SFN, WOF.
  
  
 LRC6     MX6    0
          SA6    A6+B1
          SX1    BUF
          RJ     WOF         WRITE LINE TO OUTPUT 
  
 LRC      SUBR               ENTRY/EXIT 
          SA1    LC          CHECK LINE COUNT 
          SA2    LL          GET LINE LIMIT 
          SX6    X1+B1
          IX2    X6-X2
          PL     X2,LRC2     IF NOT ROOM FOR FIRST LINE 
          SA3    BUF+1       COMPARE CURRENT VALUE WITH LAST
          SA2    =10H 
          BX7    X2-X3
          ZR     X7,LRC1     IF NO VALUE
          SA2    LRCB 
          BX7    X3 
          SA7    A2 
          BX2    X3-X2
          BX6    X1          RESTORE *LC* 
          ZR     X2,LRC2     IF NO VALUE CHANGE 
 LRC1     SX1    =C*  * 
          RJ     WOF         WRITE LINE TO OUTPUT 
          SA1    LC 
          BX6    X1 
 LRC2     SA6    A1 
          SX5    X5 
          NZ     X5,LRC3     IF ANY REFERENCES
          SA1    =10H **NONE**
          MX6    0
          BX7    X1 
          SA7    BUF+2
          SA6    A7+B1
          SX1    BUF
          RJ     WOF         WRITE LINE TO OUTPUT 
          EQ     LRCX        RETURN 
  
 LRC3     SA1    BUF         SAVE FIRST 2 WORDS OF BUFFER 
          SA2    A1+B1
          BX6    X1 
          LX7    X2 
          MX0    42 
          SA6    LRCA 
          SA7    A6+B1
 LRC4     SB6    -11
          ZR     X5,LRCX     IF END OF LIST - RETURN
 LRC5     ZR     X5,LRC6     IF END OF LIST 
          SA2    X5          NEXT ENTRY 
          BX1    X0*X2       SPACE FILL NAME
          SX5    X2          SET NEXT ADDRESS 
          RJ     SFN         SPACE FILL NAME
          LX6    60-6 
          SA6    BUF+13+B6
          SB6    B6+B1
          NG     B6,LRC5     IF NOT END OF LINE 
          MX6    0
          SA6    A6+B1
          SX1    BUF
          RJ     WOF         WRITE LINE TO OUTPUT 
          SA1    =1H         CLEAR BUFFER 
          BX6    X1 
          LX7    X1 
          SA6    BUF
          SA7    A6+B1
          EQ     LRC4        LOOP 
  
 LRCA     DATA   0,0
 LRCB     DATA   0           LAST VALUE 
 LSR      SPACE  4,10 
**        LSR - LIST SYSTEM SYMBOL REFERENCES.
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 4, 5, 6, 7. 
* 
*         CALLS  COD, LRC, SFN, WOF.
  
  
 LSR      SUBR               ENTRY/EXIT 
          SX3    B1+         SET NOT END OF REFERENCES
 LSR1     SA1    LSRC        ADVANCE SYMBOL CHECK 
          SX6    X1+3 
          SA2    X6          SUBTITLE LINE ADDRESS
          SA6    A1 
          ZR     X3,LSRX     IF END OF SYMBOL LIST
          ZR     X2,LSR2     IF NO SUBTITLE 
          SX7    X2          SET SUBTITLE 
          SX6    LCFE        FORCE EJECT
          SA7    ST 
          SA6    LC 
          EQ     LSR3        SKIP LINE CHECK
  
 LSR2     SA1    LC          CHECK LINE COUNT 
          SA3    LL          GET LINE LIMIT 
          SX1    X1+2 
          IX7    X1-X3
          PL     X7,LSR3     IF NO ROOM FOR LINE
          SX1    =C*  *      LIST BLANK LINE
          RJ     WOF         WRITE LINE TO OUTPUT 
 LSR3     SA1    LSRC        SET MASK 
          SA3    X1+B1       MASK 
          SA4    A3+B1       CHARACTER MATCH
          SA1    F.TNME      (X1) = FWA 
          SA2    SL          (X2) = LENGTH
 LSR4     SA5    X1          NEXT ENTRY 
          BX6    X5*X3
          IX7    X6-X4
          ZR     X7,LSR6     IF MATCH FOUND 
          SX1    X1+2        ADVANCE TABLE
 LSR5     SX2    X2-2 
          NZ     X2,LSR4     IF NOT END OF TABLE
          EQ     LSR1        PROCESS NEXT SYMBOL TYPE 
  
 LSR6     SX6    X1          SAVE POSITION
          SX7    X2 
          SA6    T1 
          SA7    A6+B1
          MX0    42          SPACE FILL NAME
          BX1    X0*X5
          RJ     SFN
          LX6    -3*6 
          SA6    BUF
          SA1    A5+B1       CONVERT VALUE
          RJ     COD
          LX6    3*6
          SA6    A6+B1
          MX7    -0          CLEAR ENTRY
          SA7    A5 
          RJ     LRC         LIST REFERENCE CHAIN 
          SA1    T1          ADVANCE SYMBOL CHAIN 
          SA2    A1+B1
          SX1    X1+2 
          SA3    LSRC        RESET MASK AND CHARACTER 
          SA3    X3+B1
          SA4    A3+B1
          EQ     LSR5        LOOP TO NEXT REFERENCE 
  
 LSRA     DATA   10H   SYMBOL 
          DATA   10H  VALUE 
          DATA   C*DECK REFERENCES.*
  
 LSRB     BSS    0
  
          CON    =C*   DIRECT LOCATIONS.* 
          VFD    12/0,30/7777777777B,18/0 
          CON    0
  
          CON    =C*   PP RESIDENT ENTRY POINTS.* 
          VFD    18/0,24/77777777B,18/0 
          CON    0
  
          CON    0
          VFD    6/77B,18/0,18/777777B,18/0 
          VFD    6/1L.,54/0 
  
          CON    0
          VFD    42/77777777777777B,18/0
          CON    0LPPFW 
  
          CON    =C*   MONITOR FUNCTIONS.*
          VFD    18/0,6/77B,36/0
          VFD    18/0,6/1RM,36/0
  
          CON    =C*   MASS STORAGE TABLE WORDS.* 
          VFD    12/0,18/777777B,30/0 
          VFD    12/0,18/2LGL,30/0
  
          CON    0
          VFD    12/0,18/777777B,30/0 
          VFD    12/0,18/2LLL,30/0
  
          CON    =C*   GLOBAL/LOCAL FNT WORDS, ORDINALS.* 
          VFD    12/0,18/777777B,30/0 
          VFD    12/0,18/2LTG,30/0
  
          CON    0
          VFD    12/0,18/777777B,30/0 
          VFD    12/0,18/2LTL,30/0
  
          CON    0
          VFD    12/0,18/777777B,30/0 
          VFD    12/0,18/2LFO,30/0
  
          CON    =C*   CENTRAL MEMORY POINTERS.*
          VFD    18/0,12/7777B,30/0 
          VFD    18/0,6/1RP,36/0
  
          CON    =C*   CENTRAL MEMORY LOCATIONS.* 
          VFD    18/0,12/7777B,30/0 
          VFD    18/0,12/1LL,30/0 
  
          CON    0
          VFD    18/0,12/7777B,30/0 
          VFD    18/0,12/2RLL,30/0
  
          CON    =C*   CONTROL POINT AREA WORDS.* 
          VFD    18/0,12/7777B,30/0 
          VFD    18/0,12/1LW,30/0 
  
          CON    0
          VFD    18/0,12/7777B,30/0 
          VFD    18/0,12/2RWE,30/0
  
          CON    0
          VFD    18/0,12/7777B,30/0 
          VFD    18/0,12/2RWL,30/0
  
          CON    =C*   EJT, EST, QFT RELATED.*
          VFD    18/0,12/7777B,30/0 
          VFD    18/0,12/1LE,30/0 
  
          CON    0
          VFD    18/0,12/7777B,30/0 
          VFD    18/0,12/1LQ,30/0 
  
          CON    =C*   NFL SYMBOLS, AND DAYFILE MESSAGE OPTIONS.* 
          VFD    18/0,6/77B,36/0
          VFD    18/0,6/1RN,36/0
  
          CON    =C*   FILE TYPES, AND MASS STORAGE CONSTANTS.* 
          VFD    12/0,12/7777B,36/0 
          VFD    12/0,12/2RFT,36/0
  
          CON    0
          VFD    12/0,12/7777B,36/0 
          VFD    12/0,12/2RMS,36/0
  
          CON    0
          VFD    12/0,18/777777B,30/0 
          VFD    12/0,18/2LSF,30/0
  
          CON    0
          VFD    12/0,12/7777B,36/0 
          VFD    12/0,12/2RSS,36/0
  
          CON    0
          VFD    12/0,12/7777B,36/0 
          VFD    12/0,12/2RTS,36/0
  
          CON    =C*   ORIGIN TYPES AND QUEUE TYPES.* 
          VFD    12/0,12/7777B,36/0 
          VFD    12/0,12/2ROT,36/0
  
          CON    0
          VFD    12/0,12/7777B,36/0 
          VFD    12/0,12/2RQT,36/0
  
          CON    =C*   ERROR FLAGS.*
          VFD    12/0,12/7777B,36/0 
          VFD    12/0,12/2RET,36/0
  
          CON    =C*   MISCELLANEOUS.*
          VFD    36/0,6/77B,18/0
          CON    0
  
          CON    0,0
  
 LSRC     CON    LSRB-3 
          TITLE  SUBROUTINES. 
 ABT      SPACE  4,10 
**        ABT - ABORT JOB.
* 
*         ENTRY  (A0) = FWA OF MESSAGE. 
* 
*         MACROS ABORT, MESSAGE.
  
  
 ABT      MESSAGE A0,,R      OUTPUT MESSAGE 
          ABORT 
 ADW      SPACE  4,10 
**        ADW - ADD ENTRY TO A TABLE. 
* 
*         ENTRY  (A0) = TABLE POINTER ADDRESS.
*                (X1) = ENTRY.
* 
*         EXIT   (X6) = ENTRY.
*                (A6) = ADDRESS OF ENTRY. 
*                (X3) = INDEX OF ENTRY. 
* 
*         USES   X - 1, 2, 3, 4, 6, 7.
*                A - 1, 2, 3, 4, 6, 7.
*                B - 2. 
* 
*         CALLS  ATS. 
* 
*         MACROS ALLOC. 
  
  
 ADW1     BX6    X1          ENTER WORD 
          SX7    X3+B1       ADVANCE LENGTH 
          SA6    X2+B2
          SA7    A3 
  
 ADW      SUBR               ENTRY/EXIT 
          SA2    FTAB+A0     CHECK TABLE ROOM 
          SA3    LTAB+A0
          SA4    A2+B1
          IX6    X2+X3
          SB2    X3 
          IX7    X4-X6
          NZ     X7,ADW1     IF ROOM FOR WORD 
          SA2    NTAB+A0     ALLOCATE TABLE 
          BX6    X1          SAVE WORD
          SA6    ADWA 
          ALLOC  A0,X2
          SA4    NTAB+A0     RESET LAST LENGTH
          SA1    ADWA        RESTORE WORD 
          IX3    X3-X4
          SB2    X3 
          EQ     ADW1        ENTER WORD 
  
 ADWA     DATA   0
 ASN      SPACE  4,10 
**        ASN - ASSEMBLE NAME.
* 
*         ENTRY  (CP) = CHARACTER POINTER.
*                (X0) = SEPARATOR MASK. 
* 
*         EXIT   (X6) = NAME RIGHT JUSTIFIED, ZERO FILLED.
*                (X6) = 0 IF FIRST CHARACTER = * *, OR MORE THAN
*                            7 CHARACTERS ASSEMBLED.
* 
*         USES   X - 1, 2, 5, 6.
*                A - 1. 
*                B - 2. 
* 
*         CALLS  SNC. 
  
  
 ASN      SUBR               ENTRY/EXIT 
          SA1    CH          FIRST CHARACTER
          SB2    X1 
          LX6    X0,B2
          MI     X6,ASNX     IF SEPARATOR - RETURN
          SX5    B0          CLEAR ASSEMBLY 
          BX6    X1 
 ASN1     LX5    6           SHIFT ASSEMBLY 
          BX5    X6+X5       MERGE NEW CHARACTER
          RJ     SNC         SET NEXT CHARACTER 
          SB2    X6 
          LX2    X0,B2
          PL     X2,ASN1     IF NOT A SEPARATOR 
          BX6    X5 
          EQ     ASNX        RETURN 
 ATS      SPACE  4,10 
**        ATS - ALLOCATE TABLE SPACE. 
* 
*         ENTRY  (A0) = TABLE NUMBER. 
*                (X1) = NUMBER OF WORDS.
* 
*         EXIT   (X2) = TABLE FWA.
*                (X3) = TABLE LENGTH. 
* 
*         USES   X - 1, 2, 3, 4, 6, 7.
*                A - 1, 2, 3, 4, 6, 7.
*                B - 2, 3.
* 
*         CALLS  TOV. 
  
  
 ATS5     SA2    FTAB+A0     SET RESPONSE 
          SA3    LTAB+A0
  
 ATS      SUBR               ENTRY/EXIT 
          SA2    FTAB+A0     CHECK TABLE SPACE
          SA3    LTAB+A0
          IX7    X3+X1       ADVANCE LENGTH 
          SA4    A2+B1
          IX6    X2+X7
          SA7    A3 
          IX4    X4-X6
          NG     X4,ATS1     IF NO ROOM FOR CHANGE
          BX3    X7 
          EQ     ATSX        RETURN 
  
*         CHECK AVAILABLE STORAGE.
  
 ATS1     SA2    FTAB+FTABL  CHECK STORAGE
          SA3    FL 
          IX6    X2+X1
          IX7    X3-X6
          NG     X7,ATS4     IF NO ROOM FOR INCREASE
          SA6    A2          UPDATE LWA+1 OF ALL TABLES 
          SB2    A0+B1
          SB3    FTABL
          BX4    X2 
          EQ     B2,B3,ATS5  IF LAST TABLE - RETURN 
  
*         MOVE HIGHER TABLE UP. 
  
 ATS2     SA2    A2-B1       ADVANCE FWA OF HIGHER TABLES 
          IX6    X2+X1
          SA6    A2 
          SB2    B2+B1
          NE     B2,B3,ATS2 
          IX3    X4-X2       (B2) = WORD COUNT
          SB3    X1          (B3) = MOVE INCREMENT
          ZR     X3,ATS5     IF NO MOVE NEEDED
          SB2    X3 
          SA1    X4-1        BEGIN AT LWA 
 ATS3     BX6    X1          MOVE TABLE UP
          SA6    A1+B3
          SB2    B2-B1
          SA1    A1-B1
          NZ     B2,ATS3     IF END OF MOVE 
          EQ     ATS5        RETURN 
  
*         TABLE OVERFLOW. 
  
 ATS4     SX6    A0          SAVE (A0)
          SA6    ATSA 
          BX6    X1          SAVE (X1)
          SA6    ATSA+1 
          RJ     TOV         PROCESS TABLE OVERFLOW 
          SA1    ATSA        RESTORE (A0) 
          SA0    X1 
          SA1    A1+B1       RESTORE (X1) 
          EQ     ATS1        RE-COMPUTE WITH NEW MEMORY 
  
  
 ATSA     BSSZ   2           (A0) AND (X1) STORAGE
 ENT      SPACE  4,10 
**        ENT - ENTER NAME TABLE. 
* 
*         ENTRY  (X5) = REFERENCE TYPE. 
* 
*         USES   X - 1, 2, 3, 6, 7. 
*                A - 1, 2.
*                B - 2, 3.
* 
*         CALLS  ADW. 
* 
*         MACROS ADDWRD.
  
  
 ENT      SUBR               ENTRY/EXIT 
          SA1    DN          RIGHT JUSTIFY DECK NAME
          MX2    -6 
          BX6    X1 
 ENT1     LX6    -6 
          BX7    -X2*X6 
          ZR     X7,ENT1     IF NOT A CHARACTER 
          SA1    L.TNME 
          SA2    F.TNME 
          SB2    B1+B1
          SB3    X1 
          SA1    X2 
          MX2    1
          ZR     B3,ENT3     IF EMPTY TABLE 
 ENT2     BX3    -X2*X1      SCAN NAME TABLE
          IX7    X3-X6
          SB3    B3-B2
          ZR     X7,ENTX     IF FOUND - RETURN
          SA1    A1+B2
          NZ     B3,ENT2     IF NOT THE END OF THE TABLE
 ENT3     ADDWRD TNME,X6
          ADDWRD A0,X5
          EQ     ENTX        RETURN 
 ESR      SPACE  4,10 
**        ESR - ENTER SPECIAL REFERENCE.
* 
*         ENTRY  (X5) = REFERENCE TYPE. 
*                (X6) = NAME RIGHT JUSTIFIED. 
* 
*         USES   X - 1, 2, 3, 6, 7. 
*                A - 1, 2, 6. 
*                B - 2, 3, 4. 
* 
*         CALLS  ADW. 
* 
*         MACROS ADDWRD.
  
  
 ESR      SUBR               ENTRY/EXIT 
          MX1    6*3         TRUNCATE NAME TO 7 CHARACTERS
          BX6    -X1*X6 
          SA1    L.TNME 
          SA2    F.TNME 
          SB2    B1+B1
          SB3    X1 
          SA1    X2 
          SB4    X2 
          MX2    1
          ZR     B3,ESR1.1   IF EMPTY TABLE 
 ESR1     BX3    -X2*X1      SCAN NAME TABLE
          IX7    X3-X6
          SB3    B3-B2
          ZR     X7,ESR2     IF FOUND 
          SA1    A1+B2
          NZ     B3,ESR1     IF THE END OF THE TABLE
 ESR1.1   ADDWRD TNME,X6
          ADDWRD A0,X5
          SA1    A6-B1
          MX2    1
 ESR2     MI     X1,ESRX     IF SYMBOL REFERENCED - EXIT
          BX6    X1+X2       INDICATE REFERENCE 
          SA6    A1 
          SX3    A1-B4
          SA2    DN 
          ADDWRD TREF,X2+X3  ENTER REFERENCE
          EQ     ESRX        RETURN 
 PLE      SPACE  4,10 
**        PLE - PROCESS LIBRARY ERROR.
* 
*         ISSUE DAYFILE MESSAGE *PL ERROR IN DECK*. 
*         ABORT JOB.
* 
*         USES   X - 1, 6.
*                A - 0, 1, 6. 
* 
*         CALLS  ABT. 
  
  
 PLE      SA1    DN          SET DECK NAME IN MESSAGE 
          BX6    X1 
          SA6    PLEB 
          SA0    PLEA 
          EQ     ABT         ABORT JOB
  
 PLEA     DATA   20H PL ERROR IN DECK 
 PLEB     DATA   0
 PLS      SPACE  4,20 
**        PLS - ISSUE PROGRAM LIBRARY STATISTICS MESSAGES.
* 
*         ENTRY  (BLANK) = ACTIVE BLANK STATEMENTS. 
*                (CALL) = ACTIVE *CALL STATEMENTS.
*                (CODE) = ACTIVE NON-COMMENT, NON-BLANK STATEMENTS. 
*                (COMNT) = ACTIVE * TYPE COMMENT STATEMENTS.
*                (INACT) = INACTIVE STATEMENTS. 
* 
*         EXIT   ALL DAYFILE MESSAGES ISSUED. 
* 
*         USES   X - 1, 2, 3, 4, 5, 6, 7. 
*                A - 1, 2, 3, 4, 6. 
* 
*         CALLS  CDD, WOF.
  
  
 PLS      SUBR               ENTRY/EXIT 
          SA1    BLANK       CONVERT NUMBER OF BLANK STATEMENTS 
          RJ     CDD
          SA6    PLSB+1 
          SA1    CALL        CONVERT NUMBER OF *CALL STATEMENTS 
          RJ     CDD
          SA6    PLSC+1 
          SA1    CODE        CONVERT NUMBER OF LINES OF CODE
          RJ     CDD
          SA6    PLSD+1 
          SA1    COMNT       CONVERT NUMBER OF COMMENT STATEMENTS 
          RJ     CDD
          SA6    PLSE+1 
          SA1    INACT       CONVERT NUMBER OF INACTIVE STATEMENTS
          RJ     CDD
          SA6    PLSF+1 
          SA1    BLANK       COMPUTE TOTAL NUMBER OF ACTIVE STATEMENTS
          SA2    CALL 
          SA3    CODE 
          SA4    COMNT
          IX5    X1+X2
          IX7    X3+X4
          IX1    X5+X7
          RJ     CDD         CONVERT TOTAL ACTIVE STATEMENTS
          SA6    PLSG+1 
          SX7    LCFE        FORCE EJECT
          SX6    PLSA        SET SUBTITLE LINE
          SA7    LC 
          SA6    ST 
          SX7    =C*  *      SET SUB-SUB TITLE LINE 
          SX1    PLSB        BLANK STATEMENTS 
          SA7    A6+1 
          RJ     WOF         WRITE OUTPUT FILE
          SX1    PLSC        *CALL STATEMENTS 
          RJ     WOF         WRITE OUTPUT FILE
          SX1    PLSD        LINES OF CODE
          RJ     WOF         WRITE OUTPUT FILE
          SX1    PLSE        * TYPE COMMENTS
          RJ     WOF         WRITE OUTPUT FILE
          SX1    PLSF        INACTIVE STATEMENTS
          RJ     WOF         WRITE OUTPUT FILE
          SX1    PLSG        ACTIVE STATEMENTS
          RJ     WOF         WRITE OUTPUT FILE
          EQ     PLSX        RETURN 
  
 PLSA     DATA   C/   PROGRAM LIBRARY STATISTICS./
 PLSB     DATA   10H0 
          DATA   C/           BLANK STATEMENTS./
 PLSC     DATA   10H0 
          DATA   C/           *CALL STATEMENTS./
 PLSD     DATA   10H0 
          DATA   C/           LINES OF CODE./ 
 PLSE     DATA   10H0 
          DATA   C/           * TYPE COMMENT STATEMENTS./ 
 PLSF     DATA   10H0 
          DATA   C/           TOTAL INACTIVE STATEMENTS./ 
 PLSG     DATA   10H0 
          DATA   C/           TOTAL ACTIVE STATEMENTS./ 
 RMT      SPACE  4,10 
**        RMT - READ MODIFIER TABLE.
* 
*         ENTRY  (DN) = DECK NAME.
*                (MA) = MODIFICATION TABLE ADDRESS. 
* 
*         EXIT   (X0) = TERMINATOR CHARACTOR MASK.
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 6.
*                B - 2, 3.
* 
*         CALLS  ENT. 
* 
*         MACROS MESSAGE, READ, READW.
  
  
 RMT      SUBR               ENTRY/EXIT 
          SA1    L.TNME      CLEAR REFERENCE INDICATORS 
          SA2    F.TNME 
          MX4    1
          SB3    X1 
          SA1    X2 
          SB2    B1+B1
          ZR     B3,RMT2     IF EMPTY TABLE 
 RMT1     BX6    -X4*X1 
          SA6    A1 
          SB3    B3-B2
          SA1    A1+B2
          NZ     B3,RMT1     IF MORE REFERENCES 
 RMT2     READ   P
          READW  P,BUF,17B   READ IDENT TABLE 
          MI     X1,RMTX     IF EOF - RETURN
          SA1    BUF
          LX1    12 
          SB2    X1-7700B 
          NZ     B2,RMT7     IF NO IDENT TABLE
          SA1    BUF+1       SET DECK NAME
          BX6    X1 
          SA6    DN 
          SA6    RMTA+1 
          READW  P,T1,1      READ MODIFIER TABLE LENGTH 
          NZ     X1,PLE      IF EOR 
          SA1    T1          CHECK TABLE
          LX1    18 
          SX6    B0 
          SB2    X1-700100B 
          SB3    X1-700200B 
          NZ     B2,RMT3     IF NOT NORMAL DECK 
          SA3    =0LCMDFILE  CHECK FOR *CMDFILE* - *HELP* TEXT
          BX7    X3-X2
          ZR     X7,RMT7     IF *CMDFILE* SKIP ENTIRE DECK
          EQ     RMT4        PROCESS NORMAL DECK
  
*         CHECK FOR A COMMON DECK.
  
 RMT3     NZ     B3,RMT7     IF NOT A COMMON DECK 
          SX5    B0          ENTER NAME TABLE 
          RJ     ENT
          SA1    T1 
          LX1    18 
          SX6    B1          SET REFERENCE FLAG 
          MX4    4*6
          SA6    RF 
          SA6    PP          SET PP 
          SA2    DN          GET DECK NAME
          SA3    =0LCOMP
          BX2    X4*X2
          IX7    X2-X3
          ZR     X7,RMT4     IF -COMPXXX- 
          SA3    =0LCOMD
          IX7    X2-X3
          SX6    B0 
          ZR     X7,RMT4     IF -COMDXXX- 
          SA6    PP 
 RMT4     LX1    60-18
          SX5    X1 
          ZR     X5,RMT6     IF NO MODIFIERS
 RMT5     READW  P,T1,1      READ OUT MODIFIERS 
          SX5    X5-1 
          NZ     X5,RMT5     IF NOT THE LAST WORD 
 RMT6     MESSAGE RMTA,1
          SA2    =36060020B  MASK FOR BL , + - * /
          SX1    B0          RETURN WITH NO EOR 
          BX0    X2 
          EQ     RMTX        RETURN 
  
 RMT7     READW  P,BUF,BUFL  READ TO EOR
          ZR     X1,RMT7     IF NOT AN EOR
          EQ     RMT2        BEGIN NEXT RECORD
  
 RMTA     DATA   10H SCANNING 
          DATA   0
 RPF      SPACE  4,10 
**        RPF - READ CARD FROM PROGRAM LIBRARY. 
* 
*         ENTRY  (A0) = ADDRESS OF BUFFER.
* 
*         EXIT   (X1) .NE. 0 IF EOR READ. 
*                (CDTX) = TEXT OF COMPRESSED CARD.
* 
*         USES   X - 1, 6.
*                A - 1, 6.
* 
*         MACROS READC. 
  
  
 RPF      SUBR               ENTRY/EXIT 
 RPF1     READC  P,BUF,BUFL  READ CARD HISTORY
          NZ     X1,RPF      IF EOR - RETURN
          READC  P,CDTX,MXCCL  READ COMPRESSED CARD 
          NZ     X1,RPF      IF EOR - RETURN
          EQ     B6,B7,PLE   IF OVERFLOW
          SA1    BUF
          MI     X1,RPF2     IF CARD ACTIVE 
          SA1    INACT       COUNT INACTIVE CARD
          SX6    B1 
          IX6    X6+X1
          SA6    A1 
          EQ     RPF1        LOOP FOR NEXT CARD 
  
 RPF2     BX1    X1-X1       SET NOT EOR FLAG 
          EQ     RPFX        RETURN 
 SNC      SPACE  4,10 
**        SNC - SET NEXT CHARACTER. 
* 
*         ENTRY  (CP) = CHARACTER POINTER.
* 
*         EXIT   (X6) = (CH) = CHARACTER. 
*                (CP) UPDATED.
*                CHARACTER = * * IF END OF CARD REACHED.
* 
*         USES   X - 1, 2, 3, 4, 6, 7.
*                A - 1, 2, 6, 7.
*                B - 2, 3, 4, 5.
  
  
 SNC3     SX4    X1+         SET POSITION 
          MI     B4,SNC4     IF NOT SPACE COUNT 
          SX6    1R          SUPPLY * * 
          EQ     SNC6        SPACE FILL 
  
 SNC4     SX7    X6-1R       CHECK FOR CURRENT CHARACTER BLANK
          ZR     X7,SNC4.1   IF BLANK 
          SX7    X6-76B      CHECK ESCAPE CODE
          NZ     X7,SNC6     IF NOT ESCAPE CODE 
 SNC4.1   SB5    B2+6 
          NE     B5,B3,SNC5  IF NOT AT END OF WORD
          SB5    6           RESET POSITION 
          SX4    X4+B1       ADVANCE TO NEXT WORD 
          SA2    A2+B1       GET NEXT WORD OF CARD
 SNC5     LX7    X2,B5       POSITION CHARACTER 
          BX7    -X3*X7      CHECK FOR SECOND CONSECUTIVE BLANK 
          SX2    X7-1R
          ZR     X2,SNC5.1   IF BLANK 
          ZR     X7,SNC6     IF *00* FOLLOWS 76B
          SX2    X6-76B 
          NZ     X2,SNC6     IF NOT CONVERTING TO UPPER CASE
          SX2    X7-33B 
          PL     X2,SNC6     IF NOT LOWER CASE ALPHABETIC CHARACTER 
          BX6    X7 
 SNC5.1   SB2    B5 
          SX1    X4 
 SNC6     PX7    X1,B2       PACK POSITION
          SA6    CH          SET CHARACTER
          SA7    A1 
  
 SNC      SUBR               ENTRY/EXIT 
          SA1    CP          UNPACK POINTER 
          SA2    X1+CDTX     LOAD WORD FROM CARD
          MX3    54 
          SB3    66 
          UX1,B2 X1 
          SB4    -B1
          SX4    1R          PRESET * * 
 SNC1     SB2    B2+6        ADVANCE CHARACTER INDEX
          NE     B2,B3,SNC2  IF NOT LAST CHARACTER OF WORD
          SB2    6           RESET CHARACTER
          SX1    X1+B1       ADVANCE WORD 
          SA2    A2+B1
 SNC2     LX7    X2,B2       SHIFT TO CHARACTER 
          BX6    -X3*X7 
          NZ     X6,SNC3     IF NOT 00 CHARACTER
          SB4    B4+B1
          NE     B4,B1,SNC1  IF NOT THE LAST SPACE
          BX6    X4 
          SA6    CH 
          EQ     SNCX        RETURN 
 SSR      SPACE  4,10 
**        SSR - SORT SPECIAL REFERENCES.
* 
*         USES   X - 1, 2, 3, 4, 6, 7.
*                A - 0, 1, 2, 3, 4, 5, 6, 7.
*                B - 2, 3, 4, 5, 6, 7.
  
  
 SSR      SUBR               ENTRY/EXIT 
          SA1    F.TNME      (A0) = FWA - 2 
          SA2    SL 
          IX6    X1+X2
          SA3    L.TNME 
          IX7    X3-X2
          SA0    X6-2 
          SB7    X7          N = LENGTH 
          SB6    B7          M = N
 SSR1     SX6    B6          M = M/2
          AX6    2
          LX6    1
          SB6    X6 
          SB3    B1+B1       J = 1
          ZR     B6,SSRX     IF M = 0 - RETURN
          SB4    B7-B6       K = N-M
          SB2    B3 
 SSR2     SB5    B2+B6       L = I+M
          SA1    A0+B2       A(I) 
          SA2    A0+B5       A(L) 
          IX6    X2-X1
          PL     X6,SSR3     IF A(L) .GE. A(I)
          SA3    A1+B1       INTERCHANGE A(L) AND A(I)
          SA4    A2+B1
          BX6    X1 
          LX7    X2 
          SA6    A2 
          SA7    A1 
          BX6    X3 
          BX7    X4 
          SA6    A4 
          SA7    A3 
          SB2    B2-B6       I = I-M
          GT     B2,SSR2     IF I .GT. 0
 SSR3     SB3    B3+2        J = J+1
          SB2    B3 
          LE     B3,B4,SSR2  IF J .LE. K
          EQ     SSR1        LOOP 
 TOV      SPACE  4,10 
**        TOV - TABLE OVERFLOW PROCESSOR. 
* 
*         ENTRY  (FL) = CURRENT FIELD LENGTH. 
* 
*         EXIT   (FL) = NEW FIELD LENGTH. 
* 
*         USES   A - 1, 6.
*                X - 1, 6.
* 
*         CALLS   ABT.
* 
*         MACROS MEMORY.
  
  
 TOV      SUBR               ENTRY/EXIT 
          SA1    FL          INCREMENT FIELD LENGTH 
          SX6    X1+MINC
          SA6    A1 
          LX6    30          POSITION FOR *MEM* CALL
          SA6    TOVA 
          SA1    A6+B1       CHECK MEMORY LIMIT 
          IX1    X1-X6
          NG     X1,TOV1     IF LIMIT REACHED.
          MEMORY CM,TOVA,R
          EQ     TOVX        RETURN 
  
  
 TOV1     SA0    =C* MEMORY OVERFLOW.*
          EQ     ABT         ABORT
  
  
 TOVA     CON    0           MEMORY CALL WORD 
 TOVB     VFD    30/-0,30/0  MAXIMUM MEMORY LIMIT 
 WOF      SPACE  4,10 
**        WOF - WRITE LINE TO OUTPUT. 
* 
*         ENTRY  (X1) = FWA LINE. 
* 
*         USES   X - 1, 2, 3, 6, 7. 
*                A - 1, 2, 3, 6, 7. 
* 
*         CALLS  CDD. 
* 
*         MACROS WRITEC, WRITEW.
  
  
 WOF      SUBR               ENTRY/EXIT 
          SA3    LC          ADVANCE LINE COUNT 
          SX6    X3+B1
          SA6    A3 
          SA2    LL 
          IX2    X6-X2
          NG     X2,WOF1     IF BOTTOM OF PAGE NOT REACHED
          BX6    X1          SAVE REQUEST 
          SA6    WOFA 
          SA1    PN          ADVANCE PAGE NUMBER
          SX6    4           RESET LINE COUNT 
          SX7    X1+B1
          SA6    A3 
          SA7    A1 
          RJ     CDD         CONVERT PAGE NUMBER
          MX1    60-12
          LX6    4*6         STORE PAGE NUMBER
          BX6    X1*X6
          SA6    PAGE 
          SA1    PD 
          ZR     X1,WOF0     IF NO FORMAT EFFECTOR
          WRITEW O,A1,1      WRITE FORMAT EFFECTOR
          BX6    X6-X6
          SA6    PD 
 WOF0     WRITEW O,TITL,TITLL 
          SA1    ST 
          WRITEC X2,X1
          SA1    ST+1 
          WRITEC X2,X1
          WRITEC X2,(=C*  *)
          SA1    WOFA        RESTORE REQUEST
 WOF1     WRITEC O,X1 
          EQ     WOFX        RETURN 
  
 WOFA     DATA   0
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMCRDC 
*CALL     COMCRDW 
*CALL     COMCWTC 
*CALL     COMCWTW 
*CALL     COMCCIO 
*CALL     COMCSYS 
*CALL     COMCCDD 
*CALL     COMCCOD 
*CALL     COMCSFN 
          SPACE  4,10 
          IDENT              FORCE LITERALS 
 PRESET   TITLE  KRONREF PRESET.
 PRS      SPACE  4,10 
**        PRS - PRESET KRONREF. 
* 
*         ENTRY  (A0) = FL. 
* 
*         EXIT   (FL) = FL - 10B. 
* 
*         USES   X - 1, 3, 4, 6.
*                A - 0, 1, 4, 6.
*                B - 4, 5.
* 
*         CALLS  ARG, SFN.
* 
*         MACROS CLOCK, DATE, REWIND. 
  
  
 PRS      SUBR               ENTRY/EXIT 
          SX6    A0-10B 
          SA6    FL 
          MEMORY CM,TOVB,R   GET CURRENT FL/MAXIMUM FL
          CLOCK  TIME        REQUEST TIME 
          DATE   DATE        REQUEST DATE 
          SA1    ACTR        SET ARGUMENT COUNT 
          SB4    X1 
          ZR     B4,PRS1     IF NO ARGUMENTS
          SB5    PRSA 
          SA4    ARGR 
          RJ     ARG         PROCESS ARGUMENTS
          SA0    =C* ERROR IN KRONREF ARGUMENTS.* 
          NZ     X1,ABT      IF ARGUMENT ERRORS 
 PRS1     REWIND P,R
          SA1    P
          MX3    42 
          BX1    X3*X1
          RJ     SFN         SPACE FILL FILE NAME 
          SA6    PLNM 
          RJ     IPP         INITALIZE PAGE PARAMETERS
          EQ     PRSX        RETURN 
 PRSA     SPACE  4,10 
**        PRSA - CONTROL CARD ARGUMENT VALUES.
  
  
 PRSA     BSS    0
 L        ARG    O,O         OUTPUT FILE
 P        ARG    P,P         OPL FILE NAME
 S        ARG    =0LNOSTEXT,LSSA
 G        ARG    =0LTEXT,LSSB USER SUPPLIED TEXT FILE 
          ARG                END OF THE TABLE 
 IPP      SPACE  4,15 
**        IPP - INITIALIZE PAGE PARAMETERS. 
* 
*         EXIT   (LL) = LINE LIMIT. 
*                (PD) = PRINT DENSITY IF NOT TERMINAL OUTPUT FILE.
*                     = 0 IF TERMINAL OUTPUT FILE.
* 
*         USES   X - 2, 6.
*                A - 6. 
* 
*         CALLS  STF. 
* 
*         MACROS GETPP. 
  
  
 IPP      SUBR               ENTRY/EXIT 
          GETPP  IPPA,LL,PD 
          SX2    O           OUTPUT FILE FET ADDRESS
          RJ     STF         SET TERMINAL FILE
          NZ     X6,IPPX     IF NOT TERMINAL FILE 
          SA6    PD 
          EQ     IPPX        RETURN 
  
 IPPA     BSS    2           *GETPP* RESPONSE BLOCK 
 LSS      SPACE  4,10 
**        LSS - LOAD SYSTEMS SYMBOLS. 
* 
*         USES   X - 0, 1, 2, 3, 4, 6, 7. 
*                A - 0, 1, 2, 3, 4, 6, 7. 
*                B - 2, 3, 4, 5, 6, 7.
* 
*         CALLS  ATS, SFN.
* 
*         MACROS ALLOC, OVERLAY, VERSION. 
  
  
 LSS      SUBR               ENTRY/EXIT 
          SA1    LSSB        CHECK TEXT FROM LOCAL FILE 
          ZR     X1,LSS1     IF TEXT FROM SYSTEM
          RJ     SFN         SET TEXT NAME
          SA6    TX          SET SYSTEXT PRESENT
          SA6    TXNM 
          OVERLAY LSSB,101B,,MTBS  LOAD TEXT
          JP     LSS2        NO SYSTEM TEXT 
  
 LSS1     SA1    LSSA        SET TEXT NAME
          ZR     X1,LSSX     IF S=0 
          RJ     SFN
          SA6    TX          SET SYSTEXT PRESENT
          SA6    TXNM 
          VERSION LSSC
          OVERLAY LSSA,101B,SYSTEM,MTBS LOAD TEXT 
 LSS2     MX0    42 
          SA0    =C* ERROR IN SYSTEM TEXT.* 
          SA1    MTBS+1      CHECK FIRST WORD OF TEXT 
          BX6    X0*X1
          NZ     X6,ABT 
          SA1    65B         SET TEMPORARY LENGTH OF TREF 
          SA2    FTAB+FTABL 
          SX6    X1 
          IX7    X2+X6
          SA6    L.TREF 
          SA7    A2 
          SA1    MTBS+1      ALLOCATE NAME TABLE
          ALLOC  TNME,X1
          SA0    =C* ERROR IN SYSTEM TEXT.* 
          ZR     X3,ABT      ABORT IF NO SYMBOLS
          SX6    0           CLEAR REFERENCE LENGTH 
          SA6    L.TREF 
  
*         SORT SYMBOLS BY VALUE.
  
          SA1    F.TREF      (A0) = FWA - 1 
          SB7    X3          N = LENGTH 
          SA0    X1+1 
          SB6    B7          M = N
 LSS3     SX6    B6          M = M/2
          AX6    2
          LX6    1
          SB6    X6 
          SB3    B1+B1       J = 1
          ZR     B6,LSS6     IF M = 0 
          SB4    B7-B6       K = N-M
          SB2    B3 
 LSS4     SB5    B2+B6       L = I + M
          SA1    A0+B2       A(I) 
          SA2    A0+B5       A(L) 
          IX6    X2-X1
          PL     X6,LSS5     IF A(L) .GE. A(I)
          SA3    A1-B1       INTERCHANGE A(L) AND A(I)
          SA4    A2-B1
          BX6    X1 
          LX7    X2 
          SA6    A2 
          SA7    A1 
          BX6    X3 
          BX7    X4 
          SA6    A4 
          SA7    A3 
          SB2    B2-B6       I = I-M
          GT     B2,LSS4     IF I .GT. 0
 LSS5     SB3    B3+2        J = J + 1
          SB2    B3 
          LE     B3,B4,LSS4  IF J = K 
          EQ     LSS3        LOOP 
  
 LSS6     SA1    F.TREF      COPY SYMBOLS 
          SA2    F.TNME 
          SX7    B7          SET SYSTEM SYMBOLS LENGTH
          SA3    X1+2 
          SA4    A3+B1
          SA7    SL 
          BX6    X3 
          LX7    X4 
          SA6    X2 
          SA7    A6+B1
          SB2    B1+B1
 LSS7     SA3    A3+B2
          SA4    A4+B2
          BX6    X3 
          LX7    X4 
          SB7    B7-B2
          SA6    A6+B2
          SA7    A7+B2
          NZ     B7,LSS7     IF MOVE NOT COMPLETE 
          EQ     LSSX        RETURN 
  
 LSSA     CON    0LNOSTEXT
 LSSB     CON    0
 LSSC     VFD    12/12B,12/0,12/0,24/TXNM+1 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMCARG 
*CALL     COMCCPM 
*CALL     COMCLFM 
*CALL     COMCOVL 
*CALL     COMCSTF 
          SPACE  4,10 
*         MEMORY ALLOCATION.
  
  
 BUF      EQU    PRS
 PBUF     EQU    BUF+BUFL    OPL BUFFER 
 MTBS     EQU    PBUF+PBUFL  FWA TABLES 
 MFL=     EQU    MTBS+MTBSL+200000B  NOMINAL RUNNING FL 
          SPACE  4
          END    KRONREF     KRONOS SYSTEM CROSS REFERENCE PROCESSOR
