Lire STDIN (SYSIN) en COBOL
Question
Je veux lire les lignes de STDIN (aka SYSIN) en COBOL. Pour l'instant je veux juste les imprimer pour que je sais que je les ai. De tout ce que je lis, il ressemble à ceci devrait fonctionner:
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.
compilant (en utilisant open-cobol et COBC -x), mais en cours d'exécution j'obtenir:
libcob: File does not exist (STATUS = 35) File : ''
Qu'est-ce que je fais mal?
La solution
Autres conseils
Mon COBOL remonte au DPS-6-GCOS runnong minicomputer 6 et je touché que a duré 1992. Mais à l'époque, nous avons utilisé ACCEPTER pour obtenir une entrée de stdin.
Vous pouvez simplement utiliser le mot-clé ACCEPT pour saisir la sortie du clavier. Boucle à travers jusqu'à ce que vous a frappé un mot-clé comme « fin », ou vous pouvez utiliser la valeur hexadécimale de EOF (1A, je crois).
Comme dans:
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.
Cela prendra tout jusqu'à un marqueur EOL (par exemple de retour).