language-Modula2-0.1: examples/Modula-2_Libraries/andrea-m2/examples/eth-hamburg/blockio_1.mod
MODULE FileCopy;
(*
show an example of using BlockIO,
copy from one file to another,
then use VMS DIFFERENCE to make sure they are the same
use this to copy .EXE files because the file type created by the OpenOut
procedure is the same as for .exe files
*)
(* J. Andrea, July 1991 *)
(* This code may be freely used and distributed, it may not be sold. *)
FROM InOut IMPORT WriteCard, WriteString, WriteLn, ReadString, ReadLn;
FROM BlockIO IMPORT BlockFile, OpenIn, OpenOut, Read, Write, Close, Done;
VAR
inf, outf :BlockFile;
infile,outfile :ARRAY [0..80] OF CHAR;
block :ARRAY [0..511] OF CHAR;
count, size :CARDINAL;
i, j, n :CARDINAL;
BEGIN (* Test *)
WriteString( ' input file ? ' );
ReadString( infile ); ReadLn;
WriteString( ' output file ? ' );
ReadString( outfile ); ReadLn;
OpenIn( inf, infile );
IF Done() THEN
OpenOut( outf, outfile );
IF Done() THEN
count := 1;
Read( inf, count, block, size );
WHILE Done() DO
WriteCard( count, 1 ); WriteString( ' block = ' );
WriteCard( size, 1 ); WriteString( ' bytes.' ); WriteLn;
Write( outf, count, block, size );
count := count + 1;
Read( inf, count, block, size );
END;
Close( outf );
ELSE
WriteString( 'output file not opened' ); WriteLn;
END;
Close( inf );
ELSE
WriteString( 'input file not opened' ); WriteLn;
END;
END FileCopy.