Many thanks to Per and Wolfgang for their considered replies. I suspect that I was unhelpful in choosing symmetric data so that z(0,1)=z(1,0). I have revisited the test program with unsymmetrical data and got some kind of answer - see below. It appears that trying to slice off columns from the z-matrix (i.e using z(,0) for (z(0,0),z(1,0)) does not work - my first example. But if z is transposed (replacing LOCal z(1,3) with LOCal z(3,1)) and then using z(0,) and z(1,) to access exactly the same data the code works. This seems to be quite wrong to me since I had expected that z(,0) should refer to z(0,0)&z(1,0), i.e. z(0 to 1,0) just as it seems that z(0,) refers to z(0,0)&z(0,1). All that remains is for me to go through my program (1600 lines now) transposing z-arrays and the code that hangs on them! Christopher 100 DEFine PROCedure lc(x,y,u) 110 LOCal l 120 PRINT x,\ : PRINT y,\ 130 u(0)=x(1)-y(1) 140 u(1)=y(0)-x(0) 150 u(2)=x(0)*y(1)-x(1)*y(0) 160 PRINT u,\ 170 l=SQRT(u(0)^2+u(1)^2) 180 u(0)=u(0)/l 190 u(1)=u(1)/l 200 u(2)=u(2)/l 210 RETurn 220 END DEFine subrt 230 : 240 DEFine PROCedure subrt 250 LOCal u(2),z(3,1) 260 z(0,0)=10 : z(0,1)=20 : z(1,0)=30 : z(1,1)=40 270 lc z(0,),z(1,),u 280 PRINT u,\ 290 END DEFine subrt 300 : 310 CLS 320 subrt
