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>.