Accessing Files Programmer's Guide (32650-90885)

220 AppendixA
Pascal/XL Program Examples
Program Example A-3
end; { end write_user_label }
procedure copy_oldfile_to_newfile
(
new_discfile : integer;
old_discfile : integer
);
{************************************************************************}
{ procedure copy_oldfile_to_newfile gets EOF of old file & assigns record}
{ pointer to that value. In a loop, sequentially reads from old file; }
{ random access writes to new file. }
{************************************************************************}
var
rec : integer;
inbuf : pac256;
end_of_file : boolean;
read_length : integer;
begin
{**Locate the EOF in old disk file** }
end_of_file := false; { initialize loop control variable }
rec := 0;
FGETINFO (old_discfile,,,,,,,,,, rec);
if ccode = ccl then
handle_file_error (old_discfile, 3);
repeat
{**Copy the records in the reverse orders from old disk file**}
{**to the new disk file** }
read_length := FREAD (old_discfile, inbuf, 128);
if ccode = ccl then
handle_file_error (old_discfile, 4)
else
if ccode = ccg then
end_of_file := true
else
begin
rec := rec - 1; { decrement record pointer }
FWRITEDIR (new_discfile, inbuf, 128, rec);
if ccode <> cce then
handle_file_error (new_discfile, 5);
end
until end_of_file { check control variable EOF }
end; { end copy_oldfile_to_newfile }
procedure close_disk_file
(
file_num : integer;
disp : integer
);