HP OpenVMS Systemsask the wizard |
The Question is: how can i make a global section in pascal - how i have to make the alignment . The Answer is :
You can create the global section in Pascal the same way you make
it in every other OpenVMS language, by calling the $crmpsc system
service. You will want to become familiar with the parameter passing
of your particular language, as well as with the OpenVMS Calling
Standard -- once you understand this, calling most any service will
be simple.
If you have a software support contract for Pascal, you can use the
database available via the support network or the Compaq Support Center
to acquire various example programs in the prefered language(s). A
full C example of working with global sections is available at the
Ask The Wizard website.
As for alignment of sections on OpenVMS Alpha systems, "if you do not
set the SEC$M_EXPREG flag, the inadr argument specifies the starting
and ending virtual addresses of the region to be mapped. Addresses in
system space are not allowed. The addresses must be aligned on
CPU-specific pages; no rounding to CPU-specific pages occurs. The
lower address of the inadr argument must be on a CPU-specific page
boundary and the higher address of the inadr argument must be 1 less
than a CPU-specific boundary, thus forming a range from lowest to
highest address bytes. You can use the SYI$_PAGE_SIZE item code in
the $GETSYI system service to set the inadr argument to the proper
values."
The core relevent portion of the Pascal code necessary to use the
$crmpsc system service follows:
...
VAR my_adr, sys_adr: ARRAY [1..2] OF int_pointer;
...
(* Create and map the temporary global section *)
name := 'GSEC';
sec_flags := SEC$M_flag + SEC$M_flag + SEC$M_flag;
sys_stat:= $CRMPSC( my_adr, sys_adr,, sec_flags, name,,,
0, 1,,,);
...
|