当我对可变长度文件进行排序时,作业重复使用SB37。即使我增加了空间参数值,任务仍然在减少。
谁能帮我知道这是什么原因吗..?
下面是我一直在尝试的JCL。
//STEP01 EXEC PGM=SORT
//SORTIN DD DSN=<Input DSN>,DISP=SHR [the i/p DSN created with SPACE=(CYL,(1200,120),RLSE) ]
//SORTOUT DD DSN=<output DSN>,DISP=(,CATLG,DELETE),
// UNIT=DISK,SPACE=(CYL,(1200,120),RLSE),
// DCB=(RECFM=V,LRECL=32756,DSORG=PS)
//SYSIN DD *
SORT FIELDS=(1,15,CH,A)
SUM FIELDS=NONE
/*
//SYSOUT DD SYSOUT=*发布于 2014-04-18 16:09:17
由于您打算去掉尾随空白,并且只处理246的最大数据长度,所以您应该在排序中完成所有的操作。
//STEP01 EXEC PGM=SORT
//SORTIN DD DSN=<Input DSN>,DISP=SHR
//SORTOUT DD DSN=<output DSN>,DISP=(,CATLG,DELETE),
// UNIT=DISK,SPACE=(CYL,(1200,120),RLSE)
//SYSIN DD *
INREC BUILD=(1,4,5,246)
SORT FIELDS=(5,246,CH,A)
SUM FIELDS=NONE
OUTFIL VLTRIM=C' '
//SYSOUT DD SYSOUT=*注意,我已经从SORTOUT中删除了DCB信息。SORT会解决这个问题,通过将它包含在SORTOUT中(或OUTFIL中的任何DD )中,您可以在一个排序步骤中混淆和增加维护。
在INREC中,从输入生成一个新的记录,它长250字节(4字节的RDW和246字节的数据)。RDW和数据是分开提到的,这样下一个人就可以清楚地知道你在做什么(也许你真的想要250个字节的数据?)
这样,所有不想要的数据都不会进入排序本身,大大减少了您的工作区需求,减少了CPU时间和运行时间。
除非您的数据有一个实际的键(位置5,长度为11),否则您可能会将不重复的数据视为重复。如果您没有密钥,现在对数据进行排序。甚至不再需要在RDW上进行排序,因为由于在INREC上构建,所有RDW将在前两个字节中包含250的记录长度(二进制)。
SUM FIELDS=NONE现在将在246个字节的数据上去复制.
在OUTFIL中,VLTRIM=C' '用于删除碰巧留下的任何尾随空格。
考虑到你不确定你的实际记录长度,我会这样做:
INREC BUILD=(1,4,1,2)
SORT FIELDS=(5,2,BI,A)
OUTREC OVERLAY=(5:5,2,BI,EDIT=(IIIIT),10:18X)
OUTFIL NODETAIL,
REMOVECC,
HEADER2=('RECLENS PRESENT ON FILE'),
SECTIONS=(5,5,
TRAILER3=(5,5)),
TRAILER1=('MIN/MAX ',
MIN=(5,5,ZD,EDIT=(IIIIT)),
' ',
MAX=(5,5,ZD,EDIT=(IIIIT))) 这将生成一个简单的文件,显示所有记录长度,并在最后一页显示最小/最大值。
INREC用于创建仅包含(二进制)记录长度的记录.这些就是SORTed。OUTREC将二进制记录长度扩展到五个可打印的数字,前导零被抑制.报告功能被使用:细节行被抑制,不包含打印控制代码,在每个“页面”的顶部打印一个标题,在格式化的记录长度上建立一个控制中断,在中断发生时打印记录长度。最后,打印最小值和最大值。
如果使用包含以下内容的排序步骤创建此输入:
选择复制输出VLTRIM=C‘’
然后,当忽略尾随空格时,您将得到文件记录长度的报告,并且可以确信(对于该数据示例)您所知道的规范与数据匹配。
发布于 2014-04-17 10:31:09
尝试下面的操作,SB37可能是因为排序工作DDs在动态分配时没有得到足够的空间。
/STEP01 EXEC PGM=SORT
//SORTIN DD DSN=<Input DSN>,DISP=SHR [the i/p DSN created with SPACE=(CYL,(1200,120),RLSE) ]
//SORTOUT DD DSN=<output DSN>,DISP=(,CATLG,DELETE),
// UNIT=DISK,SPACE=(CYL,(1200,120),RLSE),
// DCB=(RECFM=V,LRECL=32756,DSORG=PS)
//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(500,10))
//SORTWK02 DD UNIT=SYSDA,SPACE=(CYL,(500,10))
//SORTWK03 DD UNIT=SYSDA,SPACE=(CYL,(500,10))
//SORTWK04 DD UNIT=SYSDA,SPACE=(CYL,(500,10))
//SYSIN DD *
SORT FIELDS=(1,15,CH,A)
SUM FIELDS=NONE
/*
//SYSOUT DD SYSOUT=*发布于 2014-04-17 23:15:54
我已经有一段时间没有在大型机上工作了,但是如果内存服务于B37,则可能会出现以下两个基本原因:
1)初始分配的磁盘空间不可用
2)辅助分配的磁盘空间不可用
您的JCL声明:
//SORTOUT DD DSN=<output DSN>,DISP=(,CATLG,DELETE),
// UNIT=DISK,SPACE=(CYL,(1200,120),RLSE),
// DCB=(RECFM=V,LRECL=32756,DSORG=PS)是要1200个初始钢瓶。这似乎是一个很大的空间,试着这样做:
//SORTOUT DD DSN=<output DSN>,DISP=(,CATLG,DELETE),
// UNIT=DISK,SPACE=(CYL,(12,240),RLSE),
// DCB=(RECFM=V,LRECL=32756,DSORG=PS)如果有必要,这将为您提供一个主分配,然后为每个次级分配获得240个柱面。
另外,查找SB37的确切描述,它应该描述问题是由于没有主分配空间而不是次要分配空间造成的。
https://stackoverflow.com/questions/23128016
复制相似问题