By making the anonymous explicit function tacit the globals can be made
local again.
PB=: 4 : 0 "1
ni=. x
'd os'=. y
'w pm m pr'=. d
t1=. w*pm
z=.i.0, #x
for_op. os do.
f=. m+pr*((*%+/@(ni*w*((%...@^@-...@])m&+)@(pr*])))^:_ 2:)`...@.(<&2) op
b=. +/t1*ni*^-spt*f
r=. (b<bp){ ( ({...@$ )rh),({ ~...@$ ) rl
z=. z, ni=. r,}: ni*^-f
end.
)
I also shortened long names. :-)
Use: n PB 2 $ ,: da;option
> Sorry, more globals needed inside PB:
>
> PB=: 4 : 0 "1
> ni=: x
> 'd os'=. y
> 'w per_mat m pr' =: d
> z=.i.0, #w
> for_o. os do.
> f=. m + pr * ( 4 : 'y * x % +/ w * (f % z) * ni * 1 - ^ - z=. m + f=.
> pr * y'^:_ 2:)`...@.(<&2) o
> b=. +/ per_mat * w * ni * ^ - spawn_t * f
> r=. (b<breakpoint){ ( ({...@$ )recruit_h),({ ~...@$ ) recruit_l
> z=. z, ni=: r,}: ni * ^ - f
> end.
> )
>
> I hope this will do. :-(
>
>
--
Met vriendelijke groet,
=@@i
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm