diff --git a/gcc/cobol/cdf-copy.cc b/gcc/cobol/cdf-copy.cc
index 974f281b8f717e5aa7b8ff836bcca03cf90851bf..a7c95e1db75ed7b4d0d325dff5c7cdaab8a1b15d 100644
--- a/gcc/cobol/cdf-copy.cc
+++ b/gcc/cobol/cdf-copy.cc
@@ -323,7 +323,7 @@ copybook_elem_t::open_file( const char directory[], bool literally ) {
       yywarn("COPY file search: read error");
       break;
     case GLOB_NOMATCH:
-      dbgmsg("COPY '%s': no files match %s", this->source, pattern);
+      dbgmsg("COPY '%s': no files match %s", this->source.name, pattern);
     default:
       break; // caller says no file found
     }
diff --git a/gcc/cobol/copybook.h b/gcc/cobol/copybook.h
index 8f02bc47ffcaecd69400a1fc098c5d952d6a6334..b86dd435d6ff4cf1bbf186c98deb1389667fc457 100644
--- a/gcc/cobol/copybook.h
+++ b/gcc/cobol/copybook.h
@@ -182,9 +182,11 @@ class copybook_t {
     this->source(loc, name);
 
     for( auto dir : directories ) {
-      if( false ) {
+      if( true ) {
         dbgmsg("copybook_t::open( '%s' OF '%s' %s",
-	       book.source, dir, book.literally.source? ", literally" : "" );
+	       book.source.name,
+	       dir? dir: ".",
+	       book.literally.source? ", literally" : "" );
       }
       if( (fd = book.open_file(dir, book.literally.source)) != -1 ) break;
     }
diff --git a/gcc/cobol/lexio.cc b/gcc/cobol/lexio.cc
index 03fc6ae0ae0d48eb32b66c627c8cc3bf61b1d77d..1e71a9fa85e5baea29c1ff32635244abe79d0347 100644
--- a/gcc/cobol/lexio.cc
+++ b/gcc/cobol/lexio.cc
@@ -951,8 +951,8 @@ parse_copy_directive( filespan_t& mfile ) {
     YYLTYPE loc = location_in( mfile, copybook_name );
     outcome.fd = copybook.open( loc, xstrndup(copybook_name.first,
 					      copybook_name.length()) );
-    if( outcome.fd == -1 ) { 
-      error_msg(loc, "copybook '%s' not found", copybook.source());
+    if( outcome.fd == -1 ) { // let parser report missing copybook
+      dbgmsg("%s:%d: (no copybook '%s' found)", __func__, __LINE__, copybook.source());
       return outcome;
     }