14 22FL ... SEG CLOSEAB,863,SECTION FILE,CLOSE 4 24XQ # 11 25CB SEGENTRY K1CLOSEAB,XENT1 4 25X2 # 4 25YW ...# 18 262Q ... BITDEFS 7,20,XBCOPY [CLOSING FROM COPY MODE 4 264L ...# 4 266G ...# 19 26L6 ...# THIS SEGMENT IS ENTERED FROM CLOSEND AFTER A CLOSEABANDON. 12 275Q ...# IF THE FILE IS OPEN TO OTHERS, 17 27KB ...# THEN JUST MARK THE FILE ^TO-BE-CLOSEABANDONED^. 21 2852 ...# IF THE FILE IS OPEN CAREFULLY, THE DIRECTORY WILL NOT NORMALLY BE 21 28JL ...# ANY NEW BACKING STORE BLOCKS INDICATED BY THE FMAPP ARE FREE 21 294= ...# IF NOT CAREFUL, THE BACKING STORE IS FREED AND THE FILE IS PUT OFF 16 29HW ...# OR IF THE FILE HAS NOT BEEN DUMPED, ERASED. 4 2#=6 # 9 2#PQ MCOM #57777777 4 2*9B ...# 8 2*BJ ...# SUBROUTINES 8 2*HQ ...# ----------- 4 2*P2 ...# 4 2B8L ...# 4 2BN= ...TB 17 2C7W ... TOPFCB 2 [X2-> FCB AT DEPTH 0 7 2CMG ... EXIT 6 0 4 2D76 ...# 19 2DLQ ...# LOCATE THE FCB AT DEPTH 1 (TERMINAL FILE TO BE ABANDONED) 5 2FL2 OLDFCB 7 2G5L LDN 0 1 17 2GK= ... SFCAB 0,2,2 [X2-> FCB AT DEPTH 1 7 2H4W EXIT 6 0 4 2KH2 # 21 2KL6 ...# GIVEN A POINTER TO AN FCB, LOCATES THE CORRESPONDING FMAPP BLOCK ( 12 2KP= ...# BE ONE, BUT DOESN'T CHECK). 15 2KSB ...# ON ENTRY, X2->FCB. X6 IS LINK. 15 2KXG ...# ON EXIT, X2->FCB, X3->FMAPP. USES X0. 5 2L2L SFMAPP 7 2L7S ... LDX 3 2 5 2L*2 ...NEXTBL 9 2LG= LDX 3 FPTR(3) 9 2L_W LDX 0 ATYPE(3) 16 2MFG ... BXU 0 FFSFMAPP,NEXTBL [J IF NOT FMAPP 7 2NYB EXIT 6 0 4 2PD2 # 5 2PXL ...SETFAB 8 2QC= ... SBX 5 FX1 11 2QWW ... SETNCORE 10,3,FILE,FABSNB 8 2RBG ... LDN 0 10 16 2RW6 ... STO 0 A1(3) [RECORD HEADER 14 2S*Q ... CALL 6 TB [X2-> FCB 9 2STB ... ADN 2 FUSER1 8 2T*2 ... ADN 3 A1+1 21 2TSL ... MOVE 2 9 [MOVE TERMINAL FILE NAME FROM FCB TO 8 2W#= ... ADX 5 FX1 7 2WRW ... EXIT 5 0 4 2X?G ...# 17 2XR6 ...# SUBROUTINE TO CHECK IF FILE CAN BE ABANDONED YET. 15 32S2 ...# IF NOT, THEN SET ABANDON MARKER IN FCB. 21 32S# ...# ON ENTRY, X1=FX1, X2-> FCB OF FILE BEING ABANDONED. X5 IS LINK. 14 32SL ...# ON EXIT, X1=FX1, X2->FCB,. USES X0. 19 32SY ...# EXITS +0 IF FILE WILL STILL BE OPEN, +1 IF NOT. 5 32T= ...TESTAB 9 32Y? ... LDX 0 CTOPEN(2) 9 333# ... ANDX 0 MCOM(1) 7 336* ... SBX 0 4 20 339B ... BNZ 0 SETAB [J IF SOMEONE ELSE HAS FILE OPEN 18 33#C ... JBS XCOPIER,,XBCOPY [J IF CLOSING FROM COPY 20 33CD ... JBS SETAB,2,BFMCOP [J IF FILE OPEN (IN COPY MODE) 5 33GF ...XCOPIER 21 33KG ... TRACEIF K6CLOSEAB,99,299,FLOC1(2),CLOSAB1 [ONLY ONE OPENER SO CA 7 33NH ... EXIT 5 1 5 33RJ ...SETAB 10 33WK ... BS 2,BFCLOSEAB 21 33_L ... TRACEIF K6CLOSEAB,99,299,FLOC1(2),CLOSAB>1 [>1 OPENER SO JUST SE 7 344M ... EXIT 5 0 4 347Q # 4 34MB # 7 34R? ...# MAIN PATH 7 34X8 ...# ---- ---- 4 3535 ...# 9 3572 # ENTRY FROM CLOSEND 4 35LL [ 5 366= XENT1 14 36KW ... CALL 6 TB [X2-> FCB 21 375G ... CALL 5 TESTAB [TEST IF SOMEONE ELSE HAS FILE OPEN 21 37K6 ... BRN UP [SOMEONE ELSE HAS FILE ACTUALLY OPEN 21 384Q ... [SOLE OPENER AT THIS POINT (MAY BE WA 9 38JB ... LDX 0 FINFC(2) 8 3942 ... ANDN 0 #77 17 39HL ... BNZ 0 YINDEX [GEOERR IF INDEXED 20 3=3= ... CALL 5 SETFAB [SET UP FABSNB FOR TOP FILE OPEN 19 3=GW ... OPENDIR XBRK,GENERAL,ERASING [DIR. ENTRY MUST BE THERE 10 3?2G ... MFREEW FILE,FABSNB 4 3?G6 ...# 20 3?_Q ...# NOW WE HAVE THE DIRECTORY OPEN, NO ONE ELSE CAN OPEN THE FILE 4 3#FB ...# 20 3#_2 ... CALL 6 OLDFCB [X2-> FCB OF FILE BEING ABANDONED 20 3*DL ... CALL 5 TESTAB [SEE IF ANYONE HAS OPENED FILE 16 3*Y= ... BRN OTHEROPE [OTHER OPENER NOW 19 3BCW ... LDN 5 0 [INITIALISE COUNT OF FULLBS 21 3BXG ... JBC NOTCAREFUL,2,BFCARE [J IF FILE NOT BEING CAREFULLY UPDATE 15 3CC6 ... CALL 6 SFMAPP [X3-> FMAPP 21 3CWQ ... JMBS OFFLINE,2,BFUWB,BFCLOSEABOF [J IF OPEN UNCLEANLY (BFUWB + 21 3DBB ... [UPDATE FOLLOWED IMMEDIATELY BY CAREF 21 3DW2 ... [HAS NOT UPDATED DIR.). J ALSO IF CLO 10 3F*L ... MHUNTW 1,FILE,ENT 18 3FT= ... JBC NERASE,1,BEERASE [J IF NOT TO-BE-ERASED 10 3G#W ... LDEX 0 EAUTOCOUNT(1) 9 3GSG ... ADX 0 ESVCT(1) 17 3H#6 ... BZE 0 OFFLINE [J IF FILE NOT FROZEN 5 3HRQ ...NERASE 4 3J?B ...# 21 3JR2 ...# NOW CREATE FULLB BIG ENOUGH TO CONTAIN COMPLETE LIST OF NEW BLOCK 15 3K=L ...# - FULLB MAY BE MUCH BIGGER THAN REQUIRED. 4 3KQ= ...# 9 3L9W ... LDX 4 FUSEBL(2) 19 3LPG ... SBN 4 FBLKS-A1-2 [MAX. SIZE OF FULLB REQUIRED 15 3M96 ... SETUPCORE 4,1,BSTB,FULLB [X1-> FULLB 7 3MNQ ... LDN 0 2 18 3N8B ... STO 0 A1(1) [INITIALISE NO. OF BLOCKS 17 3NN2 ... CALL 6 OLDFCB [X2-> FCB AT LEVEL 1 9 3P7L ... LDX 0 BSPRE(2) 19 3PM= ... STO 0 A1+1(1) [STORE RESIDENCE NO. IN FULLB 15 3Q6W ... CALL 6 SFMAPP [X3-> FMAPP 20 3QLG ... LDN 4 0 [INITIALISE FBITS WORD MODIFIER 15 3R66 ... NGNC 0 1 [CLEAR BIT 0 21 3RFT ... ANDS 0 FBITS(3) [OF FBITS TO MAKE CODE IN FOLLOWING L 21 3RTJ ... NGN 6 1 [INITIALISE COUNT OF TOTAL FBITS BITS 19 3S9? ... [(ALLOW FOR NON-USE OF B0) 6 3SK2 ...NEXTFBITS 7 3T4L ... SMO 4 18 3TJ= ... LDX 0 FBITS(3) [X0= NEW WORD OF BIT MAP 17 3W3W ... LDN 5 24 [INITIALISE BIT COUNT 5 3WHG ...NEXTBIT 18 3X36 ... ADN 6 1 [UPDATE TOTAL BIT COUNT 19 3XGQ ... BPZ 0 NSWAP [J IF BLOCK NO. NOT SWAPPED 7 3Y2B ... SMO 6 18 3YG2 ... LDX 7 FBLKS-1(2) [X7= NEW BLOCK FROM FCB 8 3Y_L ... SMO A1(1) 19 3_F= ... STO 7 A1(1) [TRANSFER BLOCK NO. TO FULLB 7 3_YW ... LDN 0 1 19 42DG ... ADS 0 A1(1) [UPDATE FULLB RECORD HEADER 5 42Y6 ...NSWAP 19 43CQ ... BXE 6 FBITMOD(3),NOMOREFBITS [J IF LOOKED AT ALL BITS 7 43XB ... SLL 0 1 21 44C2 ... BCT 5 NEXTBIT [J IF MORE BITS TO LOOK AT IN THIS WO 21 44WL ... BUX 4 NEXTFBITS [UPDATE FBITS WORD POINTER (ALWAYS BR 6 45B= ...NOMOREFBITS 19 45TW ... LDX 3 FPTR(3) [LOOK AT BLOCK AFTER FMAPP 18 46*G ... BXE 3 CXFI,NOFULLB2 [J IF BASE OF FILE CHAIN 9 46T6 ... LDX 0 ATYPE(3) 16 47#Q ... BXU 0 FFSFULLB,NOFULLB2 [J IF NOT FULLB 9 47SB ... LDX 0 A1+1(3) 21 48#2 ... BXU 0 BSPRE(2),RESWRONG [GEOERR IF RES. NO. IN FULLB & FCB DI 19 48RL ... FREECORE 3 [FREE FULLB - DO NOT FREE BS 5 49?= ...NOFULLB2 20 4#92 ... FREEBAX [FREE BS (NO NEED TO BE CAREFUL) 10 4#NL ... MFREEW BSTB,EMPTYB 10 4*8= ... MHUNTW 1,FILE,ENT 10 4*MW ... BRN NERASEMULT 4 4B7G ...# 4 4BM6 ...# 4 4C6Q ...# 4 4CLB ...# 5 4D62 ...OFFLINE 9 4DKL ... LDX 2 FPTR(3) 9 4F5= ... LDX 0 ATYPE(2) 19 4FJW ... BXU 0 FFSFULLB,NOFULLB [J IF NEXT BLOCK NOT A FULLB 8 4G4G ... CHAIN 2,FX2 18 4GJ6 ... ADN 5 1 [UPDATE COUNT OF FULLBS 5 4H3Q ...NOFULLB 17 4HHB ... CALL 6 OLDFCB [X2-> FCB AT LEVEL 1 6 4J32 ...NOTCAREFUL 9 4JGL ... LDX 3 FUSEBL(2) 9 4K2= ... SBN 3 FBLKS-A1 16 4KFW ... BZE 3 YEMPTY [J IF FILE EMPTY 7 4K_G ... ADN 3 2 12 4LF6 ... SETUPCORE 3,1,BSTB,FULLB [ 8 4LYQ ... STO 3 A1(1) 19 4MDB ... CALL 6 OLDFCB [X2-> FCB OF TERMINAL FILE 9 4MY2 ... LDN 0 BSPRE(2) 8 4NCL ... ADN 1 A1+1 21 4NX= ... MOVE 0 511(3) [MOVE RES. NO. & BLOCK NOS. FROM FCB 18 4PBW ... ADN 5 1 [UPDATE COUNT OF FULLBS 5 4PWG ...YEMPTY 10 4QB6 ... MHUNTW 1,FILE,ENT 9 4QTQ ... LDEX 7 ECOPS(1) 17 4R*B ... BZE 7 OFFLIN [J IF FILE OFFLINE 16 4RT2 ... BACKSPACE [TO NAME RECORD 10 4S#L ... MHUNTW 1,FILE,ENT 5 4SS= ...OFFLIN 10 4T?W ... NAME 1,FILE,FWB 10 4THN ... LDEX 0 EAUTOCOUNT(1) 9 4TRG ... ADX 0 ESVCT(1) 9 4W3# ... LDX 4 EINC(1) 16 4W?6 ... BNZ 4 YDUMPED [J IF FILE DUMPED 20 4WGY ... BZE 0 NOTDUMPED [J TO ERASE FILE IF NOT FROZEN 7 4WQQ ... LDN 4 1 20 4X2J ... BS 1,BECLOSEAB [MARK FILE TO BE CLOSEABANDONED 18 4X=B ... STOZ ECOPS(1) [WHEN NO LONGER FROZEN 9 4XG8 ... BRN NOTREDUMP 5 4XQ2 ...YDUMPED 15 4X_S ... BNZ 0 SFROZEN [J IF FROZEN 21 4Y9L ... JBS MULT1,1,BEERASE [J IF FILE T0-BE-ERASED (ERASE IT!!) 5 4YP= ...SFROZEN 21 4_8W ... LDCT 0 1 [MAKE FILE LOOK OFFLINE WITH 1 BLOCK 21 4_NG ... STO 0 ECOPS(1) [OFFLINE COPY MIGHT NOT BE (OPENREL D 12 5286 ... JBCC NOTREDUMP,1,BEDUMP 20 52MQ ... JBS MULT1,1,BEMULT [J IF MULTFILE ELEMENT (ERASE IT) 20 537B ... MBS 1,BELOSE,BEREVERT [SET 'COPY OF FILE LOST' MARKER 9 53M2 ... LDX 0 EDLD(1) 10 546L ... STO 0 EWRITDAY(1) 21 54L= ... LDX 0 ETLD(1) [RESET DATE/TIME LAST WRITTEN TO DATE 21 555W ... STO 0 EWRITTIME(1) [ LAST DUMPED (SINCE DON'T KNOW REAL 21 55KG ... TRACEIF K6CLOSEAB,99,299,ELOC1(1),CLOSABLO [LOSE COPY OF FILE 6 5656 ...NOTREDUMP 9 56JQ ... BC 1,BEUWB 17 574B ... REWRITE [REWRITE NAME RECORD 5 57J2 ...TOFFLIN 9 583L ... BZE 7 OFFLIN1 6 58H= ... STEP 17 592W ... DELETE [DELETE BLOCKS RECORD 5 59GG ...OFFLIN1 18 5=26 ... BNZ 4 NOERASE [J IF NOT ERASING FILE 10 5=FQ ... MHUNTW 1,FILE,FWB 18 5=_B ... LDX 7 ENUSE(1) [X7= NO. OF USER TRAPS 16 5?F2 ... BZE 7 NOERASE [J IF NO TRAPS 5 5?YL ...TRAPER 6 5#D= ... STEP 6 5#XW ... DELETE 19 5*CG ... BCT 7 TRAPER [J IF MORE TRAPS TO DELETE 5 5*X6 ...NOERASE 16 5BBQ ... BZE 5 NOFULLB1 [J IF NO FULLBS 6 5BWB ...NEXTFULLB 10 5CB2 ... MHUNTW 1,BSTB,FULLB 21 5DSW ... FULLBPAS 1,2 [CHAIN BS FOR FREEING WHEN DIR. UPDAT 9 5F#G ... BCT 5 NEXTFULLB 5 5FS6 ...NOFULLB1 10 5G?Q ... MHUNTW 1,FILE,FWB 18 5GRB ... BNZ 4 NERASEMULT [J IF NOT ERASING FILE 16 5H?2 ... JBS MULTERASE,1,BEMULT [J IF MULTIFILE 6 5HQL ...NERASEMULT 14 5J== ... FREECORE 1 [FREE FWB 10 5JPW ... LDX 3 FILERING(2) 17 5K9G ... LDX 3 FPTR(3) [X3-> FCA AT LEVEL 1 18 5KP6 ... ADN 2 FILERING [X2-> BASE OF FILE RING 21 5L8Q ... RERING 3,2 [MOVE TERMINAL FILE TO LEVEL 0 (DIR. 15 5LNB ... UPPLUS 1 [NORMAL EXIT 4 5M82 ...# 4 5MML ...# 5 5N7= ...MULT1 21 5NLW ... LDN 4 0 [INDICATE TO ERASE THIS FILE (ELEMENT 6 5P6G ...NOTDUMPED 19 5PL6 ... TRACEIF K6CLOSEAB,99,299,ELOC1(1),CLOSABER [ERASE FILE 17 5Q5Q ... DELETE [DELETE NAME RECORD 9 5QKB ... BRN TOFFLIN 4 5R52 ...# 4 5RJL ...# 5 5S4= ...OTHEROPE 16 5SHW ... CLOSETOP [CLOSE DIRECTORY 4 5T3G ...UP 19 5TH6 ... UP [SOMEONE ELSE HAS FILE OPEN 4 6J28 ...# 19 6J2G ...# THE FOLLOWING CODE ERASES THE WHOLE OF THE MULTIFILE TO WHICH 20 6J2S ...# THE CLOSEABANDONED ELEMENT BELONGS. ANY QUESTIONS REGARDING IT 19 6J36 ...# SHOULD BE DIRECTED TO THE OWNER OF THE USEROPEN SUBSYSTEM. 4 6J3D ...# 6 6J3Q ...MULTERASE 21 6J44 ... JBS NERASEMULT,1,BEERASE [IF ELEM T-B-E NO NEED TO ERASE WHOL 10 6J4B ... NAME 1,FILE,ENT 7 6J4N ... LDN 0 1 20 6J52 ... STO 0 EGEN(1) [OTHERWISE TURN THE ENT INTO ONE 20 6J5# ... [FOR THE MDF, FOR FCBFIND TO USE. 20 6J5L ...MDF FCBFIND 3,NOTOPEN [J IF MDF NOT OPEN TO SOMEBODY 20 6J5Y ... JBC WAIT,3,BFMDFOP [J IF SOMEONE OPENING OR CLOSING 14 6J6= ... [THE MDF 21 6J6C ... TRACEIF K6CLOSEAB,99,299,FLOC1(3),CLOSABMO [MULTIFILE - MDF OPEN 20 6J6J ... SETBIT 14,FSTREND(3) [SET THE 'ERASE MULT' BIT IN FCB. 4 6J6W ...# 19 6J78 ...# WHEN THE OPENER OF THE MDF CLOSES IT CLOSEMULT WILL INITIATE 7 6J7G ...# AN AUOTERASE. 4 6J7S ...# 5 6J8Q ...MULTEND2 10 6J97 ... MHUNTW 1,FILE,ENT 10 6J9J ... BRN NERASEMULT 4 6J=2 ...# 19 6J=# ...# IF THE MDF IS IN THE PROCESS OF BEING OPENED OR CLOSED,WAIT 8 6J=L ...# AND TRY AGAIN. 4 6J=Y ...# 4 6J?6 ...WAIT 8 6J?# ... COOR3 #41 8 6J?J ... BRN MDF 4 6J?W ...# 20 6J#8 ...# NO-ONE HAS THE MDF OPEN, SO WE OPEN IT OURSELVES, SET THE BIT, 20 6J#G ...# AND ISSUE AN ERASEMULT, WHICH SETS UP AN AUTERASE ACT WHICH DOES 8 6J#S ...# IT ALL FOR US. 4 6J*6 ...# 5 6J*D ...NOTOPEN 21 6J*H ... SETNCORE 6,3,FILE,FLOCNB [SET UP FLOCNB FOR MDF FROM ENT BLOCK 10 6J*L ... MHUNTW 2,FILE,ENT 9 6J*P ... LDX 0 ELAN(2) 9 6J*S ... STO 0 A1+5(3) 21 6JB5 ... TRACEIF K6CLOSEAB,99,299,ELOC1(2),CLOSABMU [MULTIFILE - MDF NOT 8 6JB8 ... ADN 2 ELOC1 8 6JB? ... ADN 3 A1 7 6JBK ... MOVE 2 5 21 6JBX ... OPENREL XBRK,GENERAL,DIROPEN [OPEN MDF - WE MUST BE ABLE TO OPEN 14 6JC9 ... CALL 6 TB [X2-> FCB 21 6JCD ... SETBIT 14,FSTREND(2) [SET THE 'ERASE WHOLE MULTIFILE' BIT 18 6JCM ... CALL 5 SETFAB [SET UP FABSNB FOR MDF 19 6JCY ... ERASEMULT [GETS RID OF MDF AND FABSNB 10 6JD5 ... MFREE FILE,FLOCNB 17 6JD= ... BRN MULTEND2 [FINISH TIDYING UP 4 6JG6 ...# 4 6JJ2 ...# 5 6JKW ...YINDEX 18 6JMQ ... GEOERR BRIEFPM,AB INDEX [ABANDON ON INDEXED FILE 4 6JPL ...XBRK 20 6JRG ... GEOERR BRIEFPM,AB BRK [BREAK-IN ON OPENDIR OR OPENREL 5 6JTB ...RESWRONG 21 6JX= ... GEOERR BRIEFPM,AB RES? [RES. NO. IN FULLB IN FILE CHAIN & FC 4 6J_6 #END 8 ____ ...01435657000600000000