No problem with the line length. It's regcomp() that seems broken. I believe that this is the version of the Open Group spec that IBM is supposed to be supporting, which mentions no limit on the number of groups (aka "subexpressions"). https://pubs.opengroup.org/onlinepubs/009695399/
On Mon, Oct 5, 2020 at 10:58 AM retired mainframer <[email protected]> wrote: > One of C's less frequently used features is automatic string literal > concatenation. The expression > "AB" "cd" > will be compiled as > "ABcd" > as long as the components (could be more than two) are separated only by > white space. > > So if the problem really is related to line length (your line has 74 > characters), you could break it up into as many shorter literals as you > like with each on a new line (and even indented for easier reading). > > > -----Original Message----- > > From: IBM Mainframe Discussion List <[email protected]> On > > Behalf Of Kirk Wolf > > Sent: Monday, October 05, 2020 8:41 AM > > To: [email protected] > > Subject: C RTL regcomp() fails with more than 9 (groups) > > > > Can be demonstrated with the following test program. This works fine > with > > regcomp() on linux and other RE platforms (PCRE, javascript, python, > etc). > > > > /* test regcomp with more than 9 (groups). > > On z/OS V2R3, fails with: > > Invalid regular expression '...' - (rc=8) \( \) or ( ) imbalance > > > > > > #include <stdio.h> > > #include <stdlib.h> > > #include <regex.h> > > > > int main(int argc, char** argv) { > > > > int failed = 0; > > char buf[100]; > > regex_t rx; > > const char* testRE = > > "(^a1$)|(^a2$)|(^a3$)|(^a4$)|(^a5$)|(^a6$)|(^a7$)|(^a8$)|(^a9$)|(^a10$)"; > > int rc = regcomp(&rx, testRE, REG_EXTENDED | REG_NOSUB); > > if (rc) { > > regerror(rc, &rx, buf, sizeof(buf)); > > fprintf(stderr, "Invalid regular expression '%s' - (rc=%d) %s\n", > > testRE, rc, buf); > > failed = 1; > > } > > return failed; > > } > > > > Switching to BREs, doesn't help. Something probably didn't fit in 80 > bytes > > :-) > > Really sucks. > > > > Kirk Wolf > > Dovetailed Technologies > > http://dovetail.com > > > > PS> I can find no documented limit of "9" groups here: > > https://pubs.opengroup.org/onlinepubs/007904875/basedefs/xbd_chap09.html > > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to [email protected] with the message: INFO IBM-MAIN > ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
