【发布时间】:2018-08-14 11:10:24
【问题描述】:
我正在尝试对数据集进行排序并写入一个新的数据集,每次我执行作业时,它都会异常终止 (ABEND=U0016)。
来自 SYSOUT 的消息。
WER276B SYSDIAG= 24646562, 29667262, 29667262, 27500165
WER164B 307,288K BYTES OF VIRTUAL STORAGE AVAILABLE, MAX REQUESTED,
WER164B 0 BYTES RESERVE REQUESTED, 307,272K BYTES USED
WER036B G=5174,B=1,BIAS=99
WER162B 75 PREALLOCATED SORTWORK TRACKS, 3,750,000 DYNAMICALLY
ALLOCATED,
WER162B 26,721,480 ACQUIRED IN 2,230 SECONDARY EXTENTS, 0 RELEASED,
TOTAL 30,471,555 TRACKS USED
WER046A SORT CAPACITY EXCEEDED
WER493I ZIIP PROCESSOR USED
WER211B SYNCSMF CALLED BY SYNCSORT; RC=0000
WER449I SYNCSORT GLOBAL DSM SUBSYSTEM ACTIVE
WER066A APROX RCD CNT 30430982
这是我的代码:
//STEP50 EXEC SORTD
//SORTIN DD DSN=FILEXYZ(0),
// DISP=SHR,DCB=BUFNO=192
//SORTOUT DD DSN=FILE2XXY,
// DISP=(NEW,CATLG,DELETE),RETPD=365,VOL=(,,,99),
// DCB=(RECFM=FB,LRECL=30050,BLKSIZE=0,BUFNO=192),
// UNIT=(TAPE,2)
//SYSOUT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=(19,5,PD,A,8,6,PD,A,50,2,ZD,A)
OUTREC IFTHEN=(WHEN=(70,18,CH,EQ,C' encoding="IBM037"'),
OVERLAY=(70:C' encoding="UTF-8"'))
OPTION DYNALLOC=(SYSDA,255)
/*
这是来自 jcl 的 SORTD 的代码:
4 //STEP40 EXEC SORTD
5 XXSORTD PROC CYLS=1,SYSFICH='*',
XX DMPCLAS='1,DEST=ABNORMAL'
XX*
XX* REMOVED SEP PARAMETER 89/07/20
XX*
6 XXSORTD EXEC PGM=SORT
7 //SYSOUT DD SYSOUT=*
X/SYSOUT DD SYSOUT=&SYSFICH
IEFC653I SUBSTITUTION JCL - SYSOUT=*
8 XXSORTWK01 DD DSN=&WORK1,SPACE=(CYL,(&CYLS)),UNIT=SORTWORK
IEFC653I SUBSTITUTION JCL - DSN=&WORK1,SPACE=(CYL,
(1)),UNIT=SORTWORK
9 XXSORTWK02 DD DSN=&WORK2,SPACE=(CYL,(&CYLS)),UNIT=SORTWORK
IEFC653I SUBSTITUTION JCL - DSN=&WORK2,SPACE=(CYL,
(1)),UNIT=SORTWORK
10 XXSORTWK03 DD DSN=&WORK3,SPACE=(CYL,(&CYLS)),UNIT=SORTWORK
IEFC653I SUBSTITUTION JCL - DSN=&WORK3,SPACE=(CYL,
(1)),UNIT=SORTWORK
11 XXSORTWK04 DD DSN=&WORK4,SPACE=(CYL,(&CYLS)),UNIT=SORTWORK
IEFC653I SUBSTITUTION JCL - DSN=&WORK4,SPACE=(CYL,
(1)),UNIT=SORTWORK
12 XXSORTWK05 DD DSN=&WORK5,SPACE=(CYL,(&CYLS)),UNIT=SORTWORK
IEFC653I SUBSTITUTION JCL - DSN=&WORK5,SPACE=(CYL,
(1)),UNIT=SORTWORK
13 XXSYSABEND DD SYSOUT=&DMPCLAS
IEFC653I SUBSTITUTION JCL - SYSOUT=1,DEST=ABNORMAL
14 XXSYSUDUMP DD SYSOUT=&DMPCLAS
IEFC653I SUBSTITUTION JCL - SYSOUT=1,DEST=ABNORMAL
15 //SORTIN DD DSN=FILEXYZ(0),
// DISP=SHR,DCB=BUFNO=192
16 //SORTOUT DD DSN=FILE2XXY,
// DISP=(NEW,PASS,DELETE),RETPD=365,VOL=(,,,99),
// DCB=(RECFM=FB,LRECL=30050,BLKSIZE=0,BUFNO=192),
// UNIT=TAPE
17 //SYSPRINT DD SYSOUT=*
18 //SYSIN DD *
请给我一些提示来解决这个问题。 谢谢你。
【问题讨论】:
-
我会在今天早上晚些时候看看。我最初的想法是您需要将 BUFNO 调低...如前所述,您的系统配置会影响此参数。
-
好的,谢谢,即使没有 BUFNO,它也会显示相同的消息。超出排序容量。
-
你能告诉我们SORTD的内容吗
-
抱歉,我正在研究并用完我的 5 分钟来编辑评论。在这里完成上述评论......基本上与@SaggingRufus 相同的请求。您将在作业输出中看到以 XX 开头的行,这仅表示此 JCL 是从 PROC 扩展而来的。
-
您是否尝试过更大的区域大小(或 REGION=0)?您的 SORTD proc 有一个 CYLS 参数 - 您可以尝试使用比默认值 1 高得多的值来调用它:使用 CYLS=1000 左右。尝试让 SORT 也分配更大的工作文件......你在动态分配的文件上获得 1000 个 cyls - 可能有一个选项可以提高这个。正如 phunsoft 建议的那样,通过估计的记录数是个好主意。切换到 VB 记录也是一个好主意 - 甚至可能跨越 (VBS)。并且 BUFNO 可能会被忽略以支持内部计算的值,因此在这种特定情况下它可能无济于事。