Developer's Diary

30 agosto, 2010

Curso de EasyTrieve II – Primeros pasos, variables y cursores

Filed under: Cobol / Jcl / Easytrieve, Programación — jnavero @ 6:50 PM

—- Nos mudamos: http://devthisblog.namocode.es
—————————————————————–
En la entrega anterior vimos el primer hola mundo en EasyTrieve, las variables, mostrar por pantalla mensajes y variables

En esta entrega, continuaremos con las variables y comenzaremos a utilizar cursores para el acceso a datos en DB2.

Redefinición de variables:

Podemos crearnos nuestras propias estructuras de datos redefiniendo nuestras variables, esto es útil sobre todo cuando tenernos datos empaquetados de una base de datos o deseamos mostrar una salida más visible. Veamos el siguiente EasyTrieve de ejemplo

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

* Ejemplo EasyTrieve con variables

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

WS-NUMERO       W         9  N  3

WS-NUM          W         9  A

WS-ENT      WS-NUM        6   N  0

WS-DEC      WS-NUM   +6   3   N  0

WS-EDITADO      W        11   A

WS-SIGNO    WS-EDITADO          1  A

WS-ENTE     WS-EDITADO    +1    6  N  0

WS-COMA     WS-EDITADO    +7    1  A

WS-DECI     WS-EDITADO    +8    3  N

JOB INPUT NULL

WS-NUMERO  =  1024,123

WS-NUM = WS-NUMERO

WS-ENTE = WS-ENT

WS-DECI = WS-DEC

WS-COMA = ‘,’

WS-SIGNO = ‘+’

DISPLAY ‘EDITADO: ‘ WS-EDITADO

STOP

Como podemos ver en el ejemplo, partimos de un número con decimales definiéndolo normal como WS-NUMERO  9 N 3 (6 partes enteras y 3 decimales)

En la primera redefinición WS-NUM separamos la parte entera de la parte decimal, y por ultimo en la variable WS-EDITADO asignamos parte a parte para conseguir un formato numérico con un signo en nuestro caso, nos mostrará +1024,123. Para mostrar por pantalla o imprimir también podemos usar mascaras (MASK) esto lo veremos más adelante en el curso.

Nota: Cuando tratamos datos numéricos con signo, es importante definirla con espacios decimales y si no deseamos ningún decimal podemos hacerlo de la siguiente forma:

WS-PRUEBA      W   5 N 0

De esta forma, se reserva espacio para el signo.

Por otro lado tenemos la posibilidad de la asignación con el igual ‘=’ o bien como se hace en Cobol con el move

Ejemplo:

WS-NUMERO  =  1024,123

MOVE 1024,123                TO    WS-NUMERO

La diferencia entre uno y otro, por lo que he podido comprobar es que en el primer lugar (asignación con igual) mueve los datos propiamente dicho mientras que con el MOVE mueve las posiciones de memoria. Sobre esto último es una conjetura ya que no he encontrado mucha información al respecto sobre la diferencia.

Cursores en EasyTrieve.

En esta primera parte con los cursores, los veremos por encima y profundizaremos poco a poco en las siguientes entregas.

Antes de empezar con los cursores y acceso a datos, cabe destacar que todas las variables numéricas que se utilizan deben ser empaquetadas.

Todos los cursores como en todas las bases de datos, se declaran, se abren, se leen las veces que sean necesarias y se cierran. Siempre cumplen esta misma lógica.

Declaración de cursores:

SQL DECLARE CURAGENDA CURSOR                +

FOR SELECT NOMBRE                     +

FROM AGENDA                     +

WHERE CODIGO = 1000              +

ORDER BY NOMBRE                  +

WITH UR

En este ejemplo además de la declaración del cursor vemos el signo + este signo indica que la línea se continua en la siguiente. Y la sentencia para la declaración es cómo podemos ver en el ejemplo. SQL DECLARE <nombre del cursor> CURSOR FOR <consulta (select)>.

Abriendo el cursor

Para abrir el cursor usamos la siguiente instrucción: SQL OPEN <Nombre del Cursor>

En nuestro ejemplo sería lo siguiente:

SQL OPEN CURAGENDA

Recogiendo la información (Leyendo el cursor)

Para leer el cursor que hemos creado y abierto anteriormente debemos

SQL FETCH <Nombre Cursor> INTO <Variables del cursor>

Como en nuestro caso solo queremos el nombre el ejemplo se haría de la siguiente forma:

SQL FETCH CURAGENDA INTO :WS-NOMBRE

Donde WS-NOMBRE es una variable declarada anteriormente como un A (Alfanumérica).

Cerrando el cursor.

Por último, después de abrir y leer el cursor, debemos cerrarlo. Para ello, debemos usar la siguiente clausula: SQL CLOSE <Nombre cursor>.

Siguiendo nuestro ejemplo.

SQL CLOSE CURAGENDA

Hasta aquí la segunda parte del curso de EasyTrieve. En el siguiente capítulo veremos el lenguaje de programación y continuaremos con los cursores, veremos algún ejemplo e iremos complicándolo un poquito.

Anuncios

5 comentarios »

  1. Para que funcione he tenido poner DEFINE antes de las declaraciones y a la hora de asignar a WS-NUMERO = 1024.123 (poner punto en vez de coma)

    Saludos

    Comentario por Nuha — 19 noviembre, 2010 @ 10:05 AM

    • Jajaja, eso son las cosa que tiene el word, siempre suelo escribir en word y cotro y pegor. El tema de los DEFINE es normal 🙂

      Saludos.

      Comentario por jnavero — 19 noviembre, 2010 @ 2:27 PM

  2. Gracias por hacer este manual.
    Yo trabajo con easytrieves y he aprendido a base de preguntar y preguntar. Se agradece leer algo sobre easytrieves ordenadito y en español. Muy bien explicado, de forma sencilla, como debe ser. GRAICIAS!!

    Comentario por Polaris — 2 diciembre, 2010 @ 10:30 PM

  3. Muchas gracias por la información!!!!

    Comentario por Carmen — 24 abril, 2012 @ 1:42 PM

  4. alguien podria decirme como definir una constante en eaytrieve que tenga como value un apostrofe osea ‘. intente ponerlo entre apostrofes o comillas dobles pero no me funciona. gracias!

    Comentario por Marcelo — 19 noviembre, 2015 @ 6:30 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: