On Thu, Nov 7, 2019 at 3:51 AM P.O. Jonsson <oor...@jonases.se> wrote:

> Ok, now I get it, thanks.
>
> *signal on any* would catch any condition then? There is no situation
> where this will fail?
>
Uh, no. This is no different than the other situation, just using a wider
net. If the halt is detected in code that does not have a trap enable, the
error will still get raised. The only difference is your signal handler
will also trap the error condition.


>
> The reason that I ask is that I still have cases where the <CTRL> C is not
> working and I have to press it a 2nd time to stop the program from running.
>
> It only happens every 20-30 times or so for the test program below (with
> signal on any) and it can be caused by other reasons (macOS not capturing
> my KB input correctly.) Just trying to understand the underlying
> mechanisms. I will try on other machines and platforms.
>
<CTRL>C is not 100% reliable at triggering a halt condition because the
interpreter is not always in control. For example, if control is blocked
waiting for I/O or some other condition, then the ooRexx signal handler has
no way of canceling that condition and raising the halt. It is only able to
record the event an react on it when control returns to the interpreter.
The second <CTRL>C kills the process without ooRexx involvement.

 Rick

>
> Hälsningar/Regards/Grüsse,
> P.O. Jonsson
> oor...@jonases.se
>
>
>
> Am 07.11.2019 um 00:15 schrieb Rick McGuire <object.r...@gmail.com>:
>
> It is NOT the entire program. For example, the SAY instruction invokes
> methods on a stream object. If the halt is detected during the processing
> of one of those methods, then their is not halt condition handler in effect
> and this gets converted into an error condition.
>
> Rick
>
> On Wed, Nov 6, 2019 at 6:10 PM P.O. Jonsson <oor...@jonases.se> wrote:
>
>>
>> Am 06.11.2019 um 22:04 schrieb Rick McGuire <object.r...@gmail.com>:
>>
>> It all depends on whether the bit of code where the halt condition is
>> detected has SIGNAL ON HALT enabled or not. The Monitor class UNKNOWN
>> method is not one of those locations, so the HALT condition gets turned
>> into an error because it was not handled.
>>
>>
>> Rick
>>
>>
>> Ok, This is what I have:
>>
>> signal on halt
>>   a = 0
>>   do while 1>0
>>     say 'Hello'
>> -- do some task to avoid a to tight loop
>>    Do i=1 to 10
>>       a=a+1
>>     end i
>>   end
>>
>> halt: say 'You pressed halt on a=' a
>>
>> Is this not sufficient to capture <CTRL> C consistently?  This IS the
>> entire program and I still can not break it in a controlled manner all the
>> time when I run it.
>>
>> I have only tried this on one machine, I will try it on other
>> machines/platforms tomorrow (midnight here in Europe), maybe there is
>> something (like the backup) that interferes on my machine. From
>> rememberance signal on halt ALWAYS worked in the past for me.
>>
>>
>> On Wed, Nov 6, 2019 at 3:11 PM P.O. Jonsson <oor...@jonases.se> wrote:
>>
>>> Adding signal on halt only helps every now and then, most of the time I
>>> get the same error message, maybe the loop is too tight?
>>>
>>> Hello
>>> /bin/sh: YOU: command not found
>>>      6 *-* You pressed halt
>>>        >>>   "YOU PRESSED HALT"
>>>        +++   "RC(127)"
>>>
>>> Most of the time I still get this:
>>>
>>> ^CHello
>>>    355 *-* Method SAY with scope "Stream" in package "REXX" (no source
>>> available).
>>>   1411 *-* Method UNKNOWN with scope "Monitor" in package "REXX" (no
>>> source available).
>>>      3 *-*   say 'Hello'
>>> Error 4 running REXX line 355:  Program interrupted.
>>> Error 4.1:  Program interrupted with HALT condition.
>>>
>>> Shall I understand that the „UNKNOWN“ method is the one I am supposed to
>>> add (halt: label and the code handling the condition)?
>>>
>>> Hälsningar/Regards/Grüsse,
>>> P.O. Jonsson
>>> oor...@jonases.se
>>>
>>>
>>>
>>> Am 06.11.2019 um 21:02 schrieb P.O. Jonsson <oor...@jonases.se>:
>>>
>>> I did not mean the actual (expected) outcome of pressing break, I meant
>>> this error message:
>>>
>>> Method UNKNOWN with scope "Monitor" in package "REXX" (no source
>>> available)
>>>
>>>
>>> What source is not available?
>>> How shall I understand the scope „Monitor“ of an unknown method?
>>>
>>> Where can I read up on this things?
>>>
>>> Hälsningar/Regards/Grüsse,
>>> P.O. Jonsson
>>> oor...@jonases.se
>>>
>>>
>>>
>>> Am 06.11.2019 um 20:42 schrieb Walter Pachl <pa...@chello.at>:
>>>
>>> Sure
>>>
>>> Try Signal On Halt
>>> DO WHILE 1>0
>>> say 'Hello'
>>> END
>>> halt: Say 'you decided to end the loop'
>>> Say 'Good bye'
>>>
>>> "P.O. Jonsson" <oor...@jonases.se> hat am 6. November 2019 um 19:42
>>> geschrieben:
>>>
>>> Hi,
>>>
>>> I got this error message when pressing <ctrl> C  on a program running
>>> and getting stuck in a loop. I have enclosed a simpler example.
>>>
>>>    361 *-* Method SAY with scope "Stream" in package "REXX" (no source
>>> available).
>>>   1448 *-* Method UNKNOWN with scope "Monitor" in package "REXX" (no
>>> source available).
>>>      2 *-*   say 'Hello'
>>> Error 4 running REXX line 361:  Program interrupted.
>>> Error 4.1:  Program interrupted with HALT condition.
>>>
>>> Is this expected behavior when pressing <CTRL> C?
>>>
>>> I am running Open Object Rexx Version 5.0.0  r11935 on a Mac with macOS
>>> Mojave. I build with this command
>>>
>>> cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=RELWITHDEBINFO
>>> -DCMAKE_INSTALL_PREFIX=~/Applications/ooRexx5 ../oorexxSVN
>>>
>>> Just wondering.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> Hälsningar/Regards/Grüsse,
>>> P.O. Jonsson
>>> oor...@jonases.se
>>>
>>>
>>>
>>> _______________________________________________
>>> Oorexx-devel mailing list
>>> Oorexx-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>>>
>>>
>>>
>>>
>>>
>>> LG
>>>
>>> Walter
>>> _______________________________________________
>>> Oorexx-devel mailing list
>>> Oorexx-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>>>
>>>
>>> _______________________________________________
>>> Oorexx-devel mailing list
>>> Oorexx-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>>>
>>>
>>> _______________________________________________
>>> Oorexx-devel mailing list
>>> Oorexx-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>>>
>> _______________________________________________
>> Oorexx-devel mailing list
>> Oorexx-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>>
>>
>> _______________________________________________
>> Oorexx-devel mailing list
>> Oorexx-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>>
> _______________________________________________
> Oorexx-devel mailing list
> Oorexx-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>
>
> _______________________________________________
> Oorexx-devel mailing list
> Oorexx-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>
_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to