I suppose you've tried the RUN command? As long as you don't use the /N flag, it will wait for the called program to finish executing.
We've also used other techniques to detect when a called program is finished. One thing you can easily do is to lock a record in a temp table from the called program. When the program that has the lock finishes executing, the lock will go away. If your calling program waits until the lock goes away before continuing, it will work. You can also do this with the existance of a little file on disk or a property of an object that was passed by reference, etc.
-Scott
Scott Alvord, MBA-MCA