OK, a couple of points: HI, TS, and TE belong to the set of CMS "immediate commands", a feature that goes 'way back to VM/370. Immediate commands provide an asynchronous mechanism that allows the user to interrupt an executing program and pass a command to it without the program issuing a read to the terminal first. This generalized mechanism can be used to halt an executing program (HX), suspend or resume console output (HT,RT) and perform several other debugging functions against any running CMS program.
The CMS user may even create custom immediate commands (IMMCMD) and use them to asynchronously control the execution of any program or exec that has been enabled to recognize them. The closest analog in Unix would be the signal mechanism in a process. I don't think the HS/TS/TE immediate commands were available before Rexx (VM/SP) but it's possible. ISTR that in EXEC2, all we could do was to halt and resume console output with HT/RT and terminate the exec by abending the EXEC2 processor itself with HX. As such, immediate commands have never been "a part of Rexx". They are a generalized platform-specific tool that one uses to debug Rexx execs. HI, TS, and TE were added to CMS specifically for the Rexx interpreter, but equivalent hooks were added in EXEC2. When Rexx was ported to TSO/E, the interpreter-specific immediate commands were ported as well (along with EXECIO, the stack, and other CMS features). I know of no other Rexx platform that implements immediate commands. I've used (o)REXX on OS/2, uni-REXX on AIX, and Regina on Windows/Unix/Linux, and none of them had that capability. The posted examples of using HI, TS, and TE in ooRexx are absurd: why would one issue from within a Rexx program 'Address HOSTEMU TS' when that provides no more functionality (and a lot more overhead) than simply coding 'Trace ?R' in the same place? The raison d'être for HI/TS/TE was to be an asynchronous method to start/stop tracing, or terminate the program without taking down the interpreter environment. For example, when your program unexpectedly begins to loop, or to take periodic snapshots of the program's progress through a large array or file. I don't know how HOSTEMU attempted to implement the immediate commands but there are several ways to do so. The most efficient would probably be via Unix signals. The Rexx interpreter would stash its PID in a well-known location, and the current shell process would use that to send a 'kill -s USR1 $rxpid' signal that the interpreter could trap. OS/2 did a lame, only-on-startup check the RXTRACE environment variable. I suspect that checking RXTRACE at the every clause boundary was probably painful from a performance standpoint. True immediate commands for ooRexx would be a valuable feature but probably difficult to implement except for the simplest instances of a single instance of the interpreter. -Chip- On 9/5/2015 10:10 PM, CVBruce wrote: > I feel that I overstated the case, in that I do believe they are a part of > Rexx, in that they are supported in a particular Rexx implementation. There > are always going to be locally implemented features that are not universally > available in every implementation of the language. > > Bruce >> On Sep 5, 2015, at 7:03 PM, Les Koehler <vmr...@tampabay.rr.com> wrote: >> >> No, they're not part of Rexx, but as mentioned by Leslie earlier, they >> *are* part of CMS and were specifically added to improve the usability >> of Rexx. I was with IBM at the time and we cheered there addition! >> >> Les >> >> On 9/5/2015 9:29 PM, CVBruce wrote: >>> I’m not an expert on this, but the example you gave in your bug report >>> would never work. This has nothing to do with rexx, but with the way >>> Linux/Unix works. When you typed the ampersand “&” at the end of the >>> command, you disconnected your keyboard from the running process and >>> reconnected it to the shell. You can type all day and your program won’t >>> see a single character. >>> >>> I played around with this and this example works on Linux (Raspbian) with >>> ooRexx (5.0.0). >>> #!/usr/bin/rexx >>> X = 0; >>> Do I = 1 to 100000 >>> X = X + 1; >>> If X//5 == 0 Then Do; >>> address hostemu TS >>> end >>> If X//7 == 0 Then Do; >>> address hostemu TE >>> end >>> end; >>> ::requires "hostemu” LIBRARY >>> >>> When you run this program, it must be in foreground or your keyboard will >>> not be attached to the program. I got this example working by reading the >>> documentation provided in the ooRexx Extensions V4.1.3 manual. I don’t >>> find this functionality particularly useful, and you may not either. That >>> doesn’t mean that they are buggy. And just because you find something in a >>> TSO or CMS manual doesn’t mean that it is a part of “Rexx”. I just checked >>> “The Rexx Language, 2ed” and TE, TS, and HI are not mentioned. >>> >>> Bruce >>> >>>> On Sep 5, 2015, at 4:04 PM, J. Leslie Turriff <jlturr...@mail.com> wrote: >>>> >>>> Apparently, the ooRexx developers are happy with their crippled >>>> implementation of these emulated commands, since their response to my bug >>>> report is essentially, 'working as designed,' as IBM would have said (or >>>> broken as designed, as IBM users sometimes have been wont to say about >>>> broken >>>> features). >>>> See https://sourceforge.net/p/oorexx/bugs/1350/ >>>> >>>> Leslie >>>> >>>> On Tuesday 18 August 2015 05:35:03 J. Leslie Turriff wrote: >>>>> The Rexx Extensions Library Reference (sort of) documents the HI, TS and >>>>> TE immediate commands (syntax only) but does not explain how they are >>>>> used. >>>>> When a Rexx program is running and I type TS on the command line the >>>>> system >>>>> >>>>> does not recognize it. I get one of two messages: >>>>>> sh: TS: command not found >>>>> >>>>> which is output from bash if I type it on the console where the >>>>> Rexx >>>>> program is running; or >>>>> >>>>>> If 'ts' is not a typo you can use command-not-found to lookup the >>>>>> package >>>>> >>>>> that contains it, like this: >>>>>> cnf ts >>>>> >>>>> if I type the command on another console. >>>>> >>>>> Prefacing it with 'rexx' does not help. So, how are these used in the >>>>> *nix environment? >>>> >>>> >>>> >>>> -- >>>> A Caution to Everybody >>>> >>>> Consider the Auk; >>>> Becoming extinct because he forgot how to fly, and could only walk. >>>> Consider man, who may well become extinct >>>> Because he forgot how to walk and learned how to fly before he thinked. >>>> >>>> -- Ogden Nash >>>> >>>> ------------------------------------------------------------------------------ >>>> _______________________________________________ >>>> Oorexx-users mailing list >>>> Oorexx-users@lists.sourceforge.net >>>> https://lists.sourceforge.net/lists/listinfo/oorexx-users >>> >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> >>> >>> >>> _______________________________________________ >>> Oorexx-users mailing list >>> Oorexx-users@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/oorexx-users >>> >> >> ------------------------------------------------------------------------------ >> _______________________________________________ >> Oorexx-users mailing list >> Oorexx-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/oorexx-users > > > > ------------------------------------------------------------------------------ > > > > _______________________________________________ > Oorexx-users mailing list > Oorexx-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/oorexx-users > ------------------------------------------------------------------------------ _______________________________________________ Oorexx-users mailing list Oorexx-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/oorexx-users