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);