您应该使用嵌套循环来分配数据集。
/*
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
记住数据集的命名规则,这就是我使用 'PT[date]' 的原因
如果数据集已经存在,这里就没有逻辑了。
Bill Woodger是正确的……花时间键入代码而不是截取错误的屏幕截图。