5

我对 COBOL 完全陌生,我想知道:

好像没有区别

DISPLAY "foo"

DISPLAY "foo".

行尾的点实际上是做什么的?

我什么时候应该使用/避免它?

4

5 回答 5

10

句号结束“句子”。它会影响你的逻辑。考虑...

IF A = B
    PERFORM 100-DO
    SET I-AM-DONE TO TRUE.

...和...

IF A = B
    PERFORM 100-DO.
    SET I-AM-DONE TO TRUE

在这两个示例中,句点结束了 IF。在第一个中,I-AM-DONE 88 级别是有条件设置的,在第二个中,它是无条件设置的。

许多人更喜欢使用显式范围终止符并且只使用单个句点,通常在物理行上单独使用以使其突出,以结束段落。

于 2012-11-06T12:24:30.363 回答
7

我是凭记忆输入的,所以如果有人有更正,我将不胜感激。

Cobol 1968 要求使用句点来结束一个部门名称、过程部门段落名称或过程部门段落。每个数据划分元素以句点结束。

Cobol 68 中没有明确的范围终止符,如 END-IF。句号也用于结束范围。Cobol 1974 带来了一些与周期无关的变化。

Cobol 程序员倾向于用句号结束​​ Cobol 程序中的每个句子,而不是试图记住句号的规则。

随着 Cobol 1985 中范围终止符的引入,Cobol 编码器可以消除程序划分段落中的大部分句点。Cobol 85 程序的过程划分中唯一需要的时间段是终止 PROCEDURE DIVISION 语句、终止第一段/节标题之前的代码(如果有)、终止段落/节标题、终止段落/节并终止程序(如果没有段落/部分)。

不幸的是,这吓坏了使用 Cobol 68 和 74 标准编码的 Cobol 程序员。直到今天,许多 Cobol 商店都强制执行一个编码规则,即用句点结束每个过程划分语句。

于 2012-11-06T14:07:37.133 回答
4

在哪里使用!

使用点有2种形式。

您可以在 SECTION 中的每个 VERB 之后使用 POINT。例子:

0000-示例部分。

将 0 移至 WK-I。

执行直到 WK-I 大于 100 显示 WK-I 将 1 添加到 WK-I 最终执行。

显示 WK-I。

IF WK-I 等于零显示 WK-I END-IF。

0000-示例-结束。出口。

请注意,我们在每个动词之后使用点,除了在 PERFORM、IF、ETC 内...

另一种使用形式是:在部分末尾仅使用一个点,如下所示:

0000-示例部分。

将 0 移至 WK-I

执行直到 WK-I 大于 100 显示 WK-I 添加 1 到 WK-I END-PERFORM

显示 WK-I

IF WK-I 等于零显示 WK-I END-IF

. <======== 点这里!!!!!!!只有在这里!

0000-示例-结束。出口。

但是,我们总是在 EXIT 和 SECTION 之后......

于 2012-12-08T12:46:52.727 回答
1

当它是我的选择时,我只在必要时使用句号/句号。然而,当地标准通常另有规定:就这样吧。

句号/句号引起的问题是,当代码“with”被复制到“without”代码中而编码器的大脑安全地留在停车场时,意外地做出了无条件的事情。

需要注意的另一件事是(希望如此)在 IBM Mainframe Cobol 中使用 NEXT SENTENCE 的“旧”程序。“NEXT SENTENCE”表示“在下一个句号/句号之后”,在“稀疏句号/句号”代码中是段落/部分的结尾。等待发生的事故。获取规范更改以允许将“NEXT SENTENCE”更改为“CONTINUE”。

于 2013-01-19T23:55:56.640 回答
0

刚刚在我的 cobol 85 程序中通过删除程序中的所有句点对其进行了测试,它运行良好。

例子:

PROCEDURE DIVISION.                                                          
 MAIN-PROCESS.                                                    
    READ DISK-IN                                                  
     AT END                                                       
      DISPLAY "NO RECORDS ON INPUT FILE"                          
      STOP RUN                                                   
    ADD 1 TO READ-COUNT.                                          
    PERFORM PROCESS-1 UNTIL END-OF-FILE.                 

 WRITE-HEADER.                                                    
    MOVE HEADER-INJ-1 TO HEADER-OUT-1                             
    WRITE HEADER-OUT-1.                                           

 CLOSE-FILES.                                                     
    CLOSE DISK-IN                                                 
    CLOSE DISK-OUT                                                
    DISPLAY "READ: " READ-COUNT                                   
    DISPLAY "WRITTEN: " WRITE-COUNT                               

    SORT SORT-FILE ON ASCENDING SER-S                         
     USING DISK-OUT                                               
     GIVING DISK-OUT                                              

     STOP RUN.  
于 2019-11-21T20:08:45.333 回答