我正在使用Mainframe JCL,我有一个包含记录的数据集;每条记录都有不同的固定列,用"〜" (我们使用它,因为在NAME列中,名称用逗号分隔)。我需要以CSV文件格式转换该数据集,因此需要: 1)用逗号分隔 2)具有可变长度而不是修复长度 3)我不需要所有列,只需要4个(并且与原始列不同) 4)第一列必须是不同的 5)如果名称有a,(例如:姓名,姓名),请使用" "
这是输入文件的示例:
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查找了类似的案例,我无法找到任何案例。我可以创建报告,但只有固定列,我找不到这样做的方法变量lenght
对不起,我很抱歉,但我希望尽可能清楚。 非常感谢你提前! 祝你有一个美好的一天/晚上!
答案 0 :(得分:0)
如果您不担心标题,可以使用:
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个字节。