【问题标题】:When to use dots in COBOL?何时在 COBOL 中使用点?
【发布时间】:2012-11-06 11:40:24
【问题描述】:

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

好像没有区别

DISPLAY "foo"

DISPLAY "foo".

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

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

【问题讨论】:

    标签: cobol gnucobol cobol85


    【解决方案1】:

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

    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-level 是有条件设置的,第二个是无条件设置的。

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

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

      【讨论】:

      • 自 COBOL-85 以来,PROCEDURE DIVISION 中唯一需要的“点”是在 PARAGRAPH/SECTION 标题之前和之后的那些。其余的只会造成麻烦!
      • @NealB:谢谢。我已将您的评论添加到我的回答中。
      【解决方案3】:

      在哪里使用!

      点有2种形式。

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

      0000-示例部分。

      将 0 移至 WK-I。

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

      显示 WK-I。

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

      0000-示例-结束。退出。

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

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

      0000-示例部分。

      将 0 移至 WK-I

      执行到 WK-I 大于 100 显示 WK-I WK-I 加 1 结束执行

      显示 WK-I

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

      0000-示例-结束。退出。

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

      【讨论】:

      • 问题是关于何时使用它,而不是选项是什么。
      • @SergioCosta 为什么要评论 10 年前的言论?用户甚至不再活跃。
      【解决方案4】:

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

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

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

      【讨论】:

        【解决方案5】:

        刚刚在我的 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.  
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-08-18
          • 1970-01-01
          • 2016-08-07
          • 2010-09-20
          • 1970-01-01
          • 1970-01-01
          • 2022-08-03
          相关资源
          最近更新 更多