Ver Mensaje Individual
  #1
Antiguo 16 de diciembre de 2023, 12:18
dariodr
Forero
Última Actividad 20.09.2026 10:04
Posts Posts: 57
Likes enviados Enviados: 17
Likes recibidos Recibidos: 11
Sonido Leer dos archivos y crear uno nuevo.
0 Inactivo Inactivo

Buenas tengo este enunciado:
[ATTACH=CONFIG]950[/ATTACH]

El archivo principal es este. Crea dos archivos.

Código COBOL:
  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID. video-rent.
  3.      *
  4.        ENVIRONMENT DIVISION.
  5.        INPUT-OUTPUT SECTION.
  6.        FILE-CONTROL.
  7.            SELECT rent-file ASSIGN to "alquiler.txt"
  8.               ORGANIZATION IS LINE SEQUENTIAL.
  9.            SELECT ventas-file ASSIGN to "ventas.txt"
  10.               ORGANIZATION IS LINE SEQUENTIAL.
  11.      *
  12.        DATA DIVISION.
  13.        FILE SECTION.
  14.        FD  rent-file.
  15.        01  rent-record.
  16.            03 item-no         PIC 9(3).
  17.            03 video-name      PIC x(20).
  18.            03 tapes-in-stock  PIC 9(3).
  19.      *
  20.        FD ventas-file.
  21.        01  ventas-record.
  22.            03 item-no-v       PIC 9(3).
  23.            03 video-name-v    PIC x(20).
  24.            03 tapes-for-sale  PIC 9(3).
  25.      *    
  26.        WORKING-STORAGE SECTION.
  27.        77  mas-datos  PIC X VALUE SPACES.  
  28.      *
  29.        PROCEDURE DIVISION.
  30.        MAIN-PROCEDURE.
  31.            PERFORM abrir-archivo.
  32.            PERFORM ingreso-datos until mas-datos = 'n' OR 'N'.
  33.            PERFORM cerrar-archivo.
  34.            STOP RUN.
  35.      *
  36.        abrir-archivo.
  37.            OPEN OUTPUT rent-file
  38.                 OUTPUT ventas-file.
  39.      *
  40.        ingreso-datos.
  41.            DISPLAY 'Item Nro: ' NO ADVANCING.
  42.            ACCEPT item-no.
  43.            DISPLAY 'Nombre del Video: ' NO ADVANCING.
  44.            ACCEPT video-name.
  45.            DISPLAY 'Cintas en stock: ' NO ADVANCING.
  46.            ACCEPT tapes-in-stock.
  47.            WRITE rent-record.
  48.            MOVE item-no TO item-no-v.
  49.            MOVE video-name TO video-name-v.
  50.            Display 'Cintas para vender: ' NO ADVANCING.
  51.            ACCEPT tapes-for-sale.
  52.            WRITE ventas-record.
  53.            DISPLAY 'Agregar otro video s/n: ' NO ADVANCING.
  54.            ACCEPT mas-datos.
  55.      *
  56.        cerrar-archivo.
  57.            close rent-file
  58.                  ventas-file.  

Y el archivo que crea uno nuevo es este:

Código COBOL:
  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID. master.
  3.      *
  4.        ENVIRONMENT DIVISION.
  5.        INPUT-OUTPUT SECTION.
  6.        FILE-CONTROL.
  7.            SELECT master-file ASSIGN TO "master.txt"
  8.               ORGANIZATION IS LINE SEQUENTIAL.
  9.            SELECT rent-file   ASSIGN to "alquiler.txt"
  10.               ORGANIZATION IS LINE SEQUENTIAL.
  11.            SELECT ventas-file ASSIGN to "ventas.txt"
  12.               ORGANIZATION IS LINE SEQUENTIAL.
  13.      *
  14.        DATA DIVISION.
  15.        FILE SECTION.
  16.        FD  master-file.
  17.        01  master-rec.
  18.            03 item-no-m       PIC 9(3).
  19.            03 video-name-m    PIC x(20).
  20.            03 cintas-stock-m  PIC 9(3).
  21.            03 cintas-ventas-m PIC 9(3).
  22.      *    
  23.        FD  rent-file.
  24.        01  rent-record.
  25.            03 item-no         PIC 9(3).
  26.            03 video-name      PIC x(20).
  27.            03 tapes-in-stock  PIC 9(3).
  28.      *
  29.        FD ventas-file.
  30.        01  ventas-record.
  31.            03 item-no-v       PIC 9(3).
  32.            03 video-name-v    PIC x(20).
  33.            03 tapes-for-sale  PIC 9(3).
  34.      *    
  35.        WORKING-STORAGE SECTION.
  36.        77  fin-archivo  PIC X VALUE SPACES.  
  37.      *
  38.        PROCEDURE DIVISION.
  39.        MAIN-PROCEDURE.
  40.            PERFORM abrir-archivo.
  41.            PERFORM proceso.
  42.            PERFORM cerrar-archivo.
  43.            STOP RUN.
  44.      *
  45.        abrir-archivo.
  46.            OPEN OUTPUT master-file
  47.                 INPUT rent-file
  48.                 INPUT ventas-file.
  49.      *
  50.        proceso.
  51.            PERFORM leer-fichero-rentas until fin-archivo = 's'.
  52.            PERFORM lee-fichero-ventas until fin-archivo = 's'.
  53.      *     PERFORM escribir-master.  
  54.      *
  55.        leer-fichero-rentas.
  56.            read rent-file
  57.               at end move 's' to fin-archivo
  58.               not at end perform proceso1
  59.             end-read.
  60.      *
  61.        lee-fichero-ventas.
  62.            read ventas-file
  63.               at end move 's' to fin-archivo
  64.               not at end perform proceso2
  65.            end-read.
  66.  
  67.        cerrar-archivo.
  68.            close master-file
  69.                  rent-file
  70.                  ventas-file.
  71.  
  72.        proceso1.
  73.            move item-no        to item-no-m.
  74.            move video-name     to video-name-m.
  75.            move tapes-in-stock to cintas-stock-m.
  76.            write master-rec.
  77.  
  78.        proceso2.
  79.            move tapes-for-sale to cintas-ventas-m.
  80.            write master-rec.
  81.      *
  82.        

Como leo dos archivos a la vez y grabo los datos en uno solo.
Saludos.
Imágenes Adjuntas
 
dariodr is offline   Responder Con Cita