Cobol en español Registros de longitud variable
Cobol en español
  Página de Inicio Recomiéndala Contáctame Usuarios en Linea
26
     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: 0
ForosGeneralLeyendo    


  Registros de longitud variable
Anonimo


 Enviado el 27-08-2005 :: 16:25   
Hola a todos
Necesito que alguien me explique como puedo leer registros de tamaño variable en un fichero, o como puedo leer un fichero con la siguiente estructura
01madrid
02barcelona
03sevilla
04guadalajara
05gijon
....
....
....
99caceres

Como veis el fichero esta escrito a linea por registro, y cada provincia tiene una longitud variable.
Gracias.

 Citar
JOSECO



CAPITAL FEDERAL
637 Mensajes

Off Line  OFF-Line

 Enviado el 27-08-2005 :: 19:46   
Que Cobol estas utilizando?.
Estas seguro que el registro tiene longitud variable?
Solo porque tiene distintas localidades no significa
que tiene longitud variable, porque basta con asignar al
campo una longitud máxima y cada localidad ocupará
una parte del mismo.

 Perfil  www  Citar
rasape



torrejon de ardoz
15 Mensajes

Off Line  OFF-Line

 Enviado el 27-08-2005 :: 20:40   
Utilizo Personal Cobol.
Podrias indicarme como leer todos los registros del fichero, no te pido el codigo al completo, solo pido las intrucciones basicas y la declaracion del buffer para leerlo
 Perfil  Citar
JOSECO



CAPITAL FEDERAL
637 Mensajes

Off Line  OFF-Line

 Enviado el 28-08-2005 :: 00:23   
Antes de continuar, tienes la descripcion del archivo?.
Sin este dato es imposible hacer nada porque la localidad
puede ser uno de tantos campos del archivo y solo está
listando éste.
La descripcion del archivo es el orden de todos los campos,
su tipo (numérico, alfanumérico) y longitud.
 Perfil  www  Citar
JOSECO



CAPITAL FEDERAL
637 Mensajes

Off Line  OFF-Line

 Enviado el 28-08-2005 :: 00:28   
Por ejemplo: Si fuera una agenda podría ser:

01 REGISTRO-AGENDA.
03 CLAVE-AGENDA.
05 NUMERO-AG. PIC 9(5).
03 DATOS-AGENDA.
03 NOMBRE-AG PIC X(50).
03 DIRECCION-AG PIC X(50).
03 LOCALIDAD-AG PIC X(30).
03 TELEFONO-AG PIC X(20).
03 CELULAR-AG PIC X(20).

Además es necesario saber si el archivo es indexado
o secuencial.



 Perfil  www  Citar
rasape



torrejon de ardoz
15 Mensajes

Off Line  OFF-Line

 Enviado el 29-08-2005 :: 11:04   
