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, February 22, 2010

Declaración múltiple de un archivo en un CLP.












Es posible manejar múltiples instancias de un mismo archivo en un CLP. El límite de instancias es cinco. Es decir, podemos declarar cinco veces el mismo archivo en un programa CLP indicando distintos OPNID en sus declaraciones respectivas.

En el código que muestro a continuación pueden ver el mismo archivo declarado dos veces con distinto OPNID.

Cuando se va a leer información de un archivo es necesario realizar un OPNDBF antes del comando de lectura RCVF. El OPNDBF debe tener especificado el OPNID que identifica la instancia del archivo que va a ser aperturado.
El código de ejemplo que les presento a continuación trata de un programa que maneja

   Inicio:      PGM        

/*El mismo archivo declarado dos veces con distintos OPNID */
                                                                             
DCLF       FILE(LIBRERIA/ABAPF004) RCDFMT(ABARC004) +                                           
     OPNID(ABAPF)                                                                          
 DCLF       FILE/(LIBRERIA/ABAPF004) RCDFMT(ABARC004) +                                           
     OPNID(ABAnue) 
                                                                       
  OPNDBF     FILE(LIBRERIA/ABAPF004) OPTION(*ALL) +                                               
  MBR(*FIRST) OPNID(ABAPF) ACCPTH(*FILE)     
                                         
   RCVF       RCDFMT(ABARC004) OPNID(ABAPF)                                                           
   CLOF       OPNID(ABAPF)      
   ADDPFM     FILE(LIBRERIA/ABAPF004) MBR(NUEVO) +                                                  
   SHARE(*YES)                                                                            

   CPYF       FROMFILE(LIBRERIA/ABAPF004) +                                                            
                 TOFILE(LIBRERIA/ABAPF004) TOMBR(NUEVO) +                                             
                  MBROPT(*ADD) FROMRCD(1) TORCD(1)                                                       
                                                                                                                       
   OPNDBF     FILE(LIBRERIA/ABAPF004) OPTION(*ALL) +                                                 
                      MBR(nuevo) OPNID(abanue) ACCPTH(*FILE)                                                 
                                                                                                                       
   OVRDBF     FILE(ABAPF004) TOFILE(LIBRERIA/ABAPF004) +                                             
                      MBR(NUEVO) POSITION(*START) SHARE(*YES)                                                
                                                                                                                       
     RCVF       RCDFMT(ABARC004) OPNID(ABANUE)    
                                                      
     MONMSG     MSGID(CPF0864) EXEC(GOTO FIN)     
                                            
                                                                                          
     CLOF       OPNID(ABAnue) 

   FIN: ENDPGM  

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, February 21, 2010

Sesion 1 Fundamentos de Internet

La tecnologia de la informacion son todas aquellas cosas que aporta la ciencia para el procesamiento de la informacion, entendiendose por procesamiento el almacenamiento, envio, manipulacion y comunicacion de la informacion.
La mejor aplicacion que la ciencia moderna nos ha dado para la tecnologia de la informacion es la computadora. Esta se compone de hardware y software. La primera son todos los componentes electricos y mecanicos de la misma, clasificados en varios grupos que son:
- Dispositivos de entrada (Teclado, raton, dispositivos sensibles al tacto)
- Dispositivos de salida (pantallas, impresoras)
- Unidad central de procesamiento (procesa toda la informacion, compuesta por la unidad logica-aritmetica que realiza comparaciones y calculos, y la unidad de control que interpreta las instrucciones dadas al computador y dirige las operaciones)
- Dispositivos de almacenamiento (almac. primario o memoria principal, y almac. secundario como los discos, memoria flash, cintas)
- Dispositivos de comunicacion (son lo que nos permite comunicarnos con otros computadores para el intercambio de informacion como las redes, routers, internet)
El software son todo el conjunto de instrucciones que le dicen al computador lo que debe ejecutar. Conjunto de programas de computo, procedimientos, reglas, documentacion y datos asociados que forman parte de las operaciones del computador. Se compone de sistema operativo (programa que majena directamente al computador) y las aplicaciones (que son las aplicaciones practicas que tiene un computador, como facturacion, nomina, navegadores de internet).
El software esta compuesto por lenguajes de programacion (permite crear las aplicaciones practicas mediante la instruccion al computador de las operaciones a realizar), programas (representacion de algoritmos, se escriben en los lenguajes de programacion), lenguaje de maquina (lenguaje que entiende el hardware), sistema operativo (se encarga de administrar los recursos del computador).
Internet es un conjunto descentralizado de redes de comunicacion interconectadas que usa TCP/IP como protocolo de comunicaciones para interconectar todas las computadoras a nivel mundial. La World Wide Web es un conjunto de protocolos que permite la consulta remota de archivos de hopertexto.
Las direcciones IP son direcciones numericas que identifican las computadoras interconectadas en una red. La URL (Uniform Resource Locator) es una secuencia de caracteres de acuerdo a un formato estandar que se usa para nombrar recursos en internet para su localizacion.

