viernes, 11 de mayo de 2012

Creación de un Subfile - DDS - Parte 2

En el post anterior Creación de un Subfile - DDS - Parte 1 creamos las DDS de las tablas donde se almacenará la información.

 Ahora diseñaremos la pantalla principal donde se mostrará la información.
Arrancamos SDA (STRSDA) y seleccionamos la opción 1. Diseñar pantallas. Ponemos el nombre y biblioteca de nuestro fuente. Yo lo he llamado TAGENDA.

El aspecto de la pantalla con el subfichero será el siguiente:


La pantalla se compone de 3 partes.

  • Registro de Control. Es la “cabecera” del subfichero.
  • Registro de Subfichero. Son los datos que se mostrarán mediante paginaciones.
  • Formato de Pie. Registro tipo RECORD que mostrará las teclas de función.

Los pasos a seguir para crear el registro de control y del subfichero mediante SDA son

Crear un nuevo registro tipo SFL (ponerle nombre SFL01). Nos pedirá el registro de control, que llamaremos CTL01

A continuación seleccionamos las palabras clave. Para este ejemplo no vamos a seleccionar ninguna palabra clave del subarchivo, por lo que pulsamos INTRO para seleccionar las palabras clave del control del subarchivo. Nos saldrá una lista:



 
Para nuestro ejemplo, seleccionaremos:
  • Palabras clave generales.
  • Diseño pantalla subarchivo
  • Seleccionar palabras clave reg.
 
Palabras clave generales

 Deberemos rellenar los campos para que queden igual que en la imagen:




 
Las palabras clave seleccionadas son:

  •  “Visualizar registros subarchivo” - SFLDSP, condicionándolo al indicador 90. Esto significa que cuando se active el indicador 90, se mostrará el subfichero.
  • “Visualizar Registro Control” – SFLDSPCTL, sin condicionamiento para que aunque el subfichero esté vacío, se muestre la cabecera.
  • “Borrar registros subarchivo” – SFLCLR, condicionado a que el indicador 90 esté apagado. Si os fijáis, es la negación de visualizar registros de subarchivo. Esto lo hemos hecho así para que se haga una u otra cosas, es decir, o mostramos el subfichero o lo limpiamos, pero no ambas a la vez.
  • “Indicar más registros” - SFLEND. Tiene el mismo indicador que el SFLDSP. Esta palabra sirve para añadir la anotación de “Más…” en la parte de abajo del subfichero, indicando que hay más páginas que mostrar. Con *MORE añadimo el “Más…”. Si seleccionamos *SCRBAR se mostrará el subfichero con una barra para hacer scroll.

El resto de palabras clave para este ejemplo no las usaremos, aunque en ejemplos posteriores sí las utilizaremos.


Diseño Pantalla Subarchivo

Aquí seleccionamos el número de registros que se cargarán en el subfichero y el número de registros que se verás en cada página en pantalla. Como nuestro primer ejemplo será de un subfichero de carga parcial, lo dejaremos de la siguiente forma:


 
Es decir, se cargará el subfichero con el máximo de registros permitidos (9999) y se mostrarán de 15 en 15.

Definir palabras clave registro

Dentro de esta opción, se nos abrirán más opciones disponibles:


 
Nosotros seleccionaremos:

Palabras clave de indicador. Aquí seleccionaremos las teclas de función. En nuestro caso sólo tendrá el F3=Salir, por lo que lo indicaremos de la siguiente forma:



 Palabras clave de recubrimiento. Marcaremos únicamente el OVERLAY. Ahora tendremos ya los dos nuevos formatos generados en nuestra pantalla:



 Ahora que tenemos creados los formatos, debemos diseñarlos. Para ello seleccionamos el CTL01 y lo diseñamos con la opción 12. Lo mismo con el SFL01, que debería quedar así (en este ejemplo sólo mostraremos nombre, apellido y teléfono):





Para mostrar el teléfono con el formato nnn-nnn-nnn he usado una máscara de edición, tal y como podéis ver:



Llamaremos a los campos SLF01NOM, SFL01APE y SFL01TEL respectivamente.

