10 '----------------------------------------------------------------- 12 REM SCHEPRED.BAS 18 June 83 thru 10 Jul 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 driver 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 200 '----------------- CONTROL SUBROUTINES ----------------------- 202 ' Expand predecessor table 204 FOR J=1 TO NJ:P(J,A)=P(J,B):P(J,B)=P(J,C):P(J,C)=P(J,D):NEXT J 'COLUMNS 206 FOR K=1 TO NJ:P(A,K)=P(B,K):P(B,K)=P(C,K):P(C,K)=P(D,K):NEXT K 'ROWS 208 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 238 ' Up/Down arrows to select predecessor 240 PRINT FNAT$(16,0);"Select PRED."; :SW=0:A$=INPUT$(1):IF A$="K" GOTO 250 'KEEPER 242 IF A$="N" THEN SW=0:GOTO 254 'SET SWITCH, SET K=J-1 244 A=ASC(A$):IF A<10 OR A>11 THEN 240 246 IF A=11 THEN GOTO 264 'UP ARROW 248 IF A=10 THEN GOTO 274 'DOWN ARROW 250 P(J,K)=1:GOSUB 290 'FLAG ERROR 252 GOTO 274 254 LET K=J 'SET UP STARTING K FOR NEXT JOB J 256 IF K<1 THEN K=NJ 258 IF K=NJ-1 THEN K=NJ 'END CAN'T PRECEDE ANYTHING 260 IF J=LJ+1 AND K=NJ THEN K=1 'PREVENT NONE FOLLOWING END 262 SW=1:RETURN 264 K=K-1:IF K<1 THEN K=NJ 266 IF K=NJ-1 THEN K=LJ 'CAN'T BE PRECEEDED BY "END" 268 IF K=J THEN 264 'CAN'T PRECEDE ITSELF 270 IF J=LJ+1 AND K=NJ THEN K=LJ 'PREVENT END BEFORE NONE 272 SW=0:RETURN 274 K=K+1:IF K>NJ THEN K=1 276 IF K=NJ-1 THEN K=NJ 'CAN'T BE PRECEEDED BY "END" 278 IF K=J THEN 274 'CAN'T PRECEDE ITSELF 280 IF J=LJ+1 AND K=NJ THEN 274 'END CAN'T PRECEDE NONE 282 SW=0:RETURN 290 ' Check for predecessor errors 292 RETURN 'needs development 1000 '-------------------------------------------------- 1002 REM PROGRAM DIRECTOR 1004 '-------------------------------------------------- 1040 IF M=3 THEN P$="S" :GOSUB 2300:M=4:GOTO 1200 'SELECT ALL PREDECESSORS 1100 IF M=8 THEN P$="C" :GOSUB 2300:M=4:GOTO 1200 'CHANGE A PREDECESSOR 1200 CHAIN "SCHEMENU" 2300 '----------------------------------------- 2302 REM SELECT PREDECESSORS 2304 '----------------------------------------- 2400 PRINT CLS$ :A$="*** SELECT PREDECESSOR JOBS USING ARROWS ***":GOSUB 108:PRINT 2402 IF P$="S"THEN 2406 2404 IF P$="C"THEN 2500 2406 PRINT CLS$:A$="*** SELECT ALL PREDECESSORS ***":GOSUB 108:PRINT 2408 GOSUB 2626:GOSUB 2604:GOSUB 2610 2410 FOR J=1 TO LJ+1:GOSUB 2616:NEXT J 2412 RETURN 2500 PRINT CLS$ :A$="*** CHANGE PREDECESSORS FOR SELECTED JOBS ***" :GOSUB 108:PRINT:GOSUB 2626 2502 PRINT FNAT$(12,0);"ENTER JOB # YOU WANT TO CHANGE: ";:INPUT J 2504 FOR K=1 TO NJ:P(J,K)=0:NEXT K:K=NJ 2506 GOSUB 2604 2508 GOSUB 2616 2510 PRINT FNAT$(14,0);B$ :PRINT FNAT$(14,0);:PRINT"*** ARE YOU DONE (Y/N) ____";:GOSUB 112 2512 PRINT:IF A$="N" THEN PRINT FNAT$(12,0);B$:GOTO 2502 2514 RETURN 2600 ' ------------ SELECT PRED. SUBROUTINES ------------ 2602 ' Menu Line 2604 PRINT FNAT$(20,0);"K=KEEP pred., N=NEXT job, Arrows select predecessors" 2606 RETURN 2608 ' Zero entire predecessor table 2610 FOR J=1 TO NJ:FOR K=1 TO NJ:P(J,K)=0:NEXT K:NEXT J 2612 J=1:K=NJ:RETURN 2614 ' Main Routine 2616 PRINT FNAT$(14,0);B$:PRINT FNAT$(14,0);J;". JOB = ";J$(J) 2618 PRINT FNAT$(12,0);B$:PRINT FNAT$(12,0);K;". PREDECESSOR = ";J$(K) 2620 GOSUB 238 'CHECK ARROWS 2622 IF SW=0 THEN GOTO 2618 'LIST NEXT PRED OPTION 2624 RETURN 2626 PRINT TAB(8);"PREDECESSOR; Jobs that must be completed before next job starts" 2628 PRINT TAB(8);"JOB: Jobs for which predecessors are being selected.":PRINT 2630 PRINT"To SELECT a desired PREDECESSOR, us UP-DOWN arrows." 2632 PRINT"When desired predecessor appears, press to KEEP it." 2634 PRINT"When all desired PREDECESSORS have been selected with , then" 2636 PRINT"press for NEXT job or choice.":PRINT 2638 RETURN 10000 END REDECESSORS have been selected with , then" 2636 PRINT"press for NEXT job