I can suggest two approaches.
The first is simpler, though probably not as suitable. You could create an entry-sequenced file, name it in an ?OUT command in your ENFORM command, then run two LIST commands. The output from the two LIST commands will appear in that one file. There will be no separation between the end of the first report and the start of the second report. You could use an AT END statement to get ENFORM to print some blank lines at the end of the first report so there is some space before the second report starts. If you want to print the combined report on a printer, that might not work so well, since there will be no forms control commands in the entry-sequenced file. You could easily print it with the command
FUP COPY file,$S.#LP
but the lines probably will not appear at the proper places on the pages. If nice appearance isn't important, it would get the job done.
You cannot look at the contents of an entry-sequenced file with EDIT or TEDIT, so if the idea is to get two reports into one file that you could look at with an editor, you could use an EDIT command to copy the lines from the entry-sequenced file into an Edit file, assuming the report lines are not too long and there are not too many lines in the report.
If the goal is to get two LIST reports into a single spooler job, there is a second approach that is a little more work, but does the job well. Remember the discussion about terminal substitute programs? The same kind of program can be used to accept output intended for a printer and pass it along to the spooler.
The program would open its OUT file, then go into a loop reading its $RECEIVE file and reproducing the operations it receives to its OUT file. Data lines it would just write to its OUT file. For system messages, it would check the message type and do the appropriate thing. OPEN and CLOSE messages would not be passed on. For CONTROL, SETMODE, CONTROLBUF, and SETPARAM messages, it would call CONTROL, SETMODE, CONTROLBUF, or SETPARAM, getting the function and parameters from the system message. For every message, it would call REPLY with a filesystem status of 0, then it would read a new message from $RECEIVE. The code is rather simple.
You would run this program before starting ENFORM, and give it a process name, specify OUT as a spooler collector, and include the NOWAIT option, In the ENFORM commands, you would name the process' name in an ?OUT command. Do as many LIST commands as you like. After exiting ENFORM, use a TACL STOP command to stop the process name.
Since the program does not pass along open and close operations, the spooler sees just one open when the output gathering program starts, and one close when you kill the program with the STOP command after the ENFORM has exited. So all the output that flowed through the program is in one spooler job. ENFORM does a page eject before it starts writing a report, so each LIST command's output would be properly-separated from the previous report, and any other special spacing will be done properly since the program passes along all the other system messages. The program does not buffer anything, so it is safe to stop it with a STOP command.