Iniciar Sesión

Ver la Versión Completa : [Sintaxis] Mostrar 2 variables de un archivo


JonathanDemons_123
19 de enero de 2024, 17:06
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


*------
*-------------------------------------------------
IDENTIFICATION DIVISION.
*--------------------------------------------------
PROGRAM-ID. datos.
AUTHOR. Juan
DATE-WRITTEN. 2023
SECURITY. =============================================
=============================================
*--------------------------------------------------------------------
ENVIRONMENT DIVISION.
*--------------------------------------------------------------------
CONFIGURATION SECTION.
SOURCE-COMPUTER. UNIX.
OBJECT-COMPUTER. UNIX.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT RTRES ASSIGN TO "./DATOS.TXT"
ORGANIZATION IS LINE SEQUENTIAL.
*--------------------------------------------------------------
DATA DIVISION.
FILE SECTION.
FD RTRES.
01 REGISTRO.
05 R3 PIC X(156).

************************************************** ****************
WORKING-STORAGE SECTION.

01 FDR3.
05 WS-STUDENT-ID PIC 9(15).
05 WS-NAME PIC A(55).
01 FIN PIC A(1).
************************************************** ****************
PROCEDURE DIVISION.
************************************************** ****************
OPEN INPUT RTRES.
PERFORM UNTIL FIN='Y'
READ RTRES INTO FDR3
AT END MOVE 'Y' TO FIN
NOT AT END DISPLAY FDR3(2:5)
END-READ
END-PERFORM.
CLOSE RTRES.
STOP RUN.

Asi va mi programa



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:


WORKING-STORAGE SECTION.

01 FDR3.
05 WS-STUDENT-ID PIC 9(15).
05 WS-NAME PIC A(55).
01 FIN PIC A(1).

01 mi-fichero.
05 nombre pic x(20).
05 direccion pic x(20).

************************************************** ****************
PROCEDURE DIVISION.
************************************************** ****************
OPEN INPUT RTRES.
PERFORM UNTIL FIN='Y'
READ RTRES INTO mi-fichero
AT END
MOVE 'Y' TO FIN
NOT AT END
DISPLAY "Nombre : " nombre
DISPLAY "Direccion: " direccion
END-READ
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).