1  REM ***  HP BASIC PROGRAM LIBRARY  ********************************
2  REM
3  REM      DECSN:  TOP MANAGEMENT DECISION GAME
4  REM
5  REM      36065 REV C
6  REM
7  REM ***  CONTRIBUTED PROGRAM  *************************************
8  REM
9  REM
10  N=8
11  P=1
12  DIM A[8,7]
13  MAT  READ A[N,7]
14  PRINT '10'10'10'10'10"PERIOD"P;'10'10'10
15  PRINT "NO.";TAB(5);"PRICE";TAB(12);"PROMOTION";TAB(24);"PRODUCTION";
16  PRINT TAB(36);"CAPACITY";TAB(48);"RESEARCH";TAB(60);"INCENTIVE"
17  PRINT 
18  FOR I=1 TO N
19  PRINT I;TAB(5);A[I,2];TAB(12);A[I,3];TAB(24);A[I,4];TAB(36);
20  PRINT A[I,5];TAB(48);A[I,6];TAB(60);A[I,7]
21  NEXT I
22  Y=0
23  Z=0
24  FOR I=1 TO N
25  Y=Y+A[I,2]
26  Z=Z+A[I,3]
27  NEXT I
28  PRINT 
29  DIM C[8,6]
30  MAT  READ C[N,6]
31  FOR I=1 TO N
32  A[I,3]=A[I,3]+C[I,1]
35  NEXT I
40  Y1=Y*(1/N)
50  Z1=Z*(1/N)
60  F1=75/Y1*(300+Z1)/(1500+Z1)
70  F2=1+.2*P-.036*P^2+.0019*P^3
80  S=F1*F2*60000.
90  T1=0
100  FOR I=1 TO N
110  IF A[I,3] >= 1000 THEN 140
120  H[I]=75/A[I,2]*(300+A[I,3])/(1500+A[I,3])
130  GOTO 141
140  H[I]=40/A[I,2]
141  X=0
142  FOR J=1 TO (N*P)
143  LET X=RND(P)+X+J
144  NEXT J
145  H[I]=H[I]-.1*RND(P)
150  T1=T1+H[I]
160  NEXT I
170  T2=N*S
180  S1=T2/T1
190  DIM M[8,5]
200  FOR I=1 TO N
210  M[I,1]=I
220  M[I,2]=S1*H[I]
225  IF A[I,7] >= 30 THEN 228
226  Q[I]=A[I,5]
227  GOTO 230
228  Q[I]=1.1*A[I,5]
230  IF Q[I]-A[I,4]<5 THEN 260
240  M[I,3]=A[I,4]*10
250  GOTO 262
260  M[I,3]=(A[I,4]+5-Q[I])*17+(A[I,4]-5)*10
262  R=RND(P)
263  IF R*(A[I,6]+C[I,3])<35 THEN 267
264  C[I,2]=.985*C[I,2]
265  C[I,3]=0
266  GOTO 268
267  C[I,3]=INT(C[I,3]+1.2*A[I,6]+.5)
268  M[I,3]=M[I,3]*C[I,2]*(1-C[I,6]*.002)
269  C[I,6]=.7*C[I,6]
270  M[I,4]=C[I,4]*(.25*C[I,5]+.75*A[I,5])/C[I,5]
273  C[I,4]=INT(M[I,4]+.5)
274  C[I,5]=A[I,5]
275  C[I,1]=INT(.1*A[I,3]+.5)
276  M[I,5]=M[I,3]/A[I,4]
280  NEXT I
290  PRINT "TEAM NO.","SALES","PROD COST","ADMIN COST","UNIT COST"
300  PRINT 
310  FOR I=1 TO N
311  PRINT M[I,1],M[I,2],M[I,3],M[I,4],M[I,5]
312  NEXT I
320  PRINT 
330  PRINT "TOTAL POTENTIAL SALES,    ";T2;"UNITS"
340  PRINT "TOTAL PROMOTION,    $";Z
341  PRINT 
351  DATA 1,30,450,65,75,80,10
352  DATA 2,30,450,65,75,80,10
353  DATA 3,30,450,65,75,80,10
354  DATA 4,30,450,65,75,80,10
355  DATA 5,30,450,65,75,80,10
356  DATA 6,30,450,65,75,80,10
357  DATA 7,30,450,65,75,80,10
358  DATA 8,30,450,65,75,80,10
361  DATA 50,1,0,700,75,0
362  DATA 50,1,0,700,75,0
363  DATA 50,1,0,700,75,0
364  DATA 50,1,0,700,75,0
365  DATA 50,1,0,700,75,0
366  DATA 50,1,0,700,75,0
367  DATA 50,1,0,700,75,0
368  DATA 50,1,0,700,75,0
370  DATA 310000.,310000.,310000.,310000.,310000.,310000.,310000.,310000.
371  DATA 30000,30000,30000,30000,30000,30000,30000,30000
372  DATA 96000.,96000.,96000.,96000.,96000.,96000.,96000.,96000.
375  DIM D[3,20]
376  MAT  READ D[3,N]
400  RESTORE 
410  MAT  READ A[N,7]
430  PRINT '10'10'10'10'10
460  FOR I=1 TO N
470  V3=60
480  PRINT "    T E A M  "M[I,1];"P E R I O D  "P
490  FOR Z7=1 TO 36
500  PRINT "*-";
510  NEXT Z7
520  PRINT 
530  B=A[I,3]*1000
540  E=A[I,6]*1000
550  IF A[I,7] >= 30 THEN 580
560  F=A[I,7]*1000
570  GOTO 590
580  A[I,7]=A[I,7]-20
585  GOTO 560
590  G=M[I,4]*1000
600  K=M[I,3]*1000
610  L=A[I,2]*M[I,2]
620  R=D[1,I]+K
622  M[I,5]=R/D[3,I]
630  T=M[I,5]*M[I,2]
640  U=R-T
650  IF U<1 THEN 670
660  GOTO 680
670  U=0
680  V=L-T
690  W=B+E+F+G+U/10+D[2,I]
700  W0=V-W
710  Z=1
720  IF R<M[I,5]*M[I,2] THEN 1420
730  PRINT '10
740  PRINT "SALES UNITS"TAB(25);M[I,2];TAB(44);"UNIT PRICE";A[I,2]
750  PRINT "SALES"TAB(25);
760  Z[1]=L
770  GOSUB 1770
780  PRINT TAB(44)"UNIT COST";M[I,5]
790  V3=V3-6
800  PRINT "BEGINNING INVENTORY"TAB(25);
810  Z[1]=D[1,I]
820  GOSUB 1770
830  PRINT 
840  PRINT "PRODUCTION COST"TAB(25);
850  Z[1]=K
860  GOSUB 1790
870  PRINT "MDSE AVAILABLE FOR SALE"TAB(25);
880  Z[1]=R
890  GOSUB 1790
900  PRINT "ENDING INVENTORY"TAB(25);
910  Z[1]=U
920  GOSUB 1790
930  PRINT "COST OF GOODS SOLD"TAB(25);
940  Z[1]=T
950  GOSUB 1790
960  PRINT "GROSS MARGIN"TAB(25);
970  Z[1]=V
980  GOSUB 1790
990  PRINT "PROMOTION EXPENSE"TAB(25);
1000  Z[1]=B
1010  GOSUB 1790
1020  PRINT "INCENTIVE COST"TAB(25);
1030  Z[1]=F
1040  GOSUB 1790
1050  PRINT "TRAINING EXPENSE"TAB(25);
1060  Z[1]=D[2,I]
1070  GOSUB 1790
1080  PRINT "RESEARCH EXPENSE"TAB(25);
1090  Z[1]=E
1100  GOSUB 1790
1110  PRINT "INV'Y CARRYING CHARGE"TAB(25);
1120  Z[1]=U/10
1130  GOSUB 1790
1140  PRINT "OVERHEAD"TAB(25);
1150  Z[1]=G
1160  GOSUB 1790
1170  V3=V3-12
1175  D[1,I]=U
1180  IF W0<1 THEN 1250
1190  PRINT 
1200  PRINT "NET INCOME"TAB(25);
1210  Z[1]=W0
1220  GOSUB 1790
1230  V3=V3-2
1240  GOTO 1330
1250  PRINT 
1260  PRINT TAB(9)"*************"
1270  PRINT "NET LOSS *";
1280  Z[1]=ABS(W0)
1290  GOSUB 1770
1300  PRINT TAB(21)"*"
1310  PRINT TAB(9)"*************"
1320  V3=V3-3
1330  FOR C7=1 TO V3
1340  PRINT '10;
1350  NEXT C7
1360  NEXT I
1370  FOR I=1 TO 72
1380  PRINT "*";
1390  NEXT I
1400  PRINT '10'10
1401  FOR I=1 TO N
1402  IF D[2,I]=30000 THEN 1404
1403  GOTO 1406
1404  C[I,6]=C[I,6]+6
1406  PRINT 360+I;"DATA";C[I,1];",";C[I,2];",";C[I,3];",";C[I,4];
1407  PRINT ",";C[I,5];",";C[I,6]
1408  NEXT I
1409  PRINT 370"DATA";
1410  FOR I=1 TO N
1411  PRINT D[1,I];
1412  NEXT I
1413  PRINT '13'10371"DATA      --TRAINING EXPENSE--"
1414  PRINT 372"DATA";
1415  FOR I=1 TO N
1416  PRINT D[3,I]-M[I,2];
1417  NEXT I
1418  GOTO 1760
1420  A3=R/M[I,5]
1430  C3=A3*A[I,2]
1440  PRINT 
1445  PRINT 
1450  FOR A7=1 TO 51
1460  PRINT TAB(14)"*";
1470  NEXT A7
1480  PRINT 
1485  PRINT TAB(14)"*";TAB(64)"*"
1490  PRINT TAB(14)"* TOTAL POTENTIAL SALES-IN UNITS";M[I,2];TAB(64)"*"
1495  PRINT TAB(14)"*";TAB(64)"*"
1500  PRINT TAB(14)"* TOTAL POTENTIAL SALES-IN DOLLARS ";
1510  Z[1]=L
1520  GOSUB 1770
1530  PRINT TAB(64)"*"
1535  PRINT TAB(14)"*";TAB(64)"*"
1540  PRINT TAB(14)"* SALES LOST-IN UNITS"M[I,2]-A3;TAB(64)"*"
1545  PRINT TAB(14)"*";TAB(64)"*"
1550  PRINT TAB(14)"* SALES LOST-IN DOLLARS";
1560  Z[1]=L-C3
1570  GOSUB 1770
1580  PRINT TAB(64)"*"
1585  PRINT TAB(14)"*";TAB(64)"*"
1590  FOR C7=1 TO 51
1600  PRINT TAB(14)"*";
1610  NEXT C7
1620  PRINT '10
1625  PRINT 
1630  PRINT "SALES UNITS RECALCULATED"TAB(25);A3;TAB(44)"UNIT PRICE";A[I,2]
1640  PRINT "SALES RECALCULATED"TAB(25);
1650  Z[1]=C3
1660  GOSUB 1770
1670  PRINT TAB(44)"UNIT COST";M[I,5]
1680  PRINT 
1690  V3=V3-18
1700  L=C3
1701  Q[I]=M[I,2]
1710  M[I,2]=A3
1720  T=M[I,5]*M[I,2]
1730  V=L-T
1740  W0=V-W
1750  GOTO 800
1760  END 
1770  Z$="#######"
1780  GOTO 9001
1790  Z$="#######"
1800  GOSUB 9001
1810  PRINT 
1820  RETURN 
9001  REM: FORMAT(12/5/68)
9100  LET Z2=Z3=Z4=Z5=Z7=Z8=Z9=1
9101  DIM Y$[10],Z$[72]
9102  LET Y$="0123456789"
9103  LET Z0=Z9-1
9104  LET Z0=Z0+1
9105  IF Z0=LEN(Z$)+1 THEN 9157
9106  IF Z$[Z0,Z0]="#" THEN 9113
9107  IF Z$[Z0,Z0+1]=".#" THEN 9113
9108  IF Z$[Z0,Z0+1]="+#" THEN 9111
9109  PRINT Z$[Z0,Z0];
9110  GOTO 9104
9111  LET Z4=0
9112  GOTO 9104
9113  LET Z=100
9114  LET Z6=Z[Z2]
9115  LET Z9=Z0-1
9116  LET Z9=Z9+1
9117  IF Z$[Z9,Z9]="." THEN 9120
9118  IF Z$[Z9,Z9]="#" THEN 9116
9119  GOTO 9124
9120  IF Z5#1 THEN 9124
9121  LET Z5=0
9122  LET Z=Z9
9123  GOTO 9116
9124  IF Z#100 THEN 9126
9125  LET Z=Z9
9126  IF Z4=1 THEN 9131
9127  IF Z6 >= 0 THEN 9130
9128  PRINT "-";
9129  GOTO 9131
9130  PRINT " ";
9131  Z6=ABS(Z6)
9133  FOR Z1=Z-Z0 TO Z+1-Z9 STEP -1
9134  IF Z$[Z-Z1,Z-Z1]#"." THEN 9139
9135  PRINT ".";
9136  LET Z3=0
9137  LET Z7=2
9138  GOTO 9153
9139  LET Z8=INT(Z6/(10^(Z1+Z7-2)))
9140  IF Z6<10^(Z-Z0) THEN 9143
9141  PRINT "#";
9142  GOTO 9153
9143  LET Z6=Z6-Z8*10^(Z1+Z7-2)
9144  IF Y$[Z8+1,Z8+1]="0" THEN 9146
9145  LET Z3=0
9146  IF Z3=0 THEN 9152
9147  IF Z1#1 THEN 9150
9148  PRINT "0";
9149  GOTO 9153
9150  PRINT " ";
9151  GOTO 9153
9152  PRINT Y$[Z8+1,Z8+1];
9153  NEXT Z1
9154  LET Z3=Z4=Z5=Z7=1
9155  LET Z2=Z2+1
9156  GOTO 9103
9157  RETURN 
9558  END 
