* 9/26/74 -- 16:30
* MODULE NAME: BLOCK
* NUMBER: 39
* PURPOSE: CONTROL PRINTOUT OF BLOCKS
*
* ENTRY POINTS
*
         DEF      E39STBLK          START BLOCK DEFINITION
         DEF      E39CBLK           CALLOUT BLOCK
         DEF      E39EBLK           END BLOCK DEFINITION
         DEF      S39SAVBL          SAVE OR COUNT BLOCK LINE
         DEF      S39TLNS           PRINT TOP-SAVE LINES
         DEF      S39BLNS           PRINT BOTTOM-SAVE LINES
         DEF      S39NBLNS          PRINT NEXT-BOTTOM SAVE LINES
*
         REF      S27RCPY,S27WCPY   READ,WRITE PRINT FILE
         REF      S08SCMD           HANDLE PRINTOUT SYSTEM COMMAND
         REF      S27RHDR           READ HEADER FILE RECORD
         REF      S09RDKEY          READ PRINT INPUT LINE
         REF      S07RDTAG          READ TAG RECORD
         REF      S37SKLNS          SKIP OUTPUT LINES
         REF      S42WRPRN          SAVE PRINTOUT LINE
         REF      BOXFLG            BOX-DRAWING CONTROL FLAG.
*
         SYSTEM   TEXTDEF
         SYSTEM   ITEMDEF
            INVCMDSTA
            INVWSSTA
            INVHDRSTA
            INVPRSTA
            INVLNSTA
            INVTAGSTA
*
*
         PAGE
*
*
*
           DEF        39P,39D,39END
*
39P        EQU        %
           DATA       X'39'
         DATA     X'092674'         DATE
         DATA     X'1630'           TIME
*
*
*
           TITLE      '** BLOCK(39) **'
*
* SPECIAL START KEYS
*
#FTPKEY  EQU      X'03FC0000'       FIRST TOP SAVE/PRINT KEY
#FNBPKEY EQU      X'03FD0000'       FIRST NEXT-BOTTOM SAVE/PRINT KEY
#FBPKEY  EQU      X'03FE0000'       FIRST BOTTOM SAVE/PRINT KEY
*
*
* SAVE TYPES
*
#TSAVE   EQU      1                 TOP-SAVE TYPE
#NBSAVE  EQU      2                 NEXT-BOTTOM SAVE TYPE
#BSAVE   EQU      3                 BOTTOM-SAVE TYPE
*
*
* BLOCK CALLOUT TYPES
*
#UNCTYPE EQU      1                 'UNC' CALLOUT
#BOTTYPE EQU      2                 'BOT' CALLOUT
#TOPTYPE EQU      3                 'TOP' CALLOUT
#ANYTYPE EQU      4                 'ANY' CALLOUT
*
*
*
         PAGE
*
* E39STBLK -- START BLOCK DEFINITION
*
*
E39STBLK EQU      %
         SAVRTN
*
         BAL,SRTN S08SCMD           NEW SYSTEM COMMAND
         GET,D1   PR:LSTLN          GET LAST PRINT KEY
         STW,D1   TESTKEY           SAVE
         GET,AC1  LN:CKEY           GET CURRENT INPUT KEY
         SLD,AC1  -32               POSITION HEADER FILE
         BAL,SRTN S27RHDR
*
RDBLKLP  EQU      %
         LI,BUF2  BA(HDRSTA)        GET ADDR OF HEADER RECORD BUFFER
         LI,AC1   4                 READ CONTROL WORD ONLY
         LI,AC2   0                 SET KEY FOR READ NEXT
         BAL,SRTN S27RHDR           READ HEADER RECORD
         CI,AC2   0                 TEST FOR EOF
         BE       SETLKEY               YES, SET LAST KEY
*
*
         PAGE
*
*
TESTLAST EQU      %
         CW,AC2   TESTKEY           TEST FOR LAST PRINT KEY
         BGE      RDBLKEND              YES, SET TEXT FILE
         JEZ,D1   HDR:BLKEND,RDBLKLP TEST BLOCK-END FLAG
