[Jprogramming] Name conflict in J system scripts - who cares ?

Henry Rich HenryHRich at nc.rr.com
Sat Dec 29 00:09:32 UTC 2012


I have added

4!:55 <'endian'

into the plot script on J602, right after the name is used.  This should 
become a standard convention when local names are used in scripts, to 
avoid the kind of problem you reported.

I made the same change in the J7 base, and also to format\publish which 
did the same thing.

I guess you'll get the change when the base is rebuilt.

Henry Rich

On 12/28/2012 4:32 PM, Anssi Seppälä wrote:
> My J602 development broke suddenly after a JAL update. The built script did not work in runtime. The reason appears to be in a name conflict in two different scripts that are added in same build: dll.ijs and jzplot.ijs. Both scripts declare name "endian": jzplot.ijs locally in class locale and dll.ijs globally in locale z and. The second assignment causes domain error while running the script.
>
> You can simulate the situation by running the following lines in a script (24.ijs):
>
> cocurrent'test'
> a=. 12
> cocurrent 'z'
> a=: 13
>
> load 'C:\j602\user\temp\24.ijs'
> |domain error: script
> |   a    =:13
> |[-3] C:\j602\user\temp\24.ijs
>
>
> The script jzplot.ijs includes a executed line jzplot class locale:
> endian=. ({.a.)={. 1&(3!:4) 1
>
> and dll.ijs includes a executed line in z locale:
> endian=: |.^:('a'={.2 ic a.i.'a')
>
>
> I have only questions:
> Which script (jzplot.ijs or dll.ijs) should be fixed and how ? Who will do the fix and how such conflicts causing such nasty errors could be avoided in the future?
>
> Anssi
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>


More information about the Programming mailing list