2

だから私は2つの数値の合計を計算するだけのスクリーンセクションを使ってcobolで簡単なプログラムを作ろうとしています。私が使用しているコンパイラは OpenCobolIDE です。問題は、WS-N1 変数が数値ではないというエラーが表示されることです。コードは次のとおりです。

IDENTIFICATION DIVISION.
PROGRAM-ID.PGM001.

ENVIRONMENT DIVISION.

DATA DIVISION.

WORKING-STORAGE SECTION.
01 WS-N1    PIC 9(04).
01 WS-N2    PIC 9(04).
01 WS-SUM   PIC 9(04).
01 WS-DUMMY PIC X(01).
SCREEN SECTION.
01 INPUT-SCREEN.
    02 BLANK SCREEN.
    02 LINE 1  COL 1  VALUE "--------------------------------".
    02 LINE 2  COL 1  VALUE "-            INPUT             -".
    02 LINE 3  COL 1  VALUE "--------------------------------".
    02 LINE 4  COL 1  VALUE "-(1).NUMBER 1   :              -".
    02 LINE 4  COL 18 PIC 9(10) TO WS-N1.
    02 LINE 5  COL 1  VALUE "-(2).NUMBER 2   :              -".
    02 LINE 5  COL 18 PIC 9(10) TO WS-N2.
    02 LINE 6  COL 1  VALUE "--------------------------------".
01 OUTPUT-SCREEN.
    02 BLANK SCREEN.
    02 LINE 1  COL 1  VALUE "--------------------------------".
    02 LINE 2  COL 1  VALUE "-             SUM              -".
    02 LINE 3  COL 1  VALUE "--------------------------------".
    02 LINE 4  COL 1  VALUE "-(1).SUM        :              -".
    02 LINE 4  COL 18 PIC 9(04) FROM WS-SUM.
    02 LINE 5  COL 1  VALUE "--------------------------------".
    02 LINE 6  COL 1  VALUE "EXIT ->                         ".
PROCEDURE DIVISION.
A-100.
    DISPLAY INPUT-SCREEN.
    ACCEPT  INPUT-SCREEN.

    GO TO A-200.
A-200.
    ADD WS-N1 TO WS-N2 GIVING WS-SUM.

    GO TO A-300.
A-300.
    DISPLAY OUTPUT-SCREEN.
    ACCEPT  WS-DUMMY AT LINE 7 COL 8.
    STOP RUN.
4

1 に答える 1

3

ADDステートメントの処理中に実行時エラー メッセージが表示されると思います(投稿を編集して、実際のメッセージを含めてください)。

これは、すべての先行ゼロを使用して var を入力しない場合にのみ発生すると思います。

使用するコンパイラでこの問題を解決するには、 のMOVE FUNCTION NUMVAL (WS-N1) to WS-N1直後にを追加する必要がありACCEPT INPUT-SCREENます。

ところで: OCIDE の標準 Windows インストールを使用する場合は、次のコンパイラを使用します: GnuCOBOL 1.1 (公式の Mingw パッケージ)

于 2016-09-30T21:08:46.937 に答える