Brett,
I just noticed that myself. The first RETURN should be RETURN nvl(tcstring,'') -- Duh! , making it:
LPARAMETERS tcString
Local lcChar, lcString, lcXMLString, lnChar, lnNdx
IF isnull(m.tcString) OR EMPTY(RTRIM(m.tcString));
OR EMPTY(CHRTRAN(UPPER(m.tcString)," ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-',./?;:[]{}_=+)(*^%$#@!~",''))
RETURN nvl(m.tcstring,'')
ELSE
m.lcString = RTRIM(m.tcString)
m.lcString = STRTRAN(m.lcString, CHR(38), '&')
m.lcString = STRTRAN(m.lcString, '>', '>')
m.lcString = STRTRAN(m.lcString, '<', '<')
m.lcString = STRTRAN(m.lcString, '"', '"')
IF this.CodePage = 0
m.lcXMLString = ""
FOR m.lnNdx=1 TO LEN(m.lcString)
m.lcChar = SUBSTR(m.lcString, m.lnNdx, 1)
m.lnChar = ASC(m.lcChar)
m.lcXMLString = m.lcXMLString + ICASE(m.lnchar<32,'_x00'+STRCONV(m.lcChar ,15 )+'_',;
BETWEEN(m.lnChar,32, 128), m.lcChar,;
"&#" + TRANSFORM(m.lnChar) + ";")
ENDFOR
ELSE
m.lcXMLString = m.lcString
ENDIF
RETURN m.lcXMLString
↧