查看上一个主题 :: 查看下一个主题
|
作者 |
信息 |
永永
新的用户
.jpg)
已加入:2007年4月9日 帖子:33 地点:印度
|
|
|
|
我有两个文件,数据如下
码: |
X002027174
X002267035
X002846116
|
码: |
X00202717401010101000000000100010000000000000081420190814201900000000
X002027174020100000010010000100000101000000001F0081420192101L4100200{
X002027174020200000010010000100000101000000001F0081420192101L4100200{
X00226703501010101000000000100010000000000000012820120128201200000000
X002267035021000000010000000100000001000000001F0122820112101L5100200{
X00284611601010101000000000100010000000000000071920310719203100000000
|
我需要加入这2个文件,而加入时我需要从第2个文件的recs下面获取字段。
码: |
X00202717401
X0020271740201
|
o / p如下
码: |
X002027174 008 F00
X002267035 001 F01
X002846116 007空白 |
是否可以? |
|
回到顶部 |
|
 |
比尔·伍德格
主持人荣誉
加入时间:2011年3月9日 帖子:7311 位置:矩阵内部
|
|
|
|
很可能是。
您需要哪些领域的职位?什么文件的RECFM / LRECL? |
|
回到顶部 |
|
 |
永永
新的用户
.jpg)
已加入:2007年4月9日 帖子:33 地点:印度
|
|
|
|
两个文件中的密钥均为10字节1,10。
在11,2之后的第二个文件中,01可以是01或02。01始终是与键关联的一个,02可以是多个。
要进行o / p,我需要1,10字节的密钥,从01记录开始,我需要45,3字节。在位置13,2上具有值'01'的02记录上需要47,3
我希望它清楚..感谢您带来希望.. |
|
回到顶部 |
|
 |
潘多拉魔盒
主持人
.jpg)
已加入:2006年9月7日 职位:1565 地点:仙女座星系
|
|
|
|
您需要什么条件?
|
|
回到顶部 |
|
 |
潘多拉魔盒
主持人
.jpg)
已加入:2006年9月7日 职位:1565 地点:仙女座星系
|
|
|
|
假设您的输入正确
码: |
// SRTJK EXEC PGM = ICETOOL
// TOOLMSG DD SYSOUT = *
// DFSMSG DD SYSOUT = *
// JNA DD *
X002027174
X002267035
X002846116
// JNB DD *
X00202717401010101000000000100010000000000000081420190814201900000000
X002027174020100000010010000100000101000000001F0081420192101L4100200{
X002027174020200000010010000100000101000000001F0081420192101L4100200{
X00226703501010101000000000100010000000000000012820120128201200000000
X002267035021000000010000000100000001000000001F0122820112101L5100200{
X00284611601010101000000000100010000000000000071920310719203100000000
// OUT DD SYSOUT = *
// T1 DD DSN =&&T1,SPACE=(TRK,(5,5)),
// DISP=(MOD,PASS)
// OUT DD SYSOUT = *
// TOOLIN DD *
SORT JKFROM TO(OUT) USING(CTL1)
/ *
// CTL1CNTL DD *
JOINKEYS F1 = JNA,FIELDS =(1,10,A)
JOINKEYS F2 = JNB,FIELDS =(1,10,A)
REFORMAT FIELDS=(F2:1,80)
INREC IFTHEN=(WHEN=(11,2,CH,EQ,C'01'),
BUILD=(1:1,10,X,12:45,3)),
IFTHEN=(WHEN=(11,2,CH,EQ,C'02'),
BUILD=(1:1,10,X,12:47,3)),
IFTHEN=(WHEN=NONE,
BUILD=(1:1,10,4X))
OPTION EQUALS
SORT FIELDS=COPY
/ * |
输出为
码: |
X002027174 008
X002027174 F00
X002027174 F00
X002267035 001
X002267035 F01
X002846116 007 |
|
|
回到顶部 |
|
 |
斯科鲁苏
高级会员
已加入:2007年12月7日 帖子:2205 地点:圣何塞
|
|
|
|
永永写道: |
两个文件中的密钥均为10字节1,10。
在11,2之后的第二个文件中,可以是01或02。01始终是与key关联的文件, 02可以是多个。
要进行o / p,我需要1,10字节的密钥,从01记录开始,我需要45,3字节。在位置13,2上具有值'01'的02记录上需要47,3
我希望它清楚..感谢您带来希望.. |
如果您有多个02记录,那么它们在pos 47处的值是否都相同?还是每个02记录都不同?
例如:
码: |
---- + ---- 1 ---- + ---- 2 ---- + ---- 3 ---- + ---- 4 ---- + ---- 5 ---- +
我的钥匙01 01 ABC
我的钥匙01 02 DEF
我的钥匙01 02 GHI
我的钥匙01 02 IJK
|
您是否希望输出看起来像这样?
码: |
我的钥匙01 ABC DEF GHI IJK (将所有02条记录合并为1条记录)
|
要么
码: |
我的钥匙01 ABC DEF (仅记录第1个02记录值)
|
|
|
回到顶部 |
|
 |
永永
新的用户
.jpg)
已加入:2007年4月9日 帖子:33 地点:印度
|
|
|
|
多个02如下所示。
码: |
---- + ---- 1 ---- + ---- 2 ---- + ---- 3 ---- + ---- 4 ---- + ---- 5 ---- +
我的钥匙01 01 ABC
我的钥匙01 0201 DEF
我的钥匙01 0202 GHI
我的钥匙01 0203 IJK
|
我想像
码: |
我的钥匙01 ABC DEF (DEF取自02中具有01的13,2) |
|
|
回到顶部 |
|
 |
斯科鲁苏
高级会员
已加入:2007年12月7日 帖子:2205 地点:圣何塞
|
|
|
|
以下DFSORT JCL将为您提供所需的结果。我认为您在X002267035记录中有错字,因为在pos 13处没有'01'。
码: |
// STEP0100 EXEC PGM = SORT
// SYSOUT DD SYSOUT=*
//在一个 DD *
X00202717401010101000000000100010000000000000081420190814201900000000
X002027174020100000010010000100000101000000001F0081420192101L4100200{
X002027174020200000010010000100000101000000001F0081420192101L4100200{
X00226703501010101000000000100010000000000000012820120128201200000000
X002267035020100000010000000100000001000000001F0122820112101L5100200{
X00284611601010101000000000100010000000000000071920310719203100000000
// INB DD *
X002027174
X002267035
X002846116
//整理 DD SYSOUT=*
// SYSIN DD *
OPTION COPY
JOINKEYS F1 = INA,FIELDS =(1,10,A)
JOINKEYS F2 = INB,FIELDS =(1,10,A)
REFORMAT FIELDS=(F1:1,14)
INREC IFOUTLEN=20,
IFTHEN=(WHEN=INIT,BUILD=(1,10,22:11,4)),
IFTHEN=(WHEN=GROUP,KEYBEGIN=(1,10),PUSH=(21:SEQ=1),RECORDS=2),
IFTHEN=(WHEN=GROUP,BEGIN=(21,1,ZD,EQ,1),PUSH=(11:22,4),RECORDS=2),
IFTHEN=(WHEN=(21,1,ZD,EQ,2),OVERLAY=(15:22,4))
完全移除,结点,部分=(1,10,TRAILER3=(1,20))
// *
// JNF1CNTL DD *
INCLUDE COND=(11,2,CH,EQ,C'01',或,11,4,CH,EQ,C'0201')
INREC IFTHEN=(WHEN=(11,2,CH,EQ,C'01'),BUILD=(1,10,X,45,3)),
IFTHEN=(WHEN=(11,2,CH,EQ,C'02'),BUILD=(1,10,X,47,3))
// * |
输出是
码: |
X002027174 008 F00
X002267035 001 F01
X002846116 007
|
|
|
回到顶部 |
|
 |
|
 |
查看书签
所有时间均为格林尼治标准时间+ 6小时 |
|