22FL ... SEG RESTEND,850,PETER CAMPBELL,RESTORE 22^= # 23DW SEGENTRY K1RESTEND 23YG # 24D6 # THIS SEGMENT ENABLES COPIES OF INCREMENT DUMP TAPES TO BE MADE 24XQ # IT USES THE NUMBER OF THE INCREMENT DUMP TAPE USED TO RESTORE THE 25CB # FILESTORE. IT CHECKS WHETHER THE NUMBER ALREADY EXISTS IN FILE 25X2 # SYSTEM.INCINDEX AND IF NOT FINDS A TAPE WHICH MAY BE A COPY OF THIS 26BL # TAPE AND REPLACES IT IN INCINDEX,SERIAL AND DUMPER FILES UNDER 26W= # SYSTEM. 27*W # 27TG # ENTRY THIS SEGMENT IS ENTERED FROM RESTOREG WHEN THE 28*6 # FILESTORE HAS BEEN RESTORED. 28SQ # A BLOCK TYPE FILE/FINTER7 HAS BEEN SET UP CONTAINING 29#B # A1 FIRST INCREMENT ON TAPE 29S2 # A1+1 CURRENT INCREMENT ON TAPE 2=?L # A1+2 CURRENT TSN OF DUMP TAPE 2=R= # 2?=W # EXIT INCINDEX CONTAINS THE TSN OF THIS TAPE AS THE FIRST 2?QG # TSN IN THE RECORD FOR EACH INCREMENT UP TO THE CURRENT 2#=6 # ONE. 2#PQ # IT MAY HAVE REPLACED AN EXISTING TSN. 2*9B # THE TAPE NUMBER WILL ALSO EXIST IN SYSTEM.SERIAL AND 2*P2 # SYSTEM.DUMPER 2B8L # 2BN= # ERRORS IF THE CURRENT TAPE IS NOT COMPATIBLE WITH THE EXISTING 2C7W # FILESTORE AN ERROR MESSAGE WILL BE OUTPUT AND THE ROUTINE 2CMG # WILL EXIT UPPLUS 1 TO REPEAT THE MESSAGE 2D76 # 2DLQ # 2F6B # THIS SEGMENT IS ENTERED FROM RESTOREG 2FL2 # THIS SECTION OPENS INCINDEX AND CHECKS WHETHER THE INCREMENTSON 2G5L # THE TAPE ARE COMPATIBLE WITH THOSE IN INCINDEX AND WHETHER THIS 2GK= # TAPE IS ALREADY IN INCINDEX 2H4W # IF PRESENT X7=1 2HJG # IF NOT X7=0 2J46 # 2JHQ STOZ AWORK4(2) [ NEW TAPE INDICATOR 2K3B OPENINC ,GENERAL [OPEN INCINDEX 2KH2 OPENSYS XERROR2,SERIAL,GENERAL [OPEN SERIAL 2L2L FILEMOVE 0,1 [SERIAL NOW AT DEPTH 1 2LG= [INCINDEX AT DEPTH 0 2L^W STOZ 7 [SWITCH 2MFG STEP1 2M^6 STEP [READ NEXT RECORD 2NDQ BZE 3 TEST1 [END OF FILE 2NYB LDX 4 AINCNO-A1(3) 2PD2 MHUNTW 1,FILE,FINTER 2PXL TXU 4 FIRSTINC(1) 2QC= BCS NOTFIRST 2QWW LDEX 4 FRH(3) [ALTER BLOCK LENGTH 2RBG SBN 4 AMAG-A1 [AND STORE TAPE NOS. FROM INCINDEX 2RW6 LDX 6 4 2S*Q MHUNTW 3,FILE,FINTER7 2STB ADX 4 ALOGLEN(3) 2T*2 ALTLEN 3,4,FILE,FINTER7 2TSL STEPAGAIN 2W#= MHUNTW 2,FILE,FINTER7 [MOVE TSNS & STATE INFORM. TO FINTER7 2WRW LDN 0 AMAG-A1(3) 2X?G LDN 1 AMAGS(2) 2XR6 SMO 6 2Y=Q MOVE 0 0 2YQB NOTFIRST 2^=2 MHUNTW 2,FILE,FINTER7 2^PL LDX 6 CURRTSN(2) 329= CALL 2 TSN [SEE IF CURRENT TSN IN RECORD 32NW BRN STEP1 [NO 338G LDN 7 1 [YES SET SWITCH 33N6 #SKI K6RESTEND>100-100 347Q TRACEVER 4,INC1 34MB BRN STEP1 3572 # THIS SECTION TESTS WHETHER TAPE IS ALREADY KNOWN TO INCINDEX 35LL # IF SO GOES TO X1 366= TEST1 [END OF FILE 36KW #SKI K6RESTEND>100-100 375G ( 37K6 TRACEVER 7,ISTHERE? 384Q MHUNTW 1,FILE,FINTER7 38JB BLOCKTRA 1,FINTER7 3942 MHUNTW 1,FILE,FINTER 39HL BLOCKTRA 1,FINTER 3=3= ) 3=GW BNZ 7 X1 [TAPE ALREADY THERE 3?2G # IF TAPE IS NOT IN INCINDEX FURTHER CHECKING IS DONE 3?G6 # THE NEXT FEW LINES CHECK WHETHER THE TAPE IS IN SYSTEM.SERIAL 3?^Q MHUNTW 1,FILE,FINTER7 3#FB LDX 6 CURRTSN(1) 3#^2 CALL 4 SSER [SEARCH SERIAL FOR NEW TAPE 3*DL BRN NOTINSER [ J IF NOT KNOWN 3*Y= XER13 3BCW ACROSS RESTERR,13 [NEW TAPE ALREADY KNOWN TO SERIAL 3BXG # THIS SECTION OF PROGRAM DETERMINES WHETHER THERE IS A TAPE NO. 3CC6 # IN INCINDEX WHICH MAY BE A COPY OF THE CURRENT TSN. 3CWQ # IF ONE IS NOT FOUND AN ERROR IS REPORTED 3DBB # OTHERWISE THE NO. IS HELD IN X6. 3DW2 # 3F*L NOTINSER 3FT= LDN 7 0 [CLEAR SWITCH 3G#W NGN 4 INCMAGLEN [TSN MODIFIER 3GSG REWIND 3H#6 REWIND [REWIND INCINDEX 3HRQ ADN 4 INCMAGLEN [ADD MODIFIER 3J?B MHUNTW 1,FILE,FINTER7 3JR2 LDX 0 ALOGLEN(1) 3K=L SMO 4 3KQ= SBN 0 AMAGS-A1 3L9W BZE 0 XER14 [ERROR IF CAN'T FIND TAPE WITH SAME I 3LPG [ AS THAT RESTORED FROM 3M96 SMO 4 3MNQ LDX 6 AMAGS(1) [PICK UP NEXT TSN 3N8B LDN 5 0 [SET INC. MODIFIER 3NN2 STEP2 3P7L STEP [NEXT RECORD (INCREMENT) 3PM= BZE 3 TEST2 3Q6W CALL 2 TSN [IS THIS TSN IN THIS RECORD? 3QLG BRN STEP2 [NO 3R66 MHUNTW 1,FILE,FINTER 3RKQ SMO 5 3S5B LDX 0 FIRSTINC(1) 3SK2 BXU 0 AINCNO-A1(3),REWIND [J IF THIS TAPE DOES NOT CONTAIN REQU 3T4L [ INCRS. 3TJ= LDN 7 1 [SET SWITCH 3W3W ADN 5 1 [ADD 1 TO INC. MODIFIER 3WHG BRN STEP2 3X36 TEST2 3XGQ BZE 7 REWIND [TSN AS COPY NOT YET FOUND 3Y2B # THE TAPE SERIAL NO. FOUND AS A COPY IS REPLACED BY THE CURRENT 3YG2 # TSN IN SYSTEM.SERIAL AND SYSTEM.DUMPER. 3Y^L CALL 4 SSER [FIND THIS TAPE IN SERIAL 3^F= BRN XERROR3 [ERROR IF NOT THERE 3^YW READAGAIN 1 42DG MHUNTW 3,FILE,FRB 42Y6 NAME 3,FILE,FWB 43CQ MHUNTW 1,FILE,FINTER7 43XB LDX 5 6 [X5= TAPE TO BE REPLACED 44C2 LDX 6 CURRTSN(1) 44WL STO 6 A1+1(3) [REPLACE TSN 45B= DELETE 1 45TW CALL 4 SSER [FIND PLACE FOR NEW TAPE IN SERIAL 46*G BRN XCOPY 46T6 BRN XER13 [ERROR -COPY TAP5 KNOWN TO SERIAL 47#Q XCOPY 47SB INSERT 1 [INSERT NEW TAPE RECORD 48#2 MFREEW FILE,FWB 48RL DOWN INCTAPES,2 [OPEN :DUMPER IN GENERAL MODE 49?= STEP4 49QW STEP 4==G BZE 3 XERROR5 [J IF TSN NOT IN :DUMPER 4=Q6 LDX 0 ERES-A1(3) 4?9Q BNZ 0 STEP4 [J IF NOT NAME RECORD 4?PB BXU 5 ESER-A1(3),STEP4 [J 96 NOT R5QU9R5D TSN 4#92 MHUNTW 1,FILE,FINTER7 4#NL LDX 0 BMEREEL(1) [PICK UP THE REEL NO 4*8= STO 0 EREEL-A1(3) [ & INSERT IN DIR. ENTRY 4*MW LDX 0 BMEGEN(1) [ PICK UP THE GENERATION NO. 4B7G STO 0 EGEN-A1(3) [ & INSERT IN DIR. ENTRY 4BM6 STO 6 ESER-A1(3) [REPLACE TSN 4C6Q LDX 6 5 [X6= TAPE BEING REPLACED 4CLB STEPREWRITE [REWRITE RECORD 4D62 CLOSETOP [CLOSE :DUMPER 4DKL LDN 0 1 4F5= STO 0 AWORK4(2) [ COPY TAPE 4FJW # IN THE FILE SYSTEM.ININDEX THE RECORD FOR EACH INCREMENT ON THE 4G4G # CURRENT TAPE IS ALTERED. 4GJ6 # THE TSN FOR THE COPY OR THE CURRENT TSN ITSELF IF IT EXISTS IS 4H3Q # REMOVED AND THE CURRENT TSN INSERTED AS THE FIRST TSN. 4HHB X1 4J32 REWIND [REWIND INCINDEX 4JGL STEP3 4K2= STEP 4KFW BZE 3 XER14 [ERROR IF NOT IN INCINDEX 4K^G MHUNTW 1,FILE,FINTER 4LF6 LDX 0 AINCNO-A1(3) 4LYQ TXU 0 FIRSTINC(1) 4MDB BCS STEP3 4MY2 BRN STOTSN 4NCL NEXT 4NX= STEP 4PBW BZE 3 XEND1 [END OF 4PWG STOTSN 4QB6 LDEX 0 FRH(3) [X0= NO. OF TAPES IN THIS INCREMENT 4QTQ SBN 0 AMAG-A1 4R*B LDN 7 0 [CLEAR SWITCH 4RT2 SEARCH [LOOK FOR THIS TAPE -COPY 4S#L SBN 0 INCMAGLEN 4SS= BNG 0 XEND 4T?W BNZ 7 MOVE 4TRG SMO 0 4W?6 TXU 6 AMAG-A1(3) 4WQQ BCS SEARCH 4X=B LDN 7 1 [TAPE FOUND 4XQ2 BRN SEARCH 4Y9L MOVE 4YP= SMO 0 4^8W LDN 1 AMAG-A1(3) 4^NG LDN 2 INCMAGLEN(1) 5286 LDN 4 INCMAGLEN 52MQ SMO FX2 537B STO 0 ACOMMUNE2 53M2 TSNMOVE 546L LDX 5 0(2) [MOVE TSNS DOWN LIST 54L= LDX 0 0(1) [MOVING UP COPY TSN 555W STO 0 0(2) 55KG STO 5 0(1) 5656 ADN 2 1 56JQ ADN 1 1 574B BCT 4 TSNMOVE 57J2 SMO FX2 583L LDX 0 ACOMMUNE2 58H= BRN SEARCH 592W XEND 59GG BZE 7 XER18 [ERROR IF NOT COPY OF CURRENT DUMP TA 5=26 HUNT 1,FILE,FINTER7 5=FQ LDX 4 JINCLAST 5=^B SBX 4 AINCNO-A1(3) 5?F2 BNZ 4 XNOTSN 5?YL LDX 4 BMINTO1(1) 5#D= STO 4 AINCFILES-A1(3) 5#XW LDX 4 BMINTO2(1) 5*CG STO 4 AINCSIZE-A1(3) 5*X6 XNOTSN 5BBQ SMO FX2 5BWB LDX 0 AWORK4 5CB2 BZE 0 WRITE 5CTL HUNT 1,FILE,FINTER7 5D*= LDCT 0 #400 5DSW ANDX 0 AMAGSTATE-A1(3) 5F#G ERS 0 AMAGSTATE-A1(3) [REMOVE B0 OF STATE WORD IF SET 5FS6 LDX 0 CURRTSN(1) 5G?Q STO 0 AMAG-A1(3) 5GRB WRITE 5H?2 LDX 2 FX2 5HQL STEPREWRITE 5HXS ...#UNS FPD 5J52 ...#SKI 5J== BRN NEXT 5J=R ...#UNS FPD 5J?# ...( 5J?T ... LDX 4 JINCLAST [ IF WE HAVE NOT UPDATED RESTORED INC 5J#B ... BXU 4 AINCNO-A1(3),NEXT [ CONTINUE STEPPING THROUGH INCINDEX 5J#X ...# THE RESTORED INCREMENT HAS BEEN UPDATED - WAS IT PARALLEL 5J*D ... MHUNTW 1,FILE,FINTER7 5J*^ ... LDX 4 GRPINCNUM(1) [ IF GRPINCNUM IS ZERO INCREMENT WAS 5JBG ... BZE 4 NOTPARALLEL [ PARALLEL INCREMENT 5JC3 ... WIND [ GO TO END OF INCINDEX 5JCJ ... STEPAGAIN [ AND READ LAST RECORD 5JD5 ... BXE 4 AINCNO-A1(3),PARALLELINC 5JDL ...# JUMP - WE HAVE FOUND THE PARALLEL INCREMENT 5JF7 ... BACKSPACE [ READ PENULTIMATE INCREMENT 5JFN ... STEPAGAIN [ 5JG9 ... BXU 4 AINCNO-A1(3),PARALLELEND 5JGQ ...# IF THIS IS NOT THE PARALLEL INCREMENT GIVE UP 5JH? ...PARALLELINC [ WE HAVE FOUND THE PARALLEL INCREMEN 5JHS ... MHUNTW 1,FILE,FINTER7 5JJ* ... LDX 0 AINCSIZE-A1(3) [ IF THE SIZE HAS ALREADY BEEN INSERT 5JJW ... BNZ 0 NOTPARALLEL [ DONT UPDATE THE RECORG 5JKC ... LDX 0 GRPINCFILES(1) [ UPDATE NO OF FILES IN INCREMENT 5JKY ... STO 0 AINCFILES-A1(3) [ 5JLF ... LDX 0 GRPINCSIZE(1) [ UPDATE SIZE OF INCREMENT 5JM2 ... STO 0 AINCSIZE-A1(3) 5JMH ... STEPREWRITE [ REWRITES RECORD FOR PARALLEL FILES 5JN4 ...NOTPARALLEL 5JNK ...PARALLELEND 5JP6 ...) 5JPW XEND1 5K9G CLOSETOP [CLOSE INCINDEX 5KP6 CLOSETOP [CLOSE SERIAL 5L8Q MFREEW FILE,FINTER 5LNB MFREE FILE,FINTER7 5M82 UP 5MML # 5N7= # 5NLW XER14 ACROSS RESTERR,14 5P6G XERROR3 ACROSS RESTERR,15 5PL6 XERROR5 ACROSS RESTERR,17 5Q5Q XER18 ACROSS RESTERR,18 5QKB # 5R52 XERROR2 5RJL GEOERR BRIEFPM,GRBREAK [BREAK-IN IMPOSSIBLE 5S4= # 5SHW # THIS SUBROUTINE CHECKS WHETHER A TSN IS IN A RECORD OF INCINDEX 5T3G # ON ENTRY X3=STEP POINTER TO RECORD 5TH6 # X6=TSN 5W2Q # X2=CALL ACC 5WGB # EXIT 0 IF NOT PRESENT 5X22 # EXIT 1 IF PRESENT 5XFL TSN 5X^= LDEX 0 FRH(3) 5YDW SBN 0 AMAG-A1 [X0= LENGTH OF MT PART OF RECORD 5YYG TSN1 5^D6 SMO 0 5^XQ LDX 1 AMAG-A1-INCMAGLEN(3) 62CB TXU 1 6 62X2 BCC TSN2 [IF EQUAL EXIT+1 63BL SBN 0 INCMAGLEN 63W= BNZ 0 TSN1 64*W EXIT 2 0 [NOT EQUAL EXIT 64TG TSN2 65*6 EXIT 2 1 65SQ # 66#B # THIS SUBROUTINE SEARCHES :SYSTEM.SERIAL FOR THE TSN IN X6 66S2 # EXITS +1 IF TSN FOUND 67?L # EXITS +0 IF TSN NOT FOUND 67R= SSER 68=W SBX 4 FX1 68QG SSEARCH SNOTSN,6,1 [SEARCH FOR TSN 69=6 ADX 4 FX1 69PQ EXIT 4 1 6=9B SNOTSN 6=P2 ADX 4 FX1 6?8L EXIT 4 0 6?N= # 6#7W MENDAREA 30,K99RESTEND 6#MG # 6*76 #END ^^^^ ...26562220000100000000