*DECK QUGEN 
          IDENT  QUGEN
          ENTRY  QUGEN
          B1=1
          SST 
          LIST   F           LIST IF-SKIPPED LINES
          COMMENT  QUERY UPDATE OVERLAY GENERATOR.
 QUGEN    TITLE  QUGEN - QUERY UPDATE OVERLAY GENERATOR.
          SPACE  4,10 
*****     QUGEN - QU OVERLAY GENERATEOR.
* 
*         C. F. RICHARDS     76/09/18 
*         G. E. LOGG         77/02/29 
* 
*         CONTROL DATA PROPRIETARY PRODUCT. 
*         COPYRIGHT CONTROL DATA CORP. 1977.
          SPACE  4,10 
***            QUGEN GENERATES A SKELETON FILE THAT LOOKS LIKE A
*         STRING OF RELOCATABLES WITH OVERLAY DIRECTIVES. 
*         BY USING *COPYLM* TO REPLACE THE DUMMY RELOCATABLES 
*         WITH THE FUNCTIONAL ROUTINES, ONE HAS AN INPUT FILE WHICH 
*         CAN BE USED BY LOADER TO CREATE QUERY UPDATE. 
          SPACE  4,10 
***       QU CONTROL CARD FORMAT. 
* 
* 
*         QUGEN,(LFN),(NOLIB).
* 
*              THE FILE NAME *LFN* IS USED TO CONTROL WHICH FILE
*         QUGEN WRITES THE SKELETON TO.  IF NO FILE NAME IS SPECIFIED 
*         THEN THE FILE *IMAGE* IS USED.  THIS FILE IS REWOUND BEFORE 
*         AND AFTER IT IS USED.  QUGEN ISSUES A DAYFILE MESSAGE 
*         GIVING THE FILE NAME USED BY QUGEN. 
* 
*              THE *NOLIB* OPTION IF PRESENT SPECIFIES THAT THE 
*         L-DECKS (DECKS WITH LDSET TABLES) SHOULD CONTAIN NO LOADER
*         *LIB* INFORMATION.  THIS RE-ACTIVATES THE ABILITY TO USE
*         LDSET(LIB1/LIB2/LIB3) AS A CONTROL CARD.  OTHERWISE 
*         QUGEN WILL BUILD *LDSET* TABLES WHICH CLEAR THE LOCAL 
*         LIBRARY SET AND RESET IT TO THOSE LIBRARIES WHICH ARE 
*         NEEDED TO BUILD QU.  IT IS STILL POSSIBLE TO LOAD ROUTINES
*         FROM LIBRARIES OTHER THAN THOSE USED BY QU BY ADDING THE
*         LIBRARY NAME TO THE GLOBAL LIBRARY SET.  QUGEN PUTS *LIB* 
*         OR *NOLIB* INTO THE PREFIX TABLES OF THE L-DECKS SO THE 
*         USER CAN DISTINGUISH UNDER WHICH OPTION THE L-DECKS 
*         WERE CREATED. 
          SPACE  4,10 
***       QU DIAGNOSTICS AND HELP TEXT. 
* 
* 
*              QUGEN ALSO GENERATES ALL DIAGNOSTIC MESSAGES AND 
*         HELP TEXT INFORMATION FOR QU.  THE OVERLAYS QU1000 TO QU1077
*         ARE RESERVED FOR QU DIAGNOSTIC OVERLAYS.  FURTHERMORE THE 
*         INDEX OVERLAY QU0700 IS USED TO FIND THE CORRECT TEXT OVERLAY 
*         TO LOAD.
* 
* 
*              THE INDEX OVERLAY CONSISTS OF INDEX TABLE ENTRIES AS 
*         GIVEN BELOW TERMINATED BY A ZERO WORD.  ALL HELP TEXT 
*         OVERLAYS PRECEDE THE DIAGNOSTIC OVERLAYS.  A NEW OVERLAY IS 
*         STARTED FOR THE FIRST DIAGNOSTIC TEXT SO THAT BOTH HELP AND 
*         DIAGNOSTIC TEXT ARE NOT MIXED IN ONE OVERLAY. 
* 
*         VFD    1/H,23/0,12/L,6/L1,6/L2,12/N 
* 
*         H    = 1 IF THIS IS A HELP TEXT OVERLAY.
*         L    = LENGTH OF A BUFFER THAT WILL HOLD ANY DIAGNOSTIC OR
*                HELP TEXT OVERLAY. 
*         L1   = PRIMARY LEVEL NUMBER OF THIS OVERLAY.
*         L2   = SECONDARY OVERLAY NUMBER FOR THIS OVERLAY. 
*         N    = MAX LEXICAL ID (HELP TEXT OVERLAY) OR DIAGNOSTIC 
*                NUMBER (FOR DIAGNOSTIC AND HELP OVERLAY) WHICH OCCURS
*                IN THIS OVERLAY. 
* 
* 
*              HELP TEXT OVERLAYS CONSIST OF HELP TEXT ENTRIES AS 
*         GIVEN BELOW TERMINATED BY A ZERO WORD.  EACH HELP TEXT ENTRY
*         HAS A HEADER WORD GIVING THE LEXICAL ID AND THE LENGTH OF THE 
*         TEXT THAT FOLLOWS.  THE TEXT MAY BE MADE UP OF MORE THAN ONE
*         ZERO BYTE TERMINATED LINE.
* 
*         VFD    1/1,35/0,12/L,12/N 
*         DATA   C* HELP TEXT LINE 1 *
*         ...    ...
*         DATA   C* HELP TEXT LINE M *
* 
*         L    = LENGTH OF THE TEXT FOLLOWING THIS HEADER WORD. 
*         N    = LEXICAL ID FOR THIS HELP TEXT. 
* 
* 
*              DIAGNOSTIC TEXT OVERLAYS CONSIST OF DIAGNOSTIC TABLE 
*         ENTRIES GIVEN BELOW TERMINATED BY A ZERO WORD.  EACH ENTRY
*         HAS TWO HEADER WORDS.  ONE FOR THE DIAGNOSTIC PORTION AND 
*         ONE FOR THE HELP TEXT PORTION OF THE DIAGNOSTIC.  THE 
*         DIAGNOSTIC PORTION MUST CONSIST OF ONLY ONE ZERO BYTE 
*         TERMINATED LINE.  THE HELP TEXT PORTION MAY CONSIST OF MANY 
*         ZERO BYTE TERMINATED LINES WITH THE ONLY RESTRICTION THAT 
*         THE ENTIRE DIAGNOSTIC ENTRY FITS IN ONE OVERLAY.
* 
*         VFD    1/0,35/0,12/L3,12/N
*         DATA   C* DIAGNOSTIC TEXT * 
*         VFD    1/1,35/0,12/L4,12/N
*         DATA   C* HELP TEXT LINE 1 *
*         ...    ...
*         DATA   C* HELP TEXT LINE M *
* 
*         L3   = LENGTH OF THE DIAGNOSTIC TEXT THAT FOLLOWS.
*         L4   = LENGTH OF THE HELP TEXT PORTION OF THE TEXT THAT 
*                FOLLOWS. 
*         N    = DIAGNOSTIC NUMBER. 
          SPACE  4,10 
**        MACROS DEFINITIONS. 
  
  
*CALL     MACRO 
          SPACE  4,10 
**        KEYW - MACRO USED TO BUILD DECISION TABLES. 
* 
*         KEYW   TYPE,ADDR
* 
*         TYPE = TYPE OF TABLE. 
*         ADDR = ADDRESS OF PROCESSING ROUTINE. 
* 
*              TABLES GENERATED BY THIS MACRO ARE OF THE FORM:  
*                12/TYPE,30/0,18/ADDR 
  
          PURGMAC KEYW
  
 KEYW     MACRO  TYPE,ADDR
          VFD    12/TYPE,30/0,18/ADDR 
          ENDM
          TITLE  GLOBAL SYMBOL DEFINITIONS. 
          SPACE  4,10 
**        THE FOLLOWING ARE THE TABLE TYPES USED FOR INTERNAL TABLES. 
  
  
 T.DIAG   EQU    1112B       START OF DIAGNOSTIC TEXT 
 T.END    EQU    7777B       END OF ALL QUGEN INTERNAL TABLES 
 T.EPT    EQU    0025B       ENTRY POINT TABLE - SAME AS LOADER EPT 
 T.FPRFX  EQU    4444B       FAKE PREFIX TABLE - QUGEN USE ONLY 
 T.HELP   EQU    1113B       START OF HELP TEXT 
 T.INCL   EQU    3400B       INCLUDE TABLE - QUGEN USE ONLY 
 T.LDSET  EQU    7000B       LDSET TABLE - SAME AS LOADER LDSET 
 T.LIB    EQU    0010B       LIBRARY TABLE - SAME AS LOADER LIB 
 T.LPRFX  EQU    3333B       L-DECK PREFIX TABLE - QUGEN USE ONLY 
 T.NOEPT  EQU    0026B       NO-ENTRY POINT TABLE - SAME AS LOADER NOEPT
 T.NULL   EQU    2222B       NULL TABLE - TO BE IGNORED 
 T.OMIT   EQU    0020B       OMIT TABLE - SAME AS LOADER OMIT 
 T.MAP    EQU    0011B       MAP TABLE - SAME AS LOADER MAP 
 T.OVL    EQU    1111B       OVERLAY TABLE - QUGEN USE ONLY 
 T.PRST   EQU    0012B       PRESET TABLE - SAME AS LOADER PRESET 
 T.SUBST  EQU    0017B       SUBSTITUTE TABLE - SAME AS LOADER SUBST
 T.TSUBST EQU    5555B       TSUBST TABLE - QUGEN USE ONLY
 T.USE    EQU    0016B       USE TABLE - SAME AS LOADER USE 
 T.USEP   EQU    0015B       USEP TABLE - SAME AS LOADER USEP 
          SPACE  4,10 
**        OTHER GLOBAL FLAGS AND SYMBOLS. 
  
  
          LIST   -L          *CALL NUMOPT AT THIS IDENT + 1 
*CALL     NUMOPT
          LIST   L
  
  
 BYTE     EQU    12D         12 BIT BYTE
 CHAR     EQU    6           6 BIT CHAR 
 DN       MICRO  1,,**       CURRENT DIAGNOSTIC NUMBER
 IMBUFFLG EQU    1001B       LENGTH OF BUFFER FOR FET *IMAGE* 
 IO       SET    0700B       INDEX OVERLAY NUMBER 
 LIB.ACT  SET    0           INITIALLY NO LIB MACRO ACTIVE
 MAXTRAP  EQU    32D         MAX NUMBER OF TRAPS IN AN OVERLAY
 NO       SET    0           CURRENT NUMBER OF NON-DIAGNOSTIC OVERLAYS
 OVL.ACT  SET    0           INITIALLY NO OVLAY MACROS ACTIVE 
 PRST.ACT SET    0           INITIALLY NO PRESET MACRO ACTIVE 
  
  
          LIST   X           LIST THE CTEXT OF COMSOVL
*CALL COMSOVL 
          LIST   -X          TURN OFF LISTING OF TEXT DECKS 
          SPACE  4,10 
**        FETS AND BUFFERS. 
  
  
 IMAGE    FILEB  IMBUFF,IMBUFFLG  FET FOR SKELETON FILE 
  
  
          USE    // 
 IMBUFF   BSS    IMBUFFLG    IMAGE FILE BUFFER
 IB       BSS    ND+1        DIAGNOSTIC INDEX BUFFER
          USE    *
          SPACE  4,10 
**        GLOBAL DEFINITIONS. 
  
  
 CI       CON    0           CURRENT ENTRY IN DIAGNOSTIC INDEX BUFFER 
 CL       CON    0           CURRENT OVERLAY LENGTH 
 CO       CON    1000B       CURRENT DIAGNOSTIC OVERLAY NUMBER
 CURTBL   VFD    60/TBLBEGIN CURRENT QUGEN TABLE FOR MAIN LOOP
 DN       CON    0           LAST DIAGNOSTIC NUMBER IN OVERLAY
 LDSETPTR DATA   0           POINTER TO LDSET TBL IN IMAGE BUFFER 
 NOLIB    CON    0           NZ MEANS INHIBIT LIB ENTRIES IN L-DECKS
 TBLPTR   DATA   0           CURRENT TBL FOR LPRFX LOOP 
 TRAPTBL  BSS    0           TABLE OF TRAP NAMES FOR AN OVERLAY 
          DUP    MAXTRAP,1   *MAXTRAP* NAMES POSSIBLE FOR EACH OVERLAY
          DATA   -1          -1 INDICATES UNUSED ENTRY
          DATA   0           0 INDICATES END OF TABLE 
          SPACE  4,10 
****      DAYFILE MESSAGES ISSUED BY QUGEN. 
  
  
 INFM1    DATA   C* GENERATING SKELETON ON LFN - IMAGE* 
 INFM2    DATA   C* QUGEN COMPLETE.*
 ERRABT   DATA   C* QUGEN ABORTED.* 
 ERRM1    DATA   C* UNKNOWN TABLE IN QUGEN INPUT.*
 ERRM2    DATA   C* TRAP TABLE OVERFLOW.* 
 ERRM3    DATA   C* ILLEGAL CONTROL CARD OPTION -.......* 
 ERRM4    DATA   C* TOO MANY DIAGNOSTIC OVERLAYS.*
****
          SPACE  4,10 
**        LOADER TABLES FOR DUMMY PROGRAMS. 
* 
*              QUGEN GENERATES TWO TYPES OF RELOCATABLE PROGRAMS.  ONE
*         TYPE IS GENERATED SO THAT THE UTILITY *COPYL* CAN REPLACE 
*         THE DUMMY RELOCATABLE WITH THE REAL THING.  THIS RELOCATABLE
*         CONSISTS OF JUST A PREFIX TABLE AND A *PIDL* TABLE.  THE
*         SECOND TYPE OF PROGRAM IS USED FOR GENERATING THE DIAGNOSTIC
*         AND HELP TEXT PROGRAMS.  THIS RELOCATABLE CONSISTS OF THE 
*         PREFIX TABLE, *PIDL* TABLE, *XFER* TABLE AND THE *ENTR* 
*         TABLE.  QUGEN WILL LATER ADD THE APPROPRIATE *TEXT* TABLES
*         FOR A COMPLETE BINARY PROGRAM.
  
  
 LPRFX    VFD    12/7700B,12/16B,36/0            PRFX 
 N1       DATA   0L*NAME* 
 DATE     DATA   L*DATE*
 TIME     DATA   L*TIME*
          DATA   10H
          DATA   30HQUGEN  3.2
 LIB      DATA   10HLIB 
          BSSZ   6
          VFD    12/3400B,12/1,36/0              PIDL 
 N2       DATA   0L*NAME* 
 LPRFXLG  EQU    *-LPRFX     TOTAL LENGTH OF DUMMY PROGRAM
          VFD    12/7000B,12/1,36/0              LDSET
          VFD    12/0011B,29/0,18/0,1/1          NO MAP 
          VFD    12/3600B,12/2,36/0              ENTR 
 N3       DATA   L*NAME*
          VFD    42/1,18/0
          VFD    12/4600B,12/1,36/0              XFER 
 N4       DATA   L*NAME*
 LPRG     EQU    *-LPRFX     TOTAL LENGTH OF EXECUTABLE PROGRAM TABLES
 QUGEN    TITLE  QUGEN MAIN LOOP. 
**        MAIN LOOP OF QUGEN. 
  
  
 QUGEN    RJ     INIT        INITIALIZE QUGEN AND CRACK CONTROL CARD
          SA1    CURTBL      (X1) = FWA OF TABLES TO SCAN 
          SA1    X1          (X1) = HEADER WORD OF FIRST TABLE
 QUGEN2   MX0    BYTE        (X0) = MASK FOR BYTE 0 (TABLE TYPE)
          BX3    X0*X1       (X3) = TYPE OF THIS NEW TABLE
          SA2    D.TBL1      (X2) = FIRST ENTRY OF DECISION TBL 1 
 QUGEN3   ZR     X2,ERR01    IF END OF DECISION TABLE 1 
          SB2    X2          PROCESSING ADDRESS FOR THIS TABLE TYPE 
          BX2    X0*X2       (X2) = TYPE CODE FROM DEC. TBL.
          BX2    X2-X3       (X2) = DIFF BETWEEN TWO TYPE CODES 
          ZR     X2,QUGEN4   IF TYPE CODES ARE THE SAME 
          SA2    A2+1        (X2) = NEXT ENTRY OF DECISION TBL 1
          EQ     QUGEN3 
  
 QUGEN4   JP     B2          TRANSFER TO ROUTINE TO PROCESS THIS TABLE
          SPACE  4,10 
**        TABLE PROCESSING ROUTINES RETURN HERE.
  
  
 QUGEN1   SA1    CURTBL      (X1) = FWA OF TABLE JUST SCANNED 
          SA1    X1          (X1) = HEADER WORD OF TABLE SCANNED
          SB3    X1          (B3) = LENGTH OF SCANNED TABLE 
          SA1    A1+B3       (X1) = HEADER OF NEXT TABLE
          SX6    A1          (X6) = FWA OF TABLE TO SCAN
          SA6    CURTBL      NEW CURRENT TABLE
          EQ     QUGEN2 
          SPACE  4,10 
**        DECISION TABLE FOR PROCESSING QUGEN TABLES. 
  
  
 D.TBL1   BSS    0                 DECISION TABLE 1 - MAIN JUMP TABLE 
          KEYW   T.OVL,P=OVL       PROCESS OVERLAY TABLE
          KEYW   T.HELP,P=HELP     PROCESS HELP AND DIAGNOSTIC TEXT 
          KEYW   T.LPRFX,P=LPRFX   PROCESS THE L-DECK TABLES
          KEYW   T.FPRFX,P=FPRFX   PROCESS THE FAKE PREFIX TABLE
          KEYW   T.INCL,P=INCL     PROCESS THE INCLUDE TABLE
          KEYW   T.END,P=END       END OF TABLE PROCESSING
          KEYW   T.NULL,QUGEN1     IGNORE A NULL TABLE
          DATA   0                 END OF DECISION TABLE 1
          TITLE  PROCESSING ROUTINES FOR QUGEN INTERNAL TABLES. 
 P=END    SPACE  4,8
**        P=END - PROCESS END OF TABLES.
* 
*         ENTRY  NONE 
* 
*         EXIT   PROGRAM TERMINATED NORMALLY. 
*         EXIT   IMAGE REWOUND
* 
*         CALLS  SYS= 
  
  
 P=END    REWIND IMAGE,RECALL 
          MESSAGE INFM2,,RECALL 
          ENDRUN
 P=FPRFX  SPACE  4,8
**        P=FPRFX - PROCESS FAKE PRFX TABLE.
* 
*              THIS ROUTINE WILL WRITE A FAKE PREFIX TABLE FOR THE
*         NAMED ROUTINE.  IF PRESENT, AN INCLUDE TABLE IN THIS OVERLAY
*         FOR THE SAME ROUTINE WILL BE CHANGED TO TYPE T.NULL.
* 
*         ENTRY  (A1) = ADDRESS OF HEADER WORD. 
*                (X1) = CONTENTS OF QUGEN INTERNAL TABLE HEADER WORD. 
* 
*         EXIT   TO MAIN LOOP (QUGEN1). 
* 
*         CALLS  CIO= 
  
  
 P=FPRFX  =A5    A1+1        (X5) = NAME FROM THE FPRFX TABLE 
          MX0    BYTE 
          SA2    A1          (A2) = FWA OF THIS TABLE 
  
*         NULLIFY AN *INCL* TABLE OF SAME NAME AS THE OVERLAY.
  
 P=FPRFX1 SB2    X2          (B2) = LENGTH OF THE TABLE 
          ZR     B2,ERR01    IF NO LENGTH, TABLE ERROR
          SA2    A2+B2       (X2) = HEADER OF NEXT TABLE
          BX4    X0*X2       (X4) = TYPE CODE OF THIS TABLE 
          LX4    BYTE        (X4) = RIGHT JUSTIFIED TYPE CODE 
          SX3    X4-T.INCL
          ZR     X3,P=FPRFX2 IF TYPE INCL 
          SX3    X4-T.OVL 
          ZR     X3,P=FPRFX3 IF TYPE OVL
          SX3    X4-T.END 
          NZ     X3,P=FPRFX1 IF NOT TYPE END
          EQ     P=FPRFX3    PROCESS THE FPRFX TABLE
  
