In a word – No. Not without the journals.
That is, there is no way to tell what program did it yesterday.
If you change the programs and file you could add a field for the chg program id, chgDt, chgUsr.
Or you could set up a trigger program to capture this data into a log file of your own.
Best answer is journaling.
A trigger on a file may interrogate the call stack to determine what program caused the update. It would almost certainly be a worse performer than a journal, and recording the information could take as much space as a journal entry.
Some people prefer triggers even though they don’t provide the guarantee of a journal entry nor the speed. I’ve never understood why someone would look for harder and slower ways of doing things that the system can do automatically.
And you could always replace every routing entry, prestart job and autostart job with ones that you create. The replacements would start job traces before transferring control to whatever program was originally in place for the entry. Then you’d have traces that could be searched for accesses to the file. The active program name would be available in the trace.