1  REM ****  HP BASIC PROGRAM LIBRARY  ******************************
2  REM
3  REM       MRKSIM: MARKETING SIMULATION
4  REM       BARKSI, PART 2 OF 5 (PERFORMS COMPUTATIONS)
5  REM       36199 REV A
6  REM
7  REM ****  CONTRIBUTED PROGRAM  ***********************************
100  FILES $HISTRY,MPRINT,$PARAM,DECIS,INDY#1,INDY#2,INDY#3,USER
110  DIM B[8],C[17],D[4,7],E[3,9],H[3,4],O[5],P[4,3],Q[6,3]
120  DIM R[3,6],S[5],N[7,3],F[3,3],G[4,4],T[10],U[8],V[8],W[8]
130  DIM X[8],Y[8],Z[8],L[4,4]
131  MAT B=ZER[8]
132  MAT H=ZER[3,4]
133  MAT E=ZER[3,9]
134  MAT P=ZER[4,3]
135  MAT N=ZER[7,3]
136  MAT C=ZER[17]
140  GOSUB 1070
160  PRINT #2;M2,M3
170  FOR K=1 TO 3
180  GOSUB 2090
190  FOR I=1 TO 17
200  PRINT #2;C[I]
210  NEXT I
220  FOR I=1 TO 5
230  PRINT #2;O[I],S[I]
240  PRINT #2;R[K,I]
250  NEXT I
260  FOR I=1 TO 4
270  PRINT #2;B[I],B[I+4],H[K,I],E[K,I],E[K,I+4],P[I,K],N[I,K]
280  PRINT #2;L[K,I]
290  NEXT I
300  PRINT #2;D[K,3]
310  FOR M=1 TO 3
320  PRINT #2;Q[5,M]
330  NEXT M
340  NEXT K
350  PRINT #2;Q[1,1],Q[2,1],Q[4,1],Q[6,1],Q[4,2],Q[6,2],Q[4,3],Q[6,3]
370  GOTO 5020
1070  FOR J=1 TO 8
1100  READ #3;T[J],U[J],V[J],W[J],X[J],Y[J],Z[J]
1130  NEXT J
1135  READ #8;N
1137  READ #4,5*N-4
1140  READ #4;M2,M3
1145  READ #M2+4,2*N-1
1150  FOR I=1 TO M3
1160  FOR J=1 TO 4
1180  READ #3;G[1,J]
1190  NEXT J
1200  NEXT I
1210  FOR I=2 TO 3
1220  FOR J=1 TO 4
1230  READ #3;G[I,J]
1240  NEXT J
1250  NEXT I
1270  FOR K=1 TO 3
1280  FOR I=1 TO 4
1290  LET J=I+4
1300  IF M3>1 THEN 1350
1320  READ #1;E[K,I],E[K,J],H[K,I],L[K,I]
1330  GOTO 1360
1350  READ #M2+4;E[K,I],E[K,J],H[K,I],L[K,I]
1360  NEXT I
1370  NEXT K
1390  FOR K=1 TO 3
1400  READ #4;D[K,1],D[K,2],D[K,6],D[K,3],D[K,4],D[K,7],D[K,5]
1410  FOR I=1 TO 5
1420  READ #4;R[K,I]
1430  NEXT I
1440  LET R[K,6]=1
1450  IF D[K,6]>T[1] THEN 1470
1460  LET D[K,6]=T[1]
1470  NEXT K
1490  FOR K=1 TO 3
1510  LET E1=T[4]*(D[K,1]^T[5])/(T[6]+(D[K,1]^T[5]))
1530  LET H[K,3]=T[7]*E1+(1-T[7])*H[K,3]/1000
1550  LET E[K,9]=U[4]*(D[K,2]^U[5])/(U[6]+(D[K,2]^U[5]))
1570  LET A=D[K,3]/E[K,5]
1580  IF A>V[7] THEN 1610
1590  LET A=V[7]
1610  E2=(V[4]*V[5])/(V[5]+(A-V[7])^V[6])
1630  IF V[8] >= A THEN 1660
1640  LET E2=0
1660  IF Z[6] >= D[K,3] THEN 1680
1670  LET E2=0
1680  FOR M=1 TO 3
1710  LET A=E[K,5]
1730  IF Z[M] >= E[K,5] THEN 1760
1740  LET A=Z[M]
1760  IF E[K,5] >= T[M] THEN 1800
1770  LET E3=0
1780  GOTO 1820
1800  LET E3=U[M]*((A-V[M])^W[M])-X[M]*((A-V[M])^Y[M])
1820  LET F[K,M]=H[K,3]*E[K,9]*E2*E3
1840  LET N[6,M]=N[6,M]+F[K,M]
1850  NEXT M
1860  NEXT K
1880  FOR K=1 TO 3
1890  LET H[K,3]=H[K,3]*1000
1900  FOR M=1 TO 3
1920  LET D[4,M]=G[1,M]*((3+N[6,M])/6)
1930  IF N[6,M]>0 THEN 1970
1940  LET P[K,M]=0
1950  GOTO 1990
1970  LET P[K,M]=D[4,M]*F[K,M]/N[6,M]
1990  LET N[4,K]=N[4,K]+P[K,M]
2000  NEXT M
2010  FOR M=1 TO 3
2030  LET N[K,M]=P[K,M]
2040  IF E[K,1] >= N[4,K] THEN 2060
2050  LET N[K,M]=E[K,1]*P[K,M]/N[4,K]
2060  LET N[7,K]=N[7,K]+N[K,M]
2070  LET N[5,M]=N[5,M]+N[K,M]
2080  NEXT M
2084  NEXT K
2086  RETURN 
2090  MAT Q=ZER
2100  FOR I=1 TO 8
2110  LET B[I]=E[K,I]
2120  NEXT I
2150  LET A=Z[7]*H[K,4]
2160  IF A >= Z[8] THEN 2180
2170  LET A=Z[8]
2180  IF A >= D[K,4] THEN 2200
2190  LET D[K,4]=A
2200  LET H[K,4]=D[K,4]
2220  LET C[2]=INT(D[K,4]*D[K,6]+.5)
2230  LET E[K,4]=E[K,4]+D[K,4]
2240  IF E[K,4]>0 THEN 2280
2250  LET E[K,8]=0
2260  GOTO 2290
2280  LET E[K,8]=(B[4]*B[8]+C[2])/E[K,4]
2290  LET O[1]=N[4,K]
2300  LET S[1]=N[7,K]
2310  LET E[K,1]=E[K,1]-S[1]
2330  LET T[9]=G[1,4]/100
2340  LET T[10]=1-T[9]
2350  FOR I=1 TO 2
2360  LET J=I+1
2380  LET O[J]=T[I+8]*(U[7]*O[1]+S[1]-B[1])
2390  LET I1=I+3
2400  IF O[J]>W[I1] THEN 2420
2410  LET O[J]=W[I1]
2420  LET S[J]=O[J]
2440  IF E[K,J] >= O[J] THEN 2460
2450  LET S[J]=E[K,J]
2460  LET E[K,J]=E[K,J]-S[J]
2470  LET E[K,5]=E[K,5]*E[K,1]+S[J]*E[K,J+4]
2480  LET E[K,1]=E[K,1]+S[J]
2490  IF E[K,1]>0 THEN 2520
2500  LET E[K,5]=0
2510  GOTO 2530
2520  LET E[K,5]=E[K,5]/E[K,1]
2530  NEXT I
2550  LET O[4]=D[K,7]
2560  LET O[5]=U[8]*O[3]+S[3]-B[3]
2570  FOR I=2 TO 3
2580  LET J=I+2
2590  LET I1=I+4
2600  IF O[J]>W[I1] THEN 2620
2610  LET O[J]=W[I1]
2620  LET S[J]=O[J]
2630  IF E[K,4] >= O[J] THEN 2650
2640  LET S[J]=E[K,4]
2650  LET E[K,4]=E[K,4]-S[J]
2660  E[K,I1]=E[K,I1]*E[K,I]+S[J]*E[K,8]
2670  LET E[K,I]=E[K,I]+S[J]
2680  IF E[K,I]>0 THEN 2710
2690  LET E[K,I1]=0
2700  GOTO 2720
2710  LET E[K,I1]=E[K,I1]/E[K,I]
2720  NEXT I
2730  FOR I=1 TO 4
2740  LET I1=I+4
2750  IF E[K,I]>0 THEN 2770
2760  LET E[K,I1]=0
2770  NEXT I
2800  LET P[4,1]=X[4]*D[K,3]
2810  LET P[4,2]=X[5]*D[K,3]
2820  C[1]=P[4,1]*S[2]+P[4,2]*S[5]
2830  LET C[1]=INT(C[1]+.5)
2840  LET C[9]=X[6]*E[K,4]*E[K,8]
2850  LET C[9]=INT(C[9]+.5)
2860  LET C[10]=X[7]*E[K,2]*E[K,6]
2870  LET C[10]=INT(C[10]+.5)
2880  LET C[6]=Y[4]*S[2]
2890  LET C[6]=INT(C[6]+.5)
2900  LET C[7]=Y[5]*S[4]
2910  LET C[7]=INT(C[7]+.5)
2920  LET C[8]=Y[6]*S[5]
2930  LET C[8]=INT(C[8]+.5)
2940  LET C[11]=D[K,2]
2950  LET C[3]=E[K,6]*E[K,2]+E[K,8]*E[K,4]
2960  LET C[3]=C[3]-B[2]*B[6]-B[4]*B[8]
2970  LET C[3]=INT(C[3]+.5)
2980  LET C[4]=C[2]-C[3]
2990  LET C[5]=C[1]-C[4]
3000  LET C[13]=0
3010  FOR I=1 TO 5
3020  LET C[13]=C[13]+Y[7]*R[K,I]
3030  NEXT I
3040  IF H[K,2] >= D[K,5] THEN 3060
3050  LET D[K,5]=H[K,2]
3060  LET H[K,2]=H[K,2]-D[K,5]
3070  LET C[12]=D[K,1]
3080  LET C[15]=Z[5]
3090  LET C[16]=0
3100  FOR I=6 TO 15
3110  LET C[16]=C[16]+C[I]
3120  NEXT I
3130  LET C[17]=C[5]-C[16]
3150  H[K,1]=H[K,1]+C[17]-C[3]-D[K,5]
3160  IF H[K,1]>0 THEN 3210
3170  LET H[K,2]=H[K,2]-H[K,1]
3180  LET H[K,1]=0
3190  GOTO 3260
3210  LET C[14]=H[K,2]*Z[4]
3220  LET C[14]=INT(C[14]+.5)
3230  LET A=H[K,1]-C[14]
3240  IF A >= 0 THEN 3300
3260  LET C[14]=(H[K,2]-H[K,1])*(1/(1-Z[4])-1)
3270  LET H[K,2]=H[K,2]+C[14]-H[K,1]
3280  LET H[K,1]=0
3290  GOTO 3310
3300  LET H[K,1]=A
3310  LET C[16]=C[16]+C[14]
3330  LET C[17]=C[17]-C[14]
3340  FOR I=1 TO 3
3350  LET Q[1,1]=Q[1,1]+D[I,1]
3360  LET Q[2,1]=Q[2,1]+D[I,2]
3370  LET Q[3,I]=P[K,I]
3380  LET Q[4,I]=G[3,I]
3390  IF N[5,I]>0 THEN 3420
3400  LET Q[5,I]=0
3410  GOTO 3430
3420  LET Q[5,I]=N[K,I]/N[5,I]
3430  LET Q[6,I]=D[I,3]
3440  NEXT I
3460  LET L[K,1]=L[K,1]+INT(S[1]+.5)
3470  LET L[K,2]=L[K,2]+INT(C[17]+.5)
3480  LET L[K,3]=L[K,3]+INT(S[1]+.5)
3490  LET L[K,4]=L[K,4]+INT(C[17]+.5)
3500  RETURN 
5020  PRINT "COMPUTATIONS COMPLETED  : GET AND RUN BARKPI"
5030  END 
