COMPOST867

(George Source)

Macros used: ADDINMODE, ANSOK2, BBS, BBUS, BS, BXE, BXGE, BXL, BXU, CLOSE, CLOSEDIR, CLOSEMULT, ERASEMULT, FCBFIND, FINDWFN, GEOERR, HSPACTLF, HUNT2, JBC, JBCC, JMBAC, LFSIZE, MENDAREA, MHUNT, MHUNTW, NAME, PICKREP2, PUTREP2, REWRITE, RV, SEG, SEGENTRY, SETMODE, SETREP2, SETUPCORE, SFCB, TESTMODE, TESTREP2, TOPFCB2, TRACE, UNOPCH, UP, UPPLUS

COMPOST867.txt
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