Added a test that digits>fuzz, slight edits in messages, commited as [r13020}
20251011 Now checking that digits>fuzz, minor changes in messages.
Add ability to dynamically change options package wide ("dynamic ::OPTIONS")
Tests committed with [r 13019].
20251011 Add tests for new 'options' method.
20251011 add missing position argument
Seems to be the normal behavior... Even if not obvious at first sight. rexxref: Any object requiring initialization at creation time must define an INIT method. If this method is defined, the class object runs the INIT method after the object is created. myArray = .typedArray~new('Will') Here, the typedArrayclass doesn't have a new method. So the new method of Array is called. Implemented by the native method ArrayClass::newRexx. This method creates the array, using the argument 'Will' (error). Once...
Sublassing Array does not seem to call subclass init method before checking arguments
rexxref 3.4 ::CONSTANT Note 2 incomplete
Dear P.O., OMG! Thank you for all of your efforts! Best regards ---rony
Hi Rony, After an upgrade of VirtualBox all VMs have become corrupted :-(. I am in the process of reinstalling them from a backup but it is a painful and slow process (all needs updating&upgrading) so it will take a few days before all platforms are building. The most important ones (Win and MacOS) will build natively and I will bring all other back asap. Hälsningar/Regards/Grüsse, ooRexx oorexx@jonases.se Am 09.10.2025 um 13:53 schrieb Rony G. Flatscher orexx@users.sourceforge.net: Committed with...
Committed with [r13017}.
20251009 [feature-requests:#857] Add options method to Package class to allow dynamic change of package wide options.
Add ability to dynamically change options package wide ("dynamic ::OPTIONS")
This idea has been considered at the theoretical level. The truth is not much different. Since the queue name can be anything, the very existence of a queue with a specific name can be considered a flag. Then you can simply create a queue with a templated name, and when that succeeds, access the file or perform other actions. But that's a hack. A file flag could be used just as successfully. Regarding your proposal, having a separate process could be a problem. Who should start it? Who will shut...
This idea has been considered at the theoretical level. The truth is not much different. Since the queue name can be anything, the very existence of a queue with a specific name can be considered a flag. Then you can simply create a queue with a templated name, and when that succeeds, access the file or perform other actions. But that's a hack. A file flag could be used just as successfully. Regarding your proposal, having a separate process could be a problem. Who should start it? Who will shut...
Have you considered using RXqueue? External data queues can be used between multiple ooRexx programs. For example, if 5 different programs wanted to write a message to same logfile then each of the 5 programs would use the "QUEUE" instruction to add a new message to the data queue. A separate program (i.e. log-writer.rex) would use the "PULL" instruction to get each message and write it to the logfile. Since only one program has "write" access there's no issue with the message being truncated or...
In such circumstances, abandoning the SysCreateMutexSem(), SysRequestMutexSem(), and other functions seems highly questionable and erroneous. Using semaphores within a single process is only one possible scenario. Examples of using semaphores in different processes are easy to come by: 1. Running two or more copies of the same program. This will lead to significant synchronization issues. 2. You can also work with semaphores in other programming languages while still interacting with Rexx programs....
In such circumstances, abandoning the SysCreateMutexSem(), SysRequestMutexSem(), and other functions seems highly questionable and erroneous. Using semaphores within a single process is only one possible scenario. Examples of using semaphores in different processes are easy to come by: 1. Running two or more copies of the same program. This will lead to significant synchronization issues. 2. You can also work with semaphores in other programming languages while still interacting with Rexx programs....
In such circumstances, abandoning the SysCreateMutexSem(), SysRequestMutexSem(), and other functions seems highly questionable and erroneous. Using semaphores within a single process is only one possible scenario. Examples of using semaphores in different processes are easy to come by: 1. Running two or more copies of the same program. This will lead to significant synchronization issues. 2. You can also work with semaphores in other programming languages while still interacting with Rexx programs....
In such circumstances, abandoning the SysCreateMutexSem(), SysRequestMutexSem(), and other functions seems highly questionable and erroneous. Using semaphores within a single process is only one possible scenario. Examples of using semaphores in different processes are easy to come by: 1. Running two or more copies of the same program. This will lead to significant synchronization issues. 2. You can also work with semaphores in other programming languages while still interacting with Rexx programs....
Thanks for the idea. I'll think about it. Note: the example above is only one possible scenario for interaction between different processes. In other cases, it seems like you'll have to use "legacy" functions.
In such circumstances, abandoning the SysCreateMutexSem(), SysRequestMutexSem(), and other functions seems highly questionable and erroneous. Using semaphores within a single process is only one possible scenario. Examples of using semaphores in different processes are easy to come by: 1. Running two or more copies of the same program. This will lead to significant synchronization issues. 2. You can also work with semaphores in other programming languages while still interacting with Rexx programs....
Hi Aleksei, I can see you are on Windows, where a process can automatically lock a file for exclusive write access. Just explicitly open your file with the WRITE option (but without any of the SHARE options), and also explicitly close it, Your write code could be something like this: s = .Stream~new("path\name.ext") do while s~open("write") \= "READY:" -- it is an ERROR:13 Permission denied, while the file is open for write end -- here you can write to your file s~close
The ooRexx MutexSemaphore class works within a process and allows for synchronizing access to a scarce resource from different threads within that process. So, if you have an example that would concurrently execute on at least two threads and access the same resource then it would be possible to supply an example.
For example, to ensure that only one process at a time writes to a file, I use the SysCreateMutexSem(), SysRequestMutexSem(), SysReleaseMutexSem(), and SysCloseMutexSem() functions. The latest documentation deprecates these functions, recommending the use of the "MutexSemaphore Class." However, I was unable to use these classes to solve my problem of controlling file writes by different processes. Please suggest the best way to solve my problem at this time. As an example, I'll provide a program...
if you're using ooRexx, try address command 'dig +short myip.opendns.com @resolver1.opendns.com' with output stem ostm. On 10/2/25 07:45, JaimeC wrote: Hi, Since I no longer have access to comp.lang.rexx I'm hoping someone here can help me. From the Ubuntu command line this command: dig +short myip.opendns.com @resolver1.opendns.com Will return my external public IP address. Rather than have the output display on the console I'd like to be able to capture that output into a variable. Back in my mainframe...
It took me some experimentation with the syntax but I got it. Thanks so much!
Hi Jaime, have a look at 'address with' - I am certain that it will help you. best regards, René. On 2 Oct 2025, at 16:45, JaimeC buellboy9@users.sourceforge.net wrote: Hi, Since I no longer have access to comp.lang.rexx I'm hoping someone here can help me. From the Ubuntu command line this command: dig +short myip.opendns.com @resolver1.opendns.com Will return my external public IP address. Rather than have the output display on the console I'd like to be able to capture that output into a variable....
Hi, Since I no longer have access to comp.lang.rexx I'm hoping someone here can help me. From the Ubuntu command line this command: dig +short myip.opendns.com @resolver1.opendns.com Will return my external public IP address. Rather than have the output display on the console I'd like to be able to capture that output into a variable. Back in my mainframe days that would involve the OUTTRAP command but that doesn't seem to exist in Linux. How can I do this? -- My Signature Jaime A. Cruz Nassau Wings...
Unreadable paragraph in rexxref 1.13.4 Stems
Hello Erich, ty for taking your time to look into this strange behaviour. First: your example works here as expected. Then: by "failure" I mean the returned value is (newly) always 0, no matter if Ctrl is pressed or not. It's a "soft" failure, w/o error message. My code which worked so far: /* act on "Remove" button */ ::method RRF unguarded expose pgd. PGnum NumPG select when pgd.PGnum.1 <> pgd., , 1 - .Keyboard~getAsyncKeyState(.VK~CONTROL), then dc = RxMessageBox('To remove a nonempty page press...
Hi Mike, please provide sample code that shows the failure. Please explain exactly what happens when it "fails" or "fails (at times)". For me, a simple rexx -e "loop; say .Keyboard~getAsyncKeyState(.VK~CONTROL); call SysSleep 0.1; end; ::requires oodialog shows 1 when I press either of the Ctrl keys, and 0 else.
.Keyboard~getAsyncKeyState(.VK~CONTROL) worked as described since long (for me since 2021-11-27), but fails "now". Now set in quotation marks as it's within a rarely used routine, so IDK what all was changed (Windows updates, new programs) since then. By worked I mean the state of the Ctrl key (I use the left one) was reported correctly. Currently I use under Windows 10 (x64) REXX-ooRexx_5.0.0(MT)_64-bit 6.05 23 Dec 2022 ooDialog Version 4.2.4.12373 (an ooRexx Windows Extension) Aktive Codepage:...