Cobol en español
  Página de Inicio Recomiéndala Contáctame Usuarios en Linea
20
     Crea Una cuenta  
Video 1
Video 2
Video 3

Si te ha servido la web
o te han gustado los videos, colabora haciendo click en el botón.

MANUALES
TEMATICOS
BASES DE DATOS
COBOL / WINDOWS
COBOL / UNIX
HISTORIA /DOCS
 
BUSCADOR
PROGRAMANDO-Dos
TRUCOS
AÑO 2.000
TEORIA POWCOB-3
PROG. POWCOB-3
TEORIA POWCOB-5
PROG. POWCOB-5
OCX-ESCOBOL
RUTINAS/MANUALES
OCX / JUEGOS
HERRAMIENTAS
COMPILADORES
ENCUESTAS
ENLACES
FOROS
TOP 10

CHAT   Usuarios: 1
Trucos
TEMARIONúmeros Aleatorios
Sec. Escape a Impresoras
Imp. ¿Pantalla o Impresora?
Dibujar Cuadros o Líneas
Años Bisiestos
Ventana de Opciones
Campos Tipo Hora
Busqueda de Cadenas
Mandar un e-mail
Pequeño Editor Texto
Día de la Semana
Registros / Fichero
ListBox en modo caracter

Registros / Fichero

(1251 palabras totales en este texto)
(17149 Lecturas)   Versión Imprimible



En infinidad de ocasiones nos es necesario saber la cantidad de registros que tiene un fichero indexado. Casi siempre la manera mas fácil de saberlo es haciendo una lectura secuencial completa. Eso con pequeños ficheros es válido, pero; ¿y si tenemos que saber los registros de un fichero enorme?.

La respuesta está en este truco que nos ha hecho llegar nuestro amigo Artur Potau. Os tengo que decir que solo es válida para ficheros indexados de RM/cobol o de FujitsuCobol (PowerCobol).

Estos compiladores guardan dicha información en la primera linea de nuestro fichero, de hecho si hacemos un type o vemos su contenido con algún editor, observamos que al principio mete información que no es nuestra. Por lo tanto lo que tenemos que hacer es leer el fichero como secuencial e ir directamente a la posición donde la guarda.

El programa necesario para hacer dicha labor sería el siguiente:

IDENTIFICATION DIVISION.
PROGRAM-ID. REGISTROS.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
       SELECT FICHERO ASSIGN TO RANDOM
'el_nombre_del_fichero'
       ORGANIZATION SEQUENTIAL
       ACCESS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD FICHERO.
01  REG-FICHERO.
     02  FILLER       PIC X(46).
     02  NUMREG    PIC 9(15) BINARY.
WORKING-STORAGE SECTION.
01  NUMEROS       PIC 9(8).
01  OP                PIC X.
PROCEDURE DIVISION.
INICIO.
    OPEN INPUT FICHERO.
    READ FICHERO.
    MOVE NUMREG TO NUMEROS.
    DISPLAY NUMEROS LINE 10 ERASE.
    CLOSE FICHERO.
    ACCEPT OP LINE 20.
    STOP RUN. 


Solo debeis cambiar 'el_nombre_del_fichero' por el fichero sobre el que queráis hacer la comprobación y listo, increible pero cierto. Fijaros que en la FD depreciamos los primeros 46 caracteres con un FILLER y luego ponemos una variable binaria, porque así es como el gestor de ficheros guarda la información.

A continuación abrimos el fichero leemos el primer registro correspondiente a la primera línea y movemos ese valor binario a una variable numérica. Ya solo nos queda mostrarlo.

Lo mas lógico, para esto, sería que esta rutina fuera llamada a su vez por el programa que deseemos, resultando entonces que las variables (nombre de fichero y número de registros las asignariamos en la LINKAGE) y solo tendriamos que pasar el valor y el nos devolvería el número de registros.

Quedaría así:

IDENTIFICATION DIVISION.
PROGRAM-ID. REGISTROS.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
       SELECT FICHERO ASSIGN TO RANDOM NOMBREFICHERO
       ORGANIZATION SEQUENTIAL
       ACCESS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD FICHERO.
01  REG-FICHERO.
     02  FILLER       PIC X(46).
     02  NUMREG    PIC 9(15) BINARY.
LINKAGE SECTION.
77  NOMBREFICHERO   PIC X(30).
77  NUMEROREGISTROS PIC 9(9).
PROCEDURE DIVISION USING NOMBREFICHERO NUMEROREGISTROS.
INICIO.
    OPEN INPUT FICHERO.
    READ FICHERO.
    MOVE NUMREG TO NUMEROREGISTROS.
    CLOSE FICHERO.
    GOBACK.


Al volver del CALL, la variable NUMEROREGISTROS nos dará el valor correcto.

   Inicio de Página   
Sitio desarrollado con PHP-Nuke. Todos los Derechos Reservados.
PHP-Nuke es un Software Libre realizado con licencia GNU/GPL.
Página creada en Junio de 1.998, con el proposito de difundir el lenguaje Cobol en nuestra lengua.
Andres Montes [98/11]