Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   COBOL - General (https://www.cobolforo.es/forumdisplay.php?f=44)
-   -   [Sintaxis] Mostrar 2 variables de un archivo (https://www.cobolforo.es/showthread.php?t=1714)

JonathanDemons_123 19 de enero de 2024 17:06

Mostrar 2 variables de un archivo
 
Buenos dias Mis compas, estoy aprendiendo cobol:

Una de mis practicas es que de un archivo, sea lea y que imprima la linea del archivo.
De la posicion 1 al 20 es el nombre, de la 21 a la 40 es la direccion.

Y mi programa se tiene que imprimir
Nombre:
Direccion:

Esto debe se ser por cada linea, yo manejo sql server, debe de ser una funcion tipo substring, pero no encuentro bien la documentacion


Código COBOL:
  1.      *------
  2.      *-------------------------------------------------
  3.        IDENTIFICATION                   DIVISION.
  4.      *--------------------------------------------------
  5.        PROGRAM-ID.                      datos.
  6.        AUTHOR.                          Juan
  7.        DATE-WRITTEN.                    2023
  8.        SECURITY.              =============================================
  9.                               =============================================
  10.      *--------------------------------------------------------------------
  11.        ENVIRONMENT                       DIVISION.
  12.      *--------------------------------------------------------------------
  13.        CONFIGURATION                     SECTION.
  14.        SOURCE-COMPUTER.                  UNIX.
  15.        OBJECT-COMPUTER.                  UNIX.
  16.        INPUT-OUTPUT                       SECTION.
  17.        FILE-CONTROL.
  18.             SELECT RTRES ASSIGN TO "./DATOS.TXT"
  19.             ORGANIZATION IS LINE SEQUENTIAL.
  20.      *--------------------------------------------------------------
  21.        DATA DIVISION.
  22.        FILE                             SECTION.
  23.        FD RTRES.
  24.        01 REGISTRO.
  25.           05 R3 PIC X(156).
  26.  
  27.       ******************************************************************
  28.        WORKING-STORAGE                  SECTION.
  29.  
  30.        01 FDR3.
  31.           05 WS-STUDENT-ID PIC 9(15).
  32.           05 WS-NAME PIC A(55).
  33.        01 FIN PIC A(1).
  34.      ******************************************************************
  35.        PROCEDURE                        DIVISION.
  36.      ******************************************************************
  37.        OPEN INPUT RTRES.
  38.           PERFORM UNTIL FIN='Y'
  39.           READ RTRES INTO FDR3
  40.             AT END MOVE 'Y' TO FIN
  41.             NOT AT END DISPLAY FDR3(2:5)
  42.           END-READ
  43.         END-PERFORM.
  44.        CLOSE RTRES.
  45.        STOP RUN.

Asi va mi programa


Comentario de Moderador

Utiliza los botones de resalto de sintaxis

Kuk 20 de enero de 2024 11:33

@JonathanDemons_123, la "función substring" en Cobol es nativa, forma parte de la sintaxis del lenguaje. Es decir, en cualquier variable alfanumérica puedes extraer un substring de la manera que lo haces en la línea 41 de tu código: variable(posición:longitud)

Ahora, si tienes una estructura en la que lees tu fichero, no hace falta substring porque te lo hace la "máscara" que se aplica con tu estructura:

Código COBOL:
  1.        WORKING-STORAGE                  SECTION.
  2.  
  3.        01 FDR3.
  4.           05 WS-STUDENT-ID PIC 9(15).
  5.           05 WS-NAME PIC A(55).
  6.        01 FIN PIC A(1).
  7.        
  8.        01  mi-fichero.
  9.            05  nombre      pic x(20).
  10.            05  direccion   pic x(20).
  11.          
  12.       ******************************************************************
  13.        PROCEDURE                        DIVISION.
  14.      ******************************************************************
  15.        OPEN INPUT RTRES.
  16.           PERFORM UNTIL FIN='Y'
  17.           READ RTRES INTO mi-fichero
  18.             AT END
  19.                 MOVE 'Y' TO FIN
  20.             NOT AT END
  21.                 DISPLAY "Nombre   : " nombre
  22.                 DISPLAY "Direccion: " direccion
  23.           END-READ
  24.         END-PERFORM

Un consejo: no pongas puntos después de las sentencias. El único punto obligatorio en PROCEDURE es el punto final (en tu código, después del STOP RUN).


La franja horaria es GMT +2. Ahora son las 13:55.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.