我正在使用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.
答案 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中你可以通过
实现同样的目标在大型机上,您将使用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.