home *** CD-ROM | disk | FTP | other *** search
- {$C+ generate CTRL-C check in code }
- {$E+ generate code for line numbers in error messages }
- {$M+ generate checks for multiply/divde }
- {$S+ enable stack overflow checking code }
- {$R+ enable range/bound checking }
- {$U+ enable parameter bound checking }
-
- PROGRAM CLEANPRT;
-
- CONST
-
- {$ICONSTS.PAS }
-
- LF = 10;
-
- NAMELEN = 8;
- FILENAMELEN = 14;
- EXTIN = '.LET';
- EXTOUT = '.CLN';
- MAXLINE = 255;
-
-
- TYPE
-
- {$ITYPES.PAS }
-
- NAMETYPE = STRING NAMELEN;
- FNTYPE = STRING FILENAMELEN;
-
-
-
-
- VAR
-
- INFILENAME, OUTFILENAME: FNTYPE;
- INFILE, OUTFILE: TEXT;
-
- BADCHRCOUNT,
- LINES: INTEGER;
-
-
-
- {$IPROCS.PAS }
- {$IGETFILES.PAS }
-
-
-
-
-
-
- PROCEDURE CLEANCOPY;
- VAR C,I,J: byte;
- CH : CHAR;
- LINE: string maxline;
-
-
- procedure writeline;
- begin {* writeline *}
- lines := succ(lines);
- setlength(line,i);
- writeln(outfile,line);
- i := 0;
- setlength(line,maxline);
- end; {* writeline *}
-
-
- BEGIN {* CLEANCOPY *}
- I := 0;
- setlength(line,maxline);
- REPEAT BEGIN
- IF eoln(infile) then begin
- readln(infile,ch);
- writeline;
- end
- else begin
- i := succ(i);
- read(infile,line[i]);
- c := ord(line[i]);
- IF C > 127 THEN BEGIN { Turn off high bit if left on }
- c := c - 128;
- line[i] := chr( c );
- end;
- if (C<32) or (C=127) then begin
- case C of
-
- TAB: begin { assume tab every eighth column }
- if (i mod 8) = 0 then begin
- for j := i to (i+7) do begin
- Line[j] := blank;
- end;
- i := i + 8;
- end
- else begin
- while (i mod 8) <> 0 do begin
- Line[i] := blank;
- i := succ(i);
- end;
- end;
- Line[i] := blank;
- end;
-
- LF: begin { discard if at beginning of line }
- { else insert CR. }
- i := pred(i);
- if i>1 then begin { assume end of record }
- i := pred(i);
- writeline;
- end;
- end;
-
- CR: begin { assume eoln, LF case above will catch }
- { following line-feed }
- i := pred(i);
- writeline;
- end;
-
- FF: begin { pass this through - recognize as eoln }
- writeline;
- end;
-
- ELSE:begin
- Line[i] := blank;
- BADCHRCOUNT := SUCC(BADCHRCOUNT);
- writeln('Unusual Character: CHR(',C:3,'), line:',
- LINES:0);
- end;
- end; { case C of }
- end;
- end;
- END UNTIL EOF(INFILE);
- END; {* CLEANCOPY *}
-
-
-
-
-
-
- BEGIN {* CLEANPRT *}
-
- { OPEN FILES UP }
-
- GETFILENAMES(EXTIN,EXTOUT);
- WRITELN('READING FROM ',INFILENAME);
- RESET(INFILENAME,INFILE);
- IF EOF(INFILE) THEN BEGIN
- WRITELN(INFILENAME,' IS EMPTY.');
- END
- ELSE BEGIN
- WRITELN('WRITING TO ',OUTFILENAME);
- RESET(INFILENAME,INFILE);
- REWRITE(OUTFILENAME,OUTFILE);
-
- { COPY INPUT TO OUTPUT WHILE CLEANING UP BAD CHARACTERS }
-
- LINES := 0;
- BADCHRCOUNT := 0;
- CLEANCOPY;
-
- { TELL 'EM THAT YOU ARE DONE }
-
- WRITELN('DONE. ');
- WRITELN(' ',LINES:0,' RECORDS CLEANED.');
- WRITELN(' ',BADCHRCOUNT:0,' UNUSUAL CHARACTERS FOUND.');
- END;
-
- END. {* CLEANPRT *}
-