1  REM ***  HP BASIC PROGRAM LIBRARY *****************************
2  REM
3  REM      LABOR:  LABOR/MANAGEMENT BARGAINING
4  REM
5  REM      36233  REV A
6  REM
7  REM ***  CONTRIBUTED PROGRAM **********************************
8  REM ***  CONCEIVED AND PROGRAMMED AT BABSON COLLEGE
9  REM ***  BY FRANCOIS P CARLHIAN *******************************
10  FILES STRIKE
20  DIM A[9],B[9],C[4],D[9],F[9],G[9],E[9]
30  DATA 5,1,5,7
40  READ W5,C3,A,B
50  PRINT "ENTER FIRM NUMBER";
60  INPUT F
70  PRINT '10'10'10'10'10
80  FOR C7=1 TO C3
90  READ #1,2*(F-1)+1
100  IF  END #1 THEN 140
110  MAT  READ #1;F,G,A,B,C
120  READ #1;V,T,I5,A6,A5,X2,C9,W5,C3,A,B
130  GOTO 1160
140  PRINT "             COLLECTIVE BARGINING SIMULATION "
150  PRINT "             ------------------------------- "
160  V=T=I5=A6=A5=X2=C9=0
170  MAT F=ZER
180  MAT G=ZER
190  PRINT ":::::FIRM";F,":::::COPY #";C7;'13'10'10
200  U=C9=Q3=0
210  A[1]=(A+B)/2-3
220  A[2]=A*B*.15
230  A[3]=(.08+INT(A*B/4)/100) MIN .14
240  A[4]=(INT(575-10*(A[2]+1)^2)) MAX 328
250  T=A[4]
260  A[5]=(1.5*(A+B)*10000) MAX 182000.
270  I5=A[5]
280  A[6]=A[4]*40
290  A6=A[6]
300  A[7]=6.5E+06+125000.*(A+2*B)
310  A[8]=(((A+B)*A[7]*.007) MAX 425000.) MIN 957000.
320  A5=A[7]/52
330  A[9]=INT(A[8]/A[4])
340  B[1]=12
350  V=1
360  B[2]=2.2+INT(A*B*.1)/100
370  B[3]=INT(1+(A+B)/5)
380  B[4]=5+A
390  B[5]=40+INT((A+B)/5)
400  B[6]=INT((A+B)/2)
410  B[7]=350+10*A+B
420  B[8]=3
430  B[9]=1.5*B[2]
440  B[9]=INT(B[9]*100+.5)/100
450  C[1]=A*B/20+2
460  C[2]=INT((A+B)/3*100)/100+.2
470  C[3]=8-C[1]
480  C[4]=(11-A)*.1*(B+1)
490  PRINT "THE LAST LABOR MANAGEMENT CONTRACT IS EXPIRING TONIGHT";
500  PRINT " THE UNION IS EXTREMELY DISSATISFIED WITH IT AND HAS DECIDED "
510  PRINT "TO GO ON "'10"S"'10"T"'10"R"'10"I"'10"K"'10"E"'10'10'10'10'13
520  PRINT "*** INFORMATION CONCERNING :"
530  PRINT "-----------------------------"
540  PRINT 
550  M=38
560  N=14
570  PRINT "THE FIRM (SINCE LAST CONTRACT)";TAB(M);"THE LAST CONTRACT"
580  PRINT 
590  PRINT "PROFIT INCREASE";TAB(M-N);"%";A[1];TAB(M);"DURATION (MONTHS)";
600  PRINT TAB(2*M-N);" ";B[1]
610  PRINT "PRODUCTIVITY INCREASE";TAB(M-N);"%";A[2];
620  PRINT TAB(M);"WAGE RATE";TAB(2*M-N);"$";B[2]
630  PRINT "LAST WAGE INCREASE";TAB(M-N);"$";A[3];TAB(M);"GUARANTEED ";
640  PRINT "OVERTIME"TAB(2*M-N)" ";B[3]
650  PRINT "EMPLOYEMENT LEVEL";TAB(M-N);" "A[4];
660  PRINT TAB(M);"VACATION DAYS PER YEAR";TAB(2*M-N);" ";B[4]
670  PRINT "INVENTORY LEVEL";TAB(M-N);"$"A[5];
680  PRINT TAB(M);"REGULAR HOURS/WEEK"TAB(2*M-N)" "B[5]
690  PRINT "STRIKE FUND"TAB(M-N)"$"A[6];
700  PRINT TAB(M)"DAYS OF SICK LEAVE"TAB(2*M-N)" "B[6]
710  PRINT "LAST YEAR SALES"TAB(M-N-7)"MILLION$"INT(A[7]/1.E+06);
720  PRINT TAB(M)"BONUS AND INSURANCE";TAB(2*M-N)"$"B[7]
730  PRINT "LAST YEAR PROFIT"TAB(M-N)"$"A[8];
740  PRINT TAB(M)"# OF PAID HOLIDAYS"TAB(2*M-N)" "B[8]
750  PRINT "RATIO: PROFIT /WORKER"TAB(M-N)"$"A[9];
760  PRINT TAB(M)"OVERTIME WAGE RATE"TAB(2*M-N)"$";
770  PRINT B[9]
780  PRINT '10'10
790  PRINT "GENERAL INFORMATION"
800  PRINT "-------------------"
810  PRINT 
820  PRINT "CONSUMER PRICE INDEX INCREASE"TAB(M+N);"%"C[1]
830  PRINT "AVERAGE WAGE INCREASE IN INDUSTRY";
840  PRINT TAB(M+N)"%"C[2]
850  PRINT "RATE OF UNEMPLOYEMENT IN INDUSTRY";
860  PRINT TAB(M+N)"%"C[3]
870  PRINT "PRODUCTIVITY INCREASE IN INDUSTRY";
880  PRINT TAB(M+N)"%";C[4]
890  PRINT '10'10
900  MAT F=B
910  MAT B=ZER[9]
920  GOSUB 2880
930  MAT B=F
940  PRINT "COST OF THE OLD CONTRACT -PER WORKER- :"
950  PRINT "----------------------------------------"
960  GOSUB 1610
970  PRINT 
980  REM EXTRA PROFIT
990  X2=(A[2]-C[2])*A[9]/A[2]/2 MAX 0
1000  REM INFLATION
1010  X3=.01*C[1]*K9
1020  PRINT "IN VIEW OF THE COMING STRIKE, IT WAS DECIDED AT THE LAST"
1030  PRINT "MEETING OF THE BOARD OF DIRECTORS THAT THE COMPANY COULD";
1040  PRINT "  SUPPORT";
1050  PRINT "AN INCREASE IN THE WORKERS' PAYROLL.";
1060  IF X2>X3 THEN 1100
1070  X2=X3
1080  PRINT "DUE TO THE RELATIVELY IMPORTANT INFLATION RATE, ";
1090  GOTO 1110
1100  PRINT "THE BOARD IS WILLING TO SHARE THE FIRM'S PROFITS, AND ";
1110  PRINT "THE MAXIMUN DOLLAR AMOUNT PROPOSED -PER WORKER-PER YEAR- IS: $";
1120  PRINT INT(X2+.5);'10'10'10
1130  PRINT '10'10
1140  NEXT C7
1150  IF W5=5 THEN 1970
1160  C=Z=0
1170  PRINT '10'10'10'10'10'10'10'10'10'10'10'10'10'10'10
1180  PRINT "***CONTRACT PROPOSAL: WEEK";V
1190  PRINT "............................................................."
1200  IF V=1 THEN 1240
1210  PRINT "   ....ARBITRATION ANYONE...";
1220  INPUT A$
1230  IF A$[1,1]="Y" THEN 3040
1240  PRINT "INPUT LABOR ' S 9 DECISIONS";
1250  MAT  INPUT F
1260  PRINT "INPUT MANAGEMENT 9 DECISIONS";
1270  MAT  INPUT G
1280  DIM A$[3]
1290  GOSUB 2880
1300  PRINT "............................................................."
1310  D=(K9-INT(K9/10)*10)/10
1320  D=D MAX 1
1330  A[4]=A[4]-INT(T*D*.1)
1340  A[6]=INT(A[6]-A[4]*8)
1350  A[5]=INT(A[5]-A5*D)
1360  PRINT '10'10'10'10
1370  FOR C7=1 TO C3
1380  PRINT "*****FIRM"F,"COPY #"C7,"WEEK "V
1390  PRINT '10'10'10'10
1400  PRINT "*****BARGINING : CONTRACT PROPOSAL"
1410  PRINT TAB(5)"-------------------------------"
1420  PRINT 
1430  GOSUB 2880
1440  T5=K9
1450  PRINT '1"COST OF THE NEW CONTRACT DUE TO LABOR'S CONDITIONS -PER WORKER- :"
1460  Q3=1
1470  PRINT 
1480  GOSUB 1610
1490  MAT D=F
1500  MAT E=G
1510  MAT F=G
1520  GOSUB 2880
1530  T6=K9
1540  PRINT 
1550  PRINT 
1560  PRINT "COST OF THE NEW CONTRACT DUE TO MANAGEMENT'S OFFER -PER WORKER- :"
1570  PRINT 
1580  Q3=1
1590  GOSUB 1610
1600  GOTO 1750
1610  PRINT 
1620  PRINT "GROSS PAYROLL ";
1630  IF Q3=0 THEN 1650
1640  PRINT "INCREASE",
1650  PRINT TAB(30)"$";K7
1660  PRINT "FRINGE BENEFITS ";
1670  IF Q3=0 THEN 1690
1680  PRINT "INCREASE",
1690  PRINT TAB(30)"$";K9-K7
1700  PRINT 
1710  PRINT "TOTAL............","$";K9
1720  PRINT 
1730  Q3=0
1740  RETURN 
1750  MAT F=D
1760  MAT G=E
1770  GOTO 2250
1780  PRINT 
1790  F[1]=F[1] MIN G[1]
1800  F[5]=F[5] MIN G[5]
1810  FOR I=2 TO 9
1820  IF I=5 THEN 1840
1830  F[I]=F[I] MAX G[I]
1840  NEXT I
1850  PRINT TAB(28),"LABOR","MANAGEMENT"
1860  PRINT 
1870  FOR I=1 TO 9
1880  GOTO I OF 2060,2080,2100,2120,2140,2160,2180,2200,2220
1890  PRINT F[I],G[I];
1900  IF F[I]=G[I] THEN 2030
1910  PRINT 
1920  NEXT I
1930  IF C=9 THEN 2680
1940  PRINT '10'10'10'10'10'10'10'10'10'10
1950  NEXT C7
1960  V=V+1
1970  PRINT #1,2*(F-1)+1
1980  MAT  PRINT #1;F,G,A,B,C
1990  PRINT #1;V,T,I5,A6,A5,X2,C9,W5,C3,A,B
2000  IF W5=5 THEN 2020
2010  GOTO 50
2020  STOP 
2030  PRINT " ","***AGREEMENT"
2040  C=C+1
2050  GOTO 1920
2060  PRINT "DURATION (MONTHS)",
2070  GOTO 2230
2080  PRINT "WAGE RATE            ",
2090  GOTO 2230
2100  PRINT "GUARANTEED OVERTIME",
2110  GOTO 2230
2120  PRINT "VACATION DAYS/YEAR",
2130  GOTO 2230
2140  PRINT "REGULAR HOURS/WEEK",
2150  GOTO 2230
2160  PRINT "DAYS OF RELIEF/YEAR",
2170  GOTO 2230
2180  PRINT "YEARLY BONUS          ",
2190  GOTO 2230
2200  PRINT "PAID HOLIDAYS         ",
2210  GOTO 2230
2220  PRINT "OVERTIME RATE          ",
2230  IF Z=1 THEN 2640
2240  GOTO 1890
2250  PRINT '10'10
2260  PRINT "***INFORMATION ON THE CURRENT SITUATION :"
2270  PRINT "------------------------------------------"
2280  PRINT 
2290  PRINT "CURRENT UNION MEMBERSHIP",A[4],"DOWN";INT((T-A[4])/T*100+.5);"%"
2300  PRINT "CURRENT STRIKE FUND   ($)",A[6],"DOWN";INT((A6-A[6])/A6*100+.5);"%"
2310  PRINT 
2320  PRINT "INVENTORY LEVEL -PER WORKER-","$";INT((A[5] MAX 0)/T+.5)
2330  U=ABS(A[5] MIN 0)
2340  PRINT "UNFILLED ORDERS PER WORKER","$";INT(U/T+.5)
2350  PRINT 
2360  PRINT "MANAGEMENT EXPECTED COST OF ONE MORE WEEK OF STRIKE";
2370  C8=INT(A[8]*A5*D/A[7]+.5)
2380  C9=C9+C8
2390  C8=INT(C8/T)
2400  PRINT "      $";C8
2410  IF V#5 THEN 2450
2420  PRINT "WARNING TO LABOR   !!!!!  WORKERS ARE GETTING TIRED OF"
2430  PRINT "THE STRIKE AND MIGHT SOON VOTE TO END IT."
2440  GOTO 2490
2450  IF V#4 THEN 2490
2460  PRINT "WARNING TO MANGEMENT  !!!!!! "'10'13"THE STRIKE IS ";
2470  PRINT "GETTING REALLY EXPENSIVE, THE BOARD OF DIRECTORS MIGHT ";
2480  PRINT "GIVE IN SOON..."
2490  PRINT 
2500  IF V <= 5 THEN 2520
2510  IF (T-A[4])/T>.2 THEN 2550
2520  IF T5<X2 THEN 2760
2530  IF A[6]<A[4]*6 THEN 2580
2540  GOTO 2800
2550  PRINT "LABOR'S MEMBERSHIP LOSSES HAVE REACHED";(T-A[4])/T;
2560  PRINT "THE UNION CANNOT CONTINUE THE STRIKE. ";
2570  GOTO 2600
2580  PRINT "THE UNION STRIKE FUND IS TOO LOW !!! THERE IS NO OTHER  ";
2590  PRINT "ALTERNATIVE : ";
2600  PRINT "LABOR ACCEPTS MANAGEMENT'S OFFER, AND THE NEW CONTRACT IS:"
2610  Q3=Z=1
2620  FOR I=1 TO 9
2630  GOTO I OF 2060,2080,2100,2120,2140,2160,2180,2200,2220
2640  PRINT F[I]
2650  NEXT I
2660  GOSUB 2880
2670  GOSUB 1610
2680  PRINT #1,F; END 
2690  PRINT '10'10"THE STRIKE IS ENDED AFTER";V;"WEEKS. CONGRATULATIONS !!!"
2700  PRINT '10'10'10'10"THE STRIKE HAS BEEN EXPENSIVE!   "
2710  U=ABS(A[5] MIN 0)
2720  PRINT "IT HAS COST"'1" MANAGEMENT $";C9;"AND $";INT(U);"IN UNFILLED";
2730  PRINT "ORDERS";"LABOR HAS PAID $";A6-A[6];"AND HAS SUFFERED"
2740  PRINT INT((T-A[4])/T*100+.5);"% OF MEMBERSHIP LOSSES...."
2750  STOP 
2760  PRINT '10'10'10"UNION'S DEMANDS ARE WITHIN THE AMOUNT THAT MANAGEMENT ";
2770  PRINT "IS WILLING TO OFFER : ";
2780  PRINT "MANAGEMENT ACCEPTS LABOR'S DEMANDS. THE NEW CONTRACT IS :"
2790  GOTO 2610
2800  REM 
2810  PRINT "THE STRIKE HAS BEEN ON FOR ";V;
2820  IF V=1 THEN 2850
2830  PRINT "WEEKS"
2840  GOTO 2860
2850  PRINT "WEEK"
2860  REM
2870  GOTO 1780
2880  K1=F[2]-B[2]
2890  K2=B[5]-F[5]
2900  K2=K2*(1-2*(ABS(K2)>30))
2910  K4=F[4]+F[8]-B[4]-B[8]
2920  K5=(365-F[4]-F[6]-F[8])/7
2930  K3=((F[3]-B[3])*F[9]+B[3]*(F[9]-B[9]))*K5
2940  K6=F[7]-B[7]
2950  K7=(K1*F[5]+F[2]*K2)*K5
2960  K7=INT(K7)
2970  K8=K4*F[5]/7*F[2]
2980  K9=K3+K6+K7+K8
2990  K9=INT(K9+.5)
3000  RETURN 
3010  PRINT "LABOR AND MANAGEMENT HAVE AGGREED ON ALL ISSUES. THE STRIKE ";
3020  PRINT "IS OVER AND THE NEW CONTRACT IS : "'10'10'10
3030  GOTO 2610
3040  PRINT '10'10'10'10"ARBITRATION IS REQUIRED BY ONE PARTY......"'10'13'10'10'10"THE ARBITRATOR";
3050  PRINT "DECISIONS ARE FINAL AND MUST BE ACCEPTED BY BOTH PARTIES..."
3060  PRINT TAB(20);"THE NEW CONTRACT IS"'10'13;TAB(20);"*******************"'10'10
3070  FOR I=1 TO 9
3080  F[I]=(G[I]*(1+X2/C9)*(F[I]>G[I]) MIN F[I])+F[I]*(F[I] <= G[I])
3090  F[I]=INT(F[I]+.5)*(I#2 AND I#9)+INT(F[I]*100+.5)/100*(I=2 OR I=9)
3100  NEXT I
3110  F[5]=G[5]
3120  GOTO 2610
3130  END 
