我正在使用JCL,并且有一个所谓的 ICEMAN ,在使用IBM SORT实用程序DFSORT时会调用它。 DFSORT可用于SORT,COPY或MERGE文件等。在下面的示例中,输出来自SORT。我的问题是需要多少排序(// SORTWK01 DD UNIT = SYSDA,SPACE =(CYL,30))文件。当我在JCL看到他们时,他们似乎总是在数量上变化。有没有一个公式来计算需要多少SORTWKnns的大小?
JCL代码:
//STEP5 EXEC PGM=ICEMAN,COND=(4,LT)
//SYSOUT DD SYSOUT=1
//SYSIN DD DSN=CDP.PARMLIB(cardnumberhere),DISP=SHR
//SORTIN DD DSN=filename,DISP=SHR
//SORTOUT DD DSN=filename,DISP=(OLD,KEEP),
// DCB=(LRECL=5000,RECFM=FB),
// SPACE=(CYL,30)
//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,30)
//SORTWK02 DD UNIT=SYSDA,SPACE=(CYL,30)
//SORTWK03 DD UNIT=SYSDA,SPACE=(CYL,30)
//SORTWK04 DD UNIT=SYSDA,SPACE=(CYL,30)
答案 0 :(得分:5)
将JCL从一个作业流复制到下一个作业流是常见的,然后是下一个,下一个,导致复制淡入淡出。
根据documentation ...
通过Dynamic allocation选项请求// SORTWKdd DD
定义中间存储数据集。通常需要进行分类 应用程序除非请求动态分配。将不会 用于复制或合并应用程序。
DYNALLOC。有些商店将此设置作为默认设置。
如果需要,您可以manually calculate所需的工作空间。通常,输入文件大小的1.5到2倍就足够了。始终为效率分配多于1个SORTWKdd DD语句。避免分配大量的SORTWKdd DD语句。
答案 1 :(得分:3)
EXEC PGM=ICEMAN
和
EXEC PGM=SORT
会给你相同的结果。它们彼此为ALIAS
,并且无论指定PGM =,都执行相同的程序。
正如cschneid指出的那样,SORTWKnn是“排序工作数据集”,而且在不参考现有“标准”数据集的情况下复制JCL的趋势导致了大量工作数据集空间的过度分配。
SORT的工作区可以通过两种方式指定:手动(放入SORTWKnn文件,最大数量远远超过15)或动态使用DYNALLOC。
DYNALLOC是推荐的方法,因为工作空间将按SORT所理解的分配。在OPTION语句中查找关联的安装选项/覆盖。
通常,将有默认的DYNALLOC值来处理大多数SORT步骤,然后将为特别大的SORT提供特定的OPTION参数。
在jobstep中手动定义SORTWKnn数据集将“关闭”该步骤的任何动态分配。
SORTWKnn数据集的具体定义有时很方便,但不常见。这些天所需的空间可能接近输入文件的1.2倍。您可以从特定作业步骤的典型运行中检查SYSOUT,并查看实际使用了多少空间,如果分配过多/不足,则将主要SORTWKnn空间或数据集数量调整为更合适。
当DYNALLOC用于编程语言调用的SORT时,通常最好指定附加信息(平均记录长度,估计记录数)。这是因为SORT可能无法“看到”输入数据集,因此没有太多信息可用于估算所需的工作空间。
另外,最好将所有DCB信息保留在输出文件之外。 SORT将从输入数据集中提供正确的DCB信息,并考虑对SORT控制卡内的数据进行任何操作。如果您将DCB信息保留在JCL(LRECL,RECFM)中,则只要文件发生更改,您就有两个位置可以更改它,而不是一个。
在您的实际示例中,在步骤运行时,会不必要地分配超过100个柱面的空间。这种类型的东西,当应用于许多JOB时,可能导致其他JOB失败,甚至购买/收取/不需要的额外DASD(磁盘空间)。