I'm using 'GT.M V5.2-001 Linux x86' on Fedora Core 4 and doing, for example,
GTM>S XSTR="Dätwiler" W XSTR?1"Dä".E
gives this error:
%GTM-E-PATLIT, Illegal character or unbalanced quotes for pattern literal
S XSTR="Dätwiler" W XSTR?1"Dä".E
^-----
the problem is the "ä" (a umlaut) in the pattern '?1"Dä".E'. This works in MSM V4.4.1 (RC-1) (matches, but '?1U1L.E' doesn't (as a side note), which works in GT.M V5.2-001, including all other umlaut too. And in Caché V5.x).
so, what can I do to make '?1"Dä".E' etc working? UTF-8 is not really an option, because all characters (global data coming from / to an MSM-DB) are already stored well in the GT.M-DB using default "M-mode".
[I have pinned down the problem in the GT.M source of V5.3-003 to:
/sr_port/patstr.c:
if (!gtm_utf8_mode)
if (!IS_ASCII(curchar))
and /sr_port/mdef.h:
#define ASCII_MAX (unsigned char)0x7F
#define IS_ASCII(X) ((uint4)(X) <= ASCII_MAX)
and asking me, if the solution could be as easy as implementing "ASCII_MAX_FOR_PATTERN" / "IS_ASCII_FOR_PATTERN()"?!?]
kind regards
M. Marten
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'm using 'GT.M V5.2-001 Linux x86' on Fedora Core 4 and doing, for example,
GTM>S XSTR="Dätwiler" W XSTR?1"Dä".E
gives this error:
%GTM-E-PATLIT, Illegal character or unbalanced quotes for pattern literal
S XSTR="Dätwiler" W XSTR?1"Dä".E
^-----
the problem is the "ä" (a umlaut) in the pattern '?1"Dä".E'. This works in MSM V4.4.1 (RC-1) (matches, but '?1U1L.E' doesn't (as a side note), which works in GT.M V5.2-001, including all other umlaut too. And in Caché V5.x).
so, what can I do to make '?1"Dä".E' etc working? UTF-8 is not really an option, because all characters (global data coming from / to an MSM-DB) are already stored well in the GT.M-DB using default "M-mode".
[I have pinned down the problem in the GT.M source of V5.3-003 to:
/sr_port/patstr.c:
if (!gtm_utf8_mode)
if (!IS_ASCII(curchar))
and /sr_port/mdef.h:
#define ASCII_MAX (unsigned char)0x7F
#define IS_ASCII(X) ((uint4)(X) <= ASCII_MAX)
and asking me, if the solution could be as easy as implementing "ASCII_MAX_FOR_PATTERN" / "IS_ASCII_FOR_PATTERN()"?!?]
kind regards
M. Marten