1  REM  ****  HP BASIC PROGRAM LIBRARY  ******************************
2  REM
3  REM        R1PRT:  CTC PROJECTION PROGRAMS
4  REM
5  REM        36212  REV B  PART 4 OF 10  6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ***********************************
8  REM
9  H$=""
10  DIM G[32],K[32]
11  DIM A$[20]
100  FILES R1
200  PRINT H$[1,2]"ENTER CURRENT DATE";
205  INPUT D
210  D1=INT(D/10^4)
215  IF D1>0 AND D1<13 THEN 230
220  GOSUB 4240
225  GOTO 200
230  D2=INT((D-D1*10^4)/100)
235  IF D2<1 OR D2>31 THEN 220
240  D3=D-D1*10^4-D2*100
245  IF D3<72 OR D3>99 THEN 220
250  PRINT "LEASES SOLD";
255  INPUT A$
260  H7=0
265  IF A$[1,1]="Y" THEN 272
270  H7=1
272  IF H7 THEN 300
273  PRINT "NEW CONSTANTS"
274  PRINT "LEASING CO";
275  INPUT C1
276  PRINT "CTC LEASES RETAIL";
277  INPUT C2
278  PRINT "INCREASE:"
279  PRINT "COST OF GOODS";
280  INPUT C3
281  PRINT "COMMISSION";
282  INPUT C4
300  PRINT "FISCAL YEAR (YY)";
305  INPUT F1
310  IF F1>71 AND F1<79 THEN 325
315  GOSUB 4240
320  GOTO 300
325  PRINT "ENTER PROJECTED YEAR (1,2,3 OR 4)";
330  INPUT M3
335  IF M3>0 AND M3<5 THEN 350
340  GOSUB 4240
345  GOTO 325
350  PRINT "REPORT BY MONTH OR QUARTER (M/Q)";
355  INPUT A$
360  F2=1
365  IF A$[1,1]="M" THEN 1000
370  F2=2
375  IF A$[1,1]="Q" THEN 1055
380  GOSUB 4240
385  GOTO 350
1000  PRINT "ENTER MONTHLY INTERVAL (M1,M2)";
1030  INPUT M1,M2
1035  IF M1>0 AND M1<13 AND M2>0 AND M2<13 AND M1 <= M2 THEN 1050
1040  GOSUB 4240
1045  GOTO 1000
1050  M4=M1+12*(M3-1)
1052  M5=M2+12*(M3-1)
1055  P9=66
1060  GOSUB 8000
1062  GOSUB 1600
1065  PRINT "REVENUE"
1070  I1=1
1072  I7=0
1075  PRINT " END USER";
1080  GOSUB F2 OF 1500,2000
1085  PRINT " OEM";
1090  GOSUB F2 OF 1500,2000
1095  PRINT " INTERNATIONAL";
1100  GOSUB F2 OF 1500,2000
1105  PRINT " LEASE CO.";
1110  GOSUB F2 OF 1500,2000
1111  IF H7 THEN 1115
1112  PRINT " CTC LEASES @ RETAIL";
1113  GOTO 1120
1115  PRINT " CTC LEASE BILLINGS";
1120  GOSUB F2 OF 1500,2000
1125  PRINT " MAINTENANCE BILLINGS";
1130  GOSUB F2 OF 1500,2000
1132  IF H7 THEN 1135
1133  I1=I1+1
1134  GOTO 1145
1135  PRINT " DEFERED REVENUES REALIZED (DRR)";
1140  GOSUB F2 OF 1500,2000
1145  PRINT "    TOTAL REVENUE";
1150  GOSUB F2 OF 1500,2000
1155  PRINT 
1160  PRINT "COST OF REVENUES"
1165  PRINT " COST OF GOODS SOLD";
1170  GOSUB F2 OF 1500,2000
1171  IF H7 THEN 1175
1172  I1=I1+2
1173  GOTO 1195
1175  PRINT " DEPRECIATION";
1180  GOSUB F2 OF 1500,2000
1185  PRINT " COST RELATED TO DRR";
1190  GOSUB F2 OF 1500,2000
1195  PRINT "    TOTAL COST OF REVENUES";
1200  GOSUB F2 OF 1500,2000
1205  PRINT 
1210  PRINT "GROSS MARGIN";
1215  GOSUB F2 OF 1500,2000
1220  PRINT 
1225  PRINT "EXPENSES"
1230  PRINT " MANUFACTURING";
1232  I7=26
1235  GOSUB F2 OF 1500,2000
1240  PRINT " ENGINEERING";
1242  I7=27
1245  GOSUB F2 OF 1500,2000
1250  PRINT " MARKETING-FIXED";
1252  I7=28
1255  GOSUB F2 OF 1500,2000
1260  PRINT " MARKETING-COMMISSIONS";
1265  GOSUB F2 OF 1500,2000
1270  PRINT " FIELD SERVICE";
1272  I7=29
1275  GOSUB F2 OF 1500,2000
1280  PRINT " G & A";
1282  I7=30
1285  GOSUB F2 OF 1500,2000
1290  PRINT "    TOTAL EXPENSES";
1295  GOSUB F2 OF 1500,2000
1300  PRINT 
1301  IF H7 THEN 1305
1302  I1=I1+2
1303  GOTO 1335
1305  PRINT "CAPITALIZED OVERHEAD";
1310  GOSUB F2 OF 1500,2000
1315  PRINT 
1320  PRINT "    NET EXPENSES";
1325  GOSUB F2 OF 1500,2000
1330  PRINT 
1335  PRINT "INCOME (LOSS) FROM OPERATIONS";
1340  GOSUB F2 OF 1500,2000
1345  PRINT 
1350  PRINT "OTHER INCOME (EXPENSE)";
1352  I7=32
1355  GOSUB F2 OF 1500,2000
1360  PRINT 
1365  PRINT "TOTAL INCOME (LOSS)";
1370  GOSUB F2 OF 1500,2000
1375  END 
1500  Z$="####"
1501  X$=" "
1502  IF M3=1 THEN 1510
1503  PRINT TAB(42);
1504  T=0
1505  GOTO 1535
1510  T=Z[1]=K[I1]
1520  PRINT TAB(35);
1530  GOSUB 8900
1532  PRINT " ";
1535  FOR M=M4 TO M5
1536  MAT  READ #1,(M+1);G
1537  X=G[I1]
1538  IF I7=0 THEN 1545
1539  X=X+G[I7]
1540  IF I7#30 THEN 1544
1541  X=X+G[31]
1544  REM
1545  T=T+X
1550  Z[1]=X
1555  GOSUB 8900
1557  PRINT " ";
1560  NEXT M
1562  I7=0
1565  Z$[5,5]="#"
1570  Z[1]=T
1575  GOSUB 8900
1580  PRINT 
1585  P9=P9+1
1590  IF P9<60 THEN 1597
1595  GOSUB 8000
1597  I1=I1+1
1598  RETURN 
1600  MAT  READ #1,1;K
1605  K[8]=K[12]=K[20]=0
1607  X=7
1610  X1=11
1615  IF H7 THEN 1650
1620  K[4]=C1
1625  K[5]=C2
1630  K[9]=K[9]+C3
1635  K[17]=K[17]+C4
1637  K[21]=0
1640  X=6
1645  X1=9
1650  FOR I=1 TO X
1655  K[8]=K[8]+K[I]
1660  NEXT I
1665  FOR I=9 TO X1
1670  K[12]=K[12]+K[I]
1675  NEXT I
1680  FOR I=14 TO 19
1681  K[20]=K[20]+K[I]
1682  IF I=17 THEN 1690
1683  IF I>17 THEN 1686
1684  K[20]=K[20]+K[I+12]
1685  GOTO 1690
1686  K[20]=K[20]+K[I+11]
1687  IF I#19 THEN 1690
1688  K[20]=K[20]+K[31]
1690  NEXT I
1695  K[13]=K[8]-K[12]
1700  K[22]=K[20]-K[21]
1705  K[23]=K[13]-K[22]
1710  K[25]=K[23]+K[24]+K[32]
1720  RETURN 
2000  PRINT TAB(35);
2010  Z$="#####"
2020  X$=" "
2025  T=0
2030  M1=1+12*(M3-1)
2035  FOR M=M1 TO M1+9 STEP 3
2040  T1=0
2045  FOR I=1 TO 3
2046  MAT  READ #1,(M+I);G
2047  T1=T1+G[I1]
2048  IF I7=0 THEN 2055
2049  T1=T1+G[I7]
2050  IF I7#30 THEN 2052
2051  T1=T1+G[31]
2052  I7=0
2055  NEXT I
2060  Z[1]=T1
2065  GOSUB 8900
2067  PRINT "    ";
2070  T=T+T1
2075  NEXT M
2085  Z[1]=T
2090  Z$[6,6]="#"
2095  GOSUB 8900
2100  GOTO 1580
4240  PRINT '7'7'7"INVALID DATA";H$[3,5];
4250  RETURN 
8000  K=66-P9+4
8010  GOSUB 9900
8015  PRINT TAB(38)"C O M P U T E R  T E R M I N A L  C O R P O R A T I O N"
8020  PRINT TAB(42)"PROJECTED INCOME STATEMENT - FISCAL YEAR  ";
8025  Z$="##-##"
8030  X$=" "
8035  Z[1]=F1
8040  Z[2]=F1+1
8045  GOSUB 9000
8050  PRINT 
8051  A$="'IF SOLD'"
8052  IF  NOT H7 THEN 8054
8053  A$=""
8054  PRINT TAB(62);A$
8055  PRINT TAB(62);
8060  Z$="##/##/##"
8065  Z[1]=D1
8070  Z[2]=D2
8075  Z[3]=D3
8080  GOSUB 9000
8085  K=2
8090  GOSUB 9900
8095  PRINT TAB(53)"(FIGURES ROUNDED TO 1000'S)"
8100  K=2
8110  GOSUB 9900
8120  GOTO F2 OF 8121,8500
8121  PRINT TAB(37);
8122  IF M3=1 THEN 8125
8123  PRINT "   ";
8124  GOTO 8126
8125  PRINT "YTD";
8126  FOR M=M1 TO M2
8127  GOTO M OF 8130,8132,8134,8136,8138,8140
8128  GOTO M-6 OF 8142,8144,8146,8148,8150,8152
8130  PRINT "    AUG";
8131  GOTO 8160
8132  PRINT "   SEPT";
8133  GOTO 8160
8134  PRINT "    OCT";
8135  GOTO 8160
8136  PRINT "    NOV";
8137  GOTO 8160
8138  PRINT "    DEC";
8139  GOTO 8160
8140  PRINT "    JAN";
8141  GOTO 8160
8142  PRINT "    FEB";
8143  GOTO 8160
8144  PRINT "    MAR";
8145  GOTO 8160
8146  PRINT "    APR";
8147  GOTO 8160
8148  PRINT "    MAY";
8149  GOTO 8160
8150  PRINT "   JUNE";
8151  GOTO 8160
8152  PRINT "   JULY";
8160  NEXT M
8162  PRINT "  TOTAL"
8170  K=2
8175  GOSUB 9900
8180  P9=14
8185  RETURN 
8500  PRINT TAB(37);
8510  Z$="QTR#       "
8515  X$=" "
8520  FOR I=1 TO 4
8525  Z[1]=I
8530  GOSUB 9000
8535  NEXT I
8540  PRINT "TOTAL"
8545  GOTO 8170
8900  IF SGN(Z[1])#-1 THEN 8930
8905  PRINT "<";
8910  GOSUB 9000
8915  PRINT ">";
8920  RETURN 
8930  PRINT " ";
8940  GOSUB 9000
8945  PRINT " ";
8950  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 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 
