14 22FL #LIS K0BUDGET>K0BUDGES>K0COMMAND>K0ALLGEO 15 22_= #SEG BUDGET1 [M.B.KINGHAM 7 23DW 8HBUDGET1 12 23YG SEGENTRY K1BUDGET,QK1BUDGET 12 24D6 SEGENTRY K2BUDGET,QK2BUDGET 4 24XQ # 20 25CB # 1 THE BUDGET COMMAND CHANGES THE BUDGET RATION OF A NAMED USER 21 25X2 # 1 BY THE ADDITION OF A SPECIFIED AMOUNT OF A SPECIFIED BUDGET TYPE, 20 26BL # 1 THE AMOUNT OF CHANGE BEING SUBTRACTED FROM THE BUDGET RATION 19 26W= # 1 OF THE CURRENT PROPER USER.PRIVILEGES ARE DEALT WITH BY 10 27*W # 1 THE PRIVLEG CHAPTER 4 27TG # 21 28*6 # THE DICTIONARY IS OPENED AND THE COMMAND PARAMETERS ARE CHECKED 20 28SQ # FOR VALIDITY AND LEGALITY.IF ALL IS IN ORDER THE ALTERATIONS 20 29#B # ARE MADE,THE DICTIONARY IS CLOSED,AND A RETURN IS MADE TO THE 9 29S2 # COMMAND PROCESSOR. 4 2=?L # 8 2=R= NUM13 +13 11 2?=W # MONITORING FILE MESSAGES 9 2?QG XJPARMIS +JPARMIS 9 2#=6 XAPFERR +APFERR 8 2#PQ XERB1 +ERB1 8 2#_J ...XERB4 +ERB4 8 2*9B XERB5 +ERB5 8 2*P2 XERB3 +ERB3 8 2B8L XERB7 +ERB7 20 2BN= XERB22 +ERB22 [YOU MAY REDUCE RATIONS OF ONLY YOUR 16 2C7W [IMMEDIATE INFERIORS 21 2CMG XERB23 +ERB23 [YOU MAY INCREASE RATIONS OF ONLY YOUR.. 20 2D76 XERB24 +ERB24 [YOU MAY NOT CHANGE YOUR OWN RATIONS 20 2DLQ XERB25 +ERB25 [YOU MAY CHANGE PRIVILEGES OF ONLY 15 2F6B [YOUR INFERIORS 20 2F?J ...XERB27 +ERB27 [YOU MAY NOT CHANGE MANAGERS PRIVS 20 2FDQ ...XERB28 +ERB28 [YOU MAY NOT REDUCE MANAGERS BUDGETS 10 2FL2 MAN 12HMANAGER 4 2G5L # 21 2GK= # NOTE THAT NAMEB IS USED BOTH FOR SETTING UP THE FILE FABSNB FOR 20 2H4W # OPENING THE DICTIONARY AND FOR THE CHARACTER STRING ^MASTER^ 9 2HJG # WHICH IT CONTAINS. 4 2HS# ...# 8 2J46 NAMEB +10 9 2JHQ 12HMASTER 10 2K3B 12HDICTIONARY 8 2KH2 +0 8 2L2L +1 8 2LG= +0 4 2LQ4 ...# 21 2L_W # MASKS FOR STANDARD BUDGETARY CLASSIFICATIONS FROM BUDGET TYPE WORDS 4 2M9N ...# 20 2MFG MGWORDS +GWORDS [GENERAL- NO. OF INFORMATION WORDS 18 2M_6 MGMASK +GMASK [UNIQUE PART OF BIT PATTERN 18 2NDQ MGCLASS +GCLASS [BUDGET CLASSIFICATION BITS 14 2NYB MGPAND +GPAND [PRIVILEGES 8 2PD2 MGPOR +GPOR 15 2PXL MGSAND +GSAND [STABLE BUDGETS 8 2QC= MGSOR +GSOR 16 2QWW MGTAND +GTAND [TRANSIENT BUDGETS 8 2RBG MGTOR +GTOR 4 2RL# ...# 10 2RW6 # MESSAGES FOR PRIVILEGES 4 2S5Y ...# 9 2S*Q XGIVE 4HGIVE 9 2STB XTAKE 4HTAKE 4 2T58 ...# 14 2T*2 ...# DEFINITIONS FOR THE ADATA,CSTORE BLOCK 4 2TJS ...# 17 2TSL #DEF UNAMED=A1 [USERNAME OF NAMED USER 19 2W#= #DEF UCURRENT=UNAMED+3 [USERNAME OF CURRENT PROPER USER 17 2WRW #DEF UTYPE=UCURRENT+3 [BUDGET TYPE BIT PATTERN 15 2X?G #DEF UCHANGE=UTYPE+1 [CHANGE AMOUNT 19 2XR6 #DEF UCMARK=UCHANGE+1 [INCREASE MARKER FOR CURRENT USER 19 2Y=Q #DEF UNMARK=UCMARK+1 [INCREASE MARKER FOR NAMED USER 17 2YQB #DEF UCREMAINS=UNMARK+1 [CURRENT USER'S REMAINDER 17 2_=2 #DEF UNREMAINS=UCREMAINS+1 [NAMED USER'S REMAINDER 17 2_PL #DEF UNUIS=UNREMAINS+1 [1 IF NU=IS ; 0 OTHERWISE 21 329= #DEF URCMARK=UNUIS+1 [0 OR CURRENT USER'S OVERDRAFT (STABLE 21 32NW #DEF URNMARK=URCMARK+1 [0 OR NAMED USER'S OVERDRAFT(BUDGETS ONLY 4 338G ...# 6 39HL QK1BUDGET 21 39W3 ... STOZ AWORK3(2) [ZERO 'MANAGER IS NAMED USER' FLAG 21 3=8D ... STOZ AWORK4(2) [ZERO 'MANAGER IS 'PROPER USER' FLAG 10 3=GW BUDGPAR BT,MBREAK,QR 12 3?2G OPEN MBREAK,GENERAL,QUERY 10 3?G6 TESTREPN OK,OPENERR 15 3?_Q READDICT [FOR NAMED USER 21 3#FB TESTERR NOUSER,WOE3 [IF NOT FOUND,THERE IS A COMMAND ERROE 4 3#P8 ...# 20 3#_2 # THE NAMED USER'S DICTIONARY ENTRY IS NOW IN A FILE,ADICTENT BLOCK 4 3*8S ...# 11 3*DL HUNT 2,FILE,ADICTENT 9 3*Y= LDX 0 CPSEU(2) 21 3BCW LDX 6 XERB7(1) [IF THE NAMED USER IS A PSEUDO USER,HE 20 3BXG BNG 0 WRONG [HAS NO BUDGETS,SO THERE IS AN ERROR 11 3CC6 HUNT 2,ADATA,CSTORE 11 3CWQ HUNT 3,FILE,ADICTENT 17 3DBB LDX 0 UTYPE(2) [BUDGET TYPE BIT PATTERN 18 3DW2 ANDX 0 MGCLASS(1) [SELECT BUDGET CLASSIFICATION 9 3DXC ... LDX 4 CUSER(3) 10 3DYS ... LDX 5 CUSER+1(3) 10 3F29 ... LDX 6 CUSER+2(3) 9 3F3L ... TXU 4 MAN(1) 9 3F53 ... TXU 5 MAN+1(1) 9 3F6D ... TXU 6 MAN+2(1) 19 3F7T ... BCS NMANNU [J IF MANAGER NOT NAMED USER 8 3F9= ... SMO FX2 20 3F=M ... STO 4 AWORK3 [SET 'MANAGER IS NAMED USER' FLAG 5 3F#4 ...NMANNU 10 3F*L LDX 4 UCURRENT(2) 10 3FT= LDX 5 UCURRENT+1(2) 10 3G#W LDX 6 UCURRENT+2(2) 9 3GSG TXU 4 MAN(1) 9 3H#6 TXU 5 MAN+1(1) 9 3HRQ TXU 6 MAN+2(1) 8 3J?B BCS M009A 8 3JR2 SMO FX2 9 3K=L STO 4 AWORK4 5 3KQ= M009A 9 3L9W TXU 4 CUSER(3) 10 3LPG TXU 5 CUSER+1(3) 10 3M96 TXU 6 CUSER+2(3) 21 3MNQ BCS M009 [J UNLESS PROPER USER IS NAMED USER 15 3N8B LDX 6 XERB24(1) [IF SO,ERROR 8 3NN2 BRN WRONG 4 3P7L M009 10 3PM= TXU 4 CSUPUSER(3) 10 3Q6W TXU 5 CSUPUSER+1(3) 10 3QLG TXU 6 CSUPUSER+2(3) 21 3R66 BCS M101 [J UNLESS PROPER USER IS IMMED. SUPER 12 3S5B TRACE UCURRENT(2),BUDUC=IS 4 3SK2 M100 18 3T4L TXU 0 MGPOR(1) [IS THIS BUDGET A PRIVILEGE? 8 3TJ= BCS Q001 4 3TS4 ...# 21 3W3W # IF SO, GO TO THE ^CHECKED^ ENTRY POINT IN THE PRIVLEG CHAPTER ; 13 3WHG # IF NOT, CONTINUE IN THIS CHAPTER 4 3WR# ...# 9 3X36 ACROSS PRIVLEG,2 4 3XGQ M101 4 3XQJ ...# 18 3Y2B # THE USER :MANAGER HAS THE SPECIAL POWER OF PERFORMING 20 3YG2 # BUDGET TRANSACTIONS WHICH ALTER THE BUDGETS OF HIS SIBLINGS 21 3_YW TXU 4 MAN(1) [IF THE ANSWER TO BOTH QUESTIONS IS YES, 19 42DG TXU 5 MAN+1(1) [NO FURTHER CHECKING IS NECESSARY 9 42Y6 TXU 6 MAN+2(1) 8 43CQ BCC M100 18 43FL ... MFREE FILE,FABSNB [FREE :MANAGER'S FABSNB 19 43G= ... CHECKOWNER [ADDITIONAL OWNERSHIP CHECKS 11 43GW ... HUNT 2,ADATA,CSTORE 11 43HG ... HUNT 3,FILE,ADICTENT 20 43J6 ... TESTREPN OK,M1015 [J IF PROPER USER DOES NOT HAVE 17 43JQ ... [ACCESS TO NAMED USER 9 43KB ... LDX 0 UTYPE(2) 19 43L2 ... ANDX 0 MGCLASS(1) [SELECT BUDGET CLASSIFICATION 9 43LL ... LDX 4 CUSER(3) 10 43M= ... LDX 5 CUSER+1(3) 10 43MW ... LDX 6 CUSER+2(3) 9 43NG ... TXU 4 MAN(1) 9 43P6 ... TXU 5 MAN+1(1) 9 43PQ ... TXU 6 MAN+2(1) 19 43QB ... BCS M100 [J IF NAMED USER NOT MANAGER 9 43R2 ... LDX 6 XERB27(1) 9 43RL ... TXU 0 MGPOR(1) 21 43S= ... BCC WRONG [CANNOT CHANGE MANAGER'S PRIVELEGES 9 43SW ... LDX 6 XERB28(1) 10 43TG ... LDX 7 UCHANGE(2) 20 43W6 ... BNG 7 WRONG [CANNOT REDUCE MANAGER'S BUDGET 5 43XB M1015 6 43__ ...#UNSET FTS1 4 444J ...( 9 4477 ... LDX 0 UTYPE(2) 19 449Q ... ANDX 0 MGCLASS(1) [SELECT BUDGET CLASSIFICATION 4 44#* ...) 9 44C2 TXU 0 MGPOR(1) 19 44WL BCS M103 [IS THE BUDGET A PRIVILEGE? 21 45B= # IF SO,GO TO THE ^UNCHECKED^ ENTRY POINT IN THE PRIVLEG CHAPTER. 10 45TW LDX 4 CSUPUSER(3) 10 46*G LDX 5 CSUPUSER+1(3) 10 46T6 LDX 6 CSUPUSER+2(3) 9 47#Q ACROSS PRIVLEG,1 4 47SB M103 20 48#2 LDN 0 1 [SET MARKER- NAMED USER IS IMMEDIATE 21 48RL STO 0 UNUIS(2) [SUPERIOR OF CURRENT USER UNLESS UNVIS=0 9 49?= #SKI K6BUDGET>9999-9999 11 49QW TRACE CUSER(3),BUNV=IS? 18 4==G LDX 6 XERB22(1) [THEREFORE,THE TRANSACTION IS 10 4=Q6 LDX 7 UCHANGE(2) 20 4?9Q BNG 7 WRONG [ILLEGAL IF THE CHANGE IS NEGATIVE 9 4?PB LDX 4 CUSER(3) 10 4#92 LDX 5 CUSER+1(3) 10 4#NL LDX 6 CUSER+2(3) 18 4*8= READDICT [READ CURRENT USER'S ENTRY 11 4*MW HUNT 3,FILE,ADICTENT 10 4B7G TXU 4 CSUPUSER(3) 16 4BM6 TXU 5 CSUPUSER+1(3) [IS THE NAMED USER 17 4C6Q TXU 6 CSUPUSER+2(3) [HIS IMMEDIATE SUPERIOR ? 8 4CLB BCC Q002 20 4D62 LDX 6 XERB23(1) [IF NOT,THE TRANSACTION IS ILLEGAL 8 4DKL BRN WRONG 19 4F5= Q001 READDICT [READ THE CURRENT USER'S ENTRY 15 4FJW # THIS SECTION DEALS WITH QUANTITATIVE BUDGETS 19 4G4G # THE CURRENT PROPER USER'S DICTIONARY ENTRY IS IN THE FIRST 21 4GJ6 # FILE,ADICTENT IN THE CHAIN; THE NAMED USER'S ENTRY IN IN THE NEXT 4 4H3Q Q002 11 4HHB MHUNT 3,ADATA,CSTORE 8 4J32 SMO FX2 9 4JGL LDX 0 AWORK4 8 4K2= BZE 0 Q002A 7 4KFW LDN 5 0 20 4K_G BUDGUSE UTYPE(3) [READ APPROPRIATE BUDGET RECORD 9 4LF6 TESTREPN OK,Q002B 12 4LYQ MHUNT 1,JBUDGET,JBUDGUSER 10 4MDB LDX 5 JRATION(1) 7 4MY2 FREECORE 1 5 4NCL Q002B 11 4NX= MHUNT 3,ADATA,CSTORE 10 4PBW STOZ URCMARK(3) 10 4PWG STO 5 UCREMAINS(3) 10 4QB6 MFREE FILE,ADICTENT 8 4QTQ BRN Q2 5 4R*B Q002A 10 4RT2 NGX 4 UCHANGE(3) 15 4S#L LDX 5 UTYPE(3) [FOR CURRENT USER 19 4SS= BUDGUSE UTYPE(3) [READ APPROPRIATE BUDGET RECORD 8 4T?W TESTREP2 OK,QF 15 4TRG # IF THE CURRENT USER HAS NO SUCH BUDGET RECORD 18 4W?6 QN CALL 7 QSRN [X5=BUDGET TYPE,X4=-VE CHANGE 18 4WQQ # QSRN SETS UP THE REQ'D BUDGET RECORD,AND WRITES IT TO THE 16 4X=B # FILE,ADICTENT,UNLESS THE CHANGE IS PESITIVE. 19 4XQ2 STO 4 UCREMAINS(3) [STORE CHANGE AMOUNT AS REMAINDER 9 4Y9L #SKI K6BUDGET>9999-9999 12 4YP= TRACE UCREMAINS(3),BUDGQN 11 4_8W HUNT 2,FILE,ADICTENT 10 4_NG NAME 2,FILE,FWB 8 5286 BRN Q2 15 52MQ # IF THE QUANTITATIVE BUDGET RECORD WAS FOUND: 18 537B QF CALL 7 QSRF [X5=BUDGET TYPE,X4=-VE CHANGE 21 53M2 # QSRF MAKES THE NECESSARY CHECKS AND ALTERATIONS TO THE BUDGET RECORD 15 546L # AND WRITES IT BACK TO THE FILE,ADICTENT. 16 54L= STO 6 URCMARK(3) [OVERDRAFT(IF NOT 0). 19 555W STO 5 UCREMAINS(3) [CURRENT USER'S REMAINING RATION 9 55KG #SKI K6BUDGET>9999-9999 12 5656 TRACE UCREMAINS(3),BUDGQF 11 56JQ HUNT 2,FILE,ADICTENT 20 574B NAME 2,FILE,FWB [RENAME BLOCK FOR REWRITING IN SITU 21 57J2 # AT THIS POINT THE CURRENT USER'S ENTRY HAS BEEN CHECKED AND ALTERED, 12 583L # BUT THE FILE HAS NOT BEEN CHANGED 17 58H= # THE DICTIONARY ENTRY FOR THE NAMED USER IS NOW IN THE 10 592W # FIRST FILE,ADICTENT. 9 59GG Q2 LDX 5 UTYPE(3) 10 5=26 LDX 4 UCHANGE(3) 7 5=FQ BUDGUSE 5 9 5=_B TESTREP2 OK,Q2F 13 5?F2 # IF THE NAMED USER HAS NO SUCH RECORD: 8 5?YL Q2N CALL 7 QSRN 9 5#D= #SKI K6BUDGET>9999-9999 9 5#XW TRACE 4,BUDGQ2N 8 5*CG BRN Q3 14 5*X6 # IF THE NAMED USER'S RECORD HAS BEEN FOUND 8 5BBQ Q2F CALL 7 QSRF 18 5BWB STO 6 URNMARK(3) [OVERDRAFT (IF NOT NOUGHT) 19 5CB2 STO 5 UNREMAINS(3) [REMAINDER OF NAMED USER'S RATION 9 5CTL #SKI K6BUDGET>9999-9999 12 5D*= TRACE URNMARK(3),BUDGQ2F 4 5DSW Q3 8 5F#G SMO FX2 9 5FS6 LDX 0 AWORK4 19 5G?Q BNZ 0 Q4 [DONT UPDATE MANAGERS BUDGET 17 5GRB REPLACE [CURRENT USERS ENTRY 9 5H?2 MFREE FILE,FWB 4 5HQL Q4 8 5HTQ ... SMO FX2 9 5HYW ... LDX 0 AWORK3 21 5J42 ... BNZ 0 Q5 [DON'T REPLACE IF MANAGER IS NAMED... 14 5J76 ... [...USER 21 5J== READDICT [POSITION DICTIONARY ON NAMED USER 10 5JPW MFREE FILE,ADICTENT 11 5K9G HUNT 2,FILE,ADICTENT 10 5KP6 NAME 2,FILE,FWB 17 5L8Q REPLACE [NAMED USERS ENTRY 9 5LNB MFREE FILE,FWB 15 5M82 Q5 CLOSE [CLOSE DICTIONARY 13 5MML # SET UP MESSAGES FOR MONITORING FILE 11 5N7= HUNT 2,ADATA,CSTORE 19 5NLW LDX 7 URCMARK(2) [IS THE CURRENT USER OVERDRAWN? 8 5P6G BZE 7 Q501 15 5PL6 # IF THE CURRENT USER IS OVERDRAWN -SEND MESSAGE 14 5Q5Q # ^%A OVERDRAWN BY %B;REMAINING RATION %C^ 17 5QKB LDX 6 UCREMAINS(2) [SELECT C.U. REMAINDER 8 5R52 LDN 5 12 8 5RJL LDN 0 10 7 5S4= OUTBLOCK 0 13 5SHW OUTPARAM 5,UCURRENT,ADATA,CSTORE 8 5T3G OUTNUM 7,0 8 5TH6 OUTNUM 6,0 9 5W2Q MONOUT ERBOK2 11 5WGB HUNT 2,ADATA,CSTORE 18 5X22 LDX 7 URNMARK(2) [IS THE NAMED USER OVERDRAWN? 8 5XFL BNZ 7 Q502 4 5X_= Q500 9 5YDW #SKI K6BUDGET>999-999 4 5YYG ( 10 5_D6 TRACE 6,BUDGEND1 10 5_XQ TRACE 7,BUDGEND2 12 62CB TRACE UNAMED(2),BUDGEND3 4 62X2 ) 6 63BL ENDCOM 10 63W= Q501 LDX 7 URNMARK(2) 8 64*W BZE 7 Q5025 20 64TG Q502 LDX 4 UNUIS(2) [NO INFORMATION MUST BE OUTPUT ABOUT 21 65*6 BNZ 4 Q503 [THE NAMED USER'S ENTRY IF THE NAMED USER 20 65SQ LDX 6 UNREMAINS(2) [IS A SUPERIOR OF THE CURRENT USER 8 66#B LDN 5 12 8 66S2 LDN 0 10 7 67?L OUTBLOCK 0 12 67R= OUTPARAM 5,UNAMED,ADATA,CSTORE 8 68=W OUTNUM 7,0 8 68QG OUTNUM 6,0 9 69=6 MONOUT ERBOK2 11 69PQ HUNT 2,ADATA,CSTORE 5 6=9B Q5025 19 6=P2 LDX 7 URCMARK(2) [CURRENT USER'S REMAINDER MUST BE 18 6?8L BNZ 7 Q500 [PRINTED OUT AT SOME STAGE 10 6?N= Q503 LDX 6 UCREMAINS(2) 20 6#7W OUTNUM 6,0 [OUTPUT ^OK: YOUR RATION IS NOW %A^ 20 6#MG MONOUT ERBRAT [TO MONITORING FILE IF PROPER USER'S 18 6*76 BRN Q500 [REMAINDER NOT ALREADY OUTPUT 4 6*LQ [ 4 6B6B [ 4 6BL2 [ 6 6C5L QK2BUDGET 8 6CK= WRONG LDX 1 FX1 19 6CQD ... TXU 6 XERB4(1) [DO NOT HAVE ... PRIVILEGE? 8 6CXL ... BCC XCITA 9 6D4W TXU 6 XERB22(1) 8 6DJG BCC WOE1 9 6F46 TXU 6 XERB23(1) 8 6FHQ BCC WOE1 9 6G3B TXU 6 XERB24(1) 8 6GH2 BCC WOE1 9 6H2L TXU 6 XERB25(1) 8 6H8D ... BCC WOE1 9 6H=B ... TXU 6 XERB27(1) 8 6H## ... BCC WOE1 9 6HB= ... TXU 6 XERB28(1) 19 6HG= BCC WOE1 [FOR MESSAGES WHICH DO NOT USE A 20 6H_W TXU 6 XERB5(1) [PARAMETER BLOCK,ALL CPB,CUNI BLOCKS 15 6JFG BCS WOE2 [SHOULD BE FREED 20 6J_6 WOE1 UNIFREE [FREE CPB,CUNI BLOCKS UP TO CPB,CALAS 6 6KDQ WOE2 CLOSE 7 6KYB COMERRX 6 20 6LD2 WOE3 CLOSE [IF ERROR HAS ALREADY BEEN REPORTED 6 6LXL QR ENDCOM 21 6L_* ...XCITA MHUNT 3,CPB,CUNI [THIS ROUTINE FINDS THE APPROPRIATE 21 6M34 ... LDX 5 JPARNUM(3) [CUNI BLOCK CONTAINING THE PRIVILEGE 21 6M4R ... FREECORE 3 [NAME FOR THE ERROR MESSAGE '...DO NO 18 6M6G ... LDN 4 1 [HOLD NNNNN PRIVILEGE'. 12 6M89 ... BCT 5 XCITB [ 12 6M9Y ... ADN 4 1 [ 19 6M?M ...XCITB PARANOTX 4 [GET APPROPRIATE PARAMETER 8 6M*B ... BRN WOE2 5 6MC= OPENERR 10 6MWW TESTREP CLUDGE,OP1 9 6NBG GEOERR 1,OPENREP 4 6NW6 OP1 7 6P*Q UNIFREE 11 6PTB COMERR ERSYSCLUDG,FDIC 19 6Q*2 # THIS SUBROUTINE ALTERS THE BUDGET RECORD,WHICH HAS BEEN FOUND 8 6QSL QSRF SBX 7 FX1 12 6R#= HUNT 2,JBUDGET,JBUDGUSER 18 6RRW ADS 4 JRATION(2) [ADD CHANGE TO USER'S RATION 10 6S?G LDX 4 JRATION(2) 9 6SR6 LDX 6 XERB3(1) 18 6T=Q BNG 4 WRONG [ERROR IF RESULT IS NEGATIVE 7 6TQB STOZ 6 16 6W=2 LDX 0 5 [SELECT BUDGET TYPE 18 6WPL ANDX 0 MGCLASS(1) [IS IT A TRANSIENT BUDGET? 9 6X9= TXU 0 MGSOR(1) 8 6XNW BCS QSRF1 21 6Y8G # FOR TRANSIENT BUDGETS,THE TRANSACTION IS OK IF JRATION IS NOT -VE ; 20 6YN6 # BUT FOR STABLE BUDGETS,MUST CHECK ALSO THAT (JRATION-JALLOWED) IS 18 6_7Q # NOT -VE, AND SET UP A MESSAGE IF THERE IS AN OVERDRAFT. 10 6_MB SBX 4 JALLOWED(2) 15 7272 BPZ 4 QSRF1 [IF OVERDRAWN, 21 72LL NGS 4 6 [STORE DIFFERENCE OF JRATION AND JALLOWED 10 736= QSRF1 LDX 5 JRATION(2) 7 73KW BUDGWRITE 11 745G HUNT 3,ADATA,CSTORE 8 74K6 ADX 7 FX1 7 754Q EXIT 7 0 16 75JB # IF THE BUDGET RECORD WAS NOT FOUND,QSRN IS CALLED. 15 7642 # THIS SUBROUTINE SETS UP A NEW BUDGET RECORD 8 76HL QSRN SBX 7 FX1 17 773= LDX 6 XERB3(1) [CHECK THAT CHANGE AMOUNT 16 77GW BNG 4 WRONG [ IS CORRECTLY SIGNED 7 782G LDX 6 5 20 78G6 ANDX 6 MGWORDS(1) [FIND NO. OF INFORMATION WORDS REQ'D 16 78_Q ADN 6 1 [BY THIS BUDGET TYPE 13 79FB SETUPCORE 6,3,JBUDGET,JBUDGUSER 7 79_2 SBN 6 1 16 7=DL STO 6 A1(3) [SET UP BUDGET RECORD 9 7=Y= STO 5 JBITS(3) 10 7?CW STO 4 JRATION(3) 7 7?XG SBN 6 2 19 7#C6 QSRN1 SMO 6 [CLEARING THE NON-STANDARD WORDS 20 7#WQ STOZ JRATION(3) [AS WELL AS JALLOWED AND JCONSUMED 8 7*BB BCT 6 QSRN1 20 7*W2 BUDGWRITE [WRITE BUDGET RECORD TO FILE,ADICTENT 11 7B*L HUNT 3,ADATA,CSTORE 8 7BT= ADX 7 FX1 7 7C#W EXIT 7 0 4 7CSG # 14 7D#6 MBREAK COMBRKIN [IF BROKEN IN 4 7DRQ # 10 7F?B MENDAREA 50,K99BUDGET 4 7FR2 #END 8 ____ ...23245424000300000000