*         NULLIFY AN *INCL* TABLE FOR DUPLICATE ENTRIES.
  
 P=FPRFX2 SA3    A2+1        (X3) = NAME FROM FOUND INCL TABLE
          BX3    X5-X3
          NZ     X3,P=FPRFX1 IF NAMES DONT MATCH
          SB6    A2          (B6) = FWA OF INCL TABLE TO NULL 
          RJ     NULLT       NULL A TABLE 
 P=FPRFX3 BX6    X5 
          SA6    N1          SAVE NAME IN LOADER TABLES 
          SA6    N2 
          WRITEW IMAGE,LPRFX,LPRFXLG
          WRITER IMAGE,RCL
          EQ     QUGEN1      BACK TO MAIN LOOP
 P=HELP   SPACE  4,10 
**        P=HELP - PROCESS HELP TEXT AND DIAGNOSTIC OVERLAYS. 
* 
*              THE DIAGNOSTIC OVER LAYS ARE WRITTEN TO THE IMAGE
*         SKELETON FILE BY FIRST WRITING ALL THE HELP TEXT OVERLAYS,
*         FOLLOWED BY THE DIAGNOSTIC OVERLAYS AND COMPLETED BY
*         WRITING AN INDEX OVERLAY FOR THE DIAGNOSTIC PROCESSOR.
* 
*         ENTRY  NONE 
* 
*         EXIT   TO MAIN LOOP (QUGEN2). 
* 
*         CALLS  SDO, TXT, CIO= 
* 
*         USES   X - 0, 1, 2, 3, 4, 5, 6, 7 
*                B - 2, 3, 4, 5, 6, 7 
*                A - 1, 2, 3, 4, 5, 6, 7
  
  
 P=HELP   =X1    1
          =X2    0
          RJ     SDO         START DIAGNOSTIC OVERLAY 
 P=HELP1  SA4    CURTBL 
          SA1    X4 
          MX3    BYTE 
          BX2    X3*X1
          SB3    X1 
          LX2    12 
          SX7    X4+B3       NEW *CURTBL* POINTER 
          SX3    X2-T.HELP
          NZ     X3,P=HELP3  IF NOT A HELP TEXT ENTRY 
          SX0    X1-1        LENGTH OF TEXT TO BE PUT INTO OVERLAY
          =X5    A1+1        STARTING ADDRESS OF TEXT 
          SA2    CL          CURRENT OVERLAY LENGTH 
          IX6    X2+X0
          SX3    X6-OL
          PL     X3,P=HELP2  IF NOT ENOUGH ROOM IN THIS OVERLAY 
          SA6    A2          RESET NEW LWA+1 OF TEXT IN OVERLAY 
          SA7    A4          UPDATE *CURTBL*
          SA3    X5 
          MX7    -12
          BX7    -X7*X3 
          SA7    DN          SAVE DIAGNOSTIC NUMBER 
          RJ     TXT         ADD TEXT BLOCK TO PROGRAM
          EQ     P=HELP1
  
 P=HELP2  =X1    1
          =X2    1
          RJ     SDO         START DIAGNOSTIC OVERLAY 
          EQ     P=HELP1     START NEXT HELP OVERLAY
  
 P=HELP3  SX1    B0 
          =X2    1
          RJ     SDO         START DIAGNOSTIC OVERLAY 
 P=HELP4  SA4    CURTBL 
          SA1    X4 
          MX3    BYTE 
          BX2    X3*X1
          SB3    X1 
          LX2    12 
          SX7    X4+B3       NEW *CURTBL* POINTER 
          SX3    X2-T.DIAG
          NZ     X3,P=HELP5  IF NOT A DIAGNOSTIC OVERLAY
          SX0    X1-1        LENGTH OF TEXT TO BE PUT INTO OVERLAY
          =X5    A1+1        STARTING ADDRESS OF TEXT 
          SA2    CL          FWA OF TEXT IN OVERLAY 
          IX6    X0+X2
          SX3    X6-OL
          PL     X3,P=HELP3  IF NOT ENOUGH ROOM IN THE OVERLAY
          SA6    A2          SET NEW FWA OF TEXT IN OVERLAY 
          SA7    A4          UPDATE *CURTBL*
          SA3    X5 
          MX7    -12
          BX7    -X7*X3 
          SA7    DN          SAVE DIAGNOSTIC NUMBER 
          RJ     TXT         ADD TEXT BLOCK TO PROGRAM
          EQ     P=HELP4
  
 P=HELP5  SX6    IO 
          SA6    CO          SET CURRENT OVERLAY TO INDEX OVERLAY 
          =X2    1
          RJ     SDO         START DIAGNOSTIC OVERLAY 
          SX7    B0          ZERO THE INDEX ENTRY FOR THIS OVERLAY
          SA1    CI 
          SX5    IB          FWA OF TEXT TO BE WRITTEN OUT
          SA7    X1+IB-1     WRITE A ZERO WORD AT END OF OVERLAY
          SX2    B0          FWA OF TEXT IN OVERLAY 
          SX0    X1          LENGTH OF TEXT TO BE WRITTEN 
          RJ     TXT         WRITE TEXT BLOCK TO PROGRAM
          WRITER IMAGE,RECALL 
          SA1    CURTBL 
          SA1    X1          (X1) = NEXT TABLE HEADER WORD
          EQ     QUGEN2      RETURN TO MAIN LOOP
 P=INCL   SPACE  4,8
**        P=INCL - PROCESS *INCL* ENTRY.
* 
*         ENTRY  (A1) = ADDRESS OF HEADER WORD. 
*                (X1) = CONTENTS OF QUGEN INTERNAL TABLE HEADER WORD. 
* 
*         EXIT   TO MAIN LOOP (QUGEN1). 
* 
*         CALLS  CIO=, MOVE 
  
  
 P=INCL   SA5    A1+1        (X5) = NAME OF ROUTINE TO INCLUDE
          BX6    X5 
          SA6    N1          SAVE NAME IN LOADER TABLES 
          SA6    N2 
          WRITEW IMAGE,LPRFX,LPRFXLG
          WRITER IMAGE,RCL
          EQ     QUGEN1      BACK TO MAIN LOOP
 P=LPRFX  SPACE  4,14 
**        P=LPRFX - PROCESS THE LABEL/LDSET PREFIX TABLE. 
* 
*              THIS SECTION HANDLES THE NON-TRIVIAL QUGEN FUNCTIONS.
*         THE LDSET OPTIONS ARE ADDED ON TO A MODEL MINI-PRFX TABLE.
*         THE QUGEN TABLES FOR THE CURRENT OVERLAY ARE SCANNED AND
*         THE OPTIONS FOR IT ARE CONSOLIDATED. THIS WILL BE THE ONLY
*         SET OF LDSET TABLES GENERATED BY QUGEN FOR THIS OVERLAY.
* 
*         ENTRY  (A1) = ADDRESS OF HEADER WORD. 
*                (X1) = CONTENTS OF QUGEN INTERNAL TABLE HEADER WORD. 
* 
*         EXIT   TO MAIN LOOP (QUGEN1). 
* 
*         CALLS  CIO=, TRAP, MOV, ADDWRDS, NULLT
* 
*         USES   ALL
  
  
 P=LPRFX  SA5    A1+1        (X5) = NAME OF L-ROUTINE 
          MX7    42 
          BX7    X7*X5       SET LENGTH = 0 AND DELETE EXTRA CHARACTERS 
          SA7    N1          SAVE NAME IN LOADER TABLES 
          SA7    N2 
          SA2    IMAGE+1     (X2) = FWA OF IMAGE BUFFER 
          MOVE   LPRFX,LPRFXLG,X2 
          SX6    X2 
          SA6    IMAGE+3     RESET OUT POINTER
          SX6    X6+LPRFXLG+1      (X6) = LWA+1 OF LPRFX AND LDSET
          SA6    IMAGE+2     IN POINTER = LWA+1 OF TBLS IN BUFFER 
          SX7    T.LDSET
          LX7    4*BYTE      (X7) = ZERO LENGTH LDSET HEADER
          SA7    X6-1        (A7) = LWA+1 OF LPRFX IN BUFFER
          SX7    A7          (X7) = ADDR OF LDSET HEADER
          SA7    LDSETPTR    SAVE LOC OF LDSET TBL IN BUFFER
          SA1    CURTBL 
          BX6    X1 
          SA6    TBLPTR      (X6) = FWA OF TABLES AT START OF RTN 
          RJ     TSUBST      PROCESS TEMP SUBST TABLES
 P=LPRFX1 SA1    TBLPTR 
          SA1    X1          (A1) = FWA OF CURRENT QUGEN TBL
          SB2    X1          (B2) = LENGTH OF THIS QUGEN TBL
          SA1    A1+B2       (A1) = FWA OF NEXT QUGEN TBL 
          SX6    A1 
          SA6    TBLPTR      UPDATE CURRENT TBL FOR LPRFX PROCESS.
          MX0    BYTE 
          BX2    X0*X1       (X2) = TABLE TYPE
          SA3    D.TBL2      (A3) = FWA OF DECISION TABLE 2 
 P=LPRFX2 SB3    X3          (B3) = TRANSFER ADDR FOR THIS TYPE 
          ZR     X3,ERR01    IF TABLE TYPE NOT IN LIST
          BX3    X0*X3
          BX4    X3-X2       (X4) = DIFF BETWEEN TYPES
          SA3    A3+1 
          NZ     X4,P=LPRFX2 IF NOT THE RIGHT TYPE
          JP     B3          TRANSFER TO PROCESS THIS TYPE TABLE
  
 P=LPRFX3 BX6    X2          (X6) = TABLE TYPE
          SA2    IMAGE+2
          SA6    X2          (X6) = ZERO LENGTH LOADER TABLE ENTRY
          SA5    A6          (A5) = ADDR OF  LOADER TABLE HEADER
          SA3    LDSETPTR    (X3) = ADDR OF LDSET TBL 
          SA3    X3          (X3) = LDSET TBL HEADER
          MX7    1
          LX7    1-2*BYTE    (X7) = WC POSITIONED 1 
          IX7    X3+X7       (X7) = LDSET TBL HEADER W/ INCR WC 
          SA7    A3 
          SX7    X2+1 
          SA7    A2          UPDATE IN POINTER
 P=LPRFX4 SA2    A1 
          SA1    A5          (A5) = ADDR OF  LOADER TABLE HEADER
          RJ     ADDWRDS     ADD WORDS TO LOADER TABLE
          SA2    A2 
          SB6    A2 
          BX2    X0*X2
          LX2    60-4*BYTE   (X2) = RIGHT JUSTIFIED TABLE TYPE
          RJ     NULLT       NULL A TABLE 
          RJ     FINDT       FIND NEXT TABLE OF GIVEN TYPE
          NZ     X3,P=LPRFX1 IF NO MORE TABLES OF THIS TYPE 
          EQ     P=LPRFX4 
  
*         HERE TO TRANSFER THE ONE LIB TABLE FOR THIS OVERLAY 
  
 P=LPRFX5 SA2    NOLIB       (X2) = 0 IF SHOULD NOT DO LIB TABLES 
          SA5    A1          (A5) = FWA OF LIB TABLE
          NZ     X2,P=LPRFX6 IF SHOULD NOT PROCESS LIB TABLE
          SX2    X1          (X2) = COUNT OF WORDS IN LIB TBLS
          SA3    IMAGE+2     (X3) = LWA+1 OF TBLS IN BUFFER 
          IX6    X3+X2       (X6) = LWA+1 OF TBLS AFTER MOVE
          SA6    A3          UPDATE IN PTR
          MOVE   A1,X2,X3    MOVE TABLE TO BUFFER 
          SA1    X3          (X1) = TBL HEADER OF EMPTY LIB TBL 
          MX0    BYTE 
          BX6    X0*X1       (X6) = EMPTY LIB TBL W/O QUGEN TBL LG
          SA6    A1          REPLACE WITH TBL HEADER W/O TBL LG 
 P=LPRFX9 LX2    3*BYTE      WORD COUNT POSITIONED FOR WC FIELD 
          SA1    LDSETPTR    (X1) = ADDRESS OF LDSET TBL HEADER 
          SA1    X1          (X1) = LDSET TBL HEADER
          IX6    X1+X2       (X6) = LDSET TBL HDR W/ NEW WC 
          SA6    A1 
 P=LPRFX6 SB6    A5          (B6) = FWA OF LIB TABLE
          RJ     NULLT       NULL THE LIB TABLE 
          EQ     P=LPRFX1    GO PROCESS NEXT L-DECK TABLE 
  
 P=LPRFX7 WRITER IMAGE,RECALL      WRITE THE TABLE
          EQ     QUGEN1      BACK TO MAIN LOOP
  
 P=LPRFX8 SA5    A1          SAVE ADDRESS OF LOADER TABLE HEADER
          SX2    X1-1        LENGTH OF ACTUAL LOADER TABLE
          SA3    IMAGE+2
          IX6    X2+X3
          SA6    A3          UPDATE LENGTH OF PROGRAM IN BUFFER 
          MOVE   A1+1,X2,X3  MOVE TABLES INTO BUFFER
          EQ     P=LPRFX9 
          SPACE  4,10 
**        DECISION TABLE FOR *LDSET* PROCESSING.
  
  
 D.TBL2   BSS    0                 DECISION TABLE 2 - LDSET PROCESSING
          KEYW   T.OVL,P=LPRFX7    OVERLAY TABLE CONCLUDES L-DECK PROCES
          KEYW   T.HELP,P=LPRFX7   IF START OF DIAGNOSTIC AND HELP TEXT 
          KEYW   T.END,P=LPRFX7    END OF TABLES CONCLUDE L-DECK PROCESS
          KEYW   T.EPT,P=LPRFX3    PROCESS AN ENTRY TABLE 
          KEYW   T.NULL,P=LPRFX1   IGNORE A NULL TABLE
          KEYW   T.INCL,P=LPRFX1   IGNORE AN INCLUDE TABLE
          KEYW   T.SUBST,P=LPRFX3  PROCESS A SUBST TABLE
          KEYW   T.OMIT,P=LPRFX3   PROCESS AN OMIT TABLE
          KEYW   T.MAP,P=LPRFX8    PROCESS A MAP TABLE
          KEYW   T.NOEPT,P=LPRFX3  PROCESS A NO-ENTRY TABLE 
          KEYW   T.LIB,P=LPRFX5    SPECIAL PROCESSING FOR THE LIB TABLE 
          KEYW   T.PRST,P=LPRFX3   PROCESS A PRESET TABLE 
          KEYW   T.USE,P=LPRFX3    PROCESS A USE TABLE
          KEYW   T.USEP,P=LPRFX3   PROCESS A USEP TABLE 
          DATA   0                 END OF DECISION TABLE 2
 P=OVL    SPACE  4,8
**        P=OVL - PROCESS OVERLAY DIRECTIVE.
* 
*         ENTRY  (A1) = ADDRESS OF HEADER WORD. 
*                (X1) = CONTENTS OF QUGEN INTERNAL TABLE HEADER WORD. 
* 
*         EXIT   TO MAIN LOOP (QUGEN1). 
* 
*         CALLS  CIO= 
  
  
P=OVL     WRITEW IMAGE,A1+1,X1-1
          WRITER IMAGE,RCL
          EQ     QUGEN1      BACK TO MAIN LOOP
          TITLE  SUBROUTINES. 
          SPACE  4,10 
**        COMMON DECK ROUTINES USED.
  
  
*CALL     COMCCIO 
  
*CALL     COMCWTW 
  
*CALL     COMMOV
 ADDWRDS  SPACE  4,14 
**        ADDWRDS - ADD WORDS TO A LOADER TABLE.
* 
*         ENTRY  (A1) = FWA OF LOADER TABLE.
*                (A2) = FWA OF QUGEN TABLE TO ADD.
* 
*         EXIT   NONE 
* 
*         CALLS  MOVE, INCRWC 
* 
*         USES   A - 1, 3, 6
*                X - 1, 2, 3, 6 
*                B - 2, 3, 4, 5, 6
  
  
 ADDWRDS  SUBR               ENTRY/EXIT 
          SA1    A1 
          SA2    A2 
          SX2    X2-1        (X2) = NO. WORDS TO MOVE 
          MX3    -BYTE
          LX1    60-3*BYTE
          BX1    -X3*X1      (X1) = WORD COUNT
          SB5    X1+1        (B3) = ORDINAL AT WHICH TO PLACE WRDS
          RJ     INCRWC      INCREMENT WORD COUNT OF LOADER TABLE 
          MOVE   A2+1,X2,A1+B5     MOVE WORDS TO LOADER TABLE 
          SA3    IMAGE+2     (X3) = IN POINTER
          IX6    X3+X2       (X6) = IN POINTER ADVANCED BY NO. WDS
          SA6    A3          REPLACE IN POINTER 
          SA1    LDSETPTR    (X1) = POINTER TO LDSET HEADER 
          SA1    X1          (X1) = LDSET HEADER
          LX2    3*BYTE      (X2) = NO. WORDS IN WC POSITION
          IX6    X1+X2       (X6) = LDSET HEADER WITH INCREASED WC
          SA6    A1          REPLACE LDSET HEADER 
          EQ     EXIT.
 ERR      SPACE  4,10 
**        ERR - PROCESS ERRORS. 
* 
*         ENTRY  NONE 
* 
*         EXIT   PROGRAM ABORTED. 
* 
*         CALLS  MSG=, SYS= 
  
  
 ERR01    SA5    A1          UNKNOWN TABLE
          MESSAGE ERRM1,,RECALL 
          EQ     ABORT
  
 ERR02    MESSAGE ERRM2,,RCL DIAGNOSE TRAP TABLE OVERFLOW 
          EQ     ABORT
  
 ERR03    BX6    X1          (X1) = ERRING PARAMETER
          SA6    ERRM3+3     STORE AT END OF MESSAGE
          MESSAGE ERRM3,,RCL BAD CONTROL CARD PARAMETER 
          EQ     ABORT
  
 ERR04    MESSAGE ERRM4,,RECALL 
          EQ     ABORT       *OL* IS TOO SMALL
  
 ABORT    MESSAGE ERRABT,,RCL  ISSUE QUGEN ABORT MESSAGE
          ABORT 
 FINDT    SPACE  4,10 
**        FINDT - FIND NEXT TABLE OF GIVEN TYPE.
* 
*         ENTRY  (B6) = FWA OF SET OF TABLES. WE START WITH NEXT TABLE. 
*                (X2) = TYPE OF TABLE.
* 
*         EXIT   (X3) " 0 IF NO MORE TABLES OF THAT TYPE. 
*                (A1) = FWA OF FOUND TABLE. 
*                (X1) = HEADER WORD OF TABLE. 
* 
*         CALLS  NONE 
* 
*         USES   A - 1
*                X - 0, 1, 2, 3, 4
*                B - 2
  
  
 FINDT    SUBR               ENTRY/EXIT 
          LX2    4*BYTE 
          MX0    BYTE 
          SA1    B6 
 FINDT2   SB2    X1          (B2) = LENGTH OF THIS TABLE
          ZR     B2,ERR01    IF NO LENGTH, TABLE ERROR
          SA1    A1+B2
          BX3    X0*X1       (X3) = TYPE CODE 
          BX3    X2-X3
          ZR     X3,EXIT.    IF IT IS THE RIGHT TYPE
          BX3    X0*X1       (X3) = TYPE CODE 
          LX3    BYTE 
          SX4    X3-T.OVL 
          ZR     X4,EXIT.    IF FOUND NEXT OVERLAY TABLE
          SX4    X3-T.END 
          ZR     X4,EXIT.    IF END OF ALL TABLES 
          EQ     FINDT2      GO CHECK NEXT TABLE
 INCRWC   SPACE  4,14 
**        INCRWC - INCREMENT WORD COUNT FIELD OF LOADER TABLE.
* 
*         ENTRY  (A1) = FWA OF LOADER TABLE.
*                (X2) = NUMBER OF WORDS ADDED 
* 
*         EXIT   NONE 
* 
*         CALLS  NONE 
* 
*         USES   A - 6
*                X - 1, 6 
  
  
 INCRWC   SUBR               ENTRY/EXIT 
          SA1    A1          (X1) = HEADER WORD OF LOADER TABLE 
          LX2    3*BYTE      (X2) = NO. WORDS POSITIONED TO WC
          IX6    X1+X2       (X6) = HEADER TABLE WITH NEW WC
          LX2    60-3*BYTE   REPOSITION X2
          SA6    A1 
          EQ     EXIT.
 INIT     SPACE  4,14 
