The lock is simple:
//LOCKJOB1 DD DSN=same.name.for.both.jobs,DISP=OLD
//LOCKJOB2 DD DSN=same.name.for.both.jobs,DISP=OLD
You put those in the step which is doing the updating. The name for the DD is irrelevant, just has to be syntactically-correct. The DSN= must be the same in each job, the dataset must exist, and must specify DISP=OLD on both (with only two JOBs one could be DISP=SHR and it would still work).
Nothing has to open, close, read, anything. No program changes. Just a DSN. Just so that the two JOBs cannot be run at the same time due to the DISP=OLD.