HPlogo Accessing Files Programmer's Guide: HP 3000 MPE/iX Computer Systems > Chapter 9 Reading from a File

Reading From a Magnetic Tape File

» 

Technical documentation

Complete book in PDF
» Feedback

 » Table of Contents

 » Index

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.

Feedback to webmaster