**        INIT - INITIALIZATION OF QUGEN. 
* 
*              QUGEN INITALIZATION CONSISTS OF CRACKING THE CONTROL 
*         CARD OPTIONS. 
* 
*         ENTRY  NONE 
* 
*         EXIT   (B1) = 1 
* 
*         CALLS  SYS=, MSG=, CIO= 
* 
*         USES   ALL
  
  
 INIT     SUBR               ENTRY/EXIT 
          SB1    1           (B1) = 1 THROUGH OUT QUGEN 
          DATE   DATE 
          CLOCK  TIME 
          SB2    CHAR        (B2) = VALUE FOR A ONE CHAR SHIFT
          SA1    DATE        (X1) = DATE
          LX6    X1,B2       (X6) = DATE WITHOUT LEADING BLANK
          SA6    A1 
          SA1    TIME        (X1) = TIME
          LX6    X1,B2       (X6) = TIME WITHOUT LEADING BLANK
          SA6    A1 
          SA1    RA.ARG 
          MX0    7*CHAR 
          BX6    X0*X1       (X6) = NEW LFN FOR SKELETON
          ZR     X6,INIT1    IF NO LFN PARAMETER
          SA6    INFM1+3     INSERT INTO INFORM MSG 1 
          SA1    IMAGE       (X1) = WORD 0 OF IMAGE FET 
          BX1    -X0*X1      (X1) = STATUS BITS 
          BX6    X6+X1       (X6) = WORD 0 OF NEW IMAGE FET 
          SA6    A1          REPLACE WORD 0 OF FET
 INIT1    MESSAGE INFM1,,RECALL    INFORMATIVE MESSAGE 1
          REWIND IMAGE,RECALL 
          SA1    RA.ARG      GET FIRST PARAMETER
          ZR     X1,EXIT.    IF NO PARAMETERS AT ALL
          SA1    A1+1        (X1) = SECOND PARAMETER
          ZR     X1,EXIT.    IF NO MORE PARAMETERS
          MX0    7*CHAR 
          BX1    X0*X1       (X1) = PARAMETER WITHOUT SEPARATOR 
          SA2    =C*NOLIB*
          BX4    X1-X2       (X4) = DIFF BETW PARAM 3 AND *NOLIB* 
          NZ     X4,ERR03    IF NOT *NOLIB* THEN ILLEGAL PARAMETER
          BX7    X2 
          =X6    1
          SA6    NOLIB       (NOLIB) = 1 MEANS DONT MAKE LIB TABLES 
          SA7    LIB         PUT *NOLIB* INTO PREFIX TABLES 
          EQ     EXIT.
 NULLT    SPACE  4,14 
**        NULLT - NULLIFY A TABLE.
* 
*         ENTRY  (B6) = FWA OF TABLE TO BE CHANGED TO TYPE T.NULL.
* 
*         EXIT   NONE 
* 
*         CALLS  NONE 
* 
*         USES   A - 1, 6 
*                X - 1, 6 
  
  
 NULLT    SUBR               ENTRY/EXIT 
          SA1    B6 
          MX6    BYTE 
          BX6    -X6*X1      (X6) = HEADER WITHOUT TYPE 
          SX1    T.NULL 
          LX1    4*BYTE 
          BX6    X6+X1       (X6) = HEADER WITH NULL TYPE 
          SA6    A1 
          EQ     EXIT.
 SDO      SPACE  4,10 
