Los field symbols son marcadores de posición hacia un área de memoria determinada (similar a los punteros de C), con ellos podemos hacer referencia a cualquier variable u objeto sin importar el tipo de dato e incluso sin conocer el nombre del objeto con el que vamos a trabajar hasta que estemos en tiempo de ejecución.

Como se usan los field symbols

Para usar field symbols solo necesitamos declararlos y luego asignarlos usando una variable existente.

"Declaracion.
FIELD-SYMBOLS <var1>.

"Alguna variable para asignar
DATA var1 TYPE i.
var1 = 5.

"Asginacion de valor al field symbol.
ASSIGN var1 TO <var1>.

"Ahora el field symbol comparte el contenido
"con la variable que le asignamos
WRITE: / <var1>.

Algo más que hay que notar es que ahora <var1> y var1, comparten la misma posición en la memoria RAM, si modificas algo en cualquiera de las dos, entonces el valor en modifica en ambas.

"Declaracion.
FIELD-SYMBOLS <var1>.

"Alguna variable para asignar
DATA var1 TYPE i.
var1 = 5.

"Asginacion de valor al field symbol.
ASSIGN var1 TO <var1>.

"Ahora el field symbol comparte el contenido
"con la variable que le asignamos
WRITE: / <var1>.

"Ahora las modificaciones afectan ambas variables
<var1> = 6.
WRITE: / var1.

Asignar variables a field symbol sin conocer el nombre de la variable

Si no conocemos el nombre de la variable u objeto que deseamos asignar al field symbol, podemos utilizar una variable con una cadena de texto, de esta forma:

"Declaracion.
FIELD-SYMBOLS <var1>.

"Alguna variable para asignar
DATA var1 TYPE i.
data nombre_var TYPE char10.

var1 = 5.
nombre_var = 'VAR1'.

"Asginacion de valor al field symbol.
ASSIGN (nombre_var) TO <var1>.

"Ahora el field symbol comparte el contenido
"con la variable que le asignamos
WRITE: / <var1>.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *