mirror of
https://github.com/retro-software/B5500-software.git
synced 2026-03-02 17:44:40 +00:00
1. Commit library tape images, directories, and extracted text files. 2. Commit additional utilities under Unisys-Emode-Tools.
208 lines
15 KiB
Plaintext
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.
|