**        SDO - START DIAGNOSTIC OVERLAY. 
* 
*         ENTRY  (X1) = HELP FLAG (1=HELP OVERLAY AND 0=DIAGNOSTIC).
*                (X2) = 0 IF WE ARE NOT TO COMPLETE LAST OVERLAY. 
* 
*         CALLS  TXT, CIO=, WTW=
* 
*         USES   X - 0, 1, 2, 3, 4, 5, 6, 7 
*                B - 2, 3, 4, 5, 6, 7 
*                A - 1, 2, 3, 4, 5, 6, 7
  
  
 SDO      SUBR               ENTRY/EXIT 
          SA5    CO          (X5) = CURRENT OVERLAY 
          SA4    CL 
          MX6    0
          SA6    A4          SET CURRENT LENGTH TO ZERO 
          SX6    OL 
          LX1    59 
          LX6    24 
          BX6    X1+X6
          LX5    12 
          BX6    X5+X6       1/H,23/0,12/OL,12/CO,12/** 
          LX5    -12
          SA3    CI 
          SA6    X3+IB       WRITE INDEX ENTRY INTO BUFFER
          =X7    X3+1 
          SA7    A3          INCREMENT CURRENT INDEX IN BUFFER
          SX3    X3-ND       - NUMBER OF DIANOSTIC OVERLAYS ALLOWED 
          ZR     X3,ERR04    IF TOO MANY DIAGNOSTIC OVERLAYS
          ZR     X2,SDO1     IF FIRST CALL TO SDO 
          SA3    DN          LAST DIAGNOSTIC NUMBER 
          BX2    X4 
          =A4    A6-1        GET PREVIOUS ENTRY 
          =X0    1
          BX6    X4+X3
          SA6    A4          ADD LAST DIAGNOSTIC NUMBER TO INDEX
          SX5    SDOB 
          RJ     TXT         WRITE ZERO WORD AT END OF OVERLAY
          SA5    CO          RESTORE X5 
          WRITER IMAGE,RECALL  FLUSH LAST OVERLAY 
 SDO1     MX7    -3 
          =X6    X5+1 
          SX1    1R0
          BX2    -X7*X5 
          SA6    A5          INCREMENT CURRENT OVERLAY NUMBER 
          AX5    3
          IX6    X1+X2       CONVERT 4 OCTAL DIGITS TO Z4 FORMAT
          BX2    -X7*X5 
          LX6    -6 
          AX5    3
          IX2    X1+X2
          BX6    X2+X6
          BX2    -X7*X5 
          LX6    -6 
          AX5    3
          IX2    X1+X2
          BX6    X2+X6
          IX2    X1+X5
          LX6    -6 
          BX6    X2+X6
          LX6    18          Z4 FORMAT OF OVERLAY NUMBER
          SA2    SDOA        ADD OVERLAY NUMBER TO FORM NAME *QUNNNN* 
          SX4    2RQU 
          =A3    A2+1 
          LX4    24 
          BX7    X4+X6
          LX7    24 
          SA7    N1          ADD NAME TO ALL LOADER TABLES
          SA7    N2 
          SA7    N3 
          SA7    N4 
          MX1    -12
          MX4    12 
          LX4    -6 
          BX2    X1*X2       ADD PRIMARY AND SECONARY OVERLAY NUMBERS 
          BX3    -X4*X3 
          BX7    -X1*X6 
          BX6    X1*X6
          LX6    -12
          BX6    X2+X6       ADD PRIMARY OVERLAY NUMBER TO OVERLAY CARD 
          LX7    -18
          SA6    A2 
          BX7    X3+X7       ADD SECONARY OVERLAY NUMBER
          SA7    A3 
          WRITEW IMAGE,SDOA,2  WRITE OVERLAY CARD 
          WRITER IMAGE,RECALL 
          WRITEW IMAGE,LPRFX,LPRG  WRITE DUMMY PROGRAM TO IMAGE 
          EQ     EXIT.
  
 SDOA     DATA   C*OVERLAY(..,..)*
 SDOB     CON    0           ZERO WORD TO BE WRITTEN AT END OF OVERLAY
 TSUBST   SPACE  4,10 
**        TSUBST - PROCESS A TEMPORARY SUBSTITUTE TABLE.
* 
*              THIS ROUTINE BUILDS AND USES A TABLE OF TEMPORARY
*         SUBSTITUTES IN THE CURRENT OVERLAY.  FIRST THE TABLE IS 
*         EMPTIED AND A *SUBST A,A* IS GENERATED FOR EACH TSUBST FROM 
*         THE PREVIOUS OVERLAY.  THIS IS HOW THE SUBSTITUTE IS MADE 
*         TEMPORARY FOR THE CURRENT OVERLAY ONLY.  WE NEXT SCAN THE 
*         TABLES FOR THIS OVERLAY AND ACCUMULATE THE NAMES OF ALL THE 
*         TSUBST ENTRIES, NULLING EACH TSUBST TABLE AS WE GO.  THIS 
*         LIST WILL BE USED TO UNDO THE SUBST DURING THE NEXT OVERLAY.
* 
*         ENTRY  NONE 
* 
*         EXIT   NONE 
* 
*         CALLS  INCRWC, FINDT, NULLT 
  
  
 TSUBST   SUBR               ENTRY/EXIT 
          SB1    1
          SA1    TRAPTBL     (X1) = FIRST ENTRY OF TRAP TABLE 
          SX1    X1+B1
          SB4    A1          IN CASE NO ENTRIES IN TRAP TABLE 
          ZR     X1,TSUBST3  IF NO ENTRIES IN THE TRAP TABLE
          SA2    IMAGE+2     (X2) = IN PTR...LWA+1 TBLS IN BUFFER 
          SX7    X2+B1       (X7) = NEW LWA+1 OF TBLS IN BUFFER 
          SA7    A2 
          SX6    T.SUBST
          LX6    4*BYTE      (X6) = HEADER FOR SUBST TBL
          SA6    X2 
          SA1    X2-1        (X1) = LDSET TABLE HEADER
          SB3    A1          (B3) = ADDR OF LDSET TABLE 
          SX2    1           (X2) = ONE WORD ADDED TO LDSETS
          RJ     INCRWC      INCREMENT WORD COUNT OF LDSET HEADER 
          SA5    TRAPTBL     (X5) = FIRST ENTRY OF TRAP TABLE 
          SA1    IMAGE+2     (X1) = LWA+1 OF TABLES IN IMAGE BUFFR
          SB2    X1          (B2) = LWA+1 OF TABLES IN BUFFER 
 TSUBST1  BX6    X5          TRAP NAME
          SA6    B2          STORE AS NAME 1 IN SUBST TABLE 
          SA6    B2+B1       STORE AS NAME 2 IN SUBST TABLE 
          SB2    A6+B1       (B2) = LWA+1 OF TABLES IN BUFFER 
          SX2    B1+B1       (X2) = 2 WORDS ADDED TO TABLES 
          SA1    B3          (A1) = ADDR OF LDSET TABLE 
          RJ     INCRWC      INCREMENT WORD COUNT OF LDSET TABLE
          SA1    B3+B1       (A1) = ADDR OF SUBST TABLE 
          RJ     INCRWC      INCREMENT WORD COUNT OF SUBST TABLE
          SX6    -B1         (X6) = INDICATOR FOR EMPTY ENTRY 
          SA6    A5          MARK THIS ENTRY AS EMPTY 
          SA5    A5+B1       GET NEXT ENTRY FROM TABLE
          BX6    X6-X5       (X6) = DIFF BETWEEN ENTRY AND -1 
          ZR     X6,TSUBST2  IF NO MORE ENTRIES 
          NZ     X5,TSUBST1  IF NOT AT END OF TABLE 
 TSUBST2  SX6    B2          LWA+1 OF TABLES IN BUFFER
          SA6    IMAGE+2     IN PTR = LWA+1 OF TABLES IN BUFFER 
          SB4    TRAPTBL     (B4) = FWA OF TRAPTBL
 TSUBST3  SA1    TBLPTR 
          SB6    X1          (B6) = ADDR OF CURRENT QUGEN TABLE 
          SX2    T.TSUBST    TSUBST TABLE TYPE
          RJ     FINDT       FINDT TABLE OF SPECIFIED TYPE
          NZ     X3,EXIT.    IF NO MORE TRAP TABLES TO PROCESS
          SA2    A1+B1       (X2) = TRAP NAME 
          SA4    B4          (X4) = NEXT AVAILABLE WORD IN TRAPTBL
          ZR     X4,ERR02    IF TRAPTBL OVERFLOWED...FATAL ERROR
          BX6    X2          (X6) = TRAP NAME 
          SA6    B4 
          SB4    B4+B1       (B4) = LWA+1 OF TRAP TBL ENTRIES 
          SB6    A1          (B6) = ADDR OF QUGEN TRAP TABLE
          RJ     NULLT       NULL A QUGEN TRAP TABLE
          EQ     TSUBST3
 TXT      SPACE  4,10 
**        TXT - ADD TEXT BLOCK TO DIAGNOSTIC OVERLAY. 
* 
*         ENTRY  (X0) = LENGTH OF TEXT. 
*                (X2) = STARTING ADDRESS OF TEXT IN OVERLAY.
*                (X5) = START OF TEXT.
* 
*         CALLS  WTW= 
* 
*         USES   X - 0, 1, 2, 3, 4, 5, 6, 7 
*                B - 2, 3, 4, 5, 6, 7 
*                A - 1, 2, 3, 4, 6, 7 
  
  
 TXT      SUBR               ENTRY/EXIT 
          SA3    TXTA 
          MX7    -18
          BX7    X7*X3       REMOVE OLD STARTING ADDRESS
          BX7    X7+X2       ADD NEW STARTING ADDRESS 
          SX2    X0+14
          SX3    15 
          MX4    12 
          IX3    X2/X3
          LX4    -12
          IX3    X0+X3       LEN + (LEN+14)/15 = LENGTH OF TEXT BLOCK 
          BX7    -X4*X7      REMOVE OLD LENGTH
          LX3    36 
          BX6    X3+X7       ADD NEW LENGTH 
          SA6    A3 
          WRITEW IMAGE,TXTA,1 
 TXT1     ZR     X0,EXIT.    RETURN IF END OF TEXT
          SX0    X0-15
          WRITEW IMAGE,TXTB,1  WRITE RELOCATION WORD
          MI     X0,TXT2     IF NOT ENOUGH FOR A FULL TEXT GROUP
          WRITEW IMAGE,X5,15 WRITE TEXT GROUP 
          SX5    X5+15
          EQ     TXT1 
  
 TXT2     SX0    X0+15
          WRITEW IMAGE,X5,X0 WRITE REMAINING TEXT GROUP 
          EQ     EXIT.
  
 TXTA     VFD    12/4000B,12/**,18/1,18/**
 TXTB     CON    0           RELOCATION WORD
          TITLE  QUGEN INTERNAL TABLE MACROS. 
          SPACE  4,10 
**        QUGEN INTERNAL TABLE MACROS.
* 
* 
*              INTERNAL TABLES FOR QUGEN ARE GENERATED AFTER THE LABEL
*         *TBLBEGIN*.  EACH MACRO (EXCEPT *HELPT*) GENERATES A TABLE
*         HEADER WHICH IS FOLLOWED BY THE TABLE INFORMATION.  THE 
*         HEADER HAS THE FORMAT.
* 
*         VFD    12/T.XXX,30/0,18/LEN 
* 
*         T.XXX = TABLE TYPE. 
*         LEN = LENGTH OF THE TABLE INCLUDING THE HEADER WORD.
* 
* 
*         THE AVAILABLE MACROS ARE: 
* 
* YOURS   BECOMES MINE
*         DIAG   N,TEXT 
*         ENDTBLS 
*         EPT    NAME 
*         HELP   NAME,LEXID 
*         HELPT  TEXT 
*         IGNORE EP 
*         INCL   ROUTINE-NAME 
*         LIB    (LIB1,LIB2,LIB3,...) 
*         MAP    P,LFN
*         NOEPT  NAME 
*         OMIT   EP 
* NAME    OVCAP 
* OVLNAME OVLAY  L1,L2
*         PRESET VALUE
*         SUBST  MINE,YOURS 
*         TRAP   EP 
*         UNIGNORE NAME 
*         USE    EP 
*         USEP   ROUTINE-NAME 
* 
* 
*         CONSTRAINTS.
* 
*           1.   THERE MUST BE AN OVLAY MACRO ACTIVE FOR ANY OTHER MACRO
*                TO BE USED.
* 
*           2.   THERE MAY BE AT MOST ONE PRESET MACRO PER OVERLAY. 
* 
*           3.   THERE MAY BE AT MOST ONE LIB MACRO PER OVERLAY 
* 
*           4.   ANY NUMBER OF THE OTHER MACROS MAY OCCUR IN EACH 
*                OVERLAY. THEIR OCCURENCES WILL BE CLUSTERED TOGETHER IN
*                IN A DECK WHOSE NAME IS -L- CONCATENATED WITH THE NAME 
*                OF THE OVERLAY (E.G.  LQU0100).  THIS DECK WILL BE 
*                AUTOMATICALLY GENERATED BY QUGEN, SO USE OF THESE
*                NAMES MUST BE AVOIDED. 
* 
*           5.   TRAP MACROS EFFECT THE CURRENT OVERLAY ONLY.  THE
*                IGNORE, BECOMES AND SUBST MACROS STAY IN EFFECT UNTIL
*                THE END OF LOAD OR UNTIL CANCELLED BY THE UNIGNORE 
*                MACRO. 
*                BECOMES, AND SUBST REMAIN IN EFFECT UNTIL END-OF-LOAD
*                OR UNTIL CANCELLED BY AN UNIGNORE. 
* 
*           6.   THE *USEP* MACRO SHOULD BE USED WITH CAUTION.  WITH
*                *USEP* EXTERNALS FROM A PROGRAM CALLED IN BY *USEP*
*                WOULD NOT GET ITS EXTERNALS SATISFIED FROM THE SAME
*                LIBRARY UNLESS SOME OTHER ROUTINE WAS SUBSEQUENTLY 
*                LOADED FROM ANOTHER LIBRARY, THUS CAUSING THE ORIGINAL 
*                LIBRARY TO BE SEARCHED AGAIN.  UNTIL THE LOADER FIXES
*                THIS DEFICIENCY PLEASE USE THE *USE* MACRO.
          SPACE  4,10 
**        BECOMES - MACRO TO MAKE A READABLE SUBSTITUTION.
* 
* YOURS   BECOMES MINE,F
* 
*         MINE = ENTRY POINT NAME TO BE USED IN PLACE OF *YOURS*. 
*         YOURS = ENTRY POINT NAME TO BE REPLACED.
*         F = NIL FOR A TEMPORARY SUBSTITUTE OR *FOREVER* IF THE
*         SUBSTITUTE WILL STAY IN EFFECT ACROSS OVERLAY LOADS.
* 
*              IF THE *FOREVER* OPTION IS USED THEN THIS MACRO
*         TRANSLATES INTO A SUBST MACRO.  IF THE *F* OPTION IS OMITTED
*         THEN A TEMPORARY SUBST IS DEFINED FOR THE CURRENT OVERLAY.
  
          PURGMAC BECOMES 
  
          MACRO  BECOMES,YOURS,MINE,F 
          IFC       EQ, F  ,6 
          IFGE   NUM.TRAP,MAXTRAP,1 
          ERR    TOO MANY TSUBSTS IN THIS OVERLAY.
 NUM.TRAP SET    NUM.TRAP+1 
          VFD    12/T.TSUBST,30/0,18/2
          VFD       42/0L_YOURS,18/0
          SKIP   1
          IFC       EQ, F FOREVER ,2
          SUBST  MINE,YOURS  SUBSTITUTE MINE FOR YOURS
          SKIP   1
          ERR    UNRECOGNIZABLE PARAMETER - F.
          ENDM
 DIAG     SPACE  4,10 
**        DIAG - MACRO FOR DEFINING DIAGNOSTIC TEXT.
* 
*         DIAG   N,TEXT,F 
* 
*         N    = DIAGNOSTIC NUMBER (FROM 1 TO 4095).
*         TEXT = TEXT WHICH WILL BE GIVEN WHEN THIS ERROR OCCURS. 
*         F    = FATAL FLAG 
* 
*              THIS MACRO GENERATES THE APPROPRIATE HEADER WORDS FOR
*         THE DIAGNOSTIC AND HELP TEXT THAT WILL FOLLOW.  EACH
*         DIAGNOSTIC MUST BE INSERTED IN NUMERICAL ORDER. 
*         OCCURENCES OF THE SUBSTRING <X> IN THE TEXT WILL CAUSE THE
*         CHARACTER SUBSTRING TO BE REPLACED DEPENDING ON THE 
*         VALUE OF X.  THE ROUTINE *DIAG* PROCESSES THESE CHARACTERS
*         AS FOLLOWS.  CHARACTERS NOT SHOWN CAUSE NO SUBSTITUTION.
* 
*         N    = NEXT TOKEN FROM DIRECTIVE SCAN.
*         C    = CURRENT TOKEN FROM DIRECTIVE SCAN. 
*         A    = NEXT PARAMETER TO *DIAG* IS ALPHANUMERIC.
*         O    = NEXT PARAMETER TO *DIAG* IS OCTAL. 
*         D    = NEXT PARAMETER TO *DIAG* IS DECIMAL. 
  
          PURGMAC DIAG
  
DIAG      MACRO  N,TEXT,F 
          LOCAL  ENDDIAG
          NOREF  L."DN" 
 L."DN"   BSS    0
          IFGE   "DN",N,1 
          ERR    DIAGNOSTIC NUMBER OUT OF SEQUENCE. 
 DN       DECMIC N,4
FDIAG     IFC    EQ, F FATAL
FATFLAG   SET    1
FDIAG     ELSE
FATFLAG   SET    0
FDIAG     ENDIF 
          VFD    12/T.DIAG,30/0,18/L."DN"-* 
          VFD    1/0,1/FATFLAG,34/0,12/ENDDIAG-*-1,12/N 
          DATA   C*_TEXT_*
ENDDIAG   VFD    1/1,1/FATFLAG,34/0,12/L."DN"-*-1,12/N
          ENDM
FDIAG     SPACE  4
**        FDIAG - MACRO FOR FLAGGING DIAGNOSTIC AS FATAL
* 
*         FDIAG  N,TEXT 
* 
*         N    = DIAGNOSTIC NUMBER (FROM 1 TO 4095).
*         TEXT = TEXT WHICH WILL BE GIVEN WHEN THIS ERROR OCCURS. 
* 
*              THIS MACRO CALLS *DIAG* WITH THE *FATAL* PARAMETER SET.
*         A FATAL DIAGNOSTIC WILL CAUSE QU TO ABORT IN BATCH MODE UNLESS
*         OVERRIDDEN BY THE *U* OPTION UPON ENTRY.
  
          PURGMAC FDIAG 
  
FDIAG     MACRO  N,TEXT 
          DIAG   N,((FATAL) _TEXT),FATAL
          ENDM
          SPACE  4,10 
**        ENDTBLS - MACRO TO TERMINATE THE LIST OF QUGEN TABLES.
* 
*         ENDTBLS 
* 
*              THIS MACRO PRODUCES A TABLE WHICH MARKS THE END OF TABLES
*         TO BE PROCESSED BY QUGEN. 
  
          PURGMAC ENDTBLS 
  
 ENDTBLS  MACRO              END QUGENS INTERNAL TABLES 
          VFD    12/T.END,48/0
          ENDM
 EPT      SPACE  4,10 
**        EPT - MACRO FOR DEFINING ENTRY POINTS TO CAPSULES.
* 
*         EPT    NAME 
* 
*         NAME = ENTRY POINT NAME IN THE CAPSULE WHICH WILL BE USED 
*         FOR A TRANSFER POINT. 
* 
*              THIS MACRO DEFINES A TABLE WHICH WILL FORCE THE LOADER TO
*         MAKE THE NAMED ENTRY POINT A TRANSFER POINT INTO THE CURRENT
*         CAPSULE.
  
          PURGMAC EPT 
  
 EPT      MACRO  NAME 
          VFD    12/T.EPT,30/0,18/2 
          VFD    42/0L_NAME,18/0
          ENDM
          SPACE  4,10 
**        HELP - MACRO FOR DEFINING HELP TEXT.
* 
*         HELP   A,ID 
* 
*         A    = NAME OF QU DIRECTIVE FOR FOLLOWING TEXT. 
*         ID   = LEXICAL ID FOR THIS DIRECTIVE.  THIS IS ACTUALLY 
*                THE DIRECTIVE TYPE (1 OCTAL DIGIT) FOLLOWED BY THE 
*                THREE DIGIT LEXICAL ID (FROM 0 TO 777B).  ONLY THE 
*                LEXICAL ID IS USED.
* 
*              THIS MACRO DEFINES A HEADER GIVING THE LENGTH OF THE 
*         TEXT THAT FOLLOWS.  EACH HELP TEXT ENTRY MUST BE IN 
*         INCREASING NUMERICAL ORDER BY THE THREE LEAST SIGNIFICANT 
*         DIGITS OF THE LEXICAL ID. 
  
          PURGMAC HELP
  
 HELP     MACRO  A,ID 
          NOREF  L."DN" 
 L."DN"   BSS    0
 DN1      MICRO  1,3,*"DN"* 
 DN       OCTMIC ID,3 
 C        IFC    NE,*"DN1"**,2
          IFGE   "DN1","DN",1 
          ERR    LEXICAL ID OUT OF SEQUENCE.
          VFD    12/T.HELP,30/0,18/L."DN"-* 
          VFD    1/1,35/0,12/L."DN"-*-1,12/"DN"B
          ENDM
 HELPT    SPACE  4,10 
**        HELPT - MACRO FOR DEFINING HELP TEXT LINES. 
* 
*         HELPT  TEXT 
* 
*         TEXT = TEXT WHICH WILL DESCRIBE THE PRECEDING DIAGNOSTIC OR 
*                QU DIRECTIVE.
* 
*              THIS MACRO SIMPLY DEFINES THE TEXT AS A ZERO BYTE
*         TERMINATED LINE TO GO WITH THE *HELP* OR *DIAG* HEADERS 
*         THAT WERE PREVIOUSLY DEFINED. 
  
          PURGMAC HELPT 
  
 HELPT    MACRO  TEXT 
          DATA   C*_TEXT_*
          ENDM
          SPACE  4,10 
**        IGNORE - MACRO TO IGNORE REFERENCE TO A GIVEN ENTRY POINT.
* 
*         IGNORE NAME 
* 
*         NAME = ENTRY POINT NAME TO BE REPLACED BY *IGNORE*. 
* 
*              THIS MACRO SUBSTITUTES *IGNORE* FOR THE NAMED ENTRY PT.
*         IGNORE IS A ROUTINE IN QU THAT IS A DO-NOTHING EXCEPT FOR 
*         CLEARING X6 (FALSE FOR FUNCTION). THIS IS USED TO ALLOW REFER-
*         ENCES TO BE MADE BUT HAVE NO EFFECT.
*         THE EFFECT OF AN IGNORE IS UNTIL END-OF-LOAD OR UNTIL AN
*         *UNIGNORE* MACRO IS ENCOUNTERED.
  
          PURGMAC IGNORE
  
 IGNORE   MACRO  NAME 
 NAME     BECOMES IGNORE,FOREVER
          ENDM
          SPACE  4,10 
**        INCL - MACRO TO INCLUDE A DECK IN THE OVERLAY.
* 
*         INCL   NAME 
* 
*         NAME = PROGRAM NAME TO BE INCLUDED IN THIS OVERLAY. 
* 
*              THIS MACRO RESULTS IN A ZERO-LENGTH RELOCATABLE ROUTINE
*         WITH THE SPECIFIED NAME BEING INSERTED IN THE IMAGE FILE. THIS
*         CAN THEN BE REPLACED BY THE RELOCATABLE OF THE ROUTINE USING
*         *COPYLM*. 
  
          PURGMAC INCL
  
 INCL     MACRO  NAME 
          LOCAL  ENDINCL
          IFNE   OVL.ACT,1,1
          ERR    NO OVERLAY MACRO PRESENT BEFORE THIS TABLE MACRO 
          VFD    12/T.INCL,30/0,18/ENDINCL-*
          DATA   C*_NAME* 
 ENDINCL  BSS    0           MARKS END OF THE INCL TABLE
          ENDM
          SPACE  4,10 
**        LIB - MACRO TO ESTABLISH LIBRARIES TO SEARCH. 
* 
*         LIB    (LIB1,...,LIBN)
* 
*              THIS MACRO CLEARS THE LOCAL LIBRARY SET AND ESTABLISHES
*         THE GIVEN LIST OF LIBRARIES AS THE CURRENT LOCAL SET. THERE 
*         CAN BE ONLY ONE LIB MACRO PER OVERLAY.
  
          PURGMAC LIB 
  
 LIB      MACRO  NAME 
          LOCAL  ENDLIB 
          IFNE   OVL.ACT,1,1
          ERR    NO OVERLAY MACRO PRESENT BEFORE THIS TABLE MACRO 
          IFEQ   LIB.ACT,1,1 IF ALREADY ONE LIB MACRO THIS OVERLAY
          ERR    MORE THAN ONE LIB MACRO IN THIS OVERLAY
 LIB.ACT  SET    1
          VFD    12/T.LIB,30/0,18/ENDLIB-*       LENGTH ZEROED LATER
          VFD    12/T.LIB,12/ENDLIB-*-1,36/0    ACTUAL LIB TABLE WITH WC
          IRP    NAME 
 LIB.1    IFC    NE,*_NAME**
          DATA   C*_NAME* 
 LIB.1    ENDIF 
          IRP 
 ENDLIB   BSS    0           MARKS THE END OF LIB TABLE FOR LENGTH
          ENDM
 MAP      SPACE  4,10 
**        MAP - MACRO FOR SETTING THE MAP TYPE. 
* 
*         MAP    P1,P2
* 
*         P1   = N FOR NO MAP OR ANY COMBINATION OF THE FOLLOWING.
*                S - STATISTICS.
*                B - BLOCK MAP. 
*                E - ENTRY POINT LIST.
*                X - CROSS REFERENCE MAP. 
*         P2   = OPTIONAL OUTPUT FILE FOR MAP.
  
          PURGMAC MAP 
  
 MAP      MACRO  P1,P2
          LOCAL  L
          VFD    12/T.MAP,30/0,18/L-* 
'?LDR#OP  SET    0
1         IFC    NE, P1 
'?LDR#OP  SET    1
1         IFC    NE, P1 N 
'?LDR#MS  SET    2
'?LDR#MB  SET    4
'?LDR#ME  SET    10B
'?LDR#MX  SET    20B
'?LDR#CN  SET    0
2         DUP    -1 
'?LDR#CN  SET    '?LDR#CN+1 
'?LDR#CH  MICRO  '?LDR#CN,1, P1 
          IFC    EQ, "'?LDR#CH"  ,2 
2         STOPDUP 
          SKIP   4
          IF     -DEF,'?LDR#M"'?LDR#CH",2 
          ERR    INVALID MAP OPTION - "'?LDR#CH". 
          SKIP   1
'?LDR#M"'?LDR#CH" SET 0 
2         ENDD
'?LDR#OP  SET    37B-'?LDR#MS-'?LDR#MB-'?LDR#ME-'?LDR#MX
1         ENDIF 
          VFD    12D/11B,12D/L-*-1,36D/'?LDR#OP 
          IFC    NE, P2  ,1 
          VFD    42/0L_P2,18D/
 L        EQU    *
          ENDM
 NOEPT    SPACE  4,10 
**        NOEPT - MACRO FOR SUPRESSING ENTRY POINTS TO A CAPSULE. 
* 
*         NOEPT  NAME 
* 
*         NAME = ENTRY POINT NAME IN CAPSULE WHICH WILL NOT BE A
*         TRANSFER POINT TO THIS CAPSULE. 
* 
*              THIS MACRO ALLOWS ONE TO BUILD A CAPSULE AND SUPRESS A 
*         GIVEN ENTRY POINT SO THAT DUPLICATE ENTRY POINTS AMONG
*         CAPSULES CAN BE ELIMINATED.  IF NO NAME IS GIVEN THEN THIS
*         CAUSES THE  LOADER TO USE ONLY THOSE ENTRY POINTS GIVEN BY
*         *LDSET(EPT=...)* AS TRANSFER POINTS TO A CAPSULE.  THIS WILL
*         ELIMINATE ALL LIBRARY ROUTINE ENTRY POINTS WHICH MAY BE 
*         USED WITHIN A CAPSULE.
  
          PURGMAC NOEPT 
  
 NOEPT    MACRO  NAME 
          IFC    EQ,*NAME**,2 
          VFD    12/T.NOEPT,30/0,18/1 
          SKIP   2
          VFD    12/T.NOEPT,30/0,18/2 
          VFD    42/0L_NAME,18/0
          ENDM
          SPACE  4,10 
**        OMIT - MACRO TO OMIT AN ENTRY POINT FROM THE LOAD.
* 
*         OMIT   NAME 
* 
*         NAME = ENTRY POINT NAME TO BE OMITTED FROM THIS OVERLAY.
* 
*              THIS MACRO TELLS LOADER TO OMIT THE NAMED ENTRY POINT
*         FROM NOW UNTIL END-OF-LOAD OR UNTIL A *USE* MACRO OVERRIDES 
*         IT. THE OMIT RESULTS IN ANY REFERENCE TO THE ENTRY POINT BEING
*         LEFT AS UNSATISFIED (ADDR = *+400000B) WITH NO LOADER 
*         DIAGNOSTICS. USE WITH CARE. 
  
          PURGMAC OMIT
  
 OMIT     MACRO  NAME 
          LOCAL  ENDOMIT
          IFNE   OVL.ACT,1,1
          ERR    NO OVERLAY MACRO PRESENT BEFORE THIS TABLE MACRO 
          VFD    12/T.OMIT,30/0,18/ENDOMIT-*
          DATA   C*_NAME* 
 ENDOMIT  BSS    0           MARKS END OF OMIT TABLE
          ENDM
 OVCAP    SPACE  4,10 
**        OVCAP - MACRO FOR DEFINING AN OVERLAY CAPSULE.
* 
* NAME    OVCAP  (TEXT) 
* 
*         NAME = NAME OF CAPSULE TO BE GENERATED. 
*         TEXT = OVCAP DESCRIPTION
* 
*              THIS MACRO GENERATES AN OVERLAY CAPSULE WITH THE GIVEN 
*         NAME.  QUGEN PROCESSES THE OVCAP MACRO IN THE SAME WAY IT 
*         PROCESSES THE OVLAY MACRO.  ALL OVCAPS MUST BE DEFINED
*         AFTER ALL THE OVERLAYS (LOADER RESTRICTION).
  
          PURGMAC OVCAP 
  
          MACRO  OVCAP,NAME,TEXT
 NAME     OVLAY  ,,(TEXT) 
          ENDM
          SPACE  4,10 
**        OVLAY - MACRO TO DEFINE START OF NEW OVERLAY. 
* 
* NAME    OVLAY  L1,L2,(TEXT) 
* 
*         L1  = PRIMARY OVERLAY LEVEL NUMBER. 
*         L2  = SECONDARY OVERLAY LEVEL NUMBER. 
*         TEXT = OVERLAY DESCRIPTION
* 
*              THIS MACRO BUILDS TABLES TO DECLARE THE NEW LEVEL OVERLAY
*         AND GENERATES TWO DUMMY DECKS TO ACCOMPANY IT. THE FIRST SUCH 
*         DECK IS OF THE SAME NAME AS THE OVERLAY - THIS ENSURES THAT 
*         THE OVERLAY WILL GET THIS NAME. THE DECK ALSO CONTAINS THE
*         ENTRY POINT FOR THE OVERLAY AND A DUMMY ROUTINE TO ALLOW
*         LOADING TO COMPLETE SHOULD THIS NOT BE REPLACED VIA COPYLM. 
*         THE SECOND DUMMY DECK IS AN L-DECK, THE NAME IS DERIVED FROM
*         THE OVERLAY NAME BY PREFIXING AN *L* TO IT.  THIS DECK
*         CONTAINS ANY/ALL LDSET INFORMATION FOR LOADER SPECIFIED IN
*         OTHER QUGEN MACROS (E.G. USEP, OMIT, SUBST, ETC.).
  
          PURGMAC OVLAY 
  
          MACRO  OVLAY,NAME,L1,L2,TEXT
          LOCAL  ENDOVL 
          LOCAL  ENDFPRFX 
          LOCAL  ENDLPRFX 
 OVL.ACT  SET    1           SET INDICATOR FOR -SOME OVLAY ACTIVE-
 NUM.TRAP SET    0
 LIB.ACT  SET    0
 PRST.ACT SET    0           NO PRESET ACTIVE THIS OVERLAY...YET
 NO       SET    NO+1 
          IFGT   NO,NN,1
          ERR    TOO MANY OVERLAYS DEFINED, UPDATE NN.
          VFD    12/T.OVL,30/0,18/ENDOVL-*
 CAP      IFC    EQ, L1 
          DATA   C&OVCAP. (NAME) - TEXT.& 
 CAP      ELSE
 OVL00    IFEQ   NO,1 
 OVN      DECMIC NN+ND-1,3
          DATA   C&OVERLAY(QU,_L1,_L2,OV="OVN") - TEXT.&
 OVL00    ELSE
          DATA   C&OVERLAY(QU,_L1,_L2) - TEXT.& 
 OVL00    ENDIF 
 CAP      ENDIF 
 ENDOVL   BSS    0           MARKS END OF OVL TABLE 
          VFD    12/T.FPRFX,30/0,18/ENDFPRFX-*
          DATA   C*_NAME* 
 ENDFPRFX BSS    0           MARKS END OF FPRFX TABLE 
          VFD    12/T.LPRFX,30/0,18/ENDLPRFX-*
          DATA   C*L_NAME*
 ENDLPRFX BSS    0           MARKS END OF LPRFX TABLE 
          ENDM
          SPACE  4,10 
**        PRESET - MACRO TO PRESET UNUSED WORDS OF CORE.
* 
*         PRESET VALUE
* 
*         VALUE = 60 BIT INTEGER VALUE TO BE USED FOR PRESETING.
* 
*              THIS MACRO GIVES A VALUE TO THE LOADER WHICH LOADER WILL 
*         USE TO PRESET UNUSED WORDS IN THE OVERLAY.  THERE CAN BE AT 
*         MOST ONE PRESET MACRO FOR EACH OVERLAY. 
  
          PURGMAC PRESET
  
 PRESET   MACRO  VALUE
          LOCAL  ENDPRST
          IFNE   OVL.ACT,1,1
          ERR    NO OVERLAY MACRO PRESENT BEFORE THIS TABLE MACRO 
          IFNE   PRST.ACT,0,1 
          ERR    MORE THAN ONE PRESET MACRO ACTIVE THIS OVERLAY 
 PRST.ACT SET    1
          VFD    12/T.PRST,30/0,18/ENDPRST-*
          CON    VALUE
 ENDPRST  BSS    0           MARKS END OF PRESET TABLE
          ENDM
          SPACE  4,10 
**        SUBST - MACRO TO SUBSTITUTE ONE ENTRY POINT FOR ANOTHER.
* 
*         SUBST  MINE,YOURS 
* 
*         MINE = ENTRY POINT NAME TO BE USED. 
*         YOURS = ENTRY POINT NAME TO BE REPLACED.
* 
*              THIS MACRO TELLS LOADER THAT ALL REFERENCES TO *YOURS* 
*         ENTRY POINT SHOULD BE MAPPED TO *MINE*.  THE SUBSTITUTION IS
*         IN EFFECT UNTIL END-OF-LOAD.  THE ENTRY POINT CAN BE
*         REACTIVATED BY USING THE *UNIGNORE* MACRO OR ANOTHER *SUBST*
*         (SUBST YOURS,YOURS).
  
          PURGMAC SUBST 
  
 SUBST    MACRO  MINE,YOURS  SUBSTITUTE MY EP FOR YOURS 
          LOCAL  ENDSUBST 
          IFNE   OVL.ACT,1,1
          ERR    NO OVERLAY MACRO PRESENT BEFORE THIS TABLE MACRO 
          VFD    12/T.SUBST,30/0,18/ENDSUBST-*
          DATA   C*_YOURS*
          DATA   C*_MINE* 
 ENDSUBST BSS    0           MARKS END OF SUBST TABLE 
          ENDM
          SPACE  4,10 
**        TRAP - MACRO TO TRAP REFERENCES TO A GIVEN ENTRY POINT. 
* 
*         TRAP   NAME 
* 
*         NAME = ENTRY POINT NAME TO BE TRAPPED.
* 
*              THIS MACRO SUBSTITUTES *TRAP* FOR THE NAMED ENTRY POINT. 
*         TRAP IS A ROUTINE IN QU THAT IS A DO-NOTHING EXCEPT FOR 
*         ISSUING A DIAGNOSTIC. 
*         THE EFFECT OF A TRAP IS FOR THE CURRENT OVERLAY ONLY. QUGEN 
*         BUILDS A TABLE OF WHICH NAMES WERE TRAPPED AND UN-DOES THE
*         SUBST  AT THE BEGINNING OF THE NEXT OVERLAY. THE TABLE TO 
*         HOLD THESE NAMES IS OF FIXED LENGTH *MAXTRAP*. IF THE TABLE 
*         WOULD OVERFLOW, AN ASSEMBLY ERROR IS PRODUCED.
  
          PURGMAC TRAP
  
 TRAP     MACRO  NAME 
 NAME     BECOMES  TRAP 
          ENDM
          SPACE  4,10 
**        UNIGNORE - MACRO TO REMOVE THE EFFECT OF SUBST/IGNORE.
* 
*         UNIGNORE NAME 
* 
*         NAME = ENTRY POINT NAME TO BE REINSTATED. 
* 
*              THIS MACRO SUBSTITUTES A NAME FOR ITSELF TO REMOVE THE 
*         EFFECT OF ANY PREVIOUS SUBST/IGNORE OF THAT NAME. IT DOES 
*         NOT CAUSE THE ENTRY POINT TO BE LOADED. 
  
          PURGMAC UNIGNORE
  
 UNIGNORE MACRO  NAME        REMOVE EFFECT OF PREVIOUS IGNORE 
 NAME     BECOMES  NAME      AGAIN
          ENDM
          SPACE  4,10 
**        USE - MACRO TO FORCE LOADING OF AN ENTRY POINT. 
* 
*         USE    NAME 
* 
*         NAME = ENTRY POINT TO BE LOADED INTO THIS OVERLAY.
* 
*              THIS MACRO TELLS LOADER TO UNDO THE EFFECT OF ANY
*         PREVIOUS *OMIT* OF THIS ENTRY POINT AND FORCE THIS ENTRY
*         POINT TO BE LOADED. 
* 
*         NOTE ******** THIS MACRO REDEFINES THE COMPASS PSEUDO-OP. ****
  
          PURGMAC USE 
  
 USE      MACRO  EP 
          LOCAL  ENDUSE 
          IFNE   OVL.ACT,1,1
          ERR    NO OVERLAY MACRO PRESENT BEFORE THIS TABLE MACRO 
          VFD    12/T.USE,30/0,18/ENDUSE-*
          DATA   C*_EP* 
 ENDUSE   BSS    0           MARKS END OF THE USE TABLE 
          ENDM
          SPACE  4,10 
**        USEP - MACRO TO FORCE THE LOADING OF THE NAMED ROUTINE. 
* 
*         USEP   NAME 
* 
*         NAME = PROGRAN NAME TO BE LOADED INTO THIS OVERLAY. 
* 
*              THIS MACRO FORCES THE NAMED ROUTINE (NOT NECESSARILY 
*         THE SAME AS THE ENTRY POINT) TO BE SEARCHED AND LOADED FROM 
*         THE CURRENT LIBRARIES.
  
          PURGMAC USEP
  
 USEP     MACRO  NAME        UNCONDITIONALLY LOAD -NAME- FROM LIB 
          LOCAL  ENDUSEP
          IFNE   OVL.ACT,1,1
          ERR    NO OVERLAY MACRO PRESENT BEFORE THIS TABLE MACRO 
          VFD    12/T.USEP,30/0,18/ENDUSEP-*
          DATA   C*_NAME* 
 ENDUSEP  BSS    0           MARKS END OF USEP TABLE
          ENDM
 QUGEN    TITLE  INTERNAL TABLES DEFINING QU OVERLAY STRUCTURE. 
          SPACE  4,10 
**        TBLBEGIN - START OF OVERLAY STRUCTURE TABLES. 
  
  
 TBLBEGIN BSS    0
          SPACE  4,10 
**        (0,0) - MAIN QU OVERLAY.
* 
*         THIS OVERLAY CONTAINS THE COMMONLY USED ROUTINES AND COMMON 
*         BLOCKS USED TO COMMUNICATE BETWEEN OVERLAYS.  THE LIBRARIES 
*         NEEDED FOR THE BUILD OF QU ARE LISTED BELOW WITH THE ROUTINES 
*         NEEDED FROM EACH LIBRARY. 
* 
*         SRTLIB - SORT/MERGE ROUTINES FOR SORT4
*         SRT5LIB- SORT/MERGE ROUTINES FOR SORT5 (WHEN DEFINED) 
*         SYMLIB - SYMPL LIBRARY ROUTINES.
*         IMFLIB - INFORMATION MANAGEMENT FACILITY (WHEN PRESENT) 
*         DMSLIB - DATA BASE LOGGING ROUTINES.
*         DBULIB - DATA BASE LOGGING ROUTINES FOR NOS2.2 ONLY 
*         DMSLIB - CDCS ROUTINES
*         BAMLIB - CRM STATIC CONTROLLORS.
*         FORTRAN - EXPONENT ROUTINES.
*         SYSLIB - MISC COMMON ROUTINES.
  
  
 QU       OVLAY  0,0,(MAIN QU OVERLAY)
          MAP    SBEX        MAP(FULL) FOR (0,0) ONLY 
          PRESET 0           PRESET UNUSED MEMORY WORDS 
          NOEPT              USE ONLY GIVEN NAMES AS ENTRIES TO CAPSULES
  
#N22      IFEQ   NOS,PRESENT
 #IMF     IFEQ   IMF,PRESENT
#SLIB     IFEQ  SORT5,PRESENT 
          LIB    (DMSLIB,IMFLIB,SRT5LIB,FORTRAN,BAMLIB,SYMLIB,SYSLIB,DBU
,LIB) 
#SLIB     ELSE
          LIB    (DMSLIB,IMFLIB,SRTLIB,FORTRAN,BAMLIB,SYMLIB,SYSLIB,DBUL
,IB)
#SLIB     ENDIF 
 #IMF     ENDIF 
  
 #IMF     IFEQ   IMF,ABSENT 
#SLIB     IFEQ  SORT5,PRESENT 
          LIB    (DMSLIB,SRT5LIB,FORTRAN,BAMLIB,SYMLIB,SYSLIB,DBULIB) 
#SLIB     ELSE
          LIB    (DMSLIB,SRTLIB,FORTRAN,BAMLIB,SYMLIB,SYSLIB,DBULIB)
#SLIB     ENDIF 
 #IMF     ENDIF 
#N22      ENDIF 
  
#N22      IFEQ   NOS,ABSENT 
#IMF      IFEQ   IMF,PRESENT
#SLIB     IFEQ   SORT5,PRESENT
          LIB    (DMSLIB,IMFLIB,SRT5LIB,FORTRAN,BAMLIB,SYMLIB,SYSLIB) 
#SLIB     ELSE
          LIB    (DMSLIB,IMFLIB,SRTLIB,FORTRAN,BAMLIB,SYMLIB,SYSLIB)
#SLIB     ENDIF 
#IMF      ENDIF 
  
#IMF      IFEQ   IMF,ABSENT 
#SLIB     IFEQ   SORT5,PRESENT
          LIB    (DMSLIB,SRT5LIB,FORTRAN,BAMLIB,SYMLIB,SYSLIB)
#SLIB     ELSE
          LIB    (DMSLIB,SRTLIB,FORTRAN,BAMLIB,SYMLIB,SYSLIB) 
#SLIB     ENDIF 
#IMF      ENDIF 
#N22      ENDIF 
  
  
          IGNORE DIAGRTN
          IGNORE PREBFSZ
          IGNORE RECOVR 
          IGNORE SD$OCT 
          IGNORE SD$RPVD
          IGNORE SD$TRC 
          IGNORE SETUP. 
 RM.IS    BECOMES  RM.ISX    TRIGGER *IS* READ-ONLY IF *PD=INPUT* 
 RM.DA    BECOMES  RM.DAX    TRIGGER *DA* READ-ONLY IF *PD=INPUT* 
          OMIT   RM$MEXB     TRIGGER *MIP* READ-ONLY IF *PD=INPUT*
          OMIT   RM$MFSQ     TRIGGER *MIP* READ-ONLY IF *PD=INPUT*
          INCL   COMMONS     COMPILE-TIME PRESET OF COMMON BLOCKS 
          INCL   CMM$AFF     ALLOCATE/FREE A FIXED BLOCK
CMM$ALF   BECOMES  QU$ALF,FOREVER   SRT5 USES SAME NAME 
CMM$FRF   BECOMES  QU$FRF,FOREVER   SRT5 USES SAME NAME 
          INCL   DB$GLDF     CDCS GLOBAL DEFINITIONS
          INCL   OPENTL      TERMINAL I/O INITIALIZATION
          INCL   QU2IO       TERMINAL I/O 
          INCL   LOADOVL     OVERLAY LOADING
          INCL   MOVEC       CHARACTER STRING MOVE
          INCL   CPOINTE     COMPASS DECK OF XDEFS, ETC.
          INCL   POINTER     XDEFS USED IN LOWER OVERLAYS 
          INCL   IMFTBL      IMF POINTERS AND TABLES
          INCL   CONVERT     CONVERSION ROUTINES
          INCL   INCRDIS     DISPLAY-CODED ADDITIONS
          INCL   UNIVERS     UNIVERSAL CHARACTER HANDLING 
          INCL   TRAP        ELIMINATION OF UNWANTED ENTRY POINTS 
          INCL   CTL         CONTROL MODULE OF MAIN OVERLAYS QU AND QO
          INCL   SEQTBL      COLLATING SEQUENCE TABLES
          INCL   DBP$00      (0,0) LINKAGE FOR DATABASE PROCEDURES
          INCL   QUERR       ERROR PROCESSING ROUTINE 
          USE    DB$GLDF     DBSTAT ADDR AND TASK NUM FOR CDCS
          USE    CTRL$AA     CRM ADVANCED ACCESS RESIDENT ROUTINE 
          USE    CMM.AGR     NEEDED FOR CRM *BBH* OPTION
  
 #IMF     IFEQ   IMF,PRESENT
          USE    CMM.RLS     REQUIRED BY CMM.LOV IF VP BLOCKS EXIST 
          USE    CMM.VAF     REQUIRED BY CMM.ALF IF VP BLOCKS EXIST 
          USE    CMM.VFA     REQUIRED BY CMM.FFA IF VP BLOCKS EXIST 
 #IMF     ENDIF 
  
 ALPHAED  BECOMES ALPHAE$,FOREVER  CAPSULE ENTRY POINT
 DADD     BECOMES DADD$,FOREVER  CAPSULE ENTRY POINT
 DB$CLS   BECOMES DB.CLS,FOREVER   CAPSULE ENTRY POINT
 DB$DBST  BECOMES DB.DBST,FOREVER  CAPSULE ENTRY POINT
 DB$DEL   BECOMES DB.DEL,FOREVER   CAPSULE ENTRY POINT
 DB$END   BECOMES DB.END,FOREVER   CAPSULE ENTRY POINT
 DB$INQV  BECOMES DB.INQV,FOREVER  CAPSULE ENTRY POINT
 DB$INVV  BECOMES DB.INVV,FOREVER  CAPSULE ENTRY POINT
 DB$OPN   BECOMES DB.OPN,FOREVER   CAPSULE ENTRY POINT
 DB$PVC   BECOMES DB.PVC,FOREVER   CAPSULE ENTRY POINT
 DB$RDX1  BECOMES DB.RDX1,FOREVER  CAPSULE ENTRY POINT
 DB$RD1   BECOMES DB.RD1,FOREVER   CAPSULE ENTRY POINT
 DB$RD2   BECOMES DB.RD2,FOREVER   CAPSULE ENTRY POINT
 DB$REL   BECOMES DB.REL,FOREVER   CAPSULE ENTRY POINT
 DB$RELS  BECOMES DB.RELS,FOREVER  CAPSULE ENTRY POINT
 DB$REW   BECOMES DB.REW,FOREVER   CAPSULE ENTRY POINT
 DB$RPT   BECOMES DB.RPT,FOREVER   CAPSULE ENTRY POINT
 DB$RWF   BECOMES DB.RWF,FOREVER   CAPSULE ENTRY POINT
 DB$RWR   BECOMES DB.RWR,FOREVER   CAPSULE ENTRY POINT
 DB$RWX   BECOMES DB.RWX,FOREVER   CAPSULE ENTRY POINT
 DB$SKF   BECOMES DB.SKF,FOREVER   CAPSULE ENTRY POINT
 DB$STR   BECOMES DB.STR,FOREVER   CAPSULE ENTRY POINT
 DB$STX   BECOMES DB.STX,FOREVER   CAPSULE ENTRY POINT
 DB$WR2   BECOMES DB.WR2,FOREVER   CAPSULE ENTRY POINT
 DDIV     BECOMES DDIV$,FOREVER  CAPSULE ENTRY POINT
 DMULT    BECOMES DMULT$,FOREVER  CAPSULE ENTRY POINT 
 DSUB     BECOMES DSUB$,FOREVER  CAPSULE ENTRY POINT
 DTOD     BECOMES DTOD$,FOREVER  CAPSULE ENTRY POINT
 FIGSUB   BECOMES FIGSUB$,FOREVER  CAPSULE ENTRY POINT
 ITOJ     BECOMES ITOJ$,FOREVER  CAPSULE ENTRY POINT
 NUMERED  BECOMES NUMERE$,FOREVER  CAPSULE ENTRY POINT
 PDT      BECOMES PDT$,FOREVER  CAPSULE ENTRY POINT 
 QU2CONV  BECOMES QU2CON$,FOREVER  CAPSULE ENTRY POINT
 QU2KOD   BECOMES QU2KOD$,FOREVER  CAPSULE ENTRY POINT
 SCALEFL  BECOMES SCALEF$,FOREVER  CAPSULE ENTRY POINT
 SCALEIN  BECOMES SCALEI$,FOREVER  CAPSULE ENTRY POINT
 SCAN     BECOMES SCAN$,FOREVER  CAPSULE ENTRY POINT
 XTOY     BECOMES XTOY$,FOREVER  CAPSULE ENTRY POINT
  
 #IMF     IFEQ   IMF,ABSENT 
 INVOKE$  BECOMES INV$ABS,FOREVER  IMF IS NOT AVAILABLE SO CALL ROUTINE 
                                   WHICH RETURNS -NOT AVAILABLE-
                                   ERROR CODE 
 #IMF     ENDIF 
          SPACE  4,10 
* PRIMARY SYNTAX OVERLAY. 
* CONTAINS THE SYNTAX MODULES REQUIRED FOR ALL DIRECTIVES 
* CRM WORD-ADDRESS IS INCLUDED FOR SUBSCHEMA READING. 
* 
 QU0100   OVLAY  1,0,(PRIMARY SYNTAX OVERLAY) 
          MAP    SBX         MAP(ON) FOR NON-(0,0) OVERLAYS 
          INCL   CMM$AFG     ACTIVATE/FREE A GROUP-ID 
          INCL   STD         SYNTAX TABLE DRIVER
          INCL   QUSCAN      LEXICAL ANALYZER 
          INCL   LFNPROC     ROUTINES USED TO PROCESS LFN LIST. 
          INCL   SYNTAX      SEMANTICS COMMON TO ALL DIRECTIVES 
          INCL   STX00       SEMANTICS COMMON TO ALL DIRECTIVES 
          INCL   DHASH1      HASHING ROUTINE, COMPASS PART
          INCL   HASHDL1     HASHING ROUTINE, SYMPL PART
          INCL   DATANAM     TO FIND ATTRIBUTES OF A DATA-NAME
          INCL   HELPSYN     -HELP- AND -DIAG- PROCESSING ROUTINES
          INCL   CATCHK      ACCESSES CATALOG BY CRM OR CDCS
          USE    ER$SRM      KLUDGE FOR LDRPSR
          SPACE  4,10 
*         SYNTAX CRACKING FOR THE FOLLOWING REPORT SPECIFICATIONS:  
*           COMPILE 
*           PAGE-SIZE 
*           PREFACE 
*           PREPARE 
*           PREVIEW 
*           TABS
  
 QU0101   OVLAY  1,1,(SYNTAX CRACKING FOR COMPILE, NOTE, PAGE-SIZE, PREF
,ACE, PREVIEW, AND TABS)
          INCL   QU01XX      INITIALIZATION FOR SECONDARY SYNTAX OVERLAY
          INCL   SYMPL01     SWITCH VECTOR FOR (1,1)
          INCL   SYNGN01     SYNTAX TABLES FOR (1,1)
          INCL   HALFSYN     SEMANTICS FOR *HALFSYN* SYNTAX SUBSECTION
          INCL   PAGESIZ     *PAGE-SIZE* SEMANTICS
          INCL   PRECOMP     *PREVIEW* *PREPARE* *COMPILE* SEMANTICS
          INCL   PRESUM      *PREFACE* *SUMMARY* SEMANTICS
          INCL   STKOUT      WRITES REPORT DIRECTIVES TO CATALOG FILE 
          INCL   TABS        *TABS* SEMANTICS 
          SPACE  4,10 
*         SYNTAX CRACKING FOR THE FOLLOWING REPORT SPECIFICATIONS:  
*           BREAK 
*           DATE
*           DETAIL
*           PAGE-NUMBER 
*           RECAP 
*           SELECT
*           TIME
*           TITLE 
  
 QU0102   OVLAY  1,2,(SYNTAX CRACKING FOR BREAK, DATE, DETAIL, DIAGNOSTI
,C, PAGE-NUMBER, RECAP, SELECT, TIME, AND TITLE)
          INCL   QU01XX      INITIALIZATION FOR SECONDARY SYNTAX OVERLAY
          INCL   SYMPL02     SWITCH VECTOR FOR (1,2)
          INCL   SYNGN02     SYNTAX TABLES FOR (1,2)
          INCL   ATLINE      SEMANTICS FOR *ATLINE* SYNTAX SUBSECTION 
          INCL   BREAK       *BREAK* SEMANTICS
          INCL   CENTER      SEMANTICS FOR *CENTER* SYNTAX SUBSECTION 
          INCL   DETAIL      *DETAIL* SEMANTICS 
          INCL   INIT        COMMON ROUTINE FOR *DETAIL,HEADING,FOOTING*
          INCL   ISEXPR      SEMANTICS FOR *ISEXPR* SYNTAX SUBSECTION 
          INCL   RCPTTL      *RECAP* *TITLE* SEMANTICS
          INCL   SELECT      *SELECT* SEMANTICS 
          INCL   SETPOS      SETS REPORTLIST FIELDS FOR VARIOUS DIRECTVS
          INCL   STKOUT      WRITES REPORT DIRECTIVES TO CATALOG FILE 
          INCL   TABCOL      TAB TO COLUMN CONVERSION 
          INCL   TMDTPGN     *TIME* *DATE* *PAGE-NUMBER* SEMANTICS
          SPACE  4,10 
*         SYNTAX CRACKING FOR THE FOLLOWING REPORT SPECIFICATIONS:  
*           EVAL
*           FOOTING 
*           HEADING 
*           MOVE
*           SUMMARY 
  
 QU0103   OVLAY  1,3,(SYNTAX CRACKING FOR EVALUATE, FOOTING, HEADING, MO
,VE, AND SUMMARY) 
          INCL   QU01XX      INITIALIZATION FOR SECONDARY SYNTAX OVERLAY
          INCL   SYMPL03     SWITCH VECTOR FOR (1,3)
          INCL   SYNGN03     SYNTAX TABLES FOR (1,3)
          INCL   ATLINE      SEMANTICS FOR *ATLINE* SYNTAX SUBSECTION 
          INCL   BEFAFT      SEMANTICS FOR *BEFAFT* SYNTAX SUBSECTION 
          INCL   CENTER      SEMANTICS FOR *CENTER* SYNTAX SUBSECTION 
          INCL   CKOVLY      *YES* IF IN CORRECT *MOVE/EVAL* OVERLAY
          INCL   EVAL        COMMON CODE FOR *MOVE* *EVALUATE*
          INCL   FOOTING     *FOOTING* SEMANTICS
          INCL   HEADING     *HEADING* SEMANTICS
          INCL   INIT        COMMON ROUTINE FOR *DETAIL,HEADING,FOOTING*
          INCL   ISEXPR      SEMANTICS FOR *ISEXPR* SYNTAX SUBSECTION 
          INCL   RPTEVAL     *EVALUATE* SEMANTICS, REPORT STYLE 
          INCL   RPTMOVE     *MOVE* SEMANTICS, REPORT STYLE 
          INCL   SETPOS      SETS REPORTLIST FIELDS FOR VARIOUS DIRECTVS
          INCL   STKOUT      WRITES REPORT DIRECTIVES TO CATALOG FILE 
          INCL   TABCOL      TAB TO COLUMN CONVERSION 
          SPACE  4,10 
*         EXECUTION OF THE FOLLOWING DIRECTIVES:  
*           DEFINE
*           DESCRIBE
*           SPECIFY 
  
 QU0104   OVLAY  1,4,(SYNTAX CRACKING FOR DEFINE, DESCRIBE, HELP, AND SP
,ECIFY) 
 STKOUT   BECOMES  WRTSESS
          INCL   QU01XX      INITIALIZATION FOR SECONDARY SYNTAX OVERLAY
          INCL   SYMPL04     SWITCH VECTOR FOR (1,4)
          INCL   SYNGN04     SYNTAX TABLES FOR (1,4)
          INCL   PICTUR      PICTURE CRACKER
          INCL   SPEDEDE     *SPECIFY* *DEFINE* *DESCRIBE* SEMANTICS
          SPACE  4,10 
*         SYNTAX CRACKING FOR THE FOLLOWING DIRECTIVES: 
*           CREATE
*           INVOKE                                                      027500
*           USE 
*           VERSION 
  
 QU0105   OVLAY  1,5,(SYNTAX CRACKING FOR CREATE, INVOKE, USE, AND VERSI
,ON)
 STKOUT   BECOMES  WRTSESS
          INCL   QU01XX      INITIALIZATION FOR SECONDARY SYNTAX OVERLAY
          INCL   SYMPL05     SWITCH VECTOR FOR (1,5)
          INCL   SYNGN05     SYNTAX TABLES FOR (1,5)
          INCL   CUVSYN      *CREATE/USE/VERSION* SEMANTICS 
          INCL   SEMINV      IMF INVOKE SEMANTIC ROUTINES 
          INCL   MODPFP      REQUEST USER ENTRIES FOR PF PARAM CHANGES  027700
          SPACE  4,10 
*         SYNTAX FOR THE FOLLOWING DIRECTIVES:  
*           DISPLAY 
*           EXTRACT 
*           IF
*           VIA 
*           WHERE 
  
 QU0106   OVLAY  1,6,(SYNTAX CRACKING FOR DISPLAY, EXTRACT, IF, AND VIA)
 STKOUT   BECOMES  WRTSESS
          INCL   QU01XX      INITIALIZATION FOR SECONDARY SYNTAX OVERLAY
          INCL   SYMPL06     SWITCH VECTOR FOR (1,6)
          INCL   SYNGN06     SYNTAX TABLES FOR (1,6)
          INCL   CKIMFOV     *YES* IF IN RIGHT (IMF VS. CRM) SYNTAX OVLY
          INCL   DISPLAY     *DISPLAY* SEMANTICS
          INCL   EXTRACT     *EXTRACT* SEMANTICS
          INCL   IFSYN       *IF* SEMANTICS 
          INCL   SAME        *SAME* LIST PROCESSING 
          INCL   SET40       COMMON ROUTINE TO ALL FILE ACCESSES
          INCL   VIA         *VIA* SEMANTICS + EXECUTION
          SPACE  4
*         SYNTAX CRACKING FOR THE FOLLOWING DIRECTIVES: 
*           DELETE
*           EVALUATE
*           INSERT
*           MOVE
*           UPDATE
* 
 QU0107   OVLAY  1,7,(SYNTAX CRACKING FOR DELETE, INSERT, AND UPDATE) 
 STKOUT   BECOMES  WRTSESS
          INCL   QU01XX      INITIALIZATION OF SECONDARY SYNTAX OVERLAY 
          INCL   SYMPL07     SWITCH VECTOR FOR (1,7)
          INCL   SYNGN07     SYNTAX TABLES FOR (1,7)
          INCL   CKOVLY      *YES* IF IN CORRECT *MOVE/EVAL* OVERLAY
          INCL   DELUPSY     SEMANTICS FOR *DELUPSYN* SYNTAX SUBSECTION 
          INCL   MOVEVAL     *MOVE* *EVALUATE* SEMANTICS
          INCL   SAME        ROUTINES FOR *SAME* PROCESSING 
          INCL   SET40       COMMON ROUTINE TO UPDATE DIRECTIVES
          INCL   UPDATE      *UPDATE* SEMANTICS 
          SPACE  4
*         EXECUTION OF THE FOLLOWING DIRECTIVES:  
*           DUPLICATE 
*           PERFORM 
*           RECORDING 
*           SEPARATOR 
*           UNIVERSAL 
*           VETO
* 
 QU0110   OVLAY  1,10,(SYNTAX CRACKING FOR DUPLICATE, PERFORM, RECORDING
,, SEPARATOR, UNIVERSAL, AND VETO)
 STKOUT   BECOMES  WRTSESS
          INCL   QU01XX      INITIALIZATION OF SECONDARY SYNTAX OVERLAY 
          INCL   SYMPL10     SWITCH VECTOR FOR (1,10) 
          INCL   SYNGN10     SYNTAX TABLES FOR (1,10) 
          INCL   DUPLICA     *DUPLICATE* SEMANTICS
          INCL   PERFORM     *PERFORM* SEMANTICS
          INCL   RECORDI     *RECORDING* SEMANTICS
          INCL   TLCHECK     CHECKS TL AGAINST TL OF CATALOG FILE 
          INCL   UNISEP      *UNIVERSAL/SEPARATOR/VETO* SEMANTICS 
          SPACE  4
*         SYNTAX CRACKING FOR *SORT* AND EXECUTION OF *DIRECTORY*,
*         *EXECUTE*, AND *LOOKUP*.
* 
 QU0111   OVLAY  1,11,(SYNTAX CRACKING FOR DIRECTORY, EXECUTE, LOOKUP, A
,ND SORT) 
 STKOUT   BECOMES WRTSESS 
          INCL   QU01XX      INITIALIZATION OF SECONDARY SYNTAX OVERLAY 
          INCL   SYMPL11     SWITCH VECTOR FOR (1,11) 
          INCL   SYNGN11     SYNTAX TABLES FOR (1,11) 
          INCL   DIRECTO     EXECUTION OF *DIRECTORY* AND *LOOKUP*
          INCL   EXECUTE     *EXECUTE* SEMANTICS
          INCL   KOMSTR      STRING COMPARISON FOR SORT LITERALS
          INCL   LOADREL     LOADING OF RELOCATABLE CODE FOR -EXECUTE-
          INCL   SORT        *SORT* SEMANTICS 
          SPACE  4
*         SYNTAX PROCESSING FOR THE FOLLOWING DIRECTIVES: 
*           ALTER 
*           ERASE 
*           EXHIBIT  (REPORT/SESSION OPTIONS) 
*           FORMAT
*           VERIFY
*                                                                       000252
 QU0112   OVLAY  1,12,(SYNTAX CRACKING FOR ALTER, ERASE, FORMAT, AND VER
,IFY) 
 STKOUT   BECOMES WRTSESS                                               000260
          INCL   QU01XX      INITIALIZATION OF SECONDARY SYNTAX OVERLAY 000270
          INCL   SYMPL12     SWITCH VECTOR FOR (1,12)                   000280
          INCL   SYNGN12     SYNTAX TABLES FOR (1,12)                   000290
          INCL   ERASEXH     *ERASE*/*EXHIBIT* SYNTAX ROUTINES          000300
          INCL   EXHOVL      CHECKS FOR CORRECT EXHIBIT OVERLAY         000310
          INCL   FORMALT     *FORMAT/ALTER* SEMANTICS 
          INCL   LINE$OU     WRITES LINES FOR *ERASE/EXHIBIT*           000320
          INCL   TLCHECK     CHECK TL AGAINST TL OF CATALOG FILE
          INCL   VERIFY      *VERIFY* SEMANTICS 
          INCL   EXHAPCS     EXHIBIT ACCESS PATH AND COSET
          SPACE  4                                                      000330
