The short answer for application of individual instance timers is having 
variable ignite timings.

The specific use I have is for the scheduler/task interface I put on the wiki.  
It is a multitasking alternative to threads or other means, and basically 
abstacts away a main loop, and lets me connect points into that main loop, 
without any points needing to be concerned about other points (unless they 
installed those points too).  The scheduler can be a class instance, and tasks 
attach to that instance.  I run through one "loop" of tasks on each timer tick. 
 One weak reason to have multiple schedulers is that a group of tasks could be 
quickly removed and readded to the main loop by just not running its scheduler, 
but a much stronger reason is the idea that some tasks need to loop nearly 
every second, while others could be low priority checked on even as long as a 
few minutes.  Examples of the latter include garbage collection in the general 
java sense, but also garbage collection of checking for messages that were 
received but are stale because
 there was no handler for them, and probably will never be processed.  There 
are plenty of in between high/med/low priority scenarios.  

If you think in terms of zeromq apps, you might want to subscribe to both 
weather and stock services, but only want one to be high priority when you're 
staring at it, and could also care about some stocks more than others.  The 
timer approach to the task scheduler meshes well to providing user control for 
how much cpu resources they wish to devote to the app or services within it.

In terms of the timer class I provided, it's perhaps a bit more complicated 
than readers would prefer it to be, because its main purpose is to be 
coinsert'ed into another locale, and use that locale's timer definition 
(timerexample in code I showed) as a convention.  The major usefulness of 
having instances with their own timers, is that the timer function can access 
instance data, which is extremely convenient considering no parameters are 
provided by the timer tick.


----- Original Message -----
From: Joe Bogner <[email protected]>
To: "[email protected]" <[email protected]>
Cc: 
Sent: Saturday, May 31, 2014 8:06:37 PM
Subject: Re: [Jbeta] [Jprogramming] opportunity to show off jhs or qt

Pascal, thanks for sharing. I like the idea of formless timers and I like
how this class abstracts the underlying wd commands. Some might argue it's
more complicated than necessary. I agree that it's more complicated to
follow than the vanilla code, but it's also useful if someone doesn't care
to know how timers work and just wants to use a library. I would probably
find it most useful as an abstraction if I was using formless timers and
had more than a few.

I don't have a solid application of multiple formless timers. Everything
that comes to mind is either a single timer or a timer for each form to
render something on the form. I enjoy seeing more OOP examples in J since
it's not my typical way of thinking. I'll keep this one in my file for
possible future use.




On Sat, May 31, 2014 at 9:54 AM, Pascal Jasmin <[email protected]>
wrote:

