slice1.gms : Test general $slice functionality

Description

$SLICE idendt ( label,label,....  )
label ::= domain | * | quoted label

Contributor: Lutz Westermann, April 2026


Small Model of Type : GAMS


Category : GAMS Test library


Main file : slice1.gms

$title 'Test general $slice functionality (SLICE1,SEQ=993)'

$onText
$slice is a variant of  $clear which allows partial removal of elements in a symbol:
                                              
   $SLICE idendt ( label,label,....  )    
   label ::= domain | * | quoted label    

Contributor: Lutz Westermann, April 2026
$offText


Set i / i1*i3 /;
Alias (i,j,k);
Set mset(i,j,k) / #i.#j.#k /;

$slice mset('i1', 'i2', 'i1')
$gdxUnload have1.gdx mset
$slice mset('i2',    j, 'i2')
$gdxUnload have2.gdx mset
$slice mset(   *,    *, 'i3')
$gdxUnload have3.gdx mset

Set mwant(i,j,k) / #i.#j.#k /;

mwant('i1', 'i2', 'i1') = no;
execute_unload 'want1.gdx', mwant=mset;
mwant('i2',    j, 'i2') = no;
execute_unload 'want2.gdx', mwant=mset;
mwant(   i,    j, 'i3') = no;
execute_unload 'want3.gdx', mwant=mset;

execute.checkErrorLevel "gdxdiff want1.gdx have1.gdx > %system.NullFile%";
execute.checkErrorLevel "gdxdiff want2.gdx have2.gdx > %system.NullFile%";
execute.checkErrorLevel "gdxdiff want3.gdx have3.gdx > %system.NullFile%";