Buenas tengo este enunciado:
[ATTACH=CONFIG]950[/ATTACH]
El archivo principal es este. Crea dos archivos.
Código COBOL:
IDENTIFICATION DIVISION.
PROGRAM-ID. video-rent.
*
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT rent-file ASSIGN to "alquiler.txt"
ORGANIZATION IS LINE SEQUENTIAL.
SELECT ventas-file ASSIGN to "ventas.txt"
ORGANIZATION IS LINE SEQUENTIAL.
*
DATA DIVISION.
FILE SECTION.
FD rent-file.
01 rent-record.
03 item-no PIC 9(3).
03 video-name PIC x(20).
03 tapes-in-stock PIC 9(3).
*
FD ventas-file.
01 ventas-record.
03 item-no-v PIC 9(3).
03 video-name-v PIC x(20).
03 tapes-for-sale PIC 9(3).
*
WORKING-STORAGE SECTION.
77 mas-datos PIC X VALUE SPACES.
*
PROCEDURE DIVISION.
MAIN-PROCEDURE.
PERFORM abrir-archivo.
PERFORM ingreso-datos until mas-datos = 'n' OR 'N'.
PERFORM cerrar-archivo.
STOP RUN.
*
abrir-archivo.
OPEN OUTPUT rent-file
OUTPUT ventas-file.
*
ingreso-datos.
DISPLAY 'Item Nro: ' NO ADVANCING.
ACCEPT item-no.
DISPLAY 'Nombre del Video: ' NO ADVANCING.
ACCEPT video-name.
DISPLAY 'Cintas en stock: ' NO ADVANCING.
ACCEPT tapes-in-stock.
WRITE rent-record.
MOVE item-no TO item-no-v.
MOVE video-name TO video-name-v.
Display 'Cintas para vender: ' NO ADVANCING.
ACCEPT tapes-for-sale.
WRITE ventas-record.
DISPLAY 'Agregar otro video s/n: ' NO ADVANCING.
ACCEPT mas-datos.
*
cerrar-archivo.
close rent-file
ventas-file.
Y el archivo que crea uno nuevo es este:
Código COBOL:
IDENTIFICATION DIVISION.
PROGRAM-ID. master.
*
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT master-file ASSIGN TO "master.txt"
ORGANIZATION IS LINE SEQUENTIAL.
SELECT rent-file ASSIGN to "alquiler.txt"
ORGANIZATION IS LINE SEQUENTIAL.
SELECT ventas-file ASSIGN to "ventas.txt"
ORGANIZATION IS LINE SEQUENTIAL.
*
DATA DIVISION.
FILE SECTION.
FD master-file.
01 master-rec.
03 item-no-m PIC 9(3).
03 video-name-m PIC x(20).
03 cintas-stock-m PIC 9(3).
03 cintas-ventas-m PIC 9(3).
*
FD rent-file.
01 rent-record.
03 item-no PIC 9(3).
03 video-name PIC x(20).
03 tapes-in-stock PIC 9(3).
*
FD ventas-file.
01 ventas-record.
03 item-no-v PIC 9(3).
03 video-name-v PIC x(20).
03 tapes-for-sale PIC 9(3).
*
WORKING-STORAGE SECTION.
77 fin-archivo PIC X VALUE SPACES.
*
PROCEDURE DIVISION.
MAIN-PROCEDURE.
PERFORM abrir-archivo.
PERFORM proceso.
PERFORM cerrar-archivo.
STOP RUN.
*
abrir-archivo.
OPEN OUTPUT master-file
INPUT rent-file
INPUT ventas-file.
*
proceso.
PERFORM leer-fichero-rentas until fin-archivo = 's'.
PERFORM lee-fichero-ventas until fin-archivo = 's'.
* PERFORM escribir-master.
*
leer-fichero-rentas.
read rent-file
at end move 's' to fin-archivo
not at end perform proceso1
end-read.
*
lee-fichero-ventas.
read ventas-file
at end move 's' to fin-archivo
not at end perform proceso2
end-read.
cerrar-archivo.
close master-file
rent-file
ventas-file.
proceso1.
move item-no to item-no-m.
move video-name to video-name-m.
move tapes-in-stock to cintas-stock-m.
write master-rec.
proceso2.
move tapes-for-sale to cintas-ventas-m.
write master-rec.
*
Como leo dos archivos a la vez y grabo los datos en uno solo.
Saludos.