Por último nos queda generar el registro del pie, donde se mostrarán las teclas de función. Para ello añadiremos un nuevo registro tipo RECORD, llamado PIE01. Éste registro contendrá solo el literal de la tecla F3.

Y ya tenemos nuestra pantalla generada. Sólo nos falta compilarla y preparar el cobol que controlará el subfichero. Pero eso será en un futuro post.

Un saludo.

jueves, 10 de mayo de 2012

Creación de un Subfile - DDS - Parte 1


Los subfiles en general causan miedo y desconocimiento entre los principiantes (y entre más de un veterano) de Cobol/400, cuando en realidad, una vez entendido el concepto, su programación se hace muy sencilla.

Literalmente, un subfile (o subfichero) no es más que una lista para mostrar datos. Existen 2 tipos de subficheros:

  • Carga total. En este tipo de subfichero, se cargan todos los datos a la vez, y se configura cuántos registros se van a mostrar por pantalla, encargándose el sistema de las paginaciones de forma automática. Es el más fácil de programar, pero tiene una limitación: sólo se pueden cargar 9998 registros. Si se cargan más obtendremos el File Status 9M.
  • Carga parcial. Si tenemos que cargar más de  9998 registros, la única forma será mediante un subfichero de carga parcial. Como su nombre indica, se van cargando parcialmente los datos, teniendo que gestionar mediante el código las paginaciones hacia delante o hacia atrás. Es más complejo debido a los diferentes accesos al fichero.

Pero como veremos, rápidamente le perderemos el miedo a esta forma de mostrar datos.

En las siguientes publicaciones iremos desarrollando paso a paso un ejemplo sencillo. Una agenda donde guardamos nuestros contactos y sus teléfonos. Realizaremos un programa que muestre por pantalla todos los contactos ordenados por nombre, apellidos y número de teléfono.

Los pasos que deberemos seguir son:

  1. Crear las DDS, tanto de la base de datos como de la pantalla (DSPF) 
  2. Crear el Cobol que gestione el subfichero para mostrar la información.
Inicialmente vamos a crear las DDS. Lo primero es la base de datos. Será algo sencillo, es decir, almacenará información básica. Llamaremos al fichero FAGENDAP. Le crearemos un lógico con claves el nombre, apellidos y teléfono, que serán claves únicas.

Las DDS serán:

0001.00      A*****************************************************
0002.00      A* ARCHIVO .........: FAGENDAP                       *
0003.00      A* DESCRIPCIÓN......: FICHERO DE DATOS DE LA AGENDA  *
0004.00      A* AUTOR............: © TODO-AS400.BLOGSPOT.COM ©    *
0005.00      A* FECHA............: ABRIL/2012                     *
0006.00      A*****************************************************
0007.00      A          R RFAGENDA                                
0008.00      A            NOMBRE        15A                       
0009.00      A            APELLIDOS     30A                       
0010.00      A            DIRECCION     30A                       
0011.00      A            TELEFONO       9S 0                      
0012.00      A            FILLER        50A                                             
 
Para el lógico:

0001.00      A*****************************************************
0002.00      A* ARCHIVO .........: FAGENDA1                       *
0003.00      A* DESCRIPCIÓN......: FICHERO DE DATOS DE LA AGENDA  *
0004.00      A* AUTOR............: © TODO-AS400.BLOGSPOT.COM ©    *
0005.00      A* FECHA............: ABRIL/2012                     *
0006.00      A*****************************************************
0007.00      A                                      UNIQUE         
0008.00      A          R RFAGENDA                  PFILE(FAGENDAP)
0009.00      A          K NOMBRE                                   
0010.00      A          K APELLIDOS
0011.00      A          K TELEFONO  





En la próxima entrega generaremos las DDS de la pantalla que contendrá el subfichero.

Hasta otra.

Bienvenidos

Bienvenidos a mi blog.

Intentaré aportar todo el conocimiento y experiencia que he ido acumulando a lo largo de los años en los que llevo inmerso en esta maravillosa máquina y entorno.

SQL, Cobol, CLP's, DSPF's, PRTF's...todo tendrá cabida en este blog con diferentes tutoriales y guías prácticas.

Espero les guste, y por supuesto, las críticas constructivas serán bien recibidas.

Un saludo.