         SYSTEM   BPM                                          EL35174  RRG
         SYSTEM   SIG7FDP           TO USE M: INSTRUCTION      EL35174  RRG
*        REPORT PROCESSOR SUBROUTINE
*        LINKAGE  FOR INITIATE
*        LI,2     R:REPORT-NAME
*        BAL,11   C:RRI
*
*        LINKAGE   FOR GENERATE
*        LI,2     R:REPORT-NAME
*        BAL,11   C:RRG
*        DATA     R:REPORT-NAME+OFFSET TO DETAIL REPORT GROUP
*
*        LINKAGE  FOR TERMINATE
*        LI,2     R:REPORT-NAME
*        BAL,11   C:RRH
*
         DEF      C:RRA,C:RRB,C:RRC
         DEF      C:RRH,C:RRD,C:RRE,C:RRF,C:RRJ,C:RRK
         DEF      C:RRI
         DEF      C:RRG,C:RRQ,C:RRR,C:RRS,C:RRT,C:RRU,C:RRV,C:RRW
         DEF      C:RRX,C:RRY,C:RRZ
*TERMINATE
C:RRH    STW,2    REPBAS            SET REPORT STATUS TO UN INITIATED
         STW,11   RGEXIT
         LW,7     4,2               GET RPW ACTION INDICATOR   EL30974  RRG
         LW,6     KERROR            INDICATE THAT REPORT IS CLOSED
         STW,6    4,2
         CW,7     BDORH             IF NO GENERATE STATEMENT   EL30974  RRG
         BE       *11                 APPEARED, EXIT           EL30974  RRG
         LI,7     13
         LB,7     *REPBAS,7
*SET LEV-OF-BK SO THAT ALL CONTROL FOOTINGS WILL BE PRODUCED.
         B        SLOB
C:RRK    LI,1      X'90'                                                C:RRG
         B        ABASETUP
NOWOPN   LI,1      X'91'                                                C:RRG
         B        ABASETUP
KERROR   B        C:RRK
*INITIATE
C:RRI    STW,2    REPBAS
         STW,11   RGEXIT
         LW,7     KERROR
         CW,7     4,2
         BCS,3    NOWOPN            REPORT ALREADY INITIATED
         BAL,12   EJECT
*START ON CLEAN PAGE
         LW,6     8,2
         LI,7     1                 SET PAGE COUNTER TO 1
         STW,7    *6,7
*SET REPORT STATUS TO "JUST INITIATED"
         LW,6     BJUSTN
         STW,6    4,2
         LI,6     15                                           EL35174  RRG
         MTB,0    *2,6              PAGE LIMIT DEFAULTED ?     EL35174  RRG
         BNEZ     PRECSM            JUMP IF NO                 EL35174  RRG
         LW,11    1,2               GET # OF FD LESS 1         EL35174  RRG
         LW,3     6,2               GET A(ASSOCIATED FD)       EL35174  RRG
NXTFIL   LW,4     *3                GET A(FILE INDEX AREA)     EL35174  RRG
         LI,10    2                                            EL35174  RRG
         CW,10    1,4                                          EL35174  RRG
         BANZ     NXTSTP            JUMP IF FILE OPEN          EL35174  RRG
         AI,11    -1                                           EL35174  RRG
         BLZ      PRECSM            JUMP, IF NO FILE OPEN      EL35174  RRG
         AI,3     1                 GET A(NEXT FILE)           EL35174  RRG
         B        NXTFIL                                       EL35174  RRG
SETPGL   LB,10    *3                GET # OF LINE IMAGE        EL35174  RRG
         BEZ      *11               RETURN IF NO LINE IMAGE    EL35274  RRG
         LW,9     8                 GET # OF LINE REMAINING    EL35174  RRG
         AI,10    -1                                           EL35174  RRG
         BG       LINELP            JUMP IF > 1 LIME IMAGE     EL35174  RRG
         LI,6     31                                           EL35174  RRG
         LB,7     *3,6              GET # OF REL. LINE         EL35174  RRG
         SW,9     7                 UPDATE # OF LINE REMAINING EL35174  RRG
