hostcmd_j_ is Joey's cover for 2!:0, e.g. see www.jsoftware.com/pipermail/programming/2017-April/047204.html
On Sat, Nov 25, 2017 at 12:06 PM, J. Patrick Harrington <[email protected]> wrote: > Sorry, I meant "returning with no screen output' > I am now running the full program with hostcmd_j_ for 2!:0. > It's chugging away, hasn't failed yet. :-) > > > On Sat, 25 Nov 2017, J. Patrick Harrington wrote: > >> Chris, >> >> That test works. I just tried >> >> hostcmd_j_ '../synmod.exe < fort.5 >fort.6' >> >> and that works as well, returning with screen output, and writing >> successfully to fort.6. So hostcmd_j_ ~: 2!:0 >> >> On Sat, 25 Nov 2017, chris burke wrote: >> >> Here is another test, this time with redirection, and using hostcmd. When >>> foo is run, it should wait 2 seconds and return its (string) argument. >>> If >>> this works, try the same with synmod.exe. >>> >>> T=: jpath '~temp/' >>> F=: T,'t1.sh' >>> G=: T,'t2.txt' >>> H=: T,'t3.txt' >>> >>> F fwrites~ '#!/bin/bash',LF,'sleep 2',LF,'read var',LF,'echo $var' >>> fmakex F >>> >>> foo=: 3 : 0 >>> G fwrites~ y >>> H fwrites~ '' >>> hostcmd_j_ F,' < ',G,' > ', H >>> smoutput freads H >>> ) >>> foo 'hello' >>> >>> On Sat, Nov 25, 2017 at 10:22 AM, J. Patrick Harrington >>> <[email protected]> >>> wrote: >>> >>> > Chris, >>> > I have finally got back to my mac to test this. I have >>> installed >>> > the latest j806 to make sure it's up to date (and tried this with j805 >>> > with the same results as reported here). Both pass your test: >>> > > F=: jpath '~temp/t1.sh' >>> > F fwrites~ '#!/bin/bash',LF,'sleep 2',LF,'echo "done"' >>> > 32 >>> > fmakex F >>> > foo=: 3 : 0 >>> > echo 2!:0 F >>> > echo 2+3 >>> > ) > foo'' >>> > done >>> > > 5 >>> > > The mac is a late 2014 mini running OS 10.12.6 (Sierra). >>> > JVERSION >>> > Engine: j806/j64nonavx/darwin >>> > Release: commercial/2017-11-06T10:18:00 >>> > Library: 8.06.09 >>> > Qt IDE: 1.6.2s/5.6.3 >>> > Platform: Darwin 64 >>> > Installer: J806 install >>> > InstallPath: /users/jph/j64-806 >>> > > But... my program still fails. I can simplify the problem by just >>> > entering >>> > one line (after setting the directory to >>> /Users/jph/tlusty205/synspec/j >>> > ph): >>> > 2!:0 '../synmod.exe < fort.5 > fort.6' >>> > Instead of writing the output to fort.6, it dumps that output to the >>> Jqt >>> > session: >>> > ... >>> > PARTITION FUNCTIONS AT THE STANDARD DEPTH >>> > ------------------------------------------ >>> > > > H 4.58E+00 1.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 >>> 0.00E+00 >>> > 0.00E+00 >>> > He 1.00E+00 2.00E+00 1.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 >>> > 0.00E+00 >>> > Li 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 >>> > 0.00E+00 >>> > Be 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 >>> > 0.00E+00 >>> > B 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 >>> > 0.00E+00 >>> > C 1.19E+02 6.12E+00 1.04E+00 2.01E+00 1.00E+00 0.00E+00 0.00E+00 >>> > 0.00E+00 >>> > > etc. >>> > This is just the tail of the 557 line output file. So the > direction >>> of >>> > the script is not followed. But if I go to a terminal shell in the >>> same >>> > directory and enter >>> > ../synmod.exe < fort.5 > fort.6 >>> > it executes without any screen output. And the results are printed to >>> > fort.6. >>> > > On my Dell XPS running 806 under Ubuntu 16.04, >>> > 2!:0 '../synmod.exe < fort.5 > fort.6' >>> > returns to the qt terminal without any screen output, and looking at >>> > fort.6, the expected results have been written there. So there is >>> > some problem about how 2!:0 handles the directed output on the mac as >>> > opposed to the Linux machine. >>> > > I suppose I could work around this by modifing the fortran program >>> to > send >>> > the output directly to a file called 'fort.6' instead of directing the >>> > standard output. But it's huge program I didn't write, and I'd rather >>> > not. >>> > > Regards, Patrick >>> > > On Wed, 22 Nov 2017, chris burke wrote: >>> > > > You should be able to do a simple test to see if 2!:0 waits, for >>> > > example >>> > > as >>> > > below. This does wait on my Mac with the same J as you, except the >>> avx >>> > > version. >>> > > > > F=: jpath '~temp/t1.sh' >>> > > F fwrites~ '#!/bin/bash',LF,'sleep 2',LF,'echo "done"' >>> > > fmakex F >>> > > > > foo=: 3 : 0 >>> > > echo 2!:0 F >>> > > echo 2+3 >>> > > ) > > > > foo'' >>> > > > > On Wed, Nov 22, 2017 at 7:28 PM, J. Patrick Harrington > > < >>> [email protected] >>> > > > > > wrote: >>> > > > > Bill, >>> > > > > > > I've tried that. ../synmod.exe < fort.5 > fort.6 in a >>> terinal >>> > > > window works fine on all three machines. And the directory change >>> > > > is OK. WHen the program fails on the Mac Mini, the J session is >>> > > > left in the /home/tages/tlusty205/synspec/jph directory. >>> > > > > > > Patrick >>> > > > > > > On Thu, 23 Nov 2017, bill lam wrote: >>> > > > > > > You can try executing the cmd in bash shell to verify >>> whether it > > > actually >>> > > > > work on the other machine. >>> > > > > > > > > Also check the cwd in J session to see it is correct. >>> > > > > > > > > On Nov 23, 2017 12:54 AM, "J. Patrick Harrington" > > > >>> > <[email protected]> >>> > > > > wrote: >>> > > > > > > > > A>> A problem has surfaced which has me puzzled. I >>> have written > > > > A>> a >>> >>> > > > > > > > > > > program which needs the results of another program, >>> synmod.exe, > > > which >>> > > > > > > > reads in a file, executes for a few seconds, and writes >>> the > > > > results >>> > > > > > to the file fort.6 (synmod.exe is my modification of a 10,000 >>> > > > > > line >>> > > > > > fortran program). The relevant part of my program is as >>> follows: >>> > > > > > > > > > > LAM=: IX=: QX=: <'' >>> > > > > > 1!:44 '/home/tages/tlusty205/synspec/jph' >>> > > > > > 'Ti gi lam1 lam2'=. y >>> > > > > > fix55 lam1, lam2 NB. put lam1 & lam2 into fort.55 >>> > > > > > lngg=. 10^. gi >>> > > > > > nh=. -:#Ti >>> > > > > > i=. _1 >>> > > > > > while. (i=. >:i)<nh do. >>> > > > > > Tii=. i{Ti >>> > > > > > lngi=. i{lngg >>> > > > > > Kbicub Tii, lngi >>> > > > > > 2!:0 '../synmod.exe < fort.5 > fort.6' >>> > > > > > Z=. lam2 CLEAN Extract'' >>> > > > > > 'mu rad deg lam Flx Ia Qa pol'=. Z >>> > > > > > LAM=: LAM, <lam >>> > > > > > IX=: IX, <Ia >>> > > > > > QX=: QX, <Qa >>> > > > > > end. >>> > > > > > 1!:44 '/home/tages/J6/SPIN.d' >>> > > > > > > > > > > The issue here is the Foreign 2!:0. This code works >>> *perfectly* > > > > > on my >>> > > > > > Dell >>> > > > > > laptop running >>> > > > > > JVERSION >>> > > > > > Engine: j806/j64/linux >>> > > > > > Release: commercial/2017-11-06T09:54:01 >>> > > > > > Library: 8.06.09 >>> > > > > > Qt IDE: 1.6.2/5.3.2 >>> > > > > > Platform: Linux 64 >>> > > > > > Installer: J806 install >>> > > > > > InstallPath: /home/tages/j64-806 >>> > > > > > > > > > > But... the very same code running on either of the >>> other two > > > > > machines I >>> > > > > > use fails. The line 2!:0 '../synmod.exe < fort.5 > fort.6' >>> > > > > > should write the results of synmod to the file fort.6, but >>> > > > > > instead defines fort.6 but writes nothing to it. Thus the >>> > > > > > Extract'' routine fails when it tries to read fort.6. >>> > > > > > > > > > > I suspect that while 2!:0 waits for synmod.exe to >>> finish, maybe >>> > > > > > on my other machines it transfers to the next line of the J >>> code >>> > > > > > before fort.6 is written. One of these machines is a Mac Mini >>> > > > > > running >>> > > > > > JVERSION >>> > > > > > Engine: j806/j64nonavx/darwin >>> > > > > > Release: commercial/2017-11-06T10:18:00 >>> > > > > > Library: 8.06.09 >>> > > > > > Qt IDE: 1.6.2s/5.6.3 >>> > > > > > Platform: Darwin 64 >>> > > > > > Installer: J806 install >>> > > > > > InstallPath: /users/jph/j64-806 >>> > > > > > > > > > > So I'm asking if the foreign 2!:0 in some cases >>> returns without >>> > > > > > waiting. I thought just 2!:1 did that. >>> > > > > > > > > > > Apologies for the long-winded post, Patrick >>> > > > > > > > > > > ------------------------------ >>> ---------------------------------------- >>> > > > > > For information about J forums see > > > > > >>> http://www.jsoftware.com/forums.htm >>> > > > > > > > > > > ------------------------------ >>> ---------------------------------------- >>> > > > > For information about J forums see > > > > >>> http://www.jsoftware.com/forums.htm >>> > > > > > > > > ------------------------------ >>> ---------------------------------------- >>> > > > For information about J forums see > > > >>> http://www.jsoftware.com/forums.htm >>> > > > > > > ------------------------------ >>> ---------------------------------------- >>> > > For information about J forums see http://www.jsoftware.com/forum >>> s.htm >>> > > > ------------------------------------------------------------ >>> ---------- >>> > For information about J forums see http://www.jsoftware.com/forum >>> s.htm >>> > >>> ---------------------------------------------------------------------- >>> For information about J forums see http://www.jsoftware.com/forums.htm >>> >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm >> >> ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
