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.

Sunday, May 23, 2010

Rup y el Desarrollo de Software para RPG.











Rup y el Desarrollo de Software para RPG.

Rup (Rational Unified Process) es una metodología de desarrollo de software que se adapta a los requerimientos de cada organización.                                
                                                                                                         (click en la imágen para ampliarla)

Existen cuatro Fases integradas en esta metodología.

Inicio: Etapa de levantamiento de Información y análisis
Elaboración: Diseño
Construcción: Desarrollo de código
Transición: Instalación del software

Estas fases son integradas porque cada una de ellas incluye actividades de fases posteriores pero en menor proporción a la fase que corresponde. Por ejemplo, en la fase de Inicio, podemos diseñar algunas pantallas para mostrarlas al usuario y de esta manera recabar la información que necesitamos para proseguir con el desarrollo del sistema. Aunque el diseño de pantallas correspondería a la Fase de Elaboración (dentro de esta metodología) puede comenzarse a realizar pre-diseños y diseños incipientes que corresponden a otras fases con el fin de rectificar la información que estamos levantando con el usuario y evitarnos sorpresas desagradables al final.

En una etapa posterior, por ejemplo, en la fase de construcción podemos rectificar el diseño presentado en fases anteriores si así lo requiere el proceso. El gráfico ilustra, para cada fase, el grado de participación de actividades de fases anteriores o posteriores dentro la fase donde estamos interviniendo en un momento dado.

En RPG podemos desarrollar una secuencia de pantallas que simule la “navegación” a través del sistema aunque no se actualice data ni se ingrese información. La realización de un “prototipo”  se puede aprovechar para definir  con el usuario la longitud y el tipo de los campos, y rectificar la flexibilidad de la navegación a través del sistema.

Aunque esta metodología  se recomienda para sistemas grandes, el hecho de integrar todas las fases hacia adelante o hacia atrás nos permite realizar procesos continuos de retroalimentación que garantizan el éxito del proyecto.
Para mayor información sobre esta metodología puedes visitar estos links:




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, May 15, 2010

Trabajando con cadenas de caracteres.
















El Iseries participa en una serie de procesos donde recibe información de otras plataformas como  La web y Windows, entre otras. Se transfiere data a través de archivos via FTP, SOCKET, o Client Acces hacia el Iseries.

En general, esta data se recibe en archivos planos que deben ser fragmentados en campos de la base de datos correspondientes a tablas residentes en el iseries para luego incorporar esta información en los sistemas de la organización.

Existen funciones en SQL y funciones en el RPG 4 que nos facilitan esta labor que a veces puede ser algo engorrosa.

1.-Transformando data de entrada al tipo y código de edición que necesitamos.

Suponemos un archivo plano que llamaremos Archivo_Input que tiene un solo campo llamado “String”  alfanumérico de 90 posiciones.


Supongamos que el archivo de entrada (Archivo-input) tiene en el campo “String” un número editado   y requerimos trasladar este valor a un campo numérico de nuestros archivos. El monto viene solo en aquellos registros del archivo donde las dos primeras posiciones del campo “String” tienen el valor ‘01’. Utilizaremos como separador de campos el punto y coma ;

Valor de entrada: String = ‘01;1,234,567.89                                                  ’                                                                                                       

String es un alfabetico de 90 separa los Miles con coma y los decimales con punto)

Primero suprimimos las “comas” con “nada” (void, vacío) con la siguiente instrucción:

Update Archivo-input  set string = replace(String, ',' ,'’)
Where SUBSTRING(String, 01, 02)= ‘01’


El resultado es el siguiente: ’01;1234567.89                    ’


Monto = %dec(%trim(SUBSTR(String),4,87))    


Monto es un numérico empaquetado de dos decimales.

Resulta Monto = 1234567.89

2.-Puedes utiliza la función CAST  para convertir un string en un numérico entero.


La sintáxis de la function CAST  es la siguiente:

CAST(expresion AS data_type)

Algunos ejemplos:

SELECT Empleado, CAST(SALARIO AS INTEGER)
  FROM ARCHIVO
 
Select Campo1, Campo2, campo3

from Archivo

where campo1 = CAST (SUBSTRING(campo2,1,6)AS INTEGER) 
 
no todos los tipos son “casteables” es decir convertibles de uno al otro. 
En este link puedes ver una tabla (la segunda tabla) que te indica que tipos 
son convertibles en otros.




3.- Para Saber si un alfabético contiene sólo numéricos

SELECT count(*) FROM Table
WHERE TRANSLATE(C1, ' ' , '1234567890') = ' '

Esta sentencia devuelve el número de registros cuyo Campo C1 (que es alfabético) contiene sólo caracteres numéricos.


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, May 3, 2010

Subrutinas en un programa CL













Es posible manejar subrutinas en un programa CL.
Las subrutinas deben ser colocadas antes del ENDPGM del programa principal.
Los comandos SUBR y ENDSUBR, delimitan el principio y el fin de la rutina.
PGM

Declaraciones: DCL, DCLF, DCLPRCOPT
dcl   &valor    *int    4

Código del programa principal

SUBR SUBR (Rutina1)
Código de la rutina 1
ENDSUBR

SUBR SUBR (Rutina2)
Código de la rutina 2
ENDSUBR rtnval(&valor)

ENDPGM

El comando ENDSUBR tiene un parámetro opcional RTNVAL  que retorna un valor entero de 4 posiciones. Puede manejarse este valor a conveniencia. Monitorear un mensaje de error en las rutinas y colocar el valor de RTNVAL  Cero o en uno, podría indicar si fue o no exitosa la ejecución de la rutina y de acuerdo a ello proceder a las instrucciones convenientes en el programa principal.
Para llamar a una subrutina se utiliza el comando:   callsubr subr(RUTINA1) rtnval(&VALOR)
Como se observa el comando callsubr tiene dos parámetros: el nombre de la rutina y el valor de retorno.
Una subrutina regresa a “quien la llamó” al ejecutar el comando ENDSUBR, sin embargo si desea que por alguna condición particular se suspenda la ejecución de la rutina antes, entonces se puede utilizar la instrucción: RTNSUBR que tiene el mismo parámetro opcional RTNVAL que tiene el ENDSUBR.
Las subrutinas no pueden declararse una dentro de otra (anidarse). Sin embargo, las subrutinas pueden llamar a otras subrutinas.

Cada invocación de una subrutina genera una entrada a la pila de llamadas que puede alcanzar hasta 9999 niveles. Puede utilizarse el comando DCLPRCOPT  SUBRSTACK(100)para establecer el nivel máximo de alcance en la pila de llamadas. Si se establece un límite de llamadas y la ejecución del programa excede ese límite se generará un mensaje de error. CPF0822 ‘Overflow en la pila de llamadas’. En el ejemplo se colocamos 100 entradas en la pila de llamadas.
El comando DCLPRCOPT debe colocarse una sola vez en el CLP, en la sección del programa donde se declaran las variables y 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.