【发布时间】:2015-06-16 08:33:59
【问题描述】:
//ICETSIM1 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//SYMNOUT DD SYSOUT=*
//NAMESIN DD *
LINK_REC;1,45
LINK_REFDATE;=,8,CH
LINK;*,16,CH
LINK_COLL;*,16,CH
LINK_TYPE;*,3,CH
LINK_LABEL;*,02,CH
LINK_P_LABEL;=,1,CH
LINK_S_LABEL;*,1,CH
//NAMESOUT DD DSN=&NAMES,DISP=(,PASS,DELETE),SPACE=(TRK,1)
//TOOLIN DD *
COPY FROM(NAMESIN) TO(NAMESOUT)
//S01 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//SYMNAMES DD DSN=&NAMES,DISP=(OLD,PASS)
//SYMNOUT DD SYSOUT=*
//IN2 DD DISP=SHR,DSN=LINKS.001
SELECT FROM(IN2) TO(OU2) ON(LINK) FIRST USING(CTL2)
//CTL2CNTL DD *
OUTFIL FNAMES=OU2,
OUTREC=(LINK_REFDATE,16X,LINK,500X,LINK_TYPE,C'22')
此 ICETOOL 为 LINKS.001 中的每个 LINK 值选择第一条记录。问题是:SELECT 运算符是否期望输入被排序?如果是,则必须按 LINKS.001(REF_DATE、LINK、LINK_COLL...)的所有字段排序?
【问题讨论】:
-
从模拟器粘贴时需要注意大小写。您没有 NAMESOUT DD 或 OU2 DD。您的 OUTFIL 和 OUTREC 从第 1 列开始。要回答您的问题,请查看步骤中的 sysout。您将看到生成了所需的 SORT 语句。您的数据在该单个字段上是否已经有序?
-
更正了错字。顺便说一句,我的数据在进入 IN2 时已经(按其所有字段)进行了排序。