Monday, February 15, 2010

Tips Generales para optimizar Query/SQL


Algunos tips que te ayudarán a que tus queries se ejecuten tan rápidos como sea posible


1- Crear  índices de acceso cuya clave posicionada más a la izquierda del query haga match con las condiciones de selección, ayuda al optimizador de búsqueda con la selección de valores.

2- Para realizar queries con join, crear indices que hacen “match” con las columnas del join ayuda al optimizador de búsqueda a determinar el promedio de filas que hacen “matching”

3- Especificar solo las columnas que necesitas para el query en la sentencia SELECT en lugar de especificar *. También podrías especificar FOR FETCH ONLY si las columnas no requieren ser actualizadas.

4- Utilizar el comando RGZPFM. Reorganize Physical File Membre para remover
Las filas eliminadas de las tablas. Utilizar el comando CHGPF REUSEDLT(*YES) para reusar las filas eliminadas.

5- Considera usar las siguientes opciones:
Especificar ALWCPYDTA(*OPTIMIZE) permite al optimizador del query crear copias temporales de data para obtener un mejor performance. The iSeries® Access ODBC driver y el  Query Management driver siempre usan esta modalidad. Si ALWCPYDTA(*YES) es especificado, el optimizador de búsqueda intentará implementar el query sin hacer copia de la data, pero creará una copia si así se requiere.  Si ALWCPYDTA(*NO) es especificado, copias de la data no serán permitidas. Si el optimizador del query no puede encontrar un modo de búsqueda que no requiera el uso de un almacenamiento temporal, entonces el query no puede ser ejecutado.
OPNQRYF FILE((STAFF)) FORMAT(FORMAT3)
   GRPFLD(JOB SALARY)
   KEYFLD(JOB SALARY)
   SRTSEQ(*LANGIDUNQ) LANGID(ENU)
   ALWCPYDTA(*OPTIMIZE)

6- Especificar DLYPRP(*YES) para retardar  la validación de la sentencia SQL hasta que una sentencia OPEN, EXECUTE, o DESCRIBE sea ejecutada. Esta opción mejora el tiempo de respuesta, eliminando validaciones redundantes.
C/Exec SQL
C+ Set Option Commit=*NONE, DatFmt=*ISO, DynUsrPrf=*Owner, DlyPrp=*YES
C/End-Exec

7- Para el SQL, usar CLOSQLCSR(*ENDJOB) o CLOSQLCSR(*ENDACTGRP) permite que las vías de acceso abiertas, permanezcan abiertas para futuras invocaciones. (CRTSQLXXX)

8- Usar  ALWBLK(*ALLREAD) permite al manejador bloquear el registro  de data para cursores de “solo lectura”.  SET OPTION ALWBLK = *ALLREAD 

Valores para ALWBLK:

*ALLREAD 

Las filas son bloquedas para “solo lectura” si el parámetro COMMIT es *NONE o *CHG. Todos los cursores en un programa que no son explícitamente utilizados para update serán abiertos para read-only aún cuando las sentencias EXECUTE o EXECUTE IMMEDIATE estén presentes en el programa.

Puede mejorar el performance de casi todos los cursores read-only en programas
Pero limita el query de las siguientes maneras:

El comando Rollback en el lenguaje anfitrión (ile RPG, RPG) ó la sentencia ROLLBACK HOLD SQL no reposiciona el cursor read-only.

La ejecución dinámica de una sentencia UPDATE o DELETE (por ejemplo usando EXECUTE IMMEDIATE) no pueden ser utilizada para actualizar una fila a menos que la sentencia DECLARE para la declaración del cursor incluya la cláusula FOR UPDATE.


*NONE 
Las filas no son bloqueadas para devolver la data a los cursores.
Garantiza que la data devuelta en la consulta está actualizada.
Puede reducir la cantidad de tiempo requerido para acceder la primera fila de la data.
Impide que el manejador de base de datos devuelva un bloque de data que no es utilizada por el programa cuando solamente las primeras filas del query son las requeridas.
Puede degradar el performance del query si la consulta devuelve un gran número de filas.


*READ 
Los registros son bloqueados para read-only cuando:

*NONE es especificado en el parámetro COMMIT, lo que indica que el commitment control no es utilizado

El cursor es declarado FOR READ ONLY o no hay una sentencia dinámica que pudiese ejecutar una sentencia UPDATE o DELETE posicionado por cursor.

Especificar *READ puede mejorar el performance total del query cuando una gran cantidad de registros cumplen con las condiciones de búsqueda.






Publicado por: 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.

