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;