我想基于日期列拆分我的输入文件,我的输入文件将有多个日期。我想基于输入中的日期分割来分割文件。 就像我在输入文件中有5个不同的日期然后我应该得到5个输出文件。 输出文件名应与输入日期相同。
像我的输入数据一样:201607131000 201607131500 201607142000 201607142500
然后基于前8列中的enter image description here日期,我应该有2个输出文件。
这个图像是我当前的代码,我的问题是前一个干文件中的数据在下一个干文件中重复。
假设我有3条记录,日期20160712和2条记录20160713 ...然后我的两个输出文件各有3条记录。 out1中的第3条记录在out2中重复出现。
答案 0 :(得分:0)
您应该使用嵌套循环来分配数据集。
/*
INPUT:
201607131000 201607131500 201607142000 201607142500
*/
/* REXX EXEC */
input1 = USER.PAULWILL.INPUT
output_dataset = USER.PAULWILL.TEST2016
"ALLOC F(INFILE) DSN('"INPUT1"') SHR REUSE"
"EXECIO * DISKR INFILE(FINIS STEM RECD."
"FREE F(INFILE)"
Call MOVE_DATE recd.0 output_dataset /* pass number of dates, output dsn format */
MOVE_DATE:
arg rec_count dsname
do i = 1 to recd.0
DateCount = WORDS(recd.i)
say 'DateCount:'DateCount
do j = 1 to DateCount
dnum = SUBSTR(WORD(recd.i,j),5,6)
"ALLOC DA('"dsname'.PT'dnum"') /* allocate new dataset */
NEW DIR(0) SPACE(10,10) DSORG(ps)
RECFM(f,b) LRECL(1000) BLKSIZE(0)"
"ALLOC DA('"dsname'.PT'dnum"') FI(OFILE) SHR REUSE"
QUEUE dnum /* write some input in */
"EXECIO * DISKW OFILE (FINIS"
"FREE F(OFILE)"
end
end /* do */
/*
OUTPUT:
USER.PAULWILL.TEST2016.PT071310
USER.PAULWILL.TEST2016.PT071315
USER.PAULWILL.TEST2016.PT071420
USER.PAULWILL.TEST2016.PT071425
*/
需要考虑的事项:
此示例中的中级限定符(MLQ)数据集必须是 提前分配。
USER.PAULWILL.TEST2016
请记住naming rules for datasets,这就是我使用' PT [日期]'
如果数据集已经存在,那么这里没有逻辑。
Bill Woodger是正确的......请花点时间输入代码,而不是拍错屏幕截图。