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/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

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to