0

The following space allocation is giving me an sB37 JCL error. The cobol size of the output file is 100 bytes and the lrecl size is 100 bytes. What do you think is causing this error? I have tried increase the size to 500,100 and still get the same error.

Code:

//OUTPUT1   DD DSN=A.B.C,DISP=(NEW,CATLG,DELETE),   
//          DCB=(LRECL=100,BLKSIZE=,RECFM=FBM),               
//          SPACE=(CYL,(10,5),RLSE)                   
  • From the FBM that looks like print output. For any file, you should try to estimate how big your output files should be. Then if it fills, see if you are looping. You might want to put a UNIT on, in case your files are getting allocated where they shouldn't be, but the above may be how your site does it. – Bill Woodger Aug 09 '14 at 23:03
  • Perhaps you can post the file 2 from the spool for the step which worked after using UNIT=3? From the step which failed as well would be useful. – Bill Woodger Aug 11 '14 at 06:54

4 Answers4

1

Try to increase not only the space, but the volume as well. Include VOL=(,,,#) in your DD. # is the numbers of values you want to allocate

Ex: SPACE=(CYL,(10,5),RLSE),VOL=(,,,3) - includes 3 volumes.

Additionally, you can increase the size, but try to stay within reasonable limits :)

  • If the space has already been increased to 500,100, how doi you feel putting 10,5 on three volumes is going to help? Apparently it did, but I can't work out why. 14 views, an additional Upvote. I've never specified VOL=(,,,3) for DASD. What have I been missing? – Bill Woodger Aug 09 '14 at 23:06
  • Also, what's with `Additionally, you can increase the size, but try to stay within reasonable limits :)`? Can you explain that, please, as it will confuse future readers. OP has already increased space by a factor of 50. What are your reasonable limits, and why. Without explanation it is just senseless rumour. Explain, then we see if it stands up. – Bill Woodger Aug 11 '14 at 06:58
0

The documentation for B37 says the application programmer should respond as indicated for message IEC030I. The documentation for IEC030I says, in part...

Probable user error. For all cases, allocate as many units as volumes required.

...as noted in another answer. However, be advised that the documentation for the VOL parameter of the DD statement says...

If you omit the volume count or if you specify 1 through 5, the system allows up to five volumes; if you specify 6 through 20, the system allows 20 volumes; if you specify a count greater than 20, the system allows 5 plus a multiple of 15 volumes. You can override the maximum volume count in data class by using the volume-count subparameter. The maximum volume count for an SMS-managed mountable tape data set or a Non-managed tape data set is 255.

...so for DASD allocations you are best served specifying a volume count greater than 5 (at least).

cschneid
  • 10,237
  • 1
  • 28
  • 39
  • Or, another way, OP is already getting five (so more than three) by default, so no point in specifying three. Specifying six gets 20, four times the default amount. OP claims to have already tried 50 times the amount of space without it actually working. It's looping, or the original allocation was calculated by a clown. UNIT has not fixed it. – Bill Woodger Aug 11 '14 at 06:51
0
//OUTPUT1   DD DSN=A.B.C,DISP=(NEW,CATLG,DELETE),   
//          DCB=(LRECL=100,BLKSIZE=,RECFM=FBM),               
//          SPACE=(CYL,(10,5),RLSE)                

Try this instead. Notice that the secondary will take advantage of a large dataset whereas without that parameter the largest secondary that makes any sense is < 300. Oh, and if indeed it is from a COBOL program make sure that the FD says "BLOCK 0"!!!!! If it isn't "BLOCK 0" then you might not even need to change your JCL because it wasn't fixed block machine. It was merely fixed and unblocked so the space would almost never be enough. And finally you may wish to revisit why you have the M in the RECFM to begin with. Notice also that I took out the LRECL, the BLKSIZE and the RECFM. That is because the FD in the COBOL program is all you need and putting it in the JCL is not only redundant but dangerous because any change will have to be now done in multiple places.

//OUTPUT1   DD DSN=A.B.C,DISP=(NEW,CATLG,DELETE),   
//          DSNTYPE=LARGE,UNIT=(SYSALLDA,59),                
//          SPACE=(CYL,(10,1000),RLSE)               
wolfen244
  • 1
  • 1
0

There is a limit of 65,535 tracks per one volume. So if you will specify a SPACE that exceeds that limit - system will simply ignore it.

You can increase this limit to 16,777,215 tracks by adding DSNTYPE=LARGE paramter. Or you can specify that your dataset is a multi volume by adding VOL=(,,,3)

You can also use DATACLAS=xxxx paramter here, however first of all you need to find it. Easy way is to contact your local Storage Team and ask for one. Or If you are familiar with ISPF navigation, you can enter ISMF;4 command to open a panel

use bellow paramters before hitting enter.

CDS Name . . . . . . 'ACTIVE'
Data Class Name  . . *

It should produce a list of all available data classes. Find the one that suits you ( has enougth amount of volume count, does not limit primary and secondary space

VadimKo
  • 210
  • 1
  • 5