diff --git a/gcc/cobol/scan.l b/gcc/cobol/scan.l index 758754a1c3e067cf5cb3c105cf76dd384f2ff9d3..70fe98dd35c67e06ba88fe7895e658e7c0e182f7 100644 --- a/gcc/cobol/scan.l +++ b/gcc/cobol/scan.l @@ -1776,9 +1776,8 @@ COPY { ydflval.string = yylval.string = strdup(yytext); int token = keyword_tok(null_trim(yylval.string), true); - auto elem = symbol_field(PROGRAM, 0, yylval.string); - if( token && ! elem ) { // not a data item name + if( token && ! symbol_field(PROGRAM, 0, yylval.string) ) { // If token is an intrinsic, and not in Repository, pretend // it's a name and let the parser sort it out. auto name = intrinsic_function_name(token); diff --git a/gcc/cobol/symbols.cc b/gcc/cobol/symbols.cc index b09d38892f599b02e0969d547408889d27aee17f..00f271fd4829a49d4494b569cc6a5ea4a221dda8 100644 --- a/gcc/cobol/symbols.cc +++ b/gcc/cobol/symbols.cc @@ -1940,7 +1940,7 @@ symbol_field_parent_set( struct cbl_field_t *field ) auto redefined = symbol_redefines(prior); if( redefined ) prior = redefined; field->parent = prior->parent; - return prior; + return cbl_field_of(symbol_at(field->parent)); } if( prior->level < field->level ) {