Resources

Output for each loop

1

Is it possible for me to create different output file for each loop? For example i have 2 loops and file out1 has results from loop one, out2 file produced results from loop 2.

2 Answers

0

If the loops are not nested, you send the output to different files with this code:

//reset will cause any existing file to be 
//overwritten with new contents
output file=loop1.out reset;
for i(1, 10, 1);
   print "loop 1 iteration " i;
endfor;
 
output file=loop2.out reset;
for i(1, 10, 1);
   print "loop 2 iteration " i;
endfor;

output off;

If the loops are nested, you can do this:

//Clear out files from previous run
output file=nestloop1.out reset;
output file=nestloop2.out reset;

for i(1, 10, 1);
  output file=nestloop1.out on;
  print "loop 1 iteration " i;
  for j(10, 100, 10);
      output file=nestloop2.out on;
      print "loop 2 iteration " j;
   endfor;
endfor;

output off;

If the output statement ends with 'reset', the next print statement will overwrite an existing file with the same name. If the output statement ends with
'on', the the print statements will be added to the end of any existing file.

0

I have several hundreds of output files and I have their individual names in a string. Using the for loop I want to give a different name to the output of each loop. I modified the above code I little bit, but the only ouput I am getting is names as "names[vfor($1)]", instead of different names in names string.

So my question is: Is it possible to also loop the output file names such as the following?

//Clear out files from previous run
names = "nestloop1.out" $| "nestloop2.out";

for i(1, rows(names), 1);
output file = names[i] reset;
endfor;

for k(1, rows(names), 1);
for i(1, 10, 1);
output file= names[k] on;
print "loop 1 iteration " i;
for j(10, 100, 10);
output file= names[k] on;
print "loop 2 iteration " j;
endfor;
endfor;
endfor;

Your Answer

Tags: asked October 23, 2012

2 Answers

0

If the loops are not nested, you send the output to different files with this code:

//reset will cause any existing file to be 
//overwritten with new contents
output file=loop1.out reset;
for i(1, 10, 1);
   print "loop 1 iteration " i;
endfor;
 
output file=loop2.out reset;
for i(1, 10, 1);
   print "loop 2 iteration " i;
endfor;

output off;

If the loops are nested, you can do this:

//Clear out files from previous run
output file=nestloop1.out reset;
output file=nestloop2.out reset;

for i(1, 10, 1);
  output file=nestloop1.out on;
  print "loop 1 iteration " i;
  for j(10, 100, 10);
      output file=nestloop2.out on;
      print "loop 2 iteration " j;
   endfor;
endfor;

output off;

If the output statement ends with 'reset', the next print statement will overwrite an existing file with the same name. If the output statement ends with
'on', the the print statements will be added to the end of any existing file.

0

I have several hundreds of output files and I have their individual names in a string. Using the for loop I want to give a different name to the output of each loop. I modified the above code I little bit, but the only ouput I am getting is names as "names[vfor($1)]", instead of different names in names string.

So my question is: Is it possible to also loop the output file names such as the following?

//Clear out files from previous run
names = "nestloop1.out" $| "nestloop2.out";

for i(1, rows(names), 1);
output file = names[i] reset;
endfor;

for k(1, rows(names), 1);
for i(1, 10, 1);
output file= names[k] on;
print "loop 1 iteration " i;
for j(10, 100, 10);
output file= names[k] on;
print "loop 2 iteration " j;
endfor;
endfor;
endfor;