PROGRAM Scan2Evaluation; (* * PROGRAM TITLE: Scan 2 Evaluation * WRITTEN BY: Raymond E. Penley * DATE WRITTEN: 4 January 1980 * 11 June 1980 slightly modified for * Pascal/Z vers 3.0 * * PURPOSE: * This is an evaluation of a File read routine I call: * "SCAN-2". SCAN-2 provides to the calling * program TWO characters; * A current character (currchar) and * a look-ahead char (nextchar). * *) CONST prompt = '?'; space = ' '; fill = ' '; DisplayLines = 12; FID_LENGTH = 14; {---Maximum length for a file name---} TYPE charname = (lletter, uletter, digit, blank, quote, atab, EndOfLine, FileMark, otherchar ); charinfo = RECORD name : charname; valu : char END; STR0 = STRING 0; STR255 = STRING 255; STRING80 = STRING 80; FID = STRING FID_LENGTH; {---FILE IDENTIFIER TYPE---} VAR xeof, (* EOF status AFTER a read *) xeoln : boolean; (* EOLN status AFTER a read *) count : integer; (* line counter *) LooK, (* Look-ahead character *) Ch : CHAR; (* temp usage char *) currchar, (* Current operative character *) nextchar : CharInfo; (* Next character to be operated on *) FileID : FID; (* File IDentifier *) tab : char; (* ASCII tab character *) ft : Text; (* File Control Block *) FUNCTION LENGTH(X: STR255): INTEGER; EXTERNAL; PROCEDURE SETLENGTH(VAR X: STR0; Y: INTEGER); EXTERNAL; PROCEDURE GETID( Message : STRING80; VAR ID: FID ); CONST SPACE = ' '; begin SETLENGTH(ID,0); writeln; write(message); READLN(ID); WHILE LENGTH(ID)filemark) do begin(* processing char *) count := 0; Header; REPEAT count := count +1; Display; GetC(nextchar, currchar); UNTIL (count=DisplayLines) or (CurrChar.name=filemark); PAUSE; writeln; end(* of processing *); writeln('Normal file termination'); end(* else *); WRITELN('That''S all!'); end(*---of SCAN-2 eval---*). .