Hi , This is Yogendra.
You normally specify all the data sets you need with the DD statements in your JCL for a step, if you write programs that dynamically allocate data sets, you should code the DYNAMNBR parameter on the EXEC statement so the system can acquire the resources just before their use and release themm immediately after use.
You code //stepname EXEC DYNAMNBR=n
The n tells the system how many data set allocations to hold in aniticipation of reuse.( The system actually holds n plus the total number of the DD statements used by the step.