I finally realized a pattern. I noticed that the windows *always* display
correctly the very first time the service program was called in a given
interactive job. I don't set LR on in the service program, and I did not
specify USROPN on the workstation file. So, even after the "main" program
terminates, the workstation file remained open in the job.
The fix: Add USROPN, open the file at the top of each of the window
procedures, and close it prior to each RETURN operation. Problem solved.
Thank you, gentlemen, for your suggestions!