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, September 20, 2010

Mejores Practicas en RPG: Estructura de Datos


   









1.- Uso Del Extname en la declaración de estructuras de datos:

En el ejemplo se utiliza para acumular totales en los campos de un archivo
Sin tener que renombrar campo a campo.

 Antes: (RPG 3)

     E                    SER        35 11 2             
     I***
     IFP002R
     I              FP2C01                          SER,1
     I              FP2C02                          SER,2
     I              FP2C03                          SER,3
     I              FP2C04                          SER,4
     I              FP2C05                          SER,5
     I              FP2C06                          SER,6
     I              FP2C07                          SER,7
     I              FP2C08                          SER,8
     I              FP2C09                          SER,9
------------------------------------------------
Después: (Rpg4, Free)

     dDsFp002F       e ds                  Extname(Fp002F) Prefix(DS_)
     d Servicios                     11p 2 Dim(35)
     d                                     Overlay(DsFp002F:130)  

 //* 130 es la posición de comienzo delcampo FP2C01 que indica el archivo. Se puede ver con dspffd.

2.- No utilices tablas a tiempo de compilación al final del programa.

Antes:

Tablas al final del programa luego de la Hoja C
**
1Lunes
2Martes
3Miercoles


Después.


     dSemana     Ds
     dLunes                                  10   Inz(‘Lunes’)
     dMartes                                 10  Inz(‘Martes’)
     dMiercoles                             10  Inz(‘Miercoles’)
     d Dias_Semana                     10   Dim(3)
     d                                                  Overlay(Semana)  

3.-La Estructura de Datos para Validar una fecha, es un recurso muy útil.
Esa antigua manera de validar si el día del mes es mayor a 31, si el año es bisiesto,
o si el mes está entre 1 y 12 quedó atrás.

     d                 ds
     dFecVal                    1     10
     dAnoVal                   1      4  0 Inz(0)
     dSep1                        5      5    Inz('-')
     dMesVal                   6      7  0 Inz(0)
     dSep2                        8      8    Inz('-')
     dDiaVal                     9     10  0 Inz(0)
     d*

       Diaval   = Dia;  (dia= dia de La fecha a validar)
       Mesval  = Mes;  (Mes de La fecha a validar)
       Anoval = Ano;  (Ano de La fecha a validar)

Test(DE) *ISO Fecval;
  If %error;
     Dsp_error = 'Fecha Invalida';   
   Endif;


Autor: Ing. Liliana Suárez.


Si te pareció interesante el artículo reenvíalo a un amigo, haciendo click en el sobrecito que está al final del artículo. El conocimiento es valioso, compártelo.

Saturday, September 4, 2010

Integración de Consultas













    Tradicionalmente, en especial en aquellos software que ofrecían soluciones integradas a las organizaciones, se disponía de un menú principal para “navegar” en la consultas del sistema. El primer menú tenía un número significativo de opciones que a su vez nos remitían a submenú o consultas que extraían la información según una clave de acceso en particular. Se tenían innumerables programas que desplegaban la información en pantalla bien sea por nombre, apellido, cédula, código de clientes, producto, etc.

   Cuando revisamos el código fuente del RPG observamos en muchos casos que se trata del acceso al mismo archivo pero realizando una búsqueda (chain) con una clave distinta en cada ocasión, mostrando al final la misma pantalla en todos los casos.

    El inconveniente que trae este sistema de programación es que al requerirse un cambio en las pantallas de consultas hay que cambiar la misma pantalla (por lo menos en su formato básico) en todos los programas donde se requiere desplegar el campo que antes no se desplegaba.

    Actualmente se realizan estos desarrollos con una única pantalla de entrada que tiene todos los parámetros posibles por los que el usuario puede realizar la consulta. El campo que contenga un valor “válido” será utilizado en ese único programa como elemento de búsqueda, para luego desplegar la pantalla con los valores que correspondan. Con la inclusión del SQL dinámico embebido en la programación RPG puede construirse la consulta “a tiempo de ejecución” para extraer los registros que cumplan con la condición de selección especificada por el usuario. El uso de SQL dinámico nos evita la creación de lógicos y por ende, agiliza el tiempo de respuesta en el procesamiento de los archivos.





Autor: Ing. Liliana Suárez.


Si te pareció interesante el artículo reenvíalo a un amigo, haciendo click en el sobrecito que está al final del artículo. El conocimiento es valioso, compártelo.