STPGL    LI,6     20                                           EL35174  RRG
         STB,9    *3,6              STORE LARGEST # OF L-C     EL35174  RRG
         B        *11               RETURN                     EL35174  RRG
LINELP   LI,5     X'1FFFF'                                     EL35174  RRG
         LS,5     6,3               GET A (LINE IMAGE DESC)    EL35174  RRG
         LI,6     7                 GET BA (LINE NO.)          EL35174  RRG
LILOOP   LB,7     *5,6              GET # OF REL. LINE         EL35174  RRG
         SW,9     7                 UPDATE # OF LINE REMAINING EL35174  RRG
         AI,10    -1                                           EL35174  RRG
         BL       STPGL             JUMP IF NO MORE LINE IMAGE EL35174  RRG
         AI,5     2                 GET NEXT A(LINE IMAGE DES) EL35174  RRG
         B        LILOOP                                       EL35174  RRG
NXTSTP   LW,3     *4                GET A(DCB OF THE FILE)     EL35174  RRG
         M:DEVICE *3,(NLINES)       GET # OF LINE REMAINING    EL35174  RRG
         STB,8    *2,6              STORE SYSTEM DEFAULT PGL   EL35174  RRG
         LW,3     2                                            EL35174  RRG
         AI,3     10                GET A (RH OF REPORT TABLE) EL35174  RRG
         BAL,11   SETPGL            SET PAGE LIMIT FOR RH      EL35174  RRG
         AI,3     8                 GET A (RF OF REPORT TABLE) EL35174  RRG
         BAL,11   SETPGL            SET PAGE LIMIT FOR RF      EL35174  RRG
         AI,3     40                GET A (FIRST DE OF RPWTAB) EL35174  RRG
         LI,4     12                                           EL35174  RRG
         LB,4     *2,4              GET # OF DE GROUPS         EL35174  RRG
DELOOP   BAL,11   SETPGL            SET PAGE LIMIT FOR THE DE  EL35174  RRG
         AI,3     8                 GET A(NEXT REPORT GROUP)   EL35174  RRG
         AI,4     -1                                           EL35174  RRG
         BG       DELOOP            JUMP IF MORE DE GROUP      EL35174  RRG
         LI,4     13                                           EL35174  RRG
         LB,4     *2,4              GET # OF CONTROL GROUPS    EL35174  RRG
         AI,3     1                 GET A (1ST WORD OF CF)     EL35174  RRG
CFLOOP   BAL,11   SETPGL            SET PAGE LIMIT FOR CF      EL35174  RRG
         AI,3     8                 GET A (THE CH GROUP)       EL35174  RRG
         BAL,11   SETPGL            SET PAGE LIMIT FOR THE CH  EL35174  RRG
         AI,3     9                 GET A (NEXT CF GROUP)      EL35174  RRG
         AI,4     -1                                           EL35174  RRG
         BG       CFLOOP            JUMP IF MORE CONTROL GROUP EL35174  RRG
PRECSM   LI,5     1                                            EL35174  RRG
CLRMOR   STW,5    CLEAR
*CLEAR ALL SUM COUNTERS BY EXECUTING THE RESET CODE FOR EACH CF.
*RETURN IS TO C:RRD AND THEN TO CLR2
         LI,7     13
         CB,5     *REPBAS,7
         BG       PREOUT            JUMP IF NO MORE CONTROL LEVEL       C:RRG
         MI,5     17                COMPUTE BASE OF CONTROL GROUP
         AW,5     7,2
         LI,7     X'1FFFF'
         LS,7     -12,5
         BCS,3    *7                WILL RETURN TO C:RRD
CLR2     LW,5     CLEAR
         AI,5     1
         B        CLRMOR
PREOUT   LW,6     BDORH             SET DO RH IN GENERATE STATEMENT     C:RRG
         STW,6    4,2               PRINT RH IN GENERATE INSTEAD INIT   C:RRG
         B        CLEVL                                                 C:RRG
         PAGE                                                           C:RRG
