2016-12-27 30 views
0

COBOL STDINから3行の入力を読み込み、3つの異なる変数に格納しようとしています。これらの入力でCOMPUTEを使用して計算を実行する予定です。COBOL:SYSINからINPUTを読み込み、変数に格納

私はTutorialsPoint(COBOLをコーディングする方法を教えています)を見ていますが、役に立たないものです。

IDENTIFICATION DIVISION. 
PROGRAM-ID. SOLUTION. 

ENVIRONMENT DIVISION. 
INPUT-OUTPUT SECTION. 
FILE-CONTROL. 
SELECT SYSIN ASSIGN TO KEYBOARD ORGANIZATION LINE SEQUENTIAL. 

DATA DIVISION. 
    FILE SECTION. 
    FD SYSIN. 
    01 INPUT-LINE PIC X(255). 
    88 EOF VALUE HIGH-VALUES. 

    WORKING-STORAGE SECTION. 
    01 MEAL-COST PIC 9(2)V9(2). 
    01 TIP-PERCENT PIC 9(3). 
    01 TAX-PERCENT PIC 9(3). 

PROCEDURE DIVISION. 
    OPEN INPUT SYSIN 
    READ SYSIN 
    AT END SET EOF TO TRUE 
    END-READ 

    DISPLAY MEAL-COST 
    DISPLAY TIP-PERCENT 
    DISPLAY TAX-PERCENT 

    CLOSE SYSIN. 

STOP RUN. 

入力フォームであろう:

12.00

、結果が整数で下記

私は今まで持っているコードであります(他のプログラミング言語の意味で)。

変数を格納する唯一の方法は、各順次反復時にカウンタを持ち、各変数(食事コスト、チップパーセンテージ、税率)に格納することです。しかし、おそらくこれを行う簡単な方法がありますか?

これは私がやったことですが、入力を取得して正しい変数に格納する方法がまだあると思います。誰かが何か提案があれば、それは非常に感謝します。

IDENTIFICATION DIVISION. 
PROGRAM-ID. SOLUTION. 

ENVIRONMENT DIVISION. 
INPUT-OUTPUT SECTION. 
FILE-CONTROL. 
SELECT SYSIN ASSIGN TO KEYBOARD ORGANIZATION LINE SEQUENTIAL. 

DATA DIVISION. 
    FILE SECTION. 
    FD SYSIN. 
    01 INPUT-LINE PIC X(255). 
    88 EOF VALUE HIGH-VALUES. 

    WORKING-STORAGE SECTION. 
    01 MEAL-COST PIC 9(3)V9(2). 
    01 TIP-PERCENT PIC 9(3)V9(2). 
    01 TAX-PERCENT PIC 9(3)V9(2). 
    01 TIP PIC 9(3)V9(2). 
    01 TAX PIC 9(3)V9(2). 
    01 TOTAL-COST PIC 9(3)V9(2). 
    01 ROUNDED-TOTAL-COST PIC 9(3). 
    01 FORMATTED-RESULT PIC Z(3). 

PROCEDURE DIVISION. 
    OPEN INPUT SYSIN 
    READ SYSIN 
    AT END SET EOF TO TRUE 
    NOT AT END 
    MOVE INPUT-LINE TO MEAL-COST 
    READ SYSIN 
    AT END SET EOF TO TRUE 
    NOT AT END 
    MOVE INPUT-LINE TO TIP-PERCENT 
    READ SYSIN 
    AT END SET EOF TO TRUE 
    NOT AT END 
    MOVE INPUT-LINE TO TAX-PERCENT 
    END-READ. 

    COMPUTE TIP= (MEAL-COST * TIP-PERCENT/100). 
    COMPUTE TAX= (MEAL-COST * TAX-PERCENT/100). 

    COMPUTE TOTAL-COST= MEAL-COST + TIP + TAX. 

    COMPUTE ROUNDED-TOTAL-COST ROUNDED = TOTAL-COST. 

    MOVE ROUNDED-TOTAL-COST TO FORMATTED-RESULT. 

    DISPLAY "The total meal cost is" FORMATTED-RESULT " dollars.". 

    CLOSE SYSIN. 

STOP RUN. 
+0

私もACCEPT使用することを試みました 'ACCEPT TAX-PERCENT' ' DISPLAYの食事COST' 'DISPLAYのTIP-PERCENT' ' DISPLAYのTAX-PERCENT' 'CLOSE SYSIN.' – qxzsilver

+2

ACCEPT使用するときは、OPENを使用しないでください。 ACCEPTデータ名。コンパイラによっては、入力が変換されるかどうかは関係ありません。では、どのコンパイラ/ OSを使用していますか? –

+0

[内在関数](http://stackoverflow.com/documentation/cobol/7580/intrinsic-functions)、特に 'FUNCTION NUMVAL'もチェックしたいと思うでしょう。 –

答えて

0

SYSINを開く/閉じる必要はありません。

ジャストコードは:TIP-PERCENT` `PROCEDUREのDIVISION.`が ` OPEN INPUT SYSIN` `食事COST` をACCEPT` ACCEPT:

ACCEPT MEAL-COST FROM SYSIN 
関連する問題