HPlogo Accessing Files Programmer's Guide: HP 3000 MPE/iX Computer Systems > Chapter 11 Accessing a File Using Mapped Access

Opening a File Mapped

» 

Technical documentation

Complete book in PDF
» Feedback

 » Table of Contents

 » Index

Example 11-1 illustrates how a file is created and opened with short-mapped access. This HP Pascal/XL program segment opens the file, then writes data to the file with assignments to the array structure. The procedure then sets the EOF and closes the file.

The file is then reopened short-mapped, and data is retrieved before the file is closed and purged.

Example 11-1. Opening a Mapped File

   procedure Mapped_File_Example; 

   type

     record_t = record               {** defines an 80-byte record **} 



                  a_record : packed array [1..80] of char; 

                end; 

     file_t = array [1..50000] of record_t; 

                                     {** define a 4,000,000 byte array **}

   var 

     access,domain       : integer; 

     dummy               : shortint; 

     file_name           : packed array [1..20] of char; 

     file_number         : integer; 

     file_ptr            :^file_t; {** pointer to the file **} 

     filesize            : integer; 

     index, rec          : integer; 

     create_domain_perm  : integer;

     read_write_access   : integer;

     domain_old          : integer;

     status              : record 

                             case integer of 

                               0:    (all:    integer); 

                               1:    (info:   shortint; 

                                      subsys:  shortint); 

                           end; 

   const 

     file_name_option     =   2;

     domain_option        =   3;

     filesize option      =  35;

     short_mapped_option  =  18;

     access_type_option   =  11;

   
   begin 

                   {** initialize item values for the HPFOPEN **}

        file_name           := '%EXAMPLE%'; 

        create_domain_PERM  := 4; 

        domain_OLD          := 3; 

        filesize            := 15265; 

        read_write_access   := 4; 



                    {** create a short-mapped file **}

        HPFOPEN ( 

                  file_number, status, 

                  file_name_option, file_name

                  domain_option,create_domain_PERM,

                  filesize option, filesize, 

                  short_mapped_option, file_ptr, 

                  access_type_option, read_write_access, 

                ); 

                    {** put some data into the file **} 

        for rec := 1 to 100 do 

             for index := 1 to 80 do 

                  file_ptr^[rec].a_record[index] := 

                            Chr (((rec - 1) Mod 26) + 65); 



                       {** set the logical record pointer **}

        FPOINT (file_number, 33); 

        FCONTROL (file_number, 6, dummy);        {** set the EOF **} 

        FCLOSE (file_number, 0, 0);            {**close the file **} 



                          {** re-open the same short-mapped file **} 

        HPFOPEN ( 

                  file_number, status, 

                  file_name_option, file_name,

                  domain_option, domain_OLD,

                  short_mapped_option, file_ptr, 

                ); 



                          {** retrieve some data you put in file **} 

        for rec := 1 to 100 do 

        begin 

             write ('Record-', rec:4, ' '); 

             for index := 1 to 20 do 

                  write (file_ptr^[rec].a_record[index]; 

             writeln; 

        end; 

                                    {** close and purge the file **} 

        FCLOSE (file_number, 4, 0); 

   end; 
Feedback to webmaster