IBM i pointer Types

The IBM® i pointer types are:
Open
Pointers that can hold any of the other pointer types
Space
Generic pointers to data objects.
Function
System pointers to *PGM objects or procedure pointers to bound ILE procedures.
System
Pointers to system objects such as queues, indexes, libraries, and *PGM objects.
Label
Pointers to fixed locations within the executable code of a procedure or function.
Invocation
Pointers to process objects for procedure (function) calls under ILE, or program calls under EPM or OPM.
Suspend
Pointer to the location in a procedure where control has been suspended.
These pointer types, as well as pointers to data objects and incomplete types, are not data-type compatible with each other. For example, a variable declared as a pointer to a data object cannot be assigned the value of a function pointer or system pointer. A system pointer cannot be compared for equality with an invocation pointer or pointer to a data object. The above is not true for open pointers.
Note:
  • Label pointers are only used by the setjmp macro.
  • An open pointer is a pseudo-pointer type. It may contain any other pointer type, but it is not a pointer type unto itself.