【问题标题】:JCL Combine records in one lineJCL 在一行中合并记录
【发布时间】:2021-04-21 13:24:33
【问题描述】:

我有 4 个数据集,每个数据集只有一个包含两位数的记录。例如:

File1: 45
File2: 78
File3: 83
File4: 52

我希望将数据合并到一个新的数据集中 这样:

4578
8352

如何在 Mainframe-JCL 中编写代码?

【问题讨论】:

  • JCL 用于在后台启动程序(又名 Batch)。您不能使用 JCL 操作数据;你需要为此运行一个程序。您商店的排序实用程序(DFSort、SyncSort...)可以做到这一点。

标签: mainframe jcl


【解决方案1】:

要完成此任务,请将您的四个输入文件连接到 sortin:

//STEP1  EXEC PGM=SORT
//SORTIN DD DSN=File1,DISP=SHR
//       DD DSN=File2,DISP=SHR
//       DD DSN=File3,DISP=SHR
//       DD DSN=File4,DISP=SHR
//SORTOUT DD DSN=Combined
//SYSIN DD *
* Combine each pair of records into a single record
 SORT FIELDS=COPY
* Append a sequence number 00,50,00,50,00,...
 INREC BUILD=(1,2,2X,SEQNUM,2,ZD,START=0,INCR=50)
* Reformat the output record depending on the sequence number
 OUTREC IFTHEN=(WHEN=GROUP,BEGIN=(5,2,CH,EQ,C'00'),
  PUSH=(7:1,2)),
  IFTHEN=(WHEN=GROUP,BEGIN=(5,2,CH,EQ,C'50'),
  PUSH=(9:1,2))
* Include only the second record of each group (the 50 records)
 OUTFIL FILES=OUT,INCLUDE=(5,2,CH,EQ,C'50'),BUILD=(7,4)
 END

对于四个输入文件:

文件1:

45

文件2:

78

文件3:

83

文件4:

52

组合输出文件应为:

4578
8352

这已通过适用于 Windows v14r3 的 AHLSORT 进行了验证,但应该适用于 z/OS 上的 DFSORT 或 SYNCSORT。

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    相关资源
    最近更新 更多