我试图从COBOL STDIN中读取3行输入,并将它们存储到3个不同的变量中。我计划在这些输入上使用COMPUTE来执行计算。
我一直在研究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
5
20
并且结果将是一个整数(在其他编程语言的意义上)。
我看到的存储变量的唯一方法是,在每次连续迭代时,有一个计数器并将其存储到每个变量(MEAL-COST,TIP-PERCENT,TAX-PERCENT)。然而,也许有一种更简单的方法可以做到这一点?
这就是我所做的,但我相信还有更好的方法来获得输入并将它们存储到正确的变量中。如果有人有任何建议,我们将不胜感激。
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.发布于 2017-01-07 18:13:51
您不需要打开/关闭SYSIN。
只需编写代码:
ACCEPT MEAL-COST FROM SYSINhttps://stackoverflow.com/questions/41338769
复制相似问题