2016-12-27 3 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
5
20

그리고 결과는 정수 아래에서

내가 지금까지 가지고있는 코드입니다 (다른 프로그래밍 언어의 의미에서).

변수를 저장하는 유일한 방법은 각 순차 반복마다 카운터를 만들어 각 변수 (식사 비용, 팁 - 퍼센트, 세금 - 백분율)에 저장하는 것입니다. 그러나 이것을하기위한 더 쉬운 방법이있을 것입니다.

이것은 내가 한 일이지만 아직 입력을 가져 와서 올바른 변수에 저장하는 더 좋은 방법이라고 생각합니다. 누구든지 어떤 제안이 있다면, 그것은 많이 감사 할 것입니다.

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

나뿐만 아니라 수락 사용하려고했습니다 '수락 세금 PERCENT' 'DISPLAY 식사 - COST' '디스플레이 TIP-PERCENT' '디스플레이 세금 PERCENT' 'CLOSE SYSIN.' – qxzsilver

+2

동의 사용할 때는 OPEN을 사용하지 마십시오. ACCEPT 데이터 이름. 컴파일러에 따라 입력이 변환되거나 변환되지 않습니다. 그래서, 어떤 컴파일러/OS를 사용하고 있습니까? –

+0

[내장 함수] (http://stackoverflow.com/documentation/cobol/7580/intrinsic-functions), 특히'FUNCTION NUMVAL'도 확인하고 싶을 것입니다. –

답변

0

SYSIN을 열거 나 닫을 필요가 없습니다.

그냥 코드 : TIP-PERCENT` `절차의 DIVISION.`이 `OPEN INPUT SYSIN` `식사 - COST` 동의`ACCEPT :

ACCEPT MEAL-COST FROM SYSIN