diff --git a/gcc/cobol/UAT/testsuite.src/syn_set.at b/gcc/cobol/UAT/testsuite.src/syn_set.at
index 5edf2e921084134e25a7908dba39eaac38660262..ec12161918d66861338ad92ce66e63d27da80f11 100644
--- a/gcc/cobol/UAT/testsuite.src/syn_set.at
+++ b/gcc/cobol/UAT/testsuite.src/syn_set.at
@@ -39,8 +39,9 @@ AT_DATA([prog.cob], [
            STOP RUN.
 ])
 AT_CHECK([$COMPILE_ONLY prog.cob], [1], [],
-[prog.cob:8: error: 88 x-wrong-init invalid VALUE for numeric type X
-prog.cob:12: 1 errors in DATA DIVISION, compilation ceases at 'PROCEDURE        DIVISION'
+[prog.cob:8:14: error: 88 x-wrong-init invalid VALUE for numeric type X
+    8 |           88 x-wrong-init   value space.
+      |              ^
 cobol1: error: failed compiling prog.cob
 ])
 AT_CLEANUP
diff --git a/gcc/cobol/parse_ante.h b/gcc/cobol/parse_ante.h
index 5ce77ca8d562dd1d0f3437c9f9d53be227b2a7d0..417f672277e9bf23a002feb9d06036a234db17ad 100644
--- a/gcc/cobol/parse_ante.h
+++ b/gcc/cobol/parse_ante.h
@@ -2801,6 +2801,9 @@ field_add( const YYLTYPE& loc, cbl_field_t *field ) {
     break;
   }
 
+  // Use isym 0 to indicate the location of the field under construction. 
+  symbol_field_location(0, loc);
+
   struct symbol_elem_t *e = symbol_field_add(PROGRAM, field);
   if( !e ) return NULL;
   symbol_field_location(symbol_index(e), loc);
diff --git a/gcc/cobol/symbols.cc b/gcc/cobol/symbols.cc
index 3c058bf24d4e305ed98349170389fd7f4979d432..02a9594f31f741251de06a229c4a97fdfd10558d 100644
--- a/gcc/cobol/symbols.cc
+++ b/gcc/cobol/symbols.cc
@@ -2278,8 +2278,9 @@ symbol_field_parent_set( struct cbl_field_t *field )
                          return false;
                        } );
         if( ! all_numeric ) {
-          ERROR_FIELD(field, "%s %s invalid VALUE for numeric type %s",
-		  field->level_str(), field->name, prior->name);
+	  auto loc = symbol_field_location(0);
+          error_msg(loc, "%s %s invalid VALUE for numeric type %s",
+		    field->level_str(), field->name, prior->name);
         }
       }
       return prior;