2

我正在使用 JCL,并且有一个称为ICEMAN的东西,它在使用 IBM SORT 实用程序 DFSORT 时被调用。DFSORT 可用于排序、复制或合并文件等。在下面的示例中,输出来自 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)              
4

2 回答 2

5

JCL 通常从一个作业流复制到下一个作业流,然后再复制到下一个作业流,从而导致复制褪色。

根据文档...

//SORTWKdd DD

定义中间存储数据集。除非请求动态分配,否则通常需要排序应用程序。不会用于复制或合并应用程序。

通过DYNALLOC选项请求动态分配。一些商店将此设置为默认设置。

如果需要,您可以手动计算所需的工作空间。通常输入文件大小的 1.5 到 2 倍就足够了。始终分配超过 1 个 SORTWKdd DD 语句以提高效率。避免分配大量 SORTWKdd DD 语句。

于 2014-01-06T18:30:48.220 回答
3
EXEC PGM=ICEMAN

EXEC PGM=SORT

会给你同样的结果。它们是彼此的ALIASes,并且无论指定哪个 PGM= 都执行相同的程序。

正如 cschneid 所指出的那样,SORTWKnn 是“排序工作数据集”,并且在不参考现有“标准”数据集的情况下复制 JCL 的趋势导致了工作数据集空间的大量过度分配。

SORT 的工作空间可以通过两种方式指定,手动(放入 SORTWKnn 文件,最大数量远远超过 15)或动态使用 DYNALLOC。

DYNALLOC 是推荐的方法,因为工作空间将根据 SORT 理解的需要进行分配。在 OPTION 语句中查找相关的安装选项/覆盖。

通常,将有默认的 DYNALLOC 值来处理大多数 SORT 步骤,然后将为异常大的 SORT 提供特定的 OPTION 参数。

在作业步骤中手动定义 SORTWKnn 数据集将“关闭”该步骤的任何动态分配。

SORTWKnn 数据集的具体定义有时很方便,但并不经常。如今,所需的空间可能接近输入文件的 1.2 倍。您可以从特定作业步骤的典型运行中检查 SYSOUT 并查看实际使用了多少空间,如果存在过度分配/分配不足,则调整主要 SORTWKnn 空间或数据集数量以更好地适应。

当 DYNALLOC 用于编程语言调用的 SORT 时,指定附加信息(平均记录长度、估计记录数)通常是一个好主意。这是因为 SORT 可能无法“看到”输入数据集,因此没有太多信息可用于估计所需的工作空间。

另外,最好将所有 DCB 信息保留在输出文件中。SORT 将从输入数据集中提供正确的 DCB 信息,并考虑对 SORT 控制卡中数据的任何操作。如果您将 DCB 信息保留在 JCL(LRECL、RECFM)中,那么每当文件更改时,您有两个地方可以更改它,而不是一个。

在您的实际示例中,在步骤运行时不必要地分配了 100 多个柱面空间。这种类型的事情,当应用于许多 JOB 时,可能会导致其他 JOB 失败,甚至购买/收费/额外的 DASD(磁盘空间),这是不需要的。

于 2014-01-07T12:32:38.337 回答