diff --git a/gcc/cobol/cbldiag.h b/gcc/cobol/cbldiag.h index c43f2a269c32c58b2b730815c9f5343db421eeb3..dace0465393914d2729f83de1b15dfa482937e87 100644 --- a/gcc/cobol/cbldiag.h +++ b/gcc/cobol/cbldiag.h @@ -105,8 +105,7 @@ template <typename LOC> static void location_dump( const char func[], int line, const char tag[], const LOC& loc) { extern int yy_flex_debug; - extern int yydebug; - if( yy_flex_debug || yydebug ) + if( false && yy_flex_debug ) fprintf(stderr, "%s:%d: %s location (%d,%d) to (%d,%d)\n", func, line, tag, loc.first_line, loc.first_column, loc.last_line, loc.last_column); diff --git a/gcc/cobol/parse.y b/gcc/cobol/parse.y index d55e1eef12e51b1a72fb4271e62d84ed96409882..009fb4e42139c2bb77bd084b07eebfdb9de5a4b7 100644 --- a/gcc/cobol/parse.y +++ b/gcc/cobol/parse.y @@ -5999,10 +5999,11 @@ name: qname build_symbol_map(); auto namelocs( name_queue.pop() ); auto names( name_queue.namelist_of(namelocs) ); + auto inner = namelocs.back(); if( ($$ = field_find(names)) == NULL ) { if( procedure_div_e == current_division ) { - error_msg(namelocs.back().loc, - "DATA-ITEM '%s' not found", names.back() ); + error_msg(inner.loc, + "DATA-ITEM '%s' not found", inner.name ); YYERROR; } /* @@ -7595,13 +7596,14 @@ write_what: file_record FROM alpha_val[input] ; file_record: NAME { - struct symbol_elem_t *record = symbol_find(@NAME, $NAME); - if( !record ) { - error_msg(@1, "no record name '%s'", $NAME); + name_queue.qualify(@1, $1); + auto namelocs( name_queue.pop() ); + auto names( name_queue.namelist_of(namelocs) ); + auto inner = namelocs.back(); + if( ($$ = field_find(names)) == NULL ) { + error_msg(inner.loc, "no record name '%s'", inner.name); YYERROR; } - - $$ = cbl_field_of(record); } | NAME inof filename {