1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM         AALSES : CTC INVENTORY CONTROL 
4  REM                  FOR FINISHED PRODUCTS
5  REM         36211 REV  B  PART 26 OF 35   2/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
10  H$='29'31'13'26'30
11  DIM A$[20],H$[5],X$[1],Y$[10],T$[54],S$[54]
12  DIM C[4,8],S[16],P[13],U[30],D[2,2],T[2,9],M[12]
13  Y$="0123456789"
14  L5=0
15  DIM Z$[54]
16  MAT S=ZER
17  MAT T=ZER
100  FILES C1,G10A,G0
150  PRINT "(1) TOP OF FORM OR (2) ABDICK";
160  INPUT P5
200  READ C9,C8,C7,G8
210  DATA 13,4,8,3
212  MAT  READ M
215  DATA 31,28,31,30,31,30,31,31,30,31,30,31
220  MAT  READ P
228  L5=L5+1
230  DATA 1000,3800,4300,4900,6500,7500,7560,7760,8760,9760,9870,10350,10400
240  MAT  READ U
245  DATA 2100,3101,3300,3200,3400,4100,4200,0,1102,1104,1106,1108,1114,1118,1122
247  DATA 1126,1400,1401,1402,1403,1404,1405,1420,1300,1301,1302,1303,1200,1201,3120
250  P4=0
260  DATA "C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","C11","C12","C13"
265  DATA "G10A","G10B","G10C"
300  PRINT H$[1,2]"CURRENT DATE";
310  INPUT X
315  GOSUB 4800
355  D1=X1
360  D2=X2
365  D3=X3
400  PRINT "FIRST PRD#";
405  INPUT C
410  GOSUB 3000
415  IF B1 THEN 400
420  P2=P
425  PRINT "LAST PRD#";
430  INPUT C
435  GOSUB 3000
440  IF B1 THEN 425
442  IF P >= P2 THEN 448
445  GOSUB 3010
447  GOTO 425
448  P3=P
450  PRINT "FIRST SER#";
455  INPUT X2
460  X1=P2
465  GOSUB 3100
466  C2=X2
470  IF B1 THEN 450
475  PRINT "LAST SER#";
480  INPUT X2
485  X1=P3
490  GOSUB 3100
492  C4=X2
495  IF B1 THEN 475
496  IF P2#P3 THEN 500
497  IF C4 >= C2 THEN 500
498  GOSUB 3120
499  GOTO 475
500  REM
510  P9=66
530  GOSUB 8000
1000  FOR P1=P2 TO P3
1005  C3=C4
1007  IF P1=P3 THEN 1040
1010  C3=P[P1]
1020  IF P1=1 THEN 1040
1030  C3=C3-P[P1-1]
1040  FOR C1=C2 TO C3
1045  R=C1
1050  IF P1=1 THEN 1060
1055  R=R+P[P1-1]
1060  GOSUB 4000
1065  GOSUB 4100
1070  IF  NOT B1 OR S[3]#6 OR S5#-1 OR S[8]>2 THEN 1080
1075  GOSUB 2000
1080  NEXT C1
1085  C2=1
1086  PRINT "PRODT";
1087  I=1
1088  GOSUB 1300
1090  NEXT P1
1095  PRINT "GRAND";
1100  I=2
1105  GOSUB 1300
1170  END 
1300  PRINT " TOT: MAINT=$";T[I,1];"CTC LSE=$";T[I,2];"TA LSE=";T[I,3];
1301  PRINT TAB(70)"";TAB(32);
1302  IF I=2 THEN 1307
1303  FOR J=1 TO 3
1304  T[I+1,J]=T[I+1,J]+T[I,J]
1305  T[I,J]=0
1306  NEXT J
1307  FOR J=4 TO 8 STEP 2
1310  X1=T[I,J]
1315  X2=T[I,J+1]
1320  GOSUB 2510
1322  T[I,J]=T[I,J+1]=0
1325  NEXT J
1327  GOSUB 6000
1330  K=2
1335  GOSUB 9900
1340  P9=P9+3
1350  GOTO 2355
2000  GOSUB 5000
2005  Z$=" #### A####:"
2010  X$="0"
2015  Z[1]=C1
2020  IF S[1]#5 THEN 2030
2025  Z[1]=Z[1]+900
2030  Z[2]=S[2]
2035  GOSUB 9000
2040  GOSUB 5100
2045  I1=1
2050  GOSUB 5200
2055  PRINT TAB(45);
2060  Z$="####  CTC  "
2062  X$=" "
2065  Z[1]=S[6]
2070  IF S[8]>0 THEN 2077
2075  Z$[7,9]=" TA"
2077  GOSUB 9000
2078  Z$="####-## "
2079  X$="0"
2080  Z[1]=INT(C[R2,7]/100)
2085  Z[2]=C[R2,7]-Z[1]*100
2087  GOSUB 9000
2088  Z$="$#### $#### "
2089  X$=" "
2090  Z[1]=S6
2095  Z[2]=S[15]
2100  GOSUB 9000
2105  PRINT "      ";
2125  T[1,1]=T[1,1]+S6
2130  I=2
2131  IF S[8]>0 THEN 2133
2132  I=3
2133  T[1,I]=T[1,I]+S[15]
2135  Z$="##A ##/##/## "
2140  X$=" "
2145  Z[1]=S[10]
2150  X=S[4]
2155  GOSUB 4800
2160  IF X1<8 THEN 2167
2162  X1=X1+60
2165  GOTO 2170
2167  X1=X1+70
2170  X3=X3-1
2171  IF X3>0 THEN 2180
2172  X2=X2-1
2173  IF X2>0 THEN 2176
2174  X1=X1-1
2175  X2=X2+12
2176  X3=M[X2]
2180  IF S[10] >= 12 THEN 2187
2182  X2=X2+S[10]
2183  IF X2<13 THEN 2188
2184  X2=X2-12
2185  X1=X1+1
2186  GOTO 2188
2187  X1=X1+1
2188  IF X1*10^4+X2*100+X3 <= D3*10^4+D1*100+D2 THEN 2187
2190  Z[2]=X2
2195  Z[3]=X3
2200  Z[4]=X1
2205  GOSUB 9000
2235  Z[1]=X1*12+X2-(D3*12+D1)-1
2240  Z[2]=M[D1]-D2+X3
2245  IF Z[2]<31 THEN 2270
2250  Z[1]=Z[1]+1
2255  Z[2]=Z[2]-31
2270  X=(Z[1]+Z[2]/30)*100
2275  L5=INT(X)
2280  IF X-L5<.5 THEN 2290
2290  REM
2295  Z$="##   ##"
2310  X$=" "
2312  GOSUB 9000
2315  X=L5*S6
2317  I=0
2318  J=4
2320  GOSUB 2500
2322  X=L5*S[15]
2323  J=6
2325  IF S[8]>0 THEN 2337
2330  PRINT "         ";
2335  J=8
2337  GOSUB 2500
2340  GOSUB 6000
2345  GOSUB 5200
2347  IF  NOT B1 THEN 2340
2350  P9=P9+1
2355  IF P9<57 THEN 2370
2360  GOSUB 8000
2370  RETURN 
2500  X1=INT(X/100)
2505  X2=X-X1*100
2510  Z$=" $#####."
2515  X$=" "
2520  Z[1]=X1
2525  GOSUB 9000
2530  Z$="##"
2535  X$="0"
2540  Z[1]=X2
2545  GOSUB 9000
2550  IF I=2 THEN 2580
2555  T[I+1,J]=T[I+1,J]+X1
2560  T[I+1,J+1]=T[I+1,J+1]+X2
2565  IF T[I+1,J+1]<100 THEN 2580
2570  T[I+1,J]=T[I+1,J]+1
2575  T[I+1,J+1]=T[I+1,J+1]-100
2580  RETURN 
3000  B1=0
3005  IF C>0 AND C<31 THEN 3020
3010  PRINT '7"BAD PRD#";H$[3,5];
3015  B1=1
3017  RETURN 
3020  P=C
3025  IF C<9 THEN 3090
3030  P=9
3035  IF C <= 16 THEN 3090
3040  P=10
3045  IF C <= 23 THEN 3090
3050  P=11
3055  IF C <= 27 THEN 3090
3060  P=12
3065  IF C <= 29 THEN 3090
3070  P=13
3090  RETURN 
3100  B1=0
3101  IF X1#5 THEN 3103
3102  X2=X2-900
3103  X=P[X1]
3104  IF X1=1 THEN 3110
3106  X=X-P[X1-1]
3110  IF X2>0 AND X2 <= X THEN 3150
3120  PRINT '7"BAD SER#";H$[3,5];
3130  B1=1
3150  RETURN 
4000  REM
4036  X=R/C8
4038  X1=INT(X)
4040  X2=INT((X-X1)*100)
4042  FOR I=1 TO (C8-1)
4044  IF X2=I*25 THEN 4054
4046  NEXT I
4048  R1=X1
4050  R2=C8
4052  GOTO 4057
4054  R1=X1+1
4056  R2=I
4057  RESTORE 260
4058  FOR N=1 TO C9
4060  READ A$
4062  IF R1<201 THEN 4070
4063  R1=R1-200
4065  NEXT N
4067  PRINT "ERR IN P";
4068  STOP 
4070  ASSIGN A$,1,W5
4080  RETURN 
4100  B1=0
4102  MAT  READ #1,R1;C
4105  IF C[R2,1]=-1 THEN 4195
4107  B1=1
4110  J=1
4111  FOR I=1 TO 9 STEP 4
4112  S5=SGN(C[R2,J])
4113  C[R2,J]=ABS(C[R2,J])
4115  S[I+1]=C[R2,J]-S[I]*10^4
4116  IF I#9 THEN 4119
4117  S[I+1]=INT(S[I+1]/100)
4118  S[I+2]=C[R2,J]-S[I]*10^4-S[I+1]*100
4119  J=J+2
4120  NEXT I
4122  S[3]=INT(C[R2,2]/10^5)
4125  S[4]=C[R2,2]-S[3]*10^5
4145  S[7]=INT(C[R2,4]/10)
4150  S[8]=C[R2,4]-S[7]*10
4170  S[12]=INT(C[R2,6]/100)
4175  S[13]=C[R2,6]-S[12]*100
4180  S[14]=INT(C[R2,8]/10^5)
4185  S[15]=INT((C[R2,8]-S[14]*10^5)/10)
4190  S6=S[13]*10+S[14]
4195  RETURN 
4700  J=1
4705  Z$=""
4710  FOR I=I1 TO LEN(T$)
4715  F2=1
4720  IF T$[I,I]='17 THEN 4780
4725  F2=2
4730  IF T$[I,I]='18 THEN 4780
4735  Z$[J,J]=T$[I,I]
4740  J=J+1
4745  IF T$[I,I]="." THEN 4755
4750  IF T$[I,I]#"," THEN 4765
4755  Z$[J,J]=" "
4760  J=J+1
4765  NEXT I
4770  F2=3
4780  RETURN 
4800  X1=INT(X/10^4)
4810  X2=INT((X-X1*10^4)/100)
4820  X3=X-X1*10^4-X2*100
4830  RETURN 
4900  X=INT(D[M1,1]/100)
4902  READ #3,4
4905  FOR J1=1 TO 52
4907  READ #3;X1
4910  IF X<X1 THEN 4925
4920  NEXT J1
4925  READ #3,2
4930  FOR J=1 TO J1
4935  READ #3;Z$
4940  NEXT J
4950  RETURN 
5000  IF S[1]#8 THEN 5050
5040  PRINT "VT06";
5045  RETURN 
5050  Z$="####-###"
5055  X$="0"
5060  X=INT(U[S[1]]/1000)
5065  Z[2]=U[S[1]]-X*1000
5070  GOTO X OF 5075,5080,5085,5090
5075  Z[1]=2200
5077  GOTO 5095
5080  Z[1]=3000
5082  GOTO 5095
5085  Z[1]=3300
5087  GOTO 5095
5090  Z[1]=3360
5095  GOSUB 9000
5100  B1=0
5105  X=S[2]
5110  RESTORE 265
5115  FOR M=1 TO G8
5120  READ A$
5125  IF X<401 THEN 5150
5130  X=X-400
5135  NEXT M
5140  T$=""
5145  GOTO 5195
5150  M0=INT(X/2)
5155  M1=2
5160  IF M0*2=X THEN 5175
5165  M0=M0+1
5170  M1=1
5175  ASSIGN A$,2,W5
5180  READ #2,M0;S$,D[1,1],D[1,2],T$,D[2,1],D[2,2]
5185  IF M1=2 THEN 5195
5190  T$=S$
5195  RETURN 
5200  B1=0
5205  GOSUB 4700
5210  GOTO F2 OF 5212,5240,5265
5212  PRINT TAB(20);Z$;
5225  P9=P9+1
5230  I1=I+1
5235  RETURN 
5240  PRINT TAB(20);Z$;
5245  IF D[M1,1]=0 THEN 5225
5250  GOSUB 4900
5255  PRINT ", ";Z$;"   ";D[M1,1];
5260  GOTO 5225
5265  IF Z$="" THEN 5285
5270  PRINT TAB(20)"ATTN: ";Z$
5280  P9=P9+1
5285  B1=1
5290  RETURN 
6000  PRINT 
6005  FOR H0=1 TO 50
6006  PRINT '18;
6010  NEXT H0
6020  RETURN 
8000  GOTO P5 OF 8005,8020
8005  PRINT "";
8010  GOTO 8030
8020  K=66-P9
8025  GOSUB 9910
8030  K=4
8035  GOSUB 9910
8040  Z$="DATE: ##/##/##"
8060  X$=" "
8070  Z[1]=D1
8080  Z[2]=D2
8090  Z[3]=D3
8100  GOSUB 9000
8110  PRINT TAB(50)"I N V E N T O R Y  C O N T R O L";
8140  PRINT "";TAB(30)"PAGE: ";
8150  Z$="###"
8160  Z[1]=P4=P4+1
8170  GOSUB 9000
8172  PRINT 
8175  PRINT TAB(43)"ANALYSIS OF ANNUAL LEASES - ACCOUNT 2801-2802"
8180  K=2
8190  GOSUB 9900
8195  PRINT "PRODUCT  SER# CUST#/NAME";TAB(45)"CUST OWNER AGREMNT   ";
8197  PRINT "RENTAL     INV# TMS  BILLED  RE-LIFE       BALANCE OF 2801-2802"
8200  PRINT TAB(45)"LOC#  SHIP    #    MAINT LEASE";"";TAB(13);
8202  PRINT "THRU   MO  DAY     MAINT     LEASE  TA LEASE"
8205  K=2
8210  GOSUB 9900
8220  P9=12
8230  RETURN 
9000  REM
9003  LET Z2=Z3=Z4=Z5=Z7=Z8=Z9=1
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  REM
9910  FOR I=1 TO K
9915  PRINT 
9930  NEXT I
9940  RETURN 
9999  END 
