首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >COBOL段落编号背后的逻辑是什么?

COBOL段落编号背后的逻辑是什么?
EN

Stack Overflow用户
提问于 2018-05-18 07:17:38
回答 3查看 630关注 0票数 7

我多次看到以下段落的命名结构:

代码语言:javascript
复制
nnnn-PARAGRAPH-NAME.

其中nnnn代表一个4位数。

下面是一个完整的例子:

代码语言:javascript
复制
0000-MAINLINE. 
    PERFORM 1000-INITIALIZE-THE-PROGRAM. 
    PERFORM 2000-PROCESS-1-BILLING-RECORD 
        UNTIL 88-100-ALL-RECORDS-PROCESSED. 
    PERFORM 3000-TERMINATE-THE-PROGRAM. 
    GOBACK. 
1000-INITIALIZE-THE-PROGRAM. 
    PERFORM 1100-VALIDATE-CONTROL-CARD. 
    PERFORM 1200-OPEN-THE-FILES. 
    PERFORM 8000-GET-NEXT-BILLING-RECORD. 
1100-VALIDATE-CONTROL-CARD. 
    PERFORM 1110-READ-CONTROL-CARD. 
    PERFORM 1120-EDIT-CONTROL-CARD. 
1110-READ-CONTROL-CARD. 
    PERFORM 9000-ABEND-THE-PROGRAM.  *> IF A READ ERROR OCCURRED 
1120-EDIT-CONTROL-CARD. 
    PERFORM 9000-ABEND-THE-PROGRAM   *> IF AN EDIT ERROR OCCURRED 
1200-OPEN-THE-FILES. 
    PERFORM 9000-ABEND-THE-PROGRAM   *> IF AN OPEN ERROR OCCURRED 
2000-PROCESS-1-BILLING-RECORD. 
    PERFORM 2100-CALCULATE-BILLABLE-AMT. 
    PERFORM 2200-PRINT-BILLING-REPORT. 
    PERFORM 8000-GET-NEXT-BILLING-RECORD. 
2200-PRINT-BILLING-REPORT. 
    PERFORM 2210-PRINT-REPORT-HEADER.  *> WHEN IT'S NEEDED 
3000-TERMINATE-THE-PROGRAM. 
    PERFORM 3100-CLOSE-THE-FILES. 
    PERFORM 3200-DISPLAY-FINAL-MESSAGES. 
8000-GET-NEXT-BILLING-RECORD. 
    PERFORM 9000-ABEND-THE-PROGRAM.    *> IF A READ ERROR OCCURRED 
9000-ABEND-THE-PROGRAM. 

因此,我的问题如下:

  1. 这现在不受欢迎吗?
  2. 为什么这是一个好的做法?
  3. 段落编号遵循哪些标准?
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-18 10:30:46

解释

数字告诉你程序的结构。在这个项目中:

  • 1*都是初始化过程和1000-.打1100-..。和1200。而1100-..。打1110-..。以及1120-..。等
  • 2*是主要的处理逻辑过程
  • 3*是终结处理逻辑过程
  • 8000从任何地方呼叫
  • 9000错误过程

所以程序调用结构是

代码语言:javascript
复制
                                     0000-
           +---------------------------+------------------------------+                             
         1000-                       2000-                          3000-
  +--------+------+             +------+------+               +-------+-------+ 
1100-           1200-         2100-         2200-           3100-           3200-

 etc...

具体问题

  1. 绝对不是,它应该在其他的过程语言中使用。学习编号系统
  2. 为什么这是一个好的做法?这是很好的实践,因为它告诉您
    • 程序是如何相互关联的--这是非常方便的。
    • 访问过程的调用结构。
    • 增进理解
    • 节省了很多时间。对于实例,如果您find 2000-,您将转到主处理逻辑。

  1. 段落编号遵循哪些标准?

其他要点

一旦你习惯了编号系统,理解程序就容易多了。不同的站点使用不同的方式,有些网站也可能使用字母,而不是数字。

代码语言:javascript
复制
      Perform A000-Initialise
      Perform B000-Main
      Perform C000-Finalise

 A000-Initialise.
     Perform A100-...
     etc

在任何一个站点,他们将在所有(或大多数程序)中使用相同的编号标准。

网站可以为特定目的保留第一个号码/字母。这是比较常见的,如果使用A 000-,B 000-格式。您可以使用R.来读取W.作为文件写入S.用于SQL调用等。

该编号系统使生活更容易经验丰富的程序员。由于在其他语言中工作过,所以应该使用Cobol以外的其他程序语言。

票数 7
EN

Stack Overflow用户

