Jobs should only hold a resource while needed and release it within any given procedure. The Job needs to access the availability of a resource; if it is not being used within a given procedure.. and release it. Maybe a Job Control Language to wrap the
procedure steps would be good. The Job Control Language can feed into the Schedular giving way to an intelligent Schedular.