Hola, a nivel de conocimiento sobre field symbol, puede suceder que ejecutando un programa que los use al momento de traer la informacion esta varie en uan de sus ejecuciones, por decir, si trae un texto este puede traer otro erroneamente, como son apuntadores de memoria.
Si haces la asignacion correctamente no deberia pasar, pues cuando tratas de leerlo, si aun no ha sido asignado te saltara un error de ejecucion. Ademas es recomendable que al momento de declararlo se le asigne el tipo de dato que va a traer por lo que solo recibira ese tipo de dato. Lo que tu dices seria posible en programacion dinamica con un tipo any, donde el error seria a nivel de programacion cuando lo asignas a un valor erroneo.
Los field symbols, no son punteros realmente, se podría decir que trabaja igual que un puntero ya que direccionan como un puntero, por ejemplo al realizar un loop el field symbol direcciona a la estructura recorrido (memoria interna, no BD), pero no direccionan a la memoria (lo que hace un puntero en BD), por ende no es posible que quede “sucio” al ser ejecutado varias veces.
Es probable que el field-symbol es usado mas de una vez en el programa, al usar mas de una vez un field symbol es conveniente que despues de uso, al finalizar el recorrido (poniendo como ejemplo el loop) desasignarlo con la sentencia UNASSING (creo que era así jaja).
No traería valor incorrecto, pero debes poner atención en qué registro estás leyendo de la tabla interna, tanto si la lees con un loop assign o con un read table. Hay que tener en cuenta que se esté accediendo de manera única con los campos de la clave primaria.