Cobol - ARCHIVO PLANO CON ESPACIOS EN BLANCO A LA DERECHA

 
Vista:

ARCHIVO PLANO CON ESPACIOS EN BLANCO A LA DERECHA

Publicado por SANDRA PATRICIA TOVAR (2 intervenciones) el 03/04/2008 19:43:02
Estoy generando en archivo plano en cobol microfocus y el ultimo campo del registro es un espacio en blanco pero no me lo toma. Alguien puede decirme como debo definir el campo o como hago para que me tome el campo en blanco al finalizar el registro. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ARCHIVO PLANO CON ESPACIOS EN BLANCO A LA DEREC

Publicado por Jose Ramon Castelo (11 intervenciones) el 04/04/2008 09:26:15
Hola,

No tengo mucha experiencia en microfocus pero supongo que funciona igual que en RM/COBOL

Si lo estás generando desde COBOL:
En la SELECT tienes que ponerlo como LINE-SEQUENTIAL y en la FD debes definir los campos normalmente. Si esto no te funciona, lo que puedes hacer es poner en la FD un solo campo que tenga el tamaño máximo del registro y poner la definición del registro en la WORKING. Después en el programa mueves espacios al registro, después mueves valores a los campos de la WORKING y los mueves al registro antes de grabar.

Por ejemplo:

....
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT FICHERO ASSIGN TO RANDOM 'FICHERO.TXT'
ORGANIZATION IS LINE SEQUENTIAL.
....
FILE SECTION.
FD FICHERO
LABEL RECORD STANDARD.
01 FICHERO-REG.
05 FILLER PIC X(100).
....
WORKING-STORAGE SECTION.
01 REGISTRO.
05 CAMPO1 PIC X(5).

01 WCAB-CVS.
05 FILLER PIC X(07) VALUE
"CLIENTE".
05 FILLER PIC X(01) VALUE ";".



Si lo estás leyendo:
En la FD debes poner antes del "LABEL RECORD"
"RECORD CONTAINS <minimo> TO <maximo>" donde <minimo> es el tamaño mínimo que puede tener el registro (normalmente será la longitud del registro menos la longitud del último campo) y en <maximo> es el tamaño máximo que tendrá el registro (que será la longitud total del registro).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ARCHIVO PLANO CON ESPACIOS EN BLANCO A LA DEREC

Publicado por Jose Ramon Castelo (11 intervenciones) el 04/04/2008 09:33:40
Hola,

No tengo mucha experiencia en microfocus pero supongo que funciona igual que en RM/COBOL

Si lo estás generando desde COBOL:
En la SELECT tienes que ponerlo como LINE-SEQUENTIAL y en la FD debes definir los campos normalmente. Si esto no te funciona, lo que puedes hacer es poner en la FD un solo campo que tenga el tamaño máximo del registro y poner la definición del registro en la WORKING. Después en el programa mueves espacios al registro, después mueves valores a los campos de la WORKING y los mueves al registro antes de grabar.

Por ejemplo:

....
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT FICHERO ASSIGN TO RANDOM 'FICHERO.TXT'
ORGANIZATION IS LINE SEQUENTIAL.
....
FILE SECTION.
FD FICHERO
LABEL RECORD STANDARD.
01 FICHERO-REG.
05 FILLER PIC X(100).
....
WORKING-STORAGE SECTION.
01 REGISTRO.
05 CAMPO1 PIC X(5).
05 CAMPO2 PIC X(10).
...
<asi todos los campos que sean>
....
PROCEDURE DIVISION.
....
MOVE "0001" TO CAMPO1
MOVE "PRUEBA1" TO CAMPO2
.....
MOVE SPACES TO FICHERO-REG
WRITE FICHERO-REG FROM REGISTRO.
....

Si lo estás leyendo:
En la FD debes poner después del "LABEL RECORD"
"RECORD VARYING FROM <minimo> TO <maximo>" donde <minimo> es el tamaño mínimo que puede tener el registro (normalmente será la longitud del registro menos la longitud del último campo) y en <maximo> es el tamaño máximo que tendrá el registro (que será la longitud total del registro).

Ejemplo:

FILE SECTION.
FD FICHERO
LABEL RECORD STANDARD
RECORD VARYING FROM 50 TO 100.
01 FICHERO-REG.
05 CAMPOFIJO1 PIC X(10).
05 CAMPOFIJO2 PIC X(10).
05 CAMPOFIJO3 PIC X(10).
05 CAMPOFIJO4 PIC X(10).
05 CAMPOFIJO5 PIC X(10).
05 CAMPOVARIABLE PIC X(50).

En este ejemplo el campo CAMPOVARIABLE puede venir con espacios o incluso no venir, los que tienen que venir seguro son los otros, en caso de que tampoco vengan el runtime devolvería un error.

Espero no haberte liado mucho y haber ayudado.

Un saludo desde A Coruña (España).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar