go to post John Matson · Apr 22, 2019 If the C++ binding is installed you could/should be able to use a %RemoteResultSet object to accomplish what you're wanting to do. I've never done so myself so I can't confirm from experience.
go to post John Matson · Apr 22, 2019 Hi Raul,I haven't used Test or If Empy, but I can help with the rest. Here's a prototype example of subroutines: wait for: and so it begins subroutine: $ALPHA subroutine: $BETA notify: Success... exit $ALPHA: wait for: some junk send: some other junk return $BETA: wait for: some other other junk send: junk completion return Here's a working example that uses a timer, on error, and goto statements to answer repeated OK? N=> prompts with Y. When the questions stop the timer runs down and the script terminates. $looper: on error: $terminate timer: 100 wait for: OK? N=> goto $prompted goto $terminate $prompted: timer: 0 send: Y<CR> goto: $looper $terminate: Exit The real key when working with scripts is to only expect them to do exactly as told. I remind myself constantly that the scripting language is only minorly dynamic and that I cannot treat it as a programming language. John
go to post John Matson · May 22, 2017 What about something like Syncthing? I use it to keep company files mirrored & backed up. It's the same technology as BitTorrent Sync. I avoid BitTorrent sync intentionally to prevent my data from going through their servers.I did once use Syncthing to perform a Windows file server migration from a Win 2K server to an Isilon. Most/Many/All of the users used different combinations of mapped drives, network locations, and shortcuts. I used Syncthing to mirror the data between the two locations while I was able to migrate the users over time and normalize the methods they used to access files.Depending on the amount of data this may not be a viable solution for you.
go to post John Matson · May 22, 2017 Depending upon your version of Caché you may also have the %SYSTEM.WorkMgr and %SYSTEM.WorkMgrIPQ classes available to use. In WorkMgr child jobs on their own can write back to the parent processes main device so it isn't quite IPC in the sense that you're likely used to. However, it does make multithreading a job a bit easier than spawning children and then monitoring them. I've not used the WorkMgrIPQ class myself (at least, not yet) but the class documentation is closer to IPC in that structured data can be sent back to the parent/host process.
go to post John Matson · Apr 5, 2017 As an addenda, the scripting language in the 'Using Terminal Scripts' documentation that you linked to is essentially the same, if not identical to, the IDXTerm scripting language. It appears that IDXTerm and CTerm have a common ancestor in their code bases.
go to post John Matson · Apr 5, 2017 My method for dealing with the pop-up boxes is to not deal with them at all.In IDXTerm, under the Edit menu select 'User Settings'. In the window that appears change the 'Terminal Type' from "IDXTerm" to "Plain". Click Save and Apply and start up a new session for good measure.Changing this setting will prevent IDXTerm from responding to the extended control character sequences. Anything that would have been displayed in a pop-up window will now be displayed in the terminal area itself, which will make it an easy target of the IDXTerm scripting language.My experience has been that changing this setting makes IDXTerm scripting infinitely more useful for repetitive tasks.Best of luck!John
go to post John Matson · Nov 9, 2016 It sure would. I hadn't considered integer input. Thanks for pointing that out!
go to post John Matson · Nov 8, 2016 You could also use plain ol' integer division plus 1.USER>w .1\1+11USER>W 1.2\1+12USER>W 1.7\1+12USER>[EDIT] As pointed out by Carlos Lopes, this method fails for integer input:USER>W 1\1+12
go to post John Matson · Jun 23, 2016 I believe that you need to include %occErrors in your macro source code.#include %occErrorsshould take care of it.