发布于 2018-05-18 10:39:07

这个4位数字并不是真正用于任何事情,但是如果程序结构正确,它可以帮助有经验的程序员了解他们在程序中的方式。让我们来看看这个例子:

代码语言:javascript
复制
PROCEDURE DIVSION.
0000-MAINLINE.
   PERFORM OPEN-FILES
   PERFORM VALIDATE-CONTENTS
   PERFORM PROCESS-DATA
   PERFORM WRITE-REPORTS
   PERFORM CLOSE-FILES
.
CLOSE-FILE.
   PERFORM CLOSE-FILE1
   PERFORM CLOSE-FILE2
   PERFORM CLOSE-FILE3
.
PROCESS-DATA.
   PERFORM VARYING X 
              FROM 1 BY 1
             UNTIL X > NUMBER-OF-RECS
      PERFORM DO-THE-THINGS
   END-PERFORM
.
WRITE-REPORTS.
   DISPLAY 'THIS IS MY REPOR'.
.
VALIDATE-CONTENTS.
   IF REC NOT EQUAL SPACES
       SET GOOD-REC TO TRUE
   END-IF
.
OPEN-FILES.
   PERFORM OPEN-FILE1
   PERFORM OPEN-FILE2
   PERFORM OPEN-FILE3
.
DO-THE-THINGS.
   CONTINUE
.

我知道这个程序很傻,没有什么意义,但是这个例子没问题。试着遵循这个程序的流程。如果我们为每个段落的开始和增量分配一个数字(所以关闭文件是1,进程数据是2.)然后主线像这样跳来跳去:

5

4.

2,6

3.

1

对于这样一个小程序来说,"ok“,因为我们仍然可以找到我们的方法。现在,想象一下您的程序有数千行长,而且所有的东西都是不正常的。是的,你可以弄清楚,但是如果它看起来像这样的话,它不会容易得多吗?

代码语言:javascript
复制
PROCEDURE DIVSION.
0000-MAINLINE.
   PERFORM A0000-OPEN-FILES
   PERFORM B0000-VALIDATE-CONTENTS
   PERFORM C0000-PROCESS-DATA
   PERFORM D0000-WRITE-REPORTS
   PERFORM E0000-CLOSE-FILES
.
A0000-OPEN-FILES.
   PERFORM OPEN-FILE1
   PERFORM OPEN-FILE2
   PERFORM OPEN-FILE3
.
B0000-VALIDATE-CONTENTS.
   IF REC NOT EQUAL SPACES
       SET GOOD-REC TO TRUE
   END-IF
.
C0000-PROCESS-DATA.
   PERFORM VARYING X 
              FROM 1 BY 1
             UNTIL X > C1000-NUMBER-OF-RECS
      PERFORM DO-THE-THINGS
   END-PERFORM
.
C1000-DO-THE-THINGS.
   CONTINUE
.
D0000-WRITE-REPORTS.
   DISPLAY 'THIS IS MY REPOR'.
.
E0000-CLOSE-FILE.
   PERFORM CLOSE-FILE1
   PERFORM CLOSE-FILE2
   PERFORM CLOSE-FILE3
.

在我的商店里,我们所做的一切都是以字母开头的(因此是A0000)。如果A0000调用某个段落,则该段落将被称为A1000。如果A1000调用了什么东西,那么它就是A1100。所以我们用字符来表示嵌套。所以我可能有这样的东西:

代码语言:javascript
复制
PROCEDURE DIVSION.
0000-MAINLINE.
   PERFORM A0000-DO-SOMETHING
   PERFORM B0000-SHUTDOWN
.
A0000-DO-SOMETHING.
   PERFORM A1000-DO-MORE
   PERFORM A2000-VALIDATE-STUFF
.
A1000-DO-MORE.
   PERFORM A1100-DO-THING1
   PERFORM A1200-DO-THING2
   PERFORM A1300-DO-THING3
.

简而言之,它只是帮助导航和跟踪程序。没有什么能阻止你忽略数字,但一旦程序变得更大,而其他人需要保持它,数字将是一个很大的帮助。我不喜欢使用结构不正确的程序,因为这会使程序的调试和学习变得更加困难。特别是当我使用终端模拟器时,一次只能看到20行。

票数 6
EN

Stack Overflow用户

发布于 2018-05-18 07:49:50

段落名称只是标签。你可以使用任何你喜欢的格式。然而,为了有用,你应该使用一些标准--你可能会被你的商店标准所迫。编号可以反映您写入它们的顺序、执行的顺序、调用的深度(para1执行para2执行para3等),或者您可以使用alpha表示。取决于你(和你的老板)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50405821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档