9

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 : ''

私は何が間違っているのですか?

4

3 に答える 3

6

OpenCOBOLフォーラムで次のことが提案されました。

SELECT SYSIN ASSIGN TO KEYBOARD ORGANIZATION LINE SEQUENTIAL.

それを機能させるのはキーワードKEYBOARDです。

どうやらDISPLAYはSTDOUTに似た言葉ですが、私はそれをテストしていません。

于 2009-06-03T23:44:05.650 に答える
4

私のCOBOLは、GCOS-6を実行しているDPS-6ミニコンピューターにまでさかのぼり、1992年に最後に触れました。しかし、当時はACCEPTを使用してstdinから入力を取得していました。

于 2009-06-02T11:39:38.147 に答える
0

ACCEPTキーワードを使用して、キーボード出力を取得できます。'end'などのキーワードをヒットするまでループします。または、EOFの16進値(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マーカーになります(例:返品)。

于 2009-07-12T11:19:19.780 に答える