我多次看到以下段落的命名结构:
nnnn-PARAGRAPH-NAME.其中nnnn代表一个4位数。
下面是一个完整的例子:
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. 因此,我的问题如下:
发布于 2018-05-18 10:30:46
解释
数字告诉你程序的结构。在这个项目中:
所以程序调用结构是
0000-
+---------------------------+------------------------------+
1000- 2000- 3000-
+--------+------+ +------+------+ +-------+-------+
1100- 1200- 2100- 2200- 3100- 3200-
etc...具体问题
其他要点
一旦你习惯了编号系统,理解程序就容易多了。不同的站点使用不同的方式,有些网站也可能使用字母,而不是数字。
Perform A000-Initialise
Perform B000-Main
Perform C000-Finalise
A000-Initialise.
Perform A100-...
etc在任何一个站点,他们将在所有(或大多数程序)中使用相同的编号标准。
网站可以为特定目的保留第一个号码/字母。这是比较常见的,如果使用A 000-,B 000-格式。您可以使用R.来读取W.作为文件写入S.用于SQL调用等。
该编号系统使生活更容易为经验丰富的程序员。由于在其他语言中工作过,所以应该使用Cobol以外的其他程序语言。
发布于 2018-05-18 10:39:07
这个4位数字并不是真正用于任何事情,但是如果程序结构正确,它可以帮助有经验的程序员了解他们在程序中的方式。让我们来看看这个例子:
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“,因为我们仍然可以找到我们的方法。现在,想象一下您的程序有数千行长,而且所有的东西都是不正常的。是的,你可以弄清楚,但是如果它看起来像这样的话,它不会容易得多吗?
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。所以我们用字符来表示嵌套。所以我可能有这样的东西:
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行。
发布于 2018-05-18 07:49:50
段落名称只是标签。你可以使用任何你喜欢的格式。然而,为了有用,你应该使用一些标准--你可能会被你的商店标准所迫。编号可以反映您写入它们的顺序、执行的顺序、调用的深度(para1执行para2执行para3等),或者您可以使用alpha表示。取决于你(和你的老板)。
https://stackoverflow.com/questions/50405821
复制相似问题