$set MODELNAME %1
$set SOLVEX 
$label concat
$  set SOLVEX %SOLVEX% %1
$  shift
$if not x%1==x $goTo concat

Set mattrib / system.GUSSModelAttributes /;
Parameter solveRep(mattrib);

put_utility 'ECArguments' / gams.sysdir '/';
put_utility 'Save' / 'solve_engine.g00';
embeddedCode Python:
  import sys
  import os

  engine_configuration = GamsEngineConfiguration(
      host=os.environ["ENGINE_URL"],
      username=os.environ["ENGINE_USER"],
      password=os.environ["ENGINE_PASSWORD"],
      namespace=os.environ["ENGINE_NAMESPACE"])

  ws = GamsWorkspace(system_directory=gams.arguments, working_directory=".")
  cp = ws.add_checkpoint("solve_engine.g00")
  opt = ws.add_options()
  opt.savepoint = 1 # this let's Engine create %MODELNAME%_p.gdx
  model_string = "solve %SOLVEX%;"
  for ma in gams.get("mattrib"):
      model_string = model_string + f"\nsolveRep('{ma}') = %MODELNAME%.{ma};"
  model_string = model_string + "\nexecute_unload 'solverep.gdx', solveRep;"
  job = ws.add_job_from_string(model_string, cp)
  job.run_engine(engine_configuration, output=sys.stdout, gams_options=opt, create_out_db=False)
  out_db = ws.add_database_from_gdx("solverep.gdx")
  gams.set("solveRep", out_db["solveRep"])
endEmbeddedCode solveRep
execute_loadpoint '%MODELNAME%_p.gdx';
%MODELNAME%.ModelStat = solveRep('ModelStat');
%MODELNAME%.SolveStat = solveRep('SolveStat');
%MODELNAME%.NumInfes  = solveRep('NumInfes ');
%MODELNAME%.SumInfes  = solveRep('SumInfes ');
%MODELNAME%.IterUsd   = solveRep('IterUsd  ');
%MODELNAME%.ResUsd    = solveRep('ResUsd   ');
%MODELNAME%.ObjVal    = solveRep('ObjVal   ');
%MODELNAME%.NodUsd    = solveRep('NodUsd   ');
%MODELNAME%.ObjEst    = solveRep('ObjEst   ');
%MODELNAME%.DomUsd    = solveRep('DomUsd   ');
%MODELNAME%.RObj      = solveRep('RObj     ');
%MODELNAME%.MaxInfes  = solveRep('MaxInfes ');
%MODELNAME%.MeanInfes = solveRep('MeanInfes');