我创建了一个包含一些记录的顺序文件。我必须将它们复制到KSDS集群。所以我为它写了一个JCL。 当我在我的顺序文件中给出数字时,它正在工作,但是当我给出英文字母时它不起作用。
为什么?
//TRC186H JOB (TRC,TRC,TRC186,D2,DT99X),CLASS=A,
// MSGLEVEL=(1,1),MSGCLASS=C,NOTIFY=&SYSUID
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER -
(NAME(TRC186.VSAM.CASE.CLUSTER) -
TRACKS(2,2) -
CONTROLINTERVALSIZE(4096) -
INDEXED -
KEYS(6,1) -
FREESPACE(10,10)) -
DATA -
(NAME(TRC186.CASE.DATA) -
RECORDSIZE(180 180)) -
INDEX -
(NAME(TRC186.CASE.INDEX) -
CONTROLINTERVALSIZE(4096))
/*
这是我从顺序文件复制到KSDS集群的代码
//TRC186A JOB (TRG),CLASS=A,MSGLEVEL=(1,1),MSGCLASS=A,
// NOTIFY=&SYSUID
//STEP1 EXEC PGM=IDCAMS
//INPUTDD DD DSN=TRC186.VSAM.INPUTPS,DISP=OLD
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
REPRO -
INFILE(INPUTDD) -
OUTDATASET(TRC186.VSAM.CASE.CLUSTER)
/*
我给出的输入是
123456个
234567个
345678个
456789个
567891个
他们很容易被复制,但是当我给出像英文字母一样的字母时
ABCDEFG
cdhert
kjsdfg
QWERTY
kjhgfd
这不会被复制到集群。
请解释原因?
答案 0 :(得分:1)
您的KSDS定义中的KEYS
指定6,1。您需要检查这是否是您想要的。
使用KSDS
加载REPRO
时,数据必须已按键顺序排列。您显示的数字数据恰好是按键顺序,字母数据不是。
如果您的IDCAMS
步骤前面有SORT
步骤,那么您应该保持干净。但是,请检查VSAM
想要密钥的方式,并与SORT
想要密钥的方式进行比较。就是这样。
KSDS
IDCAMS
上的DEFINE
的密钥定义具有特定格式。首先指定正确执行的长度,然后指定偏移量。偏移的含义是“从记录的起始点开始的字节”。因此,偏移零是字节一(或第一列),偏移一(你指定)是记录的字节二,这意味着你的数字示例仍然是有序的(有点侥幸)但你的字母表不是,他们需要按照您使用的特定DEFINE
的第二个字母的顺序排列。