RESTMERG864

(George Source)

Macros used: ACROSS, BITDEFS, BS, BWNZ, BWZ, BXE, BXL, BXU, COOR1, DCA, DELETE, FIELDDEF, GEOERR, GPERI, HUNTMISB, JBC, JBCC, JBS, JFNZ, LF, LOCK, MENDAREA, MHUNTW, REWIND, SEG, SEGENTRY, STEP, STEPAGAIN, STF, TESTNAMX, TESTREP2, UNLOCK, UP

RESTMERG864.txt
22FL ...      SEG   RESTMERG,864,PETER CAMPBELL,RESTORE 
22^=    #   
23DW          SEGENTRY K1RESTMERG,X1RESTMERG
23YG          SEGENTRY K2RESTMERG,X2RESTMERG
24D6    #   
24XQ    #   THIS SEGMENT IS USED BY THE RESTORING ROUTINES RESTOREG & RESTLIMB  
25CB    #   TO MERGE A DIRECTORY READ FROM AN INCREMENT DUMP TAPE WITH THE  
25X2    #   'SKELETON' DIRECTORY FOR ITS FILES PREVIOUSLY READ FROM TAPE
26BL    #     ENTRY    A MAGNETIC TAPE IS POSITIONED AFTER THE START SENTINEL FO
26W=    #              DIRECTORY TO BE MERGED.  
27*W    #              THE TOP FILE OPEN CONTAINS THE SKELETON ENTRIES TO BE MER
27TG    #     METHOD   EACH ENTRY IN THE BLOCKS ON TAPE IS EXAMINED (READ INTO F
28*6    #              BLOCK). FOR THOSE FILES DUMPED IN THE CURRENT INCREMENT  
28SQ    #              CORRESPONDING SKELETON ENTRY IS FOUND IN THE TOP FILE
29#B    #              OPEN.THE ECOPS WORD IN THE ENTRY IS REPLACED BY THAT IN  
29S2    #              THE SKELETON ENTRY WHICH IS DELETED AND THE ENTRY IS 
2=?L    #              APPENDED, THE NEW BLOCKS RECORD IS APPENDED AND  
2=R=    #              THEN A TEST IS MADE TO SEE IF AN INDEX RECORD
2?=W    #              NEEDS APPENDING.  FINALLY THE OLD USER TRAPS ARE 
2?QG    #              APPENDED AND PROCESS REPEATED FOR EACH DIRECTORY ENTRY.  
2#=6    #              MAGNETIC TAPE ENTRIES AND ENTRIES WHICH DO NOT HAVE A
2#PQ    #              CORRESPONDING SKELETON ENTRY ARE MARKED AS HAVING NO 
2*9B    #              COPIES.  
2*P2    #     EXIT     THE DIRECTORY HAS BEEN MERGED
2B8L    #              THE TAPE IS POSITIONED AFTER EFS OF DIRECTORY
2BN=    #              UP      NORMAL EXIT  
2C7W    #              ANY ANAMOLY CAUSES ENTRY INTO RESTERR SEGMENT
2CMG    #   
2D76    #   
2DLQ    #   
2F6B    #  USE OF ACCS. AND AWORK WORDS 
2FL2    #  ---------------------------- 
2G5L    #   
2GK=          BITDEFS  4,0,XBINDEX,XBBLOCKS,XBDIR   
2H4W          FIELDDEF NUMTRAPS,9,4,23  
2HJG    #     X4    USED AS A BIT & FIELD WORD. DEFINED AS FOLLOWS: 
2J46    #           XBINDEX  CURRENT DIR. ENTRY IS INDEXED (IN SKELETON ENTRY)  
2JHQ    #           XBBLOCKS CURRENT DIR. ENTRY HAS A BLOCKS RECORD (I.E. WAS DU
2K3B    #                                  THIS INCR.)  
2KH2    #           XBDIR    DIR. ENTRY CURRENTLY BEING DEALT WITH IS FOR A DIRE
2L2L    #           NUMTRAPS NO. OF TRAP RECORDS IN TAPE DIR. ENTRY (ASSUMED TO 
2LG=    #     X3    USED VARIOUSLY AS POINTER TO FILE/FRESTOR BLOCK, POINTER TO 
2L^W    #           RECORD WITHIN THAT BLOCK, STEP & STEP-APPEND POINTERS   
2MFG    #     X5    MODIFIER (-A1) DOWN FILE/FRESTOR FOR CURRENT RECORD AND ALSO
2M^6    #     X6    SHORT TIME WORKING WORD 
2NDQ    #     X7    LINK ACCUMULATOR AND WORK WORD  
2NYB    #    AWORK1 NO. OF RECORDS TO SKIP IN TAPE DIR. (BLOCKS AND/OR INDEX REC
2PD2    #           OR NEITHER) 
2PXL    #   
2QC=    #   
2QWW    #  SUBROUTINES  
2RBG    #   
2RW6    #   
2S*Q    #  READS A BLOCK FROM MT EXAMINING THE REPLY WORD FOR UNEXPECTED BITS.  
2STB    #  GOES TO RESTERR IF B0, B1 OR B3 OF MT REPLY WORD SET.
2T*2    #  ON ENTRY, X0= NO. OF WORDS TO READ, X3->BUFFER TO READ INTO.  X5 IS S
2TSL    #  ON EXIT, X1=FX1, X2=FX2, X3-> BUFFER BLOCK.     USES X0. 
2W#=    #   
2WRW    SREADMT 
2X?G          SBX   5  FX1  
2XR6          LDX   2  FX2  
2Y=Q          DCA   ,STO,0,COUNT           [INSERT COUNT OF WORDS   
2YQB          DCA   ,STOZ,,MODE            [ READ MODE  
2^=2          LDN   0  A1(3)
2^PL          DCA   ,STO,0,CTSA            [SET START OF BUFFER ADDRESS 
329=          LOCK  3                      [LOCK DOWN BUFFER
32NW          LOCK  2   
338G          GPERI ,2  
33N6          COOR1 
347Q          UNLOCK   2
34MB          UNLOCK   3
3572          LDCT  0  #640 
35LL          ANDX  0  CPRW1(2) 
366=          BNZ   0  XER19               [ERROR IF B0, B1 OR B3 SET IN REPLY W
36KW          ADX   5  FX1  
375G          EXIT  5  0
37K6    #   
384Q    #  GETS A POINTER TO THE NEXT RECORD IN THE DIRECTORY ON TAPE (UPDATING 
38JB    #  X5). JUMPS OUT IF THE END OF DIRECTORY IS REACHED.   
3942    #  ON ENTRY, X5=MOD. DOWN FRECTOR BLOCK OF CURRENT RECORD (-A1).  X7 IS 
39HL    #  ON EXIT, X3->FILE/FRESTOR BLOCK, X5= MOD(-A1) DOWN BLOCK OF NEW RECOR
3=3=    #   
3=GW    SGETREC 
3?2G          MHUNTW   3,FILE,FRESTOR   
3?G6          SMO      5
3?^Q          LDEX  0  FRH+A1(3)           [X0= LENGTH OF CURRENT RECORD
3#FB          ADX   5  0
3#^2          SMO      5
3*DL          LDEX  0  FRH+A1(3)           [X0= LENGTH OF NEW RECORD
3*Y=          BNZ   0  SNLAST              [J IF NOT LAST RECORD IN BLOCK   
3BCW    SGETBL  
3BXG          SBX   7  FX1  
3CC6          LDN   0  GSBS 
3CWQ          CALL  5  SREADMT             [READ NEXT BLOCK FROM TAPE   
3DBB          ADX   7  FX1  
3DW2          LDCT  0  #020 
3F*L          ANDX  0  CPRW1(2) 
3FT=          BNZ   0  ZTM                 [J IF TM DETECTED
3G#W          LDEX  0  FRH+A1(3)
3GSG          BZE   0  SGETBL              [GET NEXT BLOCK IF THIS ONE IS EMPTY 
3H#6                                       [SHOULDN'T HAPPEN BUT MIGHT POSSIBLY 
3HRQ          LDN   5  0                   [INITIALISE POINTER DOWN BLOCK   
3J?B    SNLAST  
3JR2          EXIT  7  0
3K=L    #   
3KQ=    #  DOES A STEP-APPEND ON THE FILE AT DEPTH 0.   
3L9W    #  ON ENTRY, X2->RECORD WANT TO APPEND.      X7 IS S/R LINK 
3LPG    #  ON EXIT, X1=FX1, X2=FX2, X3->WHERE TO APPEND RECORD.     USES X0.
3M96    #   
3MNQ    SAPPEND 
3N8B          SBX   7  FX1  
3NN2          LDEX  1  FRH(2)              [X1= LENGTH OF RECORD
3P7L          STEP  ,0(1)                  [STEP-APPEND 
3PM=          ADX   7  FX1  
3Q6W          EXIT  7  0
3QLG    #   
3R66    #  RESETS UP POINTER TO CURRENT RECORD IN TAPE DIR. 
3RKQ    #  ON ENTRY, X5= MOD. DOWN CURRENT TAPE BLOCK.      X7 IS S/R LINK. 
3S5B    #  ON EXIT, X2->RECORD TO APPEND.     USES X0.  
3SK2    #   
3T4L    SFRESTOR
3TJ=          MHUNTW  2,FILE,FRESTOR
3W3W          ADX   2  5
3WHG          ADN   2  A1   
3X36          EXIT  7  0
3XGQ    #   
3Y2B    #  MOVES A RECORD FROM TAPE OR DUMMY DIR. TO MAKE REAL DIR. 
3YG2    #  ON ENTRY, X2->RECORD TO MOVE, X3->WHERE TO MOVE IT.  X7 IS S/R LINK. 
3Y^L    #  ON EXIT, X1= LENGTH OF RECORD, X2 & X3 AS ON ENTRY.  
3^F=    #   
3^YW    SMOVE   
42DG          LDEX  1  FRH(2)   
42Y6          MOVE  2  0(1) 
43CQ          EXIT  7  0
43XB    #   
44C2    #   
44WL    #   
45B=    #  ENTERED FROM RESTOREG & RESTLIMB.
45TW    #  INITIALISE BUFFER & POINTERS.
46*G    X1RESTMERG  
46T6          MHUNTW   3,FILE,FRESTOR   
47#Q          STOZ     A1(3)               [INITIALISE 1ST WORD OF BUFFER   
47SB          LDN   5  0                   [  AND MODIFIER DOWN BLOCK   
48#2    #   
48RL    #  READS A NAME RECORD FROM TAPE (GEOERRS IF IT ISN'T AND NOTES WHAT REC
49?=    #  ARE PRESENT ON TAPE.  CLEARS THE INDEXED BIT & FIELD.
49QW    XNAMEREC
4==G          LDN   4  0                   [CLEAR MARKER WORD   
4=Q6          CALL  7  SGETREC             [READ (STEP) NAME RECORD FROM TAPE   
4?9Q          ADX   3  5                   [X3-> (RECORD FROM TAPE)-A1  
4?PB          LDX   0  ERES(3)  
4#92          BNZ   0  XGEO                [GEOERR IF NOT NAME RECORD   
4#NL          LDX   2  ENUSE(3) 
4*8=          STF   ,NUMTRAPS,2            [REMEMBER NO. OF TRAPS   
4*MW          LDX   2  FX2  
4B7G          STOZ     AWORK1(2)           [CLEAR "NO. OF TAPE RECS TO SKIP"
4BM6          LDN   7  0                   [  AND AGAIN 
4C6Q          LDX   0  ESER(3)  
4CLB          BNZ   0  XNCOP               [J IF MT ENTRY   
4D62          JBCC  XNINDEX,3,BEINDEX      [CLEAR "INDEXED" BIT 
4DKL          ADN   7  1                   [UPDATE NO. OF TAPE RECORDS TO SKIP  
4F5=          NGN   0  #100 
4FJW          ANDS  0  EINDEX(3)           [CLEAR INDEX FIELD (B18-23 OF EINDEX)
4G4G                                       [PROBABLY NO NEED FOR THIS, BUT NOT S
4GJ6    XNINDEX 
4H3Q          LDEX  0  ECOPS(3) 
4HHB          BZE   0  XNBLOCKS            [J IF NO BLOCKS REC ON TAPE  
4J32          ADN   7  1                   [UPDATE SKIP COUNT   
4JGL    XNBLOCKS
4K2=          STO   7  AWORK1(2)           [REMEMBER NO. OF RECORDS TO SKIP IN T
4KFW    #   
4K^G    #  BRANCHES IF ENTRANT IS A MT OR IS NOT DUMPED IN THE CURRENT INCREMENT
4LF6    #  OTHERWISE LOCATES THE DUMMY NAME RECORD - FOR A TERMINAL FILE IT MUST
4LYQ    #  1ST TERMINAL FILE RECORD BUT FOR DIRS. THE ORDER OF DIR. ENTRIES IS N
4MDB    #  NECESSARILY THE ORDER OF DIRS. DUMPED (IN MK. 8.20+, DUMMY RECORDS FO
4MY2    #  PRECEDE THOSE FOR TERMINALS FILES WHICH AGAIN PRECEDE ALL REAL ENTRIE
4NCL    #  GEOERRS IF DOESN'T FIND THE ENTRY.  REMEMBER THAT SEVERAL DIRS. WITH 
4NX=    #  LOCAL NAME (BUT DIFFERENT USER NAMES) AND ONE TERMINAL FILE WITH THAT
4PBW    #  MAY BE DUMPED IN THE SAME INCR..  SETS INDEXED BIT & INDEX NO. FIELD 
4PWG    #  APPROPRIATE AND ALSO ECOPS.  
4PX* ...#UNS FTS2REVERT 
4PY8 ...(   
4P^3 ...      JFNZ     XNCOP,3,FEFSNO      [ IF ALIEN MUST BE OFFLINE   
4P^W ...      LDEX  0  ECOPS(3)            [ MAY HAVE MESSED UP BY FILE HANDLER 
4Q2P ...      BZE   0  XNCOP               [
4Q3J ...)   
4Q44 ...#UNS AMTGR  
4Q4J ...      JBS  NOTPARTRES,,BGENRES  
4Q54 ...#UNS AMTGR  
4Q5J ...#SKI
4Q65 ...      BWNZ     GINCTSN,NOTPARTRES   
4Q6Y ...      HUNTMISB 1,FI,FRESTUSER   
4Q7R ...      SMO      FRNXT(1)             [ POINTER TO USER   
4Q8L ...      LDX   0  FRINC(1) 
4Q9F ...      BXU   0  EINC(3),XNCOP
4Q=# ...#     JUMP IF THIS FILE NOT DUMPED IN THIS INCREMENT
4Q?7 ...      BRN      PRES 
4Q#2 ...NOTPARTRES  
4QB6          LDX   0  EINC(3)  
4QTQ          SBX   0  JINCLAST 
4R*B          BNZ   0  XNCOP               [J IF NOT DUMPED IN THIS INCR.   
4RK8 ...PRES
4RT2          BS    ,XBBLOCKS              [SET "BLOCKS REC PRESENT" BIT
4S#L          LDX   0  EUSE1(3) 
4SS=          BZE   0  XNOTDIR             [J IF NOT A DIR. 
4T?W          BS    ,XBDIR                 [SET "CURRENT ENTRY IS A DIR." BIT   
4TRG    XNOTDIR 
4W?6          REWIND
4WQQ    XSTEP   
4X=B          STEP  
4X*G ...#UNS FTS2REVERT 
4XDL ...      BZE   3  XNCOP               [ FH ????????
4XHQ ...#UNS FTS2REVERT 
4XLW ...#SKI
4XQ2          BZE   3  XGEO                [GEOERR IF NO DUMMY ENRTY
4Y9L          LDX   0  ERESN(3) 
4YP=          BNZ   0  XSTEP               [J IF NOT NAME REC.  
4^8W          MHUNTW   2,FILE,FRESTOR   
4^NG          ADX   2  5                   [X2 -> (RECORD FROM TAPE)-A1 
5286          JBS   XDIR,,XBDIR            [J IF LOOKING FOR A DIR. 
52MQ          LDX   0  EUSE1N(3)
537B          BNZ   0  XSTEP               [J IF NOT FOUND TERMINAL FILE YET
53M2    XTESTDUM
546L          LDX   0  EINCN(3) 
549Q ...#UNS FTS2REVERT 
54#W ...      BPZ   0  XNCOP               [ FH ?   
54D2 ...#UNS FTS2REVERT 
54H6 ...#SKI
54L=          BPZ   0  XGEO                [GEOERR IF NOT DUMMY ENTRY   
54PB ...#UNS FTS2REVERT 
54SG ...      TESTNAMX 5,ELOC1(2),ELOC1N(3),XSTEP,6  [   FH   ????   IF WRONG DU
54XL ...#UNS FTS2REVERT 
552Q ...#SKI
555W          TESTNAMX 5,ELOC1(2),ELOC1N(3),XGEO,6  [GEOERR IF WRONG DUMMY ENTRY
55KG          LDX   6  ECOPSN(3)
5656          STO   6  ECOPS(2)            [TRANSFER BLOCKS WORD TO REAL ENTRY  
56JQ          JBC   XXNINDEX,3,BNINDEX     [J IF NOT INDEXED
574B          BS    2,BEINDEX              [SET INDEX BIT IN REAL DIR. ENTRY
57J2          BS    ,XBINDEX               [REMEMBER INDEX RECORD PRESENT   
583L          LDX   0  EINDEXN(3)   
58H=          ANDN  0  #77  
592W          ORS   0  EINDEX(2)           [MOVE INDEX NO. TO DIR. ENTRY
59GG    #   
5=26    #  APPENDS NAME RECORD IN TAPE DIR. TO DIR. & DELETES DUMMY NAME RECORD 
5=FQ    #  IF PRESENT   
5=^B    XXNINDEX
5?F2          ADN   2  A1                  [X2-> RECORD TO APPEND   
5?YL          CALL  7  SAPPEND             [X3-> STEP-APPEND POSITION   
5#D=          CALL  7  SFRESTOR            [SET UP X2 AGAIN 
5#XW          CALL  7  SMOVE               [MOVE RECORD FROM TAPE DIR. TO DIR.  
5*CG          BZE   6  XNODUM              [J IF NO DUMMY ENTRY 
5*X6          DELETE                       [DELETE SKELETON NAME RECORD 
5BBQ    #   
5BWB    #  APPENDS AND DELETES DUMMY BLOCKS & INDEX RECORDS IF PRESENT.  COPES I
5CB2    #  COORDINATION OCCURS DURING STEP AND/OR STEP-APPEND.  
5CTL    XNODUM  
5D*=          JBC   YNOCOP,,XBBLOCKS       [J IF NO BLOCKS RECORD   
5DSW    YSTEP   
5F#G          STEP  
5FS6    YSTEP1  
5G?Q          LDX   2  3                   [X2-> RECORD TO APPEND   
5GRB          LDX   6  3                   [RETAIN POINTER TO RECORD
5H?2          CALL  7  SAPPEND             [X3-> STEP-APPEND POSITION   
5HQL          TESTREP2 COORED,YCOOR 
5J==          LDX   2  6                   [RELOAD POINTER TO RECORD
5JPW          CALL  7  SMOVE               [MOVE REC TO DIR.
5K9G          DELETE                       [DELETE DUMMY BLOCKS OR INDEX RECORD 
5KP6    YNOCOP  
5L8Q          JBCC  YNOINDEX,,XBINDEX      [J IF NO INDEX RECORD (CLEAR INDEX MA
5LNB                                       [                             THERE I
5M82          BRN      YSTEP
5MML    YCOOR   
5N7=          STEPAGAIN                    [X3-> BLOCKS OR INDEX RECORD AGAIN   
5NLW          BRN      YSTEP1   
5P6G    #   
5PL6    #  SKIPS BLOCKS AND INDEX RECORDS ON TAPE AND TRANSFERS TRAP RECORDS FRO
5Q5Q    #  TAPE DIR. TO DIR..   
5QKB    YNOINDEX
5R52          SMO      FX2  
5RJL          LDX   6  AWORK1              [X6= NO. OF RECORDS TO SKIP ON TAPE  
5S4=          BZE   6  YNOSKIP  
5SHW    YSKIP   
5T3G          CALL  7  SGETREC             [SKIP BLOCKS OR INDEX RECORD 
5TH6          BCT   6  YSKIP
5W2Q    YNOSKIP 
5WGB          LF    ,NUMTRAPS,6            [X6= NO. OF TRAPS
5X22          BZE   6  XNAMEREC            [J IF NO TRAPS   
5XFL    YTRAP   
5X^=          CALL  7  SGETREC             [GET NEXT TRAP RECORD
5YDW          SMO      5
5YYG          LDN   2  A1(3)               [X2-> TRAPS RECORD ON TAPE   
5^D6          CALL  7  SAPPEND             [X3-> STEP-APPEND POSITION   
5^XQ          CALL  7  SFRESTOR            [RESET X2
62CB          CALL  7  SMOVE               [MOVE TRAPS RECORD FROM TAPE DIR. TO 
62X2          BCT   6  YTRAP
63BL          BRN      XNAMEREC 
63W=    #   
64*W    XDIR
64TG          TESTNAMX 3,EUSE1(2),EUSE1N(3),XSTEP,6   [USERS MAY BE IN DIFFERENT
65*6                                       [DUE TO ERASURE OF DIRS. SEARCH BY US
65SQ                                       [SINCE DIR. WITH SAME LOCAL NAME BUT 
66#B                                       [DIFFERENT USER NAME MAY HAVE BEEN CR
66S2                                       [(AND BOTH DUMPED)   
67?L          BRN      XTESTDUM 
67R=    #   
68=W    #  MT ENTRANT OR FILE NOT IN THIS INCR..  SHOW FILE OFFLINE.
68QG    XNCOP   
68QK ...#UNS FTS2REVERT 
68QN ...      JFNZ  NOTPARALLEL,3,FEFSNO   [ IF ALIEN MUST BE OFFLINE   
68QP ...#UNS AMTGR  
68QQ ...      JBC NOTPARALLEL,,BGENRES  
68QR ...#UNS AMTGR  
68QS ...#SKI
68QW ...      BWZ      GINCTSN,NOTPARALLEL   [ JUMP IF PARTIAL RESTORES 
68R4 ...#UNS  FPD   
68RL ...(   
68S8 ...#     THE FILE WAS NOT DUMPED IN THE RESTORED INCREMENT 
68SQ ...      LDEX  0  ECOPS(3)            [ IF THE FILE WAS OFFLINE AT THE TIME
68T# ...      BZE   0  NOTPARALLEL            [ IGNORE IT   
68TW ...      MHUNTW   1,FILE,FINTER7   
68WD ...      LDX   0  EINC(3)  
68X2 ...      BXL   0  GRPINCNUM(1),NOTPARALLEL 
68XJ ...#     IF THE FILE WAS DUMPED IN AN INCREMENT LOWER THAN GRPINCNUM IT CAN
68Y6 ...#     HAVE BEEN DUMPED IN THE PARALLEL INCREMENT
68YN ...      BXE   0  GRPINCNUM(1),PARALLELINC 
68^= ...#     JUMP IF THE FILE APPEARS TO HAVE BEEN DUMPED IN THE PARALLEL INC  
68^S ...#   
692B ...#     THE FILE MAY HAVE BEEN DUMPED IN A NEW PARALLEL INCREMENT 
692Y ...#     RESET THE FILE FINTER7
693G ...      STO   0  GRPINCNUM(1)        [ NEW INCREMENT NUMBER   
6944 ...      STOZ     GRPINCFILES(1)      [ CLEAR NO AND SIZE OF FILES IN INCRE
694L ...      STOZ     GRPINCSIZE(1)       [
6958 ...PARALLELINC 
695Q ...      LDN   0  1
696# ...      ADS   0  GRPINCFILES(1)      [ UPDATE NUMBER AND SIZE OF INCREMENT
696W ...      LDX   0  ECOPS(3) 
697D ...      SRL   0  15                        [ PICK OUT SIZE OF FILE
6982 ...      ADS   0  GRPINCSIZE(1)       [ UPDATE NO AND SIZE OF INCREMENT
698J ...NOTPARALLEL 
6996 ...)   
69=6          LDX   2  3                   [X2->NAME RECORD IN TAPE DIR.
69PQ          LDN   6  0
6=9B          DLA   6  ECOPS(2)            [CLEAR FILE ONLINE FIELD 
6=P2          BRN      XXNINDEX 
6?8L    #   
6?N=    #  END OF DIR. REACHED (TAPE-MARK READ).  READ QUALIFIER BLOCK - CHECK  
6#7W    #  IF IT IS END SENTINEL.   
6#MG    ZTM 
6*76          BNZ   4  XGEO                [GEOERR IF NOT TRYING TO READ NAME RE
6*LQ                                       [NON-STANDARD BUT EFFECTIVE USE (X4 I
6B6B                                       [                              BIT WO
6BL2          LDN   0  20   
6C5L          CALL  5  SREADMT             [READ QUALIFIER BLOCK
6CK=          LDCT  0  #020 
6D4W          ANDX  0  CPRW1(2) 
6DJG          BNZ   0  XER21               [ERROR MESSAGE IF TM READ
6F46          LDCT  0  #400 
6FHQ          BXU   0  ESENTYP(3),XER4     [ERROR MESSAGE IF NOT READ END SENTIN
6G3B    #   
6GH2    #  FOR MARK 8.20+ INCREMENTS, SPARE DUMMY ENTRIES FOR DIRS. MAY BE PRESE
6H2L    #  (BUT NOT FOR TERMINAL FILES).  DELETE THESE. 
6HG=    X2RESTMERG  
6H^W          REWIND
6JFG    ZSTEP   
6J^6          STEP  
6KDQ    ZSTEP1  
6KYB          BZE   3  ZEND                [J IF NO MORE ENTRIES AT ALL 
6LD2          LDX   0  EINCN(3) 
6LXL          BPZ   0  ZEND                [J IF NO MORE DUMMY ENTRIES  
6MC=          LDX   0  EUSE1N(3)
6MWW ...      BZE   0  XSKELETON
6NBG          LDN   7  3
6NW6    ZDEL
6P*Q          DELETE                       [DELETE NAME, BLOCKS & INDEX RECORDS 
6PTB          STEP  
6Q*2          BCT   7  ZDEL 
6QSL          BRN      ZSTEP1   
6R#=    ZEND
6RRW          UP
6RXR ...XSKELETON   
6S3N ...      LDN   7  2                     [ ERASE DUMMY SKELETON ENTRYAND BLO
6S7K ...      BRN      ZDEL 
6S?G    XGEO
6SR6          GEOERR   BRIEFPM,DUMPORD     [ ONE OF THE FOLLOWING : 
6T=Q                                       [1. NAME REC EXPECTED IN TAPE DIR BUT
6TQB                                       [2. ENTRY NOT FOUND WHEN LOOKING FOR 
6W=2                                       [3. REAL ENTRY FOUND WHEN LOOKING FOR
6WPL                                       [       DUMMY ENTRY  
6X9=                                       [4. WRONG DUMMY ENTRY FOUND  
6XNW                                       [5. TM DETECTED BUT NOT TRYING TO REA
6Y8G                                       [         NAME RECORD
6YN6                                       [6. SUPERFLUOUS DUMMY ENTRY NOT A DIR
6^7Q    #   
6^MB    XER4  ACROSS   RESTERR,4           [END SENTINEL EXPECTED BUT NOT FOUND 
7272    XER19 ACROSS   RESTERR,19          [B0, B1 OR B3 SET IN MT REPLY WORD   
72LL    XER21 ACROSS   RESTERR,21          [SUPERFLUOUS TAPE MARK DETECTED  
736=    #   
73KW          MENDAREA 30,K99RESTMERG   
745G    #   
74K6    #END
^^^^ ...24131731000100000000