Index: trunk/Ohana/src/opihi/pcontrol/check.c
===================================================================
--- trunk/Ohana/src/opihi/pcontrol/check.c	(revision 20047)
+++ trunk/Ohana/src/opihi/pcontrol/check.c	(revision 21379)
@@ -3,4 +3,5 @@
 int check (int argc, char **argv) {
 
+  int N, Save;
   int JobID, HostID;
 
@@ -8,4 +9,10 @@
   Job *job = NULL;
   Host *host = NULL;
+
+  Save = FALSE;
+  if ((N = get_argument (argc, argv, "-save"))) {
+    remove_argument (N, &argc, argv);
+    Save = TRUE;
+  }
 
   if (argc != 3) {
@@ -39,4 +46,19 @@
 	gprint (GP_LOG, "HOSTNAME NONE\n");
     }
+
+    if (Save) {
+	set_str_variable ("JOB_STATUS", GetJobStackName(job[0].stack));
+	set_int_variable ("JOB_EXITST", job[0].exit_status);
+	set_int_variable ("JOB_STDOUT_SIZE", job[0].stdout.size);
+	set_int_variable ("JOB_STDERR_SIZE", job[0].stderr.size);
+	set_variable ("JOB_DTIME", job[0].dtime);
+	set_str_variable ("JOB_HOSTNAME", job[0].hostname);
+	if (job[0].realhost) {
+	    set_str_variable ("JOB_REALHOST", job[0].realhost);
+	} else {
+	    set_str_variable ("JOB_REALHOST", "NONE");
+	}
+    }
+
     PushStack (stack, STACK_BOTTOM, job, job[0].JobID, job[0].argv[0]);
     return (TRUE);
@@ -53,4 +75,9 @@
     }
     gprint (GP_LOG, "host %s\n", GetHostStackName(host[0].stack));
+
+    if (Save) {
+	set_str_variable ("HOST_STATE", GetHostStackName(host[0].stack));
+    }
+
     PushStack (stack, STACK_BOTTOM, host, host[0].HostID, host[0].hostname);
     return (TRUE);
