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, 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.

No comments: