2 ! PRINTS MASTER EXPENDITURE REPORT 5 ! PROGRAM NAME:"MTREXP" - BY JAC 6 ON ERROR GOTO 1000 7 NAME "DK1:GLFILE.MST" AS "DK1:GLFILE.MBK":NAME "DK1:GLFILE.TMT" AS "DK1:GLFILE.MST" 8 OPEN "DK1:GLFILE.MBK" AS FILE 2%:DIM #2%,G2$(4000%)=64%,G2%(0%) 10 OPEN "DK1:GLFILE.MST" AS FILE 1%:DIM #1%,G$(4000%)=64%,G%(0%) 14 N%=G%(0):G2%(0)=N% 15 G2$(K%)=G$(K%) FOR K%=1% TO N% 16 CLOSE 2%:KILL "DK1:GLFILE.GLR" 20 DIM A(3%),T(3%),G(3%),F(3%),F1(3%),J%(500%),I%(500%) 25 OPEN "DK1:GLFILE.FND" AS FILE 2%:DIM #2%,F$(20%)=32%,F%(0%) 35 OPEN "DK1:GLFILE.PGM" AS FILE 3%:DIM #3%,P$(300%)=32%,P%(0%) 45 PRINT "INPUT DATE FOR EXPENDITURE REPORT";:INPUT LINE D1$ 50 OPEN "LP:" FOR OUTPUT AS FILE 4%,MODE 66%:D1$=LEFT(D1$,LEN(D1$)-2%) 52 OPEN "DK1:GLFILE.MT1" AS FILE 5%:DIM #5%,G1$(500%)=64% 55 Q$="#,###,###.##":Q1$="###.##!":K%=1%:S%=P%(0%):Q%=8%:J%=0%:F1%=1%:GOSUB 400 65 IF MID(G$(K%),4%,2%)<>"01" THEN 120 70 T%=VAL(MID(G$(K%),11%,4%)) 75 IF T%<100% OR T%>=2000% THEN K%=K%+1%:GOTO 65 80 GOSUB 450 ! UNPACK AND PRINT G$ 85 K%=K%+1%:IF K%>N% THEN PRINT #4%,"ERROR":STOP 90 IF MID(G$(K%),4%,2%)<>"01" THEN 115 95 T%=VAL(MID(G$(K%),11%,4%)):IF T%<100% OR T%>=2000% THEN 85 100 IF MID(G$(K%),11%,6%)=X$ THEN 80 ELSE GOSUB 550:GOTO 80 115 GOSUB 550 ! PRINT BUDGET CODE TOTAL 120 F(R%)=G(R%) FOR R%=1% TO 3% 125 G(R%)=0% FOR R%=1% TO 3% 130 GOSUB 650 ! PRINT FUND TOTAL 135 F1%=F1%+1%:H%=1%:IF F1%>F%(0%) THEN 325 140 GOTO 150 IF MID(G$(R%),4%,2%)<>LEFT(F$(F1%),2%) FOR R%=K% UNTIL R%>N% 150 IF R%=K% THEN 135 ELSE M%=R%-1% 165 J%(R%-K%+1%)=VAL(MID(G$(R%),7%,4%)) FOR R%=K% TO M% 170 I%(R%-K%+1%)=R% FOR R%=K% TO M% 175 FOR R%=1% TO M%-K%:IF J%(R%)<=J%(R%+1%) THEN 200 180 T%=J%(R%+1%):J%(R%+1%)=J%(R%):T1%=I%(R%+1%):I%(R%+1%)=I%(R%) 185 FOR J1%=R% TO 2% STEP -1% 190 IF J%(J1%-1%)<=T% THEN J%(J1%)=T%:I%(J1%)=T1%:GOTO 200 195 J%(J1%)=J%(J1%-1%):I%(J1%)=I%(J1%-1%):NEXT J1%:J%(1%)=T%:I%(1%)=T1% 200 NEXT R% 205 G1$(R%-K%+1%)=G$(I%(R%-K%+1%)) FOR R%=K% TO M% 210 G$(R%)=G1$(R%-K%+1%) FOR R%=K% TO M% 225 P1$=MID(G$(K%),7%,4%) 230 GOTO 240 IF LEFT(P$(R%),4%)=P1$ FOR R%=H% UNTIL P1$=100% AND T%<2000% THEN 260 255 K%=K%+1%: IF K%>M% THEN 312 258 IF P1$=MID(G$(K%),7%,4%) THEN 250 ELSE 225 260 GOSUB 400 265 GOSUB 450 ! UNPACK AND PRINT G$ 270 K%=K%+1%:IF K%>M% THEN 305 275 T%=VAL(MID(G$(K%),11%,4%)):IF T%<100% OR T%>=2000% THEN 270 278 IF P1$<>MID(G$(K%),7%,4%) THEN 292 280 IF MID(G$(K%),11%,6%)=X$ THEN 265 285 GOSUB 550:GOTO 265 ! PRINT BUDGET CODE TOTALS 292 GOSUB 550:GOSUB 750:GOTO 225 305 GOSUB 550:GOSUB 750:GOTO 315 312 IF F(1%)=0% AND F(2%)=0% AND F(3%)=0% THEN 135 315 GOSUB 650:GOTO 135 ! PRINT FUND TOTALS 325 PRINT #4%:PRINT #4%, TAB(24%+Q%);"***FINAL TOTALS***"; TAB(48%+Q%); 335 T(R%)=F1(R%) FOR R%=1% TO 3% 340 GOSUB 800 ! PRINT VALUES 350 PRINT #4%,"NUMBER OF ACCOUNTS ";N% 355 PRINT #4%,CHR$(129%):CLOSE 1%,2%,3%,4%,5%:KILL "DK1:GLFILE.MT1":STOP 400 PRINT #4%,CHR$(129%):J%=J%+1% 405 PRINT #4%,TAB(Q%);RIGHT(F$(F1%),3%);TAB(45%+Q%);"MASTER EXPENDITURE REPORT"; 410 PRINT #4%,TAB(80%+Q%);D1$;TAB(110%+Q%);"PAGE ";J%:IF F1%=1% THEN 425 415 PRINT #4%,TAB(40%+Q%);"PROG. ";LEFT(P$(H%),4%);"-";RIGHT(P$(H%),5%) 425 PRINT #4%:PRINT #4%,TAB(7%+Q%);"EXPENSE";TAB(51%+Q%);"BUDGET";TAB(65%+Q%); 430 PRINT #4%,"EXPENDED OBLIGATED BUDGET PERCENT" 435 PRINT #4%,TAB(8%+Q%);"CODE";TAB(28%+Q%);"DESCRIPTION";TAB(51%+Q%); 440 PRINT #4%,"AMOUNT AMOUNT AMOUNT BALANCE"; 445 PRINT #4%,TAB(111%+Q%);"SPENT":PRINT #4%:L%=0%:RETURN 450 T$=G$(K%):C$=LEFT(T$,3%)+"-"+MID(T$,4%,2%)+"-"+MID(T$,6%,1%)+"-" 455 C$=C$+MID(T$,7%,4%)+"-"+MID(T$,11%,4%)+"."+MID(T$,15%,2%) 460 D$=MID(T$,17%,21%):A(1%)=VAL(MID(T$,56%,8%)):A(2%)=VAL(MID(T$,38%,10%)) 465 A(3%)=VAL(MID(T$,48%,8%)):X$=MID(T$,11%,6%) 468 PRINT #4%,TAB(Q%);C$;" ";D$;" ";:GOSUB 600 470 T(R%)=T(R%)+A(R%) FOR R%=1% TO 3% 475 GOSUB 530 ! UNPACKS AND PRINTS G$ 480 RETURN 530 L%=L%+1%:IF L%>52% THEN GOSUB 400 540 RETURN 550 PRINT #4%,TAB(45%+Q%);:GOSUB 800:L%=L%+1%:GOSUB 530 575 G(R%)=G(R%)+T(R%) FOR R%=1% TO 3% 580 T(R%)=0% FOR R%=1% TO 3% 585 RETURN 600 IF A(1%)=0% THEN PRINT #4%,TAB(61%+Q%);:GOTO 610 605 PRINT #4%,USING Q$,A(1%);:PRINT #4%," "; 610 FOR R%=2% TO 3% 615 IF A(R%)=0% THEN PRINT #4%," ";:GOTO 630 620 PRINT #4%,USING Q$,ABS(A(R%))/100%; 625 IF A(R%)<0% THEN PRINT #4%,"CR "; ELSE PRINT #4%," "; 630 NEXT R% 632 IF A(1%)=0% THEN 645 635 B=A(1%)*100%-A(2%)-A(3%):PRINT #4%,USING Q$,ABS(B)/100%; 640 IF B<0% THEN PRINT #4%,"CR"; 645 PRINT #4%:RETURN 650 PRINT #4%:PRINT #4%,TAB(24%+Q%);"**FUND TOTALS**";TAB(45%+Q%); 655 T(R%)=F(R%) FOR R%=1% TO 3% ! PRINTS FUND TOTALS 660 GOSUB 800 ! PRINT VALUES 665 T(R%)=0% FOR R%=1% TO 3% 670 F1(R%)=F1(R%)+F(R%) FOR R%=1% TO 3% 675 F(R%)=0% FOR R%=1% TO 3% 680 RETURN 700 P=((T(2%)+T(3%))/(T(1%)*100%))*100% 705 PRINT #4%,USING Q1$,P,"%";:RETURN 750 PRINT #4%:PRINT #4%,TAB(24%+Q%);"*PROGRAM TOTALS*";TAB(45%+Q%); 755 T(R%)=G(R%) FOR R%=1% TO 3% ! PRINTS PROGRAM TOTALS 760 GOSUB 800 ! PRINT VALUES 765 T(R%)=0% FOR R%=1% TO 3% 770 F(R%)=F(R%)+G(R%) FOR R%=1% TO 3% 775 G(R%)=0% FOR R%=1% TO 3% 780 RETURN 800 IF T(1%)=0% THEN PRINT #4%," * ";:GOTO 810 805 PRINT #4%,USING Q$,T(1%);:PRINT #4%," * "; 810 FOR R%=2% TO 3% 815 IF T(R%)=0% THEN PRINT #4%," * ";:GOTO 830 820 PRINT #4%,USING Q$,ABS(T(R%))/100%; 825 IF T(R%)<0% THEN PRINT #4%,"CR* "; ELSE PRINT #4%," * "; 830 NEXT R% 835 IF T(1%)=0% THEN 860 840 B=T(1%)*100%-T(2%)-T(3%):PRINT #4%,USING Q$,ABS(B)/100%; 850 IF B<0% THEN PRINT #4%,"CR* "; ELSE PRINT #4%," * "; 855 GOSUB 700 860 PRINT #4%:PRINT #4%:RETURN 1000 IF ERR=8% THEN PRINT "WAITING FOR LP:":SLEEP(30%):RESUME 1005 IF ERR=14% THEN PRINT "LP: HUNG-WAITING":SLEEP (30%):GOSUB 400:RESUME 1010 ON ERROR GOTO 0 1015 END