|
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
ENDSRUn saludo a todos y
perdonad la extensi�n de la consulta. Gracias anticipadas.
|