* EXECUTION OF THE NON-*REPORT/SESSION* OPTIONS OF *EXHIBIT*            000341
*                                                                       000342
 QU0113   OVLAY  1,13,(SYNTAX CRACKING FOR EXHIBIT) 
 STKOUT   BECOMES WRTSESS                                               000350
          INCL   QU01XX      INITIALIZATION OF SECONDARY SYNTAX OVERLAY 000360
          INCL   SYMPL13     SWITCH VECTOR FOR (1,13)                   000370
          INCL   SYNGN13     SYNTAX TABLES FOR (1,13)                   000380
          INCL   EXHIBIT     *EXHIBIT* SYNTAX ROUTINES                  000390
          INCL   EXHOVL      CHECKS FOR CORRECT EXHIBIT OVERLAY         000400
          INCL   LINE$OU     WRITES LINES FOR *ERASE/EXHIBIT*           000410
          INCL   EXHIMFN     EXHIBIT IMF ITEM OR RECORD NAME
          SPACE  5,6
*     EXECUTION OF THE FOLLOWING DIRECTIVES:  
*         ACCESS
*         RECOVERY
* 
 QU0114   OVLAY  1,14,(SYNTAX CRACKING FOR ACCESS AND RECOVERY) 
 STKOUT   BECOMES WRTSESS 
          INCL   QU01XX      INITIALIZATION OF SECONDARY SYNTAX OVERLAY 
          INCL   SYMPL14     SWITCH VECTOR FOR (1,14) 
          INCL   SYNGN14     SYNTAX TABLES FOR (1,14) 
          INCL   PRIVACY     *ACCESS* SYNTAX ROUTINES 
          INCL   RECOVRY     *RECOVRY* SYNTAX ROUTINES
          SPACE  5,6
