Leer STDIN (SYSIN) en COBOL
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?
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).