Tuesday, February 9, 2010

Baby 400



                                                                          
Pregunta N.C.: 


Una pregunta (con un largo preambulo) Hacé una pila de años exitiá un software que corriá en el PC llamado Baby/400 (Si, nene 400), creo que IBM compró la compañia y empaquetó dicho software en algo que se llamó CODE/400, luego eso lo integraron a WebSphere y creo que a RATIONAL, pregunto ¿tienes noticias de un software que permita desarrollar programas en RPG, CL etc, en el micro?

Saludos





Con el desarrollo de Internet para trabajar vía remota y con la modalidad de Front-End, donde al As/400 lo dejan como  un repositorio de datos y considerando ademas, que  las interfases al usuario son web o visual basic, se perdió el interés de continuar con algún release del baby/400. Según mi conocimiento, no se ha desarrollado nada similar al baby/400. Yo conocí el baby/400, y ahora eso no sería compatible con los nuevos release ni con el ILE y menos con las interfases gráficas de los lenguajes web... 

Es una lástima porque permitía desarrollar en casa algunas cosas...

Hay algunos links en internet que te dicen que te permiten emular el as400 conectandote vía internet con algún PC remoto, pero no he probado ninguno y no sé si de verdad funcionan.

Otros te venden el emulador pero no se si funcionan o es fraudulento
en este link puedes leer algo de eso:


Saludos, Liliana



Publicado por: 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.

Wednesday, February 3, 2010

¿Que es un Script de Prueba?







En la imagen pueden ver un ejemplo de script de prueba. 
Haz click para agrandar la imagen
                                              



La palabra Script viene del Inglés que significa "guión". Es el libreto utilizado por los directores de las series y películas de cine y tv para especificar que debe decir o hacer cada actor. En un script de prueba así como en un guión de tv, debe haber un escenario, una situación, unos personajes, unas acciones y un resultado esperado de la escena.

En esta hoja Excel se reflejan los casos de prueba en distintos escenarios, para el envío de reportes de fallas en los procesos de cierres nocturnos.

Este modelo corresponde a las pruebas denominadas “caja negra” es decir, no estamos probando rutinas especificas del programa ni módulos,  sino situaciones que simulan la realidad (escenario) en condiciones especificas (casos de prueba) que requieren que ciertos parámetros se cumplan  para que se produzca la prueba (requerimientos de la prueba).

Para un desarrollador puede resultar difícil contemplar todos los casos de prueba y sus respectivos escenarios, sencillamente porque no puede pensar como un usuario y probablemente no tiene la experiencia suficiente en el negocio aún cuando conozca las reglas del negocio.

Esta hoja de Excel la completan generalmente los profesionales de Calidad y Procesos o en su defecto, algún área de la Gerencia de Sistemas asignada para esas funciones.


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.

Monday, February 1, 2010

Tips para la prueba de software.













1.-Procura que los profesionales de calidad y procesos determinen y desarrollen los scripts de prueba. Si no cuentas con esa asesoría en tu organización procura que otros analistas del área de sistemas desarrollen los scripts de prueba del software desarrollado por ti.

2.-Procura que sean los usuarios quienes realizan la prueba de tus desarrollos y que certifiquen el resultado de las pruebas.

3.-No dejes hasta el final la prueba de tus desarrollos. En las etapas intermedias muestra tus avances y haz que lo usuarios se involucren en el desarrollo realizando pruebas parciales o modulares.

4.-Si hay un cambio en el diseño o en los programas que afecte la credibilidad de las pruebas realizadas anteriormente, es preferible que repitas las pruebas.

5.-Prepárate para que aparezcan errores inesperados y procura no defenderte. Recuerda que para eso son las pruebas: para detectar errores.

6.-Si en las primeras pruebas no se produce ningún error, sospecha que algo no está funcionando bien. El usuario puede que no sea el mas adecuado o el script de prueba no tiene todos los casos que deben probarse.

7.-Crea un ambiente “blindado” para que nadie altere tus librerías de prueba.

8.-Revisa las autorizaciones de los usuarios tanto en desarrollo como en producción para que al momento de las pruebas y la puesta en marcha no haya reventones por falta de autoridad.

9.-Solicita que al menos sean dos usuarios quienes realicen las pruebas y además que alguien de calidad y procesos esté presente durante el desarrollo de las mismas.

10.-Lleva una bitácora de todo lo que ha sucedido en las pruebas y repásala periódicamente a ver si hay algún error recurrente que todavía no se ha corregido.

11.-Deja que “destrocen” tu desarrollo durante las pruebas. Aguanta el chaparrón. Es preferible que los errores aparezcan y se corrijan a tiempo. Tu reputación profesional quedará intacta cuando tu desarrollo se ponga en producción y todo funcione correctamente.

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.