01010          JOB  ZZTAPE INPUT/OUTPUT TAPE PACKAGE            03-27-67   ZTAPB
01020          CTL  551  1                                                 ZTAPB
01030          ORG  336                                                    ZTAPB
01040*                                                                     ZTAPB
01050*                                                                     ZTAPB
01060*                                                                     ZTAPB
01070*     THIS TAPE INPUT/OUTPUT PACKAGE OPENS, READS, WRITES, AND        ZTAPB
01080*  CLOSES TAPE FILES.  IT OPENS AND CLOSES FILES WITH STANDARD        ZTAPB
01090*  IBM HEADER AND TRAILER LABELS.  COMPLETE HEADER LABEL CHECKING     ZTAPB
01100*  IS DONE ON INPUT INCLUDING DATE CREATION WITH THE USE              ZTAPB
01110*  OF PERAMETERS FOR LEAST AND MOST NUMBER OF DAYS OLD.  OUTPUT       ZTAPB
01120*  TAPES ARE CHECKED FOR POSSIBLE RETENTION BEFORE BEING OPENED       ZTAPB
01130*  WITH A NEW HEADER LABEL.  IN READING AND WRITING TAPE, ALL         ZTAPB
01140*  ERROR CHECKING IS DONE INCLUDING NOISE RECORD AND RECORD LENGTH    ZTAPB
01150*  CHECKING ON INPUT FILES.  MULTI-REEL INPUT AND OUTPUT FILES        ZTAPB
01160*  ARE HANDLED AUTOMATICALLY.                                         ZTAPB
01170*                                                                     ZTAPB
01180*     EACH FILE TO BE PROCESSED MUST HAVE A FILE TABLE TO BE USED     ZTAPB
01190*  BY THIS INPUT/OUTPUT PACKAGE.  AN EXAMPLE OF A FILE TABLE FOR      ZTAPB
01200*  INPUT FILES FOLLOWS.....                                           ZTAPB
02010*                                                                     ZTAPB
02020*  LABEL   OP    OPERAND         REASON/REMARKS                       ZTAPB
02030*                                                                     ZTAPB
02040*  FILE1   DCW   1               DRIVE NUMBER.  1 IN THIS CASE.       ZTAPB
02050*          DSA   INPUT1          ADDRESS OF INPUT AREA.               ZTAPB
02060*          DC    @R@             READ  D  CHARACTER.                  ZTAPB
02070*          DSA   EOF1            EXIT TO YOUR PROGRAM IF A  1EOF      ZTAPB
02080*                                RECORD IS READ.                      ZTAPB
02090*          DC    #1              KEY USED TO DETERMINE IF FIRST OR    ZTAPB
02100*                                OTHER REEL OF MULTI-REEL FILE.       ZTAPB
02110*          DCW   @FILE1@         FILE NUMBER EXPECTED ON INPUT FILE   ZTAPB
02120*          DC    @-001 @         REEL SEQUENCE.  MUST BE 001 FOR      ZTAPB
02130*                                FIRST REEL.  ZZTAPE MODIFIES IT.     ZTAPB
02140*          DC    @INP MASTER@    EXPECTED INPUT NAME/ID.              ZTAPB
02150*          DC    #5              AREA TO RECEIVE DATE FROM FILE.      ZTAPB
02160*                                IT IS USED TO CHECK SECOND AND       ZTAPB
02170*                                FOLLOWING FILES.                     ZTAPB
02180*          DSA   GM1             ADDRESS OF G.M. FOR RECORD LENGTH    ZTAPB
02190*                                CHECKING.  SEE BELOW.                ZTAPB
02200*          DCW   000             MINIMUM AGE THE FILE MUST BE, DAYS   ZTAPB
03010*          DCW   025             MAXIMUM AGE THE FILE MAY BE, DAYS.   ZTAPB
03020*                                                                     ZTAPB
03030*  NOTE- WHEN SETTING UP AN INPUT FILE, THE GROUP MARK MUST NOT       ZTAPB
03040*  BE SPECIFIED IN THE DA.  AFTER THE DA OR SECOND DA THERE MUST      ZTAPB
03050*  BE A DC #1 FOLLOWED BY A DCW OF A GROUP MARK.  THE LATTER DCW      ZTAPB
03060*  MUST CONTAIN THE LABEL THAT APPEARS IN YOUR FILE TABLE, SEE        ZTAPB
03070*  ABOVE.                                                             ZTAPB
03080*                                                                     ZTAPB
03090*  THE FOLLOWING IS AN EXAMPLE OF AN OUTPUT FILE TABLE.....           ZTAPB
03100*                                                                     ZTAPB
03110*  LABEL   OP    OPERAND         REASON/REMARKS                       ZTAPB
03120*                                                                     ZTAPB
03130*  FILE2   DCW   2               DRIVE NUMBER.                        ZTAPB
03140*          DSA   OUT2            ADDRESS OF OUTPUT AREA.              ZTAPB
03150*          DC    @W@             WRITE  D  CHARACTER.                 ZTAPB
03160*          DSA   EOR2            EXIT TO YOUR PROGRAM IF END OF       ZTAPB
03170*                                REEL/TAPE IS ENCOUNTERED.            ZTAPB
03180*          DC    #1              KEY USED TO DETERMINE IF THIS REEL   ZTAPB
03190*                                IS THE FIRST OR ANOTHER OF A         ZTAPB
03200*                                MULTI REEL FILE.                     ZTAPB
04010*          DCW   #5              AREA USED TO ACCUMULATE BLOCK        ZTAPB
04020*                                COUNT.                               ZTAPB
04030*          DCW   @FILE2@         FILE NUMBER TO BE WRITTEN ON LABEL   ZTAPB
04040*          DCW   @-001 @         REEL SEQUENCE NUMBER.  MUST BE 001   ZTAPB
04050*          DCW   @OUT MASTER@    FILE ID TO BE WRITTEN ON LABEL.      ZTAPB
04060*          DCW   @-015 @         RETENTION CYCLE OF FILE.             ZTAPB
04070*                                                                     ZTAPB
04080*     THIS INPUT/OUTPUT PACKAGE IS USED AS AN INSERT OBJECT DECK      ZTAPB
04090*  TO YOUR PROGRAM.  IT LOADS INTO POSITIONS 336 TO 1519, THERE-      ZTAPB
04100*  FORE YOUR PROGRAM MUST BE ORIGINED AT POSITION 1520.  BECAUSE      ZTAPB
04110*  THIS PACKAGE IS NOT COMPILED EACH TIME YOUR PROGRAM IS, A SET      ZTAPB
04120*  OF EQUATES MUST BE PART OF YOUR PROGRAM.  THE FOLLOWING LISTS      ZTAPB
04130*  THE PRIMARY EQUATES AND ALSO CONSTANTS WHICH MAY BE                ZTAPB
04140*  USED BY YOUR PROGRAM.....                                          ZTAPB
04150*                                                                     ZTAPB
04160*  LABEL   EQUATE                COMMENT/REASON                       ZTAPB
04170*                                                                     ZTAPB
04180*  XXCHNG  EQU   363             ROUTINE TO HANDLE MULTI-REEL         ZTAPB
04190*                                OUTPUT FILES.                        ZTAPB
04200*  XXDATE  EQU   485             STORAGE AREA FOR JULIAN DATE.        ZTAPB
05010*  XXTAPE  EQU   492             ROUTINE TO READ OR WRITE TAPE.       ZTAPB
05020*  XXOPEN  EQU   790             ROUTINE TO OPEN FILES.               ZTAPB
05030*  XXCLOZ  EQU   1217            ROUTINE TO CLOSE FILES.              ZTAPB
05040*                                                                     ZTAPB
05050*  XXISBD  EQU   977            *MAY BE MODIFIED TO EXIT TO YOUR      ZTAPB
05060*                                PROGRAM IN CASE OF A BAD INPUT       ZTAPB
05070*                                LABEL.                               ZTAPB
05080*  XXOTEX  EQU   1090           *MAY BE MODIFIED TO EXIT TO YOUR      ZTAPB
05090*                                PROGRAM TO WRITE ADDITIONAL          ZTAPB
05100*                                INFORMATION IN OUTPUT LABELS.        ZTAPB
05110*                                                                     ZTAPB
05120*  XX1     EQU   353            *CONTAINS CONSTANT @001@.             ZTAPB
05130*  XX366   EQU   356            *CONTAINS CONSTANT @366@.             ZTAPB
05140*  XXI9I   EQU   1489           *CONTAINS ADDRESS CONSTANT @I9I@.     ZTAPB
05150*  XXTRAL  EQU   400            *HEADER & TRAILER LABEL I/O AREA DA   ZTAPB
05160*  THOSE EQUATES HAVING  *  IN THE REMARKS FIELD ARE NOT REQUIRED.    ZTAPB
05170*                                                                     ZTAPB
05180*                                                                     ZTAPB
05190*     WITH A FILE TABLE FOR EACH FILE AND A DATE IN XXDATE.....       ZTAPB
05200*  TO OPEN A FILE, BRANCH TO XXOPEN.                                  ZTAPB
06010*  TO READ OR WRITE TAPE, BRANCH TO XXTAPE.                           ZTAPB
06020*  TO CLOSE A FILE, BRANCH TO XXCLOZ.                                 ZTAPB
06030*  TO CHANGE REELS AT EOR FOR AN OUTPUT FILE, BRANCH TO XXCHNG.       ZTAPB
06040*                                                                     ZTAPB
06050*     EACH OF THE ABOVE BRANCHES MUST BE FOLLOWED BY A NOP WITH       ZTAPB
06060*  THE  A  ADDRESS OPERAND BEING THE ADDRESS/LABEL OF THE FILE        ZTAPB
06070*  TABLE OF THE FILE TO BE PROCESSED.                                 ZTAPB
06080*                                                                     ZTAPB
06090*     THIS TAPE INPUT/OUTPUT PACKAGE DOES NOT DO DE-BLOCKING          ZTAPB
06100*  OF INPUT, BLOCKING OR PADDING OF AN OUTPUT FILE.  IT ALSO          ZTAPB
06110*  DOES NOT REWIND OR REWIND AND UNLOAD ANY FILE IN XXCLOZ.           ZTAPB
06120*                                                                     ZTAPB
06130*     BEFORE ANY FILE OR TAPE CAN BE OPENED A DATE MUST BE            ZTAPB
06140*  SUPPLIED TO THIS INPUT/OUTPUT PACKAGE.  THIS IS DONE BY            ZTAPB
06150*  MOVING A FIVE CHARACTER DATE, TWO POSITION YEAR AND THREE          ZTAPB
06160*  POSITION JULIAN DAY TO XXDATE.                                     ZTAPB
06170*                                                                     ZTAPB
06180*     IT SHOULD BE NOTED THAT THIS INPUT/OUTPUT PACKAGE WILL NOT      ZTAPB
06190*  ACCEPT AN INPUT FILE WITH A BAD LABEL OR EXPIRED DATE.  FOR        ZTAPB
06200*  PURPOSES OF DE-BUGGING PROGRAMS, POSITION 977 MAY BE NO-OPED       ZTAPB
07010*  TO ACCEPT ANY HEADER, OR THE  I  ADDRESS MAY BE ALTERED TO 981     ZTAPB
07020*  TO ACCEPT THAT FILE ONLY.  IT SHOULD BE NOTED THAT A NOP AT        ZTAPB
07030*  POSITION 977 WILL ACCEPT ALL FILES THAT HAVE HEADERS, GOOD OR      ZTAPB
07040*  BAD, WHEREAS A RESTART AT 981 WILL ACCEPT A FILE WITH A BAD        ZTAPB
07050*  HEADER, OR A FILE WITHOUT A HEADER.  ALSO NOTE THAT AN OUTPUT      ZTAPB
07060*  FILE WHOSE RETENTION CYCLE HAS EXPIRED CANNOT BE OPENED.  AGAIN,   ZTAPB
07070*  FOR PURPOSES OF DE-BUGGING, THE  I  ADDRESS MAY BE ALTERED TO      ZTAPB
07080*  870 TO OPEN THE FILE.                                              ZTAPB
07090*                                                                     ZTAPB
08010          JOB  ZZTAPE  TAPE I/O PACKAGE.  CONSTANTS AND EQUATES       ZTAPB
08020*                                                                     ZTAPB
08030**    EQUATES.                                                        ZTAPB
08040*                                                                     ZTAPB
08050XXIND3    EQU  99                 EQUATE TO X3.                       ZTAPB
08060XXFADD    EQU  3&X3               EQUATE TO FILE ADDRESS.             ZTAPB
08070*              EQUATES TO INPUT FILE TABLE.                           ZTAPB
08080XXINRS    EQU  17&X3              EQUATE TO INPUT REEL SEQUENCE.      ZTAPB
08090XXINPL    EQU  28&X3              EQUATE TO INPUT LABEL.              ZTAPB
08100XXINLB    EQU  33&X3              EQUATE TO COMPLETE INPUT LABEL.     ZTAPB
08110XXINGM    EQU  36&X3              EQUATE TO ADDRESS OF INPUT G.M.     ZTAPB
08120XXPER1    EQU  39&X3              EQUATE TO LEAST DAYS OLD.           ZTAPB
08130XXPER2    EQU  42&X3              EQUATE TO MOST NUMBER OF DAYS OLD   ZTAPB
08140*              EQUATES TO INPUT AND OUTPUT FILE TABLES.               ZTAPB
08150XXDRNO    EQU  0&X3               EQUATE TO DRIVE NUMBER.             ZTAPB
08160XXIORA    EQU  3&X3               EQUATE TO I/O AREA.                 ZTAPB
08170XXIODC    EQU  4&X3               EQUATE TO  D  CHARACTER.            ZTAPB
08180XXEOFX    EQU  7&X3               EQUATE TO EOF/EOR EXIT.             ZTAPB
08190XXKEY     EQU  8&X3               EQUATE TO OPEN KEY.                 ZTAPB
08200*              EQUATES TO OUTPUT FILE TABLES.                         ZTAPB
09010XXOTCT    EQU  13&X3              EQUATE TO OUTPUT BLOCK COUNT.       ZTAPB
09020XXOTRS    EQU  22&X3              EQUATE TO OUTPUT REEL SEQUENCE.     ZTAPB
09030XXOUTN    EQU  33&X3              EQUATE TO OUTPUT NAME.              ZTAPB
09040XXOUTR    EQU  38&X3              EQUATE TO OUTPUT RETENTION CYCLE.   ZTAPB
09050*                                                                     ZTAPB
09060**    CONSTANTS                                                       ZTAPB
09070*                                                                     ZTAPB
09080XX1HDR    DCW  @1HDR @            HEADER LABEL IDENTIFICATION.        ZTAPB
09090XX1EOR    DCW  @1EOR @            END OF REEL IDENTIFICATION.         ZTAPB
09100XX1EOF    DCW  @1EOF @            END OF FILE IDENTIFICATION.         ZTAPB
09110XX1       DCW  001                ADDRESS CONSTANT  001.              ZTAPB
09120XX366     DCW  366                DAYS PER YEAR & 1.                  ZTAPB
09130XX635     DCW  635                1000 MINUS DAYS PER YEAR.           ZTAPB
09140XXR       DCW  @R@                CONSTANT  R .                       ZTAPB
09150XXERRC    DCW  #2                 ERROR COUNTER.                      ZTAPB
09160*                                                                     ZTAPB
09170**    EOR ROUTINE FOR MULTI-REEL OUTPUT FILES.                        ZTAPB
09180*                                                                     ZTAPB
09190XXCHNG    SBR  XXXXXX&3           STORE LINK IN EXIT.                 ZTAPB
09200          SBR  XXIND3             STORE NSI IN X3                     ZTAPB
10010          SBR  XXLCA&3,XX1EOR     MODIFY XXLCA TO USE XX1EOR.         ZTAPB
10020          B    XXPOST             GO TO WRITE TRAILER.                ZTAPB
10030          B    XXEORY             GO TO OPEN NEXT REEL.               ZTAPB
10040*                                                                     ZTAPB
10050** FILE TABLE FOR HEADER & TRAILER                                    ZTAPB
10060*                                                                     ZTAPB
10070XXHEAD    DCW  @0@                DRIVE NUMBER.                       ZTAPB
10080          DC   XXTRAL             I/O AREA.                           ZTAPB
10090XXHDRW    DC   @W@                WRITE D CHARACTER.                  ZTAPB
10100          DCW  XXNOHD             EOF EXIT.                           ZTAPB
10110XXW       DCW  @W@                CONSTANT  W .                       ZTAPB
10120          DCW  #5                 ADD BLOCK COUNT DURING TRAILER WT   ZTAPB
10130*                                                                     ZTAPB
10140** HEADER AND TRAILER I/O AREA                                        ZTAPB
10150*                                                                     ZTAPB
10160XXTRAL    DA   1X80,G             LABELS RESIDE HERE.                 ZTAPB
10170*                                                                     ZTAPB
10180**    WORKING STORAGE                                                 ZTAPB
10190*                                                                     ZTAPB
10200XXDATE    DCW  #5                 HOLD AREA FOR JULIAN DATE.          ZTAPB
11010XXSVDT    DCW  #5                 SAVE AREA FOR JULIAN DATE.          ZTAPB
11020          DCW  #1                 DUMMY TO ADJUST XXTAPE ADDRESS.     ZTAPB
12010          JOB  ZZTAPE TAPE I/O PACKAGE  READ/WRITE ROUTINE            ZTAPB
12020XXTAPE    SBR  XXIND3             STORE NSI IN X3                     ZTAPB
12030          SBR  XXTHRU&3           STORE LINK IN XXTHRU                ZTAPB
12040          MCW  XXFADD,XXIND3      MOVE FILE ADDRESS TO X3.            ZTAPB
12050          BW   XXNOTO,XXDRNO&1    CHECK IF FILE OPENED.               ZTAPB
12060          MCW  XXIODC,XXRDWR&7    MOVE  A  B  AND  D  I/O INST.       ZTAPB
12070XXREST    S    XXERRC             CLEAR ERROR COUNTER.                ZTAPB
12080XXRDWR    RT   0,0                READ OR WRITE TAPE.                 ZTAPB
12090          SBR  XXLENG&3           STORE NEXT POSITION IN XXLENG       ZTAPB
12100*                               TO CLEAR WRONG LENGTH RECORD G.M.     ZTAPB
12110          SBR  XXCLER&6           STORE NEXT POSITION IN XXCLER       ZTAPB
12120*                               TO CLEAR NOISE LENGTH RECORD G.M.     ZTAPB
12130          SBR  XXCLR&3            STORE NEXT POSITION IN XXCLR        ZTAPB
12140*                               TO CLEAR G.M. SET BY T.M. RECORD.     ZTAPB
12150          BCE  XXCKER,XXIODC,W    GO CHECK TAPE ERROR IF WRITE.       ZTAPB
12160          BEF  XXRDTL             GO READ TRAILER IF EOF.             ZTAPB
12170XXTMCK    SBR  *&14,12            SETUP FOR NOISE                     ZTAPB
12180          MA   XXIORA,*&7         LENGTH RECORD CHECK.                ZTAPB
12190          BCE  XXCLER,12,"        CHECK POSITIONS 1 - 13              ZTAPB
12200          CHAIN12                 FOR GROUP MARK.                     ZTAPB
13010XXCKER    BER  XXERR              CHECK FOR TAPE ERROR.               ZTAPB
13020          BCE  XXCKLG,XXIODC,R    GO CHECK RECORD LENGTH IF READ.     ZTAPB
13030          A    XX1,XXOTCT         ADD OUTPUT BLOCK COUNT.             ZTAPB
13040          MCW  XXEOFX,*&4         SETUP EOR EXIT FROM FILE TABLE.     ZTAPB
13050          BEF  0                  EXIT IF END OF REEL.                ZTAPB
13060XXTHRU    B    0                  EXIT IF ALL CHECKS OK.              ZTAPB
13070*                                                                     ZTAPB
13080** ROUTINE TO CHECK INPUT BLOCK LENGTH                                ZTAPB
13090*                                                                     ZTAPB
13100XXCKLG    C    XXSAVE-1,XXIND3    CHECK IF READING                    ZTAPB
13110          BE   XXTHRU             TRAILER LABEL.                      ZTAPB
13120          C    XXLENG&3,XXINGM    CHECK IF NEXT POSITION              ZTAPB
13130          BE   XXTHRU             IS INPUT GROUP MARK.                ZTAPB
13140          MA   XXI9I,XXLENG&3     DECREMENT ADDRESS AND               ZTAPB
13150          C    XXLENG&3,XXINGM    CHECK FOR LONG RECORD.              ZTAPB
13160          BE   XXERR              DO NOT CLEAR G.M. IF LONG RECORD.   ZTAPB
13170XXLENG    SAR  0                  CLEAR SHORT RECORD G.M.             ZTAPB
13180*                                                                     ZTAPB
13190** ERROR COUNT & HALT ROUTINES                                        ZTAPB
13200*                                                                     ZTAPB
14010XXERR     MN   XXDRNO,*&4         SET DRIVE NUMBER AND                ZTAPB
14020          BSP  0                  BACKSPACE TAPE JUST USED.           ZTAPB
14030          A    XX1,XXERRC         INCREMENT ERROR COUNTER.            ZTAPB
14040          BCE  XXHLTR,XXERRC-1,5  CHECK FOR 50 READ ERRORS.           ZTAPB
14050          BCE  XXRDWR,XXIODC,R    CHECK IF READ.                      ZTAPB
14060          MN   XXDRNO,*&4         SET DRIVE NUMBER FOR SKIP & ERACE   ZTAPB
14070          SKP  0                  SET ERACE FLIP - FLOP.              ZTAPB
14080          BCE  XXHLTW,XXERRC,I    CHECK FOR 9 WRITE ERRORS.           ZTAPB
14090          B    XXRDWR             GO TRY TO WRITE AGAIN.              ZTAPB
14100XXHLTR    NOP  1000               SET HALT CODING.                    ZTAPB
14110          H                       HALT IF READ ERROR.                 ZTAPB
14120          B    XXREST             GO TRY AGAIN.                       ZTAPB
14130XXHLTW    NOP  2000               SET HALT CODING.                    ZTAPB
14140          H                       HALT IF WRITE ERROR.                ZTAPB
14150          B    XXREST             RESET COUNTER & TRY AGAIN.          ZTAPB
14160XXCLER    MN   *,0                CLEAR GROUP MARK SET BY             ZTAPB
14170          MN                      NOISE LENGTH RECORD.                ZTAPB
14180          B    XXREST             RESET COUNTER & TRY AGAIN.          ZTAPB
14190XXNOTO    MN   XXDRNO,*&4         SET DRIVE NUMBER IN HALT CODING.    ZTAPB
14200          NOP  3000               SET HALT CODING.                    ZTAPB
15010          H                       HALT. NO RESTART.                   ZTAPB
15020          B    *-8                HALT MEANS FILE NOT OPEN.           ZTAPB
15030          DCW  #9                 DUMMY TO ADJUST NOP & RE-STARTS.    ZTAPB
16010          JOB  ZZTAPE OPEN ROUTINE                                    ZTAPB
16020XXOPEN    SBR  XXIND3             STORE NSI IN X3.                    ZTAPB
16030          SBR  XXOPNX&3           STORE LINK IN XXOPNX.               ZTAPB
16040          SW   97                 SET WORD MARK IN X3                 ZTAPB
16050          MCW  XXFADD,XXIND3      MOVE FILE ADDRESS TO X3.            ZTAPB
16060          CW   XXDRNO&1           CLEAR WORD MARK UNDER I/O ADDRESS   ZTAPB
16070XXROPN    MN   XXDRNO,*&4         SET DRIVE NUMBER IN REWIND.         ZTAPB
16080          RWD  0                  REWIND TAPE.                        ZTAPB
16090          MN   XXDRNO,XXHEAD      SET DRIVE NUMBER IN HEADER TABLE.   ZTAPB
16100XXSAVE    SBR  XXTMCK-2,XXTMCK    SETUP TO IGNORE TAPE MARK.          ZTAPB
16110          B    XXHDRD             GO READ HEADER LABEL, IF ANY.       ZTAPB
16120          SBR  XXTMCK-2,XXRDTL    RESET BRANCH-END-FILE.              ZTAPB
16130          C    XXTRAL&4,XX1HDR    CHECK IF HEADER.                    ZTAPB
16140          BE   XXCHIO             IF EQUAL, GO TO CHECK IT.           ZTAPB
16150          BCE  XXNOHD,XXIODC,R    ELSE IF READ, IT IS BAD.            ZTAPB
16160          CS   479                CLEAR XXTRAL.                       ZTAPB
16170          LCA  XX1HDR,XXTRAL&4    LOAD HEADER ID INTO XXTRAL.         ZTAPB
16180XXCHIO    BCE  XXOUT,XXIODC,W     CHECK IF WRITE.                     ZTAPB
16190          BW   *&5,XXKEY          CHECK IF SECOND REEL.               ZTAPB
16200          B    XXIN               GO CHECK AGE OF INPUT FILE.         ZTAPB
17010          C    XXTRAL&34,XXINLB   CHECK IF SAME FILE AS LAST REEL.    ZTAPB
17020          BE   XXADD1             IF EQUAL, ADD 1 TO REEL SEQUENCE.   ZTAPB
17030XXNOHD    MN   XXDRNO,*&4         SET DRIVE NUMBER IN HALT CODING.    ZTAPB
17040          NOP  5000               SET HALT CODING.                    ZTAPB
17050          H                       HALT.  INPUT CANNOT BE OPENED.      ZTAPB
17060          B    XXROPN             GO TRY AGAIN.                       ZTAPB
17070*                                                                     ZTAPB
17080**    CHECK AGE OF INPUT FILE.                                        ZTAPB
17090*                                                                     ZTAPB
17100XXIN      C    XXTRAL&29,XXINPL   CHECK LABEL AGAINST EXPECTED LABL   ZTAPB
17110          BU   XXISBD             IF BAD GO HALT OR TO USER EXIT.     ZTAPB
17120          SBR  XXAGAD&3,XXPER1    SET PERAMETER 1 CHECK.              ZTAPB
17130          B    XXCKDT             GO CHECK MINIMUM AGE.               ZTAPB
17140          BH   XXISBD             IF TOO YOUNG, GO HALT.              ZTAPB
17150          SBR  XXAGAD&3,XXPER2    SET PERAMETER 2 CHECK.              ZTAPB
17160          B    XXCKDT             GO CHECK MAXIMUM AGE.               ZTAPB
17170          BL   XXISBD             IF BAD, GO HALT.                    ZTAPB
17180          B    *&5                IF GOOD, SKIP BRANCH TO HALT.       ZTAPB
17190XXISBD    B    XXNOHD             GO TO HALT OR USER EXIT.            ZTAPB
17200          SW   XXKEY              SET KEY.  INPUT OPENED.             ZTAPB
18010          MCW  XXTRAL&34,XXINLB   SETUP CHECK FOR                     ZTAPB
18020          MCW                     NEXT REEL OF FILE.                  ZTAPB
18030XXADD1    MA   XX1,XXINRS         ADD 1 TO REEL SEQUENCE.             ZTAPB
18040XXOPEX    SW   XXKEY              SET KEY.  OUTPUT OPENED.            ZTAPB
18050XXOPNX    B    0                  EXIT.                               ZTAPB
18060*                                                                     ZTAPB
18070**    CHECK RETENTION CYCLE OF OUTPUT FILES.                          ZTAPB
18080*                                                                     ZTAPB
18090XXOUT     SW   XXTRAL&36          SETUP FOR CHECKING                  ZTAPB
18100          SBR  XXAGAD&3,XXTRAL&38   RETENTION CYCLE.                  ZTAPB
18110          B    XXCKDT             GO CHECK RETENTION CYCLE.           ZTAPB
18120          CW   XXTRAL&36          RESET LAST SETUP.                   ZTAPB
18130          BH   *&14               GO HALT IF FILE NOT OLD ENOUGH.     ZTAPB
18140          BL   XXWRHD             WRITE HEADER IF OLD FILE EXPIRED.   ZTAPB
18150          BCE  XXWRHD,XXTRAL&36,     GO WRITE HEADER IF NO RET CYC.   ZTAPB
18160          MN   XXDRNO,*&4         SET DRIVE NUMBER IN HALT CODING.    ZTAPB
18170          NOP  5010               SET HALT CODING.                    ZTAPB
18180          H                       HALT.                               ZTAPB
18190          B    XXROPN             GO TRY AGAIN.                       ZTAPB
18200*                                                                     ZTAPB
19010**    WRITE OUTPUT HEADER LABEL.                                      ZTAPB
19020*                                                                     ZTAPB
19030XXWRHD    MN   XXDRNO,*&4         SET DRIVE NUMBER IN REWIND.         ZTAPB
19040          RWD  0                  REWIND TAPE.                        ZTAPB
19050          MCW  XXOUTR,XXTRAL&39   MOVE                                ZTAPB
19060          MCW  XXDATE               INFORMATION                       ZTAPB
19070          MCW  XXOUTN                 FROM FILE                       ZTAPB
19080          MCW                           TO LABEL.                     ZTAPB
19090          MCW                                                         ZTAPB
19100XXOTEX    B    *&1                GO TO NEXT OR USER ROUTINE.         ZTAPB
19110          B    XXHDIO             GO WRITE HEADER.                    ZTAPB
19120          MA   XX1,XXOTRS         INCREMENT OUTPUT REEL SEQUENCE.     ZTAPB
19130          B    XXOPEX             GO TO EXIT.                         ZTAPB
19140*                                                                     ZTAPB
19150**    GENERAL AGE CHECK ROUTINE.                                      ZTAPB
19160*                                                                     ZTAPB
19170XXCKDT    SBR  XXDTCX&3           STORE LINK IN EXIT.                 ZTAPB
19180          MCW  XXTRAL&34,XXSVDT   MOVE FILE DATE TO SAVE AREA.        ZTAPB
19190XXAGAD    A    0,XXSVDT           ADD PERAMETER TO SAVE AREA.         ZTAPB
19200          C    XXSVDT,XX366       CHECK IF JULIAN DATE                ZTAPB
20010          BH   *&12               ADJUSTMENT IS NECESSARY.            ZTAPB
20020          A    XX635,XXSVDT       ADJUST JULIAN DATE.                 ZTAPB
20030          B    *-22               GO CHECK AGAIN.                     ZTAPB
20040          C    XXDATE,XXSVDT      CHECK PERAMETER.                    ZTAPB
20050XXDTCX    B    0                  GO BACK TO MAINLINE.                ZTAPB
20060*                                                                     ZTAPB
20070**    GENERAL READ/WRITE HEADER/TRAILER ROUTINE.                      ZTAPB
20080*                                                                     ZTAPB
20090XXHDIO    SBR  XXHDEX&3           STORE LINK IN EXIT.                 ZTAPB
20100          SBR  *&15,0&X3          SAVE X3.                            ZTAPB
20110          B    XXTAPE             GO READ OR WRITE TAPE.              ZTAPB
20120          NOP  XXHEAD             USE XXTRAL AS I/O AREA.             ZTAPB
20130          SBR  XXIND3,0           RESTORE X3.                         ZTAPB
20140XXHDEX    B    0                  GO BACK TO MAINLINE.                ZTAPB
20150XXHDRD    SBR  XXHDRX&3           STORE LINK IN EXIT.                 ZTAPB
20160          MCW  XXR,XXHDRW         SET READ  D  CHARACTER.             ZTAPB
20170          B    XXHDIO             GO READ HEADER LABEL.               ZTAPB
20180          MCW  XXW,XXHDRW         RESET WRITE  D  CHARACTER.          ZTAPB
20190XXHDRX    B    0                  GO BACK TO MAINLINE.                ZTAPB
21010          JOB  ZZTAPE CLOSE ROUTINE.                                  ZTAPB
21020XXCLOZ    SBR  XXIND3             STORE NSI IN X3.                    ZTAPB
21030XXPOST    SBR  XXCLZX&3           STORE LINK IN EXIT.                 ZTAPB
21040          MCW  XXFADD,XXIND3      MOVE FILE ADDRESS TO X3.            ZTAPB
21050XXRDTL    MN   XXDRNO,XXHEAD      SET DRIVE NUMBER FOR READ/WRITE.    ZTAPB
21060          BCE  XXWRTL,XXIODC,W    CHECK IF WRITE.                     ZTAPB
21070          BER  XXERR              GO TO ERROR ROUTINE ON ERROR.       ZTAPB
21080XXCLR     SAR  0                  CLEAR G.M. SET BY T.M. RECORD.      ZTAPB
21090          MCW  XXTHRU&3,XXXXXX&3  SETUP EXIT BACK TO USER.            ZTAPB
21100          MCW  XXEOFX,XXEORX&3    SETUP EXIT FOR  1EOF  RECORD.       ZTAPB
21110          B    XXHDRD             GO READ TRAILER.                    ZTAPB
21120          C    XXTRAL&4,XX1EOR    CHECK FOR END OF REEL               ZTAPB
21130          BE   XXEORY             IF YES, GO OPEN NEXT REEL.          ZTAPB
21140          C    XXTRAL&4,XX1EOF    CHECK FOR END OF FILE.              ZTAPB
21150XXEORX    BE   0                  IF YES, EXIT TO USER ROUTINE.       ZTAPB
21160          MN   XXDRNO,*&4         ELSE MOVE DRIVE # TO HALT CODING.   ZTAPB
21170          NOP  5020               SET HALT CODING.                    ZTAPB
21180          H                       HALT.                               ZTAPB
21190          B    *-8                NO RESTART.                         ZTAPB
21200XXWRTL    B    XXWRTM             GO WRITE TAPE MARK.                 ZTAPB
22010          CS   479                CLEAR XXTRAL.                       ZTAPB
22020          MCW  XXOTCT,XXTRAL&9    MOVE OUTPUT BLOCK COUNT TO TRAILR   ZTAPB
22030XXLCA     LCA  XX1EOF             LOAD XX1EOR OR XX1EOF TO TRAILER.   ZTAPB
22040          SBR  XXLCA&3,XX1EOF     RESET LOAD INSTRUCTION.             ZTAPB
22050          MCW  XXTRAL&79,XXOTCT   BLANK OLD BLOCK COUNT.              ZTAPB
22060          B    XXHDIO             GO WRITE TRAILER.                   ZTAPB
22070          B    XXWRTM             GO WRITE TAPE MARK.                 ZTAPB
22080XXCLZX    B    0                  EXIT TO USERS PROGRAM OR XXCHNG.    ZTAPB
22090*                                                                     ZTAPB
22100** END OF REEL ROUTINE FOR MULTI-REEL FILES                           ZTAPB
22110*                                                                     ZTAPB
22120XXEORY    MN   XXDRNO,*&4         SET DRIVE NUMBER IN REWIND.         ZTAPB
22130          RWU  0                  REWIND AND UNLOAD TAPE.             ZTAPB
22140          SW   XXDRNO&1           SET NOT-OPENED FLAG.                ZTAPB
22150          MN   XXDRNO,*&4         MOVE DRIVE NUMBER TO HALT CODING.   ZTAPB
22160          NOP  7880               SET HALT CODING.                    ZTAPB
22170          H                       HALT.  OPERATOR HANGS NEW TAPE.     ZTAPB
22180          SBR  *&8,0&X3           SET FILE ADDRESS IN NOP.            ZTAPB
22190          B    XXOPEN             GO OPEN NEXT REEL.                  ZTAPB
22200          NOP  0                  DELIVER FILE ADDRESS.               ZTAPB
23010          BCE  XXXXXX,XXIODC,W    CHECK IF WRITE. EXIT IF YES.        ZTAPB
23020          SBR  *&8,0&X3           SET FILE ADDRESS IN NOP.            ZTAPB
23030          B    XXTAPE             GO READ FIRST BLOCK.                ZTAPB
23040          NOP  0                  DELIVER FILE ADDRESS.               ZTAPB
23050XXXXXX    B    0                  EXIT TO USERS PROGRAM.              ZTAPB
23060*                                                                     ZTAPB
23070** WRITE TAPE MARK WITH ERROR CHECK ROUTINE                           ZTAPB
23080*                                                                     ZTAPB
23090XXWRTM    SBR  XXTMEX&3           STORE LINK IN EXIT.                 ZTAPB
23100          MN   XXDRNO,*&4         SET DRIVE NUMBER IN WTM.            ZTAPB
23110XXWTM     WTM  0                  WRITE TAPE MARK.                    ZTAPB
23120          BER  XXTMER             GO SKIP AND TRY AGAIN ON ERROR.     ZTAPB
23130XXTMEX    B    0                  EXIT.                               ZTAPB
23140XXTMER    NOP  7999               SET HALT CODING.                    ZTAPB
23150          H                       HALT.                               ZTAPB
23160          MN   XXDRNO,XXERAC&3    SET DRIVE NUMBER IN SKIP AND ERAC   ZTAPB
23170          MN   XXDRNO,XXSLIP&3    SET DRIVE NUMBER IN BACKSPACE.      ZTAPB
23180XXSLIP    BSP  0                  BACKSPACE TAPE.                     ZTAPB
23190XXERAC    SKP  0                  SET SKIP AND ERACE FLIP - FLOP.     ZTAPB
23200          B    XXWTM              GO TRY AGAIN.                       ZTAPB
24010XXI9I     DCW  @I9I@              ADDRESS CONSTANT OF MINUS 1.        ZTAPB
24020          END  XXTAPE                                                 ZTAPB