|
Having batincludes that deal with different data types |
Top Previous Next |
|
Here I write some code that puts data using put commands that can either be a set or a parameter and figures out which then uses the put commands (putcond.gms).
file at put at set a1 set to be put/item1 first,item2 second/ parameter r(a1) parameter to be put /item1 5,item2 6/ $batinclude outit a1 $batinclude outit r
where outit.gms is
$If not "a%1" == "a" $goto start $error Error in outit: item to be printed is not specified. $label start $If declared %1 $goto declared $error Error in outit: identfier %1 is undeclared. $exit $label declared $If defined %1 $goto defined $error Error in outit: identfier %1 is undefined. $exit $label defined $If settype %1 $goto doset $If partype %1 $goto dopar $error Error in outit: identfier %1 is not a set or a parameter. $exit $label doset put /' set %1 ' %1.ts / loop(%1,put ' Element called ' %1.tl ' defined as ' %1.te(%1) /) put / $goto end $label dopar $If not dimension 1 %1 $goto badnews $If not declared wkset1 alias(wkset1,*); $If not declared wkset2 set wkset2(wkset1); wkset2(wkset1)=no; $onuni wkset2(wkset1)$%1(wkset1)=yes; display wkset2; put /' Parameter %1 ' %1.ts / loop(wkset2,put ' Element ' wkset2.tl ' equals ' %1(wkset2) /) put / $offuni $goto end $label badnews $error Error in outit: identfier %1 is not a one dimensional parameter. $label end
which becomes
1 file at 2 put at 3 set a1 set to be put/item1 first,item2 second/ 4 parameter r(a1) parameter to be put /item1 5,item2 6/ BATINCLUDE C:\GAMS\ADVCLASS\CLASS\EXAMPLE\CONDCOMP\OUTIT.GMS 10 put /' set a1 ' a1.ts / 11 loop(a1,put 'Element called' a1.tl 'definedas' a1.te(a1) /) 12 put / BATINCLUDE C:\GAMS\ADVCLASS\CLASS\EXAMPLE\CONDCOMP\OUTIT.GMS 21 alias(wkset1,*); 22 set wkset2(wkset1); 23 wkset2(wkset1)=no; 25 wkset2(wkset1)$r(wkset1)=yes; 26 display wkset2; 27 put /' Parameter r ' r.ts / 28 loop(wkset2,put ' Element' wkset2.tl 'equals ' r(wkset2) /) 29 put /
Note lines 21-25 figure out the set elements r is defined over and put it in set wkset2. |