何时在COBOL中使用圆点?

时间:2012-11-06 11:40:24

标签: cobol gnucobol cobol85

我对COBOL完全不熟悉,我想知道:

之间似乎没有区别
DISPLAY "foo"

DISPLAY "foo".

一行末尾的点实际上做了什么?

我应该何时使用/避免它?

5 个答案:

答案 0 :(得分:6)

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

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级有条件设置,第二级无条件设置。

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

答案 1 :(得分:5)

我是从内存中输入的,所以如果有人有更正,我会很感激。

Cobol 1968要求使用期限来结束部门名称,程序部门段落名称或程序部门段落。每个数据分割元素都以句点结束。

Cobol 68中没有明确的范围终止符,如END-IF。一段时期也被用来结束范围。 1974年的Cobol带来了一些与时期没有任何关系的变化。

而不是试图记住时期的规则,Cobol程序员倾向于用一段时间来结束Cobol程序中的每个句子。

随着Cobol 1985中引入范围终止符,Cobol编码器可以消除程序划分段落中的大多数时期。 Cobol 85程序的程序划分所需的唯一期限是终止PROCEDURE DIVISION声明,终止第一段/部分标题之前的代码(如果有的话),终止段落/部分标题,终止段落/部分并终止程序(如果没有段落/部分)。

不幸的是,这吓坏了编码为Cobol 68和74标准的Cobol程序员。到目前为止,许多Cobol商店都执行了一个编码规则,用一个句号来结束每个程序分割句。

答案 2 :(得分:4)

何处使用!

有两种形式可以使用点。

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

  <00> 0000 - 示例部分。

     

向WK-I移动0。

     

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

     

显示WK-I。

     

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

     

0000-EXAMEPLE-END。 EXIT。

请注意,我们在每个VERB之后使用point,除了PERFORM,IF,ETC之外......

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

  <00> 0000 - 示例部分。

     

移动0到WK-I

     

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

     

显示WK-I

     

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

     

。 &lt; ========点这里!!!!!!!只有在这里!

     

0000-EXAMEPLE-END。 EXIT。

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

答案 3 :(得分:1)

如果是我的选择,我会在必要时使用全站/句号。但是,当地标准通常会另有规定:所以就这样吧。

由于编码器的“大脑”被安全地留在了停车场,当代码“with”被复制到代码“没有”时,全停/周期引起的问题是偶然发生无条件的事情。

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

答案 4 :(得分: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.