我想在COBOL中读出STDIN (也称为SYSIN)中的行。现在,我只想把它们打印出来,这样我就知道我已经得到它们了。从我读到的所有内容来看,这看起来应该是可行的:
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.它可以编译(使用open-cobol和cobc -x),但是运行它会得到:
libcob: File does not exist (STATUS = 35) File : ''我做错了什么?
发布于 2009-06-03 23:44:06
以下是在OpenCOBOL forums上向我提出的建议。
SELECT SYSIN ASSIGN TO KEYBOARD ORGANIZATION LINE SEQUENTIAL.这是关键字键盘,使其工作。
DISPLAY显然是STDOUT的类似词,但我还没有测试过。
发布于 2009-06-02 11:39:38
我的COBOL可以追溯到运行GCOS-6的DPS-6小型机,我最后一次接触它是在1992年。但当时我们使用ACCEPT从标准输入中获取输入。
发布于 2009-07-12 11:19:20
您可以只使用ACCEPT关键字来获取键盘输出。循环直到你遇到一个关键字,比如'end',或者你可以使用EOF的十六进制值(我相信是1A)。
如下所示:
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.这将把所有东西都带到一个EOL标记(例如return)。
https://stackoverflow.com/questions/938760
复制相似问题