Lesen STDIN (SYSIN) in COBOL
Frage
Ich möchte die Zeilen aus STDIN (aka SYSIN) in COBOL lesen. Vorerst möchte ich sie nur drucken, so dass ich weiß, dass ich sie habe. Ich lese von allem, was es sieht aus wie das funktionieren soll:
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.
Das compiliert (mit open-cobol und cobc -x), aber es läuft erhalte ich:
libcob: File does not exist (STATUS = 35) File : ''
Was mache ich falsch?
Lösung
Andere Tipps
Meine COBOL geht zurück auf die DPS-6 Minicomputer Runnong GCOS-6 und ich berührte gedauert, dass im Jahr 1992. Aber damals haben wir ACCEPT Eingabe von stdin zu erhalten.
Sie können nur die ACCEPT verwenden Keyword-Tastatur Ausgabe zu greifen. Schleife durch, bis Sie traf ein Stichwort wie ‚Ende‘, oder Sie können den Hex-Wert von EOF verwenden (1A, glaube ich).
Wie 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.
Das wird bis zu einem EOL-Marker alles nehmen (z zurück).