During execution of an Endevor processor, the executed program might raise a SB37 abend due to lack of space in an output dataset.
This article describes how to address this situation
First step would be to identify the output dataset where the SB37 abend arose. Doing that requires:
The processor source statements are normally displayed as part of C1MSGS1 report. However, this might be disabled onsite by option NO_PROC_PRINT= in the optional features table (ENCOPTBL). In this case, it is possible to force the print of the processor statements for a particular job by adding a DD statement to the JCL:
//EN$PPRT DD SYSOUT=*
Message IEC030I in JESMSGLG mentions the ddname and the dataset name that experienced the SB37 abend. For example:
10.18.49 JOB09326 IEC030I B37-04,IFG0554A,XUSERID1,NDVRBAT,SYSPRINT,C41F,DWK415, 775
775 SYS22308.T101754.RA000.XUSERID1.COBLIST.H01
The C1MSGS1 report shows the name of the processor step that raised the SB37 abend. For example:
10:17:55 C1X0012I STEP COBOL INVOKING PROGRAM IGYCRCTL
10:17:55 C1X0013I PARM=ARCH(12),OPT(0),APOST,C,BUF(12288),,RENT,DATA(31),TRUNC(BIN),
10:18:49 C1X0011S STEP COBOL PROGRAM IGYCRCTL ABENDED, CODE=SB37
The processor source statements describe how the dataset is allocated (if allocated by the processor) and how it is used in the abending step. For example:
C1G0249I //INIT EXEC PGM=BC1PDSIN,MAXRC=0
C1G0249I //C1INIT01 DD DSN=&&COBLIST,DISP=(,PASS,DELETE),
C1G0249I // UNIT=&WRKUNIT,SPACE=(CYL,(100,10),RLSE),
C1G0249I // DCB=(RECFM=FBA,LRECL=121,BLKSIZE=3630,DSORG=PS)
....
C1G0249I //COBOL EXEC PGM=IGYCRCTL,COND=(4,LT),MAXRC=4,REGION=0M,
C1G0249I // PARM=(&PARMCBM1,&PARMCBM2)
C1G0249I //STEPLIB DD DSN=&CBMCOMP,DISP=SHR
C1G0249I //SYSPRINT DD DSN=&&COBLIST,DISP=(OLD,PASS)
Note that, when dealing with temporary datasets as in this case, MVS uses the temporary name COBLIST specified in the processor as part of the dataset name SYS22308.T101754.RA000.XUSERID1.COBLIST.H01. Together with the ddname in message IEC030I, this should be enough to identify the dataset in question.
Next step is to determine whether the dataset has been allocated with the requested space so that the SB37 abend is legitimate.
If the dataset is a permanent one, this may be done by examining the space allocated to the dataset after the SB37 abend. In the above example, if the dataset has 16 extents and a total of 250 cylinders (a primary extent of 100 cylinders plus 15 10-cylinders secondary extensions), the dataset has reached its maximum requested capacity so the SB37 abend is legitimate.
If the dataset is a temporary one (as in the above example), it will be deleted so it will not be possible to check its allocation after the abend. In this case, it is still possible to temporarily change the processor so that it copies the temporary dataset over a permanent one (with the same DCB attributes and allocated space) to be analyzed after the SB37 abend.
One way or the other, if the dataset has NOT allocated all the space requested before raising the SB37 abend, it means that the SB37 abend is NOT legitimate because EITHER
If the abend is a legitimate one, the solution is to increase the space allocated to the dataset
Otherwise this is an issue for the site storage administrator and increasing the space allocated to the dataset will hardly resolve the issue.