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, December 7, 2009

Matrices en RPG









En RPG no existe la estructura de Datos para almacenar Matrices como es concebida en otros lenguajes que indexan las matrices de la siguiente manera: Matriz(X,Y) = Valor  (click en la imágen para agrandarla)

Se puede utilizar un artificio declarando una DS en el programa que utilizamos para representar tantas filas como se requiera, a través de la palabra clave OCCURS.

Dentro de la DS se declara un arreglo para almacenar los valores de las columnas asociados a cada fila.

Declaración de la Matriz

D*******************************
dDSfilas DS occurs(100)
d Colum 10a dim(100)
d
dVariables para indexar la matriz.
d******************************
dFila s 3S 0
dCol s 3S 0

Para llenar el elemento ubicado en la fila 1 y columna 1
Se sigue el siguiente procedimiento:
c*
c Eval Fila = 1
c Eval Col = 1
c Fila Occur Dsfilas
c eval Colum(Col) = Valor

Se puede llenar una matriz por medio de dos lazos anidados:
Se sigue el siguiente procedimiento:
c*
c Eval Fila = 1
c Dow Fila <= 100
c*
c Eval Col = 1
c Dow Col <= 100
c*
c Fila Occur Dsfilas
c Eval Colum(Col) = Valor
c*
c Eval Col = Col + 1
c Enddo
c*
c Eval Fila = Fila + 1
c*
c Enddo


También puede invertirse el concepto de llenado de la matriz si consideramos cada ocurrencia de la DS como una columna y el arreglo interno los valores de las filas asociadas a la columna donde se posiciona el Occur.



Autor: Ing. Liliana Suárez.


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




1 comment:

Rolando (Lucho) Arízaga said...

Buen día, Liliana.

No pocas son las veces en que he hallado ayuda sencilla y bien estructurada en este blogg. Sinceramente te felicito y te aliento a continuar adelante.

Muchos exitos!