HPlogo Accessing Files Programmer's Guide > Chapter 11 Accessing a File Using Mapped Access

Opening a File Mapped

MPE documents

Complete PDF
Table of Contents
Index

E0300 Edition 6 ♥
E0692 Edition 5

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;




How to Access a File Mapped


New Intrinsics