*GENERATE STATEMENT ENTER HERE                                          C:RRG
C:RRG    STW,2    REPBAS            SAVE A(REP TABLE)                   C:RRG
         STW,11   RGEXIT            SAVE RETURN ADDRESS                 C:RRG
         B        4,2               1. DO RH; 2. COMPARE CB FIELD       C:RRG
DORH     RES      0                 TO PRINT RH AND PH                  C:RRG
         LW,3     REPBAS            SET TO RH - PRINT RH AND PAGE HEADING
         AI,3     10
         LI,7     20                                           EL32674  RRG
         MTB,1    *2,7              SET STATUS = 1 1ST ENTRY   EL32674  RRG
         BAL,11   LINCNT
         LW,3     REPBAS
         AI,3     42
         BAL,11   LINCNT
         LI,7     20                                           EL32674  RRG
         MTB,-1   *2,7              RESET STATUS               EL32674  RRG
         BAL,11   SETGPI            SET GRP IND FLAGS
* BRANCH ACCORDING TO REPORT STATUS - IF UN INITIATED TO C:RRK
*AFTER INITIALIZATION FIRST TIME GOES TO JUSTIN BUT THEREAFTER GOES TO
*COMPARE CONTROL FIELDS ACCORDING TO ADDRESS GIVEN IN REPORT TABLE LOCATION 5
JUSTIN   LI,7     X'1FFFF'
         LW,6     0,2
         STS,6    4,2
* INDICATE THAT REPORT IS IN GENERATE STATUS
*SO THAT ALL CONTROL HEADINGS CAN BE PRODUCED.
         LI,7     13                SET LEVEL-OF-BK TO NO OF CONTROL LEVELS
         LB,7     *REPBAS,7
         STW,7    LVOFBK
         STW,7    LEVEL
         B        SETGI
*CONTROL BREAK TESTS RETURN HERE AND LOAD THE LEVEL AT WHICH BREAK OCCURED.
*IF THERE IS NO CONTROL FIELD CHANGE-CONTROL GOES TO C:RRQ. LEVEL IS NOT THEN
*RESET TO ZERO BECAUSE THIS ROUTINE NEVER RETURNS TO THE COBOL USER UNTIL LV=0.
C:RRZ    LI,7     9
         B        SLOB
C:RRY    LI,7     8
         B        SLOB
C:RRX    LI,7     7
         B        SLOB
C:RRW    LI,7     6
         B        SLOB
C:RRV    LI,7     5
         B        SLOB
C:RRU    LI,7     4
         B        SLOB
C:RRT    LI,7     3
         B        SLOB
C:RRS    LI,7     2
         B        SLOB
C:RRR    LI,7     1
SLOB     STW,7    LVOFBK
         B        TLOB
NXTCF    AI,3     1
*INCREMENT TO NEXT HIGHER LEVEL IN PREPARATION FOR NEXT CONTROL FOOTING.
         STW,3    LEVEL
         MI,3     17                COMPUTE BASE ADDRESS OF CF
         LW,2     REPBAS
         AW,3     7,2
         AI,3     -16
         BAL,11   LINCNT            PRODUCE REPORT GROUP FOR CF
         LI,7     X'1FFFF'          JUMP TO RESET CODE IF IT EXISTS
*RETURN TO C:RRD
         LS,7     4,3
         BCS,3    *7
C:RRD    LW,2     REPBAS            RETURN FROM RESET
         LW,7     BJUSTN
         CW,7     4,2
*TEST TO SEE IF THE RESET CODE WAS EXECUTED DURING AN INITIATE OR BECAUSE OF A
*CONTROL BREAK.
         BCR,3    CLR2              TO INITIATE RESETS
TLOB     LW,3     LEVEL
*HAVE ALL CONTROL FOOTINGS REQUIRED BY THE CONTROL BREAK BEEN PRODUCED
         CW,3     LVOFBK
         BCS,1    NXTCF
SETGI    BAL,11   SETGPI
ALLRST   LW,7     KERROR
*TEST-IF A TERMINATE IS IN PROCESS-BRANCH TO PRODUCE REPORT FOOTING
         CW,7     4,2
         BCR,3    RF
         LW,7     LEVEL
         BCR,3    C:RRE
