1  REM ****  HP BASIC PROGRAM LIBRARY  ******************************
2  REM
3  REM       GMCRO5: ECONOMIC POLICY GAME
4  REM
5  REM       36521 REV A, PART 1 OF 2
6  REM
7  REM ****  CONTRIBUTED PROGRAM  ***********************************
10  REM           * * * MACROECONOMIC POLICY GAME #5 * * *
20  REM          (KEITH LUMSDEN, STANFORD G.S.B.,AUG 1971)
100  PRINT "MCRO5 MAY REQUIRE AN HOUR OR MORE TO PLAY CAREFULLY."
105  PRINT "IF YOU THINK THAT YOU MAY POSSIBLY WISH TO PLAY IT"
110  PRINT "IN MORE THAN ONE SITTING, OR MAY WISH TO STOP TO THINK"
115  PRINT "BEFORE CONTINUING, YOU SHOULD CREATE A FILE TO STORE"
120  PRINT "THE DATA GENERATED BY YOUR ECONOMY."
125  PRINT 
130  PRINT "DO YOU WANT THE FLEXIBILITY TO STOP THE GAME AND RETURN"
135  PRINT "LATER   ";
140  INPUT M$
145  IF M$="NO" THEN 255
150  PRINT 
155  PRINT "WHEN THE PROGRAM STOPS, TYPE"
156  PRINT 
160  PRINT "200 FILES DATA5"
165  PRINT "OPEN-DATA5,1"
170  PRINT "RUN-200"
171  PRINT 
175  PRINT "THE PROGRAM WILL NOW STOP TO ALLOW YOU TO TYPE IN THESE LINES."
180  PRINT "TYPE IN THE LINES AFTER THE COMPUTER PRINTS 'DONE'."
185  PRINT 
190  STOP 
205  PRINT "IF YOU DESIRE TO STOP THIS PROGRAM DURING EXECUTION,"
210  PRINT "YOU MAY DO SO BY TYPING '9999' WHEN THE CHANGE IN M IS"
215  PRINT "REQUESTED.  YOU MAY THEN LOGOFF AND RESUME MCRO5 IN THE"
220  PRINT "YEAR THAT YOU STOP.  INSTRUCTIONS FOR RESUMING WILL BE"
225  PRINT "GIVEN WHEN YOU STOP."
255  DIM M$[26]
256  PRINT 
260  PRINT "MCRO5 DEALS WITH DESIGNING POLICY STRATEGIES TO MEET DIFFERENT"
265  PRINT "ECONOMIC GOALS. YOU WILL BE GIVEN INFORMATION ON MAJOR ECONOMIC"
270  PRINT "VARIABLES INCLUDING THE RATE OF UNEMPLOYMENT (U) AND THE RATE OF";
275  PRINT "INFLATION (PC). YOU SHOULD HAVE STUDIED THE PAST PERFORMANCE OF"
280  PRINT "THE ECONOMY PRIOR TO THE BEGINNING OF THE GAME. YOU WILL CONTROL";
285  PRINT "THE MONEY SUPPLY (M). GOVERNMENT EXPENDITURES (G), AND THE"
290  PRINT "MARGINAL TAX RATE (T1). WHEN YOU ARE REQUESTED TO DO SO TYPE IN";
295  PRINT "THE CHANGES IN M,G, AND T1. IF THERE IS NO CHANGE A ZERO MUST"
300  PRINT "BE TYPED."
305  PRINT 
310  PRINT "YOUR OBJECTIVE IN MCRO5 IS TO MAXIMIZE A FUNCTION";
315  PRINT "WHICH IS DEFINED IN TERMS OF WELFARE (W)."
320  PRINT 
325  PRINT "THE NATIONS WELFARE FUNCTION FOR YEARS 1 THROUGH 10 IS  "
330  PRINT 
335  PRINT "            .6   .2   .2      3"
340  PRINT "        W=(C  )(I  )(G  )-U-PC"
345  PRINT 
350  PRINT "NOTICE THAT CONSUMPTION IS VALUED RATHER HIGHLY, AND INFLATION ";
355  PRINT "IS REGARDED MUCH MORE SERIOUSLY THAN UNEMPLOYMENT. YOU ARE TO"
360  PRINT "MAXIMIZE THE SUM OF WELFARE (W+) OVER THE NEXT 10 YEARS."
365  PRINT 
370  DATA .012,.008,.025,.15,20,.9,.666667,60,.025,.05,2250,12.5
375  DATA 50,.33,.9984,.1,.89,4.06,7,4,0,2.97033,69.278,2938.52,170.6
380  DATA 4.69452,651.611,106.063,167,0,-40,.3,0,717.645,378.547
385  DATA 155.483,398.386,97.7416,1.21653,.185108,1.21428,5.67608
390  DATA 5.53652,-5.94523,0,1
395  DIM V[20]
405  DIM N$[26]
410  PRINT "TYPE YOUR NAME   -";
415  INPUT N$
420  LET W1=0
425  FOR E9=1 TO 20
430  READ V[E9]
435  NEXT E9
440  READ N,J,L,K,M,R,Y,I,G,A,T0,T1,W1,Q,C,T,D,E,P,P2,P3,P4,U,Y2,W,W2
445  LET N1=N
450  GOTO 850
455  PRINT 
460  PRINT "ENTER CHANGE IN M -  ";
465  INPUT M2
470  IF M2=9999 THEN 2000
475  PRINT "ENTER CHANGE IN G -  ";
480  INPUT G2
485  PRINT "ENTER CHANGE IN T1 - ";
490  INPUT T2
495  PRINT "CHECK YOUR WORK. ANY CHANGES ? (1=YES,0=NO).";
500  INPUT X
505  IF X=1 THEN 455
510  IF T2>1-T1 THEN 535
515  IF T2<-T1 THEN 535
520  IF G2<-G THEN 535
525  IF M2<-M THEN 535
530  GOTO 555
535  PRINT 
540  PRINT "THE CHANGES YOU HAVE MADE ARE NOT PERMISSIBLE. CHECK YOUR WORK ";
545  PRINT "AND RE-ENTER."
550  GOTO 455
555  LET M=M+M2
560  LET M1=M/P
565  LET G=G+G2
570  LET T1=T1+T2
575  LET N=N+1
580  LET N1=N1+1
585  LET Y3=Y
590  LET P3=P
595  LET P4=P2
600  REM POTENTIAL OUTPUT
605  LET J=(1+V[1])*J
610  LET L=(1+V[2])*L
615  LET K=K+I
620  LET Q=J*L^V[7]*K^(1-V[7])
625  REM DETERMINE GNP
630  LET Y=V[5]-V[6]*T0+V[8]-V[9]*(V[11]-M1*V[13])+G+A
635  LET Y1=1+V[9]*V[12]-V[4]-V[10]-V[6]*(1-T1-V[4])
640  LET Y=Y/Y1
645  LET R=(V[11]-V[13]*M1+V[12]*Y)/Q
650  IF R>0 THEN 680
655  LET R=0
660  LET Y=V[5]-V[6]*T0+V[8]+G+A
665  LET Y1=1-V[4]-V[10]-V[6]*(1-T1-V[4])
670  LET Y=Y/Y1
675  REM COMPUTE PRICE CHANGE
680  LET N3=Y/Q
685  IF N3 >= V[17] THEN 700
690  LET P2=100*(-1+V[15]+V[16]*(N3-V[17]))
695  GOTO 705
700  LET P2=100*(-1+V[18]-V[19]*N3+V[20]*N3^2)
705  LET P=(1+.01*P2)*P
710  REM UNEMPLOYMENT LEVEL
715  LET U=100*(V[3]+V[14]*(1-N3))
720  REM SET INVENTORY ADJUSTMENT FACTOR
725  IF Y >= Q THEN 740
730  LET A=0
735  GOTO 760
740  LET A=(Y-Q)*Y1
745  LET Y=Q
750  LET U=100*V[3]
755  REM COMPUTE C,I ETC.
760  LET E=V[4]*Y
765  LET T=T0+T1*Y
770  LET D=Y-T-E
775  LET C=V[5]+V[6]*D
780  LET Y2=100*(Y-Y3)/Y3
785  LET I=Y-C-G
790  IF I >= 0 THEN 805
795  LET C=C+I
800  LET I=0
805  IF W2=2 THEN 825
810  IF W2=3 THEN 835
815  LET W=C^.6*I^.2*G^.2-U-P4^3
820  GOTO 840
825  LET W=C^.4*I^.2*G^.4-U^3-P4
830  GOTO 840
835  LET W=Q-U^2-P4^2
840  LET W1=W1+W
845  LET X1=2
850  PRINT 
855  PRINT N$,"GNP ACCOUNTS     YEAR";N1
860  PRINT "Q ="Q,"Y ="Y,"C ="C,"I ="I,"G ="G
1010  PRINT "T1="T1,"T ="T,"D ="D,"E ="E,"M ="M
1020  PRINT "P ="P3,"R ="R,"PC="P4,"U ="U,"IN="A
1021  PRINT "W ="W,"W+="W1
1030  PRINT 
1040  IF N1=0 THEN 455
1050  IF W2 <> 3 THEN 1080
1060  IF W<675 THEN 1390
1070  IF C<350 THEN 1390
1080  IF N <> 10 THEN 1200
1090  PRINT "YOU NOW RETURN TO YEAR ZERO. THE WELFARE FUNCTION CHANGES TO"
1100  PRINT 
1110  PRINT "                     .4   .2   .4    3"
1120  PRINT "                 W=(C  )(I  )(G  )-(U )-PC"
1130  PRINT 
1140  PRINT "OBVIOUSLY THE POLITICAL ATMOSPHERE HAS CHANGED. AGAIN"
1150  PRINT "YOUR OBJECTIVE IS TO MAXIMIZE THE SUM OF WELFARE OVER THE NEXT"
1151  PRINT "10 YEARS."
1170  RESTORE 
1172  FOR E9=1 TO 20
1173  READ V[E9]
1174  NEXT E9
1175  READ N1,J,L,K,M,R,Y,I,G,A,T0,T1,W1,Q,C,T,D,E,P,P2,P2,P4,U,Y2,W,W2
1177  LET W2=2
1180  LET W=0
1190  GOTO 850
1200  IF N <> 20 THEN 1360
1210  PRINT "YOU AGAIN RETURN TO YEAR ZERO. J. STALIN HAS COME TO POWER; HE ";
1220  PRINT "FAVORS RAPID GROWTH OF POTENTIAL OUTPUT EVEN IF SOME PRESENT"
1230  PRINT 
1240  PRINT "                                                     2     2"
1250  PRINT "COSTS ARE INVOLVED. HIS WELFARE FUNCTION IS    W=Q-(U )-(PC )  ";
1260  PRINT "YOUR OBJECTIVE IS TO PRODUCE MAXIMUM WELFARE IN YEAR 10"
1270  PRINT "SUBJECT TO THE REQUIREMENTS THAT WELFARE AT NO TIME FALL"
1280  PRINT "BELOW 675 AND THAT CONSUMPTION AT NO TIME FALL BELOW 350."
1290  PRINT 
1330  RESTORE 
1332  FOR E9=1 TO 20
1333  READ V[E9]
1334  NEXT E9
1335  READ N1,J,L,K,M,R,Y,I,G,A,T0,T1,W1,Q,C,T,D,E,P,P2,P3,P4,U,Y2,W,W2
1337  LET W2=3
1340  LET W=0
1350  GOTO 850
1360  IF N <> 30 THEN 455
1380  GOTO 9998
1390  PRINT " YOU HAVE VIOLATED THE CONSTRAINTS OF THE PROBLEM."
1391  GOTO 9998
2000  REM THIS STORES THE DATA FOR USE AT AT LATER TIME WHEN RESTARTING
2001  REM THE PROGRAM
2011  READ #1,1
2020  PRINT #1;N$
2021  FOR E9=1 TO 20
2022  PRINT #1;V[E9]
2023  NEXT E9
2030  PRINT #1;N,J,L,K,M,R,Y,I,G,A,T0,T1,W1,Q,C,T,D,E,P,P2,P3,P4,U,Y2,W
2031  PRINT #1;W2,N1
2040  PRINT "YOUR DATA HAS BEEN STORED IN A FILE DESIGNATED DATA5."
2041  PRINT "TO RESTART CALL MCRO5 AND TYPE"
2042  PRINT 
2043  PRINT "2510 FILES DATA5"
2044  PRINT "RUN-2500"
2050  STOP 
2499  STOP 
2500  REM THIS RESTARTS THE PROGRAM WHERE IT WAS PREVIOUSLY TERMINATED"
2520  READ #1,1
2525  READ #1;N$
2526  FOR E9=1 TO 20
2527  READ #1;V[E9]
2528  NEXT E9
2530  READ #1;N,J,L,K,M,R,Y,I,G,A,T0,T1,W1,Q,C,T,D,E,P,P2,P3,P4,U,Y2,W
2531  READ #1;W2,N1
2550  GOTO 850
9998  PRINT "THIS ENDS MCRO5. LOGOFF."
9999  END 