*      EXECUTION OF THE FOLLOWING DIRECTIVES: 
*         STORE 
*         MODIFY
*         REMOVE
* 
 QU0115   OVLAY  1,15,(SYNTAX CRACKING FOR MODIFY, REMOVE, AND STORE) 
 STKOUT   BECOMES WRTSESS 
          INCL   QU01XX      INITIALIZATION OF SECONDARY SYNTAX OVERLAY 
          INCL   SYMPL15     SWITCH VECTOR FOR (1,15) 
          INCL   SYNGN15     SYNTAX TABLES FOR (1,15) 
          INCL   DELUPSY     SEMANTICS FOR *STORE*, *MODIFY*, *REMOVE*
          INCL   MOVEVAL     *MOVE* SEMANTICS 
          INCL   SET40       COMMON ROUTINE TO UPDATE DIRECTIVES
          INCL   CKIMFOV     *YES* IF IN CORRECT STORE/MODIFY/REMOVE OVL
          SPACE  4
*      EXECUTION OF THE FOLLOWING DIRECTIVES: 
*         OS
*         RETURN
*         REWIND
* 
 QU0116   OVLAY  1,16,(SYNTAX CRACKING FOR OS, RETURN, AND REWIND)
 STKOUT   BECOMES WRTSESS 
          INCL   QU01XX      INITIALIZATION OF SECONDARY SYNTAX OVERLAY 
          INCL   SYMPL16     SWITCH VECTOR FOR (1,16) 
          INCL   SYNGN16     SYNTAX TABLES FOR (1,16) 
          INCL   OSEXEC      EXECUTION OF THE *OS* DIRECTIVE
          INCL   OSINIT      INITIALIZATION FOR THE *OS* DIRECTIVE
          INCL   RETSYN      *RETURN* SEMANTICS 
          INCL   REWIND      *REWIND* SEMANTICS 
          SPACE  4                                                      000420
**   IMF INTERFACE SYNTAX OVERLAY. THE DIRECTIVES HANDLED ARE:  
*         DISPLAY 
*         EVALUATE
*         EXTRACT 
*         FOLLOW
*         MODIFY
*         MOVE
*         REMOVE
*         STORE 
* 
 QU0160   OVLAY  1,60,(SYNTAX CRACKING FOR IMF MODE)
 STKOUT   BECOMES WRTSESS 
          INCL   QU01XX 
          INCL   SYMPL60     SWITCH VECTOR FOR SEMANTIC ROUTINES
          INCL   SYNGN60     SYNTAX TABLES
          INCL   CKOVLY      *YES* IF IN CORRECT OVERLAY
          INCL   MOVEVAL     *MOVE* *EVALUATE* SEMANTICS
          INCL   NAVICHK     NAVIGATION STRATEGY VERIFICATION 
          INCL   DISPLAY     *DISPLAY* SEMANTIC ROUTINES
          INCL   EXTRACT     *EXTRACT* SEMANTIC ROUTINES
          INCL   IFSYN       *IF* SEMANTIC ROUTINES 
          INCL   SAME        ROUTINES FOR *SAME* PROCESSING 
          INCL   SEMSMR      STORE/MODIFY/REMOVE SEMANTIC ROUTINES
          INCL   SET40       COMMON ROUTINE TO UPDATE DIRECTIVE 
          INCL   CKIMFOV     *YES* IF IN CORRECT STORE/MODIFY/REMOVE OVL
          SPACE  4,10 
**        EOT AND *WHERE* PROCESSING. 
  
  
 QU0177   OVLAY  1,77,(EOT AND WHERE PROCESSING)
 STKOUT   BECOMES WRTSESS 
          INCL   SYMPL77     SWITCH VECTOR FOR (1,77) 
          INCL   SYNGN77     SYNTAX TABLES FOR (1,77) 
          INCL   IFSYN       *IF* SEMANTICS 
          INCL   SET40       COMMON ROUTINE TO ALL FILE ACCESSES
          INCL   WHERE       INTERNAL DIRECTIVE *WHERE* PROCESSING
          INCL   STKSCAN     PROGRAMSTACK PREPROCESSOR
          INCL   RELSCAN     SCAN RELATION TABLE
          SPACE  8,10 
*  EXECUTION OF PREPARE AND PREVIEW.
* 
 QU0200   OVLAY  2,0,(EXECUTION OF PREPARE AND PREVIEW) 
          INCL   EEXPEVA     EXPRESSION EVALUATION SPECIFIC TO REPORT 
          INCL   XEQREP      REPORT PREPARATION CONTROL MODULE
          INCL   PAGE        REPORT PAGE BUILDER
          INCL   CMM$AFG     ACTIVATE/FREE A GROUP-ID 
          INCL   EXPEVAL     EXPRESSION EVALUATION
          SPACE  4,10 
* EXECUTION OF SORT DIRECTIVE.
* SORT/MERGE PACKAGE IS INCLUDED. 
* ALL CRM SEQUENTIAL IS INCLUDED. 
* 
 QU0300   OVLAY  3,0,(EXECUTION OF SORT DIRECTIVE)
          INCL   QUSORT      INTERFACE TO SORT4 
          INCL   SRT4OR5     INTERFACE TO SORT5 
          IFEQ   SORT5,PRESENT
CMM$ALF   BECOMES  CMM$ALF,FOREVER   USE SRT5 ROUTINE 
CMM$FRF   BECOMES  CMM$FRF,FOREVER   USE SRT5 ROUTINE 
          ENDIF 
          SPACE  4,10 
* COMMON ROUTINES FOR CREATE/INVOKE/USE/VERSION PROCESSING.             028100
* 
 QU0500   OVLAY  5,0,(COMMON ROUTINES FOR CREATE/INVOKE/USE/VERSION PROC
,ESSING)
          INCL   CHGFDB      MAKE PF PARAM CHANGES IN FDB               027900
          INCL   CMM$AFG     ACTIVATE/FREE A GROUP-ID 
          INCL   CMM$SLF     SHRINK A FIXED BLOCK AT LWA
          INCL   CATCHK      ACCESSES CATALOG BY CRM OR CDCS            133300
          INCL   CUVMAIN     COMMON DECKS USED BY (5,X) OVERLAYS         QUGEN
          IFEQ   SORT5,PRESENT
CMM$ALF   BECOMES  QU$ALF,FOREVER   RESET SO NOT SRT5 ROUTINE 
CMM$FRF   BECOMES  QU$FRF,FOREVER   RESET SO NOT SRT5 ROUTINE 
          ENDIF 
          USE    ER$SRM      KLUDGE FOR LDRPSR
          SPACE  4,10                                                    QUGEN
* SUBSCHEMA CHECKING TO DETERMINE TYPE OF PROCESSING TO FOLLOW:          QUGEN
*                                                                        QUGEN
*   IF QU/CRM SUBSCHEMA, ENTER (5,2) OVERLAY.                            QUGEN
*   IF COBOL/CDCS SUBSCHEMA, ENTER (5,3) OVERLAY.                        QUGEN
*                                                                        QUGEN
* REQUIRED ACCESS METHODS:                                               QUGEN
*   WORD-ADDRESS FOR SUBSCHEMA READING.                                  QUGEN
*                                                                        QUGEN
 QU0501   OVLAY  5,1,(DETERMINES TYPE OF CREATE/INVOKE/USE/VERSION) 
          INCL   USE         DETERMINATION OF TYPE OF C-U-V              QUGEN
          INCL   BSTOP       EXECUTION OF -END- -STOP-
          INCL   IMFINVC     NORMAL COMPLETION OF IMF INVOKE PROCESSING 
          INCL   MOVEDOW     MOVE CMM BLOCKS CLOSER TO HHA
          SPACE  4,10                                                    QUGEN
* CREATE/INVOKE/USE/VERSION PROCESSING FOR QU SUBSCHEMA.                028400
* REQUIRED ACCESS METHODS:                                               QUGEN
*   WORD-ADDRESS FOR SUBSCHEMA READING.                                  QUGEN
*   SEQUENTIAL FOR LOCAL-TO-PERMANENT LOGFILE COPYING.                   QUGEN
*                                                                        QUGEN
 QU0502   OVLAY  5,2,(CREATE/INVOKE/USE/VERSION PROCESSING FOR CRM SUBSC
,HEMA)
          INCL   DBP$LOD     PREPARATION TO LOAD DBP-S                   QUGEN
          INCL   DBP$PIL     PROGRAM-INITIATE A LOAD OF DBP-S            QUGEN
          INCL   USECRM      C-U-V EXECUTION FOR QU SUBSCHEMA            QUGEN
          INCL   BGTABLE     BACKGROUND RECORD IMAGE BUILDER
          INCL   RMBGTBL     READ NEXT DBI FROM CRM SUBSCHEMA 
          SPACE  4,10                                                    QUGEN
* CREATE/INVOKE/USE/VERSION PROCESSING FOR CDCS SUBSCHEMA.              028700
*                                                                        QUGEN
 QU0503   OVLAY  5,3,(CREATE/INVOKE/USE/VERSION PROCESSING FOR CDCS SUBS
,CHEMA) 
          INCL   USECDCS     C-U-V EXECUTION FOR COBOL SUBSCHEMA LIBRARY QUGEN
          INCL   BGTABLE     BACKGROUND RECORD IMAGE BUILDER
          INCL   DCBGTBL     READ NEXT DBI FROM CDCS SUBSCHEMA
          SPACE  4,10 
*  INITIALIZATION OVERLAY 
* 
 QU1100   OVLAY  11,0,(INITIALIZATION OVERLAY)
          INCL   INITIAL     CONTROL CARD ANALYSIS, INITIALISATION
          SPACE  4,10 
* EXECUTION OF COMPILE DIRECTIVE. 
* CRM SEQUENTIAL, RECORD TYPE S IS INCLUDED.
* 
 QU1200   OVLAY  12,0,(EXECUTION OF COMPILE DIRECTIVE)
          INCL   COMPILE     COMPACTION OF REPORT TABLES
          INCL   CMM$AFG     ACTIVATE/FREE A GROUP-ID 
          SPACE  4,10 
* PARTIAL EXECUTION OF IF DIRECTIVES. 
* THIS OVERLAY IS LOADED IF THE SELECTION CRITERIA(S) (IF DIRECTIVES) 
*  REFERENCE PRIMARY/SECONDARY KEY ITEMS IN THE AREAS.
* THE MULTIPLE-INDEX-PROCESSOR AND THE BOOLEAN-LIST PROCESSOR 
*  ARE INCLUDED.
* 
 QU2000   OVLAY  20,0,(EXECUTION OF IF (PRIMARY/SECONDARY KEY) DIRECTIVE
,)
          INCL   CMM$AFG     ACTIVATE/FREE A GROUP-ID 
          USE    ER$SRM      KLUGE FOR LOADER PSR 
          SPACE  4,10 
