resource helper(id, nap_time : int; outfile : file) write(outfile, "helper", id, "is alive, nap_time=", nap_time) process help var napping : int do true -> napping := int(random(1000*nap_time)) writes(outfile, "age=", age(), ", helper ", id, " is napping for ", napping, "ms\n") nap(napping) od end help end helper resource user() import helper var number : int := 5, nap_time : int := 3, run_time : int := 60 getarg(1, number); getarg(3, nap_time); getarg(2, run_time) var outfile_name : string[64], outfile : file write("resource user starting,", number, "helpers,", nap_time, "napping time,", run_time, "running time") fa i := 1 to number -> sprintf(outfile_name, "helper_%d.output", i) outfile := open(outfile_name, WRITE) if outfile = null -> write("could not open", outfile_name, "for writing"); stop fi create helper(i, nap_time, outfile) af nap(1000*run_time); write("must stop now"); stop end user /* ............... Example compile and run(s) % sr -o multiple_outs multiple_outs.sr % ./multiple_outs resource user starting, 5 helpers, 3 napping time, 60 running time must stop now % ls -l help* -rw-r--r-- 1 shartley 1643 Jul 7 14:41 helper_1.output -rw-r--r-- 1 shartley 1935 Jul 7 14:41 helper_2.output -rw-r--r-- 1 shartley 1647 Jul 7 14:41 helper_3.output -rw-r--r-- 1 shartley 1484 Jul 7 14:41 helper_4.output -rw-r--r-- 1 shartley 1973 Jul 7 14:41 helper_5.output */