> There is a bug in the shader demo.  When you launch 2 instances only the
> window with mousefocus gets timer events.
>
>
> Thanks to Joe, here is a class that allows "formless timers".  It can be
> coinserted into another locale (renaming new if name conflict).  kill works
> without needing stop.  the stop,resume,kill verbs can be copied into a "
> real form" locale, as long as it holds/sets a form variable, and probably
> provide more reliable way to stop/resume timers from multiple form
> instances.
>
> cocurrent 'timer'
> create =: 3 : 0
>  form=:  'a', (> 18!:5 '')
>  wd 'pc ' , form
>  resume y
>
> )
> stop =: 3 : 0
>
>  wd 'psel '  , form
>  wd 'ptimer 0'
> )
> resume =: 3 : 0
>  wd 'psel '  , form
>  wd 'ptimer ', ": y
> )
> kill =: 3 : 0
>  wd 'psel '  , form
>  wd 'pclose'
>  codestroy ''
> )
> timerexample =: 3 : 'smoutput (> 18!:5 '''') ,'': '', ": (6!:0) '''''
> loc_z_=: (,&'_'@[ ,&'_'@, ":@>@])"1 0
>
> new =: 3 : 0
> '' new y
> :
> o =. y conew  (> 18!:5 '')
> if. 0=#x do. x =.'timerexample' loc o end.
> ('a', (> o), '_timer__o') =: 3 : (x , ' ''''')
> o
> )
>
>   a =. 'smoutput (> 18!:5 '''') ,'': '', ": (6!:0)' new_timer_ 5000
>   b =. new_timer_ 6000                  NB. uses locale's timerexample
> (overridable) as callback
>
>
> kill__a ''
> stop__b ''
> resume__b 3000
> kill__b ''
> ________________________________
> From: Joe Bogner <[email protected]>
> To: Pascal Jasmin <[email protected]>
> Cc: "[email protected]" <[email protected]>
> Sent: Saturday, May 31, 2014 5:46:51 AM
> Subject: Re: [Jprogramming] opportunity to show off jhs or qt
>
>
>
> You can use 'wd psel' to set the current form instance which is then used
> by 'wd ptimer 0'
>
> NB. run two timers
> NB. works on j802 beta from 5/28
> wd 'pc c'
> wd 'ptimer 1000'
>
> c_timer =: 3 : 'smoutput@:<''c'';(6!:0) '''''
>
> wd 'pc d'
> wd 'ptimer 1000'
>
> d_timer =: 3 : 'smoutput@:<''d'';(6!:0) '''''
>
> wd 'psel c'
>
> wd 'ptimer 0' NB. stop c
>
> wd 'psel d'
>
> wd 'ptimer 0' NB. stop d
>
> wd 'psel c'
> wd 'ptimer 1000' NB. resume c
>
>
> determined from source:
> http://www.jsoftware.com/download/j802/qtide/jqt-source.tar.gz
>
> A tip I used while testing is to use f8 to paste from keyboard. This keeps
> the output from interfering with the input
>
>
>
>
>
> On Sat, May 31, 2014 at 12:26 AM, Pascal Jasmin <[email protected]>
> wrote:
>
>
> >
> >skipping the pshow command,
> >
> >I can get both of your timers to run, but can only get one of them to
> stop.  It appears as though
> >wd 'ptimer xx' affects the most recent wd 'pc X' command, so for
> instance, this sequence of commands:
> >
> >
> >c_timer =: 3 : 'smoutput@:<''c'';(6!:0) '''''
> >
> >d_timer =: 3 : 'smoutput@:<''d'';(6!:0) '''''
> > wd 'pc c'
> >wd 'ptimer 6000'
> >NB. runs as expected
> >  wd 'ptimer 0' NB. stops as expected.
> > wd 'pc d'
> >wd 'ptimer 6000'  NB. runs only d
> > wd 'pc c'
> >NB. still runs only d
> >wd 'ptimer 6000' NB. will run both on independent timers
> >
> >wd 'timer 0' NB.only stops C
> > wd 'pc d'
> >wd 'timer 0' NB. still d won't stop.
> >
> >erase 'd_timer'  NB. stops d
> >
> >using pshow and pclose doesn't change the result.
> >
> >it turns out that I can get my object instance timers to also run, but
> have the same problems stopping them... except its worse due to difficulty
> setting timer off.
> >
> >a =. 6000 conew't'
> >b =. 7000 conew't'
> >runs both ok.
> >stop__a ''  NB. stops b... the last pc command.
> >kill__b '' NB. runs ok apparently.  But does not stop a timer
> >
> >cannot run stop__a '' or kill__a '' effectively.  erase 'a' does nothing.
>  Quitting J is easiest, even this direct command fails
> >
> >  kill_0_''
> >|pclose : no parent selected: wd
> >
> >though this works: (where 0 is first locale...one part of smoutput)
> >  erase 'a0_timer_0_'
> >
> >_________________________
> >From: Joe Bogner <[email protected]>
> >To: Pascal J <[email protected]>
> >Sent: Friday, May 30, 2014 11:20:26 PM
> >
> >Subject: Re: [Jprogramming] opportunity to show off jhs or qt
> >
> >
> >
> >[off list]
> >
> >Hey Pascal, did you try the code that I posted with multiple timers? That
> worked for me... I didn't run yours but perhaps it's something with the
> locales... Just wanted to check first to see if you were successful with a
> more basic implementation of multiple timers
> >
> >
> >
> >
> >
> >On Fri, May 30, 2014 at 11:00 PM, 'Pascal Jasmin' via Programming <
> [email protected]> wrote:
> >
> >thank you Bill and Joe, with new version it works.  Also wd 'pshow' is
> not necessary.
> >>
> >>multiple timers may not work though.
> >>
> >>cocurrent 't'
> >>create =: 3 : 0
> >>('a', (> 18!:5 ''), '_timer') =: 3 : 'smoutput (> 18!:5 '''') ,'': '',
> ": (6!:0) '''''
> >>wd 'pc ' , 'a', (> 18!:5 '')
> >>resume y
> >>)
> >>NB. a_timer =: 3 : 'smoutput (> 18!:5 '''') ,'': '', ": (6!:0) '''''
> >>stop =: 3 : 0
> >>wd 'ptimer 0'
> >>)
> >>resume =: 3 : 0
> >>wd 'ptimer ', ": y
> >>)
> >>kill =: 3 : 0
> >>wd 'pclose'
> >>codestroy ''
> >>)
> >>
> >>  a =. 4000 conew 't'  NB. will start timer
> >>
> >>stop__a '' NB. will stop timer
> >>
> >>   a
> >>┌─┐
> >>│1│
> >>└─┘
> >>
> >>  ] b =. 4000 conew 't'  NB. will start new timer ... replacing old.
> >>┌─┐
> >>│2│
> >>└─┘
> >> NB. you will see that only timer from b runs.   resume__a 2000 will run
> the timer from b.  This error will repeat if you create a 3rd instance.
>  Only timer from last instance runs, even though they all have different
> "forms" a1 and a2.  stop__a '' will stop the timer even if only b is
> running.
> >>
> >>  a1_timer__a ''  NB. a1 comes from using the locale number for variable
> a
> >>1: 2014 5 30 22 28 48.138
> >>
> >>   a2_timer__b ''  NB. a2 comes from using the locale number for
> variable b
> >>2: 2014 5 30 22 29 17.594
> >>
> >>If you kill either a or b, then resume__a 3000 will fail, as both
> "forms" are killed.
> >>
> >>   resume__a 3000
> >>|ptimer : no parent selected: wd
> >>
> >>
> >>Perhaps this is related to my poor understanding of how to run multiple
> copies of a form?
> >>
> >>
> >>
> >>----- Original Message -----
> >>From: Joe Bogner <[email protected]>
> >>To: [email protected]
> >>Cc:
> >>
> >>Sent: Friday, May 30, 2014 9:21:00 PM
> >>Subject: Re: [Jprogramming] opportunity to show off jhs or qt
> >>
> >>Pascal, you need to update to the latest.
> >>
> >>Engine: j701/2011-01-10/11:25
> >>
> >>Library: 8.02.06
> >>
> >>Qt IDE: 1.1.2/5.3.0
> >>
> >>Platform: Win 32
> >>
> >>Installer: J802 install
> >>
> >>InstallPath: c:/users/joe/j802
> >>
> >>
> >>
> >>This works on the latest
> >>
> >>
> >>NB. run two timers
> >>
> >>NB. works on j802 beta from 5/28
> >>
> >>wd 'pc c'
> >>
> >>wd 'pshow'  NB. shows empty form
> >>
> >>wd :: empty 'ptimer 1000'
> >>
> >>
> >>c_timer =: 3 : 'smoutput@:<''c'';(6!:0) '''''
> >>
> >>
> >>wd 'pc d'
> >>
> >>wd 'pshow'  NB. shows empty form
> >>
> >>wd :: empty 'ptimer 1000'
> >>
> >>
> >>d_timer =: 3 : 'smoutput@:<''d'';(6!:0) '''''
> >>
> >>
> >>
> >>This worked on the previous
> >>
> >>
> >>
> >>NB. worked previous j802 beta
> >>
> >>wd 'pc a'
> >>
> >>wd 'cc g opengl version 2.0 flush'
> >>
> >>wd 'pshow'  NB. shows empty form
> >>
> >>wd 'set g timer 1000'
> >>
> >>a_g_timer =: 3 : 'smoutput@:<''a'';(6!:0) '''''
> >>
> >>
> >>wd 'pc b'
> >>
> >>wd 'cc g opengl version 2.0 flush'
> >>
> >>wd 'pshow'  NB. shows empty form
> >>
> >>wd 'set g timer 1000'
> >>
> >>b_g_timer =: 3 : 'smoutput@:<''b'';(6!:0) '''''
> >>
> >>
> >>
> >>
> >>I was stuck on it too
> >>
> >>
> >>
> >>On Fri, May 30, 2014 at 9:12 PM, 'Pascal Jasmin' via Programming <
> >>[email protected]> wrote:
> >>
> >>> Engine: j701/2011-01-10/11:25
> >>> Library: 8.02.06
> >>> Qt IDE: 1.1.1/5.3.0
> >>> Platform: Win 64
> >>>
> >>>
> >>> ----- Original Message -----
> >>> From: bill lam <[email protected]>
> >>> To: "[email protected]" <[email protected]>
> >>> Cc:
> >>> Sent: Friday, May 30, 2014 8:12:21 PM
> >>> Subject: Re: [Jprogramming] opportunity to show off jhs or qt
> >>>
> >>> what is your JVERSION ?
> >>>
> >>> 31.05.2014, в 8:03, "'Pascal Jasmin' via Programming" <
> >>> [email protected]> написал(а):
> >>>
> >>> > the shader demo works.  cube rotates, etc...
> >>> >
> >>> > when I try those 3 lines from the base locale (jqt802 console
> session),
> >>> the error shown occurs.
> >>> >
> >>> >
> >>> > ----- Original Message -----
> >>> > From: bill lam <[email protected]>
> >>> > To: "[email protected]" <[email protected]>
> >>> > Cc:
> >>> > Sent: Friday, May 30, 2014 8:00:24 PM
> >>> > Subject: Re: [Jprogramming] opportunity to show off jhs or qt
> >>> >
> >>> > did the cube rotate? did you test on the latest j802/jqt beta?
> >>> >
> >>> > 31.05.2014, в 7:48, "'Pascal Jasmin' via Programming" <
> >>> [email protected]> написал(а):
> >>> >
> >>> >> from base,
> >>> >>
> >>> >>    wd 'pc a;'  NB. or 'pc a'
> >>> >>     wd 'pshow'  NB. shows empty form
> >>> >>     wd 'ptimer 2000'
> >>> >> |ptimer : parent command not found: ptimer: wd
> >>> >>
> >>> >>
> >>> >>     a_timer_base_
> >>> >> 3 : 'smoutput@:(6!:0) '''''
> >>> >>
> >>> >> is this something related to base locale?
> >>> >>
> >>> >> shader demo works ok.
> >>> >>
> >>> >>
> >>> >> ----- Original Message -----
> >>> >> From: bill lam <[email protected]>
> >>> >> To: "[email protected]" <[email protected]>
> >>> >> Cc:
> >>> >> Sent: Friday, May 30, 2014 6:40:53 PM
> >>> >> Subject: Re: [Jprogramming] opportunity to show off jhs or qt
> >>> >>
> >>> >> You didn't even create a form. To recap, a form is created using wd
> cmd
> >>> eg
> >>> >>
> >>> >> wd'pc  foo'
> >>> >>
> >>> >> the locale of a form is the current locale when that wd'pc foo' is
> >>> executed.
> >>> >>
> >>> >> 31.05.2014, в 0:49, "'Pascal Jasmin' via Programming" <
> >>> [email protected]> написал(а):
> >>> >>
> >>> >>> sorry for previous message, was running timer and not ptimer.
> >>> >>>
> >>> >>> It does not appear as though you can get a timer into an arbitrary
> >>> locale by just doing wd 'pc a' there.  The form has to be visible, or
> needs
> >>> an initial show?
> >>> >>>
> >>> >>>
> >>> >>>
> >>> >>>
> >>> >>> ----- Original Message -----
> >>> >>> From: 'Pascal Jasmin' via Programming <[email protected]>
> >>> >>> To: "[email protected]" <[email protected]>
> >>> >>> Cc:
> >>> >>> Sent: Friday, May 30, 2014 12:23:37 PM
> >>> >>> Subject: Re: [Jprogramming] opportunity to show off jhs or qt
> >>> >>>
> >>> >>> Nice, thank you.
> >>> >>>
> >>> >>> You can also use a timer in any arbitrary locale (I think)
> >>> >>>
> >>> >>>      a_timer_ =: show_base_
> >>> >>>      wd_a_ 'timer 2000'
> >>> >>>
> >>> >>> or
> >>> >>>
> >>> >>>    aa =. conew 'a'
> >>> >>>    wd__aa 'timer 2000'
> >>> >>>
> >>> >>> acts a little weird with just one plot window, but that might be
> plot
> >>> related?
> >>> >>>
> >>> >>>
> >>> >>> ----- Original Message -----
> >>> >>> From: bill lam <[email protected]>
> >>> >>> To: 'Pascal Jasmin' via Programming <[email protected]>
> >>> >>> Cc:
> >>> >>> Sent: Friday, May 30, 2014 11:19:17 AM
> >>> >>> Subject: Re: [Jprogramming] opportunity to show off jhs or qt
> >>> >>>
> >>> >>> Oh sorry!  I thought ptimer was documented but not yet. Basically
> >>> >>> it is very simple, if your form id is 'foo' then the name of the
> >>> >>> timer callback verb is 'foo_timer' in the form's locale.  Each form
> >>> >>> has its own timer. wd'ptimer xx' will start or stop timer attached
> >>> >>> to the current form.  Unlike the old wd timer, form timers will not
> >>> >>> break existing code. In qt shader demo, the cube is rotated by a
> >>> >>> form timer.
> >>> >>>
> >>> >>> Пт, 30 май 2014, jprogramming написал(а):
> >>> >>>> good news about wd 'timer' for forms.  A wishlist would include a
> way
> >>> for minimal library load for jconsole support.
> >>> >>>>
> >>> >>>> I don't see it mentioned here though
> >>> http://www.jsoftware.com/jwiki/System/ReleaseNotes/J802
> >>> >>>>
> >>> >>>> I did see that the timer qt demo app has been updated, but its
> hard
> >>> to understand without a "qtdemo form"
> >>> >>>>
> >>> >>>> there is no mention of wd 'ptimer' here:
> >>>
> http://www.jsoftware.com/jwiki/Guides/Window%20Driver/Command%20Reference
> >>> >>>>
> >>> >>>>
> >>> >>>> ----- Original Message -----
> >>> >>>> From: bill lam <[email protected]>
> >>> >>>> To: [email protected]
> >>> >>>> Cc:
> >>> >>>> Sent: Friday, May 30, 2014 10:08:14 AM
> >>> >>>> Subject: Re: [Jprogramming] opportunity to show off jhs or qt
> >>> >>>>
> >>> >>>> sleep will halt current thread, not a feature of jqt.  One can
> >>> >>>> use wd'timer' to fire event.  Furthermore J802 introduce form
> timer
> >>> >>>> for each form, see high-lights.
> >>> >>>>
> >>> >>>> Пт, 30 май 2014, Raul Miller написал(а):
> >>> >>>>> I made the hour hand be a 24 hour hour-hand. To make it the more
> >>> typical 12
> >>> >>>>> hour hour-hand, change 2r24p1 2r60p1 2r60p1 to 2r12p1 2r60p1
> 2r60p1.
> >>> >>>>>
> >>> >>>>> And the window freezing issue is a "feature" of jqt. To avoid
> that
> >>> issue
> >>> >>>>> with current versions of jqt, always close (or position) the plot
> >>> window
> >>> >>>>> before starting the clock.
> >>> >>>>>
> >>> >>>>> Thanks,
> >>> >>>>>
> >>> >>>>> --
> >>> >>>>> Raul
> >>> >>>>>
> >>> >>>>>
> >>> >>>>>
> >>> >>>>> On Fri, May 30, 2014 at 4:43 AM, Jan-Pieter Jacobs <
> >>> >>>>> [email protected]> wrote:
> >>> >>>>>
> >>> >>>>>> Nice!
> >>> >>>>>> I tried your code in JQT (on windows 8), some remarks:
> >>> >>>>>>
> >>> >>>>>> The hour hand is pointing about the exact oposite direction it
> >>> should.
> >>> >>>>>> Somehow, switching windows also causes the plot window to
> freeze,
> >>> and J to
> >>> >>>>>> become unresponsive
> >>> >>>>>>
> >>> >>>>>>
> >>> >>>>>> Jan-Pieter
> >>> >>>>>>
> >>> >>>>>>
> >>> >>>>>> 2014-05-30 3:18 GMT+02:00 Raul Miller <[email protected]>:
> >>> >>>>>>
> >>> >>>>>>> Here's another approach (beware of email induced line wrap in
> >>> definition
> >>> >>>>>> of
> >>> >>>>>>> show):
> >>> >>>>>>>
> >>> >>>>>>> N=:0.01*i.629
> >>> >>>>>>> O=: [: j./ 1 2 o./ ]
> >>> >>>>>>> delay=:6!:3    NB. "sleep"
> >>> >>>>>>>
> >>> >>>>>>> show=: [: plot (O N),N*/~0.07 0.11 0.15(*O) 2r24p1 2r60p1
> >>> 2r60p1*_3{.6!:0
> >>> >>>>>>> bind ''
> >>> >>>>>>>
> >>> >>>>>>> show@delay@1:^:9e9''
> >>> >>>>>>>
> >>> >>>>>>> I think this should work with both jqt and the j602 ide.
> >>> >>>>>>>
> >>> >>>>>>> Thanks,
> >>> >>>>>>>
> >>> >>>>>>> --
> >>> >>>>>>> Raul
> >>> >>>>>>>
> >>> >>>>>>>
> >>> >>>>>>>
> >>> >>>>>>> On Thu, May 29, 2014 at 1:39 PM, David Lambert <
> >>> [email protected]>
> >>> >>>>>>> wrote:
> >>> >>>>>>>
> >>> >>>>>>>> http://rosettacode.org/wiki/Draw_a_clock#J
> >>> >>>>>>>>
> >>> >>>>>>>> The next author need only replace the draw dyad, or rewrite
> the
> >>> >>>>>>>> contribution.
> >>> >>>>>>>> x is the current session time, y is the session time when the
> verb
> >>> >>>>>>> starts.
> >>> >>>>>>>>
> >>> >>>>>>>> round=: [: <. 0.5&+
> >>> >>>>>>>> PICTURES=: u:16b2190+i.4      NB. arrows
> >>> >>>>>>>> draw=: [: smoutput PICTURES ((|~ #)~ { [) [: round -
> >>> >>>>>>>>
> >>> >>>>>>>>
> >>> ----------------------------------------------------------------------
> >>> >>>>>>>> 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
> >>> >>>
> >>> >>> --
> >>> >>> 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
> >>> >>
> ----------------------------------------------------------------------
> >>> >> 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
> >
>
----------------------------------------------------------------------
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