Accessing Files Programmer's Guide (32650-90885)

146 Chapter11
Accessing a File Using Mapped Access
New Intrinsics
{** 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;
New Intrinsics
The following intrinsics have been added to make dealing with user mapped files simpler.
The intrinsics provide for basic pointer manipulation, data movement and memory
initialization. These intrinsics safely hadle all cross-SID buffer problems, removing the
user from having to deal with these situations. These intrinsics can be safely used on
long-mapped or large-mapped files.
HPFADDTOPOINTER
NM callable only.
This routine can be used to perform arithmetic on a 64-bit pointer value. Byte offsets can
be added to or subtracted from a pointer by specifying eithger a positive or negative offset
value.
Syntax
@64 I64 @64 I32
HPFADDTOPOINTER(base_ptr,
offset
,
return_ptr
,
status
,
Parameters
base_ptr
64-bit pointer by reference (required)
The base_ptr can be a 64-bit pointer to an object of any type.
offset
64-bit signed integer by reference (required)
The offset can be any positive or negative value. Specifying a positive
value will move the return_ptr forward from the previous base_ptr, while a
negative value will move the return_ptr backward from the base_ptr.