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.