The typical scenario: it takes patience.
One batch job is using the data set, while another batch job wants to use the data set. If one of the batch jobs wants to change the data set (for example, running PROC SORT on a permanent SAS data set), it is not possible for both batch jobs to access the data set at the same time.
Your programming style can have some impact here. For example, if you add OUT= to your PROC SORT, then that step doesn't need to tie up the data set. But in a large number of cases, patience is a virtue.