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
