100 CLS
110 A$=STRING$(80,205)
120 PRINT A$
130 PRINT TAB(27)"CRITICAL PATH METHOD #1001"
140 COLOR 23
150 PRINT :PRINT :PRINT TAB(39)"IPCO"
160 COLOR 7
170 PRINT :PRINT :PRINT TAB(25)"PERSONAL COMPUTER OWNERS GROUP"
180 PRINT :PRINT :PRINT TAB(19)"p.o. box 10426, pittsburgh,pennsylvania 15234"
190 PRINT A$
200 PRINT :PRINT :PRINT :PRINT :PRINT
210 PRINT TAB(28)"PRESS ANY KEY TO CONTINUE"
220 A$=INKEY$:IF A$="" THEN 220
230 CLS
240 REM IPCO COPYRIGHT 1982
250 CLS
260 REM CRITICAL PATH METHOD
270 REM 'A' ARRAY = START AND END NODES FOR EACH ACTIVITY
280 REM 'S' ARRAY = EARLY START TIMES FOR EACH ACTIVITY
290 REM 'F' ARRAY = LATE FINISH TIMES FOR EACH ACTIVITY
300 REM 'E' ARRAY= DURATIONS AND COSTS OF ACTIVITIES
310 DIM A(100,2),S(100),F(100),E(100,2)
320 DEF FNR(Z1)=INT(Z1*1000+.05)/1000
330 PRINT "           CRITICAL PATH METHOD"
340 PRINT
350 PRINT
360 PRINT
370 PRINT
380 PRINT
390 PRINT
400 PRINT "HOW MANY ACTIVITIES IN THIS NETWORK?"
410 INPUT N
420 FOR I=1 TO N
430 PRINT
440 PRINT "ENTER START, END NODES FOR ACTIVITY";I;
450 INPUT A(I,1),A(I,2)
460 IF A(I,1)<A(I,2) THEN 550
470 IF A(I,1)<N THEN 550
480 IF A(I,2)<N THEN 550
490 PRINT "START NODE MUST BE NUMBERED LOWER"
500 PRINT "THEN END NODE.  AND END NODE MUST"
510 PRINT "BE LESS THEN THE NUMBER OF ACTIVITIES."
520 PRINT "*********   TRY AGAIN    *********"
530 PRINT
540 GOTO 430
550 PRINT "ENTER DURATION AND COST";
560 INPUT E(I,1),E(I,2)
570 S(I)=0
580 F(I)=0
590 NEXT I
600 REM LOOP TO FIND EARLY START TIMES FOR NETWORK
610 FOR I=1 TO N
620 IF S(A(I,2))>=S(A(I,1))+E(I,1) THEN 640
630 S(A(I,2))=S(A(I,1))+E(I,1)
640 NEXT I
650 F(A(N,2))=S(A(N,2))
660 REM LOOP TO CALCULATE LATE FINISH TIMES FOR NETWORK
670 FOR I=N TO 1 STEP -1
680 IF F(A(I,1))=0 THEN 710
690 IF F(A(I,1))>F(A(I,2))-E(I,1) THEN 710
700 GOTO 720
710 F(A(I,1))=F(A(I,2))-E(I,1)
720 NEXT I
730 C1=0
740 L=0
750 PRINT
760 CLS
770 REM CALCULATE SLACK TIMES IN S1
780 FOR I=1 TO N
790 PRINT "     START     END       EARLY     LATE      "
800 PRINT "     NODE      NODE      START     FINISH    "
810 PRINT "     *****     *****     *****     *****"
820 PRINT TAB(6)A(I,1);TAB(16)A(I,2);TAB(26)S(A(I,1));TAB(36)F(A(I,2))
830 PRINT
840 PRINT "DURATION";TAB(15);E(I,1)
850 S1=F(A(I,2))-S(A(I,1))-E(I,1)
860 PRINT
870 IF S1>0 THEN 920
880 PRINT
890 PRINT "SLACK";TAB(15);"CRITICAL"
900 L=L+E(I,1)
910 GOTO 940
920 PRINT "SLACK";TAB(15);S1
930 GOTO 940
940 PRINT
950 PRINT  "COST";TAB(15);E(I,2)
960 C1=C1+E(I,2)
970 PRINT
980 PRINT
990 PRINT "PRESS ANY KEY TO CONTINUE"
1000 A$=INKEY$: IF A$="" THEN 1000
1010 CLS
1020 NEXT I
1030 PRINT
1040 PRINT "CRITICAL PATH LENGTH= ";L
1050 PRINT
1060 PRINT "TOTAL COST OF NETWORK= ";C1
1070 PRINT
1080 PRINT
1090 PRINT
1100 PRINT "DO YOU WANT TO CHANGE ANY "
1110 PRINT "ACTIVITY DURATIONS? (Y/N)"
1120 INPUT A$
1130 IF A$="N" THEN 1310
1140 IF A$<>"Y" THEN 1080
1150 PRINT
1160 CLS
1170 PRINT "WHICH ACTIVITY?"
1180 INPUT I
1190 IF I<1 THEN 1150
1200 IF I>N THEN 1150
1210 PRINT"CURRENT DURATION IS";E(I,1);",COST=";E(I,2)
1220 PRINT "ENTER NEW DURATION AND COST";
1230 INPUT E(I,2),E(I,2)
1240 PRINT "******    RECALCULATION NETWORK    ******"
1250 PRINT
1260 FOR I=1 TO N
1270 S(I)=0
1280 F(I)=0
1290 NEXT I
1300 GOTO 600
1310 END
1320 CLS A$=STRING$(80,205)
"
1250 PRINT
1260 FOR I=1 TO N
1270 S(I)=0
1280 F(I)=0
1290 NEXT I
1300 GOTO 600
1