GAMS [ Home | Support | Sales | Solvers | Documentation | Model Libraries | Search | Contact Us ]

local01.gms : Test .local in different context $on/offlocal


$onlocal allows unlimited nextion  (default)
$offlocal limits .local on the same symbol to one in control stack

Contributor: Alex

Small Model of Type: GAMS
$title Test .local in different context $on/offlocal (LOCAL01,SEQ=430) $ontext $onlocal allows unlimited nextion (default) $offlocal limits .local on the same symbol to one in control stack Contributor: Alex $offtext set i /1*3/; alias (i,j,k) set aa(i,j)/ 1.1, 2.2, 1.3 /; parameter xxx(i,j) / 1.1 1, 2.2 2, 3.3 3, 1.3 13, 3.2 32 /,bb(i) / 1 1, 2 1, 3 3 /; parameter f(i),ff(i),fdif(i),g(i,i),gg(i,i),gdif(i,i); $macro gtest gdif(i,j) = g(i,j) xor gg(i,j); abort$card(gdif) gdif,gg,g $macro ftest fdif(i) = f(i) xor ff(i); abort$card(fdif) fdif,ff,f option clear=gg; gg(i-1,j) = xxx(j,j); display gg; option clear=g; g(i-1,i.local) = xxx(i,i); gtest; option clear=gg; gg(i,j-1) = xxx(j,j); display gg; option clear=g; g(i,i.local-1) = xxx(i,i); gtest; option clear=gg; gg(aa(i,j-1)) = xxx(j,j); display gg; option clear=g; g(aa(i,i.local-1)) = xxx(i,i); gtest; option clear=gg; gg(i,j) = xxx(j,j); display gg; option clear=g; g(i,i.local) = xxx(i,i); gtest; option clear=g; loop(i, g(i,j) = xxx(j,j)); gtest; option clear=g; loop(i, g(i,i.local) = xxx(i,i)); gtest; option clear=gg; gg(i,j)$aa(i,j) = xxx(j,j); display gg; option clear=g; g(aa(i,i.local)) = xxx(i,i); gtest; option clear=gg; loop(i, gg(aa(j,j)) = xxx(j,j)); display gg; option clear=g; loop(i, g(aa(i.local,i)) = xxx(i,i)); gtest; option clear=gg; gg(i,j)$aa(i,j) = xxx(j,j); display gg; option clear=g; g(aa(i,i.local)) = xxx(i,i); gtest; option clear=ff; ff(j) = sum(i, xxx(i,i)); display ff; option clear=f; f(j) = sum(j.local, xxx(j,j)); ftest; option clear=ff; ff(j) = sum(i$aa(i,i), xxx(i,i)); display ff; option clear=f; f(j) = sum(j.local$aa(j,j), xxx(j,j)); ftest; option clear=ff; ff(j) = sum(aa(i,i), xxx(i,i)); display ff; option clear=f; f(j) = sum(aa(j.local,j), xxx(j,j)); ftest; option clear=f; f(j.local) = sum(aa(j.local,j), xxx(j,j)); Ftest; option clear=ff; ff(j) = sum(aa(i,k), xxx(k,k)); display ff; option clear=f; f(j) = sum(aa(j.local,j.local), xxx(j,j)); ftest; option clear=f; f(j) = sum((k,j.local)$aa(k,j), xxx(j,j)); ftest; option clear=ff; ff(j) = sum((i,k)$aa(k,k), xxx(k,k)); display ff; option clear=f; f(j) = sum((j.local,j.local)$aa(j,j), xxx(j,j)); ftest; option clear=ff; ff(j) = sum(aa(i,k), xxx(k,k)); display ff; option clear=f; f(j) = sum(aa(j.local,j.local), xxx(j,j)); ftest; abort.noerror 'leave before we have bad code'; $if not errorfree $abort this should never happen gg(i,j) = xxx(i.local,j); $if errorfree $abort missing error message $clearerrors $offlocal f(j.local) = sum(aa(j.local,j), xxx(j,j)); $if errorfree $abort should have reported local nesting $clearerrors