Cobol RELEASE声明?

时间:2014-04-24 20:05:50

标签: cobol

我正在使用Cobol Sort VSAM文件处理我的第一个项目。我遇到了关键字RELEASE。

本书读取的方式是"发布语句将记录从INPUT PROCEDURE传输到排序操作的输入阶段。

我的问题是:这取决于我的Sort-Rec(或我称之为的任何东西)并将其直接发送到我的SORT的OUTPUT PROCEDURE部分?

这里似乎让我很困惑。

Cobol代码:

SORT SORT-FILE ASCENDING KEY SORT-PROVIDER       
  INPUT  PROCEDURE IS PROC-THE-REC  THRU PTR-X   
  OUTPUT PROCEDURE IS WRITE-THE-RPT THRU WTR-X.  

 MOVE CC-CERT-NO         TO SAVE-CERT-NO.         
 MOVE CC-CERT-STATUS     TO SAVE-CERT-STATUS.     
 MOVE CC-CERT-BEGIN-DATE TO SAVE-CERT-BEGIN-DATE. 
 MOVE CC-CERT-END-DATE   TO SAVE-CERT-END-DATE.   
 MOVE CC-CERT-FUNDING    TO SAVE-CERT-FUNDING.    
 MOVE CC-PROV-NUMB       TO SAVE-PROV-NUMB.       
 MOVE CC-PROV-RES-CNTY   TO SAVE-PROV-RES-CNTY.   
 MOVE CC-PROV-TYPE       TO SAVE-PROV-TYPE.       
 MOVE CC-WORKER-USERID   TO SAVE-WORKER-USERID.   
 MOVE CC-WORKER-NAME     TO SAVE-WORKER-NAME.     

 RELEASE SORT-REC.                                

4 个答案:

答案 0 :(得分:3)

来自比尔,

在Cobol中使用排序时,有点像在一个程序中有两个或三个单独的程序。

 Pre-Sort  (PROC-THE-REC in your case)
    |
    V
   Sort
    |
    V
 Post sort (WRITE-THE-RPT in your case)

RELEASE 语句&#34;将记录写入&#34; &#34;排序&#34; 步骤。< / p>

在Unix中你可以通过

实现同样的目标
  • 编写2个单独的程序(前后排序)
  • 写入
  • 替换发布
  • 将预排序的输出管道化为排序。

在大型机上,您将使用3个JCL步骤和临时文件。


在大型机上,我工作的大部分网站都不鼓励(禁止)使用Cobol排序动词,你会编写2个程序并使用实用程序排序。

答案 1 :(得分:2)

  

发布声明将记录从INPUT PROCEDURE传输到   排序操作的输入阶段。

排序的输入阶段是SORT从中获取数据的地方。在这种情况下。

COBOL Program
 Loop-construct 
  Some COBOL code
  Release
  Next

The sort is actually an external program. In the case of the Mainframe, 
it is the installed SORT product (usually DFSORT or SyncSort)
   Input Phase of SORT
   SORT
   Output Phase of SORT

 Another-Loop-construct 
  Some COBOL code
  Return
  Next
COBOL Program

您的输入程序将处理,释放,然后继续。释放所有数据后,将进行排序。排序的记录将在您将编码的RETURN语句点返回给您的程序,这将继续(返回,返回后的内容,另一个返回,重复直到完成),直到处理完所有已排序的文件(假设你想早点停下来就没问题了。

答案 2 :(得分:0)

INPUT PROCEDURE通过将记录写入SORT SD条目中声明的工作文件来为记录提供记录。但是要将记录写入工作文件中的是一个特殊的动词 - 使用RELEASE动词。

INPUT PROCEDURE的操作模板,从中获取记录并输入文件并将它们RELEASE到工作文件,如下所示。

OPEN INPUT InFileName
READ InFileName
PERFORM UNTIL TerminatingCondition
  Process input record to create SDWorkRec
  RELEASE SDWorkRec
  READ InFileName
END-PERFORM 
CLOSE InFileName

有关SORT的更多详细信息,请参阅http://www.csis.ul.ie/cobol/course/SortMerge.htm

上的教程

答案 3 :(得分:0)

通常,COBOL排序程序是:

SORT-ID,SORT-NAME,SORT-PHONE上的SORT SORTFILE

 INPUT PROCEDURE IS READ-IN
 OUTPUT PROCEDURE IS PRINT-SORTED.

读入部分。

 loop:

  READ INPUTFILE.
  MOVE IN-ID TO SORT-ID.
  MOVE IN-NAME TO SORT-NAME.
  MOVE IN-PHONE TO SORT-PHONE.
  RELEASE SORT-REC.

PRINT-SORTED SECTION。

 loop:

  RETURN SORT-REC.
  DISPLAY "id#: " SORT-ID.
  DISPLAY "Name: " SORT-NAME.
  DISPLAY "Phone: " SORT-PHONE.