--- a/main/trunk/interpreter/classes/StringClass.cpp
+++ b/main/trunk/interpreter/classes/StringClass.cpp
@@ -486,9 +486,6 @@
 /*            only strict equality, not greater or less than values.          */
 /******************************************************************************/
 {
-    size_t  otherLen;                    /* length of the other string        */
-    RexxString *other;                   /* converted string object           */
-
     requiredArgument(otherObj, ARG_ONE);         /* this is required.                 */
     if (!this->isBaseClass())            /* not a primitive?                  */
     {
@@ -496,8 +493,13 @@
         return this->sendMessage(OREF_STRICT_EQUAL, otherObj)->truthValue(Error_Logical_value_method);
     }
 
-    other = REQUEST_STRING(otherObj);    /* force into string form            */
-    otherLen = other->getLength();            /* get length of second string.      */
+    if (otherObj == TheNilObject)        // strings never compare equal to the NIL object
+    {
+        return false;
+    }
+
+    RexxString *other = REQUEST_STRING(otherObj);    /* force into string form            */
+    size_t otherLen = other->getLength();     /* get length of second string.      */
     if (otherLen != this->getLength())        /* lengths different?                */
     {
         return false;                      /* also unequal                      */
@@ -513,17 +515,14 @@
 /*            only strict equality, not greater or less than values.          */
 /******************************************************************************/
 {
-    size_t  otherLen;                    /* length of the other string        */
-    RexxString *other;                   /* converted string object           */
-
     requiredArgument(otherObj, ARG_ONE);         /* this is required.                 */
     if (otherObj == TheNilObject)        // strings never compare equal to the NIL object
     {
         return false;
     }
 
-    other = REQUEST_STRING(otherObj);    /* force into string form            */
-    otherLen = other->getLength();            /* get length of second string.      */
+    RexxString *other = REQUEST_STRING(otherObj);    /* force into string form            */
+    size_t otherLen = other->getLength();            /* get length of second string.      */
     if (otherLen != this->getLength())        /* lengths different?                */
     {
         return false;                      /* also unequal                      */
@@ -544,6 +543,10 @@
 {
     // we have one required string object
     requiredArgument(otherObj, ARG_ONE);
+    if (otherObj == TheNilObject)        // strings never compare equal to the NIL object
+    {
+        return false;
+    }
     RexxString *other = REQUEST_STRING(otherObj);
     stringsize_t otherLen = other->getLength();
     // can't compare equal if different lengths
@@ -610,6 +613,10 @@
                                          /* call to NumberString succeeds or  */
                                          /* we will get into a loop.          */
     requiredArgument(other, ARG_ONE);            /* make sure we have a real argument */
+    if (other == TheNilObject)           // all conditionals return .false when compared to .nil
+    {
+        return false;
+    }
                                          /* try and convert both numbers      */
     if (((firstNum = this->fastNumberString()) != OREF_NULL) && ((secondNum = other->numberString()) != OREF_NULL ))
     {
@@ -699,15 +706,12 @@
 /*             a value > 0 when this is larger than other                     */
 /******************************************************************************/
 {
-    const char *otherData;               /* the other character data          */
-    size_t otherLen;                     /* length of the other string        */
     wholenumber_t result;                /* compare result                    */
-    RexxString *other;                   /* converted string value            */
 
     requiredArgument(otherObj, ARG_ONE);         /* this is required.                 */
-    other = REQUEST_STRING(otherObj);    /* force into string form            */
-    otherLen = other->getLength();       /* get length of second string.      */
-    otherData = other->getStringData();  /* get pointer to start of data.     */
+    RexxString *other = REQUEST_STRING(otherObj);    /* force into string form            */
+    size_t otherLen = other->getLength();       /* get length of second string.      */
+    const char *otherData = other->getStringData();  /* get pointer to start of data.     */
 
     if (this->getLength() >= otherLen)
     {      /* determine the longer string.      */
@@ -988,7 +992,7 @@
 /* Function:  Strict ("\==") inequality operator                              */
 /******************************************************************************/
 {
-  return !this->primitiveIsEqual(other) ? TheTrueObject : TheFalseObject;
+    return !this->primitiveIsEqual(other) ? TheTrueObject : TheFalseObject;
 }
 
 RexxInteger *RexxString::equal(RexxObject *other)
@@ -996,12 +1000,11 @@
 /* Function:  Non-strict ("=") string equality operator                       */
 /******************************************************************************/
 {
-  // Strings never compare equal to the .nil object
-  if (other == TheNilObject)
-  {
-      return TheFalseObject;
-  }
-  return ((this->comp(other) == 0) ? TheTrueObject : TheFalseObject);
+    if (other == TheNilObject)           // all conditionals return .false when compared to .nil
+    {
+        return TheFalseObject;
+    }
+    return ((this->comp(other) == 0) ? TheTrueObject : TheFalseObject);
 }
 
 RexxInteger *RexxString::notEqual(RexxObject *other)
@@ -1009,12 +1012,11 @@
 /* Function:  Non-Strict ("\=") string inequality operator                    */
 /******************************************************************************/
 {
-  // Strings never compare equal to the .nil object
-  if (other == TheNilObject)
-  {
-      return TheTrueObject;
-  }
-  return ((this->comp(other) != 0) ? TheTrueObject : TheFalseObject);
+    if (other == TheNilObject)           // all conditionals return .false when compared to .nil
+    {
+        return TheTrueObject;
+    }
+    return ((this->comp(other) != 0) ? TheTrueObject : TheFalseObject);
 }
 
 RexxInteger *RexxString::isGreaterThan(RexxObject *other)
@@ -1022,7 +1024,11 @@
 /* Function:  Non-strict greater than operator (">")                          */
 /******************************************************************************/
 {
-  return ((this->comp(other) > 0) ? TheTrueObject : TheFalseObject);
+    if (other == TheNilObject)           // all conditionals return .false when compared to .nil
+    {
+        return TheFalseObject;
+    }
+    return ((this->comp(other) > 0) ? TheTrueObject : TheFalseObject);
 }
 
 RexxInteger *RexxString::isLessThan(RexxObject *other)
@@ -1030,7 +1036,11 @@
 /* Function:  Non-strict less than operatore ("<")                            */
 /******************************************************************************/
 {
-  return ((this->comp(other) < 0) ? TheTrueObject : TheFalseObject);
+    if (other == TheNilObject)           // all conditionals return .false when compared to .nil
+    {
+        return TheFalseObject;
+    }
+    return ((this->comp(other) < 0) ? TheTrueObject : TheFalseObject);
 }
 
 RexxInteger *RexxString::isGreaterOrEqual(RexxObject *other)
@@ -1038,7 +1048,11 @@
 /* Function:  Non-strict greater than or equal operator (">=" or "\<")        */
 /******************************************************************************/
 {
-  return ((this->comp(other) >= 0) ? TheTrueObject : TheFalseObject);
+    if (other == TheNilObject)           // all conditionals return .false when compared to .nil
+    {
+        return TheFalseObject;
+    }
+    return ((this->comp(other) >= 0) ? TheTrueObject : TheFalseObject);
 }
 
 RexxInteger *RexxString::isLessOrEqual(RexxObject *other)
@@ -1046,7 +1060,11 @@
 /* Function:  Non-strict less than or equal operator ("<=" or "\>")           */
 /******************************************************************************/
 {
-  return ((this->comp(other) <= 0) ? TheTrueObject : TheFalseObject);
+    if (other == TheNilObject)           // all conditionals return .false when compared to .nil
+    {
+        return TheFalseObject;
+    }
+    return ((this->comp(other) <= 0) ? TheTrueObject : TheFalseObject);
 }
 
 RexxInteger *RexxString::strictGreaterThan(RexxObject *other)
@@ -1054,7 +1072,11 @@
 /* Function:  Strict greater than comparison (">>")                           */
 /******************************************************************************/
 {
-  return (this->strictComp(other) > 0) ? TheTrueObject : TheFalseObject;
+    if (other == TheNilObject)           // all conditionals return .false when compared to .nil
+    {
+        return TheFalseObject;
+    }
+    return (this->strictComp(other) > 0) ? TheTrueObject : TheFalseObject;
 }
 
 RexxInteger *RexxString::strictLessThan(RexxObject *other)
@@ -1062,7 +1084,11 @@
 /* Function:  Strict less than comparison ("<<")                              */
 /******************************************************************************/
 {
-  return (this->strictComp(other) < 0) ? TheTrueObject : TheFalseObject;
+    if (other == TheNilObject)           // all conditionals return .false when compared to .nil
+    {
+        return TheFalseObject;
+    }
+    return (this->strictComp(other) < 0) ? TheTrueObject : TheFalseObject;
 }
 
 RexxInteger *RexxString::strictGreaterOrEqual(RexxObject *other)
@@ -1070,7 +1096,11 @@
 /* Function:  Strict greater than or equal to comparison (">>=" or "\<<")     */
 /******************************************************************************/
 {
-  return (this->strictComp(other) >= 0) ? TheTrueObject : TheFalseObject;
+    if (other == TheNilObject)           // all conditionals return .false when compared to .nil
+    {
+        return TheFalseObject;
+    }
+    return (this->strictComp(other) >= 0) ? TheTrueObject : TheFalseObject;
 }
 
 RexxInteger *RexxString::strictLessOrEqual(RexxObject *other)
@@ -1078,7 +1108,11 @@
 /* Function:  Strict less than or equal to operatore ("<<=" or "\>>")         */
 /******************************************************************************/
 {
-  return (this->strictComp(other) <= 0) ? TheTrueObject : TheFalseObject;
+    if (other == TheNilObject)           // all conditionals return .false when compared to .nil
+    {
+        return TheFalseObject;
+    }
+    return (this->strictComp(other) <= 0) ? TheTrueObject : TheFalseObject;
 }
 
 RexxString *RexxString::concat(RexxString *other)