* COMPUTE ENTRY POINT TO MOVES WHICH PRESERVE CONTROL FIELDS WHEN THERE
* HAS BEEN A CONTROL BREAK AT LEVEL 'LEVEL'.
         MI,7     17
         AW,7     7,2
         LI,9     X'1FFFF'
         LS,9     -17,7
         BCS,3    *9                JUMP TO MOVE CONTROL FIELDS TO OLD
*AND RETURN TO C:RRE
*MOVES TO OLD CONTROL FIELDS RETURN HERE
C:RRE    LW,3     LEVEL             IS LEVEL ZERO
         BCR,3    C:RRQ             DO DETAIL LINE
DOCHD    MI,3     17                COMPUTE BASE OF CH
         LW,2     REPBAS
*COMPUTE BASE OF CH IN ORDER FROM MAJOR TO MINOR CONTROL HEADING
         AW,3     7,2
         AI,3     -8
         BAL,11   LINCNT            PRODUCE CONTROL HEADING
         LW,3     LEVEL
         AI,3     -1
         STW,3    LEVEL
         BCS,3    DOCHD
*CONTROL BREAK TEST RETURNS HERE IF NO CHANGES
C:RRQ    LW,2     REPBAS
         LW,3     *RGEXIT           IS IT SUMMARY REPORT
         BCS,3    DTTL              GO TO DETAIL REPORT
         LI,1     12
*IF SUMMARY RPT EXECUTE THE ADD CODE FOR ALL DETAIL REPORT GROUPS.
         LB,5     *2,1
ADDAGN   STW,5    DTLS              COMPUTE LOCATION OF ADD CODE
         MI,5     8
         AI,5     52
         LI,7     X'1FFFF'
         LS,7     *REPBAS,5
         BCS,3    *7                JUMP TO ADD CODE AND RETURN TO C:RRF
*ADD TO SUMS RETURNS HERE WHEN PROCESSING DETAIL LINES
C:RRF    LW,7     *RGEXIT           IS IT SUMMARY REPORT
         BCS,3    C:RRB             NO
*LET ENTRY POINT IN PRINT HANDLE THIS.
         LW,5     DTLS
*YES
         AI,5     -1
*GO TO NEXT DETAIL REPORT GROUP
         BCS,2    ADDAGN
         LW,2     REPBAS
         B        C:RRJ
*EXIT TO COBOL PROC DIV
DTTL     BAL,11   LINCNT            PRODUCE DETAIL LINE
         LI,6     1
         LI,1     4
         LB,8     *3,1              IS GROUP INDICATE ON (NON ZERO)
         BCR,3    *RGEXIT,6
*EXIT TO COBOL PROC DIV
         LI,8     0
*SET GROUP IND FLAG OFF AND GO TO CODE TO BLANK OUT GRP IND FIELDS
*THEN RETURN TO C:RRJ
         STB,8    *3,1
         LI,7     X'1FFFF'
         LS,7     4,3
         BCS,3    *7
C:RRJ    LI,7     1
OUT      EQU      %
         B        *RGEXIT,7
*EXIT TO COBOL PROC DIV
RF       LI,7     20                                           EL32674  RRG
         MTB,3    *2,7              SET STATUS = 3 FOR RF      EL32674  RRG
         LI,3     18
         AW,3     REPBAS
         MTW,0    0,3               ANY RF GROUP ?              EL26775 CRRG
         BNE      RFPRNT            YES, JUMP TO PRINT RF       EL26775 CRRG
         AI,3     50-18             SET PF GROUP                EL26775 CRRG
RFPRNT   RES      0                                             EL26775 CRRG
         BAL,11   LINCNT
AFTRF    LI,7     20                                           EL32674  RRG
         LI,1     0                                            EL32774  RRG
         STB,1    *2,7              RESET REPORT STATUS        EL32774  RRG
CLEVL    LI,7     0
         STW,7    LEVEL
         STW,7    LVOFBK
*SET LEVEL TO ZERO SINCE THIS IS THE ONLY EXIT WHERE IT DOES NOT AUTOMATICALLY
*COME OUT ZERO
         B        OUT
