Jay,
From the top of my head - needs testing
lcFormat = 'W9N'
lcFieldLength = chrtran(chrtran(m.lcFormat,'1234567890',''),'1234567890','')
if not m.lcFieldLength ==""
FieldLength = val(m.lcFieldLength)
endif
lnPos = at(m.lcFieldLength, m.lcFormat)
if m.lnPos > 1
lcStartLetters = left(m.lcFormat, m.lnPos - 1)
endif
Take also the rest of the formatting option
Also I can not understand the code you posted. CHRTRAN() returns a character expression, but you treat it as numeric.
>I have the code below to handle numeric. I have similar CASEs to handle other types. But now I have this to parse:
>
>W9N
>
>Which means that the output must have a "W" for the first character, followed by 9 numeric values. How can I handle these types of things?
>
> CASE INLIST(FieldVal,'N')
> * Numeric
> FormatValue = 'N'
> FieldLength = CHRTRAN(FieldValue, FormatValue,'')
> FieldType = CHRTRAN(FieldValue, FieldLength,'')
> IF FieldLength = 0
> FieldLength = 100
> ENDIF
>
>
>>I think we may have one function, say, FormatValue with these parameters
>>
>>FormatValue(FormatVal, FieldValue)
>>
>>FormatVal is something like '9N'
>>and the FieldValue is the actual value of the field, e.g. SSN = "123456789"
>>
>>From 9N we get 9 and N so we know that we need to have 9 digits.
>>
>>Our case statements would only be for A, N, date formats and also for cases where we need to use particular first character, I guess.
>>
>>But I'm just thinking aloud, I'm not sure exactly if I'm thinking in the right direction or how easy it would be to implement.
>>
>>
>>>So quick and such a seemingly simple answer. It must be harder than that.
>>>
>>>Well, I see it is much more involved, but maybe I'm wrong. I don't understand your example. Could you use my sample and explain that further?
>>>
>>>Also, I would think that there must be case statements, etc., to handle the different scenarios. Should I have a case statement based on the fields, CASE tFieldName = 'SSN', etc. for each field, then parse accordingly?
>>>
If it's not broken, fix it until it is.
My Blog