MODULE ConvertCardTableToChrTable; (* This program is used for converting the CARDINAL form of LEX tables to CHAR form. The latter is the file read in by PIC when it loads up the internal tables. This program needs to be run every time the CARDINAL table or tables are changed. *) IMPORT Terminal; FROM FileSystem IMPORT File,Done,Create,Open,Close, ReadChar, WriteChar, Name; FROM InOut IMPORT in, out, OpenInput, OpenOutput, CloseInput, CloseOutput, ReadLn, ReadCard, WriteLn, WriteCard, Write, WriteString; CONST Maxrow = 27; Maxcol = 21; VAR infile, outfile: ARRAY [1..80] OF CHAR; Ans : CHAR; PROCEDURE Transfer( infile : ARRAY OF CHAR (* in *); outfile : ARRAY OF CHAR (* in *) ); VAR lexout : File; i, j, k : CARDINAL; savein : ARRAY [1..60] OF CHAR; BEGIN (* save input and output file names so that they can be restored *) Name( in, savein ); WriteString("Opening "); WriteString( infile ); WriteString( " and " ); WriteString( outfile ); WriteLn; Close( in ); Open( in, infile, FALSE ); IF NOT Done( ) THEN WriteString("Could not open "); WriteString( infile ); WriteLn; HALT END; Open( lexout, outfile, TRUE ); IF NOT Done( ) THEN Create( lexout, outfile, TRUE, TRUE ); IF NOT Done( ) THEN WriteString( "Trouble creating " ); WriteString( outfile ); WriteLn; HALT; END; END; FOR j := 1 TO Maxrow DO FOR i := 1 TO Maxcol DO ReadCard( k ); WriteChar( lexout, CHR( k )); (* write to file 'out' *) WriteCard( k, 2 ); Write( ' ' ); END; ReadLn; WriteLn; END; Close( lexout ); Close( in ); (* restore in to original file *) Open( in, savein, FALSE ) END Transfer; BEGIN Terminal.WriteString( "Infile (.tab ) >" ); Terminal.ReadString( infile ); Terminal.ReadLn; Terminal.WriteString("outfile (.chr ) >" ); Terminal.ReadString( outfile ); Terminal.ReadLn; Terminal.WriteLn; Transfer( infile, outfile ) END ConvertCardTableToChrTable.