*EXIT TO COBOL PROC. DIV.
*SET THE GROUP INDICATE FLAGS IN ALL DETAIL LINES-SINCE A CONTROL BREAK HAS
*TAKEN PLACE.
SETGPI   LI,1     12
         LB,8     *2,1
         LI,7     204
         LI,9     1
SETGI2   AI,7     32
         AI,8     -1
         STB,9    *REPBAS,7
         BCR,2    *11
         B        SETGI2
*LINKAGE
*        LI,2     REPBAS
*        LI,3     REPGRP
*        BAL,11   LINCNT
LINCNT   STW,11   LCEXIT
         STW,3    REPGRP
NWPG     LI,1     28
*TEST FIELD L-PRECEDING SPACING TYPE
         LB,6     *3,1
         B        LNTYP,6
LNTYP    B        PRNNT             REPORT GROUP HAS NO PRINT IMAGES
         B        LABS              ABS
         B        LREL              REL
PPAGE    BAL,11   PAGE              PAGE
         B        PRNNT             GO TO PRINT THE LINE
LABS     LI,7     31
         LB,9     *REPGRP,7         LOAD 'INTEGER'
         CW,9     9,2
*IS THE PAGE ALREADY SPACED TOO FAR
         BGE      PREPRN            NO, GO TO PRINT LINE       EL32674  RRG
         B        PPAGE
*YES-EJECT
LREL     LI,1     20
         LB,9     *3,1              LOAD LARGEST ALLOWABLE LINE COUNT
         LW,8     LEVEL
         BCR,3    CMPRLC
         LI,1     8
         LB,11    *3,1              IS TYPE CF AND LEVEL 1
         CI,11    7
         BCS,3    CMPRLC
         CI,8     1
         BCS,3    PRNNT
         LW,7     LVOFBK            GET LARGEST ALLOWABLE LINE
         LW,11    7                    SIDR 1780
         MI,7     17                FROM LEVEL-OF-BREAK
         AW,7     7,2
         AI,7     -11
LOADLC   LB,9     *7                   SIDR 1780
         BCS,2    CMPRLC            BR IF NON ZERO
         AI,7     -17               STEP TO NEXT CF
         BDR,11   LOADLC            TRY NEXT CF LEVEL
         B        *LCEXIT           NO CF TO PRINT
*
*        ABOVE IS FOR SIDR 1780
*        IF 'CONTROLS ARE' CLAUSE IN THE RD ENTRY CONTAINS FIELD
*        NAMES WHICH ARE NOT REFERENCED IN CONTROL HEADING OR
*        CONTROL FOOTING CLAUSES, REPORT WRITER LOOPS WHEN THE
*        FIRST CONTROL BREAK OCCURS
*        FIX MADE 6/4/70
*                                      SIDR 1877 FIX MADE 6/4/70
CMPRLC   LW,11    8,2
         CW,9     *11
*IS THE PAGE ALREADY SPACED TOO FAR
         BGE      PREPRN            NO, GO TO PRINT LINE       EL32674  RRG
         BAL,11   PAGE
*YES-EJECT
         B        NWPG
PREPRN   LI,7     20                                           EL32674  RRG
         LB,11    *2,7              GET REPORT STATUS          EL32674  RRG
         CI,11    3                 IS IN RF ?                 EL32674  RRG
         BNE      PRNNT             NO, GO TO PRINT LINE       EL32674  RRG
         MTB,-2   *2,7              SET TO BE RH TO AVOID PF   EL32774  RRG
         LI,3     50                SET                        EL32674  RRG
         AW,3     REPBAS              A( PF IN REPORT TABLE)   EL32674  RRG
         BAL,11   LINCNT            PRINT PF                   EL32674  RRG
         LI,3     18                SET                        EL32674  RRG
         AW,3     REPBAS              A( RF IN REPORT TABLE)   EL32674  RRG
         BAL,11   LINCNT            PRINT PF                   EL32674  RRG
         B        AFTRF             RETURN                     EL32774  RRG
PRNNT    BAL,11   PRINT
         B        *LCEXIT
