1 REM **** HP BASIC PROGRAM LIBRARY ********************************2 REM 2 REM 3 REM INST1: CTC PROJECTION PROGRAMS 4 REM 5 REM 36212 REV B PART 3 OF 10 6/73 6 REM 7 REM **************** CONTRIBUTED PROGRAM ***************************** 8 REM 9 H$="" 10 DIM F[64],G[32],L[15] 11 DIM A$[20] 12 DIM C$[10] 20 MAT READ L 21 DATA 7,11,14,15,16,18,19,24,26,27,28,29,30,31,32 30 C$="0123456789" 100 FILES IN2,R1 200 PRINT H$[1,2]"ENTER OR MODIFY VARIABLES;" 202 PRINT "SET UP OR CLEAR PRINT MATRIX (E/M/S/C)"; 205 INPUT A$ 210 IF A$="END" THEN 9999 215 IF A$[1,1]="E" THEN 1000 220 IF A$[1,1]="M" THEN 2000 222 IF A$[1,1]="S" THEN 3000 223 IF A$[1,1]="C" THEN 500 225 GOSUB 4240 230 GOTO 200 500 PRINT '7'7'7"ARE YOU SURE YOU WANT TO CLEAR THE INCOME STATEMENT FILE"; 501 INPUT A$ 502 IF A$[1,1]#"Y" THEN 200 505 MAT G=ZER 510 FOR I=1 TO 50 520 MAT PRINT #2,I;G 530 NEXT I 540 PRINT "PRINT MATRIX NOW ZERO" 550 END 1000 GOSUB 2300 1001 F4=13 1002 GOSUB 2400 1003 IF P5#1 THEN 1110 1004 PRINT "YTD FIGURES" 1005 MAT G=ZER 1010 Z$="K##" 1015 X$="0" 1020 FOR I1=1 TO 32 1025 Z[1]=I1 1030 GOSUB 9000 1040 INPUT G[I1] 1045 NEXT I1 1050 PRINT "K33"; 1055 INPUT M6 1060 PRINT "K34"; 1065 INPUT M7 1070 PRINT "K35"; 1075 INPUT M8 1090 PRINT "ENTER AS ABOVE"; 1095 INPUT A$ 1100 IF A$[1,1]#"Y" THEN 1004 1105 MAT PRINT #2,1;G 1107 PRINT #2,50;M6,M7,M8 1110 PRINT "ENTER MONTHLY VARIABLES" 1115 FOR M=E0 TO E1 1120 MAT G=ZER 1125 PRINT "YEAR";P5;"MONTH";M 1130 FOR L=1 TO 15 1135 Z$="K##" 1140 X$="0" 1145 Z[1]=L[L] 1150 GOSUB 9000 1155 INPUT G[L[L]] 1160 NEXT L 1165 PRINT "ENTER AS ABOVE"; 1167 INPUT A$ 1170 IF A$[1,1]#"Y" THEN 1120 1172 M1=M+(P5-1)*12 1175 MAT PRINT #2,M1+1;G 1180 NEXT M 1185 GOTO 200 2000 REM 2002 PRINT H$[1,2]"MODIFY YTD OR MONTHLY VARIABLES (Y/M)"; 2005 INPUT A$ 2010 IF A$="END" THEN 200 2015 IF A$[1,1]="Y" THEN 2035 2020 IF A$[1,1]="M" THEN 2165 2025 GOSUB 4240 2030 GOTO 2000 2035 MAT READ #2,1;G 2037 READ #2,50;M6,M7,M8 2040 Z$="K##:" 2045 X$="0" 2050 FOR I=1 TO 8 2055 FOR J=1 TO 4 2060 PRINT TAB(15*(J-1)); 2065 Z[1]=J+4*(I-1) 2070 GOSUB 9000 2072 PRINT G[J+4*(I-1)]; 2075 NEXT J 2080 PRINT 2085 NEXT I 2090 PRINT "K33:";M6;TAB(15)"K34:";M7;TAB(30)"K35:";M8 2095 PRINT 2100 PRINT "MODIFY K#"; 2105 INPUT A$ 2110 IF A$="END" THEN 2000 2115 GOSUB 4200 2120 IF B1 THEN 2100 2125 IF Z>0 AND Z<36 THEN 2140 2130 GOSUB 4240 2135 GOTO 2100 2140 PRINT "NEW VALUE"; 2141 IF Z>32 THEN 2146 2142 INPUT G[Z] 2143 MAT PRINT #2,1;G 2145 GOTO 2155 2146 GOTO Z-32 OF 2147,2149,2151 2147 INPUT M6 2148 GOTO 2152 2149 INPUT M7 2150 GOTO 2152 2151 INPUT M8 2152 PRINT #2,50;M6,M7,M8 2155 PRINT H$[6,8]; 2160 GOTO 2100 2165 GOSUB 2300 2167 PRINT "WHICH MONTH"; 2170 INPUT M 2175 IF M>0 AND M<13 THEN 2190 2180 GOSUB 4240 2185 GOTO 2165 2190 M=M+(P5-1)*12 2192 MAT READ #2,(M+1);G 2195 Z$="K##:" 2200 X$="0" 2205 FOR L=1 TO 15 2210 Z[1]=L[L] 2215 GOSUB 9000 2225 PRINT G[L[L]] 2227 NEXT L 2230 PRINT 2235 PRINT "MODIFY K#"; 2240 INPUT A$ 2245 IF A$="END" THEN 2000 2250 GOSUB 4200 2255 IF B1 THEN 2235 2260 FOR L=1 TO 15 2265 IF Z=L[L] THEN 2285 2270 NEXT L 2275 GOSUB 4240 2280 GOTO 2235 2285 PRINT "NEW VALUE"; 2290 INPUT G[Z] 2295 MAT PRINT #2,(M+1);G 2297 PRINT H$[6,8]; 2298 GOTO 2235 2300 PRINT "PROJECTED YEAR (1,2,3, OR 4)"; 2305 INPUT P5 2310 IF P5>0 AND P5<5 THEN 2330 2315 GOSUB 4240 2320 GOTO 2300 2330 RETURN 2400 PRINT "MONTHLY INTERVAL (M1,M2)"; 2405 INPUT E0,E1 2410 IF E0>0 AND E00 AND E117 THEN 3462 3460 G[20]=G[20]+G[I+12] 3461 GOTO 3465 3462 G[20]=G[20]+G[I+11] 3463 IF I#19 THEN 3465 3464 G[20]=G[20]+G[31] 3465 NEXT I 3470 G[13]=G[8]-G[12] 3475 G[22]=G[20]-G[21] 3480 G[23]=G[13]-G[22] 3485 G[25]=G[23]+G[24]+G[32] 3490 MAT PRINT #2,(M+1);G 3495 NEXT M 3497 END 3500 FOR M=E0 TO E1 3505 MAT READ #2,(M+1);G 3510 FOR I=1 TO 32 3515 FOR J=1 TO 15 3520 IF I=L[J] THEN 3535 3525 NEXT J 3530 G[I]=0 3535 NEXT I 3537 MAT PRINT #2,(M+1);G 3540 NEXT M 3545 RETURN 4000 R=32*(L1-1)+1 4010 R1=R+2*(C-1) 4020 READ #1,R1 4025 MAT READ #1;F 4030 RETURN 4050 READ #1,R1 4060 MAT PRINT #1;F 4070 RETURN 4200 B1=Z=0 4205 S6=1 4210 IF A$[1,1]#"-" THEN 4220 4215 S6=-1 4217 A$=A$[2] 4220 FOR I1=1 TO LEN(A$) 4225 FOR I2=1 TO 10 4230 IF A$[I1,I1]=C$[I2,I2] THEN 4255 4235 NEXT I2 4240 PRINT '7'7"INVALID DATA";H$[3,5]; 4245 B1=1 4250 RETURN 4255 Z=Z*10+I2-1 4260 NEXT I1 4265 Z=Z*S6 4270 RETURN 9000 REM 9003 LET Z2=Z3=Z4=Z5=Z7=Z8=Z9=1 9004 DIM Y$[10],Z$[72],Z[20] 9005 LET Y$="0123456789" 9006 LET Z0=Z9-1 9007 LET Z0=Z0+1 9008 IF Z0=LEN(Z$)+1 THEN 9059 9009 IF Z$[Z0,Z0]="#" THEN 9016 9010 IF Z$[Z0,Z0+1]=".#" THEN 9016 9011 IF Z$[Z0,Z0+1]="+#" THEN 9014 9012 PRINT Z$[Z0,Z0]; 9013 GOTO 9007 9014 LET Z4=0 9015 GOTO 9007 9016 LET Z=100 9017 LET Z6=Z[Z2] 9018 LET Z9=Z0-1 9019 LET Z9=Z9+1 9020 IF Z$[Z9,Z9]="." THEN 9023 9021 IF Z$[Z9,Z9]="#" THEN 9019 9022 GOTO 9027 9023 IF Z5#1 THEN 9027 9024 LET Z5=0 9025 LET Z=Z9 9026 GOTO 9019 9027 IF Z#100 THEN 9029 9028 LET Z=Z9 9029 IF Z4=1 THEN 9034 9030 IF Z6 >= 0 THEN 9033 9031 PRINT "-"; 9032 GOTO 9034 9033 PRINT " "; 9034 LET Z6=ABS(Z6)+10^(Z-Z9-1) 9035 FOR Z1=Z-Z0 TO Z+1-Z9 STEP -1 9036 IF Z$[Z-Z1,Z-Z1]#"." THEN 9041 9037 PRINT "."; 9038 LET Z3=0 9039 LET Z7=2 9040 GOTO 9055 9041 LET Z8=INT(Z6/(10^(Z1+Z7-2))) 9042 IF Z6<10^(Z-Z0) THEN 9045 9043 PRINT "#"; 9044 GOTO 9055 9045 LET Z6=Z6-Z8*10^(Z1+Z7-2) 9046 IF Y$[Z8+1,Z8+1]="0" THEN 9048 9047 LET Z3=0 9048 IF Z3=0 THEN 9054 9049 IF Z1#1 THEN 9052 9050 PRINT "0"; 9051 GOTO 9055 9052 PRINT X$; 9053 GOTO 9055 9054 PRINT Y$[Z8+1,Z8+1]; 9055 NEXT Z1 9056 LET Z3=Z4=Z5=Z7=1 9057 LET Z2=Z2+1 9058 GOTO 9006 9059 RETURN 9900 FOR I=1 TO K 9910 PRINT " " 9920 NEXT I 9930 RETURN 9999 END