diff --git a/gcc/cobol/parse.y b/gcc/cobol/parse.y
index 0eb68fc4271e43a346fd8a9d5df3f0a7e6618e58..2c4031f62b71b2cbeb3d55a7c63a515cfa73d3a6 100644
--- a/gcc/cobol/parse.y
+++ b/gcc/cobol/parse.y
@@ -555,9 +555,10 @@
 %printer { fprintf(yyo, "%s %s", refer_type_str($$), $$? $$->name() : "<none>"); } <refer>
 %printer { fprintf(yyo, "%s", $$? name_of($$) : "[omitted]"); } alloc_ret
 %printer { fprintf(yyo, "%s %s '%s' (%s)",
-			cbl_field_type_str($$->type), name_of($$),
-			$$->data.initial? $$->data.initial : "<nil>",
-			$$->value_str() ); } <field>
+			$$? cbl_field_type_str($$->type) : "<%empty>",
+		        $$? name_of($$) : "",
+			$$? $$->data.initial? $$->data.initial : "<nil>" : "",
+			$$? $$->value_str() : "" ); } <field>
 %printer { fprintf(yyo, "%s {%c%s %s}", 
 			$$.cond->field->name,
 			$$.ante.invert? '!' : ' ',
diff --git a/gcc/cobol/scan.l b/gcc/cobol/scan.l
index 4ca8b490c21ac984516882e34ca0c84e00ef3893..8ac8d2ac99b8f97621c5cb64c4f824123e3f4fae 100644
--- a/gcc/cobol/scan.l
+++ b/gcc/cobol/scan.l
@@ -1515,114 +1515,114 @@ USE([[:space:]]+FOR)?		{ return USE; }
 }
 
 <function>{
-  ABS				{ pop_return ABS; }
-  ACOS				{ pop_return ACOS; }
-  ANNUITY			{ pop_return ANNUITY; }
-  ASIN				{ pop_return ASIN; }
-  ATAN				{ pop_return ATAN; }
-  BIT-OF			{ pop_return BIT_OF; }
-  BIT-TO-CHAR			{ pop_return BIT_TO_CHAR; }
-  BYTE-LENGTH			{ pop_return BYTE_LENGTH; }
-  CHAR				{ pop_return CHAR; }
-  COMBINED-DATETIME		{ pop_return COMBINED_DATETIME; }
-  CONCAT			{ pop_return CONCAT; }
-  CONTENT-LENGTH		{ pop_return NO_CONDITION; /* GNU only*/ }
-  CONTENT-OF			{ pop_return NO_CONDITION; /* GNU only*/ }
-  COS				{ pop_return COS; }
-  CURRENCY-SYBOL		{ pop_return NO_CONDITION; /* GNU only*/ }
-  CURRENT-DATE			{ pop_return CURRENT_DATE; }
-  DATE-OF-INTEGER		{ pop_return DATE_OF_INTEGER; }
-  DATE-TO-YYYYMMDD		{ pop_return DATE_TO_YYYYMMDD; }
-  DAY-OF-INTEGER		{ pop_return DAY_OF_INTEGER; }
-  DAY-TO-YYYYDDD		{ pop_return DAY_TO_YYYYDDD; }
-  DISPLAY-OF			{ pop_return DISPLAY_OF; }
-  E				{ pop_return E; }
-
-  EXCEPTION-FILE-N		{ pop_return EXCEPTION_FILE_N; }
-  EXCEPTION-FILE		{ pop_return EXCEPTION_FILE; }
-  EXCEPTION-LOCATION-N		{ pop_return EXCEPTION_LOCATION_N; }
-  EXCEPTION-LOCATION		{ pop_return EXCEPTION_LOCATION; }
-  EXCEPTION-STATEMENT		{ pop_return EXCEPTION_STATEMENT; }
-  EXCEPTION-STATUS		{ pop_return EXCEPTION_STATUS; }
-
-  EXP				{ pop_return EXP; }
-  EXP10				{ pop_return EXP10; }
-  FACTORIAL			{ pop_return FACTORIAL; }
-
-  FORMATTED-CURRENT-DATE	{ BEGIN(datetime_fmt); return FORMATTED_CURRENT_DATE; }
-  FORMATTED-DATE		{ BEGIN(datetime_fmt); return FORMATTED_DATE; }
-  FORMATTED-DATETIME		{ BEGIN(datetime_fmt); return FORMATTED_DATETIME; }
-  FORMATTED-TIME		{ BEGIN(datetime_fmt); return FORMATTED_TIME; }
-  FRACTION-PART			{ pop_return FRACTION_PART; }
-
-  HEX-OF			{ pop_return HEX_OF; }
-  HEX-TO-CHAR			{ pop_return HEX_TO_CHAR; }
-  HIGHEST-ALGEBRAIC		{ pop_return HIGHEST_ALGEBRAIC; }
-
-  INTEGER			{ pop_return INTEGER; }
-  INTEGER-OF-DATE		{ pop_return INTEGER_OF_DATE; }
-  INTEGER-OF-DAY		{ pop_return INTEGER_OF_DAY; }
-  INTEGER-OF-FORMATTED-DATE	{ BEGIN(datetime_fmt); return INTEGER_OF_FORMATTED_DATE; }
-  INTEGER-PART			{ pop_return INTEGER_PART; }
-  LENGTH			{ pop_return LENGTH; }
-  LOCALE-COMPARE		{ pop_return LOCALE_COMPARE; }
-  LOCALE-DATE			{ pop_return LOCALE_DATE; }
-  LOCALE-TIME			{ pop_return LOCALE_TIME; }
-  LOCALE-TIME-FROM-SECONDS	{ pop_return LOCALE_TIME_FROM_SECONDS; }
-  LOG				{ pop_return LOG; }
-  LOG10				{ pop_return LOG10; }
-  LOWER-CASE			{ pop_return LOWER_CASE; }
-  LOWEST-ALGEBRAIC		{ pop_return LOWEST_ALGEBRAIC; }
-  MAX				{ pop_return MAX; }
-  MEAN				{ pop_return MEAN; }
-  MEDIAN			{ pop_return MEDIAN; }
-  MIDRANGE			{ pop_return MIDRANGE; }
-  MIN				{ pop_return MIN; }
-  MOD				{ pop_return MOD; }
-  NATIONAL-OF			{ pop_return NATIONAL_OF; }
-  NUMVAL			{ pop_return NUMVAL; }
-  NUMVAL-C			{ pop_return NUMVAL_C; }
-  NUMVAL-F			{ pop_return NUMVAL_F; }
-  ORD				{ pop_return ORD; }
-  ORD-MAX			{ pop_return ORD_MAX; }
-  ORD-MIN			{ pop_return ORD_MIN; }
-  PI				{ pop_return PI; }
-  PRESENT-VALUE			{ pop_return PRESENT_VALUE; }
-
-  RANDOM{OSPC}{PARENS}	 	{ pop_return RANDOM; }
-  RANDOM{OSPC}[(]	 	{ pop_return RANDOM_SEED; }
-  RANDOM		 	{ pop_return RANDOM; }
-
-  RANGE				{ pop_return RANGE; }
-  REM				{ pop_return REM; }
-  REVERSE			{ pop_return REVERSE; }
-  SECONDS-FROM-FORMATTED-TIME	{ BEGIN(datetime_fmt); return SECONDS_FROM_FORMATTED_TIME; }
-  SECONDS-PAST-MIDNIGHT		{ pop_return SECONDS_PAST_MIDNIGHT; }
-  SIGN				{ pop_return SIGN; }
-  SIN				{ pop_return SIN; }
-  SQRT				{ pop_return SQRT; }
-  STANDARD-DEVIATION		{ pop_return STANDARD_DEVIATION; }
-  SUBSTITUTE			{ pop_return SUBSTITUTE; }
-  SUM				{ pop_return SUM; }
-  TAN				{ pop_return TAN; }
-  TEST-DATE-YYYYMMDD		{ pop_return TEST_DATE_YYYYMMDD; }
-  TEST-DAY-YYYYDDD		{ pop_return TEST_DAY_YYYYDDD; }
-  TEST-FORMATTED-DATETIME	{ BEGIN(datetime_fmt); return TEST_FORMATTED_DATETIME; }
-  TEST-NUMVAL			{ pop_return TEST_NUMVAL; }
-  TEST-NUMVAL-C			{ pop_return TEST_NUMVAL_C; }
-  TEST-NUMVAL-F			{ pop_return TEST_NUMVAL_F; }
-  TRIM				{ pop_return TRIM; }
-  ULENGTH			{ pop_return ULENGTH; }
-  UPOS				{ pop_return UPOS; }
-  UPPER-CASE			{ pop_return UPPER_CASE; }
-  USUBSTR			{ pop_return USUBSTR; }
-  USUPPLEMENTARY		{ pop_return USUPPLEMENTARY; }
-  UUID4				{ pop_return UUID4; }
-  UVALID			{ pop_return UVALID; }
-  UWIDTH			{ pop_return UWIDTH; }
-  VARIANCE			{ pop_return VARIANCE; }
-  WHEN-COMPILED			{ pop_return WHEN_COMPILED; }
-  YEAR-TO-YYYY			{ pop_return YEAR_TO_YYYY; }
+  ABS{OSPC}/[(]?				{ pop_return ABS; }
+  ACOS{OSPC}/[(]?				{ pop_return ACOS; }
+  ANNUITY{OSPC}/[(]?			{ pop_return ANNUITY; }
+  ASIN{OSPC}/[(]?				{ pop_return ASIN; }
+  ATAN{OSPC}/[(]?				{ pop_return ATAN; }
+  BIT-OF{OSPC}/[(]?			{ pop_return BIT_OF; }
+  BIT-TO-CHAR{OSPC}/[(]?			{ pop_return BIT_TO_CHAR; }
+  BYTE-LENGTH{OSPC}/[(]?			{ pop_return BYTE_LENGTH; }
+  CHAR{OSPC}/[(]?				{ pop_return CHAR; }
+  COMBINED-DATETIME{OSPC}/[(]?		{ pop_return COMBINED_DATETIME; }
+  CONCAT{OSPC}/[(]?			{ pop_return CONCAT; }
+  CONTENT-LENGTH{OSPC}/[(]?		{ pop_return NO_CONDITION; /* GNU only*/ }
+  CONTENT-OF{OSPC}/[(]?			{ pop_return NO_CONDITION; /* GNU only*/ }
+  COS{OSPC}/[(]?				{ pop_return COS; }
+  CURRENCY-SYBOL{OSPC}/[(]?		{ pop_return NO_CONDITION; /* GNU only*/ }
+  CURRENT-DATE{OSPC}/[(]?			{ pop_return CURRENT_DATE; }
+  DATE-OF-INTEGER{OSPC}/[(]?		{ pop_return DATE_OF_INTEGER; }
+  DATE-TO-YYYYMMDD{OSPC}/[(]?		{ pop_return DATE_TO_YYYYMMDD; }
+  DAY-OF-INTEGER{OSPC}/[(]?		{ pop_return DAY_OF_INTEGER; }
+  DAY-TO-YYYYDDD{OSPC}/[(]?		{ pop_return DAY_TO_YYYYDDD; }
+  DISPLAY-OF{OSPC}/[(]?			{ pop_return DISPLAY_OF; }
+  E{OSPC}/[(]?				{ pop_return E; }
+
+  EXCEPTION-FILE-N{OSPC}/[(]?		{ pop_return EXCEPTION_FILE_N; }
+  EXCEPTION-FILE{OSPC}/[(]?		{ pop_return EXCEPTION_FILE; }
+  EXCEPTION-LOCATION-N{OSPC}/[(]?		{ pop_return EXCEPTION_LOCATION_N; }
+  EXCEPTION-LOCATION{OSPC}/[(]?		{ pop_return EXCEPTION_LOCATION; }
+  EXCEPTION-STATEMENT{OSPC}/[(]?		{ pop_return EXCEPTION_STATEMENT; }
+  EXCEPTION-STATUS{OSPC}/[(]?		{ pop_return EXCEPTION_STATUS; }
+
+  EXP{OSPC}/[(]?				{ pop_return EXP; }
+  EXP10{OSPC}/[(]?				{ pop_return EXP10; }
+  FACTORIAL{OSPC}/[(]?			{ pop_return FACTORIAL; }
+
+  FORMATTED-CURRENT-DATE{OSPC}/[(]?	{ BEGIN(datetime_fmt); return FORMATTED_CURRENT_DATE; }
+  FORMATTED-DATE{OSPC}/[(]?		{ BEGIN(datetime_fmt); return FORMATTED_DATE; }
+  FORMATTED-DATETIME{OSPC}/[(]?		{ BEGIN(datetime_fmt); return FORMATTED_DATETIME; }
+  FORMATTED-TIME{OSPC}/[(]?		{ BEGIN(datetime_fmt); return FORMATTED_TIME; }
+  FRACTION-PART{OSPC}/[(]?			{ pop_return FRACTION_PART; }
+
+  HEX-OF{OSPC}/[(]?			{ pop_return HEX_OF; }
+  HEX-TO-CHAR{OSPC}/[(]?			{ pop_return HEX_TO_CHAR; }
+  HIGHEST-ALGEBRAIC{OSPC}/[(]?		{ pop_return HIGHEST_ALGEBRAIC; }
+
+  INTEGER{OSPC}/[(]?			{ pop_return INTEGER; }
+  INTEGER-OF-DATE{OSPC}/[(]?		{ pop_return INTEGER_OF_DATE; }
+  INTEGER-OF-DAY{OSPC}/[(]?		{ pop_return INTEGER_OF_DAY; }
+  INTEGER-OF-FORMATTED-DATE{OSPC}/[(]?	{ BEGIN(datetime_fmt); return INTEGER_OF_FORMATTED_DATE; }
+  INTEGER-PART{OSPC}/[(]?			{ pop_return INTEGER_PART; }
+  LENGTH{OSPC}/[(]?			{ pop_return LENGTH; }
+  LOCALE-COMPARE{OSPC}/[(]?		{ pop_return LOCALE_COMPARE; }
+  LOCALE-DATE{OSPC}/[(]?			{ pop_return LOCALE_DATE; }
+  LOCALE-TIME{OSPC}/[(]?			{ pop_return LOCALE_TIME; }
+  LOCALE-TIME-FROM-SECONDS{OSPC}/[(]?	{ pop_return LOCALE_TIME_FROM_SECONDS; }
+  LOG{OSPC}/[(]?				{ pop_return LOG; }
+  LOG10{OSPC}/[(]?				{ pop_return LOG10; }
+  LOWER-CASE{OSPC}/[(]?			{ pop_return LOWER_CASE; }
+  LOWEST-ALGEBRAIC{OSPC}/[(]?		{ pop_return LOWEST_ALGEBRAIC; }
+  MAX{OSPC}/[(]?				{ pop_return MAX; }
+  MEAN{OSPC}/[(]?				{ pop_return MEAN; }
+  MEDIAN{OSPC}/[(]?			{ pop_return MEDIAN; }
+  MIDRANGE{OSPC}/[(]?			{ pop_return MIDRANGE; }
+  MIN{OSPC}/[(]?				{ pop_return MIN; }
+  MOD{OSPC}/[(]?				{ pop_return MOD; }
+  NATIONAL-OF{OSPC}/[(]?			{ pop_return NATIONAL_OF; }
+  NUMVAL{OSPC}/[(]?			{ pop_return NUMVAL; }
+  NUMVAL-C{OSPC}/[(]?			{ pop_return NUMVAL_C; }
+  NUMVAL-F{OSPC}/[(]?			{ pop_return NUMVAL_F; }
+  ORD{OSPC}/[(]?				{ pop_return ORD; }
+  ORD-MAX{OSPC}/[(]?			{ pop_return ORD_MAX; }
+  ORD-MIN{OSPC}/[(]?			{ pop_return ORD_MIN; }
+  PI{OSPC}/[(]?				{ pop_return PI; }
+  PRESENT-VALUE{OSPC}/[(]?			{ pop_return PRESENT_VALUE; }
+
+  RANDOM{OSPC}/[(]?{OSPC}{PARENS}	 	{ pop_return RANDOM; }
+  RANDOM{OSPC}/[(]?{OSPC}[(]	 	{ pop_return RANDOM_SEED; }
+  RANDOM{OSPC}/[(]?		 	{ pop_return RANDOM; }
+
+  RANGE{OSPC}/[(]?				{ pop_return RANGE; }
+  REM{OSPC}/[(]?				{ pop_return REM; }
+  REVERSE{OSPC}/[(]?			{ pop_return REVERSE; }
+  SECONDS-FROM-FORMATTED-TIME{OSPC}/[(]?	{ BEGIN(datetime_fmt); return SECONDS_FROM_FORMATTED_TIME; }
+  SECONDS-PAST-MIDNIGHT{OSPC}/[(]?		{ pop_return SECONDS_PAST_MIDNIGHT; }
+  SIGN{OSPC}/[(]?				{ pop_return SIGN; }
+  SIN{OSPC}/[(]?				{ pop_return SIN; }
+  SQRT{OSPC}/[(]?				{ pop_return SQRT; }
+  STANDARD-DEVIATION{OSPC}/[(]?		{ pop_return STANDARD_DEVIATION; }
+  SUBSTITUTE{OSPC}/[(]?			{ pop_return SUBSTITUTE; }
+  SUM{OSPC}/[(]?				{ pop_return SUM; }
+  TAN{OSPC}/[(]?				{ pop_return TAN; }
+  TEST-DATE-YYYYMMDD{OSPC}/[(]?		{ pop_return TEST_DATE_YYYYMMDD; }
+  TEST-DAY-YYYYDDD{OSPC}/[(]?		{ pop_return TEST_DAY_YYYYDDD; }
+  TEST-FORMATTED-DATETIME{OSPC}/[(]?	{ BEGIN(datetime_fmt); return TEST_FORMATTED_DATETIME; }
+  TEST-NUMVAL{OSPC}/[(]?			{ pop_return TEST_NUMVAL; }
+  TEST-NUMVAL-C{OSPC}/[(]?			{ pop_return TEST_NUMVAL_C; }
+  TEST-NUMVAL-F{OSPC}/[(]?			{ pop_return TEST_NUMVAL_F; }
+  TRIM{OSPC}/[(]?				{ pop_return TRIM; }
+  ULENGTH{OSPC}/[(]?			{ pop_return ULENGTH; }
+  UPOS{OSPC}/[(]?				{ pop_return UPOS; }
+  UPPER-CASE{OSPC}/[(]?			{ pop_return UPPER_CASE; }
+  USUBSTR{OSPC}/[(]?			{ pop_return USUBSTR; }
+  USUPPLEMENTARY{OSPC}/[(]?		{ pop_return USUPPLEMENTARY; }
+  UUID4{OSPC}/[(]?				{ pop_return UUID4; }
+  UVALID{OSPC}/[(]?			{ pop_return UVALID; }
+  UWIDTH{OSPC}/[(]?			{ pop_return UWIDTH; }
+  VARIANCE{OSPC}/[(]?			{ pop_return VARIANCE; }
+  WHEN-COMPILED{OSPC}/[(]?			{ pop_return WHEN_COMPILED; }
+  YEAR-TO-YYYY{OSPC}/[(]?			{ pop_return YEAR_TO_YYYY; }
 
   {NAME}{OSPC}/[(] { /* If /{OSPC}, "dangerous trailing context" "*/
 		  auto& token(yylval.number);