Ver Mensaje Individual
  #1
Antiguo 10 de diciembre de 2024, 14:03
Sergio
Acabo de llegar...
Última Actividad 28.12.2024 21:15
Posts Posts: 4
Likes enviados Enviados: 3
Likes recibidos Recibidos: 1
Tabla Problema al leer siguiente registro
0 Inactivo Inactivo

Buenos días,

Hace unas semanas realicé un curso de COBOL en Udemy y quiero practicar y aprender más sobre el lenguaje de programación COBOL.

Estoy intentando realizar un ejercicio muy básico pero no consigo que lea el siguiente registro de mi archivo de entrada. Cuando lee el 1er registro reconoce que es el final del archivo en la parte de "AT END" del READ. El objetivo es recorrer el fichero y grabarlo en el fichero de salida en forma de tabla.

Comparto código y fichero entrada y salida. Tengo entendido que en el fichero de entrada tiene que estar todo en una línea para que lo reconozca. Estoy usando el compilador OpenCobolIDE en Windows. No sé si hay compiladores más potentes que se usen más en el día a día.

Código COBOL:
  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID.                  SeqReadNo88.
  3.       *>AUTHOR.                    SERGIO.
  4.       *>INSTALLATION.              CURSO COBOL.
  5.       *>DATE-WRITTEN.              26/09/2024.
  6.       *>DATE-COMPILED.
  7.       *>SECURITY.                  NO ES CONFIDENCIAL.
  8.       *>--------------------------------------------------------------*
  9.       *>OBJETIVO:LEER FICHERO Y VOLCAR DATOS EN FICHERO DE SALIDA     *
  10.       *>--------------------------------------------------------------*
  11.  
  12.        ENVIRONMENT DIVISION.
  13.        CONFIGURATION SECTION.
  14.        SOURCE-COMPUTER.           IBM-3083.
  15.        OBJECT-COMPUTER.           IBM-3083.
  16.  
  17.        INPUT-OUTPUT SECTION.
  18.        FILE-CONTROL.
  19.            SELECT STUDENT ASSIGN TO "C:\COBOL\Archivos\1.STUDENTS.txt".
  20.            SELECT REPORTE ASSIGN TO "C:\COBOL\Archivos\REPORTE1.txt".
  21.  
  22.        DATA DIVISION.
  23.        FILE SECTION.
  24.        FD  STUDENT
  25.         *>LABEL RECORDS ARE STANDARD
  26.            RECORD CONTAINS 60 CHARACTERS
  27.            BLOCK CONTAINS 0 RECORDS.
  28.         *>DATA RECORD IS REG_EMPLEADOS.
  29.        01  REG-STUDENT            PIC X(60).
  30.        FD  REPORTE
  31.         *>LABEL RECORDS ARE STANDARD
  32.            RECORD CONTAINS 400 CHARACTERS
  33.            BLOCK CONTAINS 0 RECORDS.
  34.         *>DATA RECORD IS REG_REPORTE.
  35.        01  REG-REPORTE     PIC X(400).
  36.  
  37.        WORKING-STORAGE SECTION.
  38.        01  STUDENT-DETALLE.
  39.            05 STUDENT-ID   PIC 9(7).
  40.            05 NOMBRE       PIC X(8).
  41.            05 INITIALS     PIC X(2).
  42.            05 DATEOFBIRTH.
  43.               06 YEAR      PIC 9(4).
  44.               06 MONTH     PIC 9(2).
  45.               06 DIA       PIC 9(2).
  46.            05 COURSE-ID    PIC X(4).
  47.            05 GENDER       PIC X(1).
  48.  
  49.        01  SW-FIN          PIC X(3) VALUE SPACES.
  50.  
  51.        01  WS-TITULO-1.
  52.            05 FILLER      PIC X(45) VALUE SPACES.
  53.            05 WS-TIT      PIC X(16) VALUE "DATOS DE ALUMNOS".
  54.            05 FILLER      PIC X(27) VALUE SPACES.
  55.  
  56.        01  WS-GUIONES.
  57.            05 FILLER       PIC X(1)  VALUE SPACES.
  58.            05 FILLER       PIC X(120) VALUE ALL "-".
  59.            05 FILLER       PIC X(1)  VALUE SPACES.
  60.  
  61.        01  WS-TITULO-2.
  62.            05 FILLER       PIC X(04) VALUE SPACES.
  63.            05 NUMERO       PIC X(6)  VALUE "NUMERO".
  64.            05 FILLER       PIC X(20) VALUE SPACES.
  65.            05 APELLIDO     PIC X(8)  VALUE "APELLIDO".
  66.            05 FILLER       PIC X(10) VALUE SPACES.
  67.            05 INICIALES    PIC X(9)  VALUE "INICIALES".
  68.            05 FILLER       PIC X(10) VALUE SPACES.
  69.            05 DATESOFBIRTH PIC X(14) VALUE "AÑO NACIMIENTO".
  70.            05 FILLER       PIC X(10) VALUE SPACES.
  71.            05 CODIGOCURSO  PIC X(12) VALUE "CODIGO CURSO".
  72.            05 FILLER       PIC X(10) VALUE SPACES.
  73.            05 GENERO       PIC X(12) VALUE "GENERO".
  74.  
  75.        01  WS-STUDENT-DETALLE.
  76.            05 FILLER           PIC X(04) VALUE SPACES.
  77.            05 WS-STUDENT-ID    PIC 9(7).
  78.            05 FILLER           PIC X(20) VALUE SPACES.
  79.            05 WS-STUDENT-NAME  PIC X(8).
  80.            05 FILLER           PIC X(13) VALUE SPACES.
  81.            05 WS-INITIALS      PIC X(2).
  82.            05 FILLER           PIC X(16) VALUE SPACES.
  83.            05 WS-DATEOFBIRTH.
  84.               10 YEAR          PIC 9(4).
  85.               10 MONTH         PIC 9(2).
  86.               10 DIA           PIC 9(2).
  87.            05 FILLER           PIC X(18) VALUE SPACES.
  88.            05 WS-COURSE-ID     PIC X(4).
  89.            05 FILLER           PIC X(16) VALUE SPACES.
  90.            05 WS-GENDER        PIC X(1).
  91.  
  92.        LINKAGE SECTION.
  93.  
  94.        PROCEDURE DIVISION.
  95.        010-INICIO.
  96.            PERFORM 020-ABRE-ARCHIVOS THRU 020-FIN
  97.            PERFORM 030-TITULOS       THRU 030-FIN
  98.            PERFORM 040-LEE           THRU 040-FIN
  99.            PERFORM 040-PROCESO       THRU 040-FIN
  100.                    UNTIL SW-FIN EQUAL "FIN".
  101.            PERFORM 050-FINAL         THRU 050-FIN
  102.            GOBACK.
  103.  
  104.        020-ABRE-ARCHIVOS.
  105.            OPEN INPUT STUDENT
  106.                 OUTPUT REPORTE.
  107.        020-FIN. EXIT.
  108.  
  109.        030-TITULOS.
  110.            WRITE REG-REPORTE FROM WS-TITULO-1 AFTER ADVANCING 1
  111.            WRITE REG-REPORTE FROM WS-GUIONES AFTER ADVANCING 1
  112.            WRITE REG-REPORTE FROM WS-TITULO-2 AFTER ADVANCING 1
  113.            WRITE REG-REPORTE FROM WS-GUIONES AFTER ADVANCING 1.
  114.        030-FIN. EXIT.
  115.  
  116.        040-PROCESO.
  117.            MOVE STUDENT-ID TO WS-STUDENT-ID
  118.            MOVE NOMBRE TO WS-STUDENT-NAME
  119.            MOVE INITIALS TO WS-INITIALS
  120.            MOVE DATEOFBIRTH TO WS-DATEOFBIRTH
  121.            MOVE COURSE-ID TO WS-COURSE-ID
  122.            MOVE GENDER TO WS-GENDER
  123.  
  124.            *>DISPLAY WS-STUDENT-NAME.
  125.           *>DISPLAY REG-STUDENT.
  126.            WRITE REG-REPORTE FROM WS-STUDENT-DETALLE AFTER ADVANCING 1.
  127.  
  128.            *>DISPLAY WS-STUDENT-DETALLE
  129.           *>DISPLAY "VALOR ES " SW-FIN.
  130.  
  131.        040-LEE.
  132.            READ STUDENT INTO STUDENT-DETALLE AT END
  133.                 MOVE "FIN" TO SW-FIN.
  134.  
  135.        040-FIN. EXIT.
  136.  
  137.        050-FINAL.
  138.           *>DISPLAY SW-FIN
  139.            CLOSE STUDENT REPORTE.
  140.        050-FIN. EXIT.
Archivos Adjuntos
Tipo de Archivo: txt STUDENTS.txt (1.021 Bytes)Descargas: 24
Tipo de Archivo: txt REPORTE1.TXT (2,0 KB)Descargas: 49
Tipo de Archivo: txt PROG0010.txt (5,1 KB)Descargas: 60
Sergio is offline   Responder Con Cita