Partamos del siguiente ejemplo, en donde tenemos una copy llamada PERSONAS cuya estructura es la siguiente:
01 :REG:.
05 :REG:-NOMBRE PIC X(20).
05 :REG:-APELLIDOS PIC X(50).
05 :REG:-DIRECCION PIC X(50).
05 :REG:-LOCALIDAD PIC X(20).
05 :REG:-PROVINCIA PIC X(20).
05 :REG:-TLF-FIJO PIC 9(09).
05 :REG:-TLF-MOVIL PIC 9(09).
05 :REG:-EMAIL PIC X(30).
Al tener una copy con una estructura definida con :REG: nos facilita mucho las cosas porque podemos usar la misma copy tanto en un fichero de entrada como en un fichero de salida dentro del mismo programa. Para diferenciar una copy de otra sólo tendremos que hacer lo siguiente:
COPY PERSONAS REPLACING ==:REG:== BY ==FE-PERSONA==.
COPY PERSONAS REPLACING ==:REG:== BY ==FS-PERSONA==.
Los ficheros de entrada y salida estarán definidos así:
-> "INPUT-OUTPUT SECTION"/"FILE CONTROL":
SELECT FENTRADA ASSIGN TO FENTRADA
ORGANITAZION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS FS-FENTRADA.
SELECT FSALIDA ASSIGN TO FSALIDA
ORGANITAZION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS FS-FSALIDA.
-> "DATA DIVISION"/"FILE SECTION":
FD FENTRADA
BLOCK CONTAINS 0 RECORDS
RECORD 0 CHARACTERS
DATA RECORD R-FENTRADA.
01 R-FENTRADA PIC X(208).
FD FSALIDA
BLOCK CONTAINS 0 RECORDS
RECORD 0 CHARACTERS
DATA RECORD R-FSALIDA.
01 R-FSALIDA PIC X(208).
Cuando se haga referencia a estas copys tendremos que:
Leer del fichero de entrada:
READ FENTRADA INTO FE-PERSONA.
Escribir en el fichero de entrada:
WRITE R-FSALIDA FROM FS-PERSONA.
Y cuando hagamos referencia a uno de los campos de la copy PERSONAS, en función de si es del fichero de entrada o del fichero de salida, lo diferenciaremos de la siguiente manera:
FE-PERSONA-NOMBRE -> Campo NOMBRE de la copy del fichero de entrada
FS-PERSONA-NOMBRE -> Campo NOMBRE de la copy del fichero de salida
Basándonos en la misma copy del ejemplo, ¿cómo se hace para inicializar dicha copy? Muy fácil, de la siguiente manera:
INITIALIZE PERSONAS
REPLACING ALPHANUMERIC DATA BY SPACES
NUMERIC DATA BY ZEROES
Pues esto ha sido todo por hoy. Espero que os haya sido de utilidad este post.