How to execute a program from a program and capture the results from the executed program
Hi,
I have a program that displays the current running processes to the screen. I need to have a program execute that display program and capture the results to a file. The display program does pause at the bottom of each page waiting for an 'enter' to go to the next page.
Note( the display program will not successfully compile on the current system but it does work)
Also - very, very new to Mumps.
Thanks,
Bob
are you looking for this ?
Execute Server Commands from Caché / Ensemble / IRIS
Hi,
To run do cmd^zpipe(), do I need to put the code provided into a program and compile it?
Then when I run it replace cmd with the program that I wish to test?
In my case it would be D SS^ZPIPE() OR D ^%SS^SPIPE()
I really am new to this. I have access to the free online documentation and some cache programs.
Bob
Hi,
Is this something that just can't be done in mumps/cache?
Thanks,
Bob
Hi,
JOBEXAM? never heard of it.
The program is a MUMPS program. The results display on the screen. I need a program to execute that program to capture the result, write it to a file and email that file. A cron will run it every 15 minutes.
Thanks,
Bob
Hi,
I think that I am closer.
I created a wrapper. I opened a file, executed the SS program, closed and emailed the file.
But, The program displayed the results to the screen and created a zero byte file that it emailed.
How can I get the output to not display and get written to the open file?
Thanks,
Bob
Hi,
Thanks for your response.
Robert Cemper sent me the solution.
use file do ALL^%SS ;; must be the same line
Worked perfectly.
Bob
Hi,
Cache on Unix
Bob
Hi,
OMG!. Too cool. That worked.
Thank you very, very much.
Bob
Hi,
Oh, good to know.
Thanks again.
Bob
Sorry, this is a description of how to run a program of WINDOWS or LINUX from Caché.
What you address here ar Caché Routines or ClassMethods.
I have updated my previous comment
Hello,
I looked up JOBEXAM. That might display what I need but, I need to be able to capture the result into a file and email that file every 15 minutes. So if I use the program that I have or JOBEXAM, I still need a way to get the results into a file that I can email.
Thanks for your patience,
Bob
BINGO !
Have you used USE command?
https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY...
Hi,
Yes, I think so.
I opened the file (file-name) then I did USE file-name.
It displayed to the terminal and created an empty file.
Bob
@Sourabh Sethi gives you reasonable advice. You have a code which displays something on a terminal.
If display is done with "write" command (but not with some device-specific video-memory related commands) you can switch the device before calling the "program" and it will direct all the "writes" into the file.
But maybe "your program" changes the device to terminal intentionally in the code - so I think you cannot go with USE device approach in this case - better change the code. You say "you cannot compile the program" - but do you have the source code to see what it really does? If yes you can easily answer yourself what it does and operate accordingly.
Maybe another idea is to change the device "terminal" in your system - maybe you can log everything from the device to a file. I don't remember if we have this feature for device settings.
Hi,
Yes, my code does have all of the necessary error handling.
I did not have the ALL in the D statement. I added it with no space before the ^.
It compiled and ran. It did stop the program from prompting between pages but I still have an empty file.
Bob
Hello Bob,
I believe something similar to the following is what others have been suggesting.
if ('$test) { write !,"Failed to open "_file quit }
use file
do ALL^%SS
close file
quit
This works for me. Is this what you did? Is it not working for you?
Note that, unlike my minimal example, your code should of course include proper error trapping/handling.
Hope that helps,
Aaron
Hey Bob,
Sorry for delay in response as I was not working today.
Can you please share the code of wrapper you have written.
USE command should share the device.
Regards
Sourabh
That's great!!!!
Create a wrapper, which will OPEN a FILE, and USE it.
Then call your program from the wrapper.
Then close ur file.
I guess this should force to write in file if the earlier program is writing in terminal.
Hi Bob!
Could you please share the version of InterSystems Data platform you execute the program in? Is it Caché, or Ensemble or InterSystems IRIS?
Also, what is the OS as a host?
if you test your example from terminal prompt it needs some important change:
open file:("WNS"):3
if ('$test) { write !,"Failed to open "_file quit }
use file do ALL^%SS ;; must be the same line
close file
quit
Social networks
InterSystems resources
Log in or sign up
Log in or create a new account to continue
Log in or sign up
Log in or create a new account to continue
Log in or sign up
Log in or create a new account to continue