Control de Ficheros
Cuando trabajamos con PowerCobol, tenemos nuestra programación dividida en distintas Procedures y Eventos. Eso hace que encontrar algo sea mas difícil que cuando programamos en un editor de manera secuencial para programas en modo carácter.

Además, si encima manejamos ficheros indexados y queremos controlar sus posibles status, nos obligaría a tener que declararlos en cada uno de los eventos en que apareciera.

Pero eso tiene fácil solución.
La solución es hacer todo lo relacionado con un fichero en una sola Procedure y enviar a ella el control cada vez que lo necesitemos. Si además esa Procedure la hacemos en un fichero a parte y la incluimos con #INCLUDE en nuestro proyecto, significará que con una sola línea tenemos resuelto el problema del uso de ficheros en nuestros proyectos de PowerCobol.

Pero podemos ir un poco mas allá y controlar los errores mediante una ventana independiente a la que le pasaremos unos parámetros y la mostraremos siempre que se de un error.

Veamos como realizar todo esto.

Lo primero es crear la ventana que nos permitirá mostrar los mensajes de error, esta ventana la podéis incluir en cualquier DLL que tengais creada o bien os creais un proyecto DLL solo para ella, es indiferente. El aspecto de la ventana puede ser propio de cada uno de vosotros, pero se trata de que en ella se identifiquen los máximos datos del problema.

Yo os voy a mostrar la que utilizo en mi empresa, pero cada uno podeis hacerla como mas os guste.

Pantalla de Error


Como podéis observar en la imagen, tenemos todos los datos necesarios para identificar el error y donde se ha producido. Además de esta forma, creamos la ventana y luego solo tendremos que llamarla cada vez que se produzca un error. A continuación os pongo las variables que he utilizado para pasar dicha información:

    01 MSG-VARIABLES GLOBAL EXTERNAL.
      02 MSG-PROGRAMA PIC X(20).
      02 MSG-FICHERO PIC X(20).
      02 MSG-MOTIVO PIC X(80).
      02 MSG-ERROR PIC XX.
Tienen poco que comentar, como veis pasamos el nombre del programa donde se ha producido el error, el fichero del error, el propio error y un motivo del porque. Estas variables estarán definidas como GLOBAL EXTERNAL en la ventana de error y en los distintos FORM en los que utilicemos ficheros.

Una vez tenemos nuestra ventana creada y compilada, vamos a la segunda parte, el control de los ficheros. Toda la Procedure que utilizo os la dejo en éste fichero para que la podais descargar e implementar en vuestras aplicaciones. En la rutina la variable que utilizo como STATUS del fichero se llama STATRA, cada uno que ponga la que haya utilizado en sus ficheros en la SELECT.

Pulsa aquí para descargarla.

¿Como funciona esa rutina?. Muy fácil, en nuestro proyecto nos creamos una PROCEDURE que se llame por ejemplo 'CONTROL-FICHERO' y en el escribimos debajo de PROCEDURE DIVISION una sola linea, la que copiará toda la rutina que os habeis descargado.
    #INCLUDE 'OP-PROVEDOR.CTL'.
Evidentemente el nombre OP-PROVEDOR.CTL es variable, cada cual lo puede llamar como quiera para identificar cada rutina.
A continuación, definimos en la WORKING de nuestro proyecto y como GLOBAL una variable que nos indique el tipo de incidencia que se va a producir, por ejemplo podemos llamar a esa variable FI-TIPO y la definimos con un PIC 9. Y ahora cada vez que vayamos a realizar cualquier proceso sobre el fichero, abrirlo, grabar, regrabar, borrar o cerrar, damos un valor a la variable y hacemos un CALL a dicha rutina.

Los valores que yo he definido para la variable FI-TIPO, son los siguientes:
  • 1 - OPEN, abrir el fichero, siempre como INPUT.
  • 2 - WRITE, grabar cerrando y abriendo el fichero como I-O.
  • 3 - REWRITE, regrabar cerrando y abriendo el fichero como I-O.
  • 4 - DELETE, borrar un registro cerrando y abriendo como I-O.
  • 5 - WRITE, grabar entendiendo que el fichero ya esta abierto como I-O.
  • 6 - REWRITE, regrabar entendiendo que el fichero ya esta abierto I-O.
  • 7 - DELETE, borrar entendiendo que el fichero ya esta como I-O.
  • 8 - CLOSE, cerrar el fichero.

Pues eso es todo, cuando veias el fichero que os habeis descargado, entendereis mejor su funcionamiento. Como siempre os digo, todo lo que pongo aquí es reflejo de mi trabajo diario, pero no tiene porque coincidir con el vuestro. Es lógico y normal que tengáis otra manera de trabajar, tan solo quiero aportar una idea mas y por supuesto todo es mejorable y modificable. Tan solo espero que os haya servido, si os puedo decir que yo lo estoy utilizando y funciona perfectamente.



Este artículo proviene de Cobol en español
http://www.escobol.com

La dirección de esta noticia es:
http://www.escobol.com/modules.php?name=Sections&op=viewarticle&artid=105