Example 9-4 is an HP Pascal/iX code segment 
that reads records sequentially from an unlabeled magnetic tape file (indicated 
by variable tape_file_num) and uses FWRITE to write them to a disk file 
(indicated by variable disk_file_num).  The operation is performed in a loop.  
The loop ends when the FREAD intrinsic encounters an EOF marker on the tape 
(indicating the end of the tape file).
Example 9-4. Reading From a Magnetic Tape File
procedure copy_tape_to_disk_file;
var
   record          : packed array [1..30] of char; {declare record         }
   end_of_file     : boolean;                      {declare exit condition }
   record_length   : shortint;                     {size of record read    }
   length          : shortint;                     {declare parameter      }
   control_code    : 0..65535;                     {declare parameter      }
begin
   end_of_file := false;                          {initialize exit condition}
   control_code := 0;                             {initialize to default    }
   length := -80;                                 {size of record to be copied}
   repeat                                         {loop until exit condition}
      record_length := FREAD (tape_file_num, record, length);
      if ccode = ccl then
         handle_file_error (tape_file, 3)
      else
         if ccode = ccg then                {FREAD returns ccg if EOF     }
         end_of_file := true                {exit condition encountered   }
         else
           begin
              FWRITE( disk_file_num,        {identity returned by HPFOPEN }
                      record,               {read from tape_file_num      }
                      record_length,        {actual size of record        }
                      control_code          {default                      }
                    );
              if ccode <> cce then         {check condition code for error}
              handle_file_error (disk_file, 5);
           end
      entil end_of_file;
end;                                                  {end procedure      }
 | 
If an error is encountered by either FREAD or FWRITE, procedure 
handle_file_error is invoked.  For more information about FREAD intrinsic 
parameters, refer to the MPE/iX Intrinsics Reference Manual (32650-90028).  For 
more information about the FWRITE intrinsic, refer to chapter 8, "Writing to a 
File".  In appendix A, "HP Pascal/iX Program Examples", example A-1 uses a 
similar procedure to copy records from a tape file to a disk file.