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.

Tuesday, August 23, 2022

Pointers (Apuntadores) en RPGLE ¿Que son y para que sirven?

                       

Un apuntador o "pointer" es una variable que contiene la direccion de almacenamiento en memoria de otra variable o de un procedure. En la siguiente imagen tenemos un ejemplo hipotético de almacenamiento en memoria.

 

 

 

Supongamos que tenemos una variable tipo char declarada de 70 posiciones.

 A esa variable la llamaremos: mitexto char(70)

mitexto, según la siguiente imagen, comienza en la dirección de memoria:0000

Aunque en nuestro código de programación podemos manipular la varible mitexto, en realidad no sabemos en cual dirección de memoria es almacenada la data que contiene y, a decir verdad, a nadie le interesa saberlo a menos que, conocer su dirección en memoria y manipularla tuviese alguna utilidad.


En Rpgle Free la variable apuntador se declara asi:
dcl-s Apuntador pointer;

En Rpg No free:  D    Apuntador  S      *  //el asterisco indica que es tipo apuntador

Una variable tipo pointer puede contener la dirección en memoria de una variable o de un procedure

Para declarar un apuntador que apunta a un procedure: 

RPGLE NO Free: se agrega en la declaracion de la variable tipo apuntador la palabra clave PROCPTR

RPGLE FREE: se agrega la palabra clave POINTER(*PROC) en lugar de pointer

Un  apuntador que es utilizado para "apuntar a la dirección" de  una variable,  una estructura de datos o a un arreglo se denomina "Basing Pointer". 

 Veamos algunos de los beneficios que aporta utilizar apuntadores:

Monday, August 15, 2022

JSON para desarrolladores en RPGLE IBM, Iseries/JSON for RPGLE Developers

                         


JSON son las siglas de Java Script Object Notation

 Se trata de un Standard internacional para dar formato al envío de la data entre dos plataforma o entre dos lenguajes de programación.

 A partir del 2015 se popularizó este formato superando con creces al formato estandard XML que hasta ese entonces reinaba sin competencia alguna.

Algunos expertos coincide en que JSON ocupa menos espacio y es mas sencillo de interpretar que XML.

JSON soporta los siguiente tipos de data:

  • Numerico
  • String
  • Arreglos (Array)
  • Objetos (Ds= Data Structure, en el caso de RPGLE IBM)
  • Boleanos = true/false
  • Nulos = null       

Para identificar las estructuras de data la sintaxis es la siguiente:

  •  Inicio y fin de data structure (DS): { }  Llave que abre y cierra respectivamente
  •  Inicio y fin de un arreglo : [ ]  Corchete que abre y cierra respectivamente

Para identificar los elementos simples dentro de las estructuras:

  •    "Nombre del elemento": valor del elemento
  •     Los elementos se separan con coma. (,)
El stream de envio siempre comienza con { y termina con }

Veamos el siguiente ejemplo:

Supongamos que queremos enviar en formato JSON los datos contenidos en la siguiente estructura de RPG. DS = Data Structure

 


 Pasos a seguir:

1.-Entender el significado de la estructura que vamos a enviar. En este caso, vamos a enviar el saldo final y el saldo promedio de la cuenta de un cliente de los ultimos tres meses del año 2022 y 2021. Primero el año 2022 y luego el año 2021.

2.-Interpretar la estructura correctamente. Muy Importante!!!

 Se trata de enviar una estructura que contiene 

  • Un elemento simple:  ClientId 
  • Un arreglo de dos elementos: DS_Account
       Los elementos del arreglo DS_Account son a su vez, DS.

3.-Colocar la sintaxis correspondiente.

     Enviar un objeto (DS) que tiene:

 {  "Ds_client": {

       A.- Un campo simple (Clientid)  "ClientId": "EX-8976531234" 

       B.- Un arreglo: DS-Account   [

          Cada elemento del arreglo es una DS: {

           B.1-Account_number.  "Account_number":89712345,

           B.2-Year. "Year":2022,

           B.3-Un arreglo Ds-balance de tres elementos. [

           Cada elemento del arreglo es a su vez una DS. {

                  La DS contiene dos elementos simples

                   B.3.1- Balance "Balance": 146.34,

                   B.3.2  Average  "Average": 125.78

         Fin de la DS del primer elemento del arreglo interno  },

          //Segundo elemento del arreglo interno

                   {
                       "Balance": 288.50,
                       "Average": 145.98  
                    },

          //Tercer elemento del arreglo interno

                   {
                           "Balance": 426.80,
                           "Average": 375.95
                   }  

                   ]  //cierra arreglo Ds-balance
               },     //cierra primer elemento del arreglo DS-Account

                .......

                .......

                .......

               Repetimos el proceso para el año 2021, que sería el segundo elemento 

               del arreglo Ds-Account

           A continuación generamos el formato completo de la DS en JSON:

          

Monday, August 8, 2022

EDI- Intercambio Electrónico de Datos

                           


EDI son las siglas que se refieren al envío de datos por vía electrónica que sustituye el envío de papel por el envío de rafagas de datos entre empresas o plataformas tecnológicas.

Para que el emisor y el receptor de la data se entiendan es necesario establecer el formato que permitirá al receptor decofidicar la data que recibe.

Existen varias alternativas para dar formato a la data en un proceso de transmisión electrónica de información.

 

En algunas instalaciones se nos pide a los desarrolladores de IBM I en lenguaje RPG o en otros lenguajes tener conocimientos de EDI. Sin embargo un intercambio de data entre distintas plataformas puede realizarse con distintos formatos. Algunos de esos formatos son: XML, JSON, EDIFACT, X12.

 En esta oportunidad me voy a referir a EDI X12 como uno de los formatos que se utiliza para realizar la transmision de data.

En este artículo daré una idea general de cómo usar este formato y al final, los remitiré a algunos enlaces que, a mi criterio, son bastante completos en cuanto a la explicación del uso de EDI X12. El objetivo de este artículo es presentar en forma clara y sencilla los conceptos fundamentales que les permita seleccionar el formato X12 que necesitan aplicar para la aplicación que estan desarrollando.

Conceptos Clave:

Transacción: Se refiere a un documento ( orden de pago, factura, cheque, operación bancaria, etc)

ANSI: American National Standar Institute. Esta Institución se encarga de generar los estandares internacionales para codificación de data. La institución tiene una división en ella denominada X12 que se encargó de generar el standard de su mismo nombre.

Para una cadena de tiendas por departamento que tiene varias sucursales, un ejemplo gráfico del standard EDI X12 para el envío de las facturas generadas durante el día sería el siguiente:



Algunos autores comparan esta estructura con la "Matrioska". Esto se refiere a las muñecas rusas que se encapsulan una dentro de otra desde la mas grande hasta la mas pequeña y última de la serie. Veamos un ejemplo a continuación: