遇到错误,不确定为什么仍要学习COBOL

问题描述 投票:1回答:1

我希望将两个循环嵌套在一起。我想找到可以从1到20整除的最大整数。我的程序代码如下:

IDENTIFICATION DIVISION.
PROGRAM-ID. EULER3.
DATA DIVISION.
WORKING-STORAGE SECTION.
    01 startNum PIC 9(10) VALUE 380.
    01 counter PIC 9(2).
    01 check PIC 9(1) VALUE 0.
    01 finalVal PIC 9(10)
PROCEDURE DIVISION.
MAIN-PROCEDURE. 

PERFORM whileLoop UNTIL check = 1.
DISPLAY "Largest number divisible by 19 thru 20 " startNum. 
STOP RUN.

whileLoop.
    SET counter TO 11.
    DISPLAY counter.
    PERFORM forLoop UNTIL counter = 20

forLoop.
    IF FUNCTION MOD(startNum, counter) = 0
        IF counter = 19
            SET finalVal TO startNum.
            ADD 1 TO check.
    ELSE
        ADD 20 TO startNum

    ADD 1 TO counter.
    END-IF. 

控制台是:

 jdoodle.cobc:30: warning: line not terminated by a newline
 jdoodle.cobc:9: error: syntax error, unexpected PROCEDURE, expecting EXTERNAL or EXTERNAL-FORM or GLOBAL or IDENTIFIED
 jdoodle.cobc:10: error: PROCEDURE DIVISION header missing
 jdoodle.cobc:10: error: syntax error, unexpected Identifier
 jdoodle.cobc: in paragraph 'whileLoop':
 jdoodle.cobc:21: error: 'forLoop' is not defined
 jdoodle.cobc:19: error: invalid expression
 jdoodle.cobc:26: error: syntax error, unexpected ELSE
 jdoodle.cobc:30: error: syntax error, unexpected END-IF
 jdoodle.cobc:19: error: 'forLoop' is not defined

我不确定为什么要说我没有程序部门。我已经用Python编写了程序并使用了这种方法,因此为什么我将我的区域命名为forLoop和whileLoop。

cobol
1个回答
0
投票

我可能已经错过了一些其他语法错误。

01 finalVal PIC 9(10)  add a final period.  

SET finalVal TO startNum.   remove the period.

ADD 1 TO check.   remove the period.

ADD 20 TO startNum   add a final period or an END-IF
© www.soinside.com 2019 - 2024. All rights reserved.