#DEFINE TUPLOSTR 'èéêëÑÞìÔÕÑÑ×ÙØ'
#DEFINE THAIku '¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝßàáâãä'
#DEFINE THAItis '¡¢¤¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÇÈÉÊËÌÍÎÐÒÓàáâãäæÏØÙÔÕÖ×Ñçèéêëì'
#DEFINE BASESTR '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
#DEFINE BASESTR2 "$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
#DEFINE k_lv1TIS 'èéêëì'
#DEFINE k_lv2TIS 'ÔÕÖ×Ñíç'
#DEFINE k_lv3TIS ''
#DEFINE k_lv4TIs 'ØÙ'
#DEFINE k_lv1KU 'àáâãä'
#DEFINE k_lv2KU 'ÙÚÛÜÝÞß'
#DEFINE k_lv3KU ''
#DEFINE k_lv4KU '×Ø'
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiCode
* Called by...:
* Abstract....: Change KU/TIS character code
* Returns.....: TRUE
* Parameters..: pcStr
* plCode : DEFAULT TRUE KUcode
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiCode
PARAMETER pcStr, plKUcode
IF PARAMETERS() < 2
plKUcode = TRUE
ENDIF
RETURN IIF( plKUcode, CHRTRAN( pcStr, THAIku, THAItis ), ;
CHRTRAN( pcStr, THAItis, THAIku ) )
*EOF ThaiCode
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiStr
* Called by...: glabal
* Abstract....: Thai String true/false
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiStr
PARAMETERS pcStr
PRIVATE lnTuplo, l, c, llSuccess
llSuccess = FALSE
lnTuplo = LEN( TUPLOSTR )
FOR l=1 TO lnTuplo
c = SUBSTR( TUPLOSTR,l,1 )
IF !EMPTY(AT(c, pcStr))
llSuccess = TRUE
EXIT
ENDIF
ENDFOR &&* l=1 TO lnTuplo
RETURN llSuccess
*EOF ThaiStr
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiCode
* Called by...:
* Abstract....: Change KU/TIS character code
* Returns.....: TRUE
* Parameters..: pcStr
* plCode : DEFAULT TRUE KUcode
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiCode
PARAMETER pcStr, plKUcode
IF PARAMETERS() < 2
plKUcode = TRUE
ENDIF
RETURN IIF( plKUcode, CHRTRAN( pcStr, THAIku, THAItis ), ;
CHRTRAN( pcStr, THAItis, THAIku ) )
*EOF ThaiCode
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiStr
* Called by...: glabal
* Abstract....: Thai String true/false
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiStr
PARAMETERS pcStr
PRIVATE lnTuplo, l, c, llSuccess
llSuccess = FALSE
lnTuplo = LEN( TUPLOSTR )
FOR l=1 TO lnTuplo
c = SUBSTR( TUPLOSTR,l,1 )
IF !EMPTY(AT(c, pcStr))
llSuccess = TRUE
EXIT
ENDIF
ENDFOR &&* l=1 TO lnTuplo
RETURN llSuccess
*EOF ThaiStr
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Function....: ThaiCode
* Called by...:
* Abstract....: Change KU/TIS character code
* Returns.....: TRUE
* Parameters..: pcStr
* plCode : DEFAULT TRUE KUcode
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiCode
PARAMETER pcStr, plKUcode
IF PARAMETERS() < 2
plKUcode = TRUE
ENDIF
RETURN IIF( plKUcode, CHRTRAN( pcStr, THAIku, THAItis ), ;
CHRTRAN( pcStr, THAItis, THAIku ) )
*EOF ThaiCode
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiStr
* Called by...: glabal
* Abstract....: Thai String true/false
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiStr
PARAMETERS pcStr
PRIVATE lnTuplo, l, c, llSuccess
llSuccess = FALSE
lnTuplo = LEN( TUPLOSTR )
FOR l=1 TO lnTuplo
c = SUBSTR( TUPLOSTR,l,1 )
IF !EMPTY(AT(c, pcStr))
llSuccess = TRUE
EXIT
ENDIF
ENDFOR &&* l=1 TO lnTuplo
RETURN llSuccess
*EOF ThaiStr
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Called by...:
* Abstract....: Change KU/TIS character code
* Returns.....: TRUE
* Parameters..: pcStr
* plCode : DEFAULT TRUE KUcode
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiCode
PARAMETER pcStr, plKUcode
IF PARAMETERS() < 2
plKUcode = TRUE
ENDIF
RETURN IIF( plKUcode, CHRTRAN( pcStr, THAIku, THAItis ), ;
CHRTRAN( pcStr, THAItis, THAIku ) )
*EOF ThaiCode
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiStr
* Called by...: glabal
* Abstract....: Thai String true/false
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiStr
PARAMETERS pcStr
PRIVATE lnTuplo, l, c, llSuccess
llSuccess = FALSE
lnTuplo = LEN( TUPLOSTR )
FOR l=1 TO lnTuplo
c = SUBSTR( TUPLOSTR,l,1 )
IF !EMPTY(AT(c, pcStr))
llSuccess = TRUE
EXIT
ENDIF
ENDFOR &&* l=1 TO lnTuplo
RETURN llSuccess
*EOF ThaiStr
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Abstract....: Change KU/TIS character code
* Returns.....: TRUE
* Parameters..: pcStr
* plCode : DEFAULT TRUE KUcode
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiCode
PARAMETER pcStr, plKUcode
IF PARAMETERS() < 2
plKUcode = TRUE
ENDIF
RETURN IIF( plKUcode, CHRTRAN( pcStr, THAIku, THAItis ), ;
CHRTRAN( pcStr, THAItis, THAIku ) )
*EOF ThaiCode
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiStr
* Called by...: glabal
* Abstract....: Thai String true/false
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiStr
PARAMETERS pcStr
PRIVATE lnTuplo, l, c, llSuccess
llSuccess = FALSE
lnTuplo = LEN( TUPLOSTR )
FOR l=1 TO lnTuplo
c = SUBSTR( TUPLOSTR,l,1 )
IF !EMPTY(AT(c, pcStr))
llSuccess = TRUE
EXIT
ENDIF
ENDFOR &&* l=1 TO lnTuplo
RETURN llSuccess
*EOF ThaiStr
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Returns.....: TRUE
* Parameters..: pcStr
* plCode : DEFAULT TRUE KUcode
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiCode
PARAMETER pcStr, plKUcode
IF PARAMETERS() < 2
plKUcode = TRUE
ENDIF
RETURN IIF( plKUcode, CHRTRAN( pcStr, THAIku, THAItis ), ;
CHRTRAN( pcStr, THAItis, THAIku ) )
*EOF ThaiCode
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiStr
* Called by...: glabal
* Abstract....: Thai String true/false
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiStr
PARAMETERS pcStr
PRIVATE lnTuplo, l, c, llSuccess
llSuccess = FALSE
lnTuplo = LEN( TUPLOSTR )
FOR l=1 TO lnTuplo
c = SUBSTR( TUPLOSTR,l,1 )
IF !EMPTY(AT(c, pcStr))
llSuccess = TRUE
EXIT
ENDIF
ENDFOR &&* l=1 TO lnTuplo
RETURN llSuccess
*EOF ThaiStr
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Parameters..: pcStr
* plCode : DEFAULT TRUE KUcode
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiCode
PARAMETER pcStr, plKUcode
IF PARAMETERS() < 2
plKUcode = TRUE
ENDIF
RETURN IIF( plKUcode, CHRTRAN( pcStr, THAIku, THAItis ), ;
CHRTRAN( pcStr, THAItis, THAIku ) )
*EOF ThaiCode
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiStr
* Called by...: glabal
* Abstract....: Thai String true/false
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiStr
PARAMETERS pcStr
PRIVATE lnTuplo, l, c, llSuccess
llSuccess = FALSE
lnTuplo = LEN( TUPLOSTR )
FOR l=1 TO lnTuplo
c = SUBSTR( TUPLOSTR,l,1 )
IF !EMPTY(AT(c, pcStr))
llSuccess = TRUE
EXIT
ENDIF
ENDFOR &&* l=1 TO lnTuplo
RETURN llSuccess
*EOF ThaiStr
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* plCode : DEFAULT TRUE KUcode
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiCode
PARAMETER pcStr, plKUcode
IF PARAMETERS() < 2
plKUcode = TRUE
ENDIF
RETURN IIF( plKUcode, CHRTRAN( pcStr, THAIku, THAItis ), ;
CHRTRAN( pcStr, THAItis, THAIku ) )
*EOF ThaiCode
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiStr
* Called by...: glabal
* Abstract....: Thai String true/false
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiStr
PARAMETERS pcStr
PRIVATE lnTuplo, l, c, llSuccess
llSuccess = FALSE
lnTuplo = LEN( TUPLOSTR )
FOR l=1 TO lnTuplo
c = SUBSTR( TUPLOSTR,l,1 )
IF !EMPTY(AT(c, pcStr))
llSuccess = TRUE
EXIT
ENDIF
ENDFOR &&* l=1 TO lnTuplo
RETURN llSuccess
*EOF ThaiStr
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiCode
PARAMETER pcStr, plKUcode
IF PARAMETERS() < 2
plKUcode = TRUE
ENDIF
RETURN IIF( plKUcode, CHRTRAN( pcStr, THAIku, THAItis ), ;
CHRTRAN( pcStr, THAItis, THAIku ) )
*EOF ThaiCode
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiStr
* Called by...: glabal
* Abstract....: Thai String true/false
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiStr
PARAMETERS pcStr
PRIVATE lnTuplo, l, c, llSuccess
llSuccess = FALSE
lnTuplo = LEN( TUPLOSTR )
FOR l=1 TO lnTuplo
c = SUBSTR( TUPLOSTR,l,1 )
IF !EMPTY(AT(c, pcStr))
llSuccess = TRUE
EXIT
ENDIF
ENDFOR &&* l=1 TO lnTuplo
RETURN llSuccess
*EOF ThaiStr
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiCode
PARAMETER pcStr, plKUcode
IF PARAMETERS() < 2
plKUcode = TRUE
ENDIF
RETURN IIF( plKUcode, CHRTRAN( pcStr, THAIku, THAItis ), ;
CHRTRAN( pcStr, THAItis, THAIku ) )
*EOF ThaiCode
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiStr
* Called by...: glabal
* Abstract....: Thai String true/false
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiStr
PARAMETERS pcStr
PRIVATE lnTuplo, l, c, llSuccess
llSuccess = FALSE
lnTuplo = LEN( TUPLOSTR )
FOR l=1 TO lnTuplo
c = SUBSTR( TUPLOSTR,l,1 )
IF !EMPTY(AT(c, pcStr))
llSuccess = TRUE
EXIT
ENDIF
ENDFOR &&* l=1 TO lnTuplo
RETURN llSuccess
*EOF ThaiStr
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*EOF ThaiCode
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiStr
* Called by...: glabal
* Abstract....: Thai String true/false
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiStr
PARAMETERS pcStr
PRIVATE lnTuplo, l, c, llSuccess
llSuccess = FALSE
lnTuplo = LEN( TUPLOSTR )
FOR l=1 TO lnTuplo
c = SUBSTR( TUPLOSTR,l,1 )
IF !EMPTY(AT(c, pcStr))
llSuccess = TRUE
EXIT
ENDIF
ENDFOR &&* l=1 TO lnTuplo
RETURN llSuccess
*EOF ThaiStr
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiStr
* Called by...: glabal
* Abstract....: Thai String true/false
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiStr
PARAMETERS pcStr
PRIVATE lnTuplo, l, c, llSuccess
llSuccess = FALSE
lnTuplo = LEN( TUPLOSTR )
FOR l=1 TO lnTuplo
c = SUBSTR( TUPLOSTR,l,1 )
IF !EMPTY(AT(c, pcStr))
llSuccess = TRUE
EXIT
ENDIF
ENDFOR &&* l=1 TO lnTuplo
RETURN llSuccess
*EOF ThaiStr
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Function....: ThaiStr
* Called by...: glabal
* Abstract....: Thai String true/false
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiStr
PARAMETERS pcStr
PRIVATE lnTuplo, l, c, llSuccess
llSuccess = FALSE
lnTuplo = LEN( TUPLOSTR )
FOR l=1 TO lnTuplo
c = SUBSTR( TUPLOSTR,l,1 )
IF !EMPTY(AT(c, pcStr))
llSuccess = TRUE
EXIT
ENDIF
ENDFOR &&* l=1 TO lnTuplo
RETURN llSuccess
*EOF ThaiStr
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Called by...: glabal
* Abstract....: Thai String true/false
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiStr
PARAMETERS pcStr
PRIVATE lnTuplo, l, c, llSuccess
llSuccess = FALSE
lnTuplo = LEN( TUPLOSTR )
FOR l=1 TO lnTuplo
c = SUBSTR( TUPLOSTR,l,1 )
IF !EMPTY(AT(c, pcStr))
llSuccess = TRUE
EXIT
ENDIF
ENDFOR &&* l=1 TO lnTuplo
RETURN llSuccess
*EOF ThaiStr
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Abstract....: Thai String true/false
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiStr
PARAMETERS pcStr
PRIVATE lnTuplo, l, c, llSuccess
llSuccess = FALSE
lnTuplo = LEN( TUPLOSTR )
FOR l=1 TO lnTuplo
c = SUBSTR( TUPLOSTR,l,1 )
IF !EMPTY(AT(c, pcStr))
llSuccess = TRUE
EXIT
ENDIF
ENDFOR &&* l=1 TO lnTuplo
RETURN llSuccess
*EOF ThaiStr
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiStr
PARAMETERS pcStr
PRIVATE lnTuplo, l, c, llSuccess
llSuccess = FALSE
lnTuplo = LEN( TUPLOSTR )
FOR l=1 TO lnTuplo
c = SUBSTR( TUPLOSTR,l,1 )
IF !EMPTY(AT(c, pcStr))
llSuccess = TRUE
EXIT
ENDIF
ENDFOR &&* l=1 TO lnTuplo
RETURN llSuccess
*EOF ThaiStr
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiStr
PARAMETERS pcStr
PRIVATE lnTuplo, l, c, llSuccess
llSuccess = FALSE
lnTuplo = LEN( TUPLOSTR )
FOR l=1 TO lnTuplo
c = SUBSTR( TUPLOSTR,l,1 )
IF !EMPTY(AT(c, pcStr))
llSuccess = TRUE
EXIT
ENDIF
ENDFOR &&* l=1 TO lnTuplo
RETURN llSuccess
*EOF ThaiStr
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiStr
PARAMETERS pcStr
PRIVATE lnTuplo, l, c, llSuccess
llSuccess = FALSE
lnTuplo = LEN( TUPLOSTR )
FOR l=1 TO lnTuplo
c = SUBSTR( TUPLOSTR,l,1 )
IF !EMPTY(AT(c, pcStr))
llSuccess = TRUE
EXIT
ENDIF
ENDFOR &&* l=1 TO lnTuplo
RETURN llSuccess
*EOF ThaiStr
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiStr
PARAMETERS pcStr
PRIVATE lnTuplo, l, c, llSuccess
llSuccess = FALSE
lnTuplo = LEN( TUPLOSTR )
FOR l=1 TO lnTuplo
c = SUBSTR( TUPLOSTR,l,1 )
IF !EMPTY(AT(c, pcStr))
llSuccess = TRUE
EXIT
ENDIF
ENDFOR &&* l=1 TO lnTuplo
RETURN llSuccess
*EOF ThaiStr
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*EOF ThaiStr
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Function....: Numthai
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Called by...: global
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Abstract....: thai character of number
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION Numthai( pnBaht )
LOCAL lcBaht1, lcBaht2
DIMENSION laNum[9], laDigit[6]
laNum[1] = '˹Öè§'
laNum[2] = 'Êͧ'
laNum[3] = 'ÊÒÁ'
laNum[4] = 'ÊÕè'
laNum[5] = 'ËéÒ'
laNum[6] = 'Ë¡'
laNum[7] = 'à¨ç´'
laNum[8] = 'á»´'
laNum[9] = 'à¡éÒ'
laDigit[6] = ''
laDigit[5] = 'ÊÔº'
laDigit[4] = 'ÃéÍÂ'
laDigit[3] = '¾Ñ¹'
laDigit[2] = 'ËÁ×è¹'
laDigit[1] = 'áʹ'
lcBaht1 = STR(pnBaht,15,2)
lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
+'ÅéÒ¹', '')
lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'ºÒ·'
lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '¶éǹ', NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + 'ʵҧ¤ì' )
RETURN lcBaht2
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*EOF Numthai
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Function....: NumLet2
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Called by...: Numthai
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Abstract....: calculate thai character
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Returns.....: lcStr
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION NumLet2( pcStr )
LOCAL lcStr, l
lcStr = ""
FOR l=1 TO 6
lnDigit = VAL(SUBSTR(pcStr,l,1))
DO CASE
CASE lnDigit = 0
CASE l = 5 AND lnDigit = 2
lcStr = lcStr + "ÂÕè" + laDigit[l]
CASE l = 5 AND lnDigit = 1
lcStr = lcStr + laDigit[l]
CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
lcStr = lcStr + "àÍç´"
OTHERWISE
lcStr = lcStr + laNum[lnDigit] + laDigit[l]
ENDCASE
ENDFOR
RETURN lcStr
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*EOF NumLet2
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Procedure...: Thai3lev
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Called by...:
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Abstract....: Ê觼šÒþÔÁ¾ìÊÙèà¤Ã×èͧ¾ÔÁ¾ì´éÇÂÃËÑÊà¡ÉµÃ
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Parameters..: pcStr ¢éͤÇÒÁ¡è͹á»Å§
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* TH_1 ¢éͤÇÒÁÃдѺ·Õè 1
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* TH_2 ¢éͤÇÒÁÃдѺ·Õè 2
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* TH_3 ¢éͤÇÒÁÃдѺ·Õè 3
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* plThaiCode à»ç¹à¡ÉµÃËÃ×ÍÊÁÍ ( TRUE à¡ÉµÃ , FALSE ÊÁÍ.)
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Notes.......: µéͧ define µÑÇá»Ã Th_1, Th_2, Th_3 äÇé¡è͹
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
PROCEDURE Thai3lev( pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
LOCAL lnLevel, lcChar, l, lcVowel0, lcVowel1, k
DIMENSION laLevel[4], laThChr[3]
laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
*********
IF !plThaiCode
***** KU code *****
lcVowel0 = "12345"
lcVowel1 = "238243247251234230"
pcStr = ThaiCode(pcStr,FALSE)
laThChr[1] = k_lv1KU
laThChr[2] = k_lv2KU
laThChr[3] = k_lv4KU
*******************
ELSE
***** TIS code *****
lcVowel0 = "12345"
lcVowel1 = "150155219251251"
laThChr[1] = k_lv1TIS
laThChr[2] = k_lv2TIS
laThChr[3] = k_lv4TIS
*******************
ENDIF
lnTrim = LEN(TRIM(pcStr))
lnNewLen = 0
FOR l=1 TO lnTrim
lnLevel = 0
lcChar = SUBSTR( pcStr, l, 1)
FOR k=1 TO 3
IF lcChar $ laThChr[k]
lnLevel = k
EXIT
ENDIF
ENDFOR &&* k=1 TO 3
DO CASE
CASE lnLevel = 0
lnLevel = 3
lnNewLen = lnNewLen + 1
CASE lnLevel = 3
lnLevel = 4
ENDCASE
laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
ENDFOR
FOR l=1 TO lnNewLen
lcChar1 = SUBSTR( laLevel[1], l, 1)
IF lcChar1 # " "
lcChar2 = SUBSTR( laLevel[2], l, 1)
IF lcChar2 = " "
laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
ELSE
x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
x2 = VAL( SUBSTR( lcVowel0, AT(lcChar1,laThChr[1])-1 , 1) )
laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
ENDIF
ENDIF
ENDFOR
TH_1 = laLevel(2)
TH_2 = laLevel(3)
TH_3 = laLevel(4)
RETURN
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*EOP Thai3lev
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Function....: ThaiPADC
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Called by...: global
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Abstract....: ¨Ñ´µÑÇ˹ѧÊ×Í¡ÅÒ§¢éͤÇÒÁ
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiPADC( pcStr, lnLen )
RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
SPACE(INT((lnLen-LEN(pcStr))/2))
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*EOF TPADC
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Function....: ThaiLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Called by...: global
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Abstract....: length of Thai string
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Returns.....:
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Parameters..:
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
* Notes.......:
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
FUNCTION ThaiLen( pcStr )
RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
*EOF TLen
*EOF TLen