MAINFRAME:在 JCL 中排序以将数据集转换为 CSV 格式
Posted
技术标签:
【中文标题】MAINFRAME:在 JCL 中排序以将数据集转换为 CSV 格式【英文标题】:MAINFRAME: SORT in JCL to convert a dataset into CSV format 【发布时间】:2017-11-15 14:36:49 【问题描述】:希望你没事。我有一个问题,如果可能的话,我需要你的帮助。
我正在使用大型机 JCL,并且我有一个包含记录的数据集;每条记录都有不同的固定列,用“~”分隔(我们使用它是因为在 NAME 列中,名称用逗号分隔)。我需要将该数据集转换为 CSV 文件格式,因此它必须是: 1) 用逗号分隔 2) 使用可变长度而不是固定长度 3)我不需要所有的列,只需要其中的 4 个(并且与原始的顺序不同) 4)第一列必须不同 5) 如果名字有 , (Ex: LAST NAME, NAME) 使用 " "
这是一个输入文件的例子:
ROLENAME~LID ~NAME ~NONCNCL~ACCDATE ~SUSPEND
CARINQ ~X ~*** NOT FOUND *** ~ ~ ~
CARONL ~AZBLCH ~*** NOT FOUND *** ~ ~ ~
SOTHER ~BZBWD4 ~SUAREZ, VICTOR ~N ~10/01/17~N
CARONL ~BZCJHS ~CHURCH DAVID S ~N ~11/10/17~N
CARONL ~VZC2G1 ~*** NOT FOUND *** ~ ~ ~
CARONL ~BZDKKF ~PLAARDRTE ALLY ~N ~11/13/17~N
SOTHER ~HZDFGH ~*** NOT FOUND *** ~ ~ ~
CARONL ~JZFPOI ~LOPEZ KAREN N ~N ~11/10/17~N
CARONL ~IZG0WZ ~FOSHIL, RICHARD ~N ~11/13/17~N
SOTHER ~OZG3T2 ~CARLINE KECHUA ~N ~11/13/17~N
CARONL ~PZMMNB ~BARELTINE, DUANE ~N ~11/13/17~N
CARONL ~PZNSWX ~*** NOT FOUND *** ~ ~ ~
CARONL ~RZPF5V ~SLIMMORE JACK ~N ~10/12/17~N
这是一个输出文件的例子:
GMID,Name,Last Login Date,Role/Group
X,*** NOT FOUND ***,,CARINQ
AZBLCH,*** NOT FOUND ***,,CARONL
BZBWD4,"SUAREZ, VICTOR",10/01/17,SOTHER
BZCJHS,CHURCH DAVID S,11/10/17,CARONL
VZC2G1,*** NOT FOUND ***,,CARONL
BZDKKF,PLAARDRTE ALLY,11/13/17,CARONL
HZDFGH,*** NOT FOUND ***,,SOTHER
JZFPOI,LOPEZ KAREN N,11/10/17,CARONL
IZG0WZ,"FOSHIL, RICHARD",11/13/17,CARONL
OZG3T2,CARLINE KECHUA,11/13/17,SOTHER
PZMMNB,"BARELTINE, DUANE",11/13/17,CARONL
PZNSWX,*** NOT FOUND ***,,CARONL
RZPF5V,SLIMMORE JACK,10/12/17,CARONL
我正在尝试使用程序 SORT 来使用 INREC PARSE 和 BUILD,但我无法完全理解它,尤其是制作字段变量而不是修复长度并更改列的名称,无论如何我都可以连接以后如有必要,没什么大不了的(我想避免使用 EasyTrieve,因为我不太熟悉它)。 有人有这方面的例子吗?我使用 SORT 查找了类似的案例,但没有找到。我可以创建报告,但只能使用固定列,我找不到可变长度的方法
对于冗长的文字,我很抱歉,但我想尽可能清楚。 非常感谢您! 祝您早日愉快!
【问题讨论】:
【参考方案1】:如果不担心header,可以使用:
OPTION COPY
INREC IFTHEN=(WHEN=INIT,BUILD=(1,15,31,15,46,15,SQZ=(SHIFT=LEFT))),
IFTHEN=(WHEN=INIT,FINDREP=(IN=C'~',OUT=C','))
我假设 LRECL 为 80,还假设您只需要从第 1、31 和 46 列开始的 3 列,每列 15 个字节。
.
【讨论】:
谢谢!这并没有完全按原样工作,但它给了我一些解决一些错误的想法。 @Jorge 如果答案有用,请考虑投票 我做到了....但它说我没有足够的声誉来表明:(以上是关于MAINFRAME:在 JCL 中排序以将数据集转换为 CSV 格式的主要内容,如果未能解决你的问题,请参考以下文章