Dear Andre, It was indeed the associate(pam => im(:, c)) that I had in mind. If you have that working and in the tescase, that's good enough for me.
Cheers Paul On 22 June 2015 at 17:15, Andre Vehreschild <ve...@gmx.de> wrote: > Hi Paul, > > On Mon, 22 Jun 2015 16:04:09 +0200 > Paul Richard Thomas <paul.richard.tho...@gmail.com> wrote: > >> Hi Andre, >> >> Some questions: The first and second chunks look a bit awkward in >> parse.c. Do they have to be there in order that primary.c does the >> right thing? > > I tried at first to do this rank resolution in primary.c, but that was too > late. parse.c needs to propagate the rank correctly. When I remember > correctly, > then doing so later prevents parse.c to correctly recognize the vector (from > the example in the initial description) as such, i.e., the indexing in > vector(2) was not allowed. gfortran assumed vector to be scalar. So, IMHO yes. > >> Could the whole lot be transferred to resolve.c or would that make it >> horribly messy? > > Again, IMO is it not easily transferable to primary.c or even resolve.c. > Therefore no. > >> I couldn't apply the patch right now - >> does it work with variable expressions for the target array indices? > > I am not quite sure, what you mean. Something like this: > > associate(pam => im(2:3, 2:3)) > pam = 9 > pam(1,2) = 10 > do c = 1, 2 > pam(2, c) = 0 > end do > end associate > > ? I have added that to the testcase and it works. Or do you want the variable > expressions in the target, like this: > > integer :: expect(20)= 23 > integer :: im(4,5) = 23 > integer :: c > > expect(2:3) = 9 > do c = 1, 5 > im = 23 > associate(pam => im(:, c)) > pam(2:3) = 9 > end associate > if (any (reshape(im, [20]) /= expect)) call abort() > ! Shift expect > expect = [expect(17:), expect(:16)] > end do > > Will this do, or did you have something more elaborate in mind? This is also > working and in the testcase now. > > Thanks for the review so far. > > Regards, > Andre > -- > Andre Vehreschild * Email: vehre ad gmx dot de -- Outside of a dog, a book is a man's best friend. Inside of a dog it's too dark to read. Groucho Marx