diff --git a/gcc/cobol/genapi.cc b/gcc/cobol/genapi.cc
index 71fdca596d93e5432ba7f4ec9162910deca85115..16a647c0547e2b6ff30c96a3ecfcea5962f510d4 100644
--- a/gcc/cobol/genapi.cc
+++ b/gcc/cobol/genapi.cc
@@ -5918,6 +5918,9 @@ parser_logop( struct cbl_field_t *tgt,
       gg_assign(tgt->var_decl_node, boolean_true_node);
       break;
 
+    case false_op:
+      gg_assign(tgt->var_decl_node, boolean_false_node);
+      break;
     }
 
   TRACE1
@@ -11822,7 +11825,7 @@ parser_set_numeric(struct cbl_field_t *tgt, ssize_t value)
   SHOW_PARSE
     {
     SHOW_PARSE_HEADER
-    SHOW_PARSE_TEXT(" set")
+    SHOW_PARSE_TEXT(" set ")
     SHOW_PARSE_TEXT(tgt->name)
     SHOW_PARSE_TEXT(" to ")
     char ach[32];
@@ -11830,6 +11833,7 @@ parser_set_numeric(struct cbl_field_t *tgt, ssize_t value)
     SHOW_PARSE_TEXT(ach);
     SHOW_PARSE_END
     }
+
   gg_call(VOID,
           "__gg__int128_to_field",
           5,
@@ -14521,13 +14525,33 @@ parser_local_add(struct cbl_field_t *new_var )
 void
 parser_symbol_add(struct cbl_field_t *new_var )
   {
-  if(new_var->var_decl_node)
+  if( new_var->var_decl_node )
     {
-    fprintf(stderr, "possible reuse\n");
+    if( new_var->type != FldConditional )
+      {
+      // There is a possibility when re-using variables that a temporary that
+      // was created at compile time might not have a data pointer at run time.
+      if( new_var->attr & (temporary_e | intermediate_e) )
+        {
+        IF( member(new_var->var_decl_node, "allocated"),
+            lt_op,
+            member(new_var->var_decl_node, "capacity") )
+          {
+          gg_free(member(new_var, "data"));
+          gg_assign(member(new_var, "data"),
+                    gg_cast(UCHAR_P, gg_malloc(new_var->data.capacity)));
+          gg_assign(member(new_var, "allocated"),
+                    build_int_cst_type(SIZE_T, new_var->data.capacity));
+          }
+        ELSE
+          {
+          }
+        ENDIF
+        }
+      }
+    return;
     }
-    
-    
-    
+
   if( !(new_var->attr & initialized_e) )
     {
     cbl_field_type_t incoming_type = new_var->type;
@@ -15119,6 +15143,6 @@ parser_symbol_add(struct cbl_field_t *new_var )
     }
   else
     {
-    //fprintf(stderr, "    ...skipped\n");
+    fprintf(stderr, "parser_symbol_add() skipping %s", new_var->name);
     }
   }
diff --git a/gcc/cobol/genapi.h b/gcc/cobol/genapi.h
index c66b367cc399929a08161a3fafda4f7ef6a65fbd..7afd147950d6355846a4f127cb7382a3fa81941d 100644
--- a/gcc/cobol/genapi.h
+++ b/gcc/cobol/genapi.h
@@ -589,9 +589,9 @@ tree parser_cast_long(tree N);
 void parser_print_long(tree N);
 void parser_print_long(const char *fmt, tree N);
 void parser_print_long(long N);
-void parser_print_long(const char *fmt, long N); // fmt needs to have a %s in it
+void parser_print_long(const char *fmt, long N); // fmt needs to have a %ls in it
 void parser_print_string(const char *ach);
-void parser_print_string(const char *fmt, const char *ach); // fmt needs to have a %ld in it
+void parser_print_string(const char *fmt, const char *ach); // fmt needs to have a %s in it
 void parser_set_statement(const char *statement);
 
 char *initial_from_float128(cbl_field_t *field, _Float128 value);
diff --git a/gcc/cobol/gengen.cc b/gcc/cobol/gengen.cc
index 370ea00abbe3b11559d36be968731d7281356e3f..950f20e92b9dd1563d12f0245d4e29aebf6dbff4 100644
--- a/gcc/cobol/gengen.cc
+++ b/gcc/cobol/gengen.cc
@@ -1875,6 +1875,7 @@ gg_build_logical_expression(tree operand_a,
 
     case xnor_op:
     case true_op:
+    case false_op:
       // This is handled elsewhere
       break;
     }
diff --git a/gcc/cobol/parse.y b/gcc/cobol/parse.y
index 8c82640471b64d20616b7c1500cb619de987f4a0..c7851ba1a361f903d55c4795c184239aa90154d4 100644
--- a/gcc/cobol/parse.y
+++ b/gcc/cobol/parse.y
@@ -800,6 +800,8 @@ static int prior_statement;
 
 static void
 statement_begin( const YYLTYPE& loc, int token ) {
+    // The following statement generates a message at run-time
+    // parser_print_string("statement_begin()\n");
     location_set(loc);
     prior_statement = token;
 
diff --git a/gcc/cobol/symbols.h b/gcc/cobol/symbols.h
index 909063f70934d43372b580aad803753aa9aad5de..5f4b5a56b879b98180b12b314e7f3f678afd0916 100644
--- a/gcc/cobol/symbols.h
+++ b/gcc/cobol/symbols.h
@@ -749,6 +749,7 @@ enum logop_t {
   xor_op,
   xnor_op,
   true_op,
+  false_op,
 };
 
 #define SETOP_START 200
@@ -785,6 +786,7 @@ logop_str( enum logop_t logop ) {
   case xor_op: return "xor";
   case xnor_op: return "xnor";
   case true_op: return "true";
+  case false_op: return "false";
   }
   return "???";
 }
diff --git a/gcc/cobol/util.cc b/gcc/cobol/util.cc
index dfbbc7a89020f2adbf1a9b7f3f5feb30d061d956..733a71efec121cf96eab257258169d5bc2c20b50 100644
--- a/gcc/cobol/util.cc
+++ b/gcc/cobol/util.cc
@@ -156,6 +156,8 @@ cbl_logop_str( enum logop_t op )
     return "xnor_op";
   case true_op:
     return "true_op";
+  case false_op:
+    return "false_op";
   }
   warnx("%s:%d: invalid logop_t %d", __func__, __LINE__, op);
   return "???";
diff --git a/libgcobol/libgcobol.cc b/libgcobol/libgcobol.cc
index d1ce4a8ce5d0128f0868e2200163e9e705d1ba8f..161c150a3c64ed4379d94db809e0c281bf276aff 100644
--- a/libgcobol/libgcobol.cc
+++ b/libgcobol/libgcobol.cc
@@ -3977,7 +3977,9 @@ __gg__initialize_variable(cblc_refer_t *var_ref,
   cblc_field_t *var = var_ref->field;
 
   if(    var_ref->field->data == NULL 
-      && var_ref->field->attr & (temporary_e | intermediate_e) )
+      && var_ref->field->attr & (temporary_e | intermediate_e) 
+      && var_ref->field->type != FldLiteralA
+      && var_ref->field->type != FldLiteralN )
     {
     var_ref->field->data = (unsigned char *)malloc(var_ref->field->capacity);
     }