10 REM - PROGRAM NAME "EXP40E" 20 REM- UPDATES EXPENSE LEDGER FILE,PRINTS LEDGER REPORT 25 REM- FOR OENSU 30 OPEN "DF:TRANS.NEW" AS FILE 1 40 DIM #1,A$(5000)=46 50 OPEN "DF:LEDGER.MST" AS FILE 2 60 DIM #2,B$(1000)=61 70 OPEN "LP:" FOR OUTPUT AS FILE 3 80 PRINT#3, SPACE$(17)+ "ORLEANS-ESSEX NORTH SUPERVISORY UNION" 90 PRINT #3,SPACE$(32)+"EXPENSE LEDGER"+SPACE$(23)+ DATE$(0) 95 PRINT #3 100 PRINT #3,"ACCOUNT"+SPACE$(10)+"DESCRIPTION"+SPACE$(10)+ " BUDGET "+"YR TO DATE"+" ENCUMBRANCE"+" UNENCMB" 110 PRINT #3,SPACE$(48)+" EXPENSE "+SPACE$(12)+ " BALANCE" 120 PRINT #3 130 LET X=1 140 LET Y=1 150 LET D1$=" " 160 LET C$=B$(Y) !GET LEDGER REC 170 LET Z$=A$(X) !GET TRANS RECORD 171 IF VAL(LEFT(Z$,4))=0 GOTO 747 !IF ACCT#=0 DONT UPDATE LEDGR 180 ! SET UP LEDGER FIELDS 190 LET D$=MID(C$,1,7) !ACCT NO 200 LET E$=MID(C$,8,27) !DESCRIPTION 210 LET F$=MID(C$,35,9) !BUDGET APPROP 220 LET G$=MID(C$,44,9) !YTD EXPENSE 230 LET H$=MID(C$,53,9) !ENCUMBERENCE 240 IF D$MID(Z$,1,7) THEN STOP 260 !SET UP TRANSACTION RECORD FIELDS 270 LET J$=MID(Z$,1,7) !ACCT NO 275 IF J$=SPACE$(7) GOTO 490 280 LET K$=MID(Z$,8,4) !PO # 290 LET L$=MID(Z$,12,1) !IDENT 300 LET M$=MID(Z$,13,8) !INVOICE NO 310 LET N$=MID(Z$,21,7) !PO AMT 320 LET O$=MID(Z$,28,7) !ACCUM INVOICE AMT 330 LET P$=MID(Z$,35,7) !CURRENT INVOICE 340 LET Q$=MID(Z$,42,4) !VENDOR NO 350 LET R$=MID(Z$,46,1) !STATUS 360 IF L$="0" THEN 560 370 IF L$>"3" THEN 490 !NO PROCESSING NEEDED 380 IF R$="2" GOTO 460 381 IF R$="8" GOTO 490 390 LET G=VAL(G$) !VALUE OF YTD EXPENSE 400 LET P=VAL(P$) !VALUE OF INVOICE AMT 410 LET G=G+P !UPDATE YTD TOTAL 420 LET T$=FNK$(G) 430 GOSUB 1240 440 LET G$=SPACE$(M)+X1$ 450 IF L$<"3" THEN 730 460 IF MID(Z$,46,1)="3" THEN LET R$="8" ELSE LET R$="2" 465 IF MID(Z$,12,1)="3" OR MID(Z$,12,1)="2" THEN LET R$="8" !IF PREPAID OR PAYROLL SE CMPLTD 470 LET A$(X)=J$+K$+L$+M$+N$+O$+P$+Q$+R$ !UPDTD TRANS REC 480 IF MID(C$,1,9)="999999999" THEN 1300 490 LET X=X+1 500 LET Z$=A$(X) 510 IF D$=MID(Z$,1,7) THEN 260 520 IF MID(Z$,1,7)<>"9999999" THEN 750 530 LET A$(X1)=X$ !P.O. REC 540 LET J$="9999999" 550 GOTO 750 560 IF X1=0 THEN GOTO 580 570 LET A$(X1)=X$ !WRITE PREVIOUS PO REC 580 LET X$=Z$ !SAVE NEW PO REC 590 LET X1=X !SAVE SUBSCRIPT 600 IF MID(X$,46,1)="2" THEN 490 !"2" MEANS ALRDY ENCUM 610 LET R1$="2" !SET IT TO SHOW ENCMBRD 620 LET X0$=MID(X$,1,27): LET X3$=MID(X$,21,7) 630 LET X4$=MID(X$,35,11) 640 LET X$=X0$+X3$+X4$+R1$ 650 LET N1=VAL(X3$) !GET PO AMT 660 LET H=VAL(H$) !GET LEDGER ENCUMBRNCE TOTAL 670 LET H=H+N1 !ADD PO AMT TO ENCUMBERENCE 680 LET T$=FNK$(H) 690 GOSUB 1240 !FORMAT RESULTS 700 LET H$=SPACE$(M)+X1$ 710 LET X=X+1 720 GOTO 500 730 IF L$="1" OR L$="2" THEN GOTO 920 740 GOTO 460 745 LET X=X+1 746 GOTO 170 747 LET A$(X)=LEFT(Z$,45)+"8" 748 GOTO 745 750 LET F=VAL(F$)/100 755 LET T9=T9+F 760 LET F9=F9+F 770 LET G=VAL(G$)/100 780 LET G9=G9+G 785 LET G8=G8+G 790 LET H=VAL(H$)/100 800 LET I=F-(G+H) !UNENCUMBERED BALANCE 810 LET I9=I9+I 820 IF MID(D$,1,2)<>D1$ GOTO 1120 830 PRINT #3,D$+" "+E$; 840 PRINT #3,USING " #######.##",F; 850 PRINT #3, USING " #######.##",G; 860 PRINT #3, USING " ######.## #######.##", H,I 870 LET B$(Y)=D$+E$+F$+G$+H$ 880 LET Y=Y+1 890 LET C$=B$(Y) 900 IF MID(C$,1,9)="999999999" THEN 460 910 GOTO 180 920 LET K1$=MID(X$,8,4) 930 IF K$<>K1$ GOTO 1220 !PO DOESNT MATCH 935 LET H=VAL(H$) 940 LET O1$=MID(X$,28,7) !ENCUMBERED REMAINDER 950 LET O1=VAL(O1$) 960 LET O2=O1-P !SUBT INVOICE FRM ENCUM REM 970 IF O2<=0 THEN 1190 980 LET O1=O1-P !REDUCE ECUMBRN REM BY INVOICE 990 LET T$=FNK$(O1) 1000 GOSUB 1240 1010 LET M=7-A: LET O1$=SPACE$(M)+X1$ 1020 LET H=VAL(H$) 1030 LET H=H-P 1035 IF H<0 THEN LET H=0 1040 LET T$=FNK$(H) 1050 GOSUB 1240 1060 LET H$=SPACE$(M)+X1$ 1070 LET Z9$=MID(X$,1,27) 1080 LET Z0$=MID(X$,35,11): LET Z8$=MID(X$,46,1) 1090 IF O1$=" 0" THEN LET Z8$="8" 1100 LET X$=Z9$+O1$+Z0$+Z8$ 1110 GOTO 460 1120 PRINT #3, SPACE$(34); 1130 PRINT #3, USING"########.## #######.##",F9,G9; 1140 PRINT #3, USING " ######.##",I9 1150 LET F9,G9,I9=0 1160 PRINT #3,D$+" "+E$ 1170 LET D1$=MID(D$,1,2) 1180 GOTO 870 1190 LET H=H-O1 !REDUCE ENCUMB BY REMAINDR 1200 LET O1$=SPACE$(6)+"0" 1210 GOTO 1035 1220 PRINT "CANNOT FIND P.O. FOR ";K$ 1230 GOTO 460 1240 REM - SUBROUTINE TO FORMAT RESULT OF NUM$ 1250 LET A=LEN(T$) 1260 LET A=A-1 1270 LET X1$=MID(T$,1,A) 1280 LET M=9-A 1290 RETURN 1300 PRINT #3,SPACE$(36); 1310 PRINT #3, USING "#######.##",T9; 1311 LET Z=INT(G8) 1312 LET Y=G8-Z 1313 PRINT #3, USING " #######.",Z; 1314 LET Y=Y*100 1315 PRINT #3, USING "##",Y 1320 CLOSE 1,2,3 1330 STOP 1340 DEF FNK$(K8) 1350 LET K7=INT(K8/1000) 1360 LET K6=K8-K7*1000 1370 LET K7$=NUM$(K7) 1380 LET K6$=NUM$(K6) 1390 LET K6$=RIGHT(K6$,2) 1400 ON LEN(K6$) GO TO 1430,1410,1420,1440 1410 LET K6$="00"+K6$ 1415 GO TO 1440 1420 LET K6$="0"+K6$ 1425 GO TO 1440 1430 PRINT "INVALID NUMBER"+K6$ 1435 STOP 1440 LET FNK$=LEFT(K7$,LEN(K7$)-1)+K6$ 1450 FNEND 1460 END