1  REM ***   HP BASIC PROGRAM LIBRARY *********************************
2  REM
3  REM       MANAGC:    2000C MANAGEMENT SIMULATION GAME   
4  REM
5  REM       36209  REV B  --  10/73    PART 2 OF 2
6  REM
7  REM ****  CONTRIBUTED PROGRAM **************************************
10  DIM O[4,5],S[4,5],M[4,5],R[3,5],P[3,4],D[3,4],T[3,5],W[4,4],Z[3]
20  DIM Q[3,6],U[3,5],I[3,5],E[13,4],G[3,2],C[3,4],A[3,3],V[3,2]
30  DIM F[3,4],L[3],A$[3],B$[6]
40  FILES *
50  DATA "GAME1","GAME2","GAME3","GAME4","GAME5","GAME6","GAME7","GAME8"
60  DATA "GAME9","GAME10"
70  PRINT "GAME NUMBER";
80  INPUT X
90  IF X>0 AND X <= 10 THEN 120
100  PRINT "GAME NUMBER MUST BE 1 THROUGH 10"
110  GOTO 70
120  RESTORE 50
130  FOR I1=1 TO X
140  READ B$
150  NEXT I1
160  ASSIGN B$,1,Y
170  IF Y=0 THEN 200
180  PRINT "GAME"X"FILE NOT OPENED AND READY FOR USE.  RUN $SETUP."
190  STOP 
200  LET A4=1
210  MAT O=ZER
220  MAT S=ZER
230  MAT M=ZER
240  MAT R=ZER
250  MAT P=ZER
260  MAT D=ZER
270  MAT T=ZER
280  MAT W=ZER
290  MAT Q=ZER
300  MAT U=ZER
310  MAT I=ZER
320  MAT E=ZER
330  MAT G=ZER
340  MAT C=ZER
350  MAT A=ZER
360  MAT V=ZER
370  MAT F=ZER
380  MAT L=ZER
390  REM***INITIAL VALUES AND CONSTANTS***
400  M=3
410  N=4
420  K1=111.11
430  K2=222.22
440  K3=333.33
450  K9=999.99
460  B1=3
470  B2=1000
480  B3=C1=D3=E[12,1]=E[12,2]=E[12,3]=1
490  I9=99
500  B4=5000
510  D4=99999.
520  D5=.02
530  D6=P1=P2=.5
540  G=.6
550  T1=T2=T3=T4=1.01
560  X1=40
570  X2=4
580  X3=5
590  Y1=0
600  Y2=.8
610  Y3=3
620  Z1=17.22
630  Z2=5.5
640  E[13,4]=119.041
650  E[12,4]=2.15
660  E[13,1]=E[13,2]=E[13,3]=54.907
670  REM***READ SAVED VALUES FROM FILE***
680  READ #A4;L
690  FOR I=1 TO M
700  READ #A4;C[I,2],R[I,5],V[I,1],L[I],Q[I,5],U[I,5],E[I,4],E[I+3,4]
710  FOR J=1 TO N-1
720  READ #A4;E[I,J],E[I+3,J]
730  NEXT J
740  NEXT I
750  FOR I=1 TO M
760  Z[I]=Q[I,5]
770  NEXT I
780  L=L+1
790  FOR I=1 TO M
800  IF I>1 THEN 820
810  PRINT "FOR FIRM"I"ENTER AREA SELLING PRICES.";
820  INPUT P[I,1],P[I,2],P[I,3],P[I,4]
830  IF (P[I,1]<0 OR P[I,2]<0) OR (P[I,3]<0 OR P[I,4]<0) THEN 950
840  IF I>1 THEN 860
850  PRINT "ENTER AREA ADVERTISING EXPENDITURES.";
860  INPUT M[I,1],M[I,2],M[I,3],M[I,4]
870  IF (M[I,1]<0 OR M[I,2]<0) OR (M[I,3]<0 OR M[I,4]<0) THEN 950
880  IF I>1 THEN 900
890  PRINT "ENTER PRODUCTION, R AND D, AND PLANT IMPROVEMENT.";
900  INPUT A[I,1],A[I,2],A[I,3]
910  IF (A[I,1]<0 OR A[I,2]<0) OR A[I,3]<0 THEN 950
920  IF C[I,2] >= M[I,1]+M[I,2]+M[I,3]+M[I,4]+A[I,1]+A[I,2]+A[I,3] THEN 980
930  PRINT "YOUR EXPENDITURES EXCEED YOUR AVAILABLE CASH."
940  GOTO 960
950  PRINT "NEGATIVE DATA NOT ALLOWED."
960  PRINT "RE-ENTER FIRM"I"DATA"
970  GOTO 800
980  IF I=3 THEN 1000
990  PRINT "ENTER FIRM "I+1"DATA USING THREE LINES AS ABOVE."
1000  NEXT I
1010  PRINT "DO YOU WANT QUARTERLY REPORT PRINTED";
1020  INPUT A$[1,3]
1030  S1=0
1040  FOR I=1 TO M
1050  LET M[I,5]=O[I,5]=S[I,5]=0
1060  REM * * CALCULATE X - EFFECT OF R&D ON TOTAL ORDERS * *
1070  L[I]=G*L[I]+A[I,2]
1080  S1=S1+L[I]
1090  NEXT I
1100  X=B3+S1/B4
1110  REM * * CALCULATE Y - EFFECT OF MARKETING ON TOTAL ORDERS * *
1120  FOR J=1 TO N
1130  E[10,J]=0
1140  FOR I=1 TO M
1150  E[I+6,J]=((E[I,J]+E[I+3,J])*P1+M[I,J])*P2
1160  E[10,J]=E[10,J]+E[I+6,J]
1170  NEXT I
1180  M1=M
1190  E[11,J]=E[10,J]/M1
1200  IF E[10,J]>125 THEN 1230
1210  Y=E[10,J]/125
1220  GOTO 1250
1230  Y=B1-E[12,J]*T3*B2/(X2*E[10,J])
1240  REM * * CALCULATE Z - EFFECT OF PRICE ON TOTAL ORDERS * *
1250  D1=1.E+08
1260  S3=0
1270  FOR I=1 TO M
1280  IF P[I,J]>0 THEN 1310
1290  M1=M1-1
1300  GOTO 1320
1310  IF P[I,J]>D1 THEN 1330
1320  D1=P[I,J]
1330  S3=S3+P[I,J]
1340  NEXT I
1350  IF M1=0 THEN 1370
1360  X[J]=S3/M1
1370  Z=X1*T2/(D1 MAX 1)
1380  REM ***** TOTAL ORDERS IN EACH AREA *****
1390  O[4,J]=E[13,J]*X*Y*Z*T1
1400  NEXT J
1410  REM * * CALCULATE ORDERS FOR EACH FIRM IN EACH AREA * *
1420  FOR J=1 TO N
1430  W[4,J]=0
1440  FOR I=1 TO M
1450  W[I,J]=0
1460  IF E[11,J]=0 THEN 1590
1470  IF P[I,J]=0 THEN 1590
1480  P=X[J]/P[I,J]-Y2
1490  IF P >= .01 THEN 1520
1500  P=.01
1510  REM * * OVERALL ORDER PRODUCING EFFECT OF THE COMPANY'S ACTIVITIES 
1520  IF R[I,5]>0 THEN 1550
1530  REM LAST QUARTER REVENUE ZERO ON FIRM I 
1540  GOTO 1570
1550  H9=C1+Y3*L[I]/R[I,5]
1560  GOTO 1580
1570  H9=1.25
1580  W[I,J]=(E[I+6,J]/E[11,J]-Y1)*P*H9
1590  W[4,J]=W[4,J]+W[I,J]
1600  NEXT I
1610  REM * * ORDERS RECEIVED IN EACH AREA * *
1620  FOR I=1 TO M
1630  O[I,J]=0
1640  IF W[I,J] <= 0 THEN 1660
1650  O[I,J]=INT(W[I,J]/W[4,J]*O[4,J])
1660  NEXT I
1670  NEXT J
1680  REM * * UNIT COSTS OF TRANSPORTATION * *
1690  LET T[1,1]=T[2,2]=T[3,3]=0
1700  LET T[1,2]=T[1,3]=T[2,1]=T[2,3]=T[3,1]=T[3,2]=2
1710  LET T[1,4]=T[2,4]=T[3,4]=1
1720  X4=2*Z1
1730  X5=2*Z1
1740  REM ***** CALCULATE PRODUCTION COSTS AND QUANTITIES BY AREA *****
1750  FOR I=1 TO M
1760  REM * * PLANT CAPACITY IN UNITS * *
1770  Q[I,4]=INT(V[I,1]/20)
1780  S2=D3-Z2*L[I]/D4
1790  IF S2>.93 THEN 1820
1800  S2=.93
1810  REM * * TOTAL COST OF CURRENT PRODUCTION * *
1820  I[I,2]=A[I,1]
1830  REM * * TOTAL COST AT CAPACITY * *
1840  I[I,4]=T4*(S2*(Q[I,4]*X4+X5))
1850  REM * * CURRENT PRODUCTION IN UNITS * *
1860  Q[I,2]=INT((A[I,1]/T4-S2*X5-Q[I,4]*X3)/(S2*X4-X3))
1870  IF Q[I,2]>0 THEN 1890
1880  Q[I,2]=0
1890  IF Q[I,2] <= Q[I,4] THEN 1920
1900  Q[I,2]=Q[I,4]
1910  I[I,2]=I[I,4]
1920  Q[I,3]=1.1*Q[I,2]
1930  Q[I,1]=.9*Q[I,2]
1940  I[I,3]=T4*(S2*(Q[I,3]*X4+X5)+(Q[I,4]-Q[I,3])*X3)
1950  I[I,1]=T4*(S2*(Q[I,1]*X4+X5)+(Q[I,4]-Q[I,1])*X3)
1960  REM * * UNIT COSTS OF PRODUCTION * *
1970  FOR J=1 TO 4
1980  IF Q[I,J] <> 0 THEN 2010
1990  U[I,J]=0
2000  GOTO 2020
2010  U[I,J]=I[I,J]/Q[I,J]
2020  NEXT J
2030  NEXT I
2040  REM ***** CALCULATE TOTAL MARKETING, REVENUE AND COSTS BY FIRM ****
2050  FOR I=1 TO M
2060  R[I,5]=0
2070  T[I,5]=0
2080  REM * * MARKETING AND ORDERS IN UNITS BY FIRM * *
2090  FOR J=1 TO N
2100  M[I,5]=M[I,5]+M[I,J]
2110  O[I,5]=O[I,5]+INT(O[I,J]+.5)
2120  NEXT J
2130  REM * * GOODS AVAILABLE FOR SALE * *
2140  G[I,2]=Q[I,2]+Q[I,5]
2150  P=0
2160  IF O[I,5]=0 THEN 2180
2170  P=G[I,2]/O[I,5]
2180  IF P >= 0 THEN 2200
2190  P=P*(-1)
2200  IF P <= 1 THEN 2220
2210  P=1
2220  REM * * UNIT SALES AND REVENUE BY AREA AND FIRMS TOTALS * * 
2230  FOR J=1 TO N
2240  S[I,J]=INT(O[I,J]*P)
2250  S[I,5]=S[I,5]+S[I,J]
2260  R[I,J]=INT(S[I,J]+.5)*P[I,J]
2270  R[I,5]=R[I,5]+R[I,J]
2280  NEXT J
2290  IF P=0 THEN 2460
2300  IF P<1 THEN 2330
2310  X=INT(O[I,5]-S[I,5])
2320  GOTO 2340
2330  X=INT(G[I,2]-S[I,5])
2340  IF X=0 THEN 2460
2350  FOR J=1 TO X
2360  K=5
2370  IF S[I,K-J]#O[I,K-J] THEN 2400
2380  K=K-1
2390  GOTO 2370
2400  S[I,K-J]=S[I,K-J]+1
2410  S[I,5]=S[I,5]+1
2420  R[I,K-J]=R[I,K-J]+P[I,K-J]
2430  R[I,5]=R[I,5]+P[I,K-J]
2440  NEXT J
2450  REM * * DETERMINE COST OF GOODS SOLD * *
2460  I[I,5]=Q[I,5]*U[I,5]
2470  IF S[I,5]>Q[I,5] THEN 2500
2480  G[I,1]=S[I,5]*U[I,5]
2490  GOTO 2550
2500  IF S[I,5] >= G[I,2] THEN 2530
2510  G[I,1]=I[I,5]+(S[I,5]-Q[I,5])*U[I,2]
2520  GOTO 2550
2530  G[I,1]=I[I,5]+I[I,2]
2540  REM * * UNIT DELIVERED COST AND TOTAL TRANSPORTATION COST * *
2550  IF S[I,5]=0 THEN 2640
2560  P=G[I,1]/S[I,5]
2570  FOR J=1 TO N
2580  D[I,J]=P+T[I,J]
2590  T[I,5]=T[I,5]+T[I,J]*INT(S[I,J]+.5)
2600  NEXT J
2610  NEXT I
2620  GOTO 2680
2630  REM ** NONE SHIPPED THUS DELIVERED COST AND TRANS. 0 **
2640  FOR J=1 TO N
2650  D[I,J]=T[I,5]=0
2660  NEXT J
2670  GOTO 2610
2680  REM ***** DEVELOP FINANCIAL STATEMENT FIGURES *****
2690  FOR I=1 TO M
2700  REM * * DEPRECIATION = 2% OF PLANT VALUE
2710  V[I,2]=D5*V[I,1]
2720  REM * * EXPENSES = COST OF GOODS + TRANSP + RES + DEPR * *
2730  F[I,4]=G[I,1]+T[I,5]+M[I,5]+A[I,2]+V[I,2]
2740  REM * * GROSS PROFIT = REVENUE - EXPENSES * *
2750  F[I,1]=R[I,5]-F[I,4]
2760  REM * * INCOME TAX = 50% PROFIT * *
2770  F[I,2]=D6*F[I,1]
2780  IF F[I,1]>0 THEN 2810
2790  F[I,2]=0
2800  REM * * NET = GROSS - TAX
2810  F[I,3]=F[I,1]-F[I,2]
2820  REM * : DISBURSEMENTS = PROD + TRANSP + MRKTG + RES + PLT IMP + TAX
2830  C[I,1]=I[I,2]+T[I,5]+M[I,5]+A[I,2]+A[I,3]+F[I,2]
2840  REM * * NEW CASH BAL = OLD CASH BAL + REVENUE - DISBR
2850  C[I,2]=C[I,2]+R[I,5]-C[I,1]
2860  REM * * CASH FLOW = REVENUE - DISBR * *
2870  C[I,3]=R[I,5]-C[I,1]
2880  REM * * COMPUTE NEW VALUE OF INVENTORY * *
2890  Q[I,5]=INT(G[I,2]-S[I,5]+.5)
2900  IF O[I,5]>Z[I] THEN 2930
2910  I[I,5]=(Z[I]-O[I,5])*U[I,5]+I[I,2]
2920  GOTO 2980
2930  IF Q[I,5]=0 THEN 2960
2940  I[I,5]=Q[I,5]*U[I,2]
2950  GOTO 2980
2960  I[I,5]=0
2970  REM * * NEW PLANT VALUE * *
2980  V[I,1]=V[I,1]-V[I,2]+A[I,3]
2990  REM * * ASSETS = CASH + INVENTORY + PLANT VALUE * * 
3000  C[I,4]=C[I,2]+I[I,5]+V[I,1]
3010  REM * * UNIT COST OF INVENTORY ON HAND * * 
3020  U[I,5]=0
3030  IF Q[I,5]=0 THEN 3050
3040  U[I,5]=I[I,5]/Q[I,5]
3050  NEXT I
3060  REM ***** DEVELOP TOTAL SALES, MARKETING, ORDERS * * 
3070  LET T=S=O=0
3080  FOR J=1 TO N
3090  LET S[4,J]=M[4,J]=0
3100  FOR I=1 TO M
3110  S[4,J]=S[4,J]+S[I,J]
3120  M[4,J]=M[4,J]+M[I,J]
3130  NEXT I
3140  T=T+M[4,J]
3150  S=S+S[4,J]
3160  O=O+O[4,J]
3170  NEXT J
3180  T8=.5
3190  FOR I=1 TO 3
3200  D[I,1]=INT(D[I,1]*100+T8)/100
3210  D[I,2]=INT(D[I,2]*100+T8)/100
3220  D[I,3]=INT(D[I,3]*100+T8)/100
3230  D[I,4]=INT(D[I,4]*100+T8)/100
3240  NEXT I
3250  IF A$[1,2]="NO" THEN 3910
3260  FOR I=1 TO 3
3270  PRINT 
3280  PRINT 
3290  PRINT "FIRM"I"   PERIOD"L
3300  PRINT 
3310  PRINT 
3320  PRINT "SALES ANALYSIS"
3330  PRINT 
3340  PRINT "AREA"TAB(25)"1"TAB(35)"2"TAB(45)"3"TAB(55)"4";
3350  PRINT TAB(62)"TOTAL"
3360  PRINT 
3370  PRINT "ORDERS"TAB(23),O[I,1];TAB(33),O[I,2];TAB(43),O[I,3];
3380  PRINT TAB(53),O[I,4];TAB(62),O[I,5]
3390  PRINT "SHIPMENTS"TAB(23),S[I,1];TAB(33),S[I,2];TAB(43),S[I,3];
3400  PRINT TAB(53),S[I,4];TAB(62),S[I,5]
3410  PRINT "MARKETING"TAB(23),INT(M[I,1]+.5);TAB(33),INT(M[I,2]+.5);
3420  PRINT TAB(43),INT(M[I,3]+.5);TAB(53),INT(M[I,4]+.5);
3430  PRINT TAB(62),INT(M[I,5]+.5)
3440  PRINT "REVENUE"TAB(23),INT(R[I,1]+.5);TAB(33),INT(R[I,2]+.5);
3450  PRINT TAB(43),INT(R[I,3]+.5);TAB(53),INT(R[I,4]+.5);
3460  PRINT TAB(62),INT(R[I,5]+.5)
3470  IMAGE "DLVRD UNIT COST($)     ",4(DDD.DD)
3480  PRINT  USING 3470;D[I,1],TAB(33),D[I,2],TAB(43),D[I,3],TAB(53),D[I,4]
3490  PRINT 
3500  PRINT 
3510  PRINT "PROFIT AND LOSS"TAB(39)"CASH FLOW"TAB(50)"FINANCIAL ANALYSIS"
3520  PRINT 
3530  PRINT "CURRENT INCOME"TAB(22),INT(R[I,5]+.5);
3540  PRINT TAB(39),"RECEIPTS"TAB(58),INT(R[I,5]+.5)
3550  PRINT "COST OF GDS SLD"TAB(22),INT(G[I,1]+.5);
3560  PRINT TAB(39)"DISBURSEMENTS"TAB(58),INT(C[I,1]+.5)
3570  PRINT "TRANSPORTATION"TAB(22),INT(T[I,5]+.5);
3580  PRINT TAB(39)"NET FLOW"TAB(58),INT(C[I,3]+.5)
3590  PRINT "MARKETING"TAB(22),INT(M[I,5]+.5);
3600  PRINT TAB(39)"NEW BALANCE"TAB(58),INT(C[I,2]+.5)
3610  PRINT "RESEARCH"TAB(22),INT(A[I,2]+.5)
3620  PRINT "DEPRECIATION"TAB(22),INT(V[I,2]+.5);
3630  PRINT TAB(39)"CASH"TAB(58),INT(C[I,2]+.5)
3640  PRINT "NET PROFIT"TAB(22),INT(F[I,1]+.5);
3650  PRINT TAB(39)"INVENTORY VALUE"TAB(58),INT(I[I,5]+.5)
3660  PRINT "TAXES"TAB(22),INT(F[I,2]+.5);
3670  PRINT TAB(39)"PLANT VALUE"TAB(58),INT(V[I,1]+.5)
3680  PRINT "PROFIT AFTER TAXES"TAB(22),INT(F[I,3]+.5);
3690  PRINT TAB(39)"TOTAL ASSETS"TAB(58),INT(C[I,4]+.5)
3700  PRINT 
3710  PRINT 
3720  PRINT "DISBURSEMENT ALLOCATION($VALUE)";
3730  PRINT TAB(39)"INVENTORY ALLOCATION(NO. ITEMS)"
3740  PRINT 
3750  PRINT "TRANSPORTATION"TAB(22),INT(T[I,5]+.5);
3760  PRINT TAB(39)"BEGINNING"TAB(58),Z[I]
3770  PRINT "MARKETING"TAB(22),INT(M[I,5]+.5);
3780  PRINT TAB(39)"PRODUCED"TAB(58),Q[I,2]
3790  PRINT "RESEARCH"TAB(22),INT(A[I,2]+.5);
3800  PRINT TAB(39)"SHIPPED"TAB(58),INT(S[I,5]+.5)
3810  PRINT "PLANT IMPROVEMENT"TAB(22),INT(A[I,3]+.5);
3820  PRINT TAB(39)"BALANCE"TAB(58),Q[I,5]
3830  PRINT "PRODUCTION COST"TAB(22),INT(I[I,2]+.5)
3840  PRINT "TAXES"TAB(22),INT(F[I,2]+.5);
3850  PRINT TAB(42)"UNIT COST($)"TAB(58),INT(U[I,5]*100+.5)/100
3860  PRINT "TOTAL"TAB(22),INT(C[I,1]+.5)
3870  IF INT(C[I,2])>0 THEN 3890
3880  PRINT "BE CAREFUL,NEXT QUARTER YOU HAVE NO CASH TO WORK WITH-ONLY INVENTORY."
3890  PRINT 
3900  NEXT I
3910  READ #1,1
3920  C9=0
3930  PRINT #1,1;C9
3940  FOR I=1 TO M
3950  FOR J=1 TO N
3960  E[I+3,J]=E[I,J]
3970  E[I,J]=M[I,J]
3980  NEXT J
3990  NEXT I
4000  READ #1,1
4010  PRINT #1;L
4020  FOR I=1 TO M
4030  PRINT #1;C[I,2],R[I,5],V[I,1],L[I],Q[I,5],U[I,5],E[I,4],E[I+3,4]
4040  FOR J=1 TO N-1
4050  PRINT #1;E[I,J],E[I+3,J]
4060  NEXT J
4070  NEXT I
4080  END 
