1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        EXPEND:   BUDGET EXPENDITURES VS. TARGETS MONITOR
4  REM
5  REM        36111 REV  B   10/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
10  DIM Y$[20]
20  DIM A$[8],B$[3],N$[36],G$[8],U$[6],L$[4]
30  DIM D$[20]
40  LET R1=D=0
50  FILES FL1,FL2,FL3,FL4
60  FILES FL5,FL6,FL7,FL8
70  FILES FL9,FL10,FL11,FL12
80  FILES FL14,FL14,FL15,FL16
90  READ #16,16;Z
100  IF Z#0 THEN 190
110  FOR I=1 TO 15
120  PRINT #16,I;"0"
130  NEXT I
140  FOR I=17 TO 48
150  PRINT #16,I;0
160  NEXT I
170  LET Z=1
180  PRINT #16,16;Z
190  PRINT "DO YOU WISH INSTRUCTIONS";
200  INPUT A$
210  LET B$="YES"
220  IF A$#B$ THEN 310
230  PRINT "THIS PROGRAM CAN BE USED TO CREATE, UPDATE, OR LIST"
240  PRINT "BUDGETARY DATA SO AS TO PERMIT CONTINUOUS MONITORING"
250  PRINT "OF EXPENDITURES VS TARGETS. NOTE THAT THE PROGRAM CAN"
260  PRINT "HANDLE UP TO 15 LOCATION CODES WITH 20 ACCOUNTS AND/"
270  PRINT "OR MAJOR ITEMS PER LOCATION CODE."
280  PRINT "THE NAME OF EACH RECORD CAN BE UP TO 32 CHARACTERS"
290  PRINT "INCLUDING SPACES.  EACH RECORD ALSO INCLUDES $"
300  PRINT "EXPENDED AND $ TARGETED (UP TO 8 DIGITS)"
310  PRINT "DO YOU WISH TO 'GENERATE'NEW FILES(S), 'UPDATE'"
320  PRINT "EXISTING FILES, OR 'LIST' DATA?"
330  INPUT A$
340  LET G$="GENERATE"
350  LET U$="UPDATE"
360  LET L$="LIST"
370  IF A$=G$ THEN 1090
380  IF A$=U$ THEN 1660
390  IF A$=L$ THEN 410
400  GOTO 2770
410  PRINT "DO YOU WANT ALL FILES LISTED";
420  INPUT A$
430  LET C1=0
440  IF A$=B$ THEN 560
450  REM SINGLE FILE LOOP
460  GOSUB 720
470  PRINT "INPUT THE NUMBER OF THE FILE YOU WANT LISTED";
480  INPUT X
490  GOSUB 670
500  GOSUB 840
510  GOTO 2770
520  REM LISTING LOOP
530  PRINT "DO YOU WANT ANY LISTING";
540  INPUT A$
550  IF A$=B$ THEN 2770
560  GOSUB 670
570  LET C1=1
580  FOR X=1 TO 15
590  GOSUB 840
600  NEXT X
610  LET C1=0
620  GOTO 2770
630  REM DATE LOOP
640  PRINT "ENTER DATE";
650  INPUT D$
660  PRINT #16,48;D$
670  READ #16,48;D$
680  PRINT D$
690  PRINT 
700  RETURN 
710  REM FILE LISTING
720  PRINT "DO YOU NEED THE FILE NO. LIST?"
730  INPUT A$
740  IF A$#B$ THEN 800
750  PRINT "FILE NO.       NAME"
760  FOR L=1 TO 15
770  READ #16,L;Y$
780  PRINT TAB(4);L;TAB(14);Y$
790  NEXT L
800  RETURN 
810  REM RECORD NO. AND CONTENTS LISTING
820  PRINT "INPUT NO. OF FILE TO BE LISTED";
830  INPUT X
840  LET E1=S=0
850  READ #16,X;Y$
860  LET W=X+32
870  READ #16,W;S
880  PRINT 
890  PRINT "DATA FOR  "Y$," TOTAL TARGETED $"S
900  PRINT 
910  IF Y$="0" THEN 1070
920  PRINT "RECORD";TAB(16);"NAME";TAB(45);"EXPENDED";TAB(55);"TARGETED"
930  LET Y=X+17
940  READ #16,Y;R
950  FOR J=1 TO R
960  READ #X,J;N$,E,T
970  PRINT TAB(3);J;TAB(8);N$;TAB(45);E;TAB(55);T
980  IF SGN(E)=-1 THEN 1000
990  LET E1=E1+E
1000  PRINT 
1010  NEXT J
1020  PRINT "TOTAL EXPENDED $"E1
1030  IF C1=1 THEN 1070
1040  PRINT "DO YOU WISH ANY OTHER FILE LISTED";
1050  INPUT A$
1060  IF A$=B$ THEN 820
1070  RETURN 
1080  REM GENERATE LOOP
1090  GOSUB 720
1100  READ #16,17;N
1110  PRINT "THERE ARE "15-N" FILES AVAILABLE"
1120  PRINT "HOW MANY NEW FILES";
1130  INPUT N1
1140  FOR J=1 TO N1
1150  PRINT "INPUT THE NUMBER OF AN AVAILABLE FILE";
1160  INPUT X
1170  PRINT "INPUT NEW FILE NAME"
1180  INPUT Y$
1190  PRINT #16,X;Y$
1200  S=C=R1=0
1210  PRINT "HOW MANY RECORDS (ONE PER ACCOUNT OR NAME) DO YOU REQUIRE";
1220  INPUT R
1230  IF R=0 THEN 1570
1240  PRINT "INPUT YOUR BUDETARY DATA"
1250  IF C=1 THEN 1290
1260  PRINT "NAME OR ACCOUNT NUMBER"
1270  PRINT "$ EXPENDED"
1280  PRINT "$ TARGETED"
1290  IF R1=1 THEN 1320
1300  IF R1=2 THEN 2200
1310  FOR K=1 TO R
1320  PRINT "ENTER RECORD NO. "K
1330  IF D#1 THEN 1420
1340  PRINT "HOW MANY NEW EXPENDITURES";
1350  INPUT B
1360  FOR I=1 TO B
1370  PRINT "NEXT EXPENDITURE ";
1380  INPUT E1
1390  LET E=E+E1
1400  NEXT I
1410  GOTO 1440
1420  INPUT N$,E,T
1430  REM ENTER RECORD LOOP
1440  PRINT #X,K;N$,E,T
1450  IF D=1 THEN 700
1460  LET Y=X+32
1470  READ #16,Y;S
1480  IF SGN(T)=-1 THEN 1510
1490  LET S=S+T
1500  PRINT #16,Y;S
1510  IF R1=2 THEN 2410
1520  IF R1=1 THEN 1950
1530  NEXT K
1540  LET C=1
1550  LET Y=X+17
1560  PRINT #16,Y;R
1570  IF R1#0 THEN 2430
1580  NEXT J
1590  LET N=N+N1
1600  PRINT #16,17;N
1610  IF R1=2 THEN 1810
1620  IF R1=1 THEN 1950
1630  GOSUB 640
1640  GOTO 350
1650  REM UPDATE LOOP
1660  GOSUB 720
1670  LET C=1
1680  PRINT "INPUT THE NO. OF THE FILE TO BE CHANGED";
1690  INPUT X
1700  PRINT "DO YOU WISH TO DELETE THIS FILE";
1710  INPUT A$
1720  IF A$=B$ THEN 2200
1730  LET C1=1
1740  PRINT "DO YOU WANT DATA LISTED FOR THIS FILE";
1750  INPUT A$
1760  IF A$#B$ THEN 1780
1770  GOSUB 840
1780  PRINT "DO YOU WISH TO UPDATE EXPENDITURES";
1790  INPUT A$
1800  IF A$=B$ THEN 2460
1810  PRINT "DO YOU WISH TO ADD RECORDS";
1820  INPUT A$
1830  IF A$=B$ THEN 2320
1840  GOTO 1940
1850  PRINT "INPUT THE NUMBER OF THE RECORD TO BE CHANGED";
1860  INPUT Y
1870  LET R1=1
1880  GOTO 2560
1890  PRINT "DO YOU WISH TO DELETE THIS RECORD";
1900  INPUT A$
1910  IF A$=B$ THEN 2590
1920  PRINT "ENTER NEW RECORD"
1930  GOTO 1250
1940  LET R1=0
1950  PRINT "DO YOU WISH TO CHANGE ANY OTHER RECORDS";
1960  INPUT A$
1970  IF A$=B$ THEN 1850
1980  PRINT "DO YOU WISH TO CHANGE ANY OTHER FILE";
1990  INPUT A$
2000  IF A$=B$ THEN 1670
2010  GOSUB 640
2020  PRINT "DO YOU WANT ANY LISTING";
2030  INPUT A$
2040  IF A$#B$ THEN 2770
2050  GOTO 410
2060  LET Z=X+17
2070  READ #16,Z;R
2080  IF R1#2 THEN 2110
2090  LET R=R+1
2100  PRINT #16,Z;R
2110  LET K=Y
2120  IF R1=2 THEN 1320
2130  LET Z=X+32
2140  READ #16,Z;S
2150  READ #X,Y;N$,E,T
2160  IF SGN(T)=-1 THEN 2180
2170  LET S=S-T
2180  GOTO 1320
2190  REM FILE DELETION LOOP
2200  LET Y=R=S=0
2210  PRINT #X,1
2220  PRINT #16,X;"0"
2230  LET Y=X+17
2240  PRINT #16,Y;R
2250  LET Y=X+32
2260  PRINT #16,Y;S
2270  READ #16,17;N
2280  GOTO 1980
2290  PRINT #16,17;N
2300  GOTO 1890
2310  REM RECORD ADDITION LOOP
2320  LET R1=2
2330  PRINT "HOW MANY RECORDS";
2340  INPUT A
2350  PRINT "INPUT THE NO. OF THE NEXT RECORD";
2360  INPUT Y
2370  LET B=Y
2380  FOR H=B TO B+A-1
2390  LET B=B+1
2400  GOTO 2060
2410  LET Y=B
2420  NEXT H
2430  LET R1=0
2440  GOTO 1950
2450  REM UPDATE EXPEND LOOP
2460  LET D=1
2470  PRINT "INPUT RECORD NO.";
2480  INPUT K
2490  READ #X,K;N$,E,T
2500  GOSUB 1330
2510  LET D=0
2520  PRINT "MORE EXPENDITURES TO BE UPDATED";
2530  INPUT A$
2540  IF A$=B$ THEN 2460
2550  GOTO 1810
2560  REM RECORD DELETION
2570  READ #X,Y;N$,E,T
2580  IF R1=1 THEN 2650
2590  LET Z=X+17
2600  READ #16,Z;R
2610  IF Y<R THEN 2650
2620  LET R=R-1
2630  PRINT #16,Z;R
2640  GOTO 1950
2650  LET Z=X+32
2660  READ #16,Z;S
2670  IF SGN(T)=-1 THEN 2690
2680  LET S=S-T
2690  PRINT #16,Z;S
2700  LET N$="0"
2710  LET E=T=0
2720  PRINT #X,Y;N$,E,T
2730  LET K=Y
2740  IF R1=1 THEN 1890
2750  GOTO 1950
2760  REM REPEAT LOOP
2770  PRINT "FINISHED";
2780  INPUT A$
2790  IF A$#B$ THEN 310
2800  END 