FD FPROVINCIA
LABEL RECORD IS STANDARD.
01 REG-FPROVINCIA PIC X(1.

La definicion es:
01 PROV.
02 COD PIC 9(2).
02 NOM PIC X(16).

El archivo es secuencial
 Perfil  Citar
a_deiacovo



Buenos Aires
16 Mensajes

Off Line  OFF-Line

 Enviado el 29-08-2005 :: 16:07   
Si después de la fd, definís por ej:
01 reg-01 pic x(01).
01 reg-80 pic x(80).
01 reg-datos.
02 cod pic 99.
02 det pic x(16).

El cobol leerá registros variables de 01 a 80 bytes de longitud.
(A mi me funciona con rm 85)
 Perfil  www  Citar
JOSECO



CAPITAL FEDERAL
637 Mensajes

Off Line  OFF-Line

 Enviado el 29-08-2005 :: 20:54   
Te mando un programita para listar el archivo. Está hecho
para RM Cobol y no está estructurado.El nombre físico del
archivo no lo conozco y debes reemplazarlo por el que yo
puse. El archivo debe estar en el mismo directorio que el
programa.

Copialo al Notepad y de alli a tu editor de texto.

************************************************************
IDENTIFICATION DIVISION.
************************************************************
PROGRAM-ID. COCP01.
*
*
* LISTADO DE PROVINCIAS
************************************************************
ENVIRONMENT DIVISION.
************************************************************
CONFIGURATION SECTION.
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
*

SELECT FPROVINCIA ASSIGN TO DISK,
"PROVINCI.DAT"
ORGANIZATION IS LINE SEQUENTIAL
FILE STATUS IS ESTADO-W.



*
SELECT IMPRESORA ASSIGN TO PRINTER, "PRN" .
*
************************************************************
DATA DIVISION.
************************************************************
FILE SECTION.
*
************************************************************
FD FPROVINCIA
LABEL RECORD IS STANDARD.
************************************************************
01 REG-FPROVINCIA.
02 COD PIC 9(2).
02 NOM PIC X(16).
************************************************************
FD IMPRESORA
************************************************************
LABEL RECORDS ARE OMITTED.
01 REG-IMPRE.
03 FILLER PIC X(80).
/
************************************************************
WORKING-STORAGE SECTION.
************************************************************
77 RENGLON PIC 9(4) VALUE 99.
77 PAGINA PIC 9(4) VALUE ZEROS.
77 ESTADO-W PIC 99 VALUE ZEROS.
************************************************************
* LINEAS DE IMPRESION
************************************************************
*
01 TITULO-0.
03 FILLER PIC X(50) VALUE
" LISTADO DE PROVINCIAS".

*
01 LINEA.
03 NUMERO-I PIC ZZ.
03 FILLER PIC XX VALUE SPACES.
03 PROVINCIA-I PIC X(16).

*
************************************************************
PROCEDURE DIVISION.
************************************************************
COMIENZO.
PERFORM APERTURA-ARCHIVOS THRU FIN-APERTURA-ARCHIVOS.
PERFORM PROCESO THRU FIN-PROCESO.
PERFORM CIERRE-ARCHIVOS THRU FIN-CIERRE-ARCHIVOS.
STOP RUN.
/
************************************************************
APERTURA-ARCHIVOS.
************************************************************
DISPLAY SPACES LINE 1 POSITION 1 ERASE.
DISPLAY "*** LISTADO DE ***" LINE 1 POSITION 1.
DISPLAY "*** DE PROVINCIAS ***" LINE 2 POSITION 1.
DISPLAY "***" LINE 3 POSITION 1.
OPEN INPUT FPROVINCIA.

OPEN OUTPUT IMPRESORA.
MOVE ZEROS TO RENGLON.
WRITE REG-IMPRE FROM TITULO-0 AFTER 2.
FIN-APERTURA-ARCHIVOS. EXIT.
*
************************************************************
PROCESO.
************************************************************
READ PROVINCIAS NEXT AT END
GO TO FIN-PROCESO.

MOVE COD TO NUMERO-I.
MOVE PROV TO PROVINCIA-I.
WRITE REG-IMPRE FROM LINEA.
ADD 1 TO RENGLON.

IF RENGLON > 50
MOVE ZEROS TO RENGLON
WRITE REG-IMPRE FROM SPACES AFTER PAGE
WRITE REG-IMPRE FROM TITULO-0.
MOVE SPACES TO REG-IMPRE.
GO TO PROCESO.
FIN-PROCESO. EXIT.
*
************************************************************
CIERRE-ARCHIVOS.
************************************************************
DISPLAY SPACES LINE 1 POSITION 1 ERASE.
CLOSE FPROVINCIA.
CLOSE IMPRESORA.
FIN-CIERRE-ARCHIVOS. EXIT.
*
************************************************************
*
 Perfil  www  Citar
jrcastelo



La Coruña
20 Mensajes

Off Line  OFF-Line

 Enviado el 30-08-2005 :: 09:36   
Hola,

En RM85, para leer registros de longitud variable, yo utilizo "RECORD VARYING FROM 1 TO ..." en la FD. Para el listado de ejemplo, en la FD habría que poner:

************************************************************
FD FPROVINCIA
LABEL RECORD IS STANDARD
RECORD VARYING FROM 1 TO 80.
************************************************************
01 REG-FPROVINCIA.
02 COD PIC 9(2).
02 NOM PIC X(16).

De esta forma aunque el tamaño del registro sea menor, el programa no dará ningún error. Eso sí, deberás controlar que la línea que has leido no está en blanco (por ejemplo preguntando si COD es NUMERIC).

NOTA: En vez de 80 le puedes poner la longitud máxima que veas. En cuanto a la mínima, en RM85 adminte 0 pero hay compiladores que obligan que el mínimo sea 1.

Espero haber ayudado.




---

Un saludo desde La Coruña (España)


[ Este mensaje fue editado por: jrcastelo el 30-08-2005 09:38 ]
 Perfil  www  Citar
rasape



torrejon de ardoz
15 Mensajes

Off Line  OFF-Line

 Enviado el 01-09-2005 :: 11:40   
Muchas gracias a todos por vuestra ayuda, ahora pondre en practica todo lo anterior y ya os contare si alguna duda me acontece.
Gracias otra vez.
 Perfil  Citar

  


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]