1  REM  ****  HP BASIC PROGRAM LIBRARY  *********************************
2  REM
3  REM        IN2CAL:  CTC PROJECTION PROGRAMS
4  REM
5  REM        36212  REV B  PART 2 OF 10  6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  **************************************
8  REM
9  REM
10  DIM F[64],M[64]
11  DIM A$[20],S$[20]
20  DEF FNA()=32*(L1-1)+1+2*(-1)
100  FILES IN1,IN2
200  PRINT "CALCULATE ONLY,PRINT ONLY,BOTH OR DISTROY FILE (C/P/B/D)";
210  INPUT A$
220  IF A$="END" THEN 9999
225  F1=1
230  IF A$[1,1]="C" THEN 400
235  F1=2
240  IF A$[1,1]="P" THEN 300
245  F1=3
250  IF A$[1,1]="B" THEN 300
252  IF A$[1,1]="D" THEN 500
255  PRINT '7'7'7"WHAT";
260  GOTO 210
300  PRINT "ENTER TODAY'S DATE";
305  INPUT D
310  D1=INT(D/10^4)
315  IF D1>0 AND D1<13 THEN 330
320  PRINT '7'7'7"WHAT";
325  GOTO 305
330  D2=INT((D-D1*10^4)/100)
335  IF D2<1 OR D2>31 THEN 320
340  D3=D-D1*10^4-D2*100
345  IF D3<72 OR D3>79 THEN 320
350  PRINT "BEGINNING F.Y.";
355  INPUT G1
360  IF G1>71 AND G1<99 THEN 400
365  PRINT '7'7'7'7"WHAT";
370  GOTO 355
400  IF F1=2 THEN 1000
405  PRINT "CALCULATE OVER MONTH INTERVAL (M1,M2)";
410  INPUT M8,M9
415  IF M8>0 AND M8<48 AND M9>0 AND M9<48 AND M8 <= M9 THEN 1000
420  PRINT '7'7'7"WHAT";
425  GOTO 405
500  PRINT '7'7'7'7"ARE YOU SURE YOU WANT TO CLEAR THE INTERMEDIATE FILE";
505  INPUT A$
510  IF A$[1,1]#"Y" THEN 200
515  MAT F=ZER
520  FOR I=1 TO 100
525  MAT  PRINT #2;F
530  NEXT I
535  PRINT "INTERMEDIATE FILE NOW ALL 0'S"
540  END 
1000  P9=66
1001  FOR L1=1 TO 6
1003  C1=1
1004  C2=6
1005  IF L1<4 THEN 1009
1006  C2=8
1007  IF L1=4 THEN 1009
1008  C2=9
1009  GOTO F1 OF 1010,1070,1010
1010  FOR C=C1 TO C2
1015  MAT M=ZER
1016  IF L1<4 AND C=2 THEN 1060
1017  IF L1=5 AND C=3 THEN 1060
1020  FOR M=M8 TO M9
1025  FOR P=1 TO 16
1030  GOSUB 4000
1040  GOSUB C OF 2000,2050,2100,2150,2200,2250,2300,2350,2400
1050  NEXT P
1052  IF L1<4 OR C#4 THEN 1055
1053  IF M=M8 THEN 1055
1054  M[M]=M[M]+M[M-1]
1055  NEXT M
1060  GOSUB 4150
1065  NEXT C
1067  IF F1=1 THEN 1080
1070  GOSUB 1100
1080  NEXT L1
1090  END 
1100  GOSUB 8000
1105  FOR C=C1 TO C2
1110  GOTO C OF 1115,1120,1125,1130,1135,1140,1145,1150,1155
1115  A$="REVENUE"
1117  GOTO 1200
1120  A$="MAINT."
1122  GOTO 1200
1125  A$="COST OF REV"
1127  GOTO 1200
1130  A$="COMMISSION"
1132  GOTO 1200
1135  A$="LABOR"
1137  GOTO 1200
1140  A$="MATERIAL"
1142  GOTO 1200
1145  A$="REV. (I.S.)"
1147  GOTO 1200
1150  A$="COMMIS (I.S.)"
1152  GOTO 1200
1155  A$="REV COST(I.S)"
1200  G2=G1
1202  PRINT A$;
1205  GOSUB 4100
1207  FOR I=1 TO 4
1210  PRINT TAB(13);
1212  Z$="##-##"
1215  X$="0"
1220  Z[1]=G2
1225  G2=G2+1
1230  Z[2]=G2
1235  GOSUB 9000
1240  FOR J=1 TO 12
1245  Z$=" #######"
1250  X$=" "
1255  Z[1]=M[J+12*(I-1)]
1260  GOSUB 9000
1265  NEXT J
1270  PRINT 
1275  NEXT I
1280  PRINT 
1285  P9=P9+5
1290  IF P9<58 THEN 1300
1295  GOSUB 8000
1300  NEXT C
1310  RETURN 
2000  GOSUB 4200
2005  GOTO L1 OF 2010,2010,2010,2015,2020,2025
2010  M[M]=M[M]+F[M]*F[54]*X
2012  RETURN 
2015  M[M]=M[M]+F[M]*F[51]*F[59]*X
2017  RETURN 
2020  M[M]=M[M]+F[M]*F[51]*X
2022  RETURN 
2025  M[M]=M[M]+F[M]*F[54]*.515*X
2027  RETURN 
2050  REM
2055  M[M]=M[M]+F[M]*F[52]
2060  RETURN 
2100  GOSUB 4300
2105  X1=F[M]*(F[49]+F[50])*Y
2110  IF L1#6 THEN 2120
2115  X1=X1*.75
2120  M[M]=M[M]+X1
2125  RETURN 
2150  GOSUB 4200
2155  IF L1>3 AND L1<6 THEN 2170
2160  M[M]=M[M]+F[M]*F[53]*X*F[54]
2165  RETURN 
2170  X1=F[M]*F[51]*F[53]
2175  IF L1#4 THEN 2185
2180  X1=X1*X
2185  M[M]=M[M]+X1
2190  RETURN 
2200  GOSUB 4300
2205  M[M]=M[M]+F[M]*F[50]*Y
2210  RETURN 
2250  GOSUB 4300
2255  M[M]=M[M]+F[M]*F[49]*Y
2260  RETURN 
2300  GOSUB 4200
2305  M[M]=M[M]+F[M]*F[54]*X
2310  RETURN 
2350  IF L1#4 THEN 2365
2355  M[M]=M[M]+F[M]*F[51]*F[59]*F[53]
2360  RETURN 
2365  GOSUB 4200
2367  IF L1#5 THEN 2380
2370  M[M]=M[M]+F[M]*F[53]*F[54]*X
2375  RETURN 
2380  M[M]=M[M]+F[M]*F[53]*F[54]*X
2385  RETURN 
2400  GOSUB 4300
2410  M[M]=M[M]+F[M]*(F[49]+F[50])*Y
2420  RETURN 
4000  T=P
4010  R1=FNA(T)
4020  READ #1,R1
4030  MAT  READ #1;F
4040  RETURN 
4100  T=C
4110  R1=FNA(T)
4120  READ #2,R1
4130  MAT  READ #2;M
4140  RETURN 
4150  T=C
4155  R1=FNA(T)
4160  READ #2,R1
4165  FOR I=1 TO 48
4166  X=INT(M[I])
4167  IF M[I]-X<.5 THEN 4170
4168  X=X+1
4170  M[I]=X
4175  NEXT I
4180  MAT  PRINT #2;M
4190  RETURN 
4200  REM *FIGURE X*
4210  X=1
4220  RETURN 
4300  REM *FIGURE Y*
4310  Y=1
4320  RETURN 
4400  GOTO L1 OF 4405,4415,4425,4435,4445,4455
4405  S$="END USER"
4410  RETURN 
4415  S$="OEM"
4420  RETURN 
4425  S$="INTL"
4430  RETURN 
4435  S$="LEASE CO."
4440  RETURN 
4445  S$="CTC LEASES"
4450  RETURN 
4455  S$="INSTALLMENT"
4460  RETURN 
8000  K=66-P9+4
8010  GOSUB 9900
8015  GOSUB 4400
8020  X=INT((80-(19+LEN(S$)))/2)
8025  PRINT TAB(X)"S A L E  T Y P E:  ";S$
8030  Z$="##/##/##"
8035  X$=" "
8040  PRINT TAB(36);
8045  Z[1]=D1
8050  Z[2]=D2
8055  Z[3]=D3
8060  GOSUB 9000
8065  K=3
8070  GOSUB 9900
8075  PRINT "CALCULATION   F.Y.     M01     M02     M03     M04     M05";
8080  PRINT "     M06     M07     M08     M09     M10     M11     M12"
8085  K=2
8090  GOSUB 9900
8095  P9=11
8097  RETURN 
9000  REM
9003  LET Z2=Z3=Z4=Z5=Z7=Z8=Z9=1
9004  DIM Y$[10],Z$[72]
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 " ";
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 
