Pregunta

quiero leer las líneas de STDIN (también conocido como SYSIN) en COBOL. Por ahora sólo quiero imprimirlos de manera que sé que las tengo. De todo lo que estoy leyendo parece que esto debería funcionar:

IDENTIFICATION DIVISION.
PROGRAM-ID. APP.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.

    SELECT SYSIN ASSIGN TO DA-S-SYSIN ORGANIZATION LINE SEQUENTIAL.

DATA DIVISION.
FILE SECTION.

FD SYSIN.
01 ln PIC X(255).
    88 EOF VALUE HIGH-VALUES.
WORKING-STORAGE SECTION.

PROCEDURE DIVISION.
    OPEN INPUT SYSIN
    READ SYSIN
      AT END SET EOF TO TRUE
    END-READ
    PERFORM UNTIL EOF
        DISPLAY ln
        READ SYSIN
            AT END SET EOF TO TRUE
        END-READ
    END-PERFORM
    CLOSE SYSIN
    STOP RUN.

(que compila utilizando COBOL-abierta y -x COBC), pero corriendo, me sale:

libcob: File does not exist (STATUS = 35) File : ''

¿Qué estoy haciendo mal?

¿Fue útil?

Solución

El siguiente me fue sugerido en la OpenCOBOL foros .

SELECT SYSIN ASSIGN TO KEYBOARD ORGANIZATION LINE SEQUENTIAL.

Es la palabra clave de teclado que hace que funcione.

Al parecer DISPLAY es una palabra similar para la salida estándar, pero no he probado eso.

Otros consejos

Mi COBOL se remonta a la minicomputadora DPS-6 runnong GCOS-6 y duré tocó que en 1992. Pero en aquel entonces se utilizó ACEPTAR para obtener el aporte de la entrada estándar.

Usted sólo puede utilizar la palabra clave ACEPTAR para agarrar salida de teclado. Lazo a través hasta llegar a una palabra clave como 'fin', o se puede utilizar el valor hexadecimal de EOF (1A, creo).

Como en:

1000-YOUR-PARAGRAPH.
  ACCEPT WS-YOUR-VARIABLE.
  DISPLAY WS-YOUR-VARIABLE.
  IF WS-YOUR-VARIABLE IS NOT EQUAL TO EOF
    THEN GO TO 1000-YOUR-PARAGRAPH
  ELSE GO TO 1090-EXIT
  END-IF.
1090-EXIT.
  EXIT.

Eso llevará todo hasta un marcador de EOL (por ejemplo, el retorno).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top