RE:ARCHIVO PLANO CON ESPACIOS EN BLANCO A LA DEREC
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).