$title 'Check handling of multi-dimensional aliases' (ALIAS01,SEQ=637) $onText This test checks that the alias statement can be used on multi-dimensional sets as well. Contributor: Lutz Westermann, November 2013 $offText Set i / i0*i9 / j / j0*j9 / k / k0*k9 / ijk (i,j,k) / #i.#j.#k / ijkC(i,j,k) ijkL(i,j,k); Alias (ijk, ijkA, ijkA2); abort$(card(ijkA) <> card(ijk) ) 'Card of ijkA and ijk differ'; $gdxOut testComp.gdx $unLoad $gdxOut $gdxIn testComp.gdx $load ijkC=ijkA $gdxOut abort$(card(ijkC) <> card(ijk) ) 'Card of ijkC and ijk differ'; Set check(i,j,k); check(ijk) = not ijkA(ijk); abort$card(check) 'Not all elememts of ijk are in ijkA', check; check(ijkA) = not ijk(ijkA); abort$card(check) 'Not all elememts of ijkA are in ijk', check; execute_unload 'test' ijkA,ijk; execute_load 'test' ijkL=ijkA; abort$(card(ijkL) <> card(ijk) ) 'Card of ijkL and ijk differ'; check(ijk) = not ijkL(ijk); abort$card(check) 'Not all elememts of ijk are in ijkL', check; check(ijkL) = not ijk(ijkL); abort$card(check) 'Not all elememts of ijkL are in ijk', check; * Do some calculations scalar x, xA, xAL /0/; x = sum(ijk (i,j,k), ord(i) + 2*ord(j) + 3*ord(k)); xA = sum(ijkA(i,j,k), ord(i) + 2*ord(j) + 3*ord(k)); loop(ijkA(i,j,k), xAL = xAL + ord(i) + 2*ord(j) + 3*ord(k); ); abort$(xA <> x ) 'Sum using alias leads to different result than sum using set', xA, x; abort$(xAL <> x ) 'Loop using alias leads to different result than sum using set', xAL, x;