Index: trunk/Ohana/src/opihi/lib.shell/parse.c
===================================================================
--- trunk/Ohana/src/opihi/lib.shell/parse.c	(revision 41341)
+++ trunk/Ohana/src/opihi/lib.shell/parse.c	(revision 41489)
@@ -200,19 +200,7 @@
     }
 
-    /* find value for assignment */
-    V1 = nextcomm (line);
-    if (V1 == (char *) NULL) goto error;
-    if (V1[0] != '=') goto error;
-    V1 ++;
-
-    /*** assign vector element to value ***/
-    val = dvomath (1, &V1, &size, 0); 
-    if (val == (char *) NULL) {
-      print_error ();
-      goto error;
-    }
-
-    /* find vector */
+    /* find vector or buffer (check for valid element)*/
     if (isBuffer) {
+      // unknown buffer name
       if ((buf = SelectBuffer (V0, OLDBUFFER, TRUE)) == NULL) goto error;
       free (V0); V0 = (char *) NULL;
@@ -229,7 +217,4 @@
       if (Nx < 0) Nx += buf[0].header.Naxis[0];
       if (Ny < 0) Ny += buf[0].header.Naxis[1];
-
-      fptr = (float *) buf[0].matrix.buffer;
-      fptr[Nx + Ny*buf[0].header.Naxis[0]] = atof (val);
     } else {
       if ((vec = SelectVector (V0, OLDVECTOR, TRUE)) == NULL) goto error;
@@ -244,9 +229,39 @@
       }
       if (Nx < 0) Nx += vec[0].Nelements;
+    }
+
+    /* find value for assignment */
+    V1 = nextcomm (line);
+    if (V1 == (char *) NULL) goto error;
+    if (V1[0] != '=') goto error;
+    V1 ++;
+
+    /*** assign vector (or buffer) element to value ***/
+    val = dvomath (1, &V1, &size, 0); 
+    if (val == NULL) { 
+      if (!isBuffer && (vec->type == OPIHI_STR)) {
+	while (OHANA_WHITESPACE (*V1)) V1++;
+	val = strcreate (V1);
+	init_error ();
+      } else {
+	print_error ();
+	goto error;
+      }
+    }
+
+    /* find vector */
+    if (isBuffer) {
+      fptr = (float *) buf[0].matrix.buffer;
+      fptr[Nx + Ny*buf[0].header.Naxis[0]] = atof (val);
+    } else {
       if (vec[0].type == OPIHI_FLT) {
 	vec[0].elements.Flt[Nx] = atof (val);
-      } else {
+      } 
+      if (vec[0].type == OPIHI_INT) {
 	vec[0].elements.Int[Nx] = atoll (val);
       }
+      if (vec[0].type == OPIHI_STR) {
+	vec[0].elements.Str[Nx] = strcreate (val);
+      } 
     }
     goto escape;
@@ -359,5 +374,5 @@
 
 /* case 3: we hunt for '{', and then the first '}' and pass everything
-   inbetween.  no nested {{}}s are allowed! */
+   in between.  no nested {{}}s are allowed! */
   
 /* thisword ALLOCATES
