The JCL code below is part of a PROC and then a splitter that takes a large (by my standards so far) amount of data and sends it to an application to display the data as a report. The report ends up being just under 10,000 pages with each page being 56 lines. I only changed the name of the OUTPUT before DD in the PROC, both DSN names, and the RPT name to post it here. Let me be clear, this works right now because I have the BACKUP commented out. In order to have a copy of the data as a backup, I changed the DISP of INPUT01 to OLD,KEEP,KEEP. Normally I wouldn't keep INPUT01 after the splitter runs. An ABEND occurs when the BACKUP is not commented out.
First, a code snippet from the PROC output that creates the GDG which will be used by the splitter:
//OUTPUT DD DSN=TEST.AMCQ.ADPLSUSP(+1),
// DISP=(,CATLG,DELETE),
// UNIT=DISKT,
// SPACE=(CYL,(9,9),RLSE)
// DISP=(,CATLG,DELETE),
// UNIT=DISKT,
// SPACE=(CYL,(9,9),RLSE)
Here is the splitter code:
//JS10 EXEC PGM=WAAPSPLT
//*
//INPUT01 DD DSN=TEST.ABCD.REPORT(+0),
// DISP=(OLD,KEEP,KEEP),
// DCB=OPTCD=Z
//CTL01 DD *
RKL=0
DD=F0001,RPT=REPORT
//F0001 DD SYSOUT=(V,QOSPOLSP)
//*BACKUP DD DSN=TEST.ABCD.REPORTB(+1), BACKUP FILE
//* DISP=(,CATLG,DELETE),
//* UNIT=DISKQ,
//* SPACE=(CYL,(200,20),RLSE),
//* DCB=(SYS3.DSCB,LRECL=186,BLKSIZE=27900,RECFM=VB)
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=3
//*
//INPUT01 DD DSN=TEST.ABCD.REPORT(+0),
// DISP=(OLD,KEEP,KEEP),
// DCB=OPTCD=Z
//CTL01 DD *
RKL=0
DD=F0001,RPT=REPORT
//F0001 DD SYSOUT=(V,QOSPOLSP)
//*BACKUP DD DSN=TEST.ABCD.REPORTB(+1), BACKUP FILE
//* DISP=(,CATLG,DELETE),
//* UNIT=DISKQ,
//* SPACE=(CYL,(200,20),RLSE),
//* DCB=(SYS3.DSCB,LRECL=186,BLKSIZE=27900,RECFM=VB)
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=3
Here is a relevant portion of the JESYSMSG:
.IEC036I 002-18,IGC0005E,QPMSSUSP,JS10,BACKUP,17A3,D20018,
.TEST.AMCQ.BDPLSUSP.G0001V00
.IEA995I SYMPTOM DUMP OUTPUT
.SYSTEM COMPLETION CODE=002 REASON CODE=00000018
.TEST.AMCQ.BDPLSUSP.G0001V00
.IEA995I SYMPTOM DUMP OUTPUT
.SYSTEM COMPLETION CODE=002 REASON CODE=00000018
Here is Data Set Information for the INPUT01 GDG (I think the block size is relevant, but am very new to mainframe so I could just be spinning my wheels):
Data class . . . . . : DCDATAX
Organization . . . : PS
Record format . . . : FBA
Record length . . . : 186
Block size . . . . : 27900
1st extent cylinders: 9
Secondary cylinders : 9
Data set name type :
SMS Compressible. . : NO
And here is an explanation of the ABEND:
S002 - 18 - AN INVALID RECORD WAS ENCOUNTERED ON A PUT OPERATION;
THE DATASET USES THE VARIABLE RECORD FORMAT. THE LENGTH VALUE OF
THE RDW IS EITHER: LESS THAN 4, GREATER THAN 32,767, GREATER THAN
THE BLOCKSIZE SPECIFIED IN THE DCB, OR LESS THAN 5 IF ASA CONTROL
CHARACTERS ARE BEING USED.
My thinking is that the data set is just too large because of the 32,767 limit, but not sure how this can be the case since the block size of the data set that is created in the PROC is 27900. There is no real necessity for this BACKUP issue to be fixed as it is only going to be running in a testing environment and my workaround for the backup does the job, but for educational purposes I was curious as to what a possible solution could be. I have asked some senior developers around my office and no one can figure it out, though no extensive amount of time has been put into this problem by anyone other than me.
Any ideas?