Index: trunk/Ohana/src/opihi/pantasks/CheckJobs.c
===================================================================
--- trunk/Ohana/src/opihi/pantasks/CheckJobs.c	(revision 4763)
+++ trunk/Ohana/src/opihi/pantasks/CheckJobs.c	(revision 6249)
@@ -6,4 +6,5 @@
   Macro *macro;
   int i, status;
+  char varname[64];
 
   /** test all jobs: ready to test?  finished? **/
@@ -30,4 +31,11 @@
 	PushNamedQueue ("stdout", job[0].stdout.buffer);
 	PushNamedQueue ("stderr", job[0].stderr.buffer);
+	/* set taskarg variables */
+	for (i = 0; i < job[0].argc; i++) {
+	    sprintf (varname, "taskarg:%d", i);
+	    set_str_variable (varname, job[0].argv[i]);
+	}
+	set_int_variable ("taskarg:n", job[0].argc);
+
 	/* XXX this will break on 0 values in output streams */
 	/* perhaps define PushNamedQueueBuffer */
@@ -43,4 +51,18 @@
 	PushNamedQueue ("stdout", job[0].stdout.buffer);
 	PushNamedQueue ("stderr", job[0].stderr.buffer);
+	/* set taskarg variables */
+	for (i = 0; i < job[0].argc; i++) {
+	    sprintf (varname, "taskarg:%d", i);
+	    set_str_variable (varname, job[0].argv[i]);
+	}
+	set_int_variable ("taskarg:n", job[0].argc);
+
+	/* update the exit status counters */
+	if (job[0].exit_status) {
+	    job[0].task[0].Nfailure ++;
+	} else {
+	    job[0].task[0].Nsuccess ++;
+	}
+
 	/* run corresponding task[0].exit macro, if it exists */
 	macro = job[0].task[0].defexit;
@@ -68,4 +90,8 @@
       if (GetTaskTimer(job[0].start) < job[0].task[0].timeout_period) continue;
       if (VerboseMode()) fprintf (stderr, "timeout on %s\n", job[0].task[0].name);
+
+      /* update the timeout counter */
+      job[0].task[0].Ntimeout ++;
+
       if (!KillLocalJob (job)) {
 	job[0].state = JOB_HUNG;
@@ -73,4 +99,13 @@
 	continue;
       }
+
+      /* set taskarg variables */
+      for (i = 0; i < job[0].argc; i++) {
+	  sprintf (varname, "taskarg:%d", i);
+	  set_str_variable (varname, job[0].argv[i]);
+      }
+      set_int_variable ("taskarg:n", job[0].argc);
+
+
       /* run task[0].timeout macro, if it exists */
       if (job[0].task[0].timeout != NULL) {
