Listing of file='REAPER.BAS;01' on disk='vmedia/pert_planner-sector.ccvf'
90 REM AUTHOR J.DE WAARD, MODIFIED BY EIKE MUELLER, V811212 100 REM READ NETWORK PARAMETERS FROM FILE AND PERFORM ANALYSIS 110 CLEAR 2000:DIM A(200,5),S(200),F(200),E(200,2),DE$(200) 130 PLOT 12,3,0,7,14,29,21 140 PRINT TAB( 10)"READ NETWORK PARAMETERS FROM" 150 PRINT TAB( 10)"FILE AND PERFORM ANALYSIS" 160 PLOT 29,18,15:PRINT 170 PRINT TAB( 5):INPUT "** INSERT DATA DISK AND HIT RETURN **";EN 180 B= 10:GOSUB 4000 185 FILE "T",5000 190 PLOT 3,5,11 200 INPUT "ENTER # OF FILE TO BE READ (1,2,3,4,5,6,OR 7): ";PD 210 ON PD GOTO 220,240,260,280,300,320,340 220 FILE "R",1,"PERT1",16 230 GOTO 400 240 FILE "R",2,"PERT2",16 250 GOTO 400 260 FILE "R",3,"PERT3",16 270 GOTO 400 280 FILE "R",4,"PERT4",16 290 GOTO 400 300 FILE "R",5,"PERT5",16 310 GOTO 400 320 FILE "R",6,"PERT6",16 330 GOTO 400 340 FILE "R",7,"PERT7",16 400 FOR I= 1 TO 200 410 GET PD,I;A(I,1),A(I,2),A(I,3),A(I,4),A(I,5),DE$(I)[11] 420 IF I= 1 AND A(I,2)< 1 THEN 500 430 IF I> 1 AND A(I,2)< 1 THEN 600 440 IF A(200,1)> 0 THEN 700 450 NEXT I 460 FILE "C",PD 500 B= 11:GOSUB 4000 510 N= 0:PLOT 3,5,13 520 PRINT "THIS FILE IS EMPTY!" 530 PLOT 3,5,15 535 FILE "C",PD 540 INPUT "ARE OTHER FILES TO BE ACCESSED? ";FA$ 550 IF LEFT$ (FA$,1)= "Y" THEN 130 560 GOTO 7000 600 B= 11:GOSUB 4000 610 N= I- 1:PLOT 3,5,13 620 PRINT "THE NUMBER OF STORED ACTIVITIES IS: ";N 630 PLOT 3,5,15 635 FILE "C",PD 640 INPUT "SHALL DATA BE PROCESSED? ";DP$ 650 IF LEFT$ (DP$,1)= "N" THEN 7000 660 GOTO 1110 700 B= 11:GOSUB 4000 710 N= 200:PLOT 3,5,12 720 PRINT "THIS FILE IS ALREADY FULL ";N;" ACTIVITIES STORED!" 730 GOTO 1110 1110 FOR I= 1TO N 1120 REM E(I,1) IS THE EXPECTED DURATION! 1130 E(I,1)= (A(I,3)+ 4* A(I,4)+ A(I,5))/ 6 1135 E(I,1)= (INT (E(I,1)* 1000+ .5))/ 1000 1140 REM E(I,2) IS THE ACTIVITY VARIANCE 1150 E(I,2)= ((A(I,5)- A(I,3))/ 6)^ 2 1160 E(I,2)= (INT (E(I,2)* 1000+ .5))/ 1000 1170 S(I)= 0 1180 F(I)= 0 1190 NEXT I 1200 REM LOOP TO FIND EARLY START TIMES FOR NETWORK 1210 FOR I= 1 TO N 1220 IF S(A(I,2))> = S(A(I,1))+ E(I,1) THEN 1240 1230 S(A(I,2))= S(A(I,1))+ E(I,1) 1240 NEXT I 1250 F(A(N,2))= S(A(N,2)) 1260 REM LOOP TO CALCULATE LATE FINISH TIMES FOR NETWORK 1270 FOR I= N TO 1 STEP - 1 1280 IF F(A(I,1))= 0 THEN 1310 1290 IF F(A(I,1))> F(A(I,2))- E(I,1) THEN 1310 1300 GOTO 1320 1310 F(A(I,1))= F(A(I,2))- E(I,1) 1320 NEXT I 1330 V= 0 1340 C= 0 1350 L= 0 1352 K= 0 1354 B= 0:GOSUB 4000 1355 INPUT "ARE RESULTS TO BE DISPLAYED ON SCREEN OR PRINTED? ";SP$ 1356 B= 0:GOSUB 4000 1357 IF LEFT$ (SP$,1)= "P" THEN 2000 1358 PRINT "THE COMPUTED RESULTS ARE:" 1360 FOR I= 1 TO N 1370 REM CALCULATE SLACK TIME IN S1 1380 S1= F(A(I,2))- S(A(I,1))- E(I,1) 1390 S1= (INT (10^ 3* S1+ .5))/ 10^ 3 1392 K= K+ 1 1394 IF K< > 3 THEN 1400 1395 PLOT 3,33,30,29,17 1396 INPUT "HIT ENTER TO CONTINUE";EN 1397 PLOT 29,18:B= 1:GOSUB 4000 1398 K= 0 1400 PRINT "--------------------------------------------------------------" 1410 PRINT 1420 PRINT "ACTIVITY";I;", ";DE$(I);" (NODE";A(I,1);" TO NODE";A(I,2);")" 1430 PRINT "IS A "; 1440 IF S1< = 0 THEN 1460 1450 PRINT "NON-CRITICAL EVENT.":GOTO 1480 1460 PRINT "CRITICAL EVENT." 1470 PRINT 1480 PRINT :PRINT "EXPECTED DURATION :"; 1481 N= E(I,1):T= 21:GOSUB 3000 1485 PRINT TAB( 33);"STANDARD DEVIATION:"; 1486 N= SQR (E(I,2)):T= 52:GOSUB 3000 1488 PRINT 1500 IF S1> 0 THEN 1580 1510 PRINT "START NO LATER THAN :"; 1511 N= S(A(I,1)):T= 21:GOSUB 3000 1512 PRINT 1520 PRINT "MUST BE COMPLETED BY:"; 1521 N= F(A(I,2)):T= 21:GOSUB 3000 1522 PRINT 1530 REM ACCUMULATE PATH LENGTH IN L, VARIANCE IN V 1540 IF L> = F(A(I,2)) THEN 1560 1550 L= F(A(I,2)) 1560 V= V+ E(I,2) 1570 GOTO 1630 1580 PRINT "EARLY START :"; 1581 N= S(A(I,1)):T= 21:GOSUB 3000 1585 PRINT TAB( 33);"LATE START :"; 1586 N= F(A(I,2))- E(I,1):T= 46:GOSUB 3000 1590 PRINT 1600 PRINT "EARLY FINISH :"; 1601 N= S(A(I,1))+ E(I,1):T= 21:GOSUB 3000 1605 PRINT TAB( 33)"LATE FINISH:"; 1606 N= F(A(I,2)):T= 46:GOSUB 3000 1610 PRINT 1620 PRINT "SLACK TIME :"; 1621 N= S1:T= 21:GOSUB 3000 1622 PRINT 1630 NEXT I 1635 PLOT 3,33,30,29,17:INPUT "HIT ENTER TO CONTINUE";EN 1637 PLOT 29,18 1640 B= 2:GOSUB 4000 1645 P= SQR (V) 1646 P= INT (P* 10^ 3+ .5)/ 10^ 3 1647 PLOT 3,0,12 1650 PRINT "THE CRITICAL PATH LENGTH IS :";L;" +/-";P 1675 PRINT 1678 IF LEFT$ (SP$,1)= "P" THEN 7500 1680 INPUT "ENTER DESIRED COMPLETION TIME ( 0 TO END ) : ";D 1685 PRINT 1690 IF D< = 0 THEN 1840 1700 REM CALCULATE Z-SCORE FOR DESIRED DURATION 1710 Y= (D- L)/ P 1720 REM CALCULATE CUMULATIVE AREA UNDER NORMAL DISTRIBUTION 1730 REM REF:SOME COMMON BASIC PROGRAMS, 3RD ED. P 128 1740 R= EXP (- (Y^ 2)/ 2)/ 2.5066282746 1750 Z= Y 1760 Y= 1/ (1+ .33267* ABS (Y)) 1770 T= 1- R* (.4361836* Y- .1201676* Y^ 2+ .937298* Y^ 3) 1780 IF Z> = 0 THEN 1800 1790 T= 1- T 1795 PRINT 1800 PRINT "PROBABILITY OF COMPLETION WITH DURATION OF :";D;" =";T 1805 PRINT 1810 INPUT "SHALL PROBABILITY BE CALCULATED FOR OTHER COMPLETION TIMES? ";CT$ 1820 PRINT 1830 IF LEFT$ (CT$,1)= "Y" THEN 1675 1835 IF LEFT$ (SP$,1)= "P" THEN 7500 1840 GOTO 7000 2000 REM PRINTER SBR 2002 PRINT "VERIFY PRINTER READINESS!" 2005 PRINT 2006 INPUT "HIT ENTER TO CONTINUE";EN 2007 B= 0:GOSUB 4000 2008 PLOT 3,14,15 2009 PRINT "** COMPUTED RESULTS ARE PRINTED **" 2014 PLOT 27,18,7:REM ...,7 = 9600 BAUD! 2016 POKE 33265,14:OUT 8,199:REM SEND TO PRINTER 2017 PLOT 27,69:REM EMPHASIZED PRINTING ON EPSON 2018 POKE 33289,120 2019 PLOT 14:PRINT "PERT ANALYSIS ICS":PRINT 2020 PRINT "THE COMPUTED RESULTS FOR FILE";PD;" ARE :" 2025 PLOT 27,70,15:REM CONDENSED PRINTING 2030 PRINT :PRINT :GOSUB 8000 2090 FOR I= 1 TO N 2095 IF I= 26 OR I= 51 OR I= 76 OR I= 101 OR I= 126 OR I= 151 OR I= 176 THEN 8100 2100 S1= F(A(I,2))- S(A(I,1))- E(I,1) 2110 S1= (INT (10^ 3* S1))/ 10^ 3 2115 PRINT "!-----!-----------!--------!--------!-----------!-----------!-----------!-----------!-----------!----------!" 2118 PRINT TAB( 1)RIGHT$ (" "+ STR$ (I),4); 2119 PRINT TAB( 7)DE$(I); 2120 PRINT TAB( 20)RIGHT$ (" "+ STR$ (A(I,1)),4); 2130 PRINT TAB( 28)RIGHT$ (" "+ STR$ (A(I,2)),4); 2140 N= E(I,1):T= 37:GOSUB 3000 2145 IF S1< = 0 THEN 2160 2150 N= S(A(I,1)):T= 49:GOSUB 3000 2160 N= F(A(I,2))- E(I,1):T= 61:GOSUB 3000 2165 IF S1< = 0 THEN 2180 2170 N= S(A(I,1))+ E(I,1):T= 73:GOSUB 3000 2180 N= F(A(I,2)):T= 85:GOSUB 3000 2190 IF S1> 0THEN N= S1:T= 97:GOSUB 3000 2200 IF S1< = 0THEN PRINT TAB( 98)"CRITICAL"; 2210 PRINT 2215 IF S1> 0 THEN 2250 2220 IF L> = F(A(I,2)) THEN 2240 2230 L= F(A(I,2)) 2240 V= V+ E(I,2) 2250 NEXT I 2255 PRINT "!-----!-----------!--------!--------!-----------!-----------!-----------!-----------!-----------!----------!" 2270 P= SQR (V):P= INT (P* 10^ 3+ .5)/ 10^ 3 2275 PRINT :PRINT 2280 PLOT 18,27,69:GOTO 1650 3000 D1= INT (N) 3010 Q= INT ((1+ N- D1)* 1000) 3020 PRINT TAB( T)RIGHT$ (" "+ STR$ (D1)+ "."+ RIGHT$ (STR$ (Q),3),8); 3030 RETURN 4000 REM ERASE PART OF PAGE 4010 FOR Y= 31 TO B STEP - 1 4020 PLOT 3,0,Y,11 4030 NEXT Y 4040 RETURN 5000 REM FILE TRAP 5010 PLOT 12,3,5,15 5020 PRINT "SORRY WRONG DISK" 5030 GOTO 160 7000 B= 0:GOSUB 4000 7010 PLOT 3,5,12 7020 INPUT "ARE OTHER TASKS TO BE PERFORMED? ";OT$ 7030 IF LEFT$ (OT$,1)= "Y" THEN 7100 7040 B= 0:GOSUB 4000 7050 PLOT 3,15,15 7060 PRINT "THANK YOU AND TOT ZIENS" 7070 PLOT 3,0,0 7080 INPUT "";EN 7090 RUN 7100 PLOT 3,5,15,29,21 7110 INPUT "INSERT PROGRAMME DISK AND HIT RETURN";P$ 7120 PLOT 29,18 7130 FILE "T",5000 7140 LOAD "MENU":RUN 7500 PLOT 12:WAIT 1,128,128:OUT 8,207:POKE 33265,0 7510 GOTO 7000 8000 REM PRINTER PAGE HEADING 8004 IF I< 25 THEN 8010 8006 PRINT :PRINT :PRINT 8010 PRINT "!-----!-----------!--------!--------!-----------!-----------!-----------!-----------!-----------!----------!" 8020 PRINT "!ACT.#!DESCRIPTION! START ! END ! EXP. ! EARLY ! LATEST ! EARLY ! MUST BE ! SLACK ! 8030 PRINT "! ! ! NODE ! NODE ! DURATION ! START ! START ! FINISH ! COMPLETED ! TIME ! 8040 RETURN 8100 PLOT 12 8110 GOSUB 8000 8120 GOTO 2100