From 0834fd7aca2ad60458e0c1c7a313ee20265842b0 Mon Sep 17 00:00:00 2001
From: "James K. Lowden" <jklowden@symas.com>
Date: Sat, 11 May 2024 18:57:52 -0400
Subject: [PATCH] accept string values of -D

---
 gcc/cobol/cdf.y  | 6 +++---
 gcc/cobol/scan.l | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/gcc/cobol/cdf.y b/gcc/cobol/cdf.y
index 5e59a3cf4ea3..84be0ddc4ac7 100644
--- a/gcc/cobol/cdf.y
+++ b/gcc/cobol/cdf.y
@@ -759,10 +759,10 @@ defined_cmd( const char arg[] )
   if(p) {
     *p++ = '\0';
     int pos, number;
-    if( 1 == sscanf(p, "%d%n", &number, &pos) ) {
-      if( size_t(pos) == strlen(p) ) {
+    if( 1 == sscanf(p, "%d%n", &number, &pos) && size_t(pos) == strlen(p) ) {
 	value = cdfval_t(number);
-      }
+    } else {
+      value = cdfval_t(p);  // it's a string
     }
   }
   
diff --git a/gcc/cobol/scan.l b/gcc/cobol/scan.l
index 8a1f4fef073d..2ca79b0ff263 100644
--- a/gcc/cobol/scan.l
+++ b/gcc/cobol/scan.l
@@ -1087,7 +1087,7 @@ USE({SPC}FOR)?		{ return USE; }
   FD/[[:blank:]]+       { parsing.need_level(false); return FD; }
   SD/[[:blank:]]+       { parsing.need_level(false); return SD; }
 
-  {NAME}                { yylval.string = strdup(yytext);
+  {NAME}                { ydflval.string = yylval.string = strdup(yytext);
                           const char *value = is_numeric_constant(yytext);
                           return value? numstr_of(value) : NAME; }
 
-- 
GitLab