*
RDBLKEND EQU      %                 BLOCK END
         BAL,SRTN S09RDKEY          POSITION TEXT FILE AT BLOCK END
         DEPZ,D1  LN:INSZ           SET INPUT SIZE TO ZERO
         RETURN
*
SETLKEY  EQU      %
         GET,AC2  #LKEY             SET TEXT FILE AT EOF
         B        RDBLKEND          RETURN
*
*
         PAGE
*
* E39CBLK -- CALLOUT BLOCK
*
*
E39CBLK  EQU      %
         SAVRTN
*
         BAL,SRTN S08SCMD           NEW SYSTEM COMMAND
         JNEZ,D1  PR:BLKCKEY,RTNBLK     TEST FOR PREVIOUS BLOCK
         LI,D1    -1                SET FLAG TO SAY THIS COMMAND
         STB,D1   BOXFLG            CANCELS BOX-DRAWING .
         LI,X1    4                 NO PREVIOUS BLOCK, TEST CALL FLAGS
*
TSTBLFLG EQU      %
         JNEZ,D1  (#FLAGS,X1),SETBLFLG  TEST NEXT CALLOUT FLAG
         BDR,X1   TSTBLFLG          NOT SET, TEST ALL
SETBLFLG EQU      %
         STW,X1   BLKTYPE           STORE BLOCK CALLOUT FLAG
         JEZ,D1   PR:KTFLG,RDBLKTAG TEST KEEP-TOGETHER FLAG
         LI,D1    0                     SET, BLOCK TYPE = PRINT NOW
         STW,D1   BLKTYPE           SAVE NEW BLOCK TYPE
*
*
         PAGE
*
*
RDBLKTAG EQU      %
         LI,D1    WA(STDPRBUF)      GET BUFFER FOR TAG RECORD
         STW,D1   TAGBUF            SAVE BUFFER ADDR
         LWC,X1   #NM               GET BLOCK NAME SIZE/ADDR
         LI,AC2   0                 SET TAG KEY TO ZERO
         LI,D1    4                 TAG TYPE = 4 (BLOCK)
         BAL,SRTN S07RDTAG          READ TAG RECORD
         CI,AC1   0                 TEST FOR FOUND
         BE       RTNBLK                NO, RETURN
*
         GET,D1   LN:CKEY           GET BLOCK CALLOUT KEY
         PUT,D1   PR:BLKCKEY        SAVE CALLOUT KEY
         PUT,D1   PR:BLKFLG         SET BLOCK SAVE FLAG
         GET,D1   *TAG:OCCBASE,:K(1) GET KEY FOR BLOCK START
         STW,D1   BLKSTKEY          SAVE BLOCK START KEY
         LI,D1    3                 SET BYTE 0 TO 3
         STB,D1   BLKSTKEY
*
         GET,D1   PR:FMTFLG         SAVE CURRENT FORMAT FLAG
         STW,D1   BLKSTFMT
         GET,D1   PR:CTRFLG         SAVE CURRENT CENTERING FLAG
         STW,D1   BLKSTCTR
*
*
         PAGE
*
*
         LI,D1    0                 INITIALIZE COUNT FLAG
         STW,D1   COUNTFLG
         LW,X1    BLKTYPE           GET BLOCK TYPE (0-4)
         B        BLKBRTBL,X1       BRANCH ACCORDING TO BLOCK TYPE
*
BLKBRTBL EQU      %
         B        PRINTNOW          NO OPTION ON CALLOUT, PRINT NOW
         B        COUNTLNS          'UNC' OPTION, COUNT LINES
         B        COUNTLNS          'BOT' OPTION, COUNT LINES
         B        TOPTEST           'TOP' OPTION, TEST TOP-OF-PAGE
         B        ANYTEST           'ANY' OPTION, TEST TOP-OF-PAGE
*
*
COUNTLNS EQU      %
         LI,D1    1                 SET COUNT FLAG
         STW,D1   COUNTFLG
         LI,D1    0                 INITIALIZE BLOCK LINES COUNT
         STW,D1   BLKCOUNT
         B        RESBLKST          GO SET BLOCK START KEY
*
TOPTEST  EQU      %
         JNEZ,D1  PR:TOPFLG,PRINTNOW TEST TOP-OF-PAGE
         LI,D1    #TSAVE            SET SAVE-TYPE
         STW,D1   SAVTYPE
         B        RESBLKST          SET FILE TO BLOCK-START
*
ANYTEST  EQU      %
         JNEZ,D1  PR:TOPFLG,PRINTNOW TEST TOP-OF-PAGE
         B        COUNTLNS              NO, COUNT LINES
*
*
         PAGE
*
* E39EBLK -- END BLOCK COMMAND
*
*
E39EBLK  EQU      %
         SAVRTN
*
         BAL,SRTN S08SCMD           NEW SYSTEM COMMAND
         JEZ,D1   PR:BLKFLG,RESPRKEY TEST BLOCK-SAVE FLAG
         MTW,0    COUNTFLG              SET, TEST COUNT FLAG
         BEZ      RESPRKEY          COUNT FLAG ZERO, RESET CALLOUT KEY
         LI,D1    0                 RESET COUNT FLAG
         STW,D1   COUNTFLG
*
TSTCOUNT EQU      %
         GET,AC1  PR:RLNS           GET REMAINING LINES ON PAGE
         CW,AC1   BLKCOUNT          COMPARE TO BLOCK COUNT
         BL       NOROOM                <, NO ROOM ON PAGE
         BE       PRINTNOW             =, PRINT NOW
         LW,D1    BLKTYPE               >=, ROOM ON THIS PAGE
         CI,D1    #UNCTYPE          TEST FOR 'UNC' TYPE
         BE       PRINTNOW              YES, PRINT NOW
         SW,AC1   BLKCOUNT          SUBTRACT BLOCK FROM REMAINING LINES
         PUT,AC1  PR:RLNS           STORE NEW REMAINING LINES
         LI,D1    #BSAVE            SET BOTTOM-SAVE TYPE
*
SETBLKSV EQU      %
         STW,D1   SAVTYPE           SET SAVE TYPE (TOP,BOTTOM,NEXT-BOT)
         B        RESBLKST          GO RESET BLOCK START
*
*
         PAGE
*
*
NOROOM   EQU      %                 NO ROOM ON CURRENT PAGE
         LW,D2    BLKTYPE           GET BLOCK CALLOUT TYPE
         CI,D2    #UNCTYPE          TEST FOR 'UNC'
         BNE      TSTBTYPE              NO, GO TEST FOR 'ANY' TYPE
         DEPZ,D1   PR:BLKFLG             YES, RESET BLOCK FLAG
         BAL,SRTN S37SKLNS               AND SKIP REMAINING LINES
         B        PRINTNOW          GO PRINT BLOCK
*
TSTBTYPE EQU      %
         LI,D1    #TSAVE            GET TOP-SAVE TYPE
         CI,D2    #ANYTYPE          TEST FOR 'ANY' TYPE
         BE       SETBLKSV              YES, GO SET TOP-SAVE
         LI,D1    #NBSAVE               NO, SET NEXT-BOTTOM SAVE
         B        SETBLKSV          GO SET SAVE TYPE
*
*
         PAGE
*
*
PRINTNOW EQU      %                 PRINT BLOCK NOW
         DEPZ,D1  PR:BLKFLG         RESET BLOCK-SAVE FLAG
RESBLKST EQU      %
         LW,AC2   BLKSTKEY          GET BLOCK START KEY
PSTNBLK  EQU      %
         BAL,SRTN S09RDKEY          POSITION INPUT FILE
         DEPZ,D1  LN:INSZ           SET INPUT LINE SIZE TO ZERO
         LW,D1    BLKSTFMT          RESTORE STARTING FORMAT
         PUT,D1   PR:FMTFLG
         LW,D1    BLKSTCTR          RESTORE STARTING CENTER FLAG
         PUT,D1   PR:CTRFLG
         B        RTNBLK            RETURN
*
RESPRKEY EQU      %
         GET,AC2  PR:BLKCKEY        GET BLOCK CALLOUT KEY
         LI,D1    0                 RESET:
         PUT,D1   PR:BLKFLG            BLOCK SAVE FLAG
         PUT,D1   PR:BLKCKEY           BLOCK CALLOUT KEY
         CI,AC2   0                 TEST BLOCK CALLOUT KEY
         BNE      PSTNBLK               NON-ZERO, GO POSITION FILE
*
RTNBLK   EQU      %                 RETURN
         RETURN
*
*
         PAGE
*
* S39SAVBL -- SAVE OR COUNT BLOCK LINE
*
*
S39SAVBL EQU      %
         SAVRTN
*
         MTW,0    COUNTFLG          TEST COUNT FLAG
         BEZ      SAVBLKLN              NOT SET, GO SAVE LINE
         LB,AC1   0,BUF3                SET, GET SKIP COUNT
         SLS,AC1  24                MAKE SURE COUNT IS POSITIVE
         SAS,AC1  -24
         LAW,AC2  AC1
         AWM,AC2  BLKCOUNT          ADD SKIP COUNT TO BLOCK COUNT
         B        RTNSAVBL          RETURN
*
SAVBLKLN EQU      %
         LW,X1    SAVTYPE           GET SAVE TYPE (TOP,BOTTOM,NEXT-BOT)
         BAL,SRTN S39SAVLN          GO SAVE BLOCK LINE
*
RTNSAVBL EQU      %                 RETURN
         RETURN
*
*
         PAGE
*
* S39SAVLN -- SAVE TOP,BOTTOM,OR NEXT-BOTTOM LINE
*
* ENTRY PARAMETER: X1=SAVE TYPE (TOP=1, BOTTOM=2, NEXT-BOTTOM=3)
*
S39SAVLN EQU      %
         SAVRTN
*
         LW,X4    BUF3              ADDR OF FIRST CHARACTER
         AW,X4    AC1               SET POINTER TO LAST CHAR + 1
         STB,D1   0,X4              SAVE FORMAT CODE AT END-OF-LINE
         AI,AC1   1                 INCR SIZE FOR FORMAT CODE
         LB,AC3   0,BUF3            GET SKIP COUNT
         SLS,AC3  24                CONVERT TO POSITIVE NUMBER
         SAS,AC3  -24
         LAW,D2   AC3
*
         GET,D1   PR:SLNS,X1        GET CURRENT SAVE LINES COUNT
         AW,D1    D2                ADD SKIP LINES
         PUT,D1   PR:SLNS,X1        STORE NEW SAVE LINES COUNT
         LW,AC2   TBSKEY,X1         GET NEXT SAVE KEY
         MTW,1    TBSKEY,X1         INCREMENT NEXT SAVE KEY
         BAL,SRTN S27WCPY           WRITE SAVE LINE
*
         RETURN
*
*
         PAGE
*
* S39WPRLN-- WRITE PRINT FILE LINE
*
*
S39WPRLN EQU      %
         SAVRTN
*
         JLZ,D2   PR:LPFLG,RTNWPRLN   TEST FOR INDEXING ONLY
         BAL,SRTN S42WRPRN          NO, SAVE PRINTOUT LINE
*
RTNWPRLN EQU      %                 RETURN
         RETURN
*
*
         PAGE
*
* S39TLNS -- PRINT TOP-OF-PAGE LINES (FROM BLOCKS,K-T'S,ETC.)
*
*
S39TLNS  EQU      %
         SAVRTN
*
         GET,D1   PR:RLNS           GET REMAINING LINE COUNT
         STW,D1   REMLNS
         JLEZ,D1  PR:TSLNS,RESTLNS  TEST TOP-SAVE LINES
         STW,D1   TLNCNT                >0, SAVE COUNT
*
GETNXTT  EQU      %
         LI,BUF2  BA(STDINBUF)      GET ADDR OF READ BUFFER
         LI,AC1   #STDBUFSZ         MAX SIZE
         LW,AC2   TLNPKEY           NEXT TOP-PRINT KEY
         BAL,SRTN S27RCPY           READ TOP-PRINT LINE
*
         LW,AC3   STDINBUF          SKIP COUNT LEFT-JUSTIFIED
         SAS,AC3  -24               R-J SKIP COUNT
         CI,AC3   0                 TEST SIGN
         BL       DTRLNS                NEGATIVE, DECR. REM. LINES
         CW,AC3   REMLNS                POSITIVE, TEST REM. LINES
         BG       SKPREST           TOO MANY LINES, SKIP PAGE
         LCW,AC3  AC3               GET NEGATIVE OF SKIP COUNT
*
*
         PAGE
*
*
DTRLNS   EQU      %
         AWM,AC3  REMLNS            DECR. REMAINING LINES
         AWM,AC3  TLNCNT            DECR. TOP-LINE COUNT
         STW,AC1  TMPLNSZ           SAVE LINE SIZE
*
         LI,BUF3  BA(STDINBUF)      GET BUFFER ADDR
         LW,AC1   TMPLNSZ           GET LINE SIZE
         AI,AC1   -1                DECR SIZE FOR FORMAT CODE
         LW,X1    BUF3              ADDR OF FIRST CHARACTER
         AW,X1    AC1               SET POINTER TO LAST CHAR + 1
         LB,D1    0,X1              GET FORMAT CODE FROM END-OF-LINE
         BAL,SRTN S39WPRLN          WRITE PRINT-FILE LINE
*
         MTW,1    TLNPKEY           INCREMENT TOP-LINE PRINT KEY
         MTW,0    REMLNS            TEST REMAINING LINES
         BLZ      RTNTLNS               ZERO, RETURN
         MTW,0    TLNCNT            TEST TOP-LINE COUNT
         BGZ      GETNXTT               >0, GET NEXT TOP-LINE
*
RESTLNS  EQU      %
         LW,D1    L(#FTPKEY)        RESET:
         STW,D1   TLNSKEY              TOP-LINE SAVE KEY
         STW,D1   TLNPKEY              TOP-LINE PRINT KEY
         LI,D1    0                 INITIALIZE TOP-LINE COUNT
         STW,D1   TLNCNT
         B        RTNTLNS           RETURN
*
*
         PAGE
*
*
SKPREST  EQU      %
         CI,AC1   1                 TEST FOR SKIP-ONLY
         BG       GETREMTL              NO, SKIP REST-OF-PAGE
         MTW,1    TLNPKEY           INCREMENT TOP PRINT KEY
         LCW,AC3  AC3               GET NEGATIVE OF SKIP COUNT
         AWM,AC3  TLNCNT            DECR. TOP-LINE COUNT
*
GETREMTL EQU      %
         LW,AC1   REMLNS            GET REMAINING LINES
         BLEZ     RTNTLNS               ZERO, RETURN
         BAL,SRTN S37SKLNS          SKIP REMAINING LINES
         LI,D1    0                 RESET REMAINING LINES
         STW,D1   REMLNS
*
RTNTLNS  EQU      %
         LW,D1    REMLNS            GET REMAINING LINE COUNT
         PUT,D1   PR:RLNS           RESTORE IN PRINT TABLE
         LW,D1    TLNCNT            SET TOP-LINE SAVE COUNT
         PUT,D1   PR:TSLNS
         RETURN
*
*
         PAGE
*
* S39NBLNS -- NEXT PAGE BOTTOM-SKIP LINES
*
*
S39NBLNS EQU      %
         SAVRTN
*
         LI,D1    0                 INITIALIZE BOTTOM-SAVE LINES
         STW,D1   BLNCNT
         LW,D1    L(#FBPKEY)        INITIALIZE FIRST BOTTOM-SKIP
         STW,D1   BLNSKEY               SAVE KEY
*
         JLEZ,D1  PR:RLNS,RTNNBLNS  GET REMAINING LINE COUNT
         STW,D1   REMLNS            STORE IN REMAINING LINES
         JLEZ,D1  PR:NBSLNS,RESNBLNS TEST NEXT-BOTTOM LINES
         STW,D1   NBLNCNT               >0, SAVE COUNT
*
GETNXTNB EQU      %
         LI,BUF2  BA(STDINBUF)      GET ADDR OF BUFFER
         LI,AC1   #STDBUFSZ         MAX SIZE
         LW,AC2   NBLNPKEY          GET NEXT-BOTTOM PRINT KEY
         BAL,SRTN S27RCPY           READ NEXT-BOTTOM LINE
*
         LW,AC3   STDINBUF          GET SKIP-COUNT LEFT-JUSTIFIED
         SAS,AC3  -24               R-J SKIP COUNT
         CI,AC3   0                 TEST FOR NEGATIVE
         BL       DNREMLN               YES, GO MOVE TO BOTTOM-SKIP
         CW,AC3   REMLNS                NO, TEST REMAINING LINES
         BG       SKPRNBLN
         LCW,AC3  AC3               GET NEGATIVE OF SKIP COUNT
*
*
         PAGE
*
*
DNREMLN  EQU      %
         AWM,AC3  REMLNS            DECR. REMAINING LINES
         AWM,AC3  NBLNCNT           DECR. NEXT-BOTTOM SKIP LINES
         LCW,AC3  AC3               GET POSITIVE SKIP-COUNT
         AWM,AC3  BLNCNT            ADD TO BOTTOM-SKIP LINES
         STW,AC1  TMPLNSZ           SAVE LINE SIZE
*
         LI,BUF3  BA(STDINBUF)      GET ADDR OF BUFFER
         LW,AC1   TMPLNSZ           GET LINE SIZE
         LW,AC2   BLNSKEY           GET BOTTOM-SKIP KEY
         BAL,SRTN S27WCPY           SAVE BOTTOM-SKIP LINE
         MTW,1    BLNSKEY           INCREMENT BOTTOM-SKIP KEY
         MTW,1    NBLNPKEY          INCREMENT NEXT-BOTTOM SKIP KEY
*
         MTW,0    REMLNS            TEST REMAINING LINES
         BLZ      RTNNBLNS              ZERO, RETURN
         MTW,0    NBLNCNT           TEST REMAINING NEXT-BOTTOM LINES
         BGZ      GETNXTNB              >0, GET NEXT
*
*
         PAGE
*
*
RESNBLNS EQU      %
         LW,D1    L(#FNBPKEY)       GET FIRST NEXT-BOTTOM KEY
         STW,D1   NBLNSKEY          INITIALIZE FIRST SAVE KEY
         STW,D1   NBLNPKEY                 AND FIRST PRINT KEY
         LI,D1    0                 INITIALIZE NEXT-BOTTOM COUNT
         STW,D1   NBLNCNT
         B        RTNNBLNS          RETURN
SKPRNBLN EQU      %
         CI,AC1   1                 TEST FOR SKIP-ONLY
         BG       GETREMNL              NO, GET REMAINING LINES
         MTW,1    NBLNPKEY          INCREMENT N-B PRINT KEY
         LCW,AC3  AC3               GET NEGATIVE OF SKIP COUNT
         AWM,AC3  NBLNCNT           DECR. N-B SKIP LINES
*
GETREMNL EQU      %
         LW,AC1   REMLNS            GET REMAINING LINES
         BLEZ     RTNNBLNS              ZERO, RETURN
         BAL,SRTN S37SKLNS          SKIP LINES TO BOTTOM
         LI,D1    0                 RESET REMAINING LINES
         STW,D1   REMLNS
*
RTNNBLNS EQU      %
         LW,D1    REMLNS            RESTORE REMAINING LINE COUNT
         PUT,D1   PR:RLNS
         LW,D1    NBLNCNT           RESTORE NEXT-BOTTOM SAVE COUNT
         PUT,D1   PR:NBSLNS
         LW,D1    BLNCNT            RESTORE BOTTOM SAVE COUNT
         PUT,D1   PR:BSLNS
         RETURN
*
*
         PAGE
*
* S39BLNS -- PRINT BOTTOM-SKIP LINES
*
*
S39BLNS  EQU      %
         SAVRTN
*
         LW,AC2   L(#FBPKEY)        SET FIRST BOTTOM PRINT KEY
         STW,AC2  BLNPKEY
         JLEZ,D1  PR:BSLNS,RTNBLNS  TEST BOTTOM-SAVE LINES
         STW,D1   BLNCNT
*
GETNXTB  EQU      %
         LW,AC2   BLNPKEY           GET NEXT BOTTOM PRINT KEY
         CW,AC2   BLNSKEY           COMPARE TO NEXT BOTTOM SAVE KEY
         BGE      RTNBLNS               EQUAL, RETURN
         LI,BUF2  BA(STDINBUF)      GET ADDR OF BUFFER
         LI,AC1   #STDBUFSZ         GET MAX SIZE
         BAL,SRTN S27RCPY           READ BOTTOM-PRINT LINE
         STW,AC1  TMPLNSZ           SAVE LINE SIZE
*
         LI,BUF3  BA(STDINBUF)      GET BUFFER ADDR
         LW,AC1   TMPLNSZ           GET SIZE
         AI,AC1   -1                DECR SIZE FOR FORMAT CODE
         LW,X1    BUF3              ADDR OF FIRST CHARACTER
         AW,X1    AC1               SET POINTER TO LAST CHAR + 1
         LB,D1    0,X1              GET FORMAT CODE FROM END-OF-LINE
         BAL,SRTN S39WPRLN          WRITE PRINT-FILE LINE
         MTW,1    BLNPKEY           INCREMENT BOTTOM-LINE PRINT KEY
         B        GETNXTB           GET NEXT LINE
*
RTNBLNS  EQU      %                 RETURN
         RETURN
*
*
         PAGE
*
* LOCAL VARIABLES FOR SAVE AND BLOCK ROUTINES
*
39D      CSECT    0
*
BLKTYPE  RES      1                 BLOCK CALLOUT TYPE
COUNTFLG RES      1                 COUNT FLAG
BLKCOUNT RES      1                 BLOCK LINE COUNT
BLKSTKEY RES      1                 BLOCK START KEY
BLKSTFMT RES      1                 BLOCK START FORMAT
BLKSTCTR RES      1                 BLOCK START CENTERING FLAG
SAVTYPE  RES      1                 SAVE TYPE
*
TBSKEY   EQU      %-1               SAVE KEYS:
TLNSKEY  RES      1                     TOP
NBLNSKEY RES      1                     NEXT-BOTTOM
BLNSKEY  RES      1                     BOTTOM
*
TBPKEYS  EQU      %-1               PRINT KEYS
TLNPKEY  RES      1                     TOP
NBLNPKEY RES      1                     NEXT-BOTTOM
BLNPKEY  RES      1                     BOTTOM
*
TLNCNT   RES      1                 TOP-SAVE LINE COUNT
NBLNCNT  RES      1                 NEXT-BOTTOM SAVE LINE COUNT
BLNCNT   RES      1                 BOTTOM-SAVE LINE COUNT
*
REMLNS   RES      1                 REMAINING LINES COUNT
TESTKEY  RES      1                 TEST END KEY
TMPLNSZ  RES      1                 TEMP LINE SIZE
39END      EQU        %
*
         USECT    #PLOC
         END
