首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >COBOL:从SYSIN读取输入并存储到变量

COBOL:从SYSIN读取输入并存储到变量
EN

Stack Overflow用户
提问于 2016-12-27 11:50:27
回答 1查看 2.2K关注 0票数 0

我试图从COBOL STDIN中读取3行输入,并将它们存储到3个不同的变量中。我计划在这些输入上使用COMPUTE来执行计算。

我一直在研究TutorialsPoint (我正在自学如何编写COBOL语言),但一无所获。

下面是我到目前为止的代码:

代码语言:javascript
复制
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)。然而,也许有一种更简单的方法可以做到这一点?

这就是我所做的,但我相信还有更好的方法来获得输入并将它们存储到正确的变量中。如果有人有任何建议,我们将不胜感激。

代码语言:javascript
复制
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.
EN

回答 1

Stack Overflow用户

发布于 2017-01-07 18:13:51

您不需要打开/关闭SYSIN。

只需编写代码:

代码语言:javascript
复制
ACCEPT MEAL-COST FROM SYSIN
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41338769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档