【发布时间】:2021-12-17 04:44:27
【问题描述】:
我有两个要求:
-
我必须在 Cobol 程序中连接文件中的一些字段。我必须连接的方式是基于上述字段之一。连接的字段必须在新文件中输出。
-
然后我必须使用 JCL 调用的排序实用程序对这个新文件进行排序。
问题
我需要为 2 个条件对同一个文件进行排序。我尝试过使用 ifthen outrec 构建。如何一次性对它进行排序?
这是一个源代码示例:
ID DIVISION.
PROGRAM-ID. FOO.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
Select Infil assign to inp001.
Select Outfil assign to out001.
DATA DIVISION.
FILE SECTION.
FD Infil.
01 Main.
03 A.
05 ws-Pc. Pic x(1).
05 filler Pic x(5).
03 B. Pic x(4).
03 C. Pic x(4).
03 D. Pic 9(13)V99.
03 E. Pic x(13).
FD Outfil.
01 Temp Pic x(42).
WORKING-STORAGE SECTION.
01 file-flag Pic x(01).
88 file-end value 'Y'.
88 not-file-end value 'N'.
PROCEDURE DIVISION.
Open input Infil
Open output Outfil
read Infil
at end
set file-end to true
not at end
set not-file-end to true
end-read
Perform until file-end
If ws-Pc = 3
String A B C Delimited by size
into Temp
End-String
Else
String A B C E Delimited by size
into Temp
End-String
End-if
Write Temp
read Infil
at end
Set file-end to true
end-read
end-Perform.
end program foo.
这是排序实用程序所需的逻辑:
If ws-Pc=3
Sort(fieldA,fieldB)
Else
Sort(fieldA,fieldB,fieldE)
End-if.
【问题讨论】:
-
到目前为止你尝试了什么?
-
SORT 不是
JCL。你写了一些JCL来运行 SORT 程序。您的 COBOL 程序可能以不同的返回码结束,以指示您需要哪种类型。然后在JCL你可以为每个案例创建一个步骤,并使用JCL IF根据COBOL程序的返回码选择运行哪个步骤。 -
对字段进行排序 =(1,6,ch,a,7,4,ch,a)。我已经尝试过这个第一个条件它工作正常..像这样我需要为其他条件排序相同的数据集。
-
如何使用带有
INPUT PROCEDURE和/或OUTPUT PROCEDURE的COBOLSORT语句来连接字段? -
@user13766556 在排序条件中,您键入要根据字段 D 进行排序。但是,结果文件中不存在字段 D。这正常吗?
标签: sorting if-statement cobol mainframe jcl