*
*
* PAGE FOOTING, EJECT, HEADING ROUTINE
*
*
PAGE     STW,11   PAGXIT
         STW,3    RPGRP2
         LW,3     PREXIT
         STW,3    PRXIT2
         LW,3     REPBAS
         AI,3     34                SET TO OV
         LW,10    LEVEL
*TEST IF PAGE OR OVERFLOW CONDITION EXISTS
         BCR,3    STPF
         CW,10    LVOFBK
         BCS,3    STPF
         AI,3     16                IF LEVEL IS NON-ZERO SET TO PF
STPF     STW,3    REPGRP
         LI,7     20                                           EL32674  RRG
         LI,11    TYPERH            SET RETURN ADDRESS         EL32674  RRG
         LB,12    *2,7              GET REPORT STATUS          EL32674  RRG
         CI,12    1                 IF FIRST ENTRY OF RRG      EL32674  RRG
         BNE      PRINT             NO, GO TO PRINT LINE       EL32674  RRG
TYPERH   BAL,12   EJECT
         BAL,11   SETGPI            SET GRP INDICATE FLAGS
         LW,3     REPGRP
         AI,3     -8
         STW,3    REPGRP            CHANGE TO HEADING
         LI,7     8
         LB,7     *RPGRP2,7
         CI,7     4
*SKIP PRODUCTION OF PH IF AN RH HAS JUST BEEN PRODUCED AND NOW A PH IS ASKED FOR
         BCR,3    TYPERF
         CI,7     1                 IS RF ?                    EL32774  RRG
         BE       TYPERF            JUMP IF RF                 EL32774  RRG
         BAL,11   PRINT             PRINT HEADING
TYPERF   LW,3     PRXIT2
         STW,3    PREXIT
         LW,3     RPGRP2
         STW,3    REPGRP
         B        *PAGXIT
*        PRINT ROUTINE
*           BAL,11  PRINT
*
PRINT    STW,11   PREXIT
         LI,7     X'1FFFF'          SIMULATE
         LS,7     *REPGRP
*IS THERE A PERFORM EXIT TO SET
         BCR,3    GRIND
*NO
         LI,6     C:RRA
*YES-SET EXIT
         STW,6    0,7
GRIND    LI,1     4
*IS GRP IND FLAG ON (IT IS ALWAYS ON IF THERE IS A USE STATEMENT)
         LB,6     *3,1
*NO
         BCR,3    C:RRA
*YES
         LI,7     X'1FFFF'
         LS,7     1,3               LOAD USE-GRP IND ADDR
         BCS,3    0,7
*GROUP INDICATE MOVES AND USE BEFORE REPORTING BOTH RETURN HERE
C:RRA    LI,6     2
         LI,7     X'1FFFF'
         LS,7     *REPGRP,6         LOAD TEST AND EXECUTE ADD CODE
         BCS,3    0,7
*IS THERE ADD CODE TO EXECUTE(DETAIL ADDS RETURN FIRST TO C:RRF)
*ADD TO SUMS FROM NON DETAIL LINES RETURN HERE
C:RRB    LI,6     3
         LI,7     X'1FFFF'
         LS,7     *REPGRP,6         LOAD AND EXECUTE MOVE CODE
         BCS,3    0,7
*MOVE CODE TO THE LINE IMAGE RETURNS HERE
C:RRC    LW,3     REPGRP
         LW,2     REPBAS
         LB,4     *3
         LW,5     REPGRP            SET LINE DESCRIPTOR
         AI,5     6
         CI,4     1
         BCR,3    STDESC            ONLY ONE LINE DESCRIPTOR
         LI,5     X'1FFFF'
*MULTIPLE LINE DISCRIPTORS
         LS,5     6,3
STDESC   AI,4     -1
         BCR,1    STDES2
*SOME LINES TO PRINT
NXGRP    LI,1     16
*ZERO LINES LEFT TO PRINT (FIRST TIME POSSIBLY)
*DO NEXT GROUP SPACING AND EXIT
         LB,7     *3,1
         B        NSPC,7
