1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM         SALEXP : CTC INVENTORY CONTROL 
4  REM                  FOR FINISHED PRODUCTS
5  REM         36211 REV  B  PART 19 OF 35   2/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
10  H$='29'31'13'26'30
11  DIM A$[20],B$[20],X$[1],T$[54],S$[54]
12  DIM C[4,8],S[16],P[13],Q[25],D[2,2],U[30],K[12]
13  DIM H$[10]
14  MAT S=ZER
100  FILES C1,G10A,G0
150  PRINT "(1) TOP OF FORM OR (2) ABDICK";
160  INPUT P5
170  MAT  READ K
172  DATA 31,28,31,30,31,30,31,31,30,31,30,31
200  READ C9,C8,C7,G8
210  DATA 13,4,8,3
220  MAT  READ P
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
370  GOSUB 3200
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
520  FOR F9=1 TO F8
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[F7]#Q[F9] OR S[3]#6 THEN 1080
1072  GOSUB 3500
1073  IF B1 THEN 1080
1075  GOSUB 2000
1080  NEXT C1
1085  C2=1
1090  NEXT P1
1100  NEXT F9
1170  END 
2000  PRINT TAB(20);
2005  GOSUB 5000
2010  PRINT TAB(30);
2020  Z$="####    "
2030  X$="0"
2040  Z[1]=C1
2042  IF S[1]#5 THEN 2050
2044  Z[1]=Z[1]+900
2050  GOSUB 9000
2055  Z$="######    "
2060  Z[1]=C[R2,7]
2065  GOSUB 9000
2090  Z$="####     ####  ##/##/##  ##M   "
2095  X$=" "
2100  IF S5=1 THEN 2110
2105  Z$[28,28]="A"
2110  Z[1]=S[6]
2115  Z[2]=S[12]
2120  X=S[4]
2125  GOSUB 4800
2130  Z[3]=X2
2135  Z[4]=X3
2140  Z[5]=X1+70
2145  IF X1<8 THEN 2155
2150  Z[5]=X1+60
2155  Z[6]=S[10]
2160  GOSUB 9000
2165  Z$="A####:  "
2170  X$="0"
2175  Z[1]=S[2]
2180  GOSUB 9000
2185  GOSUB 5300
2230  K=1
2235  GOSUB 9910
2240  P9=P9+1
2245  IF P9<57 THEN 2260
2250  GOSUB 8000
2260  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 
3200  PRINT "DAYS TO EXPIRE";
3205  INPUT D5
3207  X2=D2+D5
3208  X1=D1
3210  X3=D3
3212  IF X2 <= K[X1] THEN 3235
3215  X2=X2-K[X1]
3217  X1=X1+1
3220  IF X1 <= 12 THEN 3212
3222  X1=X1-12
3225  X3=X3+1
3230  GOTO 3220
3235  D=X3*10^4+X1*100+X2
3237  F7=5
3240  F8=0
3245  PRINT "SALES LOC";
3250  INPUT Z
3255  IF Z=-1 THEN 3290
3265  F8=F8+1
3270  IF F8<26 THEN 3280
3275  PRINT "LIMIT 25"
3277  STOP 
3280  Q[F8]=Z
3285  GOTO 3245
3290  PRINT "LSE STAT (10=1&2;11=ALL)";
3295  INPUT S0
3297  RETURN 
3500  B1=0
3505  IF S0=11 THEN 3575
3510  IF S0#10 THEN 3525
3515  IF S[8]=1 OR S[8]=2 THEN 3575
3520  GOTO 3660
3525  IF S[8]#S0 THEN 3660
3575  X=S[4]
3580  GOSUB 4800
3585  IF X1<8 THEN 3600
3590  X1=X1+60
3595  GOTO 3605
3600  X1=X1+70
3605  X2=X2+S[10]
3610  IF X2 <= 12 THEN 3630
3615  X2=X2-12
3620  X1=X1+1
3625  GOTO 3610
3630  X3=X3-1
3631  IF X3>0 THEN 3640
3632  X2=X2-1
3633  IF X2>0 THEN 3636
3634  X2=12
3635  X1=X1-1
3636  X3=K[X2]
3640  D0=X1*10^4+X2*100+X3
3645  IF D0>D THEN 3660
3650  RETURN 
3660  B1=1
3670  RETURN 
4000  REM
4036  X=R/C8
4038  X0=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])
4114  S[I]=INT(C[R2,J]/10^4)
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
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
5097  RETURN 
5300  B1=0
5305  X=S[2]
5310  RESTORE 265
5315  FOR M=1 TO G8
5320  READ A$
5325  IF X<401 THEN 5350
5330  X=X-400
5335  NEXT M
5340  T$="   "
5345  GOTO 5395
5350  M0=INT(X/2)
5355  M1=2
5360  IF M0*2=X THEN 5375
5365  M0=M0+1
5370  M1=1
5375  ASSIGN A$,2,W5
5380  READ #2,M0;S$,D[1,1],D[1,2],T$,D[2,1],D[2,2]
5385  IF M1=2 THEN 5395
5390  T$=S$
5395  I1=1
5400  GOSUB 4700
5405  GOTO F2 OF 5410,5445,5470
5410  IF I1=1 THEN 5420
5415  PRINT TAB(71)"";TAB(16);
5420  PRINT Z$;
5425  GOSUB 6000
5430  P9=P9+1
5435  I1=I+1
5440  GOTO 5400
5445  PRINT TAB(71)"";TAB(16);Z$;
5450  IF D[M1,1]=0 THEN 5425
5455  GOSUB 4900
5460  PRINT ", ";Z$;"   ";D[M1,1];
5465  GOTO 5425
5470  IF Z$="" THEN 5490
5475  PRINT TAB(71)"";TAB(16)"ATTN: ";Z$;
5480  GOSUB 6000
5485  P9=P9+1
5490  RETURN 
6000  PRINT 
6010  RETURN 
8000  GOTO P5 OF 8005,8015
8005  PRINT '12'18'18'18'18'18'18'18'18'18'18'18'18'18;
8010  GOTO 8025
8015  K=66-P9
8020  GOSUB 9910
8025  K=4
8030  GOSUB 9910
8040  PRINT "DATE: ";
8050  Z$="##/##/##"
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 NT O R Y  C O N T R O L";
8112  K=15
8114  GOSUB 9950
8116  PRINT "SALES LOC: ";
8120  Z$="##  "
8122  Z[1]=Q[F9]
8124  GOSUB 9000
8140  PRINT "PAGE: ";
8150  Z$="###"
8160  P4=P4+1
8165  Z[1]=P4
8170  GOSUB 9000
8172  GOSUB 6000
8175  PRINT TAB(37)"LEASES BY SALES LOC EXPIRINT IN ";
8176  Z$=" ## DAYS (LSE STAT = ##)"
8177  Z[1]=D5
8178  Z[2]=S0
8179  GOSUB 9000
8180  K=2
8190  GOSUB 9900
8195  PRINT TAB(20);
8200  PRINT TAB(20)"PRODUC   SER# AGREEMENT    CUST#   SALES    DATE";
8205  PRINT "   TERMS  CUSTOMER NO/NAME";
8210  GOSUB 6000
8215  PRINT TAB(40)"#     UNIT LOC   MAN";
8330  K=2
8335  GOSUB 9900
8340  P9=12
8350  RETURN 
9000  REM
9040  V=Z2=Z3=Z4=Z5=Z7=Z8=Z9=1
9050  DIM V$[40],Y$[10],Z$[72]
9060  Y$="0123456789"
9070  Z0=Z9-1
9080  Z0=Z0+1
9090  IF Z0=LEN(Z$)+1 THEN 9650
9100  IF Z$[Z0,Z0]="#" THEN 9170
9110  IF Z$[Z0,Z0+1]=".#" THEN 9170
9120  IF Z$[Z0,Z0+1]="+#" THEN 9150
9130  V$[V,V]=Z$[Z0,Z0]
9131  V=V+1
9140  GOTO 9080
9150  Z4=0
9160  GOTO 9080
9170  Z=100
9180  Z6=Z[Z2]
9190  Z9=Z0-1
9200  Z9=Z9+1
9210  IF Z$[Z9,Z9]="." THEN 9240
9220  IF Z$[Z9,Z9]="#" THEN 9200
9230  GOTO 9280
9240  IF Z5#1 THEN 9280
9250  Z5=0
9260  Z=Z9
9270  GOTO 9200
9280  IF Z#100 THEN 9300
9290  Z=Z9
9300  IF Z4=1 THEN 9350
9310  IF Z6 >= 0 THEN 9340
9320  V$[V,V]="-"
9321  V=V+1
9330  GOTO 9350
9340  V$[V,V]=" "
9341  V=V+1
9350  IF Z=Z9 THEN 9380
9360  Z6=ABS(Z6)+5*10^(Z-Z9)
9370  GOTO 9390
9380  Z6=ABS(Z6)+.5
9390  Z7=10^(Z-Z0-1)
9400  Z4=10*Z7
9410  FOR Z1=Z-Z0 TO Z+1-Z9 STEP -1
9420  IF Z1#0 THEN 9460
9430  V$[V,V]="."
9431  V=V+1
9440  Z3=0
9450  GOTO 9610
9460  Z8=INT(Z6/Z7)
9470  IF Z6<Z4 THEN 9500
9480  V$[V,V]="#"
9481  V=V+1
9490  GOTO 9600
9500  Z6=Z6-Z8*Z7
9510  IF Z8=0 THEN 9530
9520  Z3=0
9530  IF Z3=0 THEN 9590
9540  IF Z1#1 THEN 9570
9550  V$[V,V]="0"
9551  V=V+1
9560  GOTO 9600
9570  V$[V,V]=X$
9571  V=V+1
9580  GOTO 9600
9590  V$[V,V]=Y$[Z8+1,Z8+1]
9591  V=V+1
9600  Z7=Z7/10
9610  NEXT Z1
9620  Z3=Z4=Z5=Z7=1
9630  Z2=Z2+1
9640  GOTO 9070
9650  PRINT V$;
9660  V$=""
9670  RETURN 
9900  GOSUB 6000
9910  FOR I=1 TO K
9915  PRINT 
9930  NEXT I
9940  RETURN 
9950  FOR I=1 TO K
9960  PRINT " ";
9970  NEXT I
9980  RETURN 
9999  END 
