Try OpenEdge Now
skip to main content
ABL Reference
ABL Syntax Reference : SET-POINTER-VALUE statement
 

SET-POINTER-VALUE statement

Sets a variable of type MEMPTR to the value of a particular memory location.
Note: Does not apply to SpeedScript programming.

Syntax

SET-POINTER-VALUE ( memptr-var ) = memptr-value
memptr-var
A reference to a variable defined as MEMPTR.
memptr-value
An integer that represents a memory location.

Example

The following example calls a DLL routine that returns a pointer to a structure, extracts an address at byte 5 of the structure, uses SET-POINTER-VALUE to assign the address to an ABL MEMPTR, and displays the character string at the address:
DEFINE VARIABLE person_struct AS MEMPTR NO-UNDO. /* pointer to structure */
DEFINE VARIABLE name          AS MEMPTR NO-UNDO. /* pointer to name */

SET-SIZE(person_struct) = 8.

RUN person_info (OUTPUT person_struct).
SET-POINTER-VALUE(name) = GET-LONG(person_struct,5).
DISPLAY GET-STRING(name,1) FORMAT "x(50)".
SET-SIZE(person_struct) = 0.

PROCEDURE person_info EXTERNAL "person.dll" PERSISTENT:
DEFINE OUTPUT PARAMETER person_struct AS MEMPTR.
END PROCEDURE.

Notes

*SET-POINTER-VALUE is particularly useful when accessing Windows Dynamic Link Library (DLLs) or UNIX shared library routines from ABL. For more information on DLLs, see the chapter on DLLs in OpenEdge Development: Programming Interfaces.
*For more information on the MEMPTR data type, see OpenEdge Development: Programming Interfaces.

See also

GET-POINTER-VALUE function, SET-SIZE statement