2009-06-02 28 views
8

COBOLでSTDIN(別名SYSIN)の行を読みたい。今のところ私はただそれらを印刷して、私はそれらを持っていることを知っている。 (オープンCOBOLとCOBCの-xを使用して)コンパイルされること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. 

が、それは私が手で実行:すべてから私は、これは動作するはずのように見える読んでいる私は何をやっている

libcob: File does not exist (STATUS = 35) File : '' 

を違う?

答えて

4

OpenCOBOL forumsで私に次のことが示唆されました。

SELECT SYSIN ASSIGN TO KEYBOARD ORGANIZATION LINE SEQUENTIAL. 

これは機能するキーワードKEYBOARDです。

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

4

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

+0

代わりにACCEPTを使用しても問題ありませんが(大量のデータでは悪い習慣とみなされていますが)、EOFを検出するループを構築するにはどうすればよいですか? – singpolyma

0

キーボード出力を取得するためにACCEPTキーワードを使用することができます。あなたが 'end'のようなキーワードにヒットするまでループするか、EOF(1A、私は信じる)の16進値を使うことができます。 (例えば返す)EOLマーカにすべてを取り上げる

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. 

:同様に

関連する問題