1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-03-03 01:47:56 +00:00
Files
Paul Kimpel 2c72f7fd1d Commit CUBE Library version 13 of February 1972.
1. Commit library tape images, directories, and extracted text files.
2. Commit additional utilities under Unisys-Emode-Tools.
2018-05-27 11:24:23 -07:00

208 lines
15 KiB
Plaintext

LABEL 0000000000XXXXXX0010000001
$ CARD LIST
BEGIN COPT002
COMMENT COST - PERT COPT003
PROGRAM CALCULATES "MINIMUM COST" VERSUS "DURATION" CURVE COPT004
ASSOCIATED WITH A GIVEN PROJECT. CONSTITUENT ACTIVITIES COPT005
OF THE PROJECT ARE ACCOMPLISHED IN INCREASINGLY SHORTER COPT006
TIMES THEREBY PROMOTING COST. ACTIVITIES SHORTENED ARE COPT007
THOSE THAT RESULT IN SMALLEST INCREASE IN COST PER UNIT COPT008
DECREASE IN PROJECT DURATION. FULKERSONS FLOW METHOD IS COPT009
USED. COPT010
COPT011
W J VAN DE LINDT, R T OLLIVIER COPT012
PROFESSIONAL SERVICES DIVISIONAL GROUP COPT013
BURROUGHS CORPORATION COPT014
COPT015
CARD SEQUENCE BEGINS WITH COPT-001 COPT016
FIRST RELEASE 15 AUGUST, 1962 ; COPT017
INTEGER K,N,Z ; COPT018
COPT019
INTEGER ARRAY HEAD[0:10] ; COPT020
COPT021
FILE IN DATA1(1,10) ; FILE OUT OUT1 1(1,15) ; COPT022
LABEL STARTE , ENDE ; COPT023
COPT024
FORMAT IN F1(10A6,2(X1,I3)) ; COPT025
COPT026
FORMAT OUT F2("NETWORK NAME",X1,10A6,X1,"N",X1,I3,X1,"Z",X1,I3/) ; COPT027
COPT028
LIST L1(FOR K ~ 1 STEP 1 UNTIL 10 DO HEAD[K],N,Z) ; COPT029
COPT030
STARTE : READ (DATA1,F1,L1)[ENDE] ; WRITE (OUT1[PAGE],F2,L1); COPT031
BEGIN COPT032
LABEL START,BELA,CLEAR,LA,LA1,LA2,LA3,LA4,BR1,NOB,DONE ; COPT033
LABEL ENBR ,LBL3 ; COPT034
COPT035
INTEGER CO ,TAW1 , L, IK , JK , IP , JP , P , H ; COPT036
COPT037
REAL TAW,TAW2,TCOST ; COPT038
COPT039
INTEGER ARRAY I,J,LL[0:N] ; COPT040
COPT041
ARRAY A,B,C,COST,COSTB,ET,FF,FG [0:N],ABAR1,ABAR2[0:N],TAU, COPT042
LM[0:N] ; COPT043
COPT044
LIST L2(I[K],J[K],A[K],B[K],C[K],COSTB[K]) , COPT045
L3(K,I[K],J[K],A[K],B[K],C[K],COSTB[K]) , COPT046
L4(K,I[K],J[K],ET[K],COST[K]) , COPT047
L5(TAU[J[N]],TCOST) ; COPT048
COPT049
FORMAT IN F3(2(I4,X1),4(F6.0,X1)) ; COPT050
COPT051
FORMAT OUT F4(" ACTIVITY PREDECESSOR SUCCESSOR CRASH TIME ", COPT052
"NORMAL TIME COST RATE NORMAL COST"/) , COPT053
F5(X3,I5,X8,I5,X6,I5,2(X7,F6.0),X4,F6.0,X7,F6.0) , COPT054
F6(" ACTIVITY PREDECESSOR SUCCESSOR EXPECTED TIME", COPT055
" ACTIVITY COST" ) , COPT056
F7(X3,I5,X8,I5,X6,I5,2(X9,F6.0)) , COPT057
F8("TOTAL PROJECT TIME ",F6.0," TOTAL PROJECT COST", COPT058
X3,F6.0) ; COPT059
COPT060
START: WRITE(OUT1[DBL],F4) ; COPT061
Z ~ N ; COPT062
FOR K ~ 1 STEP 1 UNTIL N DO COPT063
BEGIN COPT064
READ(DATA1,F3,L2) ; WRITE(OUT1,F5,L3) COPT065
END ; COPT066
FOR K ~ 1 STEP 1 UNTIL Z DO TAU[K] ~ 0 ; COPT067
FOR K ~ 1 STEP 1 UNTIL N DO COPT068
BEGIN COPT069
TAW ~ TAU[I[K]] + B[K] ; COPT070
IF TAW > TAU[J[K]] THEN TAU[J[K]] ~ TAW ; COPT071
FF[K] ~ FG[K] ~ 0 COPT072
END ; COPT073
BELA: FOR K ~ 1 STEP 1 UNTIL N DO COPT074
BEGIN COPT075
TAW ~ TAU[I[K]] - TAU[J[K]] ; COPT076
ABAR1[K] ~ B[K] + TAW ; ABAR2[K] ~ A[K] + TAW COPT077
END ; COPT078
CLEAR: FOR K ~ 1 STEP 1 UNTIL Z DO LL[K] ~ LM[K] ~ 0 ; COPT079
LM[I[1]] ~ 1.0 | 10 * 40 ; COPT080
FOR K ~ 1 STEP 1 UNTIL N DO COPT081
IF ABAR2[K] = 0 THEN IF LM[I[K]] ! 0 THEN COPT082
IF LM[J[K]] = 0 THEN COPT083
BEGIN COPT084
LL[J[K]] ~ K ; LM[J[K]] ~ -1.0 | 10*40 COPT085
END ; COPT086
IF LM[J[N]] ! 0 THEN GO TO DONE ; COPT087
H ~ I[1] ; COPT088
FOR K ~ 1 STEP 1 UNTIL N DO COPT089
BEGIN COPT090
LBL3: IF I[K] = H THEN COPT091
BEGIN COPT092
IK ~ I[K] ; JK ~ J[K] ; COPT093
IF LM[JK] = 0 THEN IF LM[IK] ! 0 THEN COPT094
BEGIN COPT095
IF ABAR1[K] = 0 THEN COPT096
BEGIN COPT097
TAW ~ C[K] - FF[K] ; COPT098
IF TAW > 0 THEN COPT099
BEGIN COPT100
IF TAW { ABS(LM[IK]) THEN LM[JK] ~ TAW COPT101
ELSE LM[JK] ~ ABS(LM[IK]) ; COPT102
LL[JK] ~ K COPT103
END END ; COPT104
IF ABAR2[K] = 0 THEN COPT105
BEGIN COPT106
LM[JK] ~ -ABS(LM[IK]) ; LL[JK] ~ K COPT107
END END ; COPT108
IF K ! N THEN GO TO LA ; COPT109
IF LM[J[N]] = 0 THEN GO TO NOB ELSE GO TO LA4 COPT110
END ; COPT111
FOR P ~ 1 STEP 1 UNTIL K-1 DO COPT112
BEGIN COPT113
IF J[P] = H THEN COPT114
BEGIN COPT115
IP ~ I[P] ; JP ~ J[P] ; COPT116
IF LM[JP] ! 0 THEN IF LM[IP] = 0 THEN COPT117
BEGIN COPT118
IF ABAR1[P] ! 0 THEN GO TO LA1 ; COPT119
IF FF[P] > 0 THEN COPT120
BEGIN COPT121
IF FF[P] { ABS(LM[JP]) THEN LM[IP] ~ FF[P] COPT122
ELSE LM[IP] ~ ABS(LM[JP]) ; COPT123
LL[IP] ~ -P ; COPT124
END ; COPT125
LA1: IF (ABAR2[P] ! 0 ) OR (FG[P] { 0 ) THEN GO TO LA3 ; COPT126
IF FG[P] { ABS(LM[JP]) THEN LM[IP] ~ -FG[P] COPT127
ELSE LM[IP] ~ -ABS(LM[JP]) ; COPT128
LL[IP] ~ -P ; COPT129
LA3: END END END ; COPT130
H ~ I[K] ; GO TO LBL3 ; COPT131
LA: END ; COPT132
LA4: TAW ~ ABS(LM[JK]) ; COPT133
TAW1 ~ LL[JK] ; TAW2 ~ LM[JK] ; COPT134
WHILE (TAW1 ! LL[I[1]]) DO COPT135
BEGIN COPT136
IF TAW1 > 0 THEN COPT137
BEGIN COPT138
IF TAW2 > 0 THEN FF[ABS(TAW1)] ~ FF[ABS(TAW1)] + TAW COPT139
ELSE FG[ABS(TAW1)] ~ FG[ABS(TAW1)] + TAW ; COPT140
GO TO BR1 COPT141
END ; COPT142
IF TAW2 > 0 THEN FF[ABS(TAW1)] ~ FF[ABS(TAW1)] - TAW COPT143
ELSE FG[ABS(TAW1)] ~ FG[ABS(TAW1)] - TAW ; COPT144
BR1: TAW2 ~ LM[I[ABS(TAW1)]] ; COPT145
TAW1 ~ LL[I[ABS(TAW1)]] COPT146
END ; COPT147
GO TO CLEAR ; COPT148
NOB: TAW ~ 1.0 | 10 * 40 ; COPT149
FOR K ~ 1 STEP 1 UNTIL N DO COPT150
BEGIN COPT151
IF LM[I[K]] ! 0 THEN COPT152
BEGIN COPT153
IF LM[J[K]] = 0 THEN COPT154
BEGIN COPT155
IF (ABAR1[K] < 0) AND (ABS(ABAR1[K]) < TAW) THEN COPT156
TAW ~ ABS(ABAR1[K]) ; COPT157
IF (ABAR2[K] < 0) AND (ABS(ABAR2[K]) < TAW) THEN COPT158
TAW ~ ABS(ABAR2[K]) COPT159
END ; COPT160
GO TO ENBR COPT161
END ; COPT162
IF LM [J[K]] ! 0 THEN COPT163
BEGIN COPT164
IF (ABAR1[K] > 0) AND (ABAR1[K] < TAW) THEN TAW ~ABAR1[K]; COPT165
IF (ABAR2[K] > 0) AND (ABAR2[K] < TAW) THEN TAW ~ABAR2[K] COPT166
END ; COPT167
ENBR: END ; COPT168
FOR K ~ 1 STEP 1 UNTIL Z DO COPT169
IF LM[K] = 0 THEN TAU[K] ~ TAU[K] - TAW ; COPT170
TCOST ~ 0 ; COPT171
FOR K ~ 1 STEP 1 UNTIL N DO COPT172
BEGIN COPT173
ET[K] ~ IF B[K] { TAU[J[K]] - TAU[I[K]] THEN B[K] COPT174
ELSE (TAU[J[K]] - TAU[I[K]]) ; COPT175
COST[K] ~ COSTB[K] + C[K] | (B[K] - ET[K]) ; COPT176
TCOST ~ TCOST + COST[K] COPT177
END ; COPT178
WRITE(OUT1[PAGE]); WRITE(OUT1,F6); COPT179
FOR K ~ 1 STEP 1 UNTIL N DO WRITE(OUT1[DBL],F7,L4) ; COPT180
WRITE(OUT1[PAGE],F8,L5) ; COPT181
GO TO BELA ; COPT182
DONE: GO TO STARTE COPT183
END ; COPT184
ENDE: END. COPT185
LABEL 000000000DATA1 0010000001
SITE PREPARATION TAB AND KEY PUNCH ROOMS 19 12
1 2 0. 0. 0. 0.
2 3 0. 0. 0. 0.
2 4 0. 0. 0. 0.
2 5 0. 0. 0. 0.
3 7 40. 50. 100. 10000.
4 6 35. 40. 100. 25000.
5 7 10. 20. 125. 2500.
5 11 25. 30. 100. 4000.
6 7 15. 21. 83. 4200.
6 10 3. 6. 0. 500.
7 8 10. 20. 200. 5000.
7 10 5. 5. 0. 1000.
7 12 7. 11. 125. 3000.
8 9 0. 0. 0. 0.
8 10 0. 0. 0. 0.
8 12 5. 11. 33. 2500.
9 12 8. 10. 200. 2400.
10 12 6. 6. 0. 750.
11 12 15. 21. 117. 4800.