diff --git a/gcc/cobol/parse.y b/gcc/cobol/parse.y
index ee779e10b88d3d4c49f579492b49463541697e52..b0d9a6b283ff78c3a88107323b63df1a3206f184 100644
--- a/gcc/cobol/parse.y
+++ b/gcc/cobol/parse.y
@@ -11366,6 +11366,7 @@ cobol_dialect_set( cbl_dialect_t dialect ) {
   cbl_dialect = dialect;
   if( dialect == dialect_ibm_e ) cobol_gcobol_feature_set(feature_embiggen_e);
 }
+cbl_dialect_t cobol_dialect() { return cbl_dialect; }
 
 static bool internal_ebcdic_locked = false;
 
diff --git a/gcc/cobol/scan.l b/gcc/cobol/scan.l
index 2eb0373408949b3d89de10440773fda235ff1a54..b5c0978ee594320bc45e228e6d2362961764b3a2 100644
--- a/gcc/cobol/scan.l
+++ b/gcc/cobol/scan.l
@@ -969,11 +969,15 @@ USE({SPC}FOR)?		{ return USE; }
   OBJECT{SPC}REFERENCE		{ yyerror("error: unimplemented USAGE type: OBJECT REFERENCE"); }
 
   PACKED-DECIMAL		{ return PACKED_DECIMAL; }
+  POINTER               	{ return POINTER; }
   FUNCTION-POINTER             	{ return POINTER; }
   PROGRAM-POINTER              	{ return POINTER; }
-  PROCEDURE-POINTER            	{ if( !dialect_ibm() ) yyerror("%s requires '-dialect ibm'");
-				  return POINTER; } // return it anyway
-  POINTER               	{ return POINTER; }
+
+  PROCEDURE-POINTER            	{ if( dialect_gcc() ) {
+				    yyerror("%s requires -dialect ibm or mf");
+				  }
+				  return POINTER;  // return it anyway
+				}
 
   ZEROE?S?	        { return ZERO; }
   SPACES?		{ yylval.string = NULL; return SPACES; }
diff --git a/gcc/cobol/symbols.h b/gcc/cobol/symbols.h
index aff38a8eaa3ee3693af8eefe96411ca21e9894b6..5f265b3956395da6d62d412e00d6e2670fc6fe48 100644
--- a/gcc/cobol/symbols.h
+++ b/gcc/cobol/symbols.h
@@ -87,8 +87,13 @@ enum cbl_dialect_t {
 
 extern cbl_dialect_t cbl_dialect;
 void cobol_dialect_set( cbl_dialect_t dialect );
+cbl_dialect_t dialect_is();
 
 //// bool dialect_gnu() { return dialect_gnu_e == (cbl_dialect & dialect_gnu_e); }
+static inline bool dialect_gcc() {
+  return dialect_gcc_e  == cbl_dialect;
+}
+
 static inline bool dialect_ibm() {
   return dialect_ibm_e == (cbl_dialect & dialect_ibm_e);
 }