10 '----------------------------------------------------------------- 12 REM SCHEPRNT.BAS 18 June 83 thru xx yyy 83 14 REM derived from 15 REM SCHEDULE.BAS 15 Aug thru 10 Sep 82 16 REM 18 REM Author: Hurle F. Priser 20 '----------------------------------------------------------------- 22 %INCLUDE SCHEDCOM 98 GOTO 1000 'program director 100 '-------------------------------------------- 102 REM BEGIN SUBROUTINES 104 '-------------------------------------------- 106 ' STRING PRINT ROUTINES 108 A=(80-LEN(A$))/2:PRINT TAB(A);A$:RETURN 110 A=(80-LEN(A$))/2:PRINT TAB(A);A$;:A$=INPUT$(1):RETURN 112 PRINT TAB(POS(0)-3);CHR$(11);:A$=INPUT$(1):RETURN 114 PRINT TAB(POS(0)-4);CHR$(11);:A$=INPUT$(1):X=ASC(A$)-48:RETURN 118 GOSUB 108:PRINT :PRINT TAB(25);"DO YOU WANT TO DO THIS ? (Y/N) ____";:GOSUB 112 120 PRINT:PRINT:RETURN 210 ' Print Headers 212 LPRINT TAB(37);"*** TAC TRAINING SYSTEMS CENTER Project Schedule ***" 214 LPRINT:LPRINT"Project: ";WO$;TAB(50);"Date Prepared ";DT$:LPRINT 216 RETURN 220 ' Use Arrows for Menu 222 ' ENTER: J=ROW K=NUMBER OF LELECTIONS 224 ' EXIT: M=SELECTION NUMBER A=13 226 Y=M+J:X=1:PRINT FNAT$(Y,X); 228 A$=INPUT$(1):A=ASC(A$) 230 IF A=13 THEN RETURN 232 IF A=10 THEN M=M+1:IF M>K THEN M=K 234 IF A=11 THEN M=M-1:IF M<1 THEN M=1 236 GOTO 226 1000 '--------------------------------------------- 1002 REM Program director 1004 '--------------------------------------------- 1010 GOSUB 4000 1200 CHAIN "SCHEMENU" 4000 '------------------------------------------ 4002 REM PRINT ROUTINE MANAGER 4004 '------------------------------------------ 4006 PRINT CLS$:A$="*** PRINT OUT SCHEDULE ***":GOSUB 108:PRINT:PRINT 4008 FOR I=1 TO 12:PRINT I;". ";MO$(I):NEXT I:PRINT:PRINT 4010 PRINT"Use ARROWS to select month schedule starts, then press ." 4012 J=3:K=12:GOSUB 220:I=M:M=0 4022 PRINT CLS$ :PRINT FNAT$(8,0),"":A$="*** IS PRINTER READY WITH WIDE PAPER (Y/N) ? ***" 4024 GOSUB 110:IF A$="Y" THEN 4028 ELSE M=5:GOTO 4046 4026 PRINT:PRINT:A$="PLEASE WAIT FOR PRINTER TO STOP":GOSUB 108:PRINT 4028 PRINT CLS$ 'Start of menu 4030 A$="*** PRINTER MENU ***":GOSUB 108:PRINT:PRINT:PRINT 4032 PRINT" 1. PRINT GANTT CHART":PRINT" 2. PREDECESSOR LIST" :PRINT" 3. TABLE OF VALUES" : PRINT" 4. EMPLOYEE ASSIGNMENTS" :PRINT" 5. QUIT" 4034 PRINT:PRINT"Use ARROWS to select data to print, then press !" :J=4:K=5:M=M+1:GOSUB 220:PRINT CLS$ 'USE ARROWS 4038 IF M=1 THEN GOSUB 4100:GOTO 4028 4040 IF M=2 THEN GOSUB 4200:GOTO 4028 4042 IF M=3 THEN GOSUB 4300:GOTO 4028 4044 IF M=4 THEN GOSUB 4400:GOTO 4028 4046 IF M=5 THEN RETURN 4100 '------------------------------------------- 4102 REM LINE PRINT GANTT CHART 4104 '------------------------------------------- 4106 GOSUB 210 'PRINT HEADER 4108 LPRINT:LPRINT"GANTT CHART:" 4110 LPRINT TAB(48);"***** TIME (";SF$;") *****" 4112 LPRINT:CP=LJ+1 'CRITICAL PATH COLUMN 4114 K=23:LPRINT TAB(K);MO$(I); 'FIRST MONTH 4116 K=K+DA(I) 'ADVANCE BY WORKDAYS IN MO$ 4118 I=I+1:IF I>12 THEN I=1 'WRAP AROUND 4120 LPRINT TAB(K);MO$(I);:IF K<118 THEN 4116 'REPEAT TO END OF LINE 4122 LPRINT:LPRINT"JOB";TAB(24);"0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200" 4124 LPRINT TAB(24);"+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+" 4126 FOR J=1 TO LJ 4128 LPRINT USING C$;J;:LPRINT".";J$(J);TAB(24);"I"; 4130 K=S(J,1) 'POSITION PRINT HEAD = K 4132 IF P(J,CP)=1 THEN 4152 'CRITICAL PATH JOB 4134 IF K > E(J) THEN 4142 'NO MORE X'S, GO CHECK FOR DOTS 4136 LPRINT TAB(24+K);"X"; 4138 K=K+1 : GOTO 4132 4142 IF K > S(J,2)+L(J)-1 THEN 4162 'DONE WITH DOTS, NEXT J 4144 LPRINT TAB(24+K);"."; 4146 K=K+1 4148 GOTO 4142 'PRINT ANOTHER DOT 4152 ' --- critical path job --- 4154 IF K > S(J,1)+L(J)-1 THEN 4162 'NEXT JOB 4156 LPRINT TAB(24+K);"C"; 4158 K=K+1 4160 GOTO 4154 4162 LPRINT 4164 NEXT J 4166 LPRINT:LPRINT 4168 LPRINT"LEGEND: Each X, DOT, and C is two ";SF$;" of scheduled time" 4170 LPRINT" X = TWO ";SF$;" of non-critical work to be done" 4172 LPRINT" . = Two ";SF$;" of slack time available" 4174 LPRINT" C = Two ";SF$;" of CRITICAL work time scheduled" 4176 LPRINT CHR$(12):RETURN ' FORM FEED 4200 '---------------------------------------------- 4202 REM LINE PRINT PREDECESSOR LIST 4204 '---------------------------------------------- 4206 GOSUB 210 'PRINT HEADER 4208 LPRINT:LPRINT :LPRINT"----- JOBS ----------";TAB(30);"----- PREDECESSORS ------":LPRINT 4210 FOR J=1 TO NJ-1:LPRINT J;". ";;J$(J); 4212 FOR K=1 TO NJ:IF P(J,K)=1 AND K<>LJ+1 THEN LPRINT TAB(30);K;". ";J$(K) 4214 NEXT K:NEXT J 4216 LPRINT CHR$(12):RETURN 'FORM FEED 4300 '------------------------------------------- 4302 REM LINE PRINT TABLE OF VALUES 4304 '------------------------------------------- 4306 GOSUB 210:LPRINT 'HEADER 4308 LPRINT"TIME OF COMPLETION FOR ";WO$;" = ";(C-1)*2 4310 LPRINT TAB(34);"---- STATISTICS -----" 4312 LPRINT"JOB";TAB(24);"LENGTH";TAB(34);"EARLY"; 4314 LPRINT TAB(44);"LATE";TAB(54);"END";TAB(64);"SLACK" 4316 LPRINT 4318 FOR J=1 TO LJ 4320 LPRINT USINGC$;J;:LPRINT".";J$(J);TAB(24);L(J)*2;TAB(34);S(J,1)*2; 4322 LPRINT TAB(44);S(J,2)*2;TAB(54);E(J)*2;TAB(64);(S(J,2)-S(J,1))*2 4324 NEXT J 4326 LPRINT CHR$(12) 'FORM FEED 4328 RETURN 4400 '------------------------------------------ 4402 REM LINE PRINT EMPLOYEE ASSIGNMENTS 4404 '------------------------------------------ 4406 GOSUB 210:LPRINT 'HEADER 4408 LPRINT"*********** EMPLOYEE ASSIGNMENTS FOLLOW: *************" 4410 LPRINT:LPRINT :LPRINT"---- JOBS ----";TAB(30);"----PERSONNEL ASSIGNED----" 4412 LPRINT:FOR J=1 TO NJ-1:LPRINT J;". ";J$(J);TAB(30);"___________________________" 4414 REM for additional code 4416 LPRINT:NEXT J 4418 LPRINT CHR$(12) 'FORM FEED 4420 RETURN 10000 END _________________" 4414 REM for additional code