Bienvenidos a Iseries Venezuela

Las mejores prácticas, recursos, tips, enlaces, videos y artículos para informáticos relacionados con el Iseries y el As/400 lenguajes de programación RPG, ILE RPG y SQL.

The best practices, resources, tips, links, videoes and articles for computer related to the Iseries and the As/400 languages of programming RPG, ILE RPG and SQL.
Showing posts with label Adefesios en RPG. Show all posts
Showing posts with label Adefesios en RPG. Show all posts

Wednesday, August 24, 2016

Códigos Tóxicos en Programación 2/2


                                                     
   Conceptos importantes para Desarrollos de calidad en RPG
 
                                                   

                                                                                                                                                                                                                                                               




                                                                                                                                                                                                                                                                  

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

Thursday, August 18, 2016

Códigos Tóxicos en Programación 1/2


                                                     
   Que Códigos Generan Caos en Desarrollo de Software

Lo que no se debe hacer  en Programación RPG
                                                   

                                                                                                                                                                                                                                                               




                                                                                                                                                                                                                                                                  

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

Sunday, March 30, 2014

Algo más sobre Uso de Indicadores.

 







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

Saturday, November 14, 2009

Adefesios en RPG





San Pablo escribía a los Efesios cartas aconsejándoles sobre dejar ciertos hábitos o conductas extravagantes y escandalosas. Con el devenir del tiempo, se utiliza la frase ADEFESIO en recuerdo a las cartas de San Pablo a esa comunidad. De San Pablo a los Efesios se tomó: Ad-Efesios (A los efesios).

Un Adefesio según la real academia de la lengua es algo que se ve feo, extravagante o ridículo.

A continuación, una pequeña muestra de algunos adefesios en la programación en RPG.


ADEFESIO 1


C_________ENDIF
C_________ENDDO
C_________ ENDSR
0401.00 *---* *- - - - - - - - - - - - - - - - - - - - - - - - - -
0402.00 ** MENSAJES DE ERROR **
0403.00 POLIZA NO REGISTRADA, VERIFIQUE
0404.00 POLIZA NO EXISTE EN DTOGEN, VERIFIQUE
0405.00 CON F1 ACTUALIZA PLAN DEL CERTIFICADO
0406.00 PARA EMITIR POLIZA, DEBE SELECCIONAR ''G'' Y PULSAR CF08

Colocar mensajes de validación en una tabla al final del programa es feo.

Es recomendable un archivo contentivo de los mensajes de error del sistema o módulo porque unifica criterios y estandariza la programación.


ADEFESIO 2
____________________L E
CAÑOFIN COMP UYEAR 1122
CN11 22 MESFIN COMP UMONTH 2233
CN11N22 33DIAFIN COMP UDAY 3333
C11
COR 22
COR 33 DO
C ADD SUMASI BSFIN
C SETON 12
C END

Programar una comparación entre dos fecha de esta manera es feo y extravagante.

Es recomendable, crear dos DS en el programa para realizar la pregunta de la siguiente manera:

IF FECHAFINAL (AAAAMMDD) <= FECHAACTUAL(AAAAmmDD) ADD SUMASU BSFIN ENDIF


 ADEFESIO 3

C *IN60 IFEQ *ON
C *IN61 OREQ *ON
C *IN03 OREQ *ON
C *IN04 OREQ *ON
C *IN05 OREQ *ON
C *IN06 OREQ *ON
C *IN62 OREQ *ON
C *IN63 OREQ *ON
C *IN64 OREQ *ON
C *IN65 OREQ *ON
C *IN66 OREQ *ON
C *IN67 OREQ *ON
C *IN68 OREQ *ON
C *IN69 OREQ *ON
C *IN70 OREQ *ON
C *IN71 OREQ *ON
C *IN72 OREQ *ON
C *IN73 OREQ *ON
C *IN74 OREQ *ON
C *IN75 OREQ *ON
C *IN76 OREQ *ON
C *IN77 OREQ *ON
C *IN78 OREQ *ON
C *IN79 OREQ *ON
C *IN80 OREQ *ON
C *IN81 OREQ *ON
C *IN82 OREQ *ON
C *IN83 OREQ *ON
C *IN84 OREQ *ON
C *IN85 OREQ *ON
C *IN86 OREQ *ON
C *IN87 OREQ *ON
C SETON 11
C ENDIF

Feo, extravagante y ridículo.

La imagen de este articulo es: Medusa obra maestra de MiguelAngel

Si te pareció interesante, reenvialo 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