Guardian Procedure Calls Reference Manual (G06.25+)
Guardian Procedure Calls (A-B)
Guardian Procedure Calls Reference Manual—522629-013
2-16
ADDRESS_DELIMIT_ Procedure
internally to identify various types of segments allocated by the operating system, such
as process stacks, global data, various kinds of code, and certain special segments.
For some kinds of segments (such as SRL or DLL code or instance data), multiple
segments in the process can have the same ID. Segment ID assignments are subject
to change from RVU to RVU; the individual values are not meaningful to typical callers
of
ADDRESS_DELIMIT_. Current definitions can be found in the following T9050
header files:
•
DMEMH, beginning after identifier LAST_VALID_SSEDS_ID and ending before
identifier
NULL_PST_SEGID.
•
DMEM, beginning after identifier LAST^VALID^SSEDS^ID and ending before
identifier
NULL^PST^SEGID.
These two header files are distributed and installed in the ZGUARD subvolume.
Example
In the following example, the address of a local variable contained in the user data
area is passed to ADDRESS_DELIMIT_. The procedure returns the addresses of the
first and last bytes of the user data area.
This example shows that the output addresses can be assigned either to a simple
variable (
LOW^ADDR) or to a pointer variable (HIGH^ADDR). After a successful call to
ADDRESS_DELIMIT_ ,
HIGH^ADDR designates the last byte of the user data area.
INT LOCAL^VARIABLE;
INT(32) LOW^ADDR;
STRING .EXT HIGH^ADDR;
INT ERROR,
ERROR^DETAIL;
.
.
.
ERROR := ADDRESS_DELIMIT_ ($XADR(LOCAL^VARIABLE),
LOW^ADDR,
@HIGH^ADDR,
! address^descriptor ! ,
! segment^ID ! ,
ERROR^DETAIL);
IF ERROR <> 0 THEN CALL ERROR^HANDLER;
Related Programming Manual
For programming information about the ADDRESS_DELIMIT_ procedure, refer to the
Guardian Programmer’s Guide.