*  BLP TABLE AND RANGE TABLE BUILDING 
* 
 QU2001   OVLAY  20,1,(BLP TABLE AND RANGE TABLE BUILDING)
          INCL   IFKEY       BLP TABLE BUILDING 
          INCL   RGTABLE     RANGE TABLE BUILDING 
          INCL   EXPEV20     EXPRESSION EVALUATION SPECIFIC TO KEYS 
          INCL   EXPEVAL     EXPRESSION EVALUATION
          SPACE  4,10 
*  BLP MODULE EXECUTION IN CRM DATA BASE MODE 
* 
* 
 QU2002   OVLAY  20,2,(BLP MODULE EXECUTION IN CRM DATA BASE MODE)
          INCL   CALLBLP     CALLING BLP, INTERPRETING RESULTS
          INCL   RETURNM     RELEASING A FILE AND ASSOCIATED TABLES 
          INCL   RM$BLPX
          INCL   RM$BLP 
          SPACE  4
*  BLP MODULE EXECUTION IN CDCS DATA BASE MODE
* 
* 
 QU2003   OVLAY  20,3,(BLP MODULE EXECUTION IN CDCS DATA BASE MODE) 
          INCL   DCLLBLP     CALLING BLP, INTERPRETING RESULTS
          INCL   RM$BLPX
          INCL   RM$BLP 
          SPACE  4,10 
*  QUERY OF MULTIPLY-LINKED FILES 
* 
 QU3000   OVLAY  30,0,(SINGLE AREA OR RELATION QUERY) 
          INCL   CMM$AFG     ACTIVATE/FREE A GROUP-ID 
          INCL   DBP$X0      (X,0) LINKAGE FOR DATABASE PROCEDURES
          INCL   DBP$SAC     SEARCH AND CALL DBP-S
          INCL   CTL30       CONTROL MODULE FOR QUERY ONLY
          INCL   NEXTGET     TO OBTAIN NEXT RECORD
          INCL   BGIMAGE     TO PRESET RECORD WSA FOR SOME RECORD TYPES 
          INCL   MOV40       PERFORMS A -MOVE-
          INCL   EXPEVAL     EXPRESSION EVALUATION
          SPACE  4,10 
**        QU UPDATE PROCESSING OVERLAY. 
  
  
 QU4000   OVLAY  40,0,(UPDATE PROCESSING) 
          TRAP   DF$CKP      CHECKPOINT LOGGING NOT USED IN QU
 DF$BTD   BECOMES BINDEC     HAVE DBU USE OUR BINARY-TO-DECIMAL 
                             CONVERSION ROUTINE.
          INCL   CMM$AFG     ACTIVATE/FREE A GROUP-ID 
          INCL   DBP$X0      (X,0) LINKAGE FOR DATABASE PROCEDURES
          INCL   DBP$SAC     SEARCH AND CALL DBP-S
          INCL   CTL40       CONTROL MODULE OF EXECUTION OVERLAYS 
          INCL   MOV40       -MOVE- EXECUTION 
          INCL   BGIMAGE     RESETTING RECORD TO BACKGROUNG IMAGE 
          INCL   NEXTGET     ACCESSING NEXT RECORD PER RANGE TABLE
          INCL   EXPEVAL     EXPRESSION EVALUATION
          SPACE  4
**        QU QUERY OR UPDATE OF FILES THROUGH CDCS
          SPACE  2
 QU5000   OVLAY  50,0,(QUERY OR UPDATE PROCESSING THROUGH CDCS) 
          INCL   CMM$AFG     ACTIVATE/FREE A GROUP-ID 
          INCL   CTL50       CONTROL MODULE OF EXECUTION OVERLAYS 
          INCL   MOV40       -MOVE- EXECUTION 
          INCL   BGIMAGE     RESETTING RECORD TO BACKGROUND IMAGE 
          INCL   CDCSGET     ACCESSING NEXT RECORD PER RANGE TABLE
          INCL   EXPEVAL     EXPRESSION EVALUATION
          USE    ER$SRM      KLUGE FOR LOADER PSR 
          SPACE  4,10 
**   IMF INTERFACE EXECUTION OVERLAY
* 
* 
 QU6000   OVLAY  60,0,(IMF INTERFACE EXECUTION OVERLAY) 
          INCL   CMM$AFG     ACTIVATE/FREE GROUP-ID 
          INCL   COMPARE     COMPARES TWO EXPRESSIONS 
          INCL   EXPEVAL     EXPRESSION EVALUATION
          INCL   CTL60       IMF INTERFACE EXECUTION ROUTINES 
          INCL   ININF       INFINITE/INDEFINITE RANGE CHECK
          INCL   MOVEDOW     MOVES A TABLE CLOSER TO LOW CORE 
          INCL   MOV40       *MOVE* *EVALUATE* EXECUTION
          INCL   NEXTREC     GETS THE NEXT RECORD VIA RANGETABLE
          INCL   QUSCAN      LEXICAL SCANNER FOR USER INPUT DATA
          INCL   SELPATH     ACCESS PATH SELECTION
          SPACE  4
**        QU7100 - REPORT INITIALIZATION AND PROCESSING OVERLAY.
  
  
 QU7100   OVLAY  71,0,(REPORT INITIALIZATION AND PROCESSING)
          INCL   CRACKCC     CRACK *REPORT* CONTROL CARD
          INCL   FIXVARS     DATA INITIALIZATION FROM VARIABLE FILE 
          INCL   REP7100     DECOMPRESSION OF REPORT FILES
          INCL   QUSCAN      LEXICAL ANALYZER FOR VARIABLE FILE RECORDS 
          SPACE  4
 DB$CLS   BECOMES DB$CLS,FOREVER   REINSTATE CDCS ENTRY POINT 
 DB$DBST  BECOMES DB$DBST,FOREVER  REINSTATE CDCS ENTRY POINT 
 DB$DEL   BECOMES DB$DEL,FOREVER   REINSTATE CDCS ENTRY POINT 
 DB$END   BECOMES DB$END,FOREVER   REINSTATE CDCS ENTRY POINT 
 DB$INQV  BECOMES DB$INQV,FOREVER  REINSTATE CDCS ENTRY POINT 
 DB$INVV  BECOMES DB$INVV,FOREVER  REINSTATE CDCS ENTRY POINT 
 DB$OPN   BECOMES DB$OPN,FOREVER   REINSTATE CDCS ENTRY POINT 
 DB$PVC   BECOMES DB$PVC,FOREVER   REINSTATE CDCS ENTRY POINT 
 DB$RDX1  BECOMES DB$RDX1,FOREVER  REINSTATE CDCS ENTRY POINT 
 DB$RD1   BECOMES DB$RD1,FOREVER   REINSTATE CDCS ENTRY POINT 
 DB$RD2   BECOMES DB$RD2,FOREVER   REINSTATE CDCS ENTRY POINT 
 DB$REL   BECOMES DB$REL,FOREVER   REINSTATE CDCS ENTRY POINT 
 DB$RELS  BECOMES DB$RELS,FOREVER  REINSTATE CDCS ENTRY POINT 
 DB$REW   BECOMES DB$REW,FOREVER   REINSTATE CDCS ENTRY POINT 
 DB$RPT   BECOMES DB$RPT,FOREVER   REINSTATE CDCS ENTRY POINT 
 DB$RWF   BECOMES DB$RWF,FOREVER   REINSTATE CDCS ENTRY POINT 
 DB$RWR   BECOMES DB$RWR,FOREVER   REINSTATE CDCS ENTRY POINT 
 DB$RWX   BECOMES DB$RWX,FOREVER   REINSTATE CDCS ENTRY POINT 
 DB$SKF   BECOMES DB$SKF,FOREVER   REINSTATE CDCS ENTRY POINT 
 DB$STR   BECOMES DB$STR,FOREVER   REINSTATE CDCS ENTRY POINT 
 DB$STX   BECOMES DB$STX,FOREVER   REINSTATE CDCS ENTRY POINT 
 DB$WR2   BECOMES DB$WR2,FOREVER   REINSTATE CDCS ENTRY POINT 
          SPACE  4,10 
