Show pageBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. {{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: OPENREL865)}} ====== OPENREL865 ====== (George Source) **Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:ADDMODE|ADDMODE]], [[george:macro:BACKSPACE|BACKSPACE]], [[george:macro:BASEFCB|BASEFCB]], [[george:macro:BC|BC]], [[george:macro:BS|BS]], [[george:macro:BXE|BXE]], [[george:macro:BXU|BXU]], [[george:macro:CHAIN|CHAIN]], [[george:macro:CLOSETOP|CLOSETOP]], [[george:macro:DOWN|DOWN]], [[george:macro:FREEBAX|FREEBAX]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETBAX|GETBAX]], [[george:macro:GETDIR|GETDIR]], [[george:macro:GETFCBN|GETFCBN]], [[george:macro:HUNT|HUNT]], [[george:macro:HUNTW|HUNTW]], [[george:macro:JBC|JBC]], [[george:macro:JBS|JBS]], [[george:macro:JBSS|JBSS]], [[george:macro:JMBAC|JMBAC]], [[george:macro:JMBS|JMBS]], [[george:macro:KEEPREP|KEEPREP]], [[george:macro:MBC|MBC]], [[george:macro:MBS|MBS]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREE|MFREE]], [[george:macro:MFREEW|MFREEW]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:NAME|NAME]], [[george:macro:NEXTFCB|NEXTFCB]], [[george:macro:OPEN|OPEN]], [[george:macro:OPENCREX|OPENCREX]], [[george:macro:OPENDIR|OPENDIR]], [[george:macro:OPENEND|OPENEND]], [[george:macro:OPENREL|OPENREL]], [[george:macro:OPENRELX|OPENRELX]], [[george:macro:PUTREP|PUTREP]], [[george:macro:READ|READ]], [[george:macro:READAGAIN|READAGAIN]], [[george:macro:RESQUERY|RESQUERY]], [[george:macro:RESTFILE|RESTFILE]], [[george:macro:REWRITE|REWRITE]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SETREP2|SETREP2]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:TESTMODE|TESTMODE]], [[george:macro:TESTNAMX|TESTNAMX]], [[george:macro:TESTREP2|TESTREP2]], [[george:macro:TESTRPN2|TESTRPN2]], [[george:macro:TFCBCHECK|TFCBCHECK]], [[george:macro:TOPFCB|TOPFCB]], [[george:macro:TOPFCB2|TOPFCB2]], [[george:macro:TRACE|TRACE]], [[george:macro:UP|UP]], [[george:macro:UPPLUS|UPPLUS]], [[george:macro:WHATBACK|WHATBACK]] <code - OPENREL865.txt>22FL ... SEG OPENREL,85,JUDY BIDGOOD,OPEN 22^= [ 23DW SEGENTRY K1OPENREL,OPENRELX 23YG SEGENTRY K2OPENREL,OPENREL 24D6 SEGENTRY K3OPENREL,OPENCREX 24XQ SEGENTRY K5OPENREL,OPENEND 25CB ... SEGENTRY K8OPENREL,(GEOERR) 25X2 ... SEGENTRY K9OPENREL,(GEOERR) 26BL SEGENTRY K10OPENREL,RESTORE 26W= [ 27*W # THIS ROUTINE IS ENTERED WITH A DIRECTORY OPEN AND A FLOCNB SET UP 27TG # FILE UNDER THIS DIRECTORY WHICH IS BEING OPENED.THE DIRECTORY ENT 28*6 # FOR THIS FILE IS FOUND,AND A FILE/FCB BLOCK IS SET UP FOR THIS FI 28SQ # IN THE ACTIVITY CHAIN. IF THIS FILE IS NOT ONLINE IT IS RESTORED 29#B # NOWAIT IS NOT SET. ALL OPENING MODES ARE CHECKED FOR COMPATABILIT 29S2 # IF THERE IS ANY REASON WHY THE FILE CANNOT BE OPENED, A REPY IS 2=?L # GIVEN IF QUERY MODE IS SET, OTHERWISE A GEOERR IS OBEYED. 2=R= # 2?QG # 2#=6 XMON #42014200 2#PQ [ 2#QB ...[ SUBROUTINE TO CLOSE DIR IN PREPARATION FOR MANDATORY B.S. REQUEST 2#R2 ...XCLOSE 2#RL ... SBX 3 FX1 2#S= ... TOPFCB2 1 2#SW ...#SKI K6OPENREL>100-100 2#TG ... TRACE BACK2(1),WAIT 2#W6 ... LDX 4 FME1(1) 2#WQ ... LDX 5 FME2(1) [REMEMBER USERNAME OF DIR 2#XB ... LDX 6 FME3(1) 2#Y2 ... LDX 0 AWORK4(2) [IF I SET UWB, MUST NOW UNSET IT 2#YL ... BZE 0 NOBS1 2#^= ... MHUNTW 1,FILE,ENT 2#^W ... BC 1,BEUWB 2*2G ... NAME 1,FILE,FWB 2*36 ... REWRITE 2*3Q ... MHUNTW 1,FILE,FWB 2*4B ... NAME 1,FILE,ENT 2*52 ...NOBS1 2*5L ... CLOSETOP [CLOSE DIR 2*6W ... MFREEW FILE,FCB 2*7G ... ADX 3 FX1 2*86 ... EXIT 3 0 2*8Q ...[ 2*9B OPENRELX 2*P2 [ENTRY FOR MACRO OPENRELX USED BY USEROPEN WHICH WILL HAVE LEFT THE 2B8L [DIRECTORY OPEN AS THOUGH A GDE HAS BEEN DONE AND A FILE/ENT IN CORE 2BN= LDX 7 ACOMMUNE7(2) [MODE 2C7W STOZ AWORK1(2) 2CCN ... STOZ AWORK4(2) 2CMG BRN OKGDE 2D76 [ 2DLQ OPENCREX 2F6B LDX 7 ACOMMUNE7(2) [MODE 2FL2 STOZ AWORK1(2) 2FP6 ... STOZ AWORK4(2) 2FS= ... MHUNT 3,FILE,FLOCNB 2G2G ... JBC TGDE2,3,BFABEXO [J IF NOT CREATING AN EXOFILE ENTRANT 2G8Q ... BRN NFI [DON'T DO 2ND GETDIR SINCE DIR. ALREA 2GC2 ... [ POSSIBILITY OF TO-BE-ERASED ENTRAN 2GK= [ 2H4W OPENREL 2HJG [ CHECK TYPE OF FILE AND ACCESIBLE & PICK UP MODE 2J46 LDX 7 ACOMMUNE7(2) [MODE 2JHQ [ 2K3B OPENEND 2KH2 #SKI K6OPENREL>399-399 2L2L TRACE 7,2OPENREL 2LG= STOZ AWORK1(2) [ZEROIZE 'FCB IN CORE' MARKER 2L^W [THE FORMAT OF THE MODE WORD IS THUS 2MFG [B MODE MEANING 2M^6 [0 DIROPEN LEAVE DIRECTORY OPEN 2NDQ [1 DIREPLY REPLY CANT IF DIRECTORY CAN'T BE OPENED 2NYB [2 REPWAIT GO UP IF DIRECTORY CLOSED DURING OPEN 2PD2 [3 CAREFUL OPEN FILE CAREFULLY 2PXL [4 USERCLEAN OPEN FILE CLEANLY (DA COMMUNE) 2QC= [5 HALFOPEN WE ARE HALFOPENING FILE (SET WITHIN OPENREL) 2QWW [6 ERASING OPEN EVEN IF TO-BE-ERASED 2RBG [7 SYSTCOMM OPEN IN SYSTEM COMMUNICATION MODE 2RW6 [8 THAW REDUCE FREEZECOUNT BY 1 DURING OPEN 2S*Q [9 ERASE SET TO-BE-ERASED & OPEN TO ERASING BITS IN FCB 2STB [10 GDESTR OPEN IN GENERAL DESTRUCTIVE READ MODE MK7 2T*2 [11 REOPEN REOPEN A SAVED FILE & REDUCE APPROPIATE SAVECT BY 1 2TSL [15 CREATE CREATE A FILE 2W#= [16 COMMUNE OPEN FILE IN COMMUNICATION MODE 2WRW [17 REPLY REPLY CANT IF FILE CAN'T BE OPENED 2X?G [18 NOWAIT REPLY MAG IF FILE NEEDS RESTORING 2XR6 [19 QUERY REPLY RATHER THAN GEOERR IN SOME ERROR CASES 2Y=Q [20 DESTRUCT OPEN FILE IN DESTRUCTIVE COMMUNICATION MODE 2YQB [21 EMPTY EMPTY FILE WHILST OPENING IT 2^=2 [22 LEAVE LEAVE FILE/ENT BLOCK IN CORE 2^PL [23 DIR IMPLEMENTS OPENDIR - NOT USED IN OPENREL 329= [B12,13,14 CONTAIN THE MAIN MODE AS A VALUE RATHER THAN INDIVIDUAL BITS 32NW [ 1-READ, 2-READR, 3-APPEND, 4-WRITE, 5-GENERAL, 6-COPY, 7-CLEAN. 338G #SKI K6OPENREL>199-199 33N6 ( 347Q TESTMODE 7,NODS,NOT,DESTRUCT [IF DESTRUCT MODE GIVEN 34MB TESTMODE 7,NODS,,COMMUNE [COMMUNE SHO4LD ALSO BE PRESENT 3572 GEOERR 1,DESMCOMM 35LL NODS 366= ) 36KW TGDE 36TN ... STOZ AWORK4(2) 375G GETDIR 1 37K6 [THERE IS A COMPLETE LOCAL NAME IN A LOCAL NAME BLOCK IN THE 384Q [ACTIVITY CHAIN.FIND ITS DIRECTORY ENTRY IN THE CURRENT FILE 38JB TESTREP2 OK,OKGDE,VRYWRONG,QRWNG,DISAGREE,QRDIS,WRGEN,WRG, - 3942 NAME,QRNAM 39HL TESTRPN2 NOFILE,QUER 3=3= TGDE2 3=GW TESTMODE 7,NSC,NOT,SYSTCOMM 3?2G ADDMODE 7,COMMUNE [ADD COMMUNE IF SYSTCOMM GIVEN 3?G6 NSC 3?^Q GETDIR 3 3#FB TESTREP2 OK,OKGDE,NOFILE,NFI 3#^2 TESTRPN2 VRYWRONG,QUER [TEST FOR CASE WHERE MT FILE OF SAME 3*DL READAGAIN [NAME EXISTS AND IS MARKED TO BE 3*Y= MHUNTW 3,FILE,FRB [ERASED 3BCW NAME 3,FILE,ENT [IF IT IS FOLLOW NORMAL 3BXG BRN OKGDE [WAITING FOR FILE TO BE ERASED PATH 3CC6 NFI 3CWQ [IF IT IS THE CREATE CASE WE MUST SET UP A NEW DIRECTORY ENTRY 3DBB TESTMODE 7,QUERY,NOT,CREATE [ERROR UNLESS CREATE GIVEN 3DW2 ACROSS MAKEFILE,1 [EXIT FOR CREATE CASE. 3F*L OKGDE 3FT= [IS THERE ANYTHING ELSE TO STOP US EVER OPENING THE FILE. 3G#W TESTMODE 7,NOSY,NOT,SYSTCOMM 3GSG ADDMODE 7,COMMUNE [ADD COMMUNE IF SYSTCOMM GIVEN 3H#6 NOSY 3HRQ TESTMODE 7,NGDR,NOT,GDESTR 3J?B TESTMAIN 7,QRWR,NOT,READ,APPEND [GDR MUST BE 3JR2 NGDR 3K=L MHUNTW 3,FILE,ENT 3KQ= JBC NIND,3,BEINDEX 3L24 ... TESTMODE 7,OKEM,,ERASE 3L9W TESTMODE 7,QRWR,,EMPTY [INDEXED FILE MAY NOT BE EMPTIED 3LFN ...OKEM [UNLESS ERASE MODE ALSO SPECIFIED. 3LPG TESTMAIN 7,QRWR,,APPEND,WRITE[OR OPENED IN TH THESE MODES 3M96 NIND 3MNQ LDX 0 ELAN(3) 3N8B BXU 0 XMON(1),NMON [J IF NOT LANGUAGE B1B0 3NN2 TESTMODE 7,NCAR,,SYSTCOMM [J IF SYSTEM COMMUNE SINCE MONITORING 3P7L NMON [FILES MUST NOT BE CAREFUL. 3PM= JBS YCAR,3,BECARE 3QLG TESTMAIN 7,NCAR,NOT,APPEND [APPEND IS CAREFUL 3R66 TESTMODE 7,NCAR,,REOPEN,GDESTR,EMPTY [UNLESS ONE O 3RKQ YCAR 3S5B TESTMODE 7,QRWR,,GDESTR [GDR+CAREFUL IS ILLEGAL 3SK2 ADDMODE 7,CAREFUL 3T4L NCAR 3TJ= JBC NERAS,3,BEERASE 3W3W TESTMODE 7,NERAS,,THAW,ERASING 3WHG TESTMODE 7,QUERY,NOT,CREATE 3X36 TESTMODE 7,XRC,,REPLY 3XGQ LDX 6 ELOC1(3) [KEEP NAME OF FILE 3Y2B DOWN OPENWAIT,1 [GO DOWN TO WAIT FOR FILE TO BE ERASE 3YG2 UP [BREAKIN 3Y^L TESTREP2 DIRCLOSE,UPF 3^F= [DIRECTORY WAS CLOSED IN OPENWAIT 3^YW TESTRPN2 OK,TRCLU [IF OK CHECK GEN NO. 42DG HUNT 1,FILE,FLOCNB [BEFORE DOING ANOTHER GETDIR 42Y6 LDX 0 A1+4(1) 43CQ BNZ 0 TGDE [IF NON ZERO GEN OK TO DO GETDIR 43XB LDCT 0 #100 44C2 STO 0 A1+4(1) [SET BIT2 OF GEN 44WL BRN TGDE 45B= TRCLU 45TW TESTREP2 CLUDGE,UPCLD 46*G KEEPREP 4,NAME [REPORT IF NOT 46T6 ADDMODE 7,LEAVE,DIROPEN 47#Q BRN QUERIES 47SB UPCLD 48#2 KEEPREP 4,CLUDGE [REPLY CLUDGE 48RL BRN QUERIES 49?= NERAS [AND IF SO RECREATE IT 49QW TESTMODE 7,QUERY1,,CREATE 4==G [ 4=Q6 [NOTE THAT RANDOM MODE IS FEASIBLE WITH ANY FILE & ANY MODE IS 4?9Q [FEASIBLE WITH A SERIAL FILE,BUT SERIAL MODE CANNOT BE USED ON A 4?PB [RANDOM FILE BECAUSE OF RECORD HEADERS. 4#92 [ 4#NL TESTMAIN 7,NOQUERY2,,RANDOM [OK IF MODE AND FILE SERIAL 4*8= JBS NOQUERY2,3,BESERIAL 4*MW [THE NEXT SECTION DEALS WITH 4B7G [CASES WHERE SOMETHING IS 4BM6 [WRONG & A REPLY MUST BE GIVEN: 4C6Q QRWR 4CLB KEEPREP 4,WRONG [REPORT IF WRONG MODE 4D62 BRN QUENT 4DKL QRTEM KEEPREP 4,TEMPLOST 4F5= ... BRN QRTLOS 4FJW QRNAM KEEPREP 4,NAME 4G4G BRN QUENT 4GJ6 QRWNG KEEPREP 4,VRYWRONG [REPORT IF WRONG TYPE 4H3Q BRN QUENT 4HHB QRDIS KEEPREP 4,DISAGREE [REPORT IF MAG TAPES DISAGREE WITH DI 4J32 BRN QUENT 4JGL QUERY1 4K2= KEEPREP 4,ALREADY [REPORT IF CREATING ALREADY THERE. 4KFW BRN QUERIES 4K^G WRG KEEPREP 4,WRGEN [REPORT IF WRONG GENERATION 4LF6 BRN QUENT 4LYQ QUERY 4MDB KEEPREP 4,NOFILE [REPORT IF WANTED AND NOT THERE. 4MY2 QUENT ADDMODE 7,LEAVE 4NCL QUERIES 4NX= TESTMODE 7,REPLY,,QUERY 4PBW QUER GEOERR 1,QUERIES [ABSENCE OR PRESENCE OR FORMAT OR GDE 4PWG REPLY 4QB6 TESTMODE 7,TUP,,DIROPEN 4QTQ CLOSETOP [DO A LITTLE CLOSE ON THE DIRECTORY: 4R*B TUP 4RT2 PUTREP 4 [DEPOSIT REPLY 4S#L #SKI K6OPENREL>399-399 4SS= TRACE 4,ANSOREL [TRACE REPLY 4T?W UPF 4TRG HUNTW 1,FILE,ENT 4W?6 BNG 1 UP [SEE IF THERE IS AN ENT BLOCK AROUND 4WQQ TESTMODE 7,UP,,LEAVE 4X=B FREECORE 1 4XQ2 UP UPPLUS 1 4Y9L NOQUERY2 4YP= [ 4^8W [THIS CODE WAS INCLUDED TO DEAL WITH BUG 2586. IT DEALS WITH THE 4^NG [INTERLOCKS WHICH OCCURS WHEN A JOB DOES A LISTFILE THEN AN INPUT 5286 [ON THE SAME FILE. IF MODE IS EMPTY & FILE IS FROZEN THEN THE ACTIVITY 52MQ [IS SET WAITING. MORE CHANGES ARE INSERTED IN OTHER OPEN SEGMENTS TO 537B [WAKE UP ALL ACTIVITIES WAITING FOR THIS FILE AFTER IT HAS BEEN THAWED. 53M2 [ 546L LDEX 0 EAUTOCOUNT(3) 54L= ORX 0 ESVCT(3) [ADD IN READ & WRITE FROZEN COUNTS 555W BZE 0 NOQUERY3 55KG TESTMODE 7,NOQUERY3,NOT,EMPTY 5656 TESTMODE 7,NREP,NOT,REPLY 56JQ XRC 574B KEEPREP 4,CANT 57J2 BRN REPLY 583L NREP 58H= LDX 6 ELOC1(3) [PRESERVE PART OF LOCAL NAME FOR WAIT 592W DOWN OPENWAIT,4 [GO DOWN TO WAIT FOR FILE TO BE 59GG UP [THAWED 5=26 TESTREP2 DIRCLOSE,UPF,OK,TGDE 5=FQ BRN TRCLU 5=^B NOQUERY3 5?F2 [THE DIRECTORY ENTRY FOR THE 5?YL [FILE WANTED HAS BEEN FOUND. 5#D= [EXCEPT IN THE EMPTY CASE, WE 5#XW [WANT TO CONSULT THE ON-LINE 5*CG [COPY IF THERE IS ONE, OR TO 5*X6 [RESTORE IT IF THERE IS NOT. 5BBQ LDN 4 0 [ZEROISE EMPTY AND OFFLINE MARKER 5BWB RETONL 5CB2 LDEX 0 ECOPS(3) 5CTL BNZ 0 ONLINE [SKIP UNLESS NEEDS RESTORING 5D*= LDX 0 EUSE1(3) [ERROR IF A DIRECTORY 5DSW BNZ 0 NONLD 5F#G TESTMODE 7,TEMPT,NOT,EMPTY 5FS6 LDN 4 1 5G?Q LDN 6 FBLKS-A1 5GRB BRN NTHAW 5H?2 TEMPT 5HQL LDX 0 ECOPS(3) [TEST FOR EMPTY FILE 5J== BNZ 0 REST [RESTORE IF NOT 5JPW YRE 5K9G LDN 6 FBLKS-A1 5KP6 BRN ONLINE 5L8Q REST 5N7= LDN 3 BFILE 5NLW TOPFCB 2 [FIND DIR FCB 5P6G LDX 4 FME1(2) [STORE USER NAME IN 5PF* ... 5PS8 ... HUNT 1,FILE,FLOCNB 5Q73 ... BASEFCB 3,FILE,RESTA,6 [INITIALISE FOR FCB SEARCH 5QFW ... BRN NOGO2 5QSP ...NOGO1 5R7J ... NEXTFCB 3,FILE,NOGO2,6 5RGC ... BRN RESTA 5RT= ...NOGO2 5S85 ... LDX 0 FME3(2) [SET UP LOCAL NAME FOR COMPARISON 5SGY ... LDX 5 FME2(2) 5STR ...NOGO3 5T8L ... TXU 4 FUSER1-FCBRING(3) 5THF ... BCC SOFAROK [FIRST WORD OK B TO TRY NEXT 5TW# ...NOGO4 [TRY NEXT FCB 5W97 ... NEXTFCB 3,FILE,NOGO3,6 5WJ2 ... BRN RESTA [FILE RING EXHAUSTED 5WWT ...SOFAROK 5X9N ... TXU 5 FUSER2-FCBRING(3) 5XJH ... TXU 0 FUSER3-FCBRING(3) [TEST REST OF USER NAME 5XXB ... BCS NOGO4 5Y=9 ... TESTNAMX 6,A1(1),FLOC1-FCBRING(3),NOGO1,5 [TEST COMPLLETE LOCAL 5YK4 ... SBN 3 FCBRING [FCB FOUND 5YYG LDX 2 FX2 5^D6 LDN 6 1 [SET MARKER IN AWORK1 5^XQ STO 6 AWORK1(2) 62CB LDX 6 BACK1(3) 62X2 STO 6 AWORK2(2) [KEEP BACKING STORE HOME 63BL LDX 6 BACK2(3) [PAIR OF FCB IN AWORK WORDS 63W= STO 6 AWORK3(2) 64*W LDN 0 1 [ADD 1 TO COUNT OF WAITERS 64TG ADS 0 FWAITCOUNT(3) 65*6 HUNTW 3,FILE,ENT 65SQ LDN 4 0 [RESET EMPTY & OFFLINE MARKER 66#B BRN ONLINE 66S2 RESTA 67?L LDN 4 0 [RESET EMPTY & OFFLINE MARKER 67R= TESTMODE 7,RESTORE,NOT,NOWAIT[RESTORE FILE UNLESS EMPTY &OFFLINE 68=W KEEPREP 4,MAG 68QG BRN REPLY [GIVE A REPLY IF NOWAIT 69=6 RESTORE 69C# ... SMO FX2 69JG ... STOZ AWORK4 69PQ RESTFILE [DOWN TO THE RESTORE CHAPTER. 6=9B UP 6=P2 TESTREP2 OK,RESTORED 6?8L ADDMODE 7,DIROPEN [DIR HAS BEEN CLOSED IF NON-OK REPLY 6?N= TESTREP2 NAME,QRNAM,NOFILE,QUERY,TEMPLOST,QRTEM,LOST,QRLOS 6#7W BRN QUER 6#MG [THIS SECTION WAS PUT IN TO DEAL WITH LOST FILES WHICH CANNOT BE ERASED 6*76 [IF FROZEN (BUG 1895) 6*LQ QRLOS 6B6B KEEPREP 4,LOST 6BB8 ...QRTLOS 6BL2 TESTMODE 7,TUP,NOT,THAW 6C5L HUNT 3,FILE,FABSNB 6CK= BNG 3 TUP [CAN'T OPENDIR WHTHOUT FABSNB 6D4W OPENDIR TUP,GENERAL,ERASING [OPEN DIRECTORY TO REWRITE DIRENT 6DJG TESTRPN2 OK,QUER 6F46 MHUNTW 3,FILE,ENT 6FHQ LDN 0 1 6G3B SBS 0 EAUTOCOUNT(3) [SUBTRACT 1 FROM FREEZECOUNT 6GH2 NAME 3,FILE,FWB 6H2L REWRITE [REWITE DIRENT 6HG= HUNT 1,FILE,FWB 6H^W NAME 1,FILE,ENT 6JFG TESTMODE 7,TUP,,DIROPEN 6J^6 CLOSETOP [CLOSE DIRECTORY 6KDQ BRN TUP [KEEP REPLY AND GO UP 6KYB RESTORED 6LD2 TESTMODE 7,NREPW,NOT,REPWAIT 6LXL CLOSETOP [CLOSE DIRECTORY BEFORE GOING UP 6MC= SETREP2 DIRCLOSE 6MWW BRN UPF 6NBG NREPW 6NW6 MHUNTW 3,FILE,ENT 6P*Q BRN RETONL 6PTB [ON EXIT FROM RESTORE, THE 6Q*2 [DIRECTORY IS OPEN POSITIONED 6QSL [AFTER THE FRDE. 6R#= [THE NEW DIRENT IS IN CORE. 6RRW ONLINE 6S?G [PUT A BEING-ALTERED BIT IN THE DIRECTORY ENTRY IF NEED BE. THEN GET 6SR6 [SOME CORE FOR A FILE CONTROL BLOCK: 6T=Q TESTMODE 7,NTHAW,NOT,THAW 6TQB TESTMAIN 7,THERR,,UNCLEAN 6W=2 [ 6WPL [REPLY MODE MUST BE SPECIFIED BECAUSE IF SOMEONE ELSE HAS THE FILE 6X9= [OPEN THE 'OPENTHAW ACTIVITY' CANNOT WAIT, SINCE IT HAS THE FILES 6XNW [DIRECTORY OPEN 6Y8G [ 6YN6 TESTMODE 7,TDIROK,NOT,REPLY 6^7Q THERR GEOERR 1,THAW ERR [ERROR IF UNCLEAN AND/OR REPLY NOT SE 6^MB NTHAW 6^X8 ... TESTMAIN 7,TDIROK,,COPY 7272 TESTMAIN 7,SUWB,,UNCLEAN 72LL TESTMODE 7,TDIROK,NOT,GDESTR [GDR IS UNCLEAN 736= SUWB 73KW TESTMODE 7,TDIROK1,,CAREFUL 745G JBSS TDIROK1,3,BEUWB [SET UWB UNLESS ALREADY SET 74K6 REWR NAME 3,FILE,FWB 754Q REWRITE [REWRITE RECORD: 75JB MHUNTW 3,FILE,FWB 7642 NAME 3,FILE,ENT 7698 ... LDN 0 1 76BB ... STO 0 AWORK4(2) [REMEMBER I SET UWB 76HL [MUST SOME DAY GET RID OF FURB TO BACKING STORE 773= TDIROK1 77GW BNZ 4 MAKEFCB [IGNORE BLOCK NOS IF EMPTY AND NOT ON 782G TDIROK 78G6 LDX 2 FX2 78^Q LDX 0 AWORK1(2) 79FB SBN 0 1 79^2 BNZ 0 NOFCB 7=DL LDX 5 AWORK2(2) [LOAM BS HOME PAIR READY 7=Y= LDX 6 AWORK3(2) [FOR OELOCATING FCB 7?CW ACROSS ORELMAIN,4 7?XG NOFCB 7#C6 LDX 0 ECOPS(3) [IF FILE IS EMPTY & OFFLINE OMIT CODE 7#WQ BZE 0 MAKEFCB 7*BB NEO 7*W2 READ [GET BEST ADDRESS BLOCK 7B*L HUNT 2,FILE,FRB [FIND BLOCK 7BT= LDX 6 A1(2) [NUMBER OF BLOCKS PLUS 2 7C#W ADN 6 FBLKS-A1-2 [CORE NEEDED FOR FCB 7CSG TESTMODE 7,MAKEFCB,NOT,EMPTY 7D#6 BACKSPACE [REPOSITION ON BLOCKS RECORD IF EMPTY 7DRQ MAKEFCB 7F?B [SET UP A FILE CONTROL BLOCK IN CASE THERE IS NOT ONE ALREADY: 7FR2 [THE NAME IS NEEDED IN IT FOR COMPARISON AND THE OTHER WORDS CAN BE PUT 7G=L [IN FOR CONVENIENCE: X7=MODE ; X6=CORE NEEDED ; X5 MEANS ENTRY UNCHANGED 7H9W SETUPCOR 6,3,FILE,FCB,,1 7K8B STO 6 FBLMOD(3) [STORE RECORD HEADER IN FCB 7KN2 STOZ FBLMOD+1(3) 7L7L LDN 5 FBLMOD+1(3) 7LM= LDN 6 FBLMOD+2(3) 7M6W MOVE 5 BSPRE-FBLMOD-2 7MLG LDX 0 ALOGLEN(3) [INITIALIZE WORD INDICATING NUMBER 7N66 STO 0 FUSEBL(3) [OF BLOCKS ALLOCATED TO FILE 7NKQ NGS 3 CMOD(3) [RECORD MODIFIER NEGATIVE 7P5B BNZ 4 SETNAME 7PK2 MHUNTW 2,FILE,ENT 7Q4L LDX 0 ECOPS(2) [IF FILE IS EMPTY & OFFLINE OMIT CODE 7QJ= BZE 0 SETNAME 7R3W MHUNTW 2,FILE,FRB 7RHG LDN 6 BSPRE(3) [POINTER TO BLOCKS ADRESS. 7S36 LDN 5 A1+1(2) [POINTER TO BLOCKS. 7SGQ SMO A1(2) [NUMBER OF WORDS TO MOVE PLUS ONE. 7T2B MOVE 5 511 [MOVE ONE LESS 7TG2 XFRFL 7T^L FREECORE 2 [FREE FRB. 7WF= SETNAME 7WYW MHUNTW 1,FILE,ENT 7X64 ... LDX 0 EUSE1(1) 7X?= ... GETFCBN 3,0 [GET UNIQUE FCB NO 7XDG LDEX 0 EAUTOCOUNT(1) [COPY THE FREEZECOUNT 7XY6 STO 0 FREEZECOUNT(3) 7YCQ LDX 0 ETM(1) 7YXB STO 0 FETM(3) 7^C2 LDX 0 EENDBUCK(1) 7^WL STO 0 FENDBUCK(3) [COPY ENDBUCK 82B= LDX 0 EVERSION(1) 82TW STO 0 FVERSION(3) [COPY VERSION 83*G LDX 0 ESVCT(1) [COPY READ- & WRITE-FREEZE COUNTS 83T6 STO 0 FSVCT(3) 84#Q LDX 0 EINF3(1) 84SB DLA 0 FSIZE(3) [MAXIMUM ALLOWED FILE SIZE 8548 ... TESTMAIN 7,NBAL,,READING 85#2 LDX 0 ECOPS(1) 85RL BZE 0 NONBAL [SET BLOCKS ALT BIT IF EMPTY & OFFLIN 86?= TESTMODE 7,NBAL,NOT,EMPTY 86QW NONBAL 87=G MBS 3,BFALTB,BFALTR 87Q6 NBAL 889Q JBC NOUWB,1,BEUWB 88PB BS 3,BFUWB [TRANSFER BIT 8992 NOUWB 89NL LDN 4 0 8=8= JBC NOTS,1,BESERIAL [TRANSFER BIT 8=MW BS 3,BFSER 8?7G NOTS 8?M6 JBC NOTM,1,BEMT 8#6Q BS 3,BFMT [TRANSFER BIT 8#LB NOTM 8*62 JBC NINX,1,BEINDEX 8*KL LDX 0 EINDEX(1) 8B5= STO 0 FINFC(3) 8BJW NINX 8BK4 ... JBC NPARES,1,BEPARTRES 8BK6 ... BS 3,BFPARTRES 8BK8 ...NPARES 8BL? ... JBC NCLOSEAB,1,BECLOSEAB 8BLQ ... TESTMODE 7,NCLEMPT,NOT,EMPTY 8BM9 ... BC 1,BECLOSEAB [UNSET CLOSEABANDON MARKER 8BMN ... BRN NCLOSEAB [AS FILE BEING EMPTIED INSTEAD. 8BN7 ...NCLEMPT 8BNL ... BS 3,BFCLOSEAB 8BP5 ...NCLOSEAB 8BPQ ... JBC NDIBMOD,1,BEFHDIRMODE 8BPS ... BS 3,BFFHDIRMODE 8BPW ...NDIBMOD 8BQ^ ... JBC NUSERFREZ,1,BEUSERFREZ 8BRD ... BS 3,BFUSERFREZ 8BRX ...NUSERFREZ 8BS7 ...#UNS ILOGACC 8BSC ...( 8BSM ... JBC NLOGACC,1,BELOGACC 8BSX ... BS 3,BFLOGACC [MARK FCB LOGGED ACCESS IF ENT 8BT7 ...NLOGACC 8BTC ...) 8BTR ... LDX 0 EUSE1(1) 8BW= ... BZE 0 NOTADIR 8BWP ... MBC 3,BFDIRUPDATE,BFALLINCS,BFDUMP,BFDIRBELOW 8BX8 ... JBC NDUMPIN,1,BEDUMP 8BXM ... BS 3,BFDUMP 8BY6 ...NDUMPIN 8BY9 ... JBC NJ4AST,1,BEJOB4ASTR 8BY# ... BS 3,BFJOB4ASTR 8BYC ...NJ4AST 8BYK ... JBC NALLINC,1,BEALLINCS 8B^4 ... BS 3,BFALLINCS 8B^H ...NALLINC 8C22 ... JBC NDIRBLOW,1,BEDIRBELOW 8C2F ... BS 3,BFDIRBELOW 8C2Y ...NDIRBLOW 8C3C ...NOTADIR 8C4G LDX 0 EUSE1(1) 8CJ6 BNZ 0 YPUB [J IF DIR AS THIS PUBLIC FILE 8D3Q LDX 0 EALLOC(1) 8DHB ANDN 0 #77 8DPL ... SBN 0 1 8DXW ... BZE 0 YPUB [J IF 'ALLOCATE PUBLIC' FILE 8F66 ... SBN 0 47 8F#B ... BPZ 0 YPUB [J IF ALLOCATED TO SPECIAL RESIDENCE 8FGL JBS YPUB,1,BEONLINE 8G2= BS 3,BFCUBS [ELSE MARK AS 'NON-PUBLIC' 8GFW YPUB 8G^G TESTMODE 7,YEEM,,EMPTY 8HF6 JBC YEEM,1,BEPURE [TRANSFER PURE PROCEDURE BIT UNLESS E 8HYQ BS 3,BFPP 8JDB YEEM 8JY2 LDX 4 EUSE1(1) [LOOK AT USER NAME IN DIRENT. 8KCL TFCBCHECK 2 8KX= TESTMODE 7,NDES,NOT,DESTRUCT 8LBW MBS 3,BFCORE,BFDCF [DCF USAGE BLOCKS ARE LEFT IN CORE 8LWG NDES 8MB6 LDN 5 FME1(2) [X5 -> SUPUSER NAME 8MTQ LDN 6 FUSER1(3) [X6 -> TO NICHE FOR SAME 8N*B MOVE 5 3 8NT2 BNZ 4 NOTTERMINAL [IF DIRECTORY JUMP 8P#L HUNT 2,FILE,FLOCNB [FIND LOCAL NAME BLOCH 8PS= LDN 5 A1(2) [X5 -> LOCAL NAME 8Q?W LDN 6 FLOC1(3) [X6 -> NICHE 8QRG MOVE 5 6 [COPY LOCAL NAME 8R?6 BRN ORELMAIN [ACROSS TO MAIN PART OF OPENREL. 8RQQ XALLOC 8S=B MHUNTW 1,FILE,ENT 8SQ2 LDX 4 EALLOC(1) 8T9L ANDN 4 #77 8TP= BZE 4 (6) [J IF FILE NOT ALLOCATED 8X86 RESQUERY 4,(6) [J IF SPECIAL RESIDENCE DOES NOT EXIS 8XMQ EXIT 6 1 [ALLOCATE EXIT 8Y7B YEMOF 8YM2 MHUNTW 3,FILE,FCB 8^6L CALL 6 XALLOC [TEST FOR ALLOCATE 8^L= BRN NALL [J NOT ALLOCATE 925W BZE 5 YRD [J IF READ MODE 92KG #SKI K6OPENREL>100-100 9356 ( 93JQ TRACE 4,SPRES 944B TRACE 5,BLKS 94J2 ) 95H= HUNT 2,BSTB,FULLB 962W BNG 2 NFLB [IF FULLB GIVEN & B.S. IS ON CORRECT 96GG #SKI K6OPENREL>100-100 9726 TRACE 2,FULLB 97FQ YALC 97^B LDX 0 A1+1(2) [RESIDENCE IT CAN BE USED ,OTHERWISE 98F2 BXE 0 4,YMBS [BS IN FULLB MUST BE FREED 98YL LDX 5 A1(2) [AND NUMBER OF BLOCKS IN FULLB MUST 99D= FREEBAX [BE REMEMBERED SO THAT SAME NUMBER 99XW MHUNTW 1,BSTB,EMPTYB 9=CG BRN SFB [CAN BE GOT ON SPECIAL RESIDENCE 9=X6 [IF NO FULLB WAS GIVEN 8 BLOCKS ARE 9?BQ [GOT ON SPECIAL RESIDENCE 9?K2 ...NFLB [NO BLOCKS GIVEN 9?R= ... BNG 5 YRD [J IF EMPTY,OFFLINE DA 9?^G ... ADN 5 2 9#7Q ... SETUPCORE 5,1,BSTB,EMPTYB 9#B2 SFB 9#TL STO 5 A1(1) [SET UP AN EMPTYB, PUT IN SPECIAL 9**= STO 4 A1+1(1) [RESIDENCE NUMBER 9*SW GETBAX NSBS [J IF NO B.S. 9B#G BRN YAL [OTHERWISE MOVE IT TO FCB 9BS6 NSBS 9C?Q SETUPCOR 5,1,BSTB,EMPTYB 9CRB STO 5 A1(1) 9D?2 STO 4 A1+1(1) 9DQL ... CALL 3 XCLOSE [CLOSE DIRECTORY 9F== ... MFREEW FILE,ENT 9K7= GETBAX [GET B.S. WAITING IF NECESSARY 9KLW WGJN 9L6G TESTMODE 7,NRWT,NOT,REPWAIT 9LL6 SETREP2 DIRCLOSE 9M5Q BRN UPF 9MKB NRWT 9N52 SETNCORE 4,1,FILE,FABSNB 9NJL LDN 0 4 9P4= STO 0 A1(1) 9PHW STO 4 A1+1(1) 9Q3G STO 5 A1+2(1) 9QH6 STO 6 A1+3(1) 9R2Q OPEN XBRN,GENERAL,QUERY [REOPEN DIR 9RGB TESTRPN2 OK,TRCLU 9S22 MFREE FILE,FABSNB 9SFL BRN TGDE [J BACK TO START AGAIN 9S^= XBRN GEOERR 1,DIRBRK 9TDW YRD STO 4 BSPRE(3) [STORE LFN IN FCB BUT NO BLOCKS 9TYG BRN XACC 9WD6 NALL 9WXQ BZE 5 YZR [NO FULB IF READ 9XCB HUNT 2,BSTB,FULLB [IF FULLB GIVEN THIS CAN BE USED AS 9XX2 BPZ 2 YMBS [IT IS NON-ALLOCATED CASE 9Y48 ... BPZ 5 YZR [J IF NOT EMPTY,OFFLINE DA 9Y9B ... STOZ 5 9YBL YZR 9YW= #SKI K6OPENREL>100-100 9^*W TRACE 5,NOFULLB 9^D5 ... MHUNTW 1,FILE,ENT 9^G# ... JMBAC YAL2,1,BEONLINE,BECOOR 9^JH ...[ IF A VITAL SYSTEM FILE TELL WHATBACK 9^LQ ... WHATBACK 2,5,NOBS,,VSF 9^N^ ... BRN YAL 9^R8 ...YAL2 9^TG WHATBACK 2,5,NOBS [IF NO FULLB GET 8 BLOCKS, J IF NO BS =2*6 BRN YAL =2SQ NOBS =3#B ... STO 5 AWORK2(2) =3S2 ... CALL 3 XCLOSE [CLOSE DIRECTORY =4?L ... LDX 3 AWORK2(2) =4R= ... MHUNTW 1,FILE,ENT =5=W ... JMBAC WGJN2,1,BEONLINE,BECOOR =5QG ...[ IF A VITAL SYSTEM FILE TELL WHATBACK =6=6 ... WHATBACK 2,3,,,VSF =6PQ ... BRN WGJN3 =79B ...WGJN2 =88L WHATBACK 2,3 [GET B.S. WAITING IF NONE =8DD ...WGJN3 MFREEW FILE,ENT =8N= BRN WGJN =97W YAL =9MG HUNT 3,FILE,FCB ==76 HUNT 2,BSTB,FULLB ==LQ YMBS =?6B TESTMODE 7,XACC,,EMPTY =?L2 LDX 0 A1+1(2) [IF EMPTY & OFFLINE FILE, SET UP =#5L STO 0 BSPRE(3) [BSPRE IN CASE THIS FCB USED =#K= BNZ 5 XACC [IF READ MODE FREE FULLB CONTAINING =*4W FREECORE 2 [LFN ONTY =*JG BRN XACC =B46 NOTTERMINAL =BHQ [IF THE FILE IS A DIRECTORY,GET ITS USERNAME FROM THE DIRENT. =C3B HUNT 1,FILE,ENT =CH2 LDN 5 EUSE1(1) [X5 -> USER NAME =D2L LDN 6 FME1(3) [X6 -> TO NICHE FOR SAME =DG= MOVE 5 3 =D^W LDN 5 ELOC1(1) [X5 -> LOCAL NAME =FFG LDN 6 FLOC1(3) =F^6 MOVE 5 3 =GDQ BS 3,BFDIR =GYB TESTMODE 7,ORELMAIN,NOT,REPLY =HD2 TESTMODE 7,ORELMAIN,,DIREPLY =HXL CLEARMOD 7,REPLY =JC= ORELMAIN =JWW MHUNTW 1,FILE,ENT =KBG JBC NIX,1,BEINDEX =KW6 READ =L*Q MHUNTW 1,FILE,FRB =LTB NAME 1,FI,FINDEXF =M*2 LDX 5 A1(1) =MSL SBN 5 INDEXREC-A1 [CHECK RECORD SAME AS NUMBER OF =N#= MHUNTW 1,FILE,FCB =NRW LDX 0 FBLMOD(1) =P?G SBN 0 FBLKS-A1 =PR6 SBX 0 5 =Q=Q BNZ 0 XIN =QQB BACKSPACE [REPOSITOON DIRECTORY =R=2 NIX =RPL MHUNTW 1,FILE,ENT =S9= TESTMODE 7,YEM,,EMPTY =SNW LDX 0 ECOPS(1) [IF NEITHER EMPTY MODE NOR EMPTY & =T8G BNZ 0 XACC [OFFLINE FILE EXIT FROM CHAPTER =TN6 MHUNTW 3,FILE,FCB =W7Q LDN 5 8 [SET DEFAULT NUMBER OF B.S. BLOCKS =WMB TESTMAIN 7,YEMOF,NOT,READING =X72 LDN 5 0 [READ CASE REQUIRES B.S. RESIDENCE =XLL BRN YEMOF [NUMBER FOR BSPRE =Y6= YEM =YKW TESTMODE 7,XACC,,ERASING =^5G LDEX 0 ECOPS(1) =^K6 LDN 5 8 [SHOULD BE GOT UNLESS FILE ALLOCATED =^WG ... BNZ 0 NOTEMOF ?27W ... JMBS YEMOF,1,BESERIAL,BEMT ?2F= ... NGN 5 1 ?2QL ... BRN YEMOF ?342 ...NOTEMOF ?3*B ... CALL 6 XALLOC ?3LQ ... BRN XACC [IF NOT ALLOCATED,GET NO BS. ?3Y6 ...#SKI K6OPENREL>100-100 ?49G ... TRACE 4,SRES ?4GW MHUNTW 2,BSTB,FULLB [IF NO FULLB GIVEN NO B.S. REQUIRED ?52G BPZ 2 YALC ?5G6 XACC ?5^Q ACROSS ORELMAIN,1 ?6FB NONLD ?6^2 GEOERR 1,DIRNONL ?7DL XIN GEOERR 1,WRINDEX ?Q^L ...RESTCH ?RYW ... UP ?SDG ...RESTN ?SY6 ... MHUNTW 3,FILE,FCB [FCB IN ACT. CHAIN ?TCQ ... LDX 2 BFILE+1 [CHAIN AT END OF FILE CHAIN ?TXB ... CHAIN 3,2 ?WC2 ... BRN RESTCH ?WWL ...STACK ?XB= ...#HAL FILE+FSTACK,0 #78= [ #7MW MENDAREA GAPOPEN,K99OPENREL #87G #END ^^^^ ...30575700000400000000 </code> Last modified: 17/01/2024 11:55by 127.0.0.1 Log In