diff --git a/gcc/cobol/UAT/failsuite.src/run_functions.at b/gcc/cobol/UAT/failsuite.src/run_functions.at index 154b0b83207abc4ecf89d94b4dbd3f7b222e4815..8fb2a5dcb106430058548a2a97e9249d4c0a478e 100644 --- a/gcc/cobol/UAT/failsuite.src/run_functions.at +++ b/gcc/cobol/UAT/failsuite.src/run_functions.at @@ -2931,6 +2931,8 @@ AT_CLEANUP AT_SETUP([FUNCTION SUBSTITUTE-CASE]) AT_KEYWORDS([functions]) +AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"]) + AT_DATA([prog.cob], [ IDENTIFICATION DIVISION. PROGRAM-ID. prog. @@ -2955,6 +2957,8 @@ AT_CLEANUP AT_SETUP([FUNCTION SUBSTITUTE-CASE with reference mod]) AT_KEYWORDS([functions]) +AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"]) + AT_DATA([prog.cob], [ IDENTIFICATION DIVISION. PROGRAM-ID. prog. @@ -3969,6 +3973,7 @@ AT_CLEANUP AT_SETUP([FORMATTED-(DATE)TIME with SYSTEM-OFFSET]) AT_KEYWORDS([functions FORMATTED-TIME FORMATTED-DATETIME extensions]) +AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"]) AT_DATA([prog.cob], [ IDENTIFICATION DIVISION. diff --git a/gcc/cobol/cobol1.cc b/gcc/cobol/cobol1.cc index 452d29d490a94b10907dd1958cfdbb4289c5f5f0..3eaa25a32e4809298bf29e375068079b92f163ca 100644 --- a/gcc/cobol/cobol1.cc +++ b/gcc/cobol/cobol1.cc @@ -251,6 +251,10 @@ cobol_langhook_handle_option (size_t scode, } return true; + case OPT_preprocess: + ////preprocess_filter_add(arg); + return true; + case OPT_main: // This isn't right. All OPT_main should be replaced error("We should never see a non-equal dash-main in cobol1.c"); diff --git a/gcc/cobol/lang-specs.h b/gcc/cobol/lang-specs.h index 1fde026899f3b519ed78fa23aa37cf043d2cfc9d..8d7bd1ddd649d8273a0f8369bbd68fb62723e85b 100644 --- a/gcc/cobol/lang-specs.h +++ b/gcc/cobol/lang-specs.h @@ -38,6 +38,7 @@ "%{fcobol-exceptions*} " "%{fstatic-call} " "%{ffixed-form} %{ffree-form} " + "%{preprocess} " "%{dialect} " "%{!fsyntax-only:%(invoke_as)} " , 0, 0, 0}, diff --git a/gcc/cobol/lang.opt b/gcc/cobol/lang.opt index 867a619575903f0ebe8a9cd6d9ca1b055b4b2b6e..1cc4b3f1da85bc1a89370c5497d745c1e13c2148 100644 --- a/gcc/cobol/lang.opt +++ b/gcc/cobol/lang.opt @@ -114,6 +114,10 @@ fyacc-debug Cobol Var(yy_debug, 1) Init(0) Enable Cobol yacc debugging +preprocess +Cobol Joined Separate Var(cobol_preprocess) +preprocess <source_filter> before compiling + main Cobol -main Next source_file/PROGRAM-ID is called by main() diff --git a/gcc/cobol/parse.y b/gcc/cobol/parse.y index 4bf0586dccf3c18d540d3f09a57cc9a1a87625af..c44e9df16c5f7796978492a91c29172149afd642 100644 --- a/gcc/cobol/parse.y +++ b/gcc/cobol/parse.y @@ -8465,21 +8465,21 @@ intrinsic: intrinsic0 if( ! intrinsic_call_1($$, FORMATTED_CURRENT_DATE, r1) ) YYERROR; } - | TEST_FORMATTED_DATETIME '(' DATE_FMT[r1] num_operand[r2] ')' { + | TEST_FORMATTED_DATETIME '(' DATE_FMT[r1] varg[r2] ')' { location_set(@1); $$ = new_tempnumeric(); auto r1 = new_reference(new_literal($r1, quoted_e)); if( ! intrinsic_call_2($$, TEST_FORMATTED_DATETIME, r1, $r2) ) YYERROR; } - | TEST_FORMATTED_DATETIME '(' TIME_FMT[r1] num_operand[r2] ')' { + | TEST_FORMATTED_DATETIME '(' TIME_FMT[r1] varg[r2] ')' { location_set(@1); $$ = new_tempnumeric(); auto r1 = new_reference(new_literal($r1, quoted_e)); if( ! intrinsic_call_2($$, TEST_FORMATTED_DATETIME, r1, $r2) ) YYERROR; } - | TEST_FORMATTED_DATETIME '(' DATETIME_FMT[r1] num_operand[r2] ')' + | TEST_FORMATTED_DATETIME '(' DATETIME_FMT[r1] varg[r2] ')' { location_set(@1); $$ = new_tempnumeric();