Long run times can be factors outside your program, such as system too busy or tape mount times. Be sure these are not the problem.
Now make sure you use large BLKSIZEs on input and output files to ensure reads/writes are most efficient.
You can trace the logic path to be sure you dont OPEN and CLOSE file repeatedly, etc.
Finally, you could put WRITE statements in at strategic points (with timestamps) to track the flow.
Disclaimer: My comments on this forum are my own and do not represent the opinions or suggestions of any other person or business entity.