{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: COMPOST867)}} ====== COMPOST867 ====== (George Source) **Macros used:** [[george:macro:ADDINMODE|ADDINMODE]], [[george:macro:ANSOK2|ANSOK2]], [[george:macro:BBS|BBS]], [[george:macro:BBUS|BBUS]], [[george:macro:BS|BS]], [[george:macro:BXE|BXE]], [[george:macro:BXGE|BXGE]], [[george:macro:BXL|BXL]], [[george:macro:BXU|BXU]], [[george:macro:CLOSE|CLOSE]], [[george:macro:CLOSEDIR|CLOSEDIR]], [[george:macro:CLOSEMULT|CLOSEMULT]], [[george:macro:ERASEMULT|ERASEMULT]], [[george:macro:FCBFIND|FCBFIND]], [[george:macro:FINDWFN|FINDWFN]], [[george:macro:GEOERR|GEOERR]], [[george:macro:HSPACTLF|HSPACTLF]], [[george:macro:HUNT2|HUNT2]], [[george:macro:JBC|JBC]], [[george:macro:JBCC|JBCC]], [[george:macro:JMBAC|JMBAC]], [[george:macro:LFSIZE|LFSIZE]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:NAME|NAME]], [[george:macro:PICKREP2|PICKREP2]], [[george:macro:PUTREP2|PUTREP2]], [[george:macro:REWRITE|REWRITE]], [[george:macro:RV|RV]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETMODE|SETMODE]], [[george:macro:SETREP2|SETREP2]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:SFCB|SFCB]], [[george:macro:TESTMODE|TESTMODE]], [[george:macro:TESTREP2|TESTREP2]], [[george:macro:TOPFCB2|TOPFCB2]], [[george:macro:TRACE|TRACE]], [[george:macro:UNOPCH|UNOPCH]], [[george:macro:UP|UP]], [[george:macro:UPPLUS|UPPLUS]] 22FL ... SEG COMPOST,82,MIKE PUTNAM,USEROPES 22^= [ 2394 ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1983 23DW [ 23YG SEGENTRY K1COMPOST,NEXTELEM 24D6 SEGENTRY K3COMPOST,SINGLFREZ 24XQ SEGENTRY K4COMPOST,MDFREEZE 25CB SEGENTRY K7COMPOST,MDFCLOSE 25X2 SEGENTRY K8COMPOST,MULTIFREZ 26BL [ 26W= [ 27*W [ K1 USED BY USERONE TO CALCULATE GEN. NO. FOR OPENING NEXT 27TG [ ELEMENT OF A MULTIFILE, SETTING REPLY AND CLOSING MDF IF NECESS. 28*6 [ 28SQ [ 29#B [ THIS CONTAINS THE SECURE JOBWELL ENHANCEMENT 29S2 [ AWORK1 CONTAINS E-MODES 2=?L [ AWORK3 - CONTAINS EAUTOCOUNT - IF 'FREEZE' MODE 2=R= [ CONTAINS ESAVECOUNT - IF 'SAVEFREEZE' MODE 2?=W [ AWORK4 - CONTAINS FREEZECOUNT - IF 'FREEZE' MODE 2?QG [ CONTAINS FSVCT - IF 'SAVEFREEZE' MODE 2#=6 NEXTELEM 2#PQ LDX 6 5 [USEROPEN MODES IN X5 ON ENTRY 2*9B STO 6 AWORK1(2) 2*P2 SETMODE 5,ERASE,EMPTY 2B8L ANDX 5 6 2BN= ANDN 6 #7000 2C7W SBN 6 #3000 [ [X6] -VE IF READ MODE 2CMG LDN 7 0 2D76 CALL 4 SFCB [SETS X2 -> FCB OF MDF 2DLQ LDN 3 1 [SET NOT FIRST APPEND 2F6B [ PUT CURRENT HIGHEST GEN.IN X4 2FL2 LDEX 4 FSTREND(2) 2G5L MHUNT 1,FILE,FABSNB 2GK= SMO A1(1) 2H4W [ PUT LAST GEN.ACCESSED IN X7 2HJG LDX 7 A1-2(1) 2J46 BPZ 6 WRIT [J IF WRITER 2JHQ SBN 4 2 2K3B BNG 4 MULTEND [J IF NO ELEMENTS AND READING 2KH2 ADN 4 2 2L2L TRY 2LG= BXE 4 7,MULTEND [END OF MULTIFILE 2L^W #SKI K6COMPOST>99-99 2MFG ( 2M^6 BXGE 4 7,OK 2NDQ GEOERR 1,CURR-END 2NYB OK 2PD2 ) 2PXL TINC 2QC= ADN 7 1 2QWW BPZ 6 NORV [NO RETRIEVE FOR WRITER 2RBG SETMODE 0,DIR [LF DOES USEROPEN WITH DIR MODE 2RW6 SMO FX2 2S*Q ANDX 0 AWORK1 2STB BNZ 0 NORV [NOR IF NOT OPENING FILE 2T*2 ADN 7 1 2TSL BXL 4 7,NORU [PRESENT ELEMENT IS LAST ONE 2W#= SMO A1(1) 2WRW STO 7 A1-2(1) [FABSNB SET UP FOR UNNORM 2X?G RV [RETRIEVE NEXT ELEMENT 2XR6 MHUNT 1,FILE,FABSNB 2Y=Q NORU 2YQB SBN 7 1 [GEN RIGHT FOR NEXT ELEM TO OPEN 2^=2 NORV 2^PL SMO A1(1) 329= STO 7 A1-2(1) 32NW UPPLUS 1 338G WRIT 33N6 BNZ 5 NAPP [NOT EMPTY OR ERASE IMPLIES APPEND 347Q [ APPEND CASE 34MB BXU 7 3,NOTAPP1 3572 LDN 3 0 [SET FIRST APPEND 35LL NOTAPP1 366= SBN 4 2 36KW BNG 4 TINC [J IF NO ELEMS, ASSUMES [X7] = 1 375G ADN 4 2 37K6 [ IGNORE FABSNB CONTENTS, SET [X7] = CURRENT HIGHEST GEN. NO. 384Q LDX 7 4 38JB NAPP 3942 SEGENTRY K50COMPOST [FOR MENDING: TINYMULT MACRO 39HL LDN 4 FMULTLEN [MAX NO. OF ELEMENTS IN MULT 3=3= BRN TRY 3=GW MULTEND 3?2G CLOSEMULT 3?G6 BZE 3 OPAPP [J IF FIRST APPEND 3?^Q SETREP2 ENDMULT 3#FB UP 3#^2 OPAPP 3*DL SETREP2 MULTFULL [MULTIFILE HAS BEEN FILLED UP 3*Y= UP 3BCW [ 3BXG [ 3CC6 [ 3CWQ SINGLFREZ 3DBB CALL 7 SVFRZMOD [ SET UP AWORK3,4 APPROPRIATELY 3DW2 CALL 4 SOLID [FREEZE DIR. ENTRY & FCB IF IN CORE 3F*L UP 3FT= [ 3G#W [ 3GSG [ ENTRY FOR UPDATING CURRENT AND TRUE ENDS OF MULTIFILE IN THE 3H#6 [ MDF FROM THE GEN. NO. GIVEN IN FABSNB WHEN OPENING A NEW 3HRQ [ ELEMENT FOR WRITING. THE ELEMENT'S FCB AND DIR. ENT ARE FROZEN 3J?B [ AND MARKED TO BE ERASED IF NECESSARY. THE MDF IS USED TO 3JR2 [ DETERMINE WHETHER OR NOT TO DO SO. 3K=L [ 3KQ= [ 3L9W MDFREEZE 3LPG CALL 7 SVFRZMOD [ SET UP AWORK3,4 APPROPRIATELY 3M96 LDN 7 2 3MNQ CALL 4 SFCB [OF MDF 3N8B MHUNT 1,FILE,FABSNB 3NN2 SMO A1(1) 3P7L LDX 0 A1-2(1) [GEN. NO. 3PM= LDEX 4 FSTREND(2) [HIGHEST GEN. NO. BEFORE UPDATE 3Q6W LDCT 1 #377 3QLG ANDX 1 FSTREND(2) 3R66 SLC 1 9 3RKQ SBX 1 0 3S5B BPZ 1 NOALT 3SK2 LDX 1 0 3T4L SRC 1 9 3TJ= ERX 1 FSTREND(2) 3W3W LDCT 6 #377 3WHG ANDX 1 6 3X36 ERS 1 FSTREND(2) [RE-SET TRUE END 3XGQ NOALT 3Y2B DEX 0 FSTREND(2) [NEW CURR END 3YG2 LDX 5 FREEZECOUNT(2) 3Y^L [ CHECK IF MDF IS TO BE ERASED 3^49 ...#UNS ILOGACC 3^6S ...( 3^9C ... LDN 6 0 [ENT REWRITE MARKER 3^#2 ... MHUNTW 3,FILE,ENT 3^BK ...) 3^F= BBUS 14,FSTREND(2),NOB14 [J IF NOT ERASED 3^JB ...#UNS ILOGACC 3^MG ... ADN 6 1 [INDICATE ENT TO BE REWRITTEN 3^QL ...#UNS ILOGACC 3^TQ ...#SKI 3^YW MHUNTW 3,FILE,ENT 42DG BS 3,BEERASE [MARK MDF'S ENT T.B.E. 42KN ...#UNS ILOGACC 42QW ...#SKI 42Y6 BZE 5 NOFREZ 43CQ NOB14 43DT ...#UNS ILOGACC 43FY ...( 43H3 ... JBC NOLOG,2,BFLOGACC 43J6 ... ADN 6 1 [INDICATE ENT TO BE REWRITTEN 43K9 ... BS 3,BELOGACC 43L# ...NOLOG 43MC ... BNZ 5 YFRZ [MULT FROZEN 43NG ... BZE 6 UP [ENT NOT TO BE REWRITTEN 43PK ... BRN NOFREZ [ENT TO BE REWRITTEN 43QN ...YFRZ 43RR ...) 43SW ...#UNS ILOGACC 43T^ ...#SKI 43XB BZE 5 UP [X5=OK REPLY 44C2 LDX 6 FSTRID(2) 44WL HSPACTLF 6,5,4 [AVOIDS LF FROM OTHER JOB PROBLEM 45B= NOFREZ 45TW CALL 4 SOLIDIFY 46*G PICKREP2 5 46T6 UP 47#Q CLOSEDIR 47SB PUTREP2 5 48#2 UP 48RL 49?= 49QW [ 4==G [ 4=Q6 [ THIS IMPLEMENTS THE CLOSEMULT MACRO WHICH ERASES 4?9Q [ ANY EXTRANEOUS ELEMENTS OR THE WHOLE MULTIFILE IF SO MARKED. 4?PB [ IF TOP FILE OPEN IS NOT AN MDF A NORMAL CLOSE IS DONE. 4#92 [ 4#NL [ 4*8= MDFCLOSE 4*MW LDN 7 0 4B7G ... TOPFCB2 2 [AT TOP LEVEL 4BM6 JBCC XLAST,2,BFMDFOP [J IF NOT MDF, OTHERWISE CLEAR BIT 4C2T ... LDX 0 CTOPEN(2) 4CBJ ... ANDX 0 HALFTOP 4CQ? ... BZE 0 READMODE [J IF OPEN FOR READING 4D62 LDEX 5 FSTREND(2) [NEW HIGHEST GEN. NO. 4DKL LDCT 0 #400 4F5= ORS 0 FSTREND(2) 4FJW ERS 0 FSTREND(2) [UNSET WRITER BIT 4G4G LDX 3 FREEZECOUNT(2) 4GJ6 ... BZE 3 SNOFREZ [J IF MULT NOT FROZEN 4H3Q LDX 4 FSTRID(2) [ID FOR ACTLF'S 4HHB STOZ FREEZECOUNT(2) 4J32 HSPACTLF 4,3,5,1 4JGL ... TOPFCB2 2 [RELOCATE MDF'S FCB 4K2= ...SNOFREZ 4KFW STOZ FSTRID(2) 4K^G LDEX 0 FSTREND(2) [CURR. END 4LF6 LDCT 1 #377 4LYQ ANDX 1 FSTREND(2) [TRUE END 4MDB SLC 1 9 4MY2 SBX 0 1 4NCL BNG 0 XER [J IF EXCESS ELEMENTS 4NX= LDN 0 #1000 4PBW ANDX 0 FSTREND(2) [PICK OUT TO-BE-ERASED BIT IF PRESENT 4PWG BZE 0 XLAST 4QB6 XER 4QTQ #SKI K6COMPOST>99-99 4R*B TRACE FSTREND(2),FSTREND 4RT2 [ DUPLICATE FABSNB BEFORE DOING ERASEMULT WHICH IS AUTONOMOUS 4S#L [ AND CONSUMES A FABSNB 4SS= MHUNT 2,FILE,FABSNB 4T?W LDX 3 HDREC(2) 4TRG SETUPCORE 3,1,FILE,FABSNB 4W?6 HUNT2 2,FILE,FABSNB,1 4WQQ LDN 5 HDREC(2) 4X=B LDN 6 HDREC(1) 4XQ2 MOVE 5 0(3) 4Y9L LDX 0 ATYPE(2) 4YP= STO 0 ATYPE(1) 4^8W ERASEMULT [START UP MULTIFILE ERASE 4^NG ... BRN XCLMULTUP [FINISH 5286 XLAST 52MQ CLOSE [MDF OR TOP FILE 52PF ...XCLMULTUP 537B UP 53M2 READMODE 53WS ... LDX 0 CTOPEN(2) 546L SBN 0 1 [X0=COUNT OF READERS 54L= BZE 0 SNOFREZ [J IF LAST CLOSER 555W BS 2,BFMDFOP [SET BIT AGAIN 55KG BRN XLAST [SHD BE IN SAME COORD AS UNSETTING 5656 [ 56JQ [ 574B [ 57J2 MULTIFREZ [USED BY USERSTRM 583L CALL 7 SVFRZMOD [ SET UP AWORK3,4 APPROPRIATELY 58H= CALL 4 SOLIDCOMP [FREEZE ELEMENT 592W UP 59GG [ 5=26 [ 5=FQ 5=^B 5?F2 SFCB 5?YL # LOCATES THE FCB FOR THE FILE AT DEPTH SPEC BY X7 5#D= # LEAVES X2-> FCB ; DESTROYS X0,X1; LINK IS X4 5#XW SFCB 7,2 5*CG EXIT 4 0 5*X6 5BBQ 5BWB # FREEZES DIRENT & FCB (IF IN CORE) FOR FILE SPEC. IN ENT BLOCK. 5CB2 # ENTRY AT SOLID => DIR OPEN ON TOP 5CTL [ ENTRY AT SOLIDCOMP USED SOLELY FOR FREEZING ELEMENTS OF 5D*= [ MULTIFILES-OTHERWISE AS FOR SOLID 5DSW # ENTRY AT SOLIDIFY => FILE OPEN ON TOP, DIR OPEN AT DEPTH 1 5F#G # EXPECTS DIR. POSITIONED READY TO REWRITE ENTRY 5FS6 # SOLIDIFY EXPECTS THE NO OF TIMES TO FREEZE IN X5 5G?Q SOLID 5GRB MHUNT 1,FILE,FABSNB 5H?2 BBS 16,ATYPE(1),WORK [J IF WORKFILE BEING FROZEN 5HQL SOLIDCOMP 5J== LDN 0 0 [DEPTH AT WHICH DIR.OPEN 5JPW LDN 5 1 [FREEZE ONCE 5K9G BRN SOL0 5KP6 SOLIDIFY 5L8Q LDN 0 1 [DEPTH AT WHICH DIR.OPEN 5LNB SOL0 5M82 SBX 4 FX1 5MML LDX 2 FX2 5N7= ... STO 4 AWORK2(2) 5P3W ... LDX 4 0 [SAVE DEPTH OF DIR IN X4 5PDW ... LDN 6 0 [CLEAR FILE OPEN FOR WRITING 5PTW ... [MARKER 5Q=W ... BZE 4 SOL [J IF FILE NOT OPEN TO ACT 5QMW ... TOPFCB2 2 [X2->FCB OF FILE 5R52 BRN SOLTOP 5RJL [ 5S4= [ FILE NOT OPEN TO THIS ACT.SEARCH FILE CHAIN FOR IT TO FREEZE THE 5SHW [ FCB-IT MAY NOT BE THERE,OF COURSE 5T3G [ 5TH6 SOL 5W2Q ... FCBFIND 2,SOLD 6H^W [ 6JFG [ READY TO FREEZE FCB OF FILE.X2->FCB 6J^6 [ 6KDQ SOLTOP 6KYB ... UNOPCH 2,YWRIT 6LD2 ... BRN SOLTOPN 6LXL ...YWRIT 6MWW LDN 6 1 [MARK: OPEN FOR WRITING 6NBG SOLTOPN 6NW6 LDX 3 2 [ X3-> FCB 6P*Q LDX 2 FX2 6Q*2 SMO AWORK4(2) 6QSL LDEX 0 0(3) [ FREEZECOUNT OR FSVCT 6R#= ... CALL 7 SCHECKLIM [CHECK NOT TOOMANY LF'S 6RRW ... BRN SOUT [CLANG! 6SR6 SMO AWORK4(2) 6T=Q ADS 5 0(3) [ FREEZECOUNT OR FSVCT 6TQB #SKI K6COMPOST>99-99 6W=2 TRACE FLOC1(3),FCBFROZE 6WPL [ 6X9= ...[ READY TO FREEZE DIR.ENTRY.DIR AT LEVEL IN X4 6XNW SOLD 6XYN ... LDX 1 4 [SAVE DEPTH OF DIR IN X1 6Y8G LDX 2 FX2 [ RESET X2=>CPAT 6YN6 MHUNTW 3,FILE,ENT 6^7Q SMO AWORK3(2) 6^MB ... LDEX 0 0(3) [ EAUTOCOUNT OR ESAVECOUNT 7272 ... CALL 7 SCHECKLIM [CHECK NOT TOOMANY LF'S 72LL ... BRN SOUT 73KW SMO AWORK3(2) 745G ADS 5 0(3) [ EAUTOCOUNT OR ESAVECOUNT 74K6 NAME 3,FILE,FWB 754Q REWRITE 0(1) 75JB MHUNTW 1,FILE,FWB 7642 NAME 1,FILE,ENT 7655 ...#UNS AWLSZ 7668 ...( 767? ... BNZ 6 YUNCL [J IF OPEN FOR WRITING 768B ... LDX 7 ECOPS(1) 769F ... SRL 7 15 [PICK UP SIZE OF FILE 76=J ... JMBAC NOTMULT,1,BEMDF,BEMULT [J IF SINGLE FILE 76?M ... LDX 3 EGEN(1) [PICK UP GENERATION NO. OF MULTEL 76#Q ... LFSIZE 7,3 [INFORM LISTFILE 76*T ... BRN YUNCL 76BY ...NOTMULT 76D3 ... LFSIZE 7 [INFORM LISTFILE 76F6 ...YUNCL 76G9 ...) 76HL ANSOK2 773= SOUT 77GW LDX 2 FX2 782G STO 6 ACOMMUNE1(2) [SAVE FOR USERSTRM 78G6 ... LDX 4 AWORK2(2) 78^Q ADX 4 FX1 79FB EXIT 4 0 7*W2 WORK 7*^# ... FINDWFN ,3,1 [X3=FCB OF WFILE 7B4M ... TESTREP2 NOTFOUND,(GEOERR) 7B6W ... LDN 5 1 7B?# ... LDX 0 FREEZECOUNT(3) 7BCQ ... CALL 7 SCHECKLIM [CHECK NOT TOOMANY LF'S 7BJ8 ... EXIT 4 0 [ERROREXIT 7BNL ... ADS 5 FREEZECOUNT(3) 7BP2 ...#UNS AWLSZ 7BPB ...( 7BQ6 ... UNOPCH 3,(4) 7BQW ... LDX 7 FBLMOD(3) 7BR= ... SBN 7 FBLKS-A1 7BRL ... SBX 4 FX1 7BS2 ... LFSIZE 7 7BSB ... ADX 4 FX1 7BSQ ...) 7BT= EXIT 4 0 7C#W [ 7C*T ...SCHECKLIM 7CBS ...[ SR TO CHECK IF LF LIMIT EXCEEDED. X0= CURRENT FREEZECOUNT 7CCR ...[ X2=FX2, X5=COUNT OF NEW FREEZES. EXITS 7 1 IF LIMIT NOT REACHED 7CDQ ...[ OR IF FREEZE MODE NOT SPECIFIED. OTHERWISE SETS REPLY LF512 7CFP ...[ AND EXITS 7 0 7CGN ... ADX 0 5 7CHM ... SEGENTRY K98COMPOST [USED BY LISTMAX MACRO 7CJL ... SBN 0 512 7CKK ... BPZ 0 XLIM 7CLJ ...NFREZ EXIT 7 1 7CMH ...XLIM TESTMODE AWORK1(2),NFREZ,,SAVEFREEZE 7CNG ... SETREP2 LF512 7CPF ... EXIT 7 0 7CQD ...[ 7CRC ...[ 7CSG SVFRZMOD [ SETS UP AWORK3,4 7D#6 STOZ 4 7DRQ ADDINMODE ,4,SAVEFREEZE 7F?B ANDX 4 AWORK1(2) [ E-MODES 7FR2 BNZ 4 SAVEGIVEN [ 'SAVEFREEZE' GIVEN 7G=L LDN 0 EAUTOCOUNT 7GQ= LDN 4 FREEZECOUNT 7H9W BRN STORMODS [ GO STORE VALUES 7HPG SAVEGIVEN 7J96 LDN 0 ESAVECOUNT 7JNQ LDN 4 FSVCT 7K8B STORMODS 7KN2 STO 0 AWORK3(2) [ STORE VALUES 7L7L STO 4 AWORK4(2) 7LM= EXIT 7 0 7M6W [ 7MLG [ 7N66 ... MENDAREA 60,K99COMPOST 7P5B #END ^^^^ ...42304755000200000000