$title Compile time test for Gather-Update-Solve-Scatter (GUSS) (SCEN01, SEQ=516) $onText The early implementation of GUSS had subtle side effects. Therefore, the GAMS compiler enforces strict rules for the use of GUSS. This test collects a number of these tests. Contributor: Michael Bussieck $offText $call gamslib -q trnsport $if errorlevel 1 $abort 'could not retrieve trnsport.gms' $onEchoV >> trnsport.gms Solve transport using lp minimizing z scenario dict; $if errorfree $abort 'unknown should trigger a compilation error' $clearError set dict1; Solve transport using lp minimizing z scenario dict1; $if errorfree $abort 'dict no data should trigger a compilation error' $clearError set dict2 /x/; Solve transport using lp minimizing z scenario dict2; $if errorfree $abort 'dict different dim should trigger a compilation error' $clearError set dict3 /x.x.x/; Solve transport using lp minimizing z scenario dict3; $if errorfree $abort 'dict unknown keyword should trigger a compilation error' $clearError set dict4 /xxx.scenario.x/; Solve transport using lp minimizing z scenario dict4; $if errorfree $abort 'unknown symbol in pos 1 should trigger a compilation error' $clearError set dict5 /x.scenario.x/; Solve transport using lp minimizing z scenario dict5; $if errorfree $abort 'symbol in pos 1 not a set should trigger a compilation error' $clearError set dict6 /i.scenario.x/; Solve transport using lp minimizing z scenario dict6; $if errorfree $abort 'symbol in pos 3 not blank should trigger a compilation error' $clearError set dict7 /i.scenario.'', j.scenario.''/; Solve transport using lp minimizing z scenario dict7; $if errorfree $abort 'symbol in pos 3 not blank should trigger a compilation error' $clearError set dict8 /i.scenario.''/; Solve transport using lp minimizing z scenario dict8; $if errorfree $abort 'no updaters should trigger a compilation error' $clearError set s; set dict9 /s.scenario.''/; Solve transport using lp minimizing z scenario dict9; $if errorfree $abort 'empty scenario set should trigger a compilation error' $clearError $onMulti set dict9 /x.x.x/; $offMulti $if errorfree $abort 'compile time writing to protected dict should trigger a compilation error' $clearError dict9('x','x','x') = yes; $if errorfree $abort 'execution time writing to protected dict should trigger a compilation error' $clearError set s /s1/; parameter as(s,i) /s1.#i 1/, bs(s,j); set dict10 /s.scenario.'', a.param.as/; dict10('b','param','bs') = yes; Solve transport using lp minimizing z scenario dict10; $if errorfree $abort 'execution time writing to dict should trigger a compilation error' $clearError set dict11 /s.scenario.'', a.param.as, b.param.bs/; Solve transport using lp minimizing z scenario dict11; $if errorfree $abort 'symbol in pos 3 has no data should trigger a compilation error' $clearError bs(s,j)=1; $kill a Solve transport using lp minimizing z scenario dict11; $if errorfree $abort 'symbol in pos 1 has no data should trigger a compilation error' $clearError a(i) = 1; set dict12 /s.scenario.'', supply.param.as/; Solve transport using lp minimizing z scenario dict12; $if errorfree $abort 'symbol in pos 1 not a parameter should trigger a compilation error' $clearError set bs_set(s,j) / s1.#j /; set dict13 /s.scenario.'', b.param.bs_set/; Solve transport using lp minimizing z scenario dict13; $if errorfree $abort 'symbol in pos 3 not a parameter should trigger a compilation error' $clearError parameter bsX(s,i,j) / s1.#i.#j 1 /; set dict14 /s.scenario.'', b.param.bsX/; Solve transport using lp minimizing z scenario dict14; $if errorfree $abort 'symbol dimension mismatch should trigger a compilation error' $clearError Parameter xfix(s,i,j); set dict15 /s.scenario.'', x.fixed.xfix/; Solve transport using lp minimizing z scenario dict15; $if errorfree $abort 'symbol in pos 3 has no data should trigger a compilation error' $clearError xfix(s,i,j) = 1; set dict16 /s.scenario.'', c.fixed.xfix/; Solve transport using lp minimizing z scenario dict16; $if errorfree $abort 'symbol in pos 1 not a varibale should trigger a compilation error' $clearError Set xfix_set(s,i,j) /s1.#i.#j/; set dict17 /s.scenario.'', x.fixed.xfix_set/; Solve transport using lp minimizing z scenario dict17; $if errorfree $abort 'symbol in pos 3 not of type parameter should trigger a compilation error' $clearError parameter xfixX(s,i) / s1.#i 1 /; set dict18 /s.scenario.'', x.fixed.xfixX/; Solve transport using lp minimizing z scenario dict18; $if errorfree $abort 'symbol dimension mismatch should trigger a compilation error' $clearError variable y(i,j); set dict19 /s.scenario.'', y.fixed.xfix/; Solve transport using lp minimizing z scenario dict19; $if errorfree $abort 'symbol in pos 1 not used in model should trigger a compilation error' $clearError parameter ds(s,i,j) / s1.#i.#j 1 /; set dict20 /s.scenario.'', d.param.ds/; Solve transport using lp minimizing z scenario dict20; $if errorfree $abort 'symbol in pos 1 not used in model should trigger a compilation error' $clearError parameter xfixp(i,s,j) / #i.s1.#j 1 /; set dict21 /s.scenario.'', x.fixed.xfixp/; Solve transport using lp minimizing z scenario dict21; $if errorfree $abort 'symbol in pos 3 has inconsistent domain should trigger a compilation error' $clearError equation e1; e1.. sum((i,j)$c(i,j), x(i,j)) =e= 1; model t1 / transport, e1 /; set dict22 /s.scenario.'', c.param.ds/; Solve t1 using lp minimizing z scenario dict22; $if errorfree $abort 'varparms used in $ conditions should trigger a compilation error' $clearError equation e2; e2.. sum((i,j), power(x(i,j),c(i,j))) =e= 1; model t2 / transport, e2 /; set dict23 /s.scenario.'', c.param.ds/; Solve t2 using lp minimizing z scenario dict23; $if errorfree $abort 'varparms used in exogenuous function arguments should trigger a compilation error' $clearError equation e3; e3$(sum((i,j),c(i,j))>5).. z =e= 4; model t3 / transport, e3 /; set dict24 /s.scenario.'', c.param.ds/; Solve t3 using lp minimizing z scenario dict24; $if errorfree $abort 'varparms used in $ conditions should trigger a compilation error' $clearError set dict25 /s.scenario.'', c.param.ds, c.param.xfix/; Solve transport using lp minimizing z scenario dict25; $if errorfree $abort 'param symbol in pos 1 more than once controlled should trigger a compilation error' $clearError set dict26 /s.scenario.'', x.upper.ds, x.upper.xfix/; Solve transport using lp minimizing z scenario dict26; $if errorfree $abort 'variable symbol in pos 1 more than once controlled should trigger a compilation error' $clearError set dict27 /s.scenario.'', x.upper.ds, x.fixed.xfix/; Solve transport using lp minimizing z scenario dict27; $if errorfree $abort 'variable symbol in pos 1 more than once controlled should trigger a compilation error' $clearError set dict28 /s.scenario.'', x.fixed.xfix, x.lower.ds/; Solve transport using lp minimizing z scenario dict28; $if errorfree $abort 'variable symbol in pos 1 more than once controlled should trigger a compilation error' $clearError set dict29 /s.scenario.'', x.level.ds, x.marginal.ds/; Solve transport using lp minimizing z scenario dict29; $if errorfree $abort 'variable symbol in pos 4 more than once in write section should trigger a compilation error' $clearError set sattrib30 / XXX /; parameter srep30(s,sattrib30); set dict30 /s.scenario.'', x.level.ds, ''.opt.srep30/; Solve transport using lp minimizing z scenario dict30; $if errorfree $abort 'unknown label XXX in GUSS model attribute set should trigger a compilation error' $clearError $offEcho $call "gams trnsport a=c lo=%gams.lo%" $if errorlevel 1 $abort 'Test failed. Please inspect trnsport.lst for details'