NSPC     B        *PREXIT           NONE
         B        NABS              ABS
         B        NREL              REL
         LI,1     8
         LB,7     *3,1
         CI,7     5                                            EL32674  RRG
         BG       BPGE              DO PAGE IF NOT SPECIAL GRP EL32674  RRG
         CI,7     0                                            EL32674  RRG
         BNE      *PREXIT           IGNORE NG NP IF NOT RH     EL32674  RRG
         BAL,12   EJECT             EJECT PAGE FOR RH          EL32674  RRG
         B        *PREXIT           EXIT                       EL32674  RRG
BPGE     BAL,11   PAGE              NXT PAGE
         B        *PREXIT
NREL     LI,7     23
         LB,10    *REPGRP,7
         LW,7     8,2
         AWM,10   0,7
         B        *PREXIT
NABS     LI,7     23
         LB,10    *REPGRP,7
         LW,7     8,2
         STW,10   0,7
         B        *PREXIT
STDES2   LI,7     7
*TEST PRE PRINT SPACING
         LB,10    *5,7
         LI,1     4
         LB,7     *5,1
         B        SPCNG,7
SPCNG    B        ABAERR            0 ERROR
         B        ABS               1  ABS
         B        REL               2  REL
         LW,10    8,2
         LW,10    *10
         B        NXPG
ABS      LW,1     8,2
         STW,10   0,1
         B        SPCFWD
REL      LW,1     8,2
         AW,10    0,1
*INCREMENT
         LW,1     8,2
         STW,10   0,1
*SET
NXPG     LI,1     12
*COMPARE WITH LEAST ALLOWABLE LINE NO.
         CB,10    *3,1
         BCR,1    SPCFWD            LINE COUNTER GE JLEAST
         LB,10    *3,1
*USE LEAST ALLOWABLE LINE NO.
         LW,1     8,2
         STW,10   0,1
SPCFWD   SW,10    9,2
*HOW MANY SPACES REQD
         BCR,1    CI
ABAERR   LI,1      X'92'                                                C:RRG
         B        ABASETUP
CI       CI,10    15                LINE COUNTER GREATER
         BCR,2    LS16
         BAL,12   SPC15             SPACE 15 BECAUSE 16 OR MORE SPACE REQD
         LW,10    8,2
         LW,10    *10
*GO BACK AND SPACE AGAIN
         B        SPCFWD
LS16     BAL,11   WRT               SPACE PRINT SPACE 1
         AI,4     -1
*SEE IF THERE ARE MORE LINES TO PRINT
         BCS,1    NXGRP
         AI,5     2
         B        STDES2
*
* EJECT, SPC15, WRT ROUTINES
*
* LINKAGE:
EJECT    LI,10    -49
         STW,10   9,2               RESET LC-ISSUED
         LI,10    0
         LW,7     8,2
         STW,10   0,7
         LW,7     8,2
         LI,10    1
         AWM,10   1,7
         LI,10    49                SPACING FOR EJECT
         B        SPC15B
SPC15    LI,10    15
SPC15B   STW,5    1
         LI,5     DESCR
         BAL,11   WRT               WRITE SPACING LINE
         LW,5     1
         B         *12              EXIT
WRT      RES      0                                                     C:RRG
         LCI      11                SAVE REGISTERS                      C:RRG
         STM,1    WRTSUE                                                C:RRG
         LI,8     1                 INCREMENT  LC-COUNTER               C:RRG
         AW,8     10                (NUMBER OF LINES TO SAVE)           C:RRG
         AWM,8    9,2                                                   C:RRG
         AI,10    X'C0'                                                 C:RRG
         LW,9     1,2               NO. OF FD'S - 1                     C:RRG
         LI,6     X'1FFFF'                                              C:RRG
         AND,6    *5                WORD ADDR OF PRINT LINE             C:RRG
         STB,10   *6                STORE CARIAGE CONTROL CHARACTER     C:RRG
         LB,7     *5                SIZE PRINT LINE--SHOULD BE 132      C:RRG
         LB,10    *2                LOAD NUMENONIC CODE                 C:RRG
         BEZ      NOCODE            IF CODE EMPTY                       C:RRG
         AI,7     1                                                     C:RRG
         STB,10   *6,7              STORE AT END OF LINE IMAGE          C:RRG
