// genesis

function getfilepar (fname, nopar)

str fname 
int nopar 
 
// This function reads a command file
// and sets a simulation parameter to the
// first value in the command file, that
// does not have a 1 as the first value in the line.
// It then rewrites the command file to reflect
// the processing of the current parameter.

// first make a table for the parameter values since
// GENESIS doesn't have number arrays

if ({exists /tmpt} ==1)
   delete /tmpt
end

create table /tmpt
call /tmpt TABCREATE {nopar-1} 1 {nopar-1}
//                    xdivs  xmin xmax

str tmpfname
tmpfname = {fname} @ ".tmp"

openfile {fname} r
openfile {tmpfname} w

int lines
int i
int j
int done= 0
str tmp

lines ={readfile {fname}}  // read first line of text file -> # of lines
echo lines= {lines}

writefile {tmpfname} {lines}

for (i=0; i < lines; i = i+1)
tmp = {readfile {fname} -l }

if (done ==1)
   writefile {tmpfname} {tmp}//after reading from one line don't alter the rest
else
   if ({getarg {arglist {tmp}} -arg 1} ==1)
      writefile {tmpfname} {tmp}
   else
      for (j=0; j< {nopar}; j=j+1)
         setfield /tmpt table->table[{j}] {getarg {arglist {tmp}} -arg {j+2}}
      end
      writefile {tmpfname} {strsub {tmp} 0 1}
      done =1
   end
end

end

closefile {fname}
closefile {tmpfname}
cp {tmpfname} {fname}

for (i=0; i<nopar;i=i+1)
echo {getfield /tmpt table->table[{i}]}
end

if (done ==0)
   echo -------------------------------------------------------
   echo No more parameters in command file, quitting simulation
   echo -------------------------------------------------------
   quit
end

end // end of entire function