BUDGTWO84
(George Source)
Macros used: BC, BUDGCHAR, BUDGUSE, BUDGUSEN, BUDGWRITE, BXE, BXU, CHNUMCON, CJOBLOCK, CLOSE, CLOSETOP, DICTJL, DICTWELL, ERROR, ERRORX, FINDNAME, FNORM, FREECORE, GEOERR, HUNT, HUNT2, JBC, KEEPREP, MENDAREA, MFREE, MFREEW, MHUNT, MHUNTW, NAME, NAMETOP, OPEN, PARAPASS, PHOTO, PUTREP, PUTREP2, READDICT, REPLACE, SEG, SEGENTRY, SETNCORE, STEP, TESTMOVE, TESTREP2, TESTRPN2, TRACE, UP, UPPLUS, USERNORM, VFREEW
- BUDGTWO84.txt
22FL ... SEG BUDGTWO 23YG SEGENTRY K1BUDGTWO,QK1BUDGTWO 24D6 SEGENTRY K2BUDGTWO,QK2BUDGTWO 24XQ SEGENTRY K3BUDGTWO,QK3BUDGTWO 25CB SEGENTRY K4BUDGTWO,QK4BUDGTWO 25X2 SEGENTRY K5BUDGTWO,QK5BUDGTWO 26BL SEGENTRY K7BUDGTWO,QK7BUDGTWO 26W= SEGENTRY K9BUDGTWO,QK9BUDGTWO 27*W SEGENTRY K10BUDGTWO,QK10BUDGTWO 27TG SEGENTRY K11BUDGTWO,QK11BUDGTWO 28*6 SEGENTRY K12BUDGTWO,QK12BUDGTWO 28SQ SEGENTRY K31BUDGTWO,QK31BUDGTWO 29#B # 29S2 # THIS CHAPTER CONTAINS THE SUBROUTINES USED BY THE FOLLOWING 2=?L # BUDGET MACROS: 2=R= # BUDGERASE,BUDGCHAR,OPENBUDG,CLOSBUDG,CLOSBINC 2?=W # BUDGSTART 2?QG # 2#=6 MGCLASS +GCLASS [MASK FOR CLASSIFICATION 2#PQ MGPOR +GPOR [PRIVILEGE IDENTIFICATION 2*9B MGTOR +GTOR [TRANSIENT BUDGET IDENTIFICATION 2*P2 MGWORDS +GWORDS [NO. OF INFORMATION WORDS IN B.R. 2B8L NB +10 2BN= 12HMASTER 2C7W 12HDICTIONARY 2CMG +0 2D76 +1 2DLQ +0 2F6B #DEF UNAMED=A1 2FL2 #DEF UCURRENT=UNAMED+3 2G5L #DEF UTYPE=UCURRENT+3 2GK= #DEF UCHANGE=UTYPE+1 2H4W XJUSNA +JUSNA [USERNAME 2HJG XJBUDTYPE +JBUDTYPE [BUDGET TYPE 2J46 XJBUDCHAN +JBUDCHAN [BUDGET CHANGE 2JHQ XJPARMIS +JPARMIS [%C PARAMETER MISSING 2K3B XJNOPAR +JNOPAR [NO PARAMETERS 2KH2 XERB1 +ERB1 [NO SUCH BUDGET TYPE AS %C 2L2L XERB11 +ERB11 [%C IS NOT A TRANSIENT BUDGET 2LG= XJZPRIV +JZPRIV [PRIVILEGE SHOULD BE FOLLOWED 2L^W [ BY GIVE OR TAKE 2M74 ...#UNSET FTS1 2M#= ...XUSERF +ERUSERFORM [ERROR IN USERNAME 2MFG XGIVE 4HGIVE 2M^6 XTAKE 4HTAKE 2NDQ MAN 12HMANAGER 2NYB # 2PD2 # ROUTINE CALLED BY THE BUDGERASE MACRO,WHICH RETURNS THE BUDGETS 2PXL # OF A USER WHO IS BEING ERASED TO HIS IMMEDIATE SUPERIOR. 2QC= # THE SUPERIOR'S ENTRY IS REWRITTEN,BUT THE INFERIOR'S IS NOT. 2QWW # IT IS ASSUMED THAT THE INFERIOR USER HAS NO INFERIORS OTHER 2RBG # THAN PSUEDO-USERS. 2RW6 # ON ENTRY: 2S*Q # THE DICTIONARY IS OPEN,AND THE ENTRY FOR THE USER BEING ERASED 2STB # IS IN THE FIRST FILE,ADICTENT IN THE CHAIN. 2T*2 QK1BUDGTWO 2TSL MHUNTW 3,FILE,ADICTENT 2W#= LDX 7 CNUMQ(3) [SELECT NO. OF BUDGETS HELD BY INFERIOR 2WRW #SKI K6BMACROS>999-999 2X?G TRACE CNUMQ(3),GB Q001 2XR6 BZE 7 Q990 [IF ZERO,NO PROCESSING IS NECESSARY 2Y=Q LDX 5 CSUPUSER(3) [LOAD NAME OF THE 2YQB LDX 6 CSUPUSER+1(3) [SUPERIOR USER 2^=2 LDX 4 CSUPUSER+2(3) 2^PL TXU 5 MAN(1) [IF SUPERIOR USER IS MANAGER, 329= TXU 6 MAN+1(1) [NO UPDATE OF BUDGET REQUIRED 32NW TXU 4 MAN+2(1) 338G BCC Q990 33N6 SETNCORE 3,6,FILE,ADICT 347Q MHUNTW 3,FILE,ADICTENT 34MB LDN 5 CSUPUSER(3) 3572 ADN 6 A1 35LL MOVE 5 3 366= PHOTO 4 [OTHERWISE READ HIS SUPERIOR'S ENTRY 36KW READDICT 375G TESTREP2 OK,Q0035 37K6 GEOERR 1,NO SUPER 384Q Q0035 38JB TESTMOVE 4,Q004 3942 MHUNTW 3,FILE,ADICTENT [THE ENTRY FOR THE USER BEING ERASED 39HL HUNT2 3,FILE,ADICTENT [NOW IN THE SECOND FILE ADICTENT 3=3= Q004 3=GW STOZ 6 [X6 IS USED AS A MODIFIER FOR B.R.'S ; 3?2G Q1 SMO 6 3?G6 LDX 5 CQUANT(3) [SELECT NEXT BUDGET BIT PATTERN 3?^Q PHOTO 4 3#FB BUDGUSE 5 [READ SUPERIOR'S BUDGET RECORD 3#^2 #SKI K6BMACROS>150-150 3*DL TRACE 5,GBUDG Q1 3*Y= TESTREP2 OK,Q3 [IF SUPERIOR HAS NO SUCH BUDGET RECOR 3BCW SETNCORE GWORDS+1,2,JBUDGET,JBUDGUSER 3BXG STOZ A1+1(2) [SET UP A DUMMY B.R. FOR HIM 3CC6 LDN 0 A1+1(2) 3CWQ LDN 1 A1+2(2) 3DBB MOVE 0 GWORDS-1 [CLEARING ALL WORDS BUT THE BIT PATTERN 3DW2 LDX 1 FX1 3F*L STO 5 JBITS(2) 3FT= LDX 0 MGWORDS(1) 3G#W ANDX 0 5 3GSG STO 0 A1(2) 3H#6 #SKI K6BMACROS>999-999 3HRQ TRACE 5,GBUDNOBR 3J?B BRN Q301 3JR2 Q3 HUNT 2,JBUDGET,JBUDGUSER 3K=L Q301 TESTMOVE 4,Q303 3KQ= MHUNTW 3,FILE,ADICTENT [FIND SECOND DICTIONARY ENTRY 3L9W HUNT2 3,FILE,ADICTENT 3LPG Q303 ADX 3 6 3M96 LDX 0 MGWORDS(1) 3MNQ ANDX 0 5 3N8B TXL 0 A1(2) [NEW B.R.TO BE THE SAME SIZE AS THE 3NN2 BCS Q305 [LARGER OF THE OLD ONES 3P7L STO 0 A1(2) [ASSUMED BLOCK TO BE ZERO-FILLED 3PM= Q305 LDX 0 MGCLASS(1) 3Q6W ANDX 0 5 [SELECT BUDGET CLASSIFICATION 3QLG TXU 0 MGTOR(1) 3R66 BCC Q5 3RKQ # STABLE BUDGET RECORDS: 3S5B # RATION' (SUPERIOR) =RATION (SUP) +RATION (INFERIOR) 3SK2 # AMT.USED' (SUP) =AMT.USED (SUP) [NO CHANGE 3T4L # AMT.CONSUMED' (SUP) =AMT.CONSUMED(SUP) +AMT.CONSUMED(INF) 3TJ= LDX 0 CQUANT+JRATION-JBITS(3) 3W3W ADS 0 JRATION(2) [INCREMENT RATION 3WHG LDXC 0 CQUANT+JCONSUMED-JBITS+1(3) 3X36 ADSC 0 JCONSUMED+1(2) 3XGQ LDX 0 CQUANT+JCONSUMED-JBITS(3) 3Y2B ADS 0 JCONSUMED(2) [INCREMENT DOUBLE LENGTH AMT.CONSUMED 3YG2 LDX 1 MGWORDS(1) 3Y^L ANDX 1 5 3^F= SBN 1 5 3^YW BRN Q503 42DG # TRANSIENT BUDGETS 42Y6 # FOR EACH WORD IN THE TRANSIENT BUDGET RECORD (EXCLUDING BIT 43CQ # PATTERN) : 43XB # SUPERIOR'S NEW ENTRY = HIS OLD ENTRY + HIS INFERIOR'S ENTRY 44C2 Q5 LDX 0 CQUANT+JRATION-JBITS(3) 44WL ADS 0 JRATION(2) [INCREMENT RATION 45B= LDX 0 CQUANT+JALLOWED-JBITS(3) 45TW ADS 0 JALLOWED(2) 46*G LDX 0 JCONSUMED-JBITS+CQUANT(3) 46T6 ADS 0 JCONSUMED(2) 47#Q LDX 1 MGWORDS(1) 47SB ANDX 1 5 48#2 SBN 1 4 48RL Q503 BZE 1 Q6 49?= Q505 SMO 1 49QW LDX 0 CQUANT+4(3) 4==G SMO 1 [INCREMENT NON-STANDARD WORDS (IF ANY) 4=Q6 ADS 0 JBITS+4(2) 4?9Q BCT 1 Q505 4?PB Q6 BUDGWRITE [REWRITE SUPERIOR'S BUDGET RECORD 4#92 #SKI K6BMACROS>999-999 4#NL TRACE EXEC3(2),GBUDG Q6 4*8= SBX 3 6 [RESTORE POINTER IN X3 4*MW TESTMOVE 4,Q603 4B7G MHUNTW 3,FILE,ADICTENT 4BM6 HUNT2 3,FILE,ADICTENT [FIND INFERIOR'S ENTRY 4C6Q Q603 ANDX 5 MGWORDS(1) 4CLB ADX 6 5 4D62 MFREEW JBUDGET,JBUDGUSER 4DKL #SKI K6BMACROS>150-150 4F5= TRACE 7,GB Q606 4FJW BCT 7 Q1 4G4G MHUNTW 2,FILE,ADICTENT 4GJ6 NAME 2,FILE,FWB 4H3Q REPLACE 4HHB MFREEW FILE,FWB 4J32 Q990 4JGL #SKI K6BMACROS>999-999 4K2= TRACE K9,GIVEBDG7 4KFW UP 4K^G # 4LF6 # 4LYQ # BUDGCHAR SUBROUTINE 4MDB # THIS SUBROUTINE SETS UP A JBUDGET,JLINE BLOCK CONTAINING 4MY2 # THAT LINE FROM THE BUDGET DESCRIPTION LIST 4NCL # WHOSE CHARACTER STRING NAME MATCHES THE CHARACTER STRING NAME 4NX= # IN APARA OF THE FIRST CPB,CUNI BLOCK IN THE CHAIN. 4PBW QK2BUDGTWO 4PWG SETNCORE IZLINE,3,JBUDGET,JLINE 4QB6 STEP [READ BUDGET DESCRIPTION LIST 4QTQ HUNT 2,CPB,CUNI 4R*B #SKI K6BMACROS>99-99 4RT2 ( 4S#L BZE 3 R00 [MUST BE POSITIONED AT FIRST 4SS= LDX 0 CUSER-A1(3) 4T?W ADX 0 CUSER+1-A1(3) 4TRG ADX 0 CUSER+2-A1(3) 4W?6 BNZ 0 R00 4WQQ BPZ 2 R01 4X=B R00 GEOERR 1,BUDGCHAR 4XQ2 R01 TRACE APARA(2),B CHAR01 4Y9L ) 4YP= LDX 0 ANUM(2) 4^8W BNG 0 R03 [ERROR IF NO PARAMETER 4^NG BZE 0 R03 [OR VULL PARAMETER 5286 ANDN 0 #7777 52MQ SBN 0 9 537B BPZ 0 R03 [J IF MORE THAN 8 CHASRS 53M2 LDX 4 APARA(2) 546L LDX 5 APARA+1(2) 54L= ADN 0 4 555W BPZ 0 R010 [J IF MORE THAN 4 CHARS 55KG LDX 5 ACES 5656 R010 56JQ LDX 0 IZCOUNT-A1(3) [NO OF BUDGETS IN LIST 574B BZE 0 R03 57J2 R02 583L TXU 4 IZLIST+1-A1(3) [SEEK MATCHING CHARACTER STRING 58H= TXU 5 IZLIST+2-A1(3) 592W BCC R04 59GG ADN 3 IZLINE 5=26 BCT 0 R02 5=FQ R03 5=^B #SKI K6BMACROS>99-99 5?F2 TRACE 5,BCNOTYPE 5?YL VFREEW JBUDGET,JLINE 5#D= KEEPREP 7,NOSUCH 5#XW BRN R05 5*CG R04 MHUNTW 2,JBUDGET,JLINE 5*X6 LDN 5 JPATTERN(2) 5BBQ LDN 4 IZLIST-A1(3) [STORE BUDGET DESCRIPTION LINE 5BWB MOVE 4 IZLINE [IN JBUDGET BLOCK 5CB2 #SKI K6BMACROS>99-99 5CTL TRACE JPATTERN(2),BCHAR OK 5D*= KEEPREP 7,OK 5DSW R05 PUTREP 7 5F#G UP 5FS6 # 5G?Q # ROUTINE TO OPEN THE DICTIONARY AND READ THE PROPER USER'S ENTRY 5GRB # CALLED BY OPENBUDG 5H?2 QK3BUDGTWO 5HQL SETNCORE 10,5,FILE,FABSNB 5J== LDN 4 NB(1) 5JPW ADN 5 A1 5K9G MOVE 4 10 5KP6 OPEN XBREAK,GENERAL 5L8Q HUNT 3,FILE,FABSNB 5LNB NAME 3,FILE,ADICT 5M82 CJOBLOCK 2 5MML ADN 2 JUSER 5N7= ADN 3 A1 5NLW MOVE 2 3 5P6G READDICT 5PL6 #SKI K6BMACROS>101-101 5Q5Q TRACE EXEC3(2),OPENBUDG 5QKB UPPLUS 1 5R52 XBREAK 5RJL GEOERR 1,BUDGBRK 5S4= # 5SHW # ROUTINE TO OPEN THE DICT.(GENERAL) AND READ THE ENTRY FOR THE OWNE 5T3G # OF FILES IN THE DIRECTORY SPECIFIED BY THE INPUT FABSBN, 5TH6 # WHICH MUST BE 4 WORDS ONLY 5W2Q QK31BUDGTWO 5WGB #SKI K6BMACROS>99-99 5X22 ( 5XFL MHUNT 1,FILE,FABSNB 5X^= LDN 0 4 5YDW SBX 0 ALOGLEN(1) 5YYG BZE 0 ST00 5^D6 WRNG GEOERR 1,ABSWRONG 5^XQ ST00 62CB ) 62X2 FINDNAME [EXPAND PABSNB 63BL TESTRPN2 OK,ST30 63W= MHUNT 1,FILE,FABSNB 6427 ... LDN 0 4 6464 ... SBX 0 ALOGLEN(1) 649^ ... BZE 0 ST30 64*W LDX 2 A1(1) 64TG ADX 2 1 65*6 ST10 65SQ LDX 0 A1-2(2) 66#B BPZ 0 ST20 [J IF NOT PSEUDO 66S2 SBN 2 6 67?L BRN ST10 [LOOK AT NEXT USER UP 67R= ST20 68=W ADN 2 A1-5 68QG LDN 3 A1(1) 69=6 MOVE 2 3 [MOVE USERNAME TO TOP OF BLOCK 69PQ NAME 1,FILE,ADICT [& NAME IT AN ADICT 6=9B SETNCORE 10,2,FILE,FABSNB 6=P2 LDN 1 NB(1) 6?8L ADN 2 A1 6?N= MOVE 1 10 6#7W OPEN XBREAK,GENERAL [DICT. 6#MG MFREE FILE,FABSNB 6*76 READDICT 6*LQ TESTREP2 OK,ST31 6*WJ ... TESTREP2 NOUSER,ST30A 6B6B GEOERR 1,B2WRONG 6BL2 ST31 6C5L UPPLUS 1 6C=S ...ST30A 6CD2 ... CLOSE 6CK= ST30 6D4W UP 6DJG # 6F46 # CLOSBUDG 6FHQ # ROUTINE TO RE-WRITE ENTRY AND CLOSE THE DICTIONARY 6G3B QK4BUDGTWO 6GH2 QK5BUDGTWO 6H2L MHUNTW 2,FILE,ADICTENT 6H4J ... JBC NOUP,2,BMONCS [J IF MONEY NOT CHANGED SIGN 6H5H ... BC 2,BMONCS 6H6G ... BUDGUSEN GMONEY [GET MONEY BUDGET RECORD 6H8D ... MHUNTW 3,JBUDGET,JBUDGUSER 6H=B ... MHUNTW 2,FILE,ADICTENT 6H?* ... LDX 7 JALLOWED(3) 6H## ... SBX 7 JCONSUMED(3) 6H*? ... DICTWELL CUSER(2),MONEY,7 [UPDATE JOBLIST ETC 6HB= ... MFREEW JBUDGET,JBUDGUSER 6HD8 ...NOUP MHUNTW 2,FILE,ADICTENT 6HG= NAME 2,FILE,FWB 6H^W REPLACE 6JFG MFREEW FILE,FWB 6J^6 CLOSE 6K6# ...#UNSET FTS1 6K?G ... DICTJL 6KDQ #SKI K6BMACROS>101-101 6KYB TRACE K7,CLOSBUDG 6LD2 UP 6LXL # 6MC= # 6MWW # BUDGSTART ROUTINE 6NBG # THE BUDGSTART ROUTINE CHECKS THAT A USER IS NOT OVERDRAWN ON 6NW6 # HIS MONEY BUDGET. 6P*Q QK7BUDGTWO 6PTB BUDGUSEN GMONEY 6Q*2 #SKI K6BMACROS>101-101 6QSL TRACE EXEC3(2),BUDGSTAR 6R#= KEEPREP 7,OK [IF THE USER HAS NO MONEY BUDGET RECORD, 6RRW TESTRPN2 OK,W06 [HE MAY CONTINUE(AS HE IS NOT OVERDRAWN) 6S?G MHUNTW 3,JBUDGET,JBUDGUSER 6SR6 LDX 6 JALLOWED(3) [IF THE USER HAS CONSUMED MORE MONEY 6T=Q SBX 6 JCONSUMED(3) [THAN HE HAS AVAILABLE, 6TQB #SKI K6BMACROS>90-90 6W=2 TRACE 6,MONEYLFT 6WPL BPZ 6 W04 6X9= KEEPREP 7,NOTENUF [THE REPLY IS NOTENUF 6XNW W04 FREECORE 3 6Y8G W06 PUTREP2 7 6YN6 UP 6^7Q # 6^MB QK9BUDGTWO 7272 LDN 4 0 72LL LDX 5 GSIGN 736= BRN QIN 73KW QK10BUDGTWO 745G LDN 4 0 74K6 LDN 5 0 754Q BRN QIN 75JB QK11BUDGTWO 7642 LDX 4 GSIGN 76HL LDN 5 0 773= QIN LDN 6 0 77GW LDN 7 0 782G LDN 3 2 78G6 S1 SPARAPASS 78^Q HUNT 1,CPB,CUNI 79FB NGX 0 ANUM(1) 79^2 BPZ 7 S6 [J. UNLESS USERNAME ALREADY FOUND 7=DL BPZ 0 QR1 [J. IF PARAMETER MISSING 7=Y= S2 BNG 6 QR3 [J IF USERNAME NOT FOUND 7?CW SETNCORE 10,2,FILE,FABSNB 7?XG ADN 2 A1 7#C6 ADN 1 NB 7#WQ MOVE 1 10 7*BB OPEN SBREAK,READ,QUERY 7*W2 TESTREPN OK,QR10 7B*L BUDGCHAR 7BT= TESTREP2 NOSUCH,QR7 7C#W CLOSETOP 7CJN ... MFREE FILE,FABSNB [FREE :MASTER'S FABSNB 7CSG ORX 6 GSIGN [SET BUDGET TYPE FOUND MARK 7D#6 BPZ 5 S25 [J. UNLESS BQ 7DRQ MFREE CPB,CUNI 7F?B BRN S11 7FR2 S25 MHUNTW 2,JBUDGET,JLINE 7G=L LDX 0 4 7GQ= LDX 4 JPATTERN(2) 7H9W BNG 0 S14 [J. IF ALLOWANCE COMMAND 7HPG S3 MFREE CPB,CUNI 7J96 PARAPASS 7JNQ HUNT 2,CPB,CUNI 7K8B NGX 0 ANUM(2) 7KN2 ANDX 4 MGCLASS(1) 7L7L BXU 4 MGPOR(1),S5 [J. UNLESS PRIVILEGE 7LM= ADN 0 4 7M6W BNZ 0 QR5 [J. IF NOT 4 CH IN PARAMETER 7MLG LDN 4 1 7N66 LDX 0 APARA(2) 7NKQ BXE 0 XGIVE(1),S4 [J IF GIVE X4=1 7P5B LDN 4 0 7PK2 BXU 0 XTAKE(1),QR5 [J. IF NOT GIVE OR TAKE 7Q4L S4 MFREE CPB,CUNI 7QJ= SETNCORE 15,2,ADATA,CSTORE 7R3W ADN 2 1+A1 7RHG LDX 1 2 7S36 SBN 1 1 7SGQ STOZ 0(1) 7T2B MOVE 1 14 7TG2 SBN 2 A1+1 7T^L STO 4 UCHANGE(2) 7WF= MHUNTW 1,JBUDGET,JLINE 7WYW LDX 4 JPATTERN(1) 7XDG STO 4 UTYPE(2) 7XY6 BRN S11 7YCQ S5 BPZ 0 QR4 7YXB CHNUMCON 7^C2 TESTREP2 CHNUMERR,QR9 7^WL MHUNTW 1,CPAR,GNUMCON 82B= LDX 4 A1+1(1) 82TW FREECORE 1 83*G BRN S4 83T6 S6 BNZ 0 S8 [J. UNLESS NULL PARAMETER 84#Q MFREE CPB,CUNI 84SB BPZ 5 QR3 [J. UNLESS BUDGETQVERY COMMAND 85#2 S7 SETNCORE 3,2,FILE,ADICT 85RL CJOBLOCK 1 86?= LDX 2 FPTR(2) 86QW ADN 1 JUSER 87=G ADN 2 A1 87Q6 MOVE 1 3 889Q BRN S10 88PB S8 BNG 0 S9 [J. UNLESS NONEXISTANT PARAMETER 8992 MFREE CPB,CUNI 89NL BPZ 6 QR2 [J. UNLESS BUDGET TYPE ALREADY FOUND 8=8= BNG 5 S7 [J. IF BUDGETQUERY COMMAND 8=MW BRN QR3 [ERROR: USERNAME PARAMETER MISSING 8?7G S9 LDCH 0 APARA(1) 8?M6 SBN 0 #12 8?TB ... BNZ 0 S2 [J UNLESS 1ST CHAR IS A COLON 8#3L ...#UNSET FTS1 8#9W ...#SKI 8#D6 ...( 8#LB USERNORM ATYPE(1) [B15-23 HOLD THE PARAMETER NUMBER 8*62 TESTREP2 USERFORM,QR8 8*6S ...) 8*7L ...#UNSET FTS1 8*8D ...( 8*9= ... NAMETOP 1,FILE,FNAME 8*=4 ... FNORM 1 [USERNAME 8*=W ... TESTREP2 NAMEFORM,QR6A 8*?N ... MHUNT 1,FILE,FNAME 8*#G ... NAMETOP 1,CPB,CUNI 8**# ... MHUNT 1,FILE,FABSNB 8*B6 ... LDX 0 A1(1) [FABSNB 8*BY ... SBN 0 4 [MUST BE 8*CQ ... BNZ 0 QR6A [4 WORDS LONG 8*DJ ... SETNCORE 3,2,FILE,ADICT 8*FB ... MHUNT 1,FILE,FABSNB 8*G8 ... ADN 1 A1+1 [MOVE USER 8*H2 ... ADN 2 A1 [NAME INTO 8*HS ... MOVE 1 3 [ADICT 8*JL ...) 8*KL S10 ORX 7 GSIGN [SET'USE-5AME FOUND' MARK 8B5= S11 BCT 3 S1 [LOOP ON COUNT 8BJW BNG 5 S13 [J. IF BUDGETQUERY COMMAND 8C4G MHUNTW 1,FILE,ADICT 8CJ6 MHUNTW 2,ADATA,CSTORE 8D3Q ADN 1 A1 8DHB ADN 2 UNAMED 8F32 MOVE 1 3 8FGL S12 SETNCORE 3,2,FILE,ADICT 8G2= CJOBLOCK 1 8GFW LDX 2 FPTR(2) 8G^G ADN 1 JUSER 8HF6 ADN 2 A1 8HYQ MOVE 1 3 8JDB MHUNTW 2,ADATA,CSTORE 8JY2 ADN 2 UCURRENT 8KCL MOVE 1 3 8KX= SETNCORE 3,2,FILE,ADICT 8LBW MHUNTW 1,ADATA,CSTORE 8LWG ADN 2 A1 8MB6 ADN 1 UNAMED 8MTQ MOVE 1 3 8N2Y ...S13 SETNCORE 10,2,FILE,FABSNB [LEAVE :MASTER'S FABSNB 8N86 ... ADN 2 A1 [FOR LATER SEGMENTS 8N*# ... ADN 1 NB 8NGG ... MOVE 1 10 8NMN ... UPPLUS 2 8NT2 S14 LDX 0 4 8P#L ANDX 0 MGCLASS(1) 8PS= BXU 0 MGTOR(1),QR6 8Q?W BRN S3 8QRG QR1 SMO FX1 8R?6 LDX 6 XJBUDTYPE 8RQQ BRN QRA 8S=B QR3 LDX 1 FX1 8SQ2 LDX 6 XJUSNA(1) 8T9L BRN QRA 8TP= QR4 SMO FX1 8W8W LDX 6 XJBUDCHAN 8WNG QRA SMO FX1 8X86 LDX 5 XJPARMIS 8XMQ QRA1 ERRORX 5,6 8Y7B BRN QR 8YM2 QR2 LDX 5 XJNOPAR(1) 8^6L BRN QRB 8^L= QR5 LDX 5 XJZPRIV(1) 925W BRN QRB 92KG QR6 LDX 5 XERB11(1) 9356 BRN QRB 9393 ...QR6A SMO FX1 93#Y ... LDX 5 XUSERF 93DT ... BRN QRB 93JQ QR7 CLOSETOP 944B LDX 5 XERB1(1) 94J2 QRB ERRORX 5 953L QR8 95H= QR9 962W QR TRACE 1,ERRR 96GG UPPLUS 1 9726 SBREAK UP 97FQ QR10 ERROR ERSYSCLUDG,FDIC 97^B BRN QR 98F2 # BUDGCON MACRO 98YL # THIS ROUTINE OPENS THE DICT.(READ),GETS THE BIT PATTERN FOR THE 99D= # CHAR. STRING IN THE FIRST CPB/CUNI BLOCK IN THE CHAIN, AND CLOSES 99XW # DICT. AGAIN . NOSUCH IF CHARS. IN ERROR. 9=CG QK12BUDGTWO 9=X6 MHUNT 3,CPB,CUNI 9?BQ LDX 0 ANUM(3) 9?WB BZE 0 U7A 9#B2 BNG 0 U7A 9#TL ANDN 0 #7777 [NO. OF CHARS. 9**= SBN 0 9 9*SW BPZ 0 U7A [MAX 8 CHS 9B#G LDX 4 APARA(3) 9BS6 LDX 5 APARA+1(3) 9C?Q ADN 0 4 9CRB BPZ 0 U1 9D?2 LDX 5 ACES [SPACES IN 2ND WD. IF <5 CHARS. 9DQL U1 9F== SETNCORE 10,3,FILE,FABSNB 9FPW LDN 2 NB(1) 9G9G ADN 3 A1 9GP6 MOVE 2 10 [FOR OPENING CICT 9H8Q OPEN U8,READ 9HNB TESTRPN2 OK,U8 9J82 MFREEW FILE,FABSNB 9JML STEP 9K7= #SKI K6BMACROS>99-99 9KLW ( 9L6G BNZ 3 U3 [THE FIRST RECORD SHOULD BE THE ONE 9LL6 U2 [WE WANT 9M5Q GEOERR 1,BUDGCON 9MKB U3 9N52 LDN 0 0 9NJL TXU 0 CUSER-A1(3) 9P4= TXU 0 CUSER+1-A1(3) 9PHW TXU 0 CUSER+2-A1(3) 9Q3G BCS U2 9QH6 ) 9R2Q LDX 0 IZCOUNT-A1(3) [NO. OF DESCRIPTION LINES 9RGB BZE 0 U5 9S22 U4 9SFL TXU 4 IZLIST+1-A1(3) 9S^= TXU 5 IZLIST+2-A1(3) 9TDW BCC U6 [J.IF CHARS. SAME 9TYG ADN 3 IZLINE 9WD6 BCT 0 U4 9WXQ U5 9XCB LDN 3 0 [NOT FOUND 9XX2 BRN U7 9YBL U6 9YW= LDX 3 IZLIST-A1(3) [BIT PATTERN 9^*W STO 3 ACOMMUNE1(2) 9^TG LDN 3 1 =2*6 U7 =2SQ CLOSETOP [DICTIONARY =3#B BZE 3 U7A [J IF GICT NOT FOUND =3S2 UPPLUS 1 =4?L U7A =4R= #SKI K6BMACROS>99-99 =5=W TRACE 4,BDGNOSUC =5QG UP =6=6 U8 =6PQ GEOERR 1,BUDGBRK =79B MENDAREA 50,K99BUDGTWO =7P2 #END ^^^^ ...76223126000600000000