diff --git a/gcc/cobol/parse.y b/gcc/cobol/parse.y
index 424e9e35e13e5cd7f5dbcf549bfa9ec83f7451f6..a213e5c916de89f1ded93bf0e7e8455fbfa8a6b5 100644
--- a/gcc/cobol/parse.y
+++ b/gcc/cobol/parse.y
@@ -9966,9 +9966,9 @@ class tokenset_t {
     }, * const eonames = cdf_names + COUNT_OF(cdf_names);
     
     if( std::any_of(cdf_names, eonames,
-		    [candidate=name](const cbl_name_t name) {
-		      return 0 == strcasecmp(name, candidate)
-			&& strlen(name) == strlen(candidate);
+		    [candidate=name](const cbl_name_t cdf_name) {
+		      return 0 == strcasecmp(cdf_name, candidate)
+			&& strlen(cdf_name) == strlen(candidate);
 		    } ) ) {
       return false; // CDF names are never ordinary tokens
     }
diff --git a/gcc/cobol/scan.l b/gcc/cobol/scan.l
index ed05268c77b35fa864a21fcfa30fdb0ed051a446..4cee696d4eff1fb8c4557efcf859cf2bd0ec891f 100644
--- a/gcc/cobol/scan.l
+++ b/gcc/cobol/scan.l
@@ -1897,7 +1897,8 @@ COPY		{
 	   		if( yy_flex_debug ) warnx("resuming at line %4d of %s",
 						  yylineno, name? name : "<none>"); }
 
-  {LINE_DIRECTIVE} {	cobol_fileline_set(yytext); }
+  {LINE_DIRECTIVE} {	penultimate_once(final_token);
+			cobol_fileline_set(yytext); }
 }