Un apuntador o "pointer" es una variable que contiene la direccion de almacenamiento en memoria de otra variable o de un procedure. En la siguiente imagen tenemos un ejemplo hipotético de almacenamiento en memoria.
Supongamos que tenemos una variable tipo char declarada de 70 posiciones.
A esa variable la llamaremos: mitexto char(70)
mitexto, según la siguiente imagen, comienza en la dirección de memoria:0000
Aunque en nuestro código de programación podemos manipular la varible mitexto, en realidad no sabemos en cual dirección de memoria es almacenada la data que contiene y, a decir verdad, a nadie le interesa saberlo a menos que, conocer su dirección en memoria y manipularla tuviese alguna utilidad.
En Rpgle Free la variable apuntador se declara asi: dcl-s Apuntador pointer;
En Rpg No free: D Apuntador S * //el asterisco indica que es tipo apuntador
Una variable tipo pointer puede contener la dirección en memoria de una variable o de un procedure.
Para declarar un apuntador que apunta a un procedure:
RPGLE NO Free: se agrega en la declaracion de la variable tipo apuntador la palabra clave PROCPTR
RPGLE FREE: se agrega la palabra clave POINTER(*PROC) en lugar de pointer
Un apuntador que es utilizado para "apuntar a la dirección" de una variable, una estructura de datos o a un arreglo se denomina "Basing Pointer".
Veamos algunos de los beneficios que aporta utilizar apuntadores: