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

Reply via email to