**        DIAGNOSTIC AND HELP TEXT OVERLAYS.
  
  
          HELP   NONE,0 
          HELPT  ( THE DIRECTIVES IMPLEMENTED IN THIS RELEASE ARE)
          HELPT  (     ACCESS          ALTER           BREAK)           034100
          HELPT  (     COMPILE         CREATE)
          HELPT  (     DATE            DEFINE          DELETE)
          HELPT  (     DESCRIBE        DETAIL          DIAG)
          HELPT  (     DISPLAY         DUPLICATE       END) 
          HELPT  (     ERASE           EVALUATE)
          HELPT  (     EXECUTE         EXHIBIT         EXTRACT) 
          HELPT  (     FOLLOW          FOOTING         FORMAT)
          HELPT  (     HEADING         HELP            IF)
          HELPT  (     INSERT          INVOKE)
          HELPT  (     MODIFY          MOVE            NOTE)            034400
          HELPT  (     OS              PAGE-NUMBER) 
          HELPT  (     PAGE-SIZE       PERFORM         PREFACE) 
          HELPT  (     PREPARE         PREVIEW         RECAP) 
          HELPT  (     RECORDING       RECOVERY        REMOVE)          034600
          HELPT  (     RETURN          REWIND          SELECT)          034700
          HELPT  (     SEPARATOR       SORT            SPECIFY) 
          HELPT  (     STOP            STORE           SUMMARY)         034900
          HELPT  (     TABS)                                            035000
          HELPT  (     TIME            TITLE           UNIVERSAL) 
          HELPT  (     UPDATE          USE             VERIFY)
          HELPT  (     VERSION         VETO            VIA) 
          HELP   PREFACE,03002B 
          HELPT  ( PREFACE  CAUSES LINES OF TEXT OR ANOTHER REPORT TO)
          HELPT  ( PRECEDE  THE CURRENT REPORT.)
          HELP   PAGE-SIZE,03004B 
          HELPT  ( PAGE-SIZE  EXTABLISHES VERTICAL AND HORIZONTAL)
          HELPT  ( PAGE LAYOUT.)
          HELP   TABS,03006B
          HELPT  ( TABS SETS TABULAR REFERENCES FOR REPORT COLUMNS.)
          HELP   TITLE,03010B 
          HELPT  ( TITLE CAUSES GENERATION OF ONE OR MORE LINES AT) 
          HELPT  ( THE START OF EACH PAGE.) 
          HELP   RECAP,03012B 
          HELPT  ( RECAP  CAUSES GENERATION OF ONE OR MORE LINES AS)
          HELPT  ( EACH  REPORT PAGE IS COMPLETED.) 
          HELP   PAGE-NUMBER,03014B 
          HELPT  ( PAGE-NUMBER INDICATES VERTICAL AND HORIZONTAL) 
          HELPT  ( POSITIONING  OF PAGE NUMBERS.) 
          HELP   DATE,03016B
          HELPT  ( DATE SPECIFIES VERTICAL AND HORIZONTAL POSITIONING)
          HELPT  ( OF THE DATE ON A REPORT PAGE.) 
          HELP   TIME,03020B
          HELPT  ( TIME SPECIFIES VERTICAL AND HORIZONTAL POSITIONING)
          HELPT  ( OF THE TIME ON A REPORT PAGE.) 
          HELP   SELECT,03022B
          HELPT  ( SELECT STATES CRITERIA FOR SELECTION OF DETAIL)
          HELPT  ( SPECIFICATIONS.) 
          HELP   DETAIL,03024B
          HELPT  ( DETAIL INDICATES CONTENT AS WELL AS VERTICAL AND)
          HELPT  ( HORIZONTAL POSITIONING OF REPORT LINES.) 
          HELP   BREAK,03026B 
          HELPT  ( BREAK ESTABLISHES SITUATIONS WHERE THE BODY OF A)
          HELPT  ( PAGE MAY BE INTERRUPTED.)
          HELP   HEADING,03030B 
          HELPT  ( HEADING INDICATES CONTENT AS WELL AS VERTICAL AND) 
          HELPT  ( HORIZONTAL POSITIONING OF A HEADING.)
          HELP   FOOTING,03031B 
          HELPT  ( FOOTING INDICATES CONTENT AS WELL AS VERTICAL AND) 
          HELPT  ( HORIZONTAL POSITIONING OF A FOOTING.)
          HELP   MOVE,03032B
          HELPT  ( MOVE  PLACES A VALUE IN A DATA NAME.)
          HELP   SUMMARY,03034B 
          HELPT  ( SUMMARY CAUSES LINES OF TEXT OR ANOTHER REPORT TO) 
          HELPT  ( FOLLOW THE CURRENT REPORT.)
          HELP   ACCESS,1100B                                           035200
          HELPT  ( ACCESS SPECIFIES THE KEYS WHICH WILL ALLOW ACCESS TO)035300
          HELPT  ( FILES WHICH HAVE AN ACCESS-CONTROL LOCK)             035400
          HELPT  ( SPECIFIED FOR THE SCHEMA.)                           035500
          HELP   DEFINE,01101B
          HELPT  ( DEFINE ESTABLISHES TEMPORARY DATA ITEMS.)
          HELP   DELETE,01102B
          HELPT  ( DELETE REMOVES RECORDS FROM AN AREA.)
          HELP   DESCRIBE,01103B
          HELPT  ( DESCRIBE ESTABLISHES A DIRECTORY TO THE CONTENT) 
          HELPT  ( OF A FILE OTHER THAN A DATA BASE AREA.)
          HELP   DISPLAY,01104B 
          HELPT  ( DISPLAY LISTS LITERALS AND DATA AT A TERMINAL OR)
          HELPT  ( IN A FILE.)
          HELP   DUPLICATE,01105B 
          HELPT  ( DUPLICATE COPIES ENTRIES FROM ONE CATALOG TO)
          HELPT  ( ANOTHER.)
          HELP   EXECUTE,01106B 
          HELPT  ( EXECUTE INITIATES EXECUTION OF A PROCEDURE)
          HELPT  ( EXTERNAL TO QUERY UPDATE.) 
          HELP   EXHIBIT,01107B 
          HELPT  ( EXHIBIT DISPLAYS- AN AREA-S NAME, IT-S STRUCTURE;) 
          HELPT  ( DATA NAMES, THEIR CHARACTERISTICS; TRANSMISSIONS)
          HELPT  ( RECORDED IN A CATALOG; REPORT SPECIFICATIONS.) 
          HELP   EXTRACT,01110B 
          HELPT  ( EXTRACT PRODUCES A SUBSET OF THE DATA BASE AND A)
          HELPT  ( DIRECTORY TO THE SUBSET.)
          HELP   HELP,01111B
          HELPT  ( HELP PRESENTS DESCRIPTIONS OF DIRECTIVES OR) 
          HELPT  ( EXPLANATIONS OF DIAGNOSTIC MESSAGES.)
          HELP   IF,01112B
          HELPT  ( IF STATES A CONDITION TO BE TESTED.) 
          HELP   INSERT,01113B
          HELPT  ( INSERT  PLACES A RECORD IN THE CURRENT AREA.)
          HELP   UNIVERSAL,01114B 
          HELPT  ( UNIVERSAL DEFINES THE UNIVERSAL CHARACTER.)
          HELPT  ( THE DEFAULT IS NO UNIVERSAL CHARACTER.)
          HELPT  ( -UNIVERSAL- SPECIFIES A UNIVERSAL) 
          HELPT  ( CHARACTER OF -#- OR OCTAL 60.) 
          HELP   PERFORM,01115B 
          HELPT  ( PERFORM  RETRIEVES AND EXECUTES TRANSMISSIONS) 
          HELPT  ( RECORDED  IN THE CURRENT CATALOG.) 
          HELP   MODIFY,1116B                                           035700
          HELPT  ( MODIFY MODIFIES THE VALUES OF DATA ITEMS WITHIN)     035800
          HELPT  ( EXISTING RECORDS OR OF TEMPORARY DATA ITEMS.)        035900
          HELP   RECORDING,01117B 
          HELPT  ( RECORDING  SPECIFIES RETENTION OF TRANSMISSIONS IN)
          HELPT  ( THE CURRENT CATALOG UNDER A SESSION INDENTIFIER.)
          HELP   RECOVERY,1120B                                         036100
          HELPT  ( RECOVERY TELLS CDCS TO LOG A RECOVERY POINT ON)      036200
          HELPT  ( THE LOG FILE.)                                       036300
          HELP   REMOVE,1121B                                           036400
          HELPT  ( REMOVE PERMANENTLY REMOVES ONE OR MORE RECORDS)      036500
          HELPT  ( FROM THE DATA BASE.)                                 036600
          HELP   SEPARATOR,01122B 
          HELPT  ( SEPARATOR DEFINES DELIMITER.)
          HELP   SORT,01123B
          HELPT  ( SORT INITIATES RESEQUENCING OF RECORDS IN A FILE.) 
          HELPT  ( THE -UPON- OPTION SPECIFIES THAT THE RESEQUENCED ) 
          HELPT  ( RECORDS BE PLACED IN FILE-NAME-2.                ) 
          HELPT  ( THE -USING- OPTION SPECIFIES THE COLLATING SEQ   ) 
          HELPT  ( FOR ORDERING THE FILE.  DEFAULT IS THE COBOL     ) 
          HELPT  ( COLLATING SEQUENCE.                              ) 
          HELPT  ( THE -ON- OPTION SPECIFIES THE DATA NAME OF A     ) 
          HELPT  ( SEQUENCING FIELD.  UP TO 25 SEQUENCING FIELDS CAN) 
          HELPT  ( BE INVOLVED IN A SORT AND THE SUM OF THE LENGTH  ) 
          HELPT  ( OF ALL SEQUENCING FIELDS MAY NOT EXCEED 255 CHAR-) 
          HELPT  ( ACTERS.  IF THIS OPTION IS OMITTED, THE SORT KEY ) 
          HELPT  ( IS THE WHOLE RECORD TREATED AS AN ALPHANUMERIC   ) 
          HELPT  ( STRING OR THE FIRST 255 CHARACTERS OF THE RECORD ) 
          HELPT  ( IF THE RECORD IS LONGER THAN 255 CHARACTERS.     ) 
          HELPT  ( THE -UNIQUE- OPTION IS USED TO ELIMINATE DUPLI-  ) 
          HELPT  ( CATE RECORDS FROM THE SORTED FILE.  DUPLICATE    ) 
          HELPT  ( RECORDS ARE DEFINED AS RECORDS THAT ARE EXACT    ) 
          HELPT  ( DUPLICATES IN LENGTH AND CONTENT. THE KEY(S) MUST) 
          HELPT  ( BE SPECIFIED WITH ENOUGH PRECISION THAT DUPLICATE) 
          HELPT  ( RECORDS WILL BE SORTED TO ADJACENT POSITIONS,    ) 
          HELPT  ( OTHERWISE THEY MAY NOT BE ELIMINATED.            ) 
          HELP   SPECIFY,01124B 
          HELPT  ( SPECIFY ESTABLISHES A NAME FOR REFERENCE TO A) 
          HELPT  ( CONDITION.)
          HELP   STOP,01125B
          HELPT  ( -STOP- IS INCOMPATIBLE BETWEEN -NOS- AND -NOS/BE-.)
          HELPT  ( PLEASE REFER TO THE -END- DIRECTIVE.)
          HELP   UPDATE,01126B
          HELPT  ( UPDATE PERMITS MODIFICATION OF RECORDS OR) 
          HELPT  ( TEMPORARY DATA ITEMS.) 
          HELP   USE,01127B 
          HELPT  ( USE PERMITS ACCESS TO A DATA BASE AREA.) 
          HELP   VERIFY,01130B
          HELPT  ( VERIFY SPECIFIES DATA NAMES FOR DISPLAY WITH VETO.)
          HELP   VERSION,01131B 
          HELPT  ( VERSION ATTACHES A FILE AS THE CURRENT CATALOG.) 
          HELP   VETO,01132B
          HELPT  ( VETO PRODUCES A TERMINAL DISPLAY OF MODIFIED DATA) 
          HELPT  ( FOR USER VERIFICATION OR REJECTION.) 
          HELP   EVALUATE,03133B
          HELPT  ( EVALUATE DETERMINES A COMPUTED VALUE FOR A)
          HELPT  ( TEMPORARY DATA ITEM.)
          HELP   DIAG,1134B 
          HELPT  ( -DIAG- ALLOWS PARTIAL OR FULL LISTINGS OF DIAGNOSTIC)
          HELPT  ( MESSAGES. THE DEFAULT IS -DIAG,PART- WHICH CAUSES) 
          HELPT  ( DUPLICATE DIAGNOSTICS TO BE ISSUED IN A SHORTENED) 
          HELPT  ( FORM (ORIGINAL DIAGNOSTIC PLUS COUNT OF DUPLICATES).)
          HELPT  ( -DIAG,FULL- REVERTS TO THE FULL FORM OF EACH)
          HELPT  ( DUPLICATE DIAGNOSTIC.) 
          HELP   END,1135B
          HELPT  ( -END- TERMINATES A QU SESSION AND RETURNS CONTROL) 
          HELPT  ( TO THE OPERATING SYSTEM.)
          HELP   VIA,01136B 
          HELPT  ( VIA SPECIFIES THE RELATION TO BE USED IN AN UPDATE)
          HELPT  ( OR QUERY.  IT IS NECESSARY ONLY WHEN THE RELATION) 
          HELPT  ( TO BE USED CANT BE DEDUCED FROM THE DIRECTIVES GIVEN)
          HELPT  ( TO QUERY UPDATE.)
          HELP   CREATE,01140B
          HELPT  ( CREATE PRODUCES AN AREA FOR SUBSEQUENT INSERTION)
          HELPT  ( OF DATA.)
          HELP   COMPILE,01142B 
          HELPT  ( COMPILE RETRIEVES THE REPORT SPECIFICATIONS FOR A) 
          HELPT  ( GIVEN REPORT FROM THE CURRENT CATALOG AND STORES)
          HELPT  ( THEM ON A FILE.  THIS FILE CAN LATER BE REFERENCED)
          HELPT  ( IN A REPORT CONTROL STATEMENT TO PREPARE A REPORT) 
          HELPT  ( USING THESE SPECIFICATIONS.) 
          HELP   STORE,1143B                                            036800
          HELPT  ( STORE PROVIDES THE VALUES WITH WHICH TO PRESET)      036900
          HELPT  ( A NEW RECORD AND THEN ADD IT TO THE DATA BASE.)      037000
          HELP   INVOKE,1144B                                           037100
          HELPT  ( INVOKE MAKES ALL AREAS AND RELATIONS WITHIN A)       037200
          HELPT  ( GIVEN SUBSCHEMA AVAILABLE FOR ACCESS.)               037300
          HELP   FOLLOW,01200B
          HELPT  (FOLLOW IS USED TO SPECIFY A NAVIGATION STRATEGY.) 
          HELPT  (THE STRATEGY IS STORED AND HOLDS FOR ALL PROCEEDING)
          HELPT  (DISPLAY OR EXTRACT DIRECTIVE.  -FOLLOW DEFAULT-)
          HELPT  (MUST BE STATED TO TURN OFF THE DIRECTIVE.)
          HELP   FORMAT,01201B
          HELPT  ( FORMAT ESTABLISHES A REPORT-NAME IN THE CURRENT) 
          HELPT  ( CATALOG TO RETAIN SUBSEQUENT REPORT) 
          HELPT  ( SPECIFICATIONS.) 
          HELP   PREVIEW,01202B 
          HELPT  ( PREVIEW  INITIATES PRODUCTION OF A SAMPLE REPORT.) 
          HELP   ALTER,01203B 
          HELPT  ( ALTER IDENTIFIES THE REPORT-NAME WHOSE)
          HELPT  ( SPECIFICATIONS ARE TO BE MODIFIED.)
          HELP   PREPARE,01204B 
          HELPT  ( PREPARE  INITIATES REPORT PRODUCTION.) 
          HELP   ERASE,01205B 
          HELPT  ( ERASE REMOVES A TEMPORARY DATA NAME OR ELIMINATES) 
          HELPT  ( A CATALOGED DIRECTIVE.)
          HELP   RETURN,05710B
          HELPT  ( RETURN RELEASES THE NAMED SUBSCHEMA, RELATION, AREA) 
          HELPT  ( OR LOGICAL FILE FROM THE CONTROL POINT AND RELEASES) 
          HELPT  ( ALL RELATED CENTRAL MEMORY.  IT RETURNS PERMANENT) 
          HELPT  ( FILES TO THE PERMANENT FILE MANAGER AND EVICTS)
          HELPT  ( LOCAL FILES.)
          HELP   OS,05711B
          HELPT  ( THE -OS- DIRECTIVE ALLOWS THE INTERACTIVE USER TO )
          HELPT  ( ISSUE CONTROL STATEMENTS TO THE OPERATING SYSTEM)
          HELPT  ( FROM WITHIN QU. THE SYNTAX FOR THIS DIRECTIVE IS:) 
          HELPT  (      OS,<C/S>) 
          HELPT  ( WHERE <C/S> IS THE CONTROL STATEMENT TO BE GIVEN TO) 
          HELPT  ( THE OPERATING SYSTEM. IT DOES NOT NEED A TERMINATOR,)
          HELPT  ( BUT IT MUST CONFORM TO ALL OTHER CONTROL STATEMENT)
          HELPT  ( STANDARDS OF THE OPERATING SYSTEM.)
          HELP   NOTE,05775B
          HELPT  ( NOTE  INCLUDES A COMMENT IN A TRANSMISSION.) 
          HELP   REWIND,05776B
          HELPT  ( REWIND CAUSES THE NAMED FILES TO BE POSITIONED AT) 
          HELPT  ( THE BEGINNING.)
 L."DN"   BSS    0           END OF HELP TEXT 
  
  
 DN       MICRO  1,,#0#      DIAGNOSTIC NUMBERS START AT 1
*CALL     DIAGTEXT
 L."DN"   BSS    0           END OF DIAGNOSTIC TEXT 
          SPACE  4,10 
**        EXPRESSION EVALUATION.
* 
*              THIS CAPSULE IS USED BU THE (1,0) FOR EXPRESSION 
*         EVALUATION.  OTHER PRIMARIES HAVE THEIR OWN COPY BECAUSE THIS 
*         ROUTINE IS USED MORE OFTEN THERE AND BECAUSE (1,0) IS THE 
*         LARGEST OVERLAY.  THIS OVCAP IS DEFINED FIRST BECAUSE THE 
*         SUBSTS OF OVCAP ENTRIES DEFINED IN THE (0,0) SHOULD REMAIN
*         IN EFFECT.
  
  
 EXPEVAL  OVCAP  (EXPRESSION EVALUATION)
          MAP    SBX         MAP(ON)
          EPT    EXPEVAL
          INCL   ININF       ROUTINE TO CHECK INFINITE, INDEFINITE
          EPT    CKININF
          SPACE  4,10 
**        ALPHABETIC EDITING. 
  
  
 ALPHAED  OVCAP  (ALPHABETIC EDITING) 
 ALPHAED  BECOMES ALPHAED    REINSTATE CAPSULE ENTRY POINT
          EPT    ALPHAED
          SPACE  4,10 
**        DATA BASE LOGGING.
* 
*                THIS CAPSULE IS USED BY (40,0) FOR ALL DATA BASE 
*         LOGGING.
* 
*         NOTE - CHANGES IN DBU MAY CAUSE DUPLICATE ROUTINES TO BE
*         LOADED IN THIS CAPSULE.  MORE EXTERNAL PASSLOC ENTRIES MAY BE 
*         NECESSARY IN QU4000.  CHANGES IN QU (40,0) OVERLAY MAY CAUSE
*         ROUTINES REFERENCED IN THE (40,0) OVERLAY TO BE REFERENCED
*         ONLY BY THE PASSLOC LISTS FOR THIS CAPSULE.  IN SUCH A CASE 
*         REMOVE THE PASSLOC ENTRIES FOR THESE EXTERNALS. 
  
  
 CAPLOG   OVCAP  (DATA BASE LOGGING)
 DF$RA0   BECOMES RA0 
 DF$NPF   BECOMES IGNORE
          EPT    CAPLOG 
          OMIT   CLOSEM      WILL BE PASSLOCED TO CAPSULE 
          OMIT   OPENM       WILL BE PASSLOCED TO CAPSULE 
      SPACE      4
**        SEARCH CDCS SUBSCHEMA FOR DATA BASE ITEM AND BUILD INDEX TBL
  
  
 CDCSNAM  OVCAP  (FINDS CDCS DB ITEM AND BUILDS INDEX TABLE)
          EPT    CDCSNAM
          EPT    TRNSDBI     TRANSFORMS CDCS DBI INTO CRM FORMAT
          OMIT   GET,X       WILL BE PASSLOCED TO CAPSULE 
          OMIT   OPENM,X     WILL BE PASSLOCED TO CAPSULE 
          SPACE  4
**        PERFORM CDCS ROUTINES 
  
  
 CDCSREQ  OVCAP  (EXECUTION OF CDCS ROUTINES) 
          EPT    CDCSREQ
          OMIT   RTNSSCM,X   WILL BE PASSLOCED TO CAPSULE 
          INCL   CHNGEPT
          NOEPT 
          EPT    DB.CLS 
          EPT    DB.DBST
          EPT    DB.DEL 
          EPT    DB.END 
          EPT    DB.INQV
          EPT    DB.INVV
          EPT    DB.OPN 
          EPT    DB.PVC 
          EPT    DB.RDX1
          EPT    DB.RD1 
          EPT    DB.RD2 
          EPT    DB.REL 
          EPT    DB.RELS
          EPT    DB.REW 
          EPT    DB.RPT 
          EPT    DB.RWF 
          EPT    DB.RWR 
          EPT    DB.RWX 
          EPT    DB.SKF 
          EPT    DB.STR 
          EPT    DB.STX 
          EPT    DB.WR2 
 DB$RA0   BECOMES RA0 
 DF$RA0   BECOMES RA0 
          SPACE  4
          SPACE  4,10 
          OMIT   ER$SRM      KLUGE FOR LOADER PSR 
**        *CREATE* INITIALIZATION.
  
  
 CREINIT  OVCAP  (CREATE INITIALIZATION)
          EPT    CREINIT
          OMIT   CALLOWN     WILL BE PASSLOCED TO CAPSULE 
          OMIT   CLOSEM      WILL BE PASSLOCED TO CAPSULE 
          OMIT   CMM$FGR     WILL BE PASSLOCED TO CAPSULE 
          OMIT   OPENM       WILL BE PASSLOCED TO CAPSULE 
          SPACE  4,10 
**        SEARCH CRM SUBSCHEMA FOR DATANAME 
  
  
 CRMNAME  OVCAP  (SEARCHES CRM SUBSCHEMA FOR DATA NAME) 
          EPT    CRMNAME
          OMIT   GET,X       WILL BE PASSLOCED TO CAPSULE 
          OMIT   OPENM,X     WILL BE PASSLOCED TO CAPSULE 
          SPACE 4 
**        CUMULATIVE FUNCTIONS SYNTAX PROCESSOR.
  
  
 CUMFUNC  OVCAP  (CUMULATIVE FUNCTIONS SYNTAX PROCESSOR)
          EPT    CUMFUN 
          EPT    CUMFUNC
          EPT    CUMFUPM
          OMIT   CURLXID,X   WILL BE PASSLOCED TO CAPSULE 
          OMIT   DDIAG,X     WILL BE PASSLOCED TO CAPSULE 
          OMIT   ENDPTR,X    WILL BE PASSLOCED TO CAPSULE 
          OMIT   EVALDAT,X   WILL BE PASSLOCED TO CAPSULE 
          OMIT   EVALFWA,X   WILL BE PASSLOCED TO CAPSULE 
          OMIT   LSTDNO,X    WILL BE PASSLOCED TO CAPSULE 
          OMIT   LSTDYES,X   WILL BE PASSLOCED TO CAPSULE 
          OMIT   SAVATTR,X   WILL BE PASSLOCED TO CAPSULE 
          OMIT   SAVEDES,X   WILL BE PASSLOCED TO CAPSULE 
          SPACE  4,10 
**        DIAGNOSTIC/HELP TEXT PROCESSING.
  
  
 DIAGS    OVCAP  (DIAGNOSTIC/HELP TEXT PROCESSING)
 PDT      BECOMES PDT        REINSTATE CAPSULE ENTRY POINT
          EPT    PDT
          OMIT   NEXLENG     EXISTS IN IMFLIB 
          OMIT   NEXWORD     EXISTS IN IMFLIB 
          INCL   DIAGXEQ     DIAGNOSTIC GENERATOR 
          SPACE  4,10 
**        EXPRESSION ANALYSIS.
  
  
 EXPANAL  OVCAP  (EXPRESSION ANALYSIS)
          EPT    CHKLOGO
          EPT    CONDINI
          EPT    ENDABEX
          EPT    ENDCOND
          EPT    ENDEXPR
          EPT    EXPRESS
          EPT    EXPRINI
          EPT    FUNCPAR
          EPT    FUNCTIO
          EPT    IFSAME 
          EPT    LOGOP
          EPT    NOTOP
          EPT    OPENPAR
          EPT    OPERAND
          EPT    OPERATO
          EPT    RECSAME
          EPT    RELOP
          EPT    STKOPND
          EPT    UNARYOP
          OMIT   SYMHBR.     WILL BE PASSLOCED TO CAPSULE 
          INCL   CURTT       *CURRENT-XXX* SYNTAX PROCESSOR 
          EPT    CURTT                                                   QU3A334
          SPACE  4,10 
**        FIGURATIVE SUBSCRIPTS.
  
  
 FIGSUB   OVCAP  (FIGURATIVE SUBSCRIPTS)
 FIGSUB   BECOMES FIGSUB     REINSTATE CAPSULE ENTRY POINT
          EPT    FIGSUB 
          SPACE  4,10 
**        IMF DICTIONARY (METADB TABLE LOOKUP)
* 
* 
 IMFDICT  OVCAP  (IMF DICTIONARY (METADB TABLE LOOKUP)) 
          EPT    DES$APT
          EPT    DES$CST
          EPT    DES$DIT
          EPT    DES$REC
          EPT    FOL$END
          EPT    FOL$INI
          EPT    FOL$OFF
          EPT    GET$AP 
          EPT    IMFNAM 
          EPT    INITID 
          EPT    PATHKEY
          EPT    STO$AP 
          EPT    STO$KEY
          EPT    STO$MEM
          EPT    STO$OWN
          EPT    STO$REC
          SPACE  4
**        IMF RUNTIME PROCESSOR 
* 
* 
 IMFRUN   OVCAP  (IMF RUNTIME PROCESSOR)
          EPT    AUTOP60
          EPT    CLOSE$ 
          EPT    EXEC$
          EPT    INVOKE$
          EPT    INV$ABS
          IGNORE PRY$PRY
          IGNORE RPV$RPV
          NOEPT 
          SPACE  4
**        EXPONENTIATION. 
  
  
 MATH=    OVCAP  (EXPONENTIATION) 
 DTOD     BECOMES DTOD       REINSTATE CAPSULE ENTRY POINT
 ITOJ     BECOMES ITOJ       REINSTATE CAPSULE ENTRY POINT
 XTOY     BECOMES XTOY       REINSTATE CAPSULE ENTRY POINT
 DADD     BECOMES DADD       REINSTATE CAPSULE ENTRY POINT
 DDIV     BECOMES DDIV       REINSTATE CAPSULE ENTRY POINT
 DMULT    BECOMES DMULT      REINSTATE CAPSULE ENTRY POINT
 DSUB     BECOMES DSUB       REINSTATE CAPSULE ENTRY POINT
          EPT    DTOD 
          EPT    ITOJ 
          EPT    XTOY 
          EPT    DADD 
          EPT    DDIV 
          EPT    DMULT
          EPT    DSUB 
          SPACE  4,10 
**        NUMERIC EDITING.
  
  
 NUMERED  OVCAP  (NUMERIC EDITING)
 NUMERED  BECOMES NUMERED    REINSTATE CAPSULE ENTRY POINT
          EPT    NUMERED
          SPACE  4,10 
**        OPEN CATALOG FILE.
  
  
 OPNCAT   OVCAP  (OPENS CATALOG FILE) 
          EPT    OPNCAT 
          INCL   REQPF       REQUEST,LFN,*PF,SN. FOR NOS/BE ONLY
          EPT    REQPF
          OMIT   CLOSEM,X    WILL BE PASSLOCED TO CAPSULE 
          OMIT   OPENM,X     WILL BE PASSLOCED TO CAPSULE 
          OMIT   PUT,X       WILL BE PASSLOCED TO CAPSULE 
          OMIT   RETURNM,X   WILL BE PASSLOCED TO CAPSULE 
          SPACE  4,10 
**        *PERFORM* EXECUTIVE.
  
  
 PEREXEC  OVCAP  (EXECUTION OF PERFORM DIRECTIVE) 
          EPT    PERBEGI
          EPT    PERCKDM
          EPT    PEREND 
          EPT    PEREXEC
          EPT    PERINIT
          EPT    PERNEXT
          EPT    PEROVER
          EPT    TSVETO 
          OMIT   CURP2,X     WILL BE PASSLOCED TO CAPSULE 
          OMIT   EXPEVAL,X   WILL BE PASSLOCED TO CAPSULE 
          OMIT   LSTDNO,X    WILL BE PASSLOCED TO CAPSULE 
          OMIT   LSTDYES,X   WILL BE PASSLOCED TO CAPSULE 
          OMIT   SESSPTR,X   WILL BE PASSLOCED TO CAPSULE 
          OMIT   SYNIO,X     WILL BE PASSLOCED TO CAPSULE 
          OMIT   SYNTAX,X    WILL BE PASSLOCED TO CAPSULE 
          SPACE  4,10 
**        DECIMAL POINT SCALING IN BINARY NUMBERS.
  
  
 QU2CONV  OVCAP  (DECIMAL POINT SCALING IN BINARY NUMBERS)
 QU2CONV  BECOMES QU2CONV    REINSTATE CAPSULE ENTRY POINT
 SCALEFL  BECOMES SCALEFL    REINSTATE CAPSULE ENTRY POINT
 SCALEIN  BECOMES SCALEIN    REINSTATE CAPSULE ENTRY POINT
          EPT    QU2CONV
          EPT    SCALEFL
          EPT    SCALEIN
          SPACE  4,10 
**        FLOATING POINT TO DISPLAY CODE CONVERSION.
  
  
 QU2KOD   OVCAP  (FLOATING POINT TO DISPLAY CODE CONVERSION)
 QU2KOD   BECOMES QU2KOD     REINSTATE CAPSULE ENTRY POINT
 BSTATUS  BECOMES BSTATUS    REINSTATE CAPSULE ENTRY POINT
          EPT    QU2KOD 
          SPACE  4,10 
**        REPORT PREPARATION ROUTINES.
  
  
 RPTEXIT  OVCAP  (REPORT PROCESSING FOR *FULLSYNTAX*) 
          EPT    RPTCLR 
          EPT    RPTEXIT
          EPT    RPTSET 
          INCL   SETBIT      INITIALIZATION FOR REPORT PREPARATION
          EPT    SETBIT 
          OMIT   EXIT10,X    WILL BE PASSLOCED TO CAPSULE 
          OMIT   LSTDNO,X    WILL BE PASSLOCED TO CAPSULE 
          OMIT   RPTFLAG,X   WILL BE PASSLOCED TO CAPSULE 
          OMIT   RPTOVL,X    WILL BE PASSLOCED TO CAPSULE 
          SPACE  4
**        RETURN SUBSCHEMA FILES AND TABLES AFTER FATAL CDCS ERROR
  
  
 RTNSSCM  OVCAP  (RETURNS SUBSCHEMA FILES AND TABLES AFTER CDCS FATAL ER
          USE    RTNSSCM     WAS OMITTED BACK IN *CDCSREQ*
,ROR) 
          EPT    RTNSSCM
          SPACE  4,10 
**        SCAN FUNCTION.
  
  
 SCAN     OVCAP  (PROCESSES THE SCAN FUNCTION)
 SCAN     BECOMES SCAN       REINSTATE CAPSULE ENTRY POINT
          EPT    SCAN 
          SPACE  4,10 
**        *USINGEX* OPTION PROCESSING.
  
  
 USINGEX  OVCAP  (*USINGEX* OPTION PROCESSING)
          EPT    FROMERR
          EPT    USINGEX
          OMIT   GET         WILL BE PASLOCED TO CAPSULE
          SPACE  4,10 
**        END OF QUGEN TABLES.
  
  
          ENDTBLS 
  
  
          END    QUGEN
