On Thu, 16 Jan 2025 21:10:57 -0600, Lionel B Dyck <lbd...@gmail.com> wrote: >Corrected URL as the article was moved to the Tutorials section of the site >https://dinoframe.io/tutorial/a-rexx-outtrap-secret
It took me a while to understand what the alternative was to call outtrap 't.' x = sayit('Calling LISTD') that *didn't* capture the output. I thought at first you might be pointing out a difference between calling SAYIT as a function: x = sayit('Calling LISTD') and as a command: 'SAYIT Calling LISTD' But no, the output is trapped either way. It finally dawned on me that you were hoping for OUTTRAP to capture the exec's own console output: call outtrap 't.' say 'Calling LISTD' /* trap this to be processed later */ So the real "secret" here is that the scope of "command output" captured by OUTTRAP is the output of commands issued by the exec (where an external function or subroutine is effectively called as a command), and doesn't include the exec's own output. The presumption was probably that your exec could manage its own output and didn't need OUTTRAP to process it. Unfortunately, you can't just increment OUTTRAP's index yourself and insert your own lines, something like: next = t.0 + 1 t.next = 'Calling LISTD' t.0 = next /* nope, OUTTRAP won't use this */ because OUTTRAP keeps its own index internally and won't refer back to T.0 to see where to save the next line of output. You'd have to keep a "stem of stems" and then process them all together later: t.0 = 0 ... next = t.0 + 1 t.0 = next t.next.1 = 'Calling LISTD' t.text.2 = ' ' t.next.0 = 2 next = t.0 + 1 t.0 = next Call Outtrap 'T.'next'.' "listd 'sys1.parmlib'" next = t.0 + 1 t.0 = next t.next.1 = ' ' t.next.2 = 'LISTD Completed.' t.next.0 = 2 ... Call Outtrap 'OFF' Do i = 1 to t.0 Do j = 1 to t.i.0 Say t.i.j End End ¬R ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN