PROGRAM LinePageCounterDirectoryAndErase; {$I LINCOUNT.INC} {$I DIR.INC} LABEL TOP; LABEL BOTTOM; VAR LI,DI : REAL; CHOICE,REPLY : CHAR; I : INTEGER; TYPE ANYSTRING = STRING [255]; {W replaces writeln for text} PROCEDURE W (MSG:ANYSTRING); BEGIN WRITELN (MSG) END; {Write SKIP (#); replaces writelns for line spacing.} PROCEDURE SKIP (LINES:INTEGER); VAR I:INTEGER; BEGIN FOR I := 1 TO LINES DO WRITELN END; {FIRST SCREEN === MAIN PROGRAM} BEGIN TOP: REPEAT CLRSCR; SKIP (6); W(' < < < LINES-PER-PAGE FORMATTER > > > '); W(' < < < And Directory With Rubout Facility > > > '); W(' -=-=-=-=-=-=-=-V.3.3-=-=-=-=-=-=-= '); W(' Copyright (c) 1987 By William A. Rhodes. '); W(' (All Rights Reserved) '); W(' Free use granted where not used or held for profit.'); W(' Instructions are on each. '); SKIP(1); W(' A: LINE COUNT v PAGES '); W(' B: DIRECTORY & RUBOUT '); SKIP(1); W(' Enter Choice or (N)o: '); GOTOXY (50,18); {puts cursor after 'Enter Choice:' above} {---------------- MENU CALL FOR ABOVE PROCEDURES -----------------} REPEAT READ (CHOICE); UNTIL UPCASE (CHOICE) IN ['A'..'Z']; CASE UPCASE (CHOICE) OF 'A': BEGIN CLRSCR; LINECOUNTER; READ (LI); END; 'B': BEGIN CLRSCR; DIRECTORY; READ (DI); END; 'N': BEGIN CLRSCR; GOTO BOTTOM; END; ELSE GOTO TOP {Returns control to MENU above.} END; {--------------REPEAT SUBROUTINE WITH FLASHING ARROW AND BEEP -------------} BEGIN FOR I := 1 TO 2 DO {for two animated repeats below} BEGIN GOTOXY (8,23); {Arrow CRT location coordinates.} W(' ==> MENU '); DELAY (100); {milliseconds} WRITE (^G); {beep} GOTOXY (8,23); W(' ====> MENU (Y/N):? '); GOTOXY (50,23); {Cursor column position same as on procedures.} DELAY (100); END; END; READ (KBD,REPLY); UNTIL REPLY IN ['N','n']; IF REPLY IN ['N','n'] THEN WRITE (REPLY); BOTTOM: END.