Sunday, August 22, 2010

Cómo abrir una sesión FTP en Batch







En varias ocasiones me han preguntado vía Email, cómo realizar un proceso FTP en BATCH tomando en cuenta que requerimos el usuario y la clave para abrir la sesión FTP.

En esta oportunidad les adjunto tres programas que son útiles para generar comandos FTP batch manejando el tema del usuario y la clave.

La idea es tener un archivo donde se graban los comandos FTP.

En este caso el archivo se llama FTPPAS, es un archivo que no tiene DDS sino que se crea con CRTPF con un largo de 132 posiciones. EL objeto del archivo se crea dinámicamente a tiempo de ejecución en la librería QTEMP. Esto es para no embasurar el disco. Una vez terminado el proceso el sistema operativo elimina el archivo al terminar el job.

El primer programa: PROGRAMA1 es un CLP.

1.-Verifica si existe el archivo FTPPAS en QTEMP, si no existe lo crea
2.-Luego llama a un programa RPG que se encarga de grabar en el archivo FTPPAS, cada comando FTP.

Notaras que la llamada al programa oprpg501 tiene en sus dos parámetros el usuario y la clave respectivamente.

La clave puedes preguntarla por pantalla al usuario, que va a ejecutar esto o tenerlos guardados en una dataara en un archivo, colocarlos en el programa directamente, como tu prefieras.

Existe un comando llamado CHKPWD. A ese comando le pasas el password que el usuario colocó en pantalla y el sistema operativo chequea si en verdad corresponde al password del usuario que está realizando la solicitud en pantalla, si no es así, se monitorea el error y se manda un mensaje de error.
Si no dispones de este comando en tu equipo, en el link al final de este artículo puedes descargar una utilidad que se encarga de realizar esta verificación.


IF COND(&IN03 = '1') THEN(GOTO FIN))


CHKPWD PASSWORD(&PSW) MONMSG
MSGID(CPF2362 CPF2363 CPF2364 CPF0001) EXEC(DO) CHGVAR VAR(&MSG) VALUE('La contraseña ingresada no +
                         corresponde al perfil del usuario')
GOTO LAZO2
ENDDO

FIN: ENDPGM

El tercer parámetro es la dirección IP con la cual se va a realizar la conexión, el cuarto y quinto parámetro es el nombre del archivo de salvar (donde está la data) y la librería del archivo de salvar. En este ejemplo se trata de enviar un SAVF desde un AS/400 hacia un PC.

3.-Por ultimo el programa llama a un CLP el cual se encarga de realizar efectivamente la serie de comandos FTP enviando la data.


El segundo Programa: PROGRAMA2 es un RPG.

Este Programa graba en el archivo FTPPAS y es llamado por el programa anterior.

Resalté en amarillo las instrucciones que interesan. Como puedes ver, arma cada instruccion FTP y hace WRITE al archivo FTPPAS.


El Tercer Programa: PROGRAMA3 es un CLP

Este programa es llamado por el primer programa y ejecuta el comando STRTCPFTP con parámetro la dirección IP.

Veras que se hace un override sobre el FTPPAS y que se crea un nuevo archivo llamado FPPASOUT sobre el cual también se hace override. Este archivo es también un físico sin dds de 132. En este archivo va a quedar un LOG para ti que puedes revisar después para saber si el proceso corrió bien o no. Es un log con todos los mensajes que envía el sistema operativo cada vez que ejecuta un comando FTP y puedes ver si fue satisfactorio o no.

Se crea en QTEMP para no embasurar el sistema. EL FTPPAS sirve como INPUT al comando STRTCPFTP y el FTPPASOUT sirve como output del log de ejecución. Este archivo FTPPASOUT es muy útil si quieres probar el programa interactivo primero y ver si corre bien. Vas mirando con un SQL o con un DSPPFM los mensajes que deja y así te aseguras que el proceso esta funcionando antes de ponerlo en producción como un proceso batch.

Puedes descargar los fuentes mencionados en este link:

http://cid-99e67619d21bbebb.office.live.com/browse.aspx/FTP%20BATCH


Autor: Ing. Liliana Suárez.


Si te pareció interesante el artículo reenvíalo a un amigo, haciendo click en el sobrecito que está al final del artículo. El conocimiento es valioso, compártelo.