To keep a process from running twice I've seen it lock a data area .. it could just lock the program to prevent it from being run a second time while it's running.
WRKOBJLCK or is it DSPOBJLCK should show the lock state of the program and the job(s) that have it locked. Why do I think he/she is really encountering a lock on a display file and not the program at all?
If the program is interactive and uses a display file, you can check for the locks on the display file..
Otherwise, no easy way of doing it other than going through the call stacks of all jobs on the system (I wouldn’t recommend that)