在 GAMS 中执行 SetGlobal

SetGlobal in execute in GAMS

考虑我要执行到参数(paramter1 和parameter2)。我执行以下操作:

$onEcho > Textfile.txt
par = parameter1   rng = parameter1!A1
par = parameter2   rng = parameter2!A1
$offEcho

execute_unload 'export.gdx', parameter1 parameter2;

但是我可以不把那行写两次,而是这样做:

$setGlobal Parameter parameter1 parameter2

$onEcho > Textfile.txt
par = %parameter%   rng = %parameter%!A1
$offEcho

execute_unload 'export.gdx', %parameter%;

但是,此代码不起作用。我怎样才能在一个地方指定我的参数而不是多次写入它们?

在 GAMS 中你可以定义 macros, but for your purpose, $batInclude 可能会更好:

$onEchoV > execUnload.inc
$echo par = %1   rng = %1!A1 > Textfile.txt
execute_unload 'export.gdx', %1;
$offEcho

$batInclude execUnload.inc parameter1
$batInclude execUnload.inc parameter2

编辑:现在,我更好地理解了你的问题,在评论中讨论之后,这里有一个使用 put facility:

的新解决方案
$setGlobal Parameter parameter1, parameter2

Set exportPars / %Parameter% /;

File fx / 'Textfile.txt' /;
put fx;


loop(exportPars,
   put 'par = ' exportPars.tl:0 '   rng = ' exportPars.tl:0 '!A1' /;
);

execute_unload 'export.gdx', %Parameter%;