diff --git a/gcc/cobol/UAT/failsuite.src/run_functions.at b/gcc/cobol/UAT/failsuite.src/run_functions.at
index 5a5319dfc5051b7571ed4d52f2a77126c86865ba..1faaedb931be446d2d6e83cdbb8f1ab832363730 100644
--- a/gcc/cobol/UAT/failsuite.src/run_functions.at
+++ b/gcc/cobol/UAT/failsuite.src/run_functions.at
@@ -94,6 +94,7 @@ prog.cob:18: syntax error at 'invalid-date-format'
 prog.cob:22: syntax error at 'END-IF'
 prog.cob:25: error: format must be literal at 'invalid-datetime-format'
 prog.cob:25: syntax error at 'invalid-datetime-format'
+prog.cob:25: error: FORMATTED_DATETIME: invalid parameter value at ')'
 prog.cob:29: syntax error at 'END-IF'
 prog.cob:31: error: format must be literal at 'invalid-time-format'
 prog.cob:31: syntax error at 'invalid-time-format'
@@ -241,10 +242,9 @@ AT_DATA([prog.cob], [
            .
        END PROGRAM prog.
 ])
-AT_CHECK([$COMPILE -fnot-intrinsic=substitute prog.cob], [0], [], [])
-AT_CHECK([$COBCRUN_DIRECT ./a.out], [0],
-[" _ C_O_B_O_L _ "
-" - C-O-B-O-L - "
+AT_CHECK([$COMPILE prog.cob], [1], [],
+[prog.cob:4: error: FUNCTION SUBSTITUTE is an intrinsic function
+cobol1: error: failed compiling prog.cob
 ])
 AT_CLEANUP
 
@@ -295,5 +295,79 @@ AT_DATA([prog.cob], [
         DISPLAY FUNCTION FORMATTED-DATETIME("YYYYWwwDThh:mm:ssZ" 128623 45296.987654321 -300).
         END PROGRAM datetime.
 ])
-AT_CHECK([$COMPILE prog.cob], [0], [], [])
+AT_CHECK([$COMPILE prog.cob], [1], [],
+[prog.cob:7: syntax error at ''
+prog.cob:7: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:8: syntax error at ''
+prog.cob:8: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:9: syntax error at ''
+prog.cob:9: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:10: syntax error at ''
+prog.cob:10: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:11: syntax error at ''
+prog.cob:11: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:12: syntax error at ''
+prog.cob:12: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:13: syntax error at ''
+prog.cob:13: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:14: syntax error at ''
+prog.cob:14: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:15: syntax error at ''
+prog.cob:15: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:16: syntax error at ''
+prog.cob:16: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:17: syntax error at ''
+prog.cob:17: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:18: syntax error at ''
+prog.cob:18: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:19: syntax error at ''
+prog.cob:19: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:20: syntax error at ''
+prog.cob:20: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:21: syntax error at ''
+prog.cob:21: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:22: syntax error at ''
+prog.cob:22: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:23: syntax error at ''
+prog.cob:23: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:24: syntax error at ''
+prog.cob:24: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:25: syntax error at ''
+prog.cob:25: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:26: syntax error at ''
+prog.cob:26: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:27: syntax error at ''
+prog.cob:27: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:28: syntax error at ''
+prog.cob:28: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:29: syntax error at ''
+prog.cob:29: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:30: syntax error at ''
+prog.cob:30: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:31: syntax error at ''
+prog.cob:31: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:32: syntax error at ''
+prog.cob:32: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:33: syntax error at ''
+prog.cob:33: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:34: syntax error at ''
+prog.cob:34: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:35: syntax error at ''
+prog.cob:35: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:36: syntax error at ''
+prog.cob:36: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:37: syntax error at ''
+prog.cob:37: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:38: syntax error at ''
+prog.cob:38: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:39: syntax error at ''
+prog.cob:39: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:40: syntax error at ''
+prog.cob:40: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:41: syntax error at ''
+prog.cob:41: error: FORMATTED_DATETIME: invalid parameter value at ')'
+prog.cob:42: syntax error at ''
+prog.cob:42: error: FORMATTED_DATETIME: invalid parameter value at ')'
+cobol1: error: failed compiling prog.cob
+])
 AT_CLEANUP
diff --git a/gcc/cobol/parse.y b/gcc/cobol/parse.y
index c39d84f26fbc171fa42cdad9e0e778568f3d248b..f432076b3e95472daefde3853a4f70dbe5257775 100644
--- a/gcc/cobol/parse.y
+++ b/gcc/cobol/parse.y
@@ -1008,6 +1008,11 @@ function_id:	FUNCTION '.' NAME program_as program_attrs[attr] '.'
 			     $NAME, L->line);
 		    YYERROR;
 		  }
+		  if( keyword_tok($NAME, true) ) {
+		    yyerrorv("error: FUNCTION %s is an intrinsic function",
+			     $NAME);
+		    YYERROR;
+		  }
 		  current.udf_add(current_program_index());
                   if( nparse_error > 0 ) YYABORT;
                 }
@@ -8707,6 +8712,10 @@ intrinsic:	function_udf
                   if( ! intrinsic_call_4($$, FORMATTED_DATETIME,
                                              r1, $r2, $r3, $r4) ) YYERROR;
                 }
+        |       FORMATTED_DATETIME '(' error ')' {
+		  yyerror("error: FORMATTED_DATETIME: invalid parameter value");
+		  YYERROR;
+		}
         |       FORMATTED_TIME '(' TIME_FMT[r1] expr[r2]
                                                 expr[r3]  ')' {
                   location_set(@1);