Thanks once again. You’re obviously a less careless coder than I am! I look forward to using it, if I have to, after the next beta release,
Mike Sent from my iPad > On 2 May 2019, at 02:55, bill lam <[email protected]> wrote: > > I have never used jbreak. The problem in j901 beta might be > 4!:46'' returns empty instead of the jbreak file under ~temp. > This is now fixed for the next beta. > > I can't test jbreak in linux because I can't create any icon on > desktop. > > Wed, 01 May 2019, JBeta написал(а): >> Thanks, Bill. >> >> Any comments on the apparently current failure of jbreak.bat to interrupt >> >> a deep loop in beta-d, at least in JQt? >> >> eg this loops unless killed in task manager. >> >> jbreak.bat is not effective for this toy function... >> >> loop =: 3 : 0 >> n =. 1 >> while. n =. >: n do. >> q =. '' >> end. >> '' >> ) >> >> OK - I can break it in Jconsole with ctrl-C in the terminal screen, and >> >> also in JHS with ctrl-C in the JHS 901 console. But I mainly use JQt. >> >> >> Spasibo, >> >> Mike >> >> >>> On 01/05/2019 16:50, bill lam wrote: >>> using binary built from master branch, >>> >>> showdetail_jpm_ 'moves' >>> recorded all lines >>> used and max record count: 23 17,856 >>> >>> Time (seconds) >>> +--------+--------+---+-----------------------------------------+ >>> |all |here |rep|moves | >>> +--------+--------+---+-----------------------------------------+ >>> |0.000001|0.000001|1 |monad | >>> |0.000006|0.000006|1 |[0] mn=./:~y | >>> |0.000006|0.000006|1 |[1] mv=.>:i.>./y | >>> |0.000018|0.000018|1 |[3] mv=.(,|."1),/@:(,."0 1(*/&0 1 2))mv | >>> |0.000016|0.000016|1 |[4] new=.(#~*/"1@:(>&_1))~./:~"1 mn-"1 mv| >>> |0.000047|0.000047|1 |total monad | >>> +--------+--------+---+-----------------------------------------+ >>> >>> Perhaps it is ok now. >>> >>> The !^:_1 is another remaingin bug of removing terminated null, >>> This will be fixed in the next beta. Thank you for the clear report. >>> >>> >>> Wed, 01 May 2019, JBeta написал(а): >>>> Thanks. NB - there's a second, strange and peculiar, problem lurking below >>>> my >>>> discussion of the JPM one! >>>> 0) And before I ask about those two, should Jbreak.bat still work? I was >>>> unable to >>>> break some occasions of inadvertent infinite loops earlier today. >>>> 1) JPM >>>> Yes, flpa was executed - I didn't quote the line, but it was something >>>> like >>>> flpa 200. >>>> Anyway, here's an example, with a simpler function, moves, which is >>>> examining >>>> the Nim game in Euler Project problem 665, at >>>> https://projecteuler.net/problem=665, >>>> not that I'm asking for help there. >>>> load'jpm' >>>> start_jpm_ 1000000 >>>> 17856 >>>> moves 3 1 >>>> 0 3 >>>> 0 2 >>>> 0 1 >>>> 1 2 >>>> 1 1 >>>> showdetail_jpm_ 'moves' >>>> recorded all lines >>>> used and max record count: 23 17,856 >>>> >>>> |length error: usage >>>> | lvl=.mbgn usage mend >>>> >>>> Here's "moves": >>>> moves =: 3 : 0 >>>> mn =. /:~ y >>>> mv =. >:i.>./ y >>>> NB. echo mn; >>>> mv =. (,|."1) ,/@:( ,."0 1(*/&0 1 2 ))mv >>>> new =. (#~*/"1 @:(>&_1) ) ~. /:~"1 mn -"1 mv >>>> ) >>>> >>>> 2) Strange Problem: >>>> In looking for something for you to get your teeth into, I encountered >>>> this: >>>> decode"0 ]4 15 >>>> |spelling error >>>> | 3 :'(-(2&!-y"_)%1e_3&* 2&!"0 D:1 ])^:_[2&<@|@{:}2,:2%:y*!2',�م >>>> | ^ >>>> | n=.<:<.2 !inv y >>>> >>>> whereas (!?): >>>> decode 4 15 >>>> |open quote >>>> | 3 :'(-(2&!-y"_)%1e_3&* 2&!"0 D:1 >>>> ])^:_[2&<@|@{:}2,:2%:y*!2',�م��,�مR@ n'> >>>> | ^ >>>> | n=.<:<.2 !inv y >>>> >>>> decode =: 3 : 0 NB. the "offending" code >>>> n =. <:<.2 ! inv y >>>> m =. y - 2 ! >: n >>>> m,."1 n >>>> ) >>>> >>>> I couldn't find the explicit function using "find in files" in my user >>>> folder, >>>> nor in ~system ... >>>> >>>> Before you ask, the above behaviour (in both cases) was in a fairly newly >>>> started session in JQt. So I don't think there was a lot of junk lying in >>>> wait >>>> in memory from earlier in the session. >>>> >>>> Version, In case it's relevant, >>>> JVERSION >>>> Engine: j901/j64/windows >>>> Beta-d: commercial/2019-04-21T12:38:39 >>>> Library: 9.01.03 >>>> Qt IDE: 1.8.2/5.12.2 >>>> Platform: Win 64 >>>> Installer: J901 install >>>> InstallPath: c:/d/j901 >>>> Contact: www.jsoftware.com >>>> >>>> Thanks, >>>> >>>> Mike >>>> >>>> >>>>> On 30/04/2019 18:53, Henry Rich wrote: >>>>> Perhaps flpa was never executed and this is what happens in that case? >>>>> I won't be much help unless you can give me a failing testcase. >>>>> >>>>> JPM was not changed for 9.01, nor was the code for logging PM events. >>>>> What WAS changed was the code that checks to see whether debug/pm/other >>>>> special stuff is active. This was streamlined to make the case of >>>>> nothing active as fast as possible. I could imagine that the first or >>>>> last PM log record might be missing; nothing else comes to mind as >>>>> probable. >>>>> >>>>> It would be great if you could figure out what's going on. >>>>> >>>>> Henry Rich >>>>> >>>>>> On 4/30/2019 1:34 PM, 'Mike Day' via Beta wrote: >>>>>> Latest difficulty, in beta D despite my mislabelling earlier: >>>>>> >>>>>> showdetail_jpm_ 'flpa' >>>>>> recorded all lines >>>>>> used and max record count: 54,375 1,785,713 >>>>>> >>>>>> |length error: usage >>>>>> | lvl=.mbgn usage mend >>>>>> >>>>>> As far as I could see, both mbgn and mend were empty, in that: >>>>>> >>>>>> # every mbgn;mend >>>>>> 0 0 >>>>>> >>>>>> I have seen this sort of thing in earlier J versions, but on this >>>>>> occasion, >>>>>> >>>>>> the error doesn't arise in J807 (JQt) >>>>>> >>>>>> Thanks again for any help, >>>>>> >>>>>> Mike >>>>>> >>>>>> >>>>>>> On 30/04/2019 09:22, 'Mike Day' via Beta wrote: >>>>>>> Thanks. >>>>>>> >>>>>>> Noone else has commented apart from Bill Lam, so perhaps this >>>>>>> utility isn't used much, >>>>>>> >>>>>>> but might you find time to suitably modify the script, pm.ijs, >>>>>>> in later beta versions? >>>>>>> >>>>>>> Cheers, >>>>>>> >>>>>>> Mike >>>>>>> >>>>>>>> On 30/04/2019 01:13, Henry Rich wrote: >>>>>>>> The times that are connected are session times which >>>>>>>> typically will be some >>>>>>>> thousands of seconds with the important information down in the >>>>>>>> nanoseconds. It would be a textbook example of how to lose >>>>>>>> precision EXCEPT >>>>>>>> that most of the time the positive and negative values alternate. >>>>>>>> >>>>>>>> I remember now that I started by subtracting the starting >>>>>>>> time from the >>>>>>>> time values and with that change the !.1e_12 worked. Better >>>>>>>> just to remove >>>>>>>> the assert. >>>>>>>> >>>>>>>> Henry Rich >>>>>>>> >>>>>>>>> On Mon, Apr 29, 2019, 7:16 PM bill lam <[email protected]> wrote: >>>>>>>>> >>>>>>>>> some all and her displayed equal, however may be now in >>>>>>>>> 901, sum of parts >>>>>>>>> can be larger than the whole because accumulating >>>>>>>>> floating point rounding >>>>>>>>> errors. The original pm expected a very high floating >>>>>>>>> point accuracy which >>>>>>>>> no longer holds in j901, eg j901 assumes + is >>>>>>>>> associative to make better >>>>>>>>> utilization of multiple ALU. >>>>>>>>> A possible fix is to give allowance factor like, >>>>>>>>> >>>>>>>>> assert. *./ all > 0.9*her >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Tue, Apr 30, 2019, 6:33 AM 'Mike Day' via Beta >>>>>>>>> <[email protected]> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Thanks - your suggested replacement didn't work: >>>>>>>>>> >>>>>>>>>> load'jpm' >>>>>>>>>> >>>>>>>>>> start_jpm_ 1000000000 >>>>>>>>>> >>>>>>>>>> 17857142 >>>>>>>>>> >>>>>>>>>> f 1000 >>>>>>>>>> >>>>>>>>>> 117002 >>>>>>>>>> >>>>>>>>>> showdetail_jpm_ 'flp' >>>>>>>>>> >>>>>>>>>> recorded all lines >>>>>>>>>> >>>>>>>>>> used and max record count: 3,765 17,857,142 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> |assertion failure: assert >>>>>>>>>> >>>>>>>>>> | assert*./all>:!.1e_12 her >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> However, commenting out the assert did the trick. >>>>>>>>>> >>>>>>>>>> Thanks >>>>>>>>>> >>>>>>>>>> Mike >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> On 29/04/2019 22:26, Henry Rich wrote: >>>>>>>>>>> The assert. is invalid because of floating-point precision, and it >>>>>>>>>>> shows up in J901 because of order of operations. For a quick fix >>>>>>>>>>> either delete it or replace it with >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> assert*./all>:!.1e_12 her >>>>>>>>>>> >>>>>>>>>>> Henry Rich >>>>>>>>>>> >>>>>>>>>>>> On 4/29/2019 1:54 PM, 'Mike Day' via Beta wrote: >>>>>>>>>>>> I think the "also" paragraph in my earlier >>>>>>>>>>>> message, below, might have >>>>>>>>>>>> been overlooked. >>>>>>>>>>>> >>>>>>>>>>>> I quite often use jpm to check performance >>>>>>>>>>>> line by line. I can't say >>>>>>>>>>>> it doesn't work in any >>>>>>>>>>>> >>>>>>>>>>>> circumstances in J901 beta-d, but it does seem to have got more >>>>>>>>>>>> unstable: >>>>>>>>>>>> >>>>>>>>>>>> For example, in J807: >>>>>>>>>>>> >>>>>>>>>>>> JVERSION >>>>>>>>>>>> Engine: j807/j64/windows >>>>>>>>>>>> Release-d: commercial/2019-03-18T13:21:35 >>>>>>>>>>>> Library: 8.07.25 >>>>>>>>>>>> Qt IDE: 1.7.9/5.9.6 >>>>>>>>>>>> Platform: Win 64 >>>>>>>>>>>> Installer: J807 install >>>>>>>>>>>> InstallPath: c:/d/j807 >>>>>>>>>>>> Contact: www.jsoftware.com >>>>>>>>>>>> load'jpm' >>>>>>>>>>>> start_jpm_ 100000000 >>>>>>>>>>>> 1785713 >>>>>>>>>>>> f 1000 >>>>>>>>>>>> 117002 >>>>>>>>>>>> showdetail_jpm_ 'f' >>>>>>>>>>>> recorded all lines >>>>>>>>>>>> used and max record count: 3,767 1,785,713 >>>>>>>>>>>> >>>>>>>>>>>> Time (seconds) >>>>>>>>>>>> +--------+--------+---+----------------------------------+ >>>>>>>>>>>> |all |here |rep|f | >>>>>>>>>>>> +--------+--------+---+----------------------------------+ >>>>>>>>>>>> |2.045513|0.000030|1 |monad +/@:,@:((] #~ >:) +/"1@:flp)| >>>>>>>>>>>> +--------+--------+---+----------------------------------+ >>>>>>>>>>>> showdetail_jpm_ 'flp' NB. I've removed several lines!!! >>>>>>>>>>>> Time (seconds) >>>>>>>>>>>> >>>>>>>>> +--------+--------+---+-------------------------------------------------------+ >>>>>>>>> >>>>>>>>>>>> |all |here >>>>>>>>>>>> |rep|flp | >>>>>>>>>>>> >>>>>>>>> +--------+--------+---+-------------------------------------------------------+ >>>>>>>>> >>>>>>>>>>>> |0.000002|0.000002|1 >>>>>>>>>>>> |monad | >>>>>>>>>>>> |2.045486|0.376456|1 |[0] y flp~(;~)0 >>>>>>>>>>>> 2$0 | >>>>>>>>>>>> |2.045488|0.376458|1 |total >>>>>>>>>>>> monad | >>>>>>>>>>>> | // | // | | >>>>>>>>>>>> // | >>>>>>>>>>>> |0.000002|0.000002| >>>>>>>>>>>> 1|dyad | >>>>>>>>>>>> |0.000772|0.000772|233|[10] >>>>>>>>>>>> l=.l,next | >>>>>>>>>>>> | // | // | | >>>>>>>>>>>> // | >>>>>>>>>>>> |0.001721|0.001721| 1|[14] >>>>>>>>>>>> /:~l | >>>>>>>>>>>> |2.045466|1.601660| 1|total >>>>>>>>>>>> dyad | >>>>>>>>>>>> | // | // | | >>>>>>>>>>>> // | >>>>>>>>>>>> |2.045488|1.601682|2 |total >>>>>>>>>>>> definition | >>>>>>>>>>>> >>>>>>>>> +--------+--------+---+-------------------------------------------------------+ >>>>>>>>> >>>>>>>>>>>> while, in J901: >>>>>>>>>>>> >>>>>>>>>>>> JVERSION >>>>>>>>>>>> Engine: j901/j64/windows >>>>>>>>>>>> Beta-d: commercial/2019-04-21T12:38:39 >>>>>>>>>>>> Library: 9.01.03 >>>>>>>>>>>> Qt IDE: 1.8.2/5.12.2 >>>>>>>>>>>> Platform: Win 64 >>>>>>>>>>>> Installer: J901 install >>>>>>>>>>>> InstallPath: c:/d/j901 >>>>>>>>>>>> Contact: www.jsoftware.com >>>>>>>>>>>> load'jpm' >>>>>>>>>>>> start_jpm_ 100000000 >>>>>>>>>>>> 1785713 >>>>>>>>>>>> f 1000 >>>>>>>>>>>> 117002 >>>>>>>>>>>> showdetail_jpm_ 'f' NB. OK - it does work for this cover fn >>>>>>>>>>>> recorded all lines >>>>>>>>>>>> used and max record count: 3,765 1,785,713 >>>>>>>>>>>> >>>>>>>>>>>> Time (seconds) >>>>>>>>>>>> +--------+--------+---+---------------------------------+ >>>>>>>>>>>> |all |here |rep|f | >>>>>>>>>>>> +--------+--------+---+---------------------------------+ >>>>>>>>>>>> |1.930585|0.000020|1 |dyad +/@:,@:((] #~ >:) +/"1@:flp)| >>>>>>>>>>>> +--------+--------+---+---------------------------------+ >>>>>>>>>>>> showdetail_jpm_ 'flp'NB. the one I'm interested in!!! >>>>>>>>>>>> |assertion failure: assert >>>>>>>>>>>> | assert*./all>:her >>>>>>>>>>>> >>>>>>>>>>>> I imagine that the record count isn't a problem >>>>>>>>>>>> >>>>>>>>>>>> Is "jpm" deprecated now? >>>>>>>>>>>> >>>>>>>>>>>> Thanks, >>>>>>>>>>>> >>>>>>>>>>>> Mike >>>>>>>>>>>> >>>>>>>>>>>>> On 25/04/2019 17:51, Mike Day wrote: >>>>>>>>>>>>> Thanks. I wondered whether limits had changed. Is there any >>>>>>>>>>>>> user-control available re recursion? I usually try to avoid it, >>>>>>>>>>>>> but if I’m using someone else’s code... >>>>>>>>>>>>> >>>>>>>>>>>>> Also - I can’t give chapter and verse right now as away from J901 >>>>>>>>>>>>> with this iPad: I recently tried to use jpm to check timings on >>>>>>>>>>>>> lines of code but kept hitting an error when invoking >>>>>>>>>>>>> showdetail_jpm_ , no matter how large >>>>>>>>>>>>> the argument to start_jpm_ , >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks >>>>>>>>>>>>> >>>>>>>>>>>>> Mike >>>>>>>>>>>>> >>>>>>>>>>>>> Please reply to [email protected]. >>>>>>>>>>>>> Sent from my iPad >>>>>>>>>>>>> >>>>>>>>>>>>>> On 24 Apr 2019, at 19:32, Henry Rich >>>>>>>>>>>>>> <[email protected]> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> It did indicate trouble elsewhere. Thanks for the report. >>>>>>>>>>>>>> >>>>>>>>>>>>>> The code still gives stack error in >>>>>>>>>>>>>> J901. The recursion limit has >>>>>>>>>>>>>> been reduced. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Henry Rich >>>>>>>>>>>>>> >>>>>>>>>>>>>>> On 4/24/2019 3:28 AM, 'Mike Day' via Beta wrote: >>>>>>>>>>>>>>> Another problem, (in Beta c as I'd rolled back) - not too >>>>>>>>>>>>>>> important in itself but might >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> indicate trouble elsewere >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> J Wiki Essay >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>> https://code.jsoftware.com/wiki/Essays/Partitions#The_Number_of_Partitions >>>>>>>>> >>>>>>>>>>>>>>> The/memo/adverb M.can be used to advantage here. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> pn =: -/@(+/)@:($:"0)@rec ` (x:@(0&=)) @. (0>:]) M. >>>>>>>>>>>>>>> rec=: - (-: (*"1) _1 1 +/ 3 * ]) @ (>:@i.@>.@%:@((2%3)&*)) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> pn 1000 >>>>>>>>>>>>>>> 24061467864032622473692149727991 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> But: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> pn 1000 >>>>>>>>>>>>>>> |stack error: rec >>>>>>>>>>>>>>> | pn 1000 >>>>>>>>>>>>>>> pn 100 >>>>>>>>>>>>>>> 190569292 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> JVERSION >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Engine: j901/j64/windows >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Beta-c: commercial/2019-04-03T11:03:34 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Library: 9.01.03 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Qt IDE: 1.8.2/5.12.2 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Platform: Win 64 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Installer: J901 install >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> InstallPath: c:/d/j901 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Contact: www.jsoftware.com >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> whereas it worked in J8: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> pn 1000 >>>>>>>>>>>>>>> 24061467864032622473692149727991 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> JVERSION >>>>>>>>>>>>>>> Engine: j807/j64/windows >>>>>>>>>>>>>>> Release-d: commercial/2019-03-18T13:21:35 >>>>>>>>>>>>>>> Library: 8.07.25 >>>>>>>>>>>>>>> Qt IDE: 1.7.9/5.9.6 >>>>>>>>>>>>>>> Platform: Win 64 >>>>>>>>>>>>>>> Installer: J807 install >>>>>>>>>>>>>>> InstallPath: c:/d/j807 >>>>>>>>>>>>>>> Contact: www.jsoftware.com >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Mike >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> --- >>>>>>>>>>>>>>> This email has been checked for viruses by Avast antivirus >>>>>>>>> software. >>>>>>>>>>>>>>> https://www.avast.com/antivirus >>>>>>>>>>>>>>> >>>>>>>>>> ---------------------------------------------------------------------- >>>>>>>>>> >>>>>>>>>>>>>>> For information about J forums see >>>>>>>>>>>>>>> http://www.jsoftware.com/forums.htm >>>>>>>>>>>>>> --- >>>>>>>>>>>>>> This email has been checked for viruses by AVG. >>>>>>>>>>>>>> https://www.avg.com >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>> ---------------------------------------------------------------------- >>>>>>>>> >>>>>>>>>>>>>> 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 >>>>>>> --- >>>>>>> This email has been checked for viruses by Avast antivirus software. >>>>>>> https://www.avast.com/antivirus >>>>>>> >>>>>>> ---------------------------------------------------------------------- >>>>>>> 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
