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.

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