En un artículo anterior,
al comenzar la edición de este blog, hice mención a varias recomendaciones a
como usar los indicadores.
En esta oportunidad vamos
a mencionar formas arcaicas o en desuso de los indicadores porque me lo han
pedido en los últimos comentarios del blog.
Vamos a enfocarnos en:
Como NO utilizar los indicadores.
Hemos visto a
programadores de RPG II y RPG III utilizar indicadores de esta forma:
N31N45N78 Move 1
VARIABLE
Algunas variaciones más monstruosas
sobre el mismo tema.
N31N45N78
Or
N78 78N90 Move 1 VARIABLE
Lo peor es que cuando
incursionan en la programación con RPG IV conservan la misma forma arcaica de
programar.
Luego de un tiempo el
mismo programador no recuerda que diablos significa N31 N45 N78 y debe comenzar a realizar un análisis
“forense” hasta dar con el concepto que involucra cada indicador.
Con RPG IV o con RPG FREE
podemos declarar variables tipo Booleana en la hoja ‘D’ .Se declara tipo ‘n’ y
listo!.
Por ejemplo si el
indicador 31 indica que se aprobó el préstamo del cliente.
¿Por qué no declarar una
variable tipo booleana? Una variable llamada:
Prestamo_Aprobado.
Podemos hacer: Prestamo_Aprobado = *On
o Podemos hacer: Prestamo_Aprobado = *Off
Y luego preguntar: If Prestamo_Aprobado
¿Es más sencillo y claro
de entender verdad?
Otro uso arcaico de los
indicadores es en las preguntas IF.
If *in03 = ‘1’ no es necesario preguntar si vale ‘1’ con
colocar:
If *in03 Es suficiente.
Lo mismo sucede con el
indicador con negación delante:
If *in03 = ‘0’ se reemplaza por: If
Not *in03
Sin embargo la mayoría de
los programadores se mantienen con su forma de programar en:
If *in03 = ‘1’
If *in03 = ‘0’ formas que denotan
falta de claridad del programador en el manejo de las sentencias lógicas.
Es lo mismo preguntar por *OFF que por ‘0’ al
igual que preguntar por *ON que por ‘1’.
Hay instrucciones como el
CHAIN el COMP que originalmente utilizan indicadores. Con la nueva programación
en RPG-FREE se pueden utilizar operaciones como por ejemplo:
Chain (Key1:Key2) Archivo 03 (El indicador 03 es opcional)
If %Found(archivo) equivale a
preguntar If not*in03
La operación COMP que ya
NO se usa es reemplazada por una condición estándar de
Comparación:
IF A > B
Otra costumbre en la vieja programación es esta:
45
A IFGT B
…..
ENDIF
Esto significa que si el
indicador 45 esta encendido (*ON) ejecutar el IF y todo lo que hay adentro.
Esta es otra práctica que
dista de estar entre las mejores prácticas de programación en RPG. Utilice
todas las condiciones que necesite en la
sentencia IF para despejar cualquier duda de su ejecución.
En Rpg_Free ya no es
necesario el uso de indicadores para buscar un elemento en un arreglo (Array)
Posicion=
%Lookup(‘hola’: Array: 1:200)
En Posicion se devuelve la posición del arreglo donde se
encontró la palabra ‘HOLA’ si POSICION es cero entonces no está en el
arreglo.
Un indicador menos que
utilizar y podemos usar una variable mas mnemotécnica (Posicion)
Si puedes utilizar
variables estándar o variables booleanas en lugar de indicadores, tendrás suficientes
indicadores a tu disposición cuando requieras verdaderamente el uso de
indicadores como es el caso del manejo de pantallas. Para ese caso, no hay
manera de reemplazar indicadores de pantalla con variables booleanas. El SDA no
da espacio para variables booleanas o nombres largos que permitan el manejo de
campos y condiciones en Keywords de pantallas para el despliegue y
actualización interactiva de datos.
El utilizar RPG-Free nos
brinda muchas facilidades que nos permiten ser más claros, sencillos y directos
en la programación.
Si quieres “migrar” a
RPG-Free revalúa tus técnicas de programación para que no repitas los mismos
vicios que aprendiste en códigos de programación mas atrasados.
Para mayor información sobre este tema puedes consultar este enlace de otro artículo publicado por mí en este mismo blog, hace algún tiempo:
Si te pareció interesante, reenvíalo a un amigo haciendo click en
el sobrecito que está al final del artículo. El conocimiento es valioso,
compártelo.
Autor: Ing. Liliana Suárez