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.

Monday, April 20, 2015

RPG Versus SQLRPG


A medida que el RPG ha evolucionado y ha aceptado ser el anfitrión de otros lenguajes de programación se ha desarrollado recientemente una rivalidad entre las facilidades que ofrece el RPG “puro” versus el SQLRPG.

Las nuevas generaciones de programadores que se ven en la necesidad de programar RPG, porque sus lugares de trabajo así lo solicitan, prefieren desesperadamente el uso de SQL combinado con RPG porque está más acorde a su reciente formación académica. Los desarrolladores de la vieja escuela, más experimentados en RPG se muestran renuentes e incómodos con los cambios y prefieren aferrarse al RPG tradicional.




A continuación expongo algunas ventajas y desventajas de ambas tecnologías para tener en cuenta los beneficios que ofrece cada una a la hora de decidir cómo resolver un dilema en el proceso de desarrollo de un programa en el Iseries.

Saturday, March 21, 2015

Comandos CL en Programas en RPG-Free

Bienvenidos a Iseries Venezuela!

En esta oportunidad vamos a mostrar como realizar comandos CL en programa en RPG Free.

En los programas desarrollados en RPG III es realmente tortuoso incorporar un comando CL dentro de un programa RPG. Se ejecuta una llamada aun programa llamado: 'QCMDEXEC.' suministrado por la plataforma del equipo. Con comandos simples como eliminar o reorganizar un archivo ejecutar este programa era relativamente sencillo de implementar. Sin embargo, cuando se trataba de enviar parámetros y de monitorear el resultado de ejecutar el comando, el tema se complicaba mucho mas. La mayoría de los programadores preferimos invocar un programa CLP que ejecutara el comando y  quitarnos ese dolor de cabeza de encima.

Con el avance de RPG podemos desarrollar un código estandard para control u monitoreo de errores y ejecución de comandos.

En el siguiente ejemplo:

1.-Se declara un procedure externo 'QCMDEXEC'
2.-Se declara la variable donde se va a almacenar el comando
3.-Se declara la estructura de datos de estatus del programa en forma estratégica
4.-Se construye el comando con parámetros
5.-Se monitorean los errores de ejecución.

-------------------------------------------------------------

     d*Declaración del procedure
     d@runsyscmd       pr                  extpgm('QCMDEXC')
     d cmd                          200a   options(*varsize) const
     d cmdlen                        15p 5 const
     d*Variable donde se almacenará el comando a ejecutar
     d  clpstm         s            180a
     d*Párametros que se enviaran en el comando
     d  Cliente        s              10a
     d  Pedido         s              10a
     
      * Program status data structure
     d                sds
     dPgmName                 1     10
     dCoderr                     40     46  -->  Código de error CPFXXXX
     dtxterr                      91    170   --> Capturar el texto del error
     dEstacion               244    253
     dusuario                 254    263
     djobdate                 270    275  0
     dFechajob              270    275  0
     ddiajob                   270    271  0
     dmesjob                 272    273  0
     danojob                  274    275  0
     dhorajob                282    287  0

            monitor;   //monitorear el error
                 clpstm =  //construcción del comando

              'SBMJOB CMD(CALL PGM(Facturar) parm(' +
               Cliente + ' ' + Pedido +  '))' +
              ' Job(' + 'FA' + %trim(%subst(Pedido:1:8)) + ')';

               @runsyscmd(clpstm : %size(clpstm));  //ejecuta el comando

               on-error;
                 //   Graba_Errores;
                 Errcod = coderr;
                 Errmsj = txterr;
                 nomusu = usuario;
                 nomjob = 'FA'+ %Trim(%subst(Pedido:1:8));
                 dispos = estacion;
                 hora = horajob;
                 fecha = fechajob;
                 write en archivo de errores
                 msj_sfl = 'Errores en el comando, revise Log';
               endmon;

-------------------------------------------------------------
En este código sometemos un programa llamado FACTURAR que se encargará de generar la factura para el cliente almacenado en la variable CLIENTE según el pedido guardado en la variable PEDIDO

En forma sencilla se puede ejecutar cualquier comando en CLP con o sin parámetros sin que represente una diferencia significativa en el desarrollo del código.  También podemos monitorear el resultado de la ejecución y grabarlo en algún archivo, grabando ademas el nombre del job fallido de manera de identificar el pedido que no pudo ser facturado. Con este procedimiento podemos hacer seguimiento o auditoria del proceso.

En este enlace puedes descarga el código fuente que ves en este artículo. Haz click aquí:

Descarga Código Fuente del Programa


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, February 19, 2015

La Importancia de tener un Máster Mind


Se define Máster Mind a un equipo de trabajo conformado por “Mentes Maestras” encargado de dar seguimiento y brindar asesoría a los ejecutivos de un proyecto.


Tradicionalmente el análisis de los requerimientos de un proyecto lo realiza un analista o un líder de proyecto en solitario,  quien se encarga de reunirse con el usuario y definir las solicitudes y objetivos que debe cumplir el desarrollo tecnológico a su cargo.

Se ha comprobado que el trabajo en equipo es más eficiente y dinámico a la hora de generar ideas creativas y novedosas que aportan mejores oportunidades operativas y  funcionales al desempeño de las operaciones del negocio.

El dicho que reza: “dos cabezas piensan más que una” tiene una gran dosis de sabiduría que debe tenerse en cuenta a la hora de definir un proyecto.
El  Máster Mind está idealmente conformado por integrantes de la organización y asesores externos que se encargaran de revisar cada cierto tiempo el desarrollo del proyecto.

La sinergia de un equipo de trabajo es incomparable e impredecible en cuanto al resultado óptimo y creativo de soluciones y creación de nuevos proyectos con visión de futuro y de proyección a nuevos nichos de mercado.

Es importante que quienes realicen la definición del proyecto no solo tengan una idea del funcionamiento del negocio sino de su adaptabilidad en el tiempo y de la captura de nuevos clientes potenciales al momento de definir el alcance del proyecto.
Debe incluirse como parte integrante de este equipo Máster Mind estrategas del negocio que tengan una visión clara del movimiento tecnológico del mercado y del posicionamiento de la competencia.

Cabe destacar que, cada reunión debe culminar con un conjunto de acciones concretas que tengan un límite de tiempo y que sean visibles, tangibles y evaluables. Esto para evitar reuniones inútiles sin resultados concretos. Este modelo de trabajo aunque ha sido exitoso en otras latitudes, debe ser implementado con estricto control en nuestros países latinos. Los latinoamericanos somos expertos en