我想从 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 : ''

我究竟做错了什么?

有帮助吗?

解决方案

在 上向我建议了以下内容 OpenCOBOL 论坛.

SELECT SYSIN ASSIGN TO KEYBOARD ORGANIZATION LINE SEQUENTIAL.

正是关键字 KEYBOARD 使其发挥作用。

显然 DISPLAY 与 STDOUT 是一个类似的词,但我还没有测试过。

其他提示

我的COBOL的历史可以追溯到DPS-6小型机runnong GCOS-6和我持续了感动,在1992年,但当时我们曾经接受从标准输入获取输入。

您可以只使用接受关键字抢键盘输出。遍历,直到命中的关键字为“结束”,或者可以使用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标记(例如返回)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top