Leggi STDIN (SYSIN) in COBOL
Domanda
Voglio leggere le linee di STDIN (aka SYSIN) in COBOL. Per ora voglio solo stamparli in modo che so io li ho. Da tutto quello che sto leggendo sembra che questo dovrebbe funzionare:
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.
che compila (utilizzando open-COBOL e cobc -x), ma che lo gestisce ottengo:
libcob: File does not exist (STATUS = 35) File : ''
Che cosa sto facendo di sbagliato?
Soluzione
Il seguente è stato suggerito a me sul OpenCOBOL forum .
SELECT SYSIN ASSIGN TO KEYBOARD ORGANIZATION LINE SEQUENTIAL.
E 'la parola chiave tastiera che lo fa funzionare.
A quanto pare DISPLAY è una parola simile per STDOUT, ma non ho ancora testato questo.
Altri suggerimenti
Il mio COBOL risale al DPS-6 minicomputer runnong GCOS-6 e mi è durato toccato che nel 1992. Ma allora abbiamo usato ACCETTA per ricevere input da stdin.
Si può semplicemente utilizzare la parola chiave ACCEPT per afferrare l'uscita della tastiera. Loop attraverso fino a colpire una parola chiave come 'fine', oppure è possibile utilizzare il valore esadecimale di EOF (1A, credo).
Come in:
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.
Ci vorrà tutto fino a un indicatore EOL (ad esempio ritorno).