Developer's Diary

13 octubre, 2010

Curso de Easytrieve y VII, Perform, Matched y otras funciones.

Filed under: Cobol / Jcl / Easytrieve, Programación — jnavero @ 9:04 PM

—- Nos mudamos: http://devthisblog.namocode.es
—————————————————————–
Creo que este será el capítulo final de este curso. Como se suele decir, el final de la primera temporada… En este capítulo vamos a ver Párrafos (funciones), Uso del Matched con un ejemplo para enfrentar 2 ficheros y algunas palabras especiales.

Comencemos el desenlace de la primera temporada…

Perform (Uso de funciones)

En cualquier momento de nuestro Easytrieve, podemos hacer una llamada a una función. Es muy sencillo hacerlo asi que muestro un ejemplo de cómo se hace.

*————————————————-

* Ejemplo EasyTrieve con PERFORM

*————————————————-

JOB INPUT NULL

PERFORM HOLA-MUNDO

DISPLAY ‘FIN DE PARRAFO ‘

STOP

HOLA-MUNDO. PROC

DISPLAY ‘Hola MUNDO’

END-PROC

En este ejemplo, llama a la función llamada HOLA-MUNDO que se declara poco más abajo. Después de la llamada al párrafo, se ejecuta el DISPLAY ‘FIN DE PARRAFO’

Maching

En el capitulo anterior vimos ficheros. En este capítulo vamos a hacer una comparación de dos ficheros mediante este método, en el siguiente ejemplo veremos el funcionamiento del match y la utilización de claves para realizar la comparación.

******************************************************************

* ESTRUCTURA DE LOS FICHEROS

******************************************************************

FILE ENTRADA1

E1-CLAVE          1    29  A

E1-CODIGO       1     5  N 0

E1-NOMBRE       6    15  A

E1-TELEFONO    21     9  N 0

E1-OTROSDATOS    30   20  A

FILE ENTRADA2

E2-CLAVE          1    29  A

E2- CODIGO      1     5  N 0

E2- NOMBRE      6    15  A 0

E2- TELEFONO   21     9  N 0

E2-MASDATOS      30    20  A

******************************************************************

* PROCESO

******************************************************************

JOB INPUT (ENTRADA1 KEY(E1-CLAVE)  ENTRADA2 KEY(E2-CLAVE))

IF MATCHED

DISPLAY ‘LOS REGISTROS SON IGUALES’

ELSE

IF ENTRADA1

DISPLAY ‘Se lee registro de entrada 1’

ELSE

DISPLAY ‘Se lee registro de entrada 2’

END-IF

END-IF

Paso a la explicación de este EasyTrieve. Suponemos dos ficheros de entrada (ENTRADA1 y ENTRADA2) los cuales tienen campos iguales (para poder compararlos). Las claves las tenemos definidas como hemos visto en la declaración de los ficheros. Es posible comparar claves con IF CLAVE1 = CLAVE2 por poner un ejemplo. Si vemos El JOB, hacemos que la entrada la coja de los ficheros de forma automática IF MATCHED (Los registros son iguales) si no, se lee uno de los dos ficheros (El que tenga el registro menor). Si se lee la entrada uno muestra el display 1 si es el fichero 2 el leído, se mostrará el segundo display. Esta es una forma realizar una comparación entre dos ficheros.

Por último, y para finalizar esta temporada, veamos la función SYSDATE, que sirve para coger la fecha actual.

Podemos declarar la siguiente variable:

FECHA                   W   8 A
MM   W-FECHA             2 A
DD   W-FECHA +3          2 A
YY   W-FECHA +6          4 A

y en el EasyTrieve realizamos la siguiente asignación: W-FECHA   = SYSDATE

De esta forma, podremos manejar fechas, aunque para esto también podemos manejar variables del AUTOEDIT que serán sustituidas con el CONTROL-M.

FE de ERRATAS:

Soy consciente que es muy complejo realizar un manual de este tipo, por lo que pido disculpas ante cualquier fallo / error que pueda haber en estos escritos.

Aun queda bastante por recorrer en los EasyTrieve, pero bueno. Más adelante continuaré con la segunda temporada.

Saludos a todos.

Anuncios

4 comentarios »

  1. Hola, estoy intentando aprender Easytrieve, y veo que en el Maching creo que la definición de la clave debiera de ser:
    ……
    E1-NOMBRE 6 (no 5) 15 A
    E1-TELEFONO 21 (no 20) 9 N 0
    E1-OTROSDATOS 30 (no 29) 20 A
    por favor, dime si estoy equivocado.Gracias

    Comentario por José Antonio — 10 noviembre, 2010 @ 8:43 PM

    • Tienes razon, está incorrecto.
      Edito la entrada para ponerlo bien.
      Muchas gracias

      Comentario por jnavero — 11 noviembre, 2010 @ 7:45 AM

  2. No acabo de entender que significa en la definición:
    FECHA W 8 A
    MM W-FECHA 2 A
    DD w-FECHA +3 2 A
    YY W-FECHA +6 4 A
    ¿que significa el +3 y el +6?
    porque esto ¿solo aparece en las redefiniciones?
    Gracias otra vez

    Comentario por José Antonio — 10 noviembre, 2010 @ 8:48 PM

    • Buenas, al hacer una redefinicion de variables lo normal es poner el tamaño total (fecha W 8 A)
      Esto es lo que nos va a ocupar en total la variable que comienza desde la primera posicion y ocupa 2 (en este caso no se pone nada por que es el primero, (MM W W-FECHA 2 A)
      Ahora en DD W W-FECHA +3 2 A indica que comienza en la posicion 3 y ocupa 2.
      En realidad sería +2 por que es la posicion siguiente. Lo que sucede en ese ejemplo es que SYSDATE retorna la fecha con las barras un ejemplo de una fecha sería este: 08/09/2010al poner la posicion +3 elimino la / y cojo el numero que es lo que me interesa. sobre el ejemplo quedaria esto
      DD = 08 —> ocupa 2 posiciones
      la tercera posicion (+2) iria la barra
      la siguiente (+3) iria MM = 09
      la siguiente +5 iria la otra barra
      por ultimo +6 YY = 2010.

      (No quiero enrollarme mucho y darle vueltas a lo mismo pero para este ejemplo, podría haber puesto esto)
      FECHA W 8 A
      MM W-FECHA 2 A
      R1 W-FECHA +2 1 A
      DD W-FECHA +3 2 A
      R2 W-FECHA +5 1 A
      YY W-FECHA +6 4 A
      (Con esta redefinicion cogeria la fecha con las barras incluidas)

      Espero que me hayas comprendido la explicacion, si no es así avisame y encantado te responderé

      Comentario por jnavero — 10 noviembre, 2010 @ 11:50 PM


RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: