首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在COBOL中读取STDIN (SYSIN)

在COBOL中读取STDIN (SYSIN)
EN

Stack Overflow用户
提问于 2009-06-02 10:01:06
回答 3查看 5.5K关注 0票数 9

我想在COBOL中读出STDIN (也称为SYSIN)中的行。现在,我只想把它们打印出来,这样我就知道我已经得到它们了。从我读到的所有内容来看,这看起来应该是可行的:

代码语言:javascript
复制
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),但是运行它会得到:

代码语言:javascript
复制
libcob: File does not exist (STATUS = 35) File : ''

我做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-03 23:44:06

以下是在OpenCOBOL forums上向我提出的建议。

代码语言:javascript
复制
SELECT SYSIN ASSIGN TO KEYBOARD ORGANIZATION LINE SEQUENTIAL.

这是关键字键盘,使其工作。

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

票数 6
EN

Stack Overflow用户

发布于 2009-06-02 11:39:38

我的COBOL可以追溯到运行GCOS-6的DPS-6小型机,我最后一次接触它是在1992年。但当时我们使用ACCEPT从标准输入中获取输入。

票数 4
EN

Stack Overflow用户

发布于 2009-07-12 11:19:20

您可以只使用ACCEPT关键字来获取键盘输出。循环直到你遇到一个关键字,比如'end',或者你可以使用EOF的十六进制值(我相信是1A)。

如下所示:

代码语言:javascript
复制
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)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/938760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档