Echo and smoutput look much alike to me.
 
   echo
0 0&$@(1!:2&2)
   smoutput
0 0 $ 1!:2&2

-----Original Message-----
From: Programming [mailto:[email protected]] On Behalf 
Of Louis de Forcrand
Sent: Saturday, December 17, 2016 16:19
To: [email protected]
Subject: Re: [Jprogramming] How can I echo characters to JQT terminal window 
each time through a loop?

I believe echo is slightly different from smoutput: smoutput outputs to the J 
session, while echo outputs to stdout. This doesn't make a difference when 
*you*'re using JQt or Jconsole, but if Jconsole is started silently (which is 
possible right?) I think echo will output text while smoutput won't.

Louis

> On 17 Dec 2016, at 06:07, bill lam <[email protected]> wrote:
> 
> Doevents is mainly intended for single-thread applications.
> For multi-threading application, it is less important.
> 
> In single thread event driven applications, msgs/doevents can jump to 
> process any events. Eg, msgs inside a tight loop can interrupt and 
> abort if users press the close button.
> 
> That said, msgs is useful since J is single threaded and so it is 
> implemented in J wd.
> 
> Пт, 16 дек 2016, Raul Miller написал(а):
>> Why do you claim wd'msgs' is bad practice in J?
>> 
>> The only reasoning I can find would imply that use of J is bad 
>> practice, and I refuse to agree with that kind of thinking.
>> 
>> (More specifically, the criticisms of "doevents" which I find seem to 
>> be aimed at using fine grained multi-threading and flow of control.
>> But that makes it sound using wd'msgs' would be *good practice* in 
>> the context of J. Still, perhaps I have overlooked something?)
>> 
>> Thanks,
>> 
>> --
>> Raul
>> 
>> 
>>> On Fri, Dec 16, 2016 at 8:12 PM, bill lam <[email protected]> wrote:
>>> wd'msgs' is the equivalent of doevents() in visual basic and dotnet 
>>> winform. It is a bad practice and can cause unpredictable behaviors.
>>> Android does not support it. Try other alternatives first.
>>> 
>>> That said, using it in Michael's context should be ok. Writing to 
>>> file as suggested by Eric is a more general solution.
>>> 
>>> 
>>> On 17 Dec, 2016 6:07 am, "'Pascal Jasmin' via Programming" < 
>>> [email protected]> wrote:
>>> 
>>> a slightly different version of echo (that returns argument instead 
>>> of i.0
>>> 0)
>>> 
>>> pD =: (1!:2&2)`(wd bind 'msgs' ] 1!:2&2)@.IFQT echo =: (0 0 
>>> $1!:2&2)`(wd bind 'msgs' ] 0 0 $ 1!:2&2)@.IFQT
>>> 
>>> works "universally"
>>> 
>>> 3 : 'i =. 0 while. i < y do. if. 0 = 1000000 | i do. pD i end. i =. 
>>> i+1 end.' 10000000
>>> 
>>> 
>>> ----- Original Message -----
>>> From: Eric Iverson <[email protected]>
>>> To: Programming forum <[email protected]>
>>> Sent: Friday, December 16, 2016 4:40 PM
>>> Subject: Re: [Jprogramming] How can I echo characters to JQT 
>>> terminal window each time through a loop?
>>> 
>>> This is a perennial problem. Jconsole and JHS will show echo output 
>>> before execution completes, but Jqt won't. There may be Jqt 
>>> mechanisms, such as other windows, and special wd commands that 
>>> would work. In my experience the best general solution to this 
>>> problem is to have the loop where you currently have the echo, do an 
>>> fwrite or fappend of status information to a file. Then, while the 
>>> big update is running, a completely separate task can inspect the 
>>> file contents. This is easy to do, works on all front ends, works on 
>>> all platforms, and supports logging info that wouldn't easily fit 
>>> into echo. In your case just replace the echos with an appropriate fwrite 
>>> of formated data.
>>> 
>>>> On Fri, Dec 16, 2016 at 3:22 PM, Michael Berry <[email protected]> wrote:
>>>> 
>>>> I am looping through a large database table 1,000 rows at a time 
>>>> and I would like to show some reassuring output.  I tried echo and 
>>>> smoutput (are these different?) but both sat there until the whole 
>>>> explicit definition ended and then printed out the progress notes 
>>>> all at once.  Do I need some sort of flush output command?
>>>> 
>>>> Here is the loop I tried:
>>>> 
>>>> while. 0 = _1 -: d=. ddfch sh, 1000 NB. ddfet fails unpredictably 
>>>> so use ddfch instead
>>>> 
>>>> do.
>>>> 
>>>> data=. make_cells d NB. put into ddfet format as expected by 
>>>> run_tests
>>>> 
>>>> scores=. run_tests data
>>>> 
>>>> r=. make_cols data,. <"1 scores
>>>> 
>>>> assert. 0 = ch2 ddins~ ('select * from ',y,'_scored where 0=1');r
>>>> 
>>>> echo written=. written + 1{. $data
>>>> 
>>>> end.
>>>> -------------------------------------------------------------------
>>>> --- 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
> 
> --
> regards,
> ====================================================
> GPG key 1024D/4434BAB3 2008-08-24
> gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3 gpg --keyserver 
> subkeys.pgp.net --armor --export 4434BAB3
> ----------------------------------------------------------------------
> 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