2016-09-30 7 views
1

私はcobolで簡単なプログラムを作ろうとしていますが、screenセクションを使って2つの数値の合計を計算します。私が使用しているコンパイラはOpenCobolIDEです。問題は、WS-N1変数が数値ではないというエラーが表示されることです。ここでは、コードは次のようになります。画面部分を使ってcobolで数値を受け入れる方法

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. 

答えて

2

私はあなたが(実際のメッセージを含めるように自分の投稿を編集してください)ADD文の処理中にランタイムエラーメッセージが表示されますね。

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

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

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

関連する問題