希望你没事。我有问题,如果可能的话,我需要你的帮助。
我正在使用Mainframe JCL,我有一个包含记录的数据集;每个记录都有不同的固定列,用"~"分隔(我们使用它是因为在NAME列中,名称用逗号分隔)。我需要将该数据集转换为CSV文件格式,因此它需要:1) 用逗号分隔2) 具有可变长度而不是固定长度3) 我不需要所有的列,只需要其中的4列(与原来的顺序不同)4) 第一列必须不同5) 如果名称有,(例如:姓氏,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,但我无法完全获得它,尤其是制作一个字段变量而不是固定长度,并更改列的名称,在任何情况下,如果必要的话,我可以稍后连接,这没什么大不了的(我想避免使用EasyTrive,因为我不太熟悉它)。有人有这样的例子吗?我用SORT查找类似的案例,但没有找到。我可以创建报告,但只有固定列,我找不到可变长度的方法
我很抱歉发了这么长的短信,但我想尽量说清楚。提前非常感谢!祝你白天/晚上愉快!
如果您不担心标头,可以使用:
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个字节。