NOCODE   AI,7     1                                                     C:RRG
         LW,3     6,2               POINTER TO FILE INDEX POINTER       C:RRG
NXTDCB   LW,4     *3                POINTER TO FILE INDEX               C:RRG
         LI,10    2                                                     C:RRG
         CW,10    1,4               IS FD OPEN OUTPUT                   C:RRG
         BAZ      SKPWLR            NO FORGET IT                        C:RRG
         LW,2     7                 PUT SIZE IN R2                      C:RRG
         XW,6     6,4               EXCHANGE REPORT, RECORD ADDRESSES
         STW,6    PREVADDR          SAVE RECORD ADDRESS
         AND,6    =X'FFFE0000'      IF THERE IS A RECORD SIZE
         BNEZ     SET%SIZE                                              C:RRG
         LW,6     7                 NO. USE SIZE OF PRINT LINE          C:RRG
         SLS,6    17                                                    C:RRG
SET%SIZE RES      0                                                     C:RRG
         AWM,6    6,4                                                   C:RRG
         SLS,6    -17                                                   C:RRG
         CW,6     7                 PRINT LINE = RECORD SIZE            C:RRG
         BE       DOWRITE           YES. GO WRITE                       C:RRG
         CI,7     134               NO. IF CODE SPECIFIED               C:RRG
         BNE      DOWRITE           NO. GO WRITE                        C:RRG
         STW,6    SAV%6             YES. GET CODE                       C:RRG
         LW,6     6,4                                                   C:RRG
         AI,7     -1                    AND                             C:RRG
         LB,11    *6,7                                                  C:RRG
         LW,7     SAV%6                 STORE                           C:RRG
         AI,7     -1                                                    C:RRG
         STB,11   *6,7               AT END OF RECORD                   C:RRG
DOWRITE  RES      0
         LW,6     4                 PUT FILE INDEX ADDR IN R6           C:RRG
         AI,6     X'20000'         SET FOR WRITE                        C:RRG
         BAL,11   C:WLR             WRITE                               C:RRG
         B        %+3                                                   C:RRG
         B        *11                                                   C:RRG
         B        *11                                                   C:RRG
         LW,6     PREVADDR          RESTORE RECORD ADDRESS
         XW,6     6,4               EXCH RECORD, REPORT ADDR   EL35774  RRG
         LW,7     2                 SIZE  TO  R7                        C:RRG
SKPWLR   AI,9     -1                REDUCE NO OF FD'S                   C:RRG
         BLZ      WRTEXIT           EXIT                                C:RRG
         AND,6    =X'1FFFF'         DELETE SIZE OF LAST REPORT EL35774  RRG
         AI,3     1                 INCREMEN FILE INDEX POINTER POINTER C:RRG
         B        NXTDCB            LOOP                                C:RRG
WRTEXIT  LCI      11                                                    C:RRG
         LM,1     WRTSUE            EXIT                                C:RRG
         B        *11                                                   C:RRG
WRTSUE   RES      11                                                    C:RRG
ABASETUP LW,8     RGEXIT
         LW,10    REPBAS
         STB,1    10
         B        C:ABA
REPBAS   DATA     0
RGEXIT   DATA     0
LVOFBK   DATA     0
LEVEL    DATA     0
DTLS     DATA     0
REPGRP   DATA     0
BDORH    B        DORH                                                  C:RRG
BJUSTN   B        JUSTIN
SAV%6    DATA     0                                                     C:RRG
CLEAR    DATA     0
LCEXIT   DATA     0
PAGXIT   DATA     0
RPGRP2   DATA     0
PRXIT2   DATA     0
PREXIT   DATA     0
DESCR    GEN,8,24 132,SPCIMG                                            C:RRG
         DATA     0                                                     C:RRG
PREVADDR RES      1
SPCIMG   RES      0                                                     C:RRG
         DO1      34                                                    C:RRG
         TEXT     '    '                                                C:RRG
         REF      C:ABA,C:WLR                                           C:RRG
         END
