Buenos d�as queridos compa�eros:
 
Se me plantea la siguiente cuesti�n nada f�cil de resolver en RPG.
 
Normalmente el programador cuando escribe un programa, conoce
el nombre de los campos de un fichero,  variables, etc.
y con ellos indica las operaciones a ejecutar, MOVE, EVAL, etc.
 
Tengo una subrutina a la que le llega un nombre de campo de un fichero. El resultado que
tiene que devolver es el contenido de ese campo (de un fichero conocido).
 
La subrutina podria ser:
 
Subrutina    BEGSR
             select
             when    NombreCampo='NOMBRE'
             eval    Resultado=NOMBRE
             when    NombreCampo='CODIGO'
             eval    Resultado=CODIGO
             when    NombreCampo='CAMPO1'
             eval    Resultado=CAMPO1
                           . . .
             when    NombreCampo='CAMPO_n'
             eval    Resultado=CAMPO_n
             other
             clear             Resultado
             endsl
             ENDSR
 
Pues bien, si a este fichero se le a�aden uno o m�s campos esto nos obligar�a
a retocar esta subrutina para contemplar los nuevos campos. Y si la adici�n de campos
a este fichero es frecuente te pasas la vida retocando la dicha subrutina.
 
La soluci�n que ando buscando -si es posible- es la da poder mover el contenido
de una variable cuyo nombre est� contenido en otra variable. Creo que en ensamblador esto se llamaba acceso indirecto.
Puestos a pedir necesitar�a una nueva funci�n, llam�mosla %Valor, de manera que la subrutina
puediera quedar as�:
 
Subrutina    BEGSR
             eval    Resultado=%Valor(NombreCampo)
             ENDSR
 
O si a la operacion eval puediera ejecutar operaciones contenidas en un campo alfanumerico
se podr�a escribir:
 
Subrutina    BEGSR
             eval    Ejecutar='MOVE ' *cat NombreCampo *cat 'Resultado'
             eval    Ejecutar
             ENDSR
 
 
Un saludo a todos y perdonad la extensi�n de la consulta. Gracias anticipadas.
             
                         

Responder a