{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: INCWRITE865)}}
====== INCWRITE865 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:ALTLENG|ALTLENG]], [[george:macro:BACKSPACE|BACKSPACE]], [[george:macro:BC|BC]], [[george:macro:BS|BS]], [[george:macro:BWNZ|BWNZ]], [[george:macro:BWZ|BWZ]], [[george:macro:BXE|BXE]], [[george:macro:BXGE|BXGE]], [[george:macro:CLOSETHROW|CLOSETHROW]], [[george:macro:DOWN|DOWN]], [[george:macro:FC|FC]], [[george:macro:FON|FON]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETDIR|GETDIR]], [[george:macro:HUNT2|HUNT2]], [[george:macro:HUNTMISB|HUNTMISB]], [[george:macro:HUNTW|HUNTW]], [[george:macro:JBC|JBC]], [[george:macro:JBCS|JBCS]], [[george:macro:JBS|JBS]], [[george:macro:JBSC|JBSC]], [[george:macro:JFNZ|JFNZ]], [[george:macro:JMBS|JMBS]], [[george:macro:MBC|MBC]], [[george:macro:MBS|MBS]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREEW|MFREEW]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:NAME|NAME]], [[george:macro:OPEN|OPEN]], [[george:macro:OPENRELN|OPENRELN]], [[george:macro:READAGAIN|READAGAIN]], [[george:macro:REWIND|REWIND]], [[george:macro:REWRITE|REWRITE]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:STEP|STEP]], [[george:macro:STEPAGAIN|STEPAGAIN]], [[george:macro:STEPREWRITE|STEPREWRITE]], [[george:macro:TESTNAME|TESTNAME]], [[george:macro:TESTNAMX|TESTNAMX]], [[george:macro:TESTREP2|TESTREP2]], [[george:macro:TOPFCB|TOPFCB]], [[george:macro:TOPFCB2|TOPFCB2]], [[george:macro:TRACEIF|TRACEIF]]
22FL ... SEG INCWRITE,864,FILESTORE,INCDUMP
22^= #
23DW SEGENTRY K1INCWRITE,X1INCWRITE
24XQ #
25CB #
25X2 # AWORK1 USED TO HOLD FILE NUMBER OF FILE BEING DUMPED
26BL # ALSO USED BY WRITESFS SR TO DISTINGUISH BETWEEN
26W= # COMPOSITE ESF AND SIMPLE ESF- NEEDS TO KNOW WHETHER TO
27*W # OUTPUT FILEDUMPED MESSAGE
27TG #
28*6 # AWORK2 HOLDS THE ECOPS WORD OF THE NAME REC
28SQ # FOR CHECKING AGAINST THE BLOCKS RECORD.
29#B #
29S2 # AWORK3 HOLDS ZERO OR THE INDEX NO. OF THE FILE
2=?L # FOR CHECKING AGAINST THE INDEX RECORD.ALSO USED
2=R= # BY THE FILE DUMPING CODE
2?=W #
2?QG # AWORK4 HOLDS NO. OF TRAPS RECORDS EXPECTED.
2#=6 # FOR CHECKING AGAINST ACTUAL TRAPS RECORDS.
2#PQ #
2*9B # X6 HOLDS SIZE OF FILE BEING DUMPED.
2*P2 #
2B8L #
2BN= # CONSTANTS
2C7W #
2CMG YB5B1 4HB5B1 [LANGUAGE FOR JDFS
2D76 MLANCOMP 4HC1 [LANGUAGE FOR COMPOSITE S/F
2DLQ NCLEANDAY +864000/K9*100 [NO. OF CLEANCTS PER DAY
2DQM ...#UNS AMTGR
2DWJ ...#SKI
2F2F ...(
2F6B MDUMP 12HDUMPER
2FL2 MMAST 12HMASTER
2FPX ...)
2FTS ...#UNS AMTGR
2F^P ...MSYST 12HSYSTEM
2G5L #
2GK= # SUBROUTINES
2H4W #
2HJG #
2J46 XFDUMPCOM [ GETS POINTER IN X1 TO FI FDUMPCOM
2JHQ SMO FX2
2K3B STO 0 ACOMMUNE1 [ SAVE LINK
2KH2 HUNTMISB 1,FI,FDUMPCOM [ FIND FDUMPCOM IN MISCELLAN. CHAIN
2L2L SMO FX2
2LG= LDX 0 ACOMMUNE1
2L^W EXIT 0 0
2MFG XLOCFINC [SR TO LOCATE FINC BLOCK
2M^6 SMO FX2
2NDQ STO 0 ACOMMUNE1 [SAVE LINK
2NYB MHUNTW 1,FILE,FINC
2PD2 JBC NFLINC2,,BFILEINC [J IF WE DONT WANT THE 2ND FINC
2PXL HUNT2 1,FILE,FINC,1 [LOOK FOR 2ND FINC
2QC= NFLINC2
2QWW SMO FX2
2RBG LDX 0 ACOMMUNE1 [RESTORE LINK AND EXIT
2RW6 EXIT 0 0
2S*Q #
2STB #
2T*2 #
2TSL #
2W#= SFINDQUAL [S/R USED TO LOCATE FQUAL BLOCK FOR LOCKC
2WRW [X2 -> BLOCK . CALLED ON X1
2X?G MHUNTW 2,FILE,FQUAL
2XR6 EXIT 1 0
2Y=Q #
2YQB #
2^=2 #
2^PL SFINDFABS [S/R USED TO LOCATE FABSNB FOR ALTLENG
329= [X2->BLOCK. CALLED ON X1.
32NW MHUNTW 2,FILE,FABSNB
338G EXIT 1 0
33N6 #
347Q #
34MB XCHECKBAT [S/R TO CHECK WHETHER A GIVEN INCR NO
3572 [IS A PREVIOUS INCR OF CURRENT BATCH
35LL LDX 2 INCUNFIN(1) [POSN OF LIST IN VARIABLE
366= [PART OF FILE FINC BLOCK
36KW ADX 2 FINCTRD(1)
375G LDX 0 INCBATCH(1) [NO. OF PREVIOUS INCRS IN BATCH
37K6 BRN XCHECK
384Q
38JB XCHECKREL [S/R TO CHECK WHETHER A GIVEN INCR NO IS AN
3942 [INCOMPLETE (UNRELIABLE) INCR
39HL LDX 2 FINCTRD(1)
3=3= LDX 0 INCUNFIN(1) [NO OF INCOMPLETE INCRS
3=GW BRN XCHECK
3?2G
3?G6 XCHECKRD [SR TO CHECK WHTHER TTTP WANTS AN INCR REDUMPED
3?^Q LDN 2 0 [OFFSET OF LIST WITHIN LIST AREA
3#FB [OF FINCPROC
3#^2 LDX 0 FINCTRD(1) [NO OF INCS IN LIST
3*DL
3*Y= XCHECK [COMMON CODE TO BOTH S/RS. ON ENTRY TO BOTH
3BCW [X1->FINC BLOCK, X5=INCR NO, X4 IS S/R LINK
3BXG [USES X0 AND X2
3CC6 [IF INCR NO IS IN APPROPRIATE LIST ROUTINE EXITS 4 0
3CWQ [OTHERWISE IT EXITS 4 1
3DBB
3DW2 ADN 2 INCLISTS-1(1) [X2->WORD BEFORE START OF APPR. LIST
3F*L BZE 0 NRELBAT [J IF EMPTY
3FT= MOREIN
3G#W SMO 0
3GSG BXE 5 0(2),RELBAT [J IF IN LIST
3H#6 BCT 0 MOREIN [J IF MORE IN LIST
3HRQ NRELBAT
3J?B EXIT 4 1 [NOT IN LIST
3JR2 RELBAT
3K=L EXIT 4 0 [IN LIST
3KQ= #
3L9W #
3LPG XCHECKTTTP [ FINDS WHETHER THERE ARE ANY TO BE R
3M96 [ INCREMENTS
3MNQ JBS NOREDUMPED,,BATCHFIN
3N8B # DONT SEARCH FOR REDUMPED INCRS IF WE HAVE FINISHED A BATCH
3NN2 # OR HAVE NOT STARTED FROM BEGINNING
3P7L JBC NOREDUMPED,,BATCHSTART
3PM= LDX 0 INCUNFIN(1) [ NO OF T B REDUMPED INCS
3Q6W SMO FX2
3QLG STO 1 ACOMMUNE1 [ SAVE POINTER TO FINC
3R66 MHUNTW 1,FILE,FINCPROC [ POINTER TO FINCPROC FOR P D CASE
3RKQ LDX 0 INCUNFIN(1)
3S5B ADX 0 FINCTRD(1) [ NO OF TTTP REDUMPED INCREMENTS
3SK2 SMO FX2
3T4L LDX 1 ACOMMUNE1
3TJ= BNZ 0 REDUMPED [ JUMP IF TO BE REDUMPED INCREMENTS
3W3W NOREDUMPED
3WHG EXIT 4 1 [ EXIT 1 IF NO INCS T B REDUMPED
3X36 REDUMPED
3XGQ EXIT 4 0 [ OTHERWISE EXIT 0
3Y2B TIMESTART [SR TO START TIMING A DELAY FOR STATS.
3YG2 [CALLED ON X7. ON EXIT X1->FINC
3Y^L CALL 0 XLOCFINC [X1->FINC
3^F= LDX 0 CLEANCT
3^YW STO 0 INCTIMING(1)
42DG EXIT 7 0
42Y6 #
43CQ #
43XB TIMEND [SR TO WIND UP TIMING OF DELAY FOR STATS.
44C2 [CALLED ON X7,ON EXIT X1->FINC,X0=TIME
44WL CALL 0 XLOCFINC [X1->FINC
45B= LDX 0 CLEANCT
45TW SBX 0 INCTIMING(1)
46*G BPZ 0 NMIDNIGHT [J IF IT DIDNT HAPPEN OVER MIDNIGHT
46T6 SMO FX1
47#Q ADX 0 NCLEANDAY [ADD A DAYS CLEANCTS
47SB NMIDNIGHT
48#2 EXIT 7 0
48RL #
49?= #
49QW NEXTNAME [S/R TO SKIP BLOCK INDEX AND TRAP RECS OF A DIR ENT
4==G [ON ENTRY, X3->NAME RECORD
4=Q6 [CALLED ON X4
4?9Q [ON EXIT, DIR POSITIONED BEFORE NEXT NAME REC
4?PB [USES X0 AND X5
4#92 LDEX 5 ECOPSN(3) [GET NO OF BLOCKS RECS
4#NL ADX 5 ENUSEN(3) [ADD NO OF TRAPS
4*8= JBC NOTIND,3,BNINDEX [J IF NOT INDEXED
4*MW ADN 5 1 [ADD 1 FOR INDEX REC
4B7G NOTIND
4BM6 BZE 5 XPOS [J IF ALREADY POSITIONED
4C6Q SBX 4 FX1
4CLB MSKIP
4D62 STEP [STEP A RECORD
4DKL BZE 3 XCORRUPT [J IF UNEXPECTED EOF
4F5= BCT 5 MSKIP [J IF MORE RECS TO SKIP
4FJW ADX 4 FX1
4G4G XPOS
4GJ6 EXIT 4 0
4H3Q #
4HHB #
4J32 #
4NX= RESTARTFREE [FREES ALL RESTART BLOCKS SET UP BY RESTARTDATA
4PBW [CALLED ON X4
4PWG HUNTW 3,FI,FDUMPFAB
4QB6 BNG 3 (4)
4QTQ FREECORE 3
4R*B BRN RESTARTFREE
4RT2 #
4S#L #
4SS= #
4T?W #
4TRG TREEDECR [DECREASE NO. OF LEVELS IN FABSNB BY 1 .
4W?6 [ON ENTRY, X4 IS S/R LINK.
4WQQ [ON EXIT, X1->FABSNB. USES X0.
4X=B [BRANCHES TO END OF INCREMENT IF WOULD EMPTY FABS.
4XQ2 MHUNTW 1,FILE,FABSNB [X1-> FABSNB
4Y9L LDX 0 A1(1)
4YP= SBN 0 6 [DECREASE REC. HEADER
4^8W BNG 0 MASFIN [J IF FABSNB EMPTY
4^NG STO 0 A1(1)
5286 EXIT 4 0
52MQ #
537B #
5PL6 SETESFS [SETS UP WORD A1(ESF SENT),WORD A1+1 & ZEROISES LOCAL NAM
5Q5Q [OF QUALIFIER BLOCK.
5QKB [ON ENTRY, X6= NO. OF BLOCKS WRITTEN SINCE LAST SENTINEL.
5R52 [ X4 IS S/R LINK.
5RJL [ON EXIT, X3->QUALIFIER BLOCK, X6= NO. OF BLOCKS WRITTEN.
5S4= [ USES X0 & X1.
5SHW MHUNTW 3,FILE,FQUAL [X3-> FQUAL BLOCK
5T3G LDCT 0 #400
5TH6 STO 0 ESENTYP(3) [SET 'END OF SUBFILE SENTINEL'
5W2Q STOZ ESENBP(3) [ZEROISE WORD 1 OF SENTINEL
5WGB LDN 0 ESENBP(3)
5X22 LDN 1 ESENBP+1(3)
5XFL MOVE 0 18 [ZEROISE REST OF SENTINEL
5X^= SMO FX2
5YDW LDX 0 AWORK1 [SET BLOCK NO. IN ESFS SAME AS IN BSF
5YYG STO 0 ESENFN(3)
5^D6 STO 6 ESENBP(3) [SET UP NO. OF BLOCKS WRITTEN
5^XQ EXIT 4 0
62CB #
62X2 #
63BL # FINDS A FILE/ENT BLOCK, WRIITES TO IT DUMPING INFORMATION, REMOVES
63W= # TO-BE-DUMPED BIT & SETS MK 6+ FORMAT BIT.
64*W # IT THEN REWRITES THE RECORD, ASSUMING THE DIR TO BE POSITONED
64TG # ON ENTRY, X4 IS S/R LINK.
65*6 PINFORM
65SQ SBX 4 FX1
66#B LDX 2 FX2
66S2 MHUNTW 3,FILE,ENT [X3-> ENT BLOCK
67?L NAME 3,FILE,FWB [RENAME ENTRY AS FWB
67R= CALL 0 XLOCFINC [X1->FINC
68=W ... JBS NOUPDATE,1,BINCRFAIL [DONT UPDATE DIRENT IF FAILED FILE
68QG JBS PMISS,3,BEREVERE [J IF "REVERE" FILE
69=6 MBC 3,BEDUMP,BEDIRDUMP [CLEAR "TO-BE-DUMPED" &
69PQ [ "DUMP EVEN IN DIR. ONLY INCR." BI
6=9B PMISS
6=P2 BC 3,BEPFCC [CLEAR "PFCCS REQUIRED" BIT
6?8L BS 3,BEDUMP6 [SET "MK6+ DUMP FORMAT" BIT
6#7W FC 3,FEFSNO [CLEAR 'ALIEN FILE' FIELD
6#MG
6*76 LDX 0 EDATE
6*LQ STO 0 EDLD(3) [SET _UP DATE OF LAST DUMP
6B6B LDX 0 CLEANCT
6BL2 STO 0 ETLD(3) [ AND TIME
6C5L LDX 5 INCNO(1)
6CK= LDX 0 EUSE1(3)
6D4W BZE 0 NDIR [J IF NOT A DIR
6DJG DOWN INCVFCHK,5 [ FINDFCB AND CLEAR BIT
6F46 MHUNTW 3,FILE,FWB
6FHQ CALL 0 XLOCFINC [ POINTER TO FINC
6G3B STO 5 EINCLOOK(3) [UPDATE INCR LAST SCANNED
6GH2 JBC NGENR,1,BINCGENRES [J IF NOT POT GEN RES
6GKK ...#UNS AMTGR
6GN8 ... BRN NRESTART [ NO LONGER ANY RESTART FOR DIRS
6GQR ...#UNS AMTGR
6GTB ...#SKI
6GX^ ...(
6H2L JBC NRESTART,1,BINCDUMP [UNLESS WE HAVE DUMPED :DUMPER
6HG= [WE DO NOT TAKE RESTART DATA FOR
6H^W [DIRECTORIES.
6J9N ...)
6JFG NDIR
6J^6 JBC NRESTART,,BPARALLEL [J IF NOT IN PARALLEL MODE
6KDQ JBS NRESTART,,BFILEINC [IF WE HAVE DUMPED A
6KYB DOWN INCEOT,9 [FILE ON THE RESTORABLE INCR
6LD2 MHUNTW 3,FILE,FWB [OF A PARALLEL DUMP WE MUST RECORD
6LXL ... CALL 0 XLOCFINC [THE PREVIOUS DUMPING DETAILS IN CASE
6MC= [A TAPE EVENT ON THE FILE-ONLY INCR
6MWW [FORCES US TO UNDUMP THE FILE.
6NBG NRESTART
6NW6 STO 5 EINC(3) [UPDATE INCR LAST DUMPED
6P*Q LDX 0 AWORK1(2)
6PTB STO 0 EFILNUM(3) [UPDATE FILE NUMBER
6Q*2 LDN 0 1
6QSL ADS 0 INCFILNUM(1) [UPDATE COUNT OF FILES DUMPED
6R#= NGENR
6RRW REWRITE [REWRITE NAME REC.
6S?G NOUPDATE
6SR6 ADX 4 FX1
6T=Q EXIT 4 0
6TQB #
7S36 #
7SGQ #
7T2B XKEEPBUFS [SETS KEEP USAGE BLOCKS MARKER FOR TOP FILE
7TG2 [ON ENTRY X2=FX2, ON EXIT X2=FCB
7T^L TOPFCB2 2
7WF= LDX 0 FBLMOD(2) [IF DIR TOO BIG DONT KEEP U.B. S
7WYW SEGENTRY INCDIRLIM [ALLOW MODIFICATION OF LIMIT
7XDG SBN 0 FBLKS-A1+1
7XY6 BPZ 0 (4) [EXIT IF TOO BIG
7YCQ BS 2,BFCORE
7YXB EXIT 4 0
7^C2 #
7^WL #
82B= X1INCWRITE
82TW MHUNTW 3,FILE,FINC [CHECK EOT/FAIL DIDNT OCCURR
83*G [WHILE WRITING ANY START SENTINELS
83T6 LDX 0 INCACT(3)
84#Q BNZ 0 MTEOT [J IF TAPE EVENT
84SB JBC NEOT1,,BPARALLEL [J IF TWO INCS
85#2 HUNT2 3,FILE,FINC [X3->2ND FINC
85RL LDX 0 INCACT(3)
86?= BNZ 0 MTEOT [J IF ENDOF TAPE/FAIL
86QW NEOT1
87=G BC ,BFILEINC [ENSURE FILE INCR MARKER CLEAR
87Q6 LDN 5 0 [SET UP ENVIRONMENT TO ENTER MAIN
889Q LDN 6 0 [LOOP CODE AS IF CLIMBING UP TREE
88PB STOZ AWORK1(2) [FROM INFERIOR
8992 BRN X1ENT
89NL
8=8= #
8=MW # PASS 1 SCANS THROUGH THE DIR OPEN ON ENTRY
8?7G # IF IT FINDS ANY INFERIOR USERS, IT CLOSES THE DIR
8?M6 # AND GOES DOWN TO DEAL WITH THEM
8#6Q #
8#LB PASS1
8*62 # SKIP FIRST PASS IF THERE NO INFERIORS
8*KL TOPFCB 3 [ X3 POINTS TO FCB OF DIRECTORY
8B5= TRACEIF K6INCWRITE,199,299,FME1(3),USER
8BJW TRACEIF K6INCWRITE,199,299,COMM(3),COMM
8C4G JBC PASS2,3,BFDIRBELOW [ JUMP IF TERMINAL
8CJ6 TRACEIF K6INCWRITE,199,299,FME1(3),PASS1
8D3Q PASS1NXTREC
8DHB STEP [X3->NEXT NAME REC
8F32 PASS1B [OCCASIONAL RE-ENTRY HERE
8FGL [FROM PASS 3
8G2= BZE 3 PASS2 [J IF EOF
8GFW BWNZ ERESN(3),XCORRUPT [J IF NOT NAME REC
8G^G BWZ EUSE1N(3),NODUMP1 [J IF NOT A DIR
8HF6 JBS NODUMP1,3,BNTEMP [J IF TEMPORARY
8HYQ JBS XERASDIR,3,BNERASE [J IF MARKED TO-BE-ERASED
8JDB MHUNTW 1,FILE,FINC
8JY2 LDX 5 EINCLOOKN(3) [GET INCR NO WE LAST LOOKED HERE
8KCL BXE 5 INCNO(1),NODUMP1 [J IF IT WAS THIS INCR
8KF* ...#UNS AMTGR
8KH4 ...(
8KJR ... JBC NMTGR,,BMTGR
8KLG ... LDX 1 FX1
8KN9 ... TESTNAME 3,EUSE1N(3),MSYST(1) [TEST DIR = SYSTEM
8KPY ... BNZ 7 NEXTDOWN [J. DIR = SYSTEM
8KRM ...NMTGR
8KTB ...)
8KX= MHUNTW 1,FILE,FINCPROC
8LBW CALL 4 XCHECKBAT [WAS IT A PREV. INCR IN BATCH
8LWG BRN RELI [IF IT WAS, J TO CHECK
8MB6 [ON ITS RELIABILITY
8MTQ NEXTDOWN [NO, SO WE DEAL WITH IT
8N*B # ON NON-RESTOREABLE INCREMENTS WE DO NOT OPEN EMPTY DIRECTORIES
8NT2 # OR TERMINAL DIRECTORIES WITH NO TO BE DUMPED FILES
8P#L MHUNTW 1,FILE,FINC
8PS= JMBS PASS1DOWN,1,BINCGENRES,BINCTOTD
8Q?W [ JUMP IF RESTOREABLE INCREMENT
8QRG [ OR DUMP TOTAL
8R?6 LDX 0 ECOPSN(3)
8RQQ SRL 0 15
8S=B BZE 0 NODUMP1 [ SKIP EMPTY DIRECTORY
8SQ2 JMBS PASS1DOWN,3,BNDIRBELOW,BNDUMP
8T9L # JUMP IF INFERIORS OR FILES TO BE DUMPED
8TP= # OPEN DIRECTORY
8W8W CALL 4 XCHECKTTTP [ ANY TTTP-REDUMPED INCREMENTS ?
8WNG BRN PASS1DOWN [ YES OPEN DIRECTORY
8X86 BRN NODUMP1 [ NO SKIP IT
8XMQ PASS1DOWN
8Y7B MHUNTW 1,FILE,FINC
8YM2 JBS NOSENT1,1,BINCCMPSENT [J IF COMP S/F SENT ALEADY
8^6L JBC NOSENT1,1,BINCGENRES [J IF NOT POT GEN RES
8^G* ... DOWN INCMON,4 [SET UP START OF COMP S/F
8^W4 ... [AND WRITE IT
923X ... BRN MTEOT1
929R ... MHUNTW 1,FILE,FINC
92KG NOSENT1
9356 BC 1,BINCCMPSENT [CLEAR COMP S/F BIT
93JQ READAGAIN [GET FILE/ENT FOR USE IN OPENREL
944B MHUNTW 3,FILE,FRB
94J2 NAME 3,FILE,ENT
953L #
95H= # SET UP FLOCNB FROM ENT AND OPEN INFERIOR DIR
962W #
96GG MHUNTW 2,FILE,FLOCNB [X2->FLOCNB
9726 TRACEIF K6INCWRITE,199,299,EUSE1(3),INC DIR
97FQ LDX 1 HCOLUSER
97^B STO 1 A1(2) [A1 OF FLOCNB ) 4H000:
98F2 LDN 0 EUSE1(3)
98YL LDN 1 A1+1(2)
99D= MOVE 0 3 [MOVE ACROSS USERNAME
99XW STOZ A1+4(2)
9=CG STOZ A1+5(2)
9=X6 TOPFCB 3
9?BQ BC 3,BFCORE [CLEAR THIS BIT A S CLOSE DOESNT
9?WB CALL 7 TIMESTART [START TIMING OPEN DELAY
9#B2 OPENRELN NOBREAK,CLEAN
9#TL CALL 7 TIMEND [UPDATE TIME SPENT WAITING FOR DIRS
9**= ADS 0 INCDIRWAIT(1)
9*SW CALL 4 XKEEPBUFS [KEEP ITS SAGE BLOCKS
9B#G MHUNTW 3,FILE,FABSNB [X3->FABS
9BS6 LDX 5 A1(3) [X5 IS RECORD HEADER
9C?Q LDX 0 ALOGLEN(3)
9CRB ADN 5 6
9D?2 BXGE 0 5,NAMESUFF [J IF FABS BIG ENOUGH
9DQL ALTLENG 3,5,SFINDFABS [INCREASE FABS
9F== MHUNTW 3,FILE,FABSNB [X3->FABSNB
9FPW NAMESUFF
9G9G STO 5 A1(3) [UPDATE RECORD HEADER
9GP6 SMO 5
9H8Q LDN 2 A1-6(3)
9HNB MHUNTW 1,FILE,FLOCNB
9J82 ADN 1 A1
9JML MOVE 1 6 [UPDATE FABS WITH NEW NAME
9K7= BRN PASS1 [START PASS 1 FOR THIS NEW DIR
9KLW NODUMP1
9L6G CALL 4 NEXTNAME [SKIP TO NEXT NAME REC
9LL6 BRN PASS1NXTREC
9M5Q RELI CALL 4 XCHECKREL [CHECK IF INCR WAS RELIABLE
9MKB BRN NEXTDOWN [IF NOT (MARKED AS UNRELIABLE)
9N52 [GO DOWN AND DEAL WITH IT
9NJL BRN NODUMP1 [IF IT WAS, SKIP DIRECTORY
9P4= XERASDIR
9PHW JBC NODUMP1,,BFERUS [IGNORE T.B.ERASED DIRS IF
9Q3G [FERUS NOT SET UP. CAN HAPPEN IF
9QH6 [INCREMENT NOT POTENTIALLY SUIT
9R2Q [FOR GENRES
9RGB DOWN INCEOT,3 [GO TO DEAL WITH TO-BE-ERASED USER
9S22 STEPAGAIN [X3->ENTRY
9SFL BRN NODUMP1 [GO TO EXAMINE MORE DIR ENTRIES
9S^= #
9TDW # PASS 2 DUMPS ANY TERMINAL FILES NEEDING DUMPING
9TYG # IT DOES NOT CLOSE THE DIR AS IT DOES SO.
9WD6 #
9WXQ PASS2
9XCB REWIND [REWIND DIR.
9XX2 TOPFCB2 3 [X3->FCB OF DIR
9YBL BS 3,BFFREZ [SET 'FROZEN BY DUMPER' BIT IN FCB
9YW= FON 6
9^*W [WAIT UP ANY WAITERS SOTHEY CAN OUTPU
9^TG [WAITING MESSAGE
=2*6 MHUNTW 1,FILE,FINC
=2SQ MBC 1,BINCGETDIR,BINCTERMINL,BINCMDUMP
=3#B # CLEAR ALL BITS - WE HAVE7NT DUMPED A TERMINAL FILE OR "GETDIR" EDA
=3S2 JBS PASS2YES,1,BINCTOTD
=4?L [ SEARCH IF DUMP TOTAL
=4R= # SEARCH IF THERE ARE TO BE DUMPED FILES
=5=W JBS PASS2YES,3,BFDUMP [ FILES TO BE DUMPED ??
=5QG CALL 4 XCHECKTTTP [ TTTP REDUMPED INCREMENTS
=6=6 BRN PASS2YES [ YES SEARCH
=6PQ JBC PASS3,1,BINCGENRES [ NO - SKIP IF NOT RESTOREABLE
=79B JBS PASS2YES,3,BFALLINCS [ MUST SEARCH - ALWAYS DUMP
=7P2 JBC PASS3,3,BFJOB4ASTR [ NO USER JOBLIST DONT SEAR
=88L DOWN INCVFCHK,7 [DOES A GETDIR TO FIND JOBL
=8N= TOPFCB2 3 [ GET FCB AGAIN
=97W PASS2YES
=9MG TRACEIF K6INCWRITE,199,299,FME1(3),USER
==76 TRACEIF K6INCWRITE,199,299,COMM(3),PASS2
==LQ TRACEIF K6INCWRITE,199,299,INCREPLY(1),INCREPLY
=?6B TRACEIF K6INCWRITE,199,299,INCUNFIN(1),INCUNFIN
=?L2 JBS NAME2,1,BINCGENRES
=#5L BC 3,BFCORE [IF LAST PASS DONT KEEP USAGE BLOCKS
=#K= NAME2
=*4W STEP [X3->NEXT NAME REC
=*JG BZE 3 PASS2STATS [ CALCULATE INFO ON PASS2 DIRS
=B46 LDX 0 ELANN(3)
=BHQ SMO FX1
=C3B BXE 0 YB5B1,YJDF [ TREAT JDF AS PERMANENT
=CH2 JBS NODUMP2,3,BNTEMP [ JUMP IF TEMPORARY
=D2L YJDF
=DG= BWZ EUSE1N(3),TERMINAL [ JUMP IF A TERMINAL FILE
=D^W NODUMP2
=FFG CALL 4 NEXTNAME [ SKIP TO NEXT ENTRY
=F^6 BRN NAME2
=GDQ XCORRUPT
=GYB GEOERR BRIEFPM,DIRWRONG [ UNEXPECTED END OF DIRECTORY
=HD2 TERMINAL [WE HAVE A TERMINAL FILE
=HXL LDN 1 0
=JC= JBC NINDEX2,3,BNINDEX [ JUMP IF NOT INDEXED
=JWW LDX 1 EINDEXN(3) [ PICK UP INDEX NO
=KBG NINDEX2
=KW6 STO 1 AWORK3(2) [ STORE INDEX NO IN AWORK3 OR ZERO
=L*Q BWNZ ESAVECOUNTN(3),SVFRZ [T-B-E FILES DUMPED IF SAVEFROZEN
=LTB JBS NODUMP2,3,BNERASE [J IF TO-BE-ERASED
=M*2 SVFRZ
=MSL MHUNTW 1,FILE,FINCPROC
=N#= LDX 5 EINCN(3) [X5=INCR LAST DUMPED
=NRW JBS TGENR,3,BNALLINCS [J IF A VSF
=P?G JBS YDUMP2,3,BNDIRDUMP [J IF MUST DUMP EVEN IF ITS
=PR6 [A DIR ONLY DUMP
=Q=Q #UNS FTS2REVERT
=QQB JFNZ ZALIENFILE1,3,FNFSNO [DONT CHECK INCNUM OF ALIEN FILES
=R=2 CALL 4 XCHECKREL [IS IT IN A TO-BE-REDUMPED INCR
=RPL [IE AN INCOMPLETE OR UNRELIABLE INCR
=S9= BRN NOTFIN [J IF SO
=SNW CALL 4 XCHECKRD [IS INCR TO BE REDUMPED FOR TTTP
=T8G BRN YDUMP2 [J IF SO
=TN6 ZALIENFILE1
=TXY ... JBS YDUMP2,3,BNDUMP [ALWAYS DUMP IF T.B.D.
=W7Q MHUNTW 1,FILE,FINC
=WF6 ... JBC NODUMP2,1,BINCTOTD [OTHERWISE DUMP IF AND ONLY IF TOTAL
=WQG ... MHUNTW 1,FILE,FINCPROC [DUMP AND FILE NOT ALREADY DUMPED
=X3W ... CALL 4 XCHECKBAT [IN THIS BATCH OF INCS
=X*= ... BRN NODUMP2
=XDB ... MHUNTW 1,FILE,FINC [ THE PARALLEL FILES ONLY INCS
=XHG ... BXGE 5 INCNO(1),NODUMP2 [ AREN'T COUNTED AS IN THIS BATCH
=XLL YDUMP2
=Y6= LDN 5 0 [FILE OFFLINE MARKER
=YKW LDEX 0 ECOPSN(3)
=YP2 ...# THIS CODE IS TO CORRECT BUG 1878
=YS6 ...# IF A DIRECTORY CONTAINS OFF-LINE FILES MARKED
=YX= ...# TO-BE-DUMPED , ENSURE THE TO-BE-DUMPED BIT IS
=^2B ...# NOT CLEARED IN THE DIRECTORY'S DIR. ENTRY.
=^5G ...#
=^8L ... BNZ 0 NOTOFL [FILE IS ON-LINE AND NEEDS DUMPING
=^?Q ...YDUMP6
=^BW ... CALL 0 XFDUMPCOM [X1 -> FI/FDUMPCOM
=^G2 ... BS 1,BFDUMPCOM [SET TO STOP 'BEDUMP'BEING CLEARED
=^K6 ... MHUNTW 1,FILE,FINC
=^N= ... BS 1,BINCMDUMP
=^RB ... LDN 5 0
=^WG ... BRN XOFFLINE
=^^L ...# ----------------------------------------------------
?24Q NOTOFL
?2JB JMBS REVCARE,3,BNREVERE,BNCARE
?342 [J IF CAREFUL OR REVERED
?3HL JBS XOPEN,3,BNUWB [J IF OPEN UNCLEANLY
?43= #
?4GW #
?52G REVCARE [ONLINE AND MUST DUMP
#87G DOWN INCMON,2 [DOWN TO DUMP FILE NOT OPEN
#8M6 ... BRN XINCEND [EOT OR FAIL EXIT
#96Q ... LDX 0 ACOMMUNE1(2) [RESET AWORK1
#9LB ... STO 0 AWORK1(2) [FROM INCMON
#=62 POSIT [BACKSPACE OVER BLOCKS AND INDEX RECS
#=KL BACKSPACE [A B/SPACE FOR THE BLOCKS REC
#?5= BWZ AWORK3(2),POSOK [J IF NOT INDEXED
#?JW BACKSPACE [A B/SPACE FOR THE INDEX REC
##4G POSOK
##J6 CALL 4 PINFORM [REWRITE UPDATED DIR ENTRY
#*3Q BC ,BFILEINC [CLEAR FILEONLY INCR MARKER
#*HB MFREEW FILE,FWB
#B32 STEPAGAIN [ GET POINTER TO RECORD
#BGL MHUNTW 1,FILE,FINC
#C2= JBS PASS3,1,BINCGETDIR [ SKIP REST OF SEARCH I
#C7D ... CALL 0 XLOCFINC [IF CORRUPT FILE,ENSURE PREVIOUS
#C#L ... JBSC XOFFLINE,1,BINCRFAIL [INCREMENT FOR FILE NOT OBSOLETE
#CFW BRN NODUMP2
#C^G NOTFIN
#DF6 LDN 5 0 [SET "FILE OFFLINE" MARKER
#DYQ LDEX 0 ECOPSN(3)
#FDB ... BZE 0 YDUMP6 [J IF FILE OFFLINE
#FY2 STEPREWRITE [REWRITE DIR. ENTRY (CLEAN - NOT CARE
#GCL [DON'T WANT AUTON. CLOSE ACTS. SET UP
#GX= BS 3,BNDUMP [SET "TO-BE-DUMPED" BIT
#HBW [- HAS TO BE SET THEN SINCE OTHERWISE
#HWG [FILE IS OPEN FOR WRITING WE FORGET I
#JB6 [IS TO BE REDUMPED (INCR. RECORD DELE
#JTQ [AT END OF BATCH)
#K*B MHUNTW 1,FILE,FINC
#KT2 BS 1,BINCMDUMP
#L#L BRN NOTOFL [J TO DUMP FILE IF POSSIBLE
#LS= TGENR
#M?W MHUNTW 1,FILE,FINC
#MRG JBS YDUMP2,1,BINCGENRES [DUMP VSF IF POT GEN RES
#N?6 BRN NODUMP2 [BUT NOT OTHERWISE
#NQQ XOPEN
#P=B CALL 0 XFDUMPCOM [ X1-> FI FDUMPCOM
#PQ2 # FILE WAS OPEN UNCLEANLY SO WE HAVE TO
#Q9L # SET BFDUMPCOM BIT TO PREVENT BEDUMP BIT IN DIRECTORY BEING CLEARED
#QP= BS 1,BFDUMPCOM
#R8W LDN 5 1 [SET "FILE OPEN FOR WRITING" MARKER
#RNG XOFFLINE
#S86 #UNS FTS2REVERT
#SMQ JFNZ NODUMP2,3,FNFSNO [IGNORE IF ALIEN FILE
#T7B HUNTW 1,FILE,FINCPROC [X1-> FINCPROC BLOCK (IF ANY)
#TM2 BNG 1 NODUMP2
#W6L LDX 7 FINCTRD(1) [NO OF TTP REDUMPED INCS
#WL= BZE 7 NODUMP2 [J IF NONE
#X5W LDX 4 EINCN(3) [X4=INCR NO
#XKG NPROC
#Y56 SMO 7
#YJQ BXE 4 INCLISTS-1(1),PROC [J IF INCR TO BE REDUMPED FOR TTTP
#^4B BCT 7 NPROC [J IF MORE PROCESSED INCR. NOS. TO SE
#^J2 BRN NODUMP2
*23L PROC
*2H= DOWN INCPROC,1 [DEAL WITH FILE DUMPED IN PROCESSED I
*32W STEPAGAIN
*3GG BRN NODUMP2
*426 PASS2STATS
*4FQ MHUNTW 1,FILE,FINC
*4^B TOPFCB 2 [
*5F2 LDX 6 FBLMOD(2) [
*5YL SBN 6 FBLKS-A1 [ SIZE OF DIRECTORY
*6D= JBS TERMIFILES,1,BINCTERMINL
*6XW # DIRECTORY SEARCHED IN VAIN FOR FILES TO DUMP
*7CG ADS 6 INCDIRNVAIN(1) [
*7X6 TERMIFILES
*8BQ ADS 6 INCDIRSRCH(1) [
*8WB #
*9B2 # PASS 3 DUMPS THE DIR AND CLOSES IT, RETURNING UP THE TREE
*9TL # TO RESUME PASS 1 OF THE SUP DIR(IF IT STILL EXISTS)
*=*= #
*=SW PASS3
*?#G LDX 2 FX2
*?S6 MHUNTW 1,FILE,FINC
*#?Q JBC NODUMP3,1,BINCGENRES [J IF NOT POT GEN RES
*#RB JBC NOPLL3,,BPARALLEL [J IF NOT IN PLL MODE
*#X? ...#UNS AMTGR
**38 ...#SKI
**75 ...(
**?2 MHUNTW 2,FILE,FABSNB
**QL ADX 2 A1(2)
*B== LDX 3 FX1
*BPW TESTNAMX 3,MDUMP(3),A1-5(2),NDUMPER [J IF NOT :DUMPER
*C9G BS 1,BINCDUMP [SHOW DUMPER HAS BEEN DUMPED
*CP6 BRN YDUMPER
*D8Q NDUMPER
*DNB TESTNAMX 3,MMAST(3),A1-5(2),NMASTER [J IF NOT : ASTER
*F82 BC 1,BINCDUMP [FORGET HAVE DUMPED :DUMPER
*FML NMASTER
*G7= JBS YDUMPER,1,BINCDUMP [UNLESS HAVE DUMPED DUMPER OR ARE
*GLW CALL 4 RESTARTFREE [ABOUT TO FORGET ANY RESTARTDATA
*H6G BRN RFREEDATA
*HL6 YDUMPER [ONCE FILES UNDER :DUMPER ARE DUMPED NO FILE ONLY INCR
*J5Q [CAN BE SET UP WITHOUT REWINDING RESTORABLE INCR TO
*JKB [BEFORE DUMPER AS DUMPER MIGHT NOT REFLECT ITS EXISTENCE
*K52 [THEREFORE ONCE DUMPER IS PASSED WE REMEMBER ALL DUMPED
*KJL [FILES AND DIRS WHICH MAY NEED DEUPDATING
*L4= CALL 4 RESTARTDATA
*L87 ...)
*L#4 ...#UNS AMTGR
*LC^ ... CALL 4 RESTARTFREE
*LHW RFREEDATA
*M3G MHUNTW 1,FILE,FINC
*MH6 LDX 2 FX2
*N2Q NOPLL3
*XSQ DOWN INCMON,1 [DOWN TO DUMP FILE OPEN
*Y9= ... BRN XINCEND [EOT OR FAIL EXIT
*YKQ ... LDX 0 ACOMMUNE1(2) [RESET AWORK1
*^2= ... STO 0 AWORK1(2) [FROM INCMON
*^BQ ... MHUNTW 1,FILE,FINC
*^R= NODUMP3
B2=W BS 1,BINCCMPSENT [SET COMP S/F BIT FOR SUP DIR
B2QG TOPFCB2 1 [X1->FCB
B3=6 BC 1,BFFREZ [REMOVE FROZEN BY DUMPER BIT
B3PQ MHUNTW 2,FILE,FLOCNB [X2->FLOCNB
B49B ADN 1 FLOC1
B4P2 ADN 2 A1
B58L MOVE 1 3 [SET UP FLOCNB FROM FCB
B5N= LDN 0 1
B67W STO 0 3(2) [REEL=1
B6MG STO 0 4(2) [LANG=1
B776 SMO FX1
B7LQ LDX 0 MLANCOMP
B86B STO 0 5(2) [LANG=C1
B8L2 CALL 0 XFDUMPCOM [ XI -> FI FDUMPCOM
B95L BC 1,BFDUMPCOM
B9K= TOPFCB 2
B=4W LDN 0 FREEL(2) [ MOVE LOCAL NAME
B=JG LDN 1 FDUMPUSER(1) [ INTO FDUMPCOM
B?46 MOVE 0 3 [
B?HQ CALL 7 TIMESTART [START TIMING DELAY
B#3B CLOSETHROW [CLOSE THE DIR
B#H2 LDN 5 1 [SET DIR JUST CLOSED MARKER
B*2L UPTREE
B*G= CALL 4 TREEDECR [SHRINK FABS FINISHING IF JUST
B*^W [CLOSED MASTER
BBFG X1ENT [X1 EVENTUALLY ENTERS HERE
BB^6 OPEN NOBREAK,CLEAN,QUERY [TRY AND OPEN SUP DIR
BCDQ TESTREP2 OK,REPOK3
BCYB [SUP DIR(S) ERASED
BD88 ... MHUNTW 1,FILE,FINC [HUNT FINC BLOCK
BDD2 LDN 5 0 [REMOVE DIR JUST CLOSED MARKER
BDXL JBC UPTREE,1,BINCGENRES [J IF NOT POT GEN RES
BFC= JBCS UPTREE,1,BINCCMPSENT [NECESSARY IF WE ENTER FRON X1
BFWW LDN 6 0 [ZERO FILE SIZE (FOR END C SF SENT
BGBG STOZ AWORK1(2) [ZERO FILE NUMBER
BGW6 CALL 4 SETESFS [SET UP END COMP S/F SENT
BH*Q ... DOWN INCMON,3 [WRITE AN ESFS
BHTB BRN UPTREE
BJ*2 REPOK3
BJSL CALL 4 XKEEPBUFS [KEEP USAGE BLOCKS
BK#= BZE 5 PASS1 [J IF HAVE COME UP >1 LEVEL
BKRW GETDIR 1 [POSITION DIR ON BLOCKS REC OF DIR
BL?G [JUST DUMPED
BLR6 CALL 7 TIMEND [ UPDATE TIME WAITING
BM=Q ADS 0 INCDIRWAIT(1)
BMQB TESTREP2 OK,XCHECKDIR [IF OK, CHECK ITS STILL A DIR
BN=2 TOPASS1
BNPL STEPAGAIN [X3->NEXT NAME REC FOR PASS1
BP9= BRN PASS1B
BPNW XCHECKDIR
BQ8G MHUNTW 3,FILE,ENT [X3->FILE/ ENT
BQN6 MHUNTW 1,FILE,FABSNB
BR7Q LDN 2 3
BRMB ADX 1 A1(1) [NOW A1+1(1)-A1+3(1) IS USERNAME DUMP
BS72 USNAMCH [CHECK STILL SAME DIR
BSLL SMO 2
BT6= LDX 0 A1(1)
BTKW SMO 2
BW5G ERX 0 EUSE1-1(3)
BWK6 BNZ 0 NOT [J IF USERNAME CHANGED
BX4Q BCT 2 USNAMCH
BXJB CALL 4 PINFORM [REWRITE UPDATED FILE/ENT
BY42 MHUNTW 3,FILE,FWB
BYHL ADN 3 A1 [X3->NAME REC
B^3= CALL 4 NEXTNAME [SKIP TO NEXT NAME REC
B^GW MFREEW FILE,FWB
C22G BRN PASS1 [RE ENTER PASS1
C2G6 NOT [DIRECTORY HAS BEEN REPLACED
C2^Q MFREEW FILE,ENT [BY FILE OR DIR OF SAME LOCAL NAME
C3FB BRN TOPASS1 [RE-ENTER PASS1
C3^2 #
C4DL #
C4Y= MASFIN [END OF BATCH
C5CW MHUNTW 1,FILE,FINC
C5XG MBS 1,BINCENDBAT,BINCFIN [SHOW INC FINISHED AND EN BATCH
C6C6 JBC NPLLFIN,,BPARALLEL [DO SAME FOR 2ND INC IF PLL DUMP
C6WQ HUNT2 1,FILE,FINC,1
C7BB MBS 1,BINCENDBAT,BINCFIN
C7W2 NPLLFIN
C8*L ... DOWN INCMON,5
C8T= ...XINCEND
C9#W ... ACROSS INCEND,1
CY?= #
D29Q #
D2PB #
D392 MTEOT
D3DR ... DOWN INCMON,7
D3NK ...MTEOT1
D3TS ... ACROSS INCEND,1
D48= #
D4MW NOBREAK
D57G GEOERR BRIEFPM,INCBREAK [DUMPER CANT BE BROKEN IN ON
D5M6 #
D66Q MENDAREA 40,K99INCWRITE
D6LB #END
^^^^ ...547320420008