Agnes,
very ugly as you need up to 21 "words", written for 4 words only.... and untested
regards
thomas
dimension paLen[4], paSql[4]
SELECT;
MAX(LEN(GETWORDNUM(TRIM(Cur2_1.cName),1,'.'))) ;
, MAX(LEN(GETWORDNUM(TRIM(Cur2_1.cName),2,'.'))) ;
, MAX(LEN(GETWORDNUM(TRIM(Cur2_1.cName),3,'.'))) ;
, MAX(LEN(GETWORDNUM(TRIM(Cur2_1.cName),4,'.'))) ;
FROM curSource AS Cur2_1;
into Array paLen
Select MyFunc(cName) as v1;
, paSql[2] as v2;
, paSql[3] as v3;
, paSql[4] as v4;
from FROM curSource ;
order by 1,2,3,4
function MyFunc(tcName)
local lnRun, lcWord
for lnRun = 1 to Alen(paLen)
lcWord = getWordNum(tcName, m.lnRun, ".")
paSql[m.lnRun] = icase( empty(m.lcWord), Space(2*paLen[m.lnRun]) ;
, IsDigit(Alltrim(m.lcWord)), Str(Val(m.lcWord), paLen[m.lnRun]) + Padr(StripLeftDigits(Alltrim(m.lcWord)), paLen[m.lnRun]) ;
, Replicate("x", PaLen[m.lnRun]) + Padr(m.lcWord, paLen[m.lnRun]) )
next
return paSql[1]
Function StripLeftDigits(tcWord)
local lnRun
for lnRun = 2 to len(m.tcWord)
if !isdigit(Substr(m.tcWord, m.lnRUn, 1))
exit
endif
next
return Stuff(m.tcWord, 1, m.lnRUn-1, "")