ผู้เขียน หัวข้อ: ฝากให้พี่ สุชัย  (อ่าน 7695 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

doramon

  • บุคคลทั่วไป
ฝากให้พี่ สุชัย
« เมื่อ: สิงหาคม 27, 2006, 08:47:29 AM »
0
ฝากให้พี่ สุชัย
1. songkhla2hosxp.zip
2. convert.zip    แปลงข้อมูลจาก .dbf เก่า ( KU --> TIS )  ไม่เช่นนั้น vfp รุ่นใหม่อ่านไม่ออก
จากนั้น บันทึก ไฟล์ opd.dbf ---- >  opd.dbf  , opd1.dbf  ไม่แน่ใจ   ใช้ทดสอบดูครับ
« แก้ไขครั้งสุดท้าย: สิงหาคม 28, 2006, 08:00:06 AM โดย doramon(saiyok) »

doramon

  • บุคคลทั่วไป
Re: ฝากให้พี่ สุชัย
« ตอบกลับ #1 เมื่อ: สิงหาคม 28, 2006, 05:33:56 AM »
0
พี่สุชัย ครับ ฝาก copy ดาตาเบสทั้งหมดของ
รพ สทิงพระ สงขลา มาด้วยครับ
จะได้ทำอันอื่นเพิ่ม  ( อนาคต อาจจะใช้หมด  ;D )

doramon

  • บุคคลทั่วไป
Re: ฝากให้พี่ สุชัย
« ตอบกลับ #2 เมื่อ: สิงหาคม 28, 2006, 08:14:06 AM »
0
พูดถึงรหัสภาษาไทยนั้น มีเยอะแยะเลย เช่น รหัส เกษตร, รหัส สมอ.988 / 2532, รหัส สมอ.ทั่วไป
สมอ.สหวิริยา, รหัส สมอ.สหวิริยาเก่า, รหัส สมอ.IBM

ที่นิยมใช้มากที่สุดคือ รหัสเกษตร และ รหัส สมอ. (อันที่จริง ไม่ควรเรียกว่า สมอ. ควรเรียกว่า รหัส มอก
เนื่องจากว่า รหัส สมอ. ที่เรียกกันนั้น ถูกกำหนดโดย สำนักงานมาตรฐานอุตสาหกรรม แต่ชื่อจริงๆ นั้นคือ
มอก.620 และที่รู้จักกันว่า TIS-620 นั้นเอง (ที TIS ล่ะเรียกถูก))

ปกติแล้วตัวอักษรจะจัดเก็บโดย ASCII 128 ตัวอักขระ + control
แต่ว่าภาษาไทยนั้นจะเก็บในส่วนที่เรียกว่า Extended ASCII code อีก 128 ตัว
ซึ่งในส่วนนี้จะประกอบไปด้วย ตัวอักษร พยัญชนะ รวมไปถึงตัวอักษรที่ใช้สำรับทำเส้นต่างๆ กรอบ ตาราง
เงา ฯลฯ

ตามความเข้าใจของผมนั้น ความแตกต่างอยู่ที่ส่วนนี้ครับ ตำแหน่งการจัดเก็บตัวอักษรนั้นไม่เหมือนกัน
ดังนั้นเวลาเราพิมพ์รหัสเกษตร ไปยังเครื่องพิมพ์ที่ตั้งค่าเป็น รหัส มอก.(สมอ.) จะดูไม่รู้เรื่อง เนื่องจากตารางจัดเก็บอักขระที่อยู่ในเครื่อง printer นั้นไม่ตรงกับรหัสที่เราสั่งพิมพ์
มอก.620-2533 (TIS-620

doramon

  • บุคคลทั่วไป
Re: ฝากให้พี่ สุชัย
« ตอบกลับ #3 เมื่อ: สิงหาคม 28, 2006, 08:19:22 AM »
0
unsigned char ku2std[]={
      0x098,0x099,0x09a,0x09b,0x096,0x095,0x093,0x092,
      0x090,0x091,0x08f,0x020,0x020,0x020,0x020,0x020,
      0x0f0,0x0f1,0x0f2,0x0f3,0x0f4,0x0f5,0x0f6,0x0f7,
      0x0f8,0x0f9,0x0a3,0x0a5,0x020,0x020,0x020,0x020,
      0x0a0,0x0a1,0x0a2,0x0a4,0x0a6,0x0a7,0x0a8,0x0a9,
      0x0aa,0x0ab,0x0ac,0x0ad,0x0ae,0x0af,0x0b0,0x0b1,
      0x0b2,0x0b3,0x0b4,0x0b5,0x0b6,0x0b7,0x0b8,0x0b9,
      0x0ba,0x0bb,0x0bc,0x0bd,0x0be,0x0bf,0x0c0,0x0c1,
      0x0c2,0x0c3,0x0c4,0x0c5,0x0c7,0x0c8,0x0c9,0x0ca,
      0x0cb,0x0cc,0x0cd,0x0ce,0x0d0,0x0c6,0x0d2,0x0d3,
      0x0e0,0x0e1,0x0e2,0x0e3,0x0e4,0x0e6,0x0cf,0x0d8,
      0x0d9,0x0d4,0x0d5,0x0d6,0x0d7,0x0d1,0x0ed,0x0e7,
      0x0e8,0x0e9,0x0ea,0x0eb,0x0ec,0x0da,0x080,0x081,
      0x082,0x083,0x084,0x085,0x086,0x087,0x088,0x089,
      0x08a,0x08b,0x08c,0x08d,0x08e,0x09e,0x09f,0x0df,
      0x020,0x020,0x0ee,0x0ef,0x0fa,0x0fb,0x0fe,0x0ff };
-----------------------------------------------------------------------------------------
out = (in>=128) ? ku2std[in-128] : in;

doramon

  • บุคคลทั่วไป
Re: ฝากให้พี่ สุชัย
« ตอบกลับ #4 เมื่อ: สิงหาคม 28, 2006, 09:18:59 AM »
0
โค๊ด: Visual Fox Pro
  1. #DEFINE TUPLOSTR     'èéêëÑÞìÔÕÑÑ×ÙØ'
  2. #DEFINE THAIku                  '¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝßàáâãä'
  3. #DEFINE THAItis         '¡¢¤¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÇÈÉÊËÌÍÎÐÒÓàáâãäæÏØÙÔÕÖ×Ñçèéêëì'
  4. #DEFINE BASESTR         '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  5. #DEFINE BASESTR2        "$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€&#8218;&#402;&#8222;…&#8224;&#8225;&#710;&#8240;&#352;&#8249;&#338;&#381;‘’“”•–—&#732;&#8482;&#353;&#8250;&#339;&#382;&#376; &iexcl;&cent;&pound;&curren;&yen;&brvbar;&sect;&uml;&copy;&ordf;&laquo;&not;&shy;&reg;&macr;&deg;&plusmn;&sup2;&sup3;&acute;&micro;&para;&middot;&cedil;&sup1;&ordm;&raquo;&frac14;&frac12;&frac34;&iquest;&Agrave;&Aacute;&Acirc;&Atilde;&Auml;&Aring;&AElig;&Ccedil;&Egrave;&Eacute;&Ecirc;&Euml;&Igrave;&Iacute;&Icirc;&Iuml;&ETH;&Ntilde;&Ograve;&Oacute;&Ocirc;&Otilde;&Ouml;&times;&Oslash;&Ugrave;&Uacute;&Ucirc;&Uuml;&Yacute;&THORN;&szlig;&agrave;&aacute;&acirc;&atilde;&auml;&aring;&aelig;&ccedil;&egrave;&eacute;&ecirc;&euml;&igrave;&iacute;&icirc;&iuml;&eth;&ntilde;&ograve;&oacute;&ocirc;&otilde;&ouml;&divide;&oslash;&ugrave;&uacute;&ucirc;&uuml;&yacute;&thorn;&yuml;"
  6. #DEFINE k_lv1TIS        '&egrave;&eacute;&ecirc;&euml;&igrave;'
  7. #DEFINE k_lv2TIS        '&Ocirc;&Otilde;&Ouml;&times;&Ntilde;&iacute;&ccedil;'
  8. #DEFINE k_lv3TIS        ''
  9. #DEFINE k_lv4TIs        '&Oslash;&Ugrave;'
  10.  
  11. #DEFINE k_lv1KU '&agrave;&aacute;&acirc;&atilde;&auml;'
  12. #DEFINE k_lv2KU '&Ugrave;&Uacute;&Ucirc;&Uuml;&Yacute;&THORN;&szlig;'
  13. #DEFINE k_lv3KU ''
  14. #DEFINE k_lv4KU '&times;&Oslash;'
  15. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  16. * Function....: ThaiCode
  17. * Called by...:
  18. * Abstract....: Change KU/TIS character code
  19. * Returns.....: TRUE
  20. * Parameters..: pcStr
  21. *                                        plCode : DEFAULT TRUE KUcode
  22. * Notes.......:
  23. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  24. FUNCTION ThaiCode
  25.         PARAMETER pcStr, plKUcode
  26.         IF PARAMETERS() < 2
  27.                 plKUcode = TRUE
  28.         ENDIF
  29. RETURN IIF( plKUcode, CHRTRAN( pcStr, THAIku, THAItis ), ;
  30.                                 CHRTRAN( pcStr, THAItis, THAIku ) )
  31. *EOF ThaiCode
  32.  
  33. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  34. * Function....: ThaiStr
  35. * Called by...: glabal
  36. * Abstract....: Thai String true/false
  37. * Returns.....:
  38. * Parameters..:
  39. * Notes.......:
  40. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  41. FUNCTION ThaiStr
  42.         PARAMETERS pcStr
  43.         PRIVATE lnTuplo, l, c, llSuccess
  44.         llSuccess = FALSE
  45.         lnTuplo = LEN( TUPLOSTR )
  46.         FOR l=1 TO lnTuplo
  47.            c = SUBSTR( TUPLOSTR,l,1 )
  48.            IF !EMPTY(AT(c, pcStr))
  49.                 llSuccess = TRUE
  50.                 EXIT
  51.            ENDIF
  52.         ENDFOR &&* l=1 TO lnTuplo
  53.        
  54. RETURN llSuccess
  55. *EOF ThaiStr
  56.  
  57. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  58. * Function....: Numthai
  59. * Called by...: global
  60. * Abstract....: thai character of number
  61. * Returns.....:
  62. * Parameters..:
  63. * Notes.......:
  64. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  65. FUNCTION Numthai( pnBaht )
  66.        
  67. LOCAL lcBaht1, lcBaht2
  68.        
  69. DIMENSION laNum[9], laDigit[6]
  70.  
  71.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  72.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  73.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  74.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  75.         laNum[5] = '&Euml;&eacute;&Ograve;'
  76.         laNum[6] = '&Euml;&iexcl;'
  77.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  78.         laNum[8] = '&aacute;&raquo;&acute;'
  79.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  80.        
  81.         laDigit[6] = ''
  82.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  83.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  84.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  85.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  86.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  87.        
  88.         lcBaht1 = STR(pnBaht,15,2)
  89.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  90.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  91.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  92.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  93.        
  94. RETURN lcBaht2
  95. *EOF Numthai
  96.  
  97. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  98. * Function....: NumLet2
  99. * Called by...: Numthai
  100. * Abstract....: calculate thai character
  101. * Returns.....: lcStr
  102. * Parameters..:
  103. * Notes.......:
  104. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  105. FUNCTION NumLet2(  pcStr )
  106.  
  107. LOCAL lcStr, l
  108. lcStr = ""
  109. FOR l=1 TO 6
  110.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  111.         DO CASE
  112.         CASE lnDigit = 0
  113.         CASE l = 5 AND lnDigit = 2
  114.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  115.         CASE l = 5 AND lnDigit = 1
  116.                         lcStr = lcStr + laDigit[l]
  117.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  118.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  119.         OTHERWISE
  120.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  121.         ENDCASE
  122. ENDFOR
  123. RETURN lcStr
  124. *EOF NumLet2
  125.  
  126. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  127. * Procedure...: Thai3lev
  128. * Called by...:
  129. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  130. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  131. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  132. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  133. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  134. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  135. *
  136. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  137. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  138. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  139.        
  140.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  141.        
  142.         DIMENSION laLevel[4], laThChr[3]
  143.        
  144.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  145.         *********      
  146.         IF !plThaiCode
  147.         ***** KU code *****
  148.                  lcVowel0 = "12345"
  149.                  lcVowel1 = "238243247251234230"
  150.  
  151.                 pcStr   = ThaiCode(pcStr,FALSE)        
  152.                
  153.                 laThChr[1] = k_lv1KU
  154.                 laThChr[2] = k_lv2KU
  155.                 laThChr[3] = k_lv4KU
  156.                
  157.         *******************
  158.         ELSE
  159.         ***** TIS code *****
  160.                 lcVowel0 = "12345"
  161.                 lcVowel1 = "150155219251251"
  162.  
  163.                 laThChr[1] = k_lv1TIS
  164.                 laThChr[2] = k_lv2TIS
  165.                 laThChr[3] = k_lv4TIS
  166.  
  167.         *******************
  168.         ENDIF
  169.        
  170.  
  171.         lnTrim  = LEN(TRIM(pcStr))
  172.         lnNewLen = 0
  173.        
  174.         FOR l=1 TO lnTrim
  175.                 lnLevel = 0
  176.                 lcChar = SUBSTR( pcStr, l, 1)
  177.                 FOR k=1 TO 3
  178.                    IF lcChar $ laThChr[k]
  179.                         lnLevel = k
  180.                         EXIT
  181.                    ENDIF
  182.                 ENDFOR &&* k=1 TO 3
  183.                 DO CASE
  184.                 CASE lnLevel = 0
  185.                         lnLevel = 3
  186.                         lnNewLen = lnNewLen + 1
  187.                 CASE lnLevel = 3
  188.                         lnLevel = 4
  189.                 ENDCASE
  190.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  191.         ENDFOR
  192.        
  193.         FOR l=1 TO lnNewLen
  194.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  195.                 IF lcChar1 # " "
  196.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  197.                         IF lcChar2 = " "
  198.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  199.                         ELSE
  200.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  201.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  202.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  203.                         ENDIF
  204.                 ENDIF
  205.         ENDFOR
  206.        
  207.         TH_1 = laLevel(2)
  208.         TH_2 = laLevel(3)
  209.         TH_3 = laLevel(4)
  210.  
  211. RETURN
  212. *EOP Thai3lev
  213.  
  214. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  215. * Function....: ThaiPADC
  216. * Called by...: global
  217. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  218. * Returns.....:
  219. * Parameters..:
  220. * Notes.......:
  221. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  222. FUNCTION ThaiPADC( pcStr, lnLen )
  223. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  224.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  225. *EOF TPADC
  226.  
  227. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  228. * Function....: ThaiLen
  229. * Called by...: global
  230. * Abstract....: length of Thai string
  231. * Returns.....:
  232. * Parameters..:
  233. * Notes.......:
  234. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  235. FUNCTION ThaiLen(  pcStr )
  236. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  237. *EOF TLen
  238. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  239. * Function....: ThaiCode
  240. * Called by...:
  241. * Abstract....: Change KU/TIS character code
  242. * Returns.....: TRUE
  243. * Parameters..: pcStr
  244. *                                        plCode : DEFAULT TRUE KUcode
  245. * Notes.......:
  246. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  247. FUNCTION ThaiCode
  248.         PARAMETER pcStr, plKUcode
  249.         IF PARAMETERS() < 2
  250.                 plKUcode = TRUE
  251.         ENDIF
  252. RETURN IIF( plKUcode, CHRTRAN( pcStr, THAIku, THAItis ), ;
  253.                                 CHRTRAN( pcStr, THAItis, THAIku ) )
  254. *EOF ThaiCode
  255.  
  256. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  257. * Function....: ThaiStr
  258. * Called by...: glabal
  259. * Abstract....: Thai String true/false
  260. * Returns.....:
  261. * Parameters..:
  262. * Notes.......:
  263. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  264. FUNCTION ThaiStr
  265.         PARAMETERS pcStr
  266.         PRIVATE lnTuplo, l, c, llSuccess
  267.         llSuccess = FALSE
  268.         lnTuplo = LEN( TUPLOSTR )
  269.         FOR l=1 TO lnTuplo
  270.            c = SUBSTR( TUPLOSTR,l,1 )
  271.            IF !EMPTY(AT(c, pcStr))
  272.                 llSuccess = TRUE
  273.                 EXIT
  274.            ENDIF
  275.         ENDFOR &&* l=1 TO lnTuplo
  276.        
  277. RETURN llSuccess
  278. *EOF ThaiStr
  279.  
  280. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  281. * Function....: Numthai
  282. * Called by...: global
  283. * Abstract....: thai character of number
  284. * Returns.....:
  285. * Parameters..:
  286. * Notes.......:
  287. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  288. FUNCTION Numthai( pnBaht )
  289.        
  290. LOCAL lcBaht1, lcBaht2
  291.        
  292. DIMENSION laNum[9], laDigit[6]
  293.  
  294.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  295.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  296.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  297.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  298.         laNum[5] = '&Euml;&eacute;&Ograve;'
  299.         laNum[6] = '&Euml;&iexcl;'
  300.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  301.         laNum[8] = '&aacute;&raquo;&acute;'
  302.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  303.        
  304.         laDigit[6] = ''
  305.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  306.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  307.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  308.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  309.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  310.        
  311.         lcBaht1 = STR(pnBaht,15,2)
  312.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  313.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  314.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  315.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  316.        
  317. RETURN lcBaht2
  318. *EOF Numthai
  319.  
  320. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  321. * Function....: NumLet2
  322. * Called by...: Numthai
  323. * Abstract....: calculate thai character
  324. * Returns.....: lcStr
  325. * Parameters..:
  326. * Notes.......:
  327. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  328. FUNCTION NumLet2(  pcStr )
  329.  
  330. LOCAL lcStr, l
  331. lcStr = ""
  332. FOR l=1 TO 6
  333.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  334.         DO CASE
  335.         CASE lnDigit = 0
  336.         CASE l = 5 AND lnDigit = 2
  337.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  338.         CASE l = 5 AND lnDigit = 1
  339.                         lcStr = lcStr + laDigit[l]
  340.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  341.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  342.         OTHERWISE
  343.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  344.         ENDCASE
  345. ENDFOR
  346. RETURN lcStr
  347. *EOF NumLet2
  348.  
  349. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  350. * Procedure...: Thai3lev
  351. * Called by...:
  352. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  353. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  354. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  355. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  356. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  357. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  358. *
  359. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  360. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  361. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  362.        
  363.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  364.        
  365.         DIMENSION laLevel[4], laThChr[3]
  366.        
  367.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  368.         *********      
  369.         IF !plThaiCode
  370.         ***** KU code *****
  371.                  lcVowel0 = "12345"
  372.                  lcVowel1 = "238243247251234230"
  373.  
  374.                 pcStr   = ThaiCode(pcStr,FALSE)        
  375.                
  376.                 laThChr[1] = k_lv1KU
  377.                 laThChr[2] = k_lv2KU
  378.                 laThChr[3] = k_lv4KU
  379.                
  380.         *******************
  381.         ELSE
  382.         ***** TIS code *****
  383.                 lcVowel0 = "12345"
  384.                 lcVowel1 = "150155219251251"
  385.  
  386.                 laThChr[1] = k_lv1TIS
  387.                 laThChr[2] = k_lv2TIS
  388.                 laThChr[3] = k_lv4TIS
  389.  
  390.         *******************
  391.         ENDIF
  392.        
  393.  
  394.         lnTrim  = LEN(TRIM(pcStr))
  395.         lnNewLen = 0
  396.        
  397.         FOR l=1 TO lnTrim
  398.                 lnLevel = 0
  399.                 lcChar = SUBSTR( pcStr, l, 1)
  400.                 FOR k=1 TO 3
  401.                    IF lcChar $ laThChr[k]
  402.                         lnLevel = k
  403.                         EXIT
  404.                    ENDIF
  405.                 ENDFOR &&* k=1 TO 3
  406.                 DO CASE
  407.                 CASE lnLevel = 0
  408.                         lnLevel = 3
  409.                         lnNewLen = lnNewLen + 1
  410.                 CASE lnLevel = 3
  411.                         lnLevel = 4
  412.                 ENDCASE
  413.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  414.         ENDFOR
  415.        
  416.         FOR l=1 TO lnNewLen
  417.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  418.                 IF lcChar1 # " "
  419.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  420.                         IF lcChar2 = " "
  421.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  422.                         ELSE
  423.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  424.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  425.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  426.                         ENDIF
  427.                 ENDIF
  428.         ENDFOR
  429.        
  430.         TH_1 = laLevel(2)
  431.         TH_2 = laLevel(3)
  432.         TH_3 = laLevel(4)
  433.  
  434. RETURN
  435. *EOP Thai3lev
  436.  
  437. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  438. * Function....: ThaiPADC
  439. * Called by...: global
  440. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  441. * Returns.....:
  442. * Parameters..:
  443. * Notes.......:
  444. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  445. FUNCTION ThaiPADC( pcStr, lnLen )
  446. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  447.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  448. *EOF TPADC
  449.  
  450. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  451. * Function....: ThaiLen
  452. * Called by...: global
  453. * Abstract....: length of Thai string
  454. * Returns.....:
  455. * Parameters..:
  456. * Notes.......:
  457. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  458. FUNCTION ThaiLen(  pcStr )
  459. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  460. *EOF TLen
  461. * Function....: ThaiCode
  462. * Called by...:
  463. * Abstract....: Change KU/TIS character code
  464. * Returns.....: TRUE
  465. * Parameters..: pcStr
  466. *                                        plCode : DEFAULT TRUE KUcode
  467. * Notes.......:
  468. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  469. FUNCTION ThaiCode
  470.         PARAMETER pcStr, plKUcode
  471.         IF PARAMETERS() < 2
  472.                 plKUcode = TRUE
  473.         ENDIF
  474. RETURN IIF( plKUcode, CHRTRAN( pcStr, THAIku, THAItis ), ;
  475.                                 CHRTRAN( pcStr, THAItis, THAIku ) )
  476. *EOF ThaiCode
  477.  
  478. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  479. * Function....: ThaiStr
  480. * Called by...: glabal
  481. * Abstract....: Thai String true/false
  482. * Returns.....:
  483. * Parameters..:
  484. * Notes.......:
  485. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  486. FUNCTION ThaiStr
  487.         PARAMETERS pcStr
  488.         PRIVATE lnTuplo, l, c, llSuccess
  489.         llSuccess = FALSE
  490.         lnTuplo = LEN( TUPLOSTR )
  491.         FOR l=1 TO lnTuplo
  492.            c = SUBSTR( TUPLOSTR,l,1 )
  493.            IF !EMPTY(AT(c, pcStr))
  494.                 llSuccess = TRUE
  495.                 EXIT
  496.            ENDIF
  497.         ENDFOR &&* l=1 TO lnTuplo
  498.        
  499. RETURN llSuccess
  500. *EOF ThaiStr
  501.  
  502. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  503. * Function....: Numthai
  504. * Called by...: global
  505. * Abstract....: thai character of number
  506. * Returns.....:
  507. * Parameters..:
  508. * Notes.......:
  509. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  510. FUNCTION Numthai( pnBaht )
  511.        
  512. LOCAL lcBaht1, lcBaht2
  513.        
  514. DIMENSION laNum[9], laDigit[6]
  515.  
  516.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  517.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  518.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  519.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  520.         laNum[5] = '&Euml;&eacute;&Ograve;'
  521.         laNum[6] = '&Euml;&iexcl;'
  522.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  523.         laNum[8] = '&aacute;&raquo;&acute;'
  524.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  525.        
  526.         laDigit[6] = ''
  527.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  528.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  529.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  530.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  531.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  532.        
  533.         lcBaht1 = STR(pnBaht,15,2)
  534.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  535.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  536.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  537.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  538.        
  539. RETURN lcBaht2
  540. *EOF Numthai
  541.  
  542. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  543. * Function....: NumLet2
  544. * Called by...: Numthai
  545. * Abstract....: calculate thai character
  546. * Returns.....: lcStr
  547. * Parameters..:
  548. * Notes.......:
  549. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  550. FUNCTION NumLet2(  pcStr )
  551.  
  552. LOCAL lcStr, l
  553. lcStr = ""
  554. FOR l=1 TO 6
  555.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  556.         DO CASE
  557.         CASE lnDigit = 0
  558.         CASE l = 5 AND lnDigit = 2
  559.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  560.         CASE l = 5 AND lnDigit = 1
  561.                         lcStr = lcStr + laDigit[l]
  562.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  563.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  564.         OTHERWISE
  565.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  566.         ENDCASE
  567. ENDFOR
  568. RETURN lcStr
  569. *EOF NumLet2
  570.  
  571. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  572. * Procedure...: Thai3lev
  573. * Called by...:
  574. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  575. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  576. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  577. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  578. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  579. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  580. *
  581. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  582. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  583. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  584.        
  585.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  586.        
  587.         DIMENSION laLevel[4], laThChr[3]
  588.        
  589.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  590.         *********      
  591.         IF !plThaiCode
  592.         ***** KU code *****
  593.                  lcVowel0 = "12345"
  594.                  lcVowel1 = "238243247251234230"
  595.  
  596.                 pcStr   = ThaiCode(pcStr,FALSE)        
  597.                
  598.                 laThChr[1] = k_lv1KU
  599.                 laThChr[2] = k_lv2KU
  600.                 laThChr[3] = k_lv4KU
  601.                
  602.         *******************
  603.         ELSE
  604.         ***** TIS code *****
  605.                 lcVowel0 = "12345"
  606.                 lcVowel1 = "150155219251251"
  607.  
  608.                 laThChr[1] = k_lv1TIS
  609.                 laThChr[2] = k_lv2TIS
  610.                 laThChr[3] = k_lv4TIS
  611.  
  612.         *******************
  613.         ENDIF
  614.        
  615.  
  616.         lnTrim  = LEN(TRIM(pcStr))
  617.         lnNewLen = 0
  618.        
  619.         FOR l=1 TO lnTrim
  620.                 lnLevel = 0
  621.                 lcChar = SUBSTR( pcStr, l, 1)
  622.                 FOR k=1 TO 3
  623.                    IF lcChar $ laThChr[k]
  624.                         lnLevel = k
  625.                         EXIT
  626.                    ENDIF
  627.                 ENDFOR &&* k=1 TO 3
  628.                 DO CASE
  629.                 CASE lnLevel = 0
  630.                         lnLevel = 3
  631.                         lnNewLen = lnNewLen + 1
  632.                 CASE lnLevel = 3
  633.                         lnLevel = 4
  634.                 ENDCASE
  635.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  636.         ENDFOR
  637.        
  638.         FOR l=1 TO lnNewLen
  639.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  640.                 IF lcChar1 # " "
  641.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  642.                         IF lcChar2 = " "
  643.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  644.                         ELSE
  645.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  646.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  647.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  648.                         ENDIF
  649.                 ENDIF
  650.         ENDFOR
  651.        
  652.         TH_1 = laLevel(2)
  653.         TH_2 = laLevel(3)
  654.         TH_3 = laLevel(4)
  655.  
  656. RETURN
  657. *EOP Thai3lev
  658.  
  659. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  660. * Function....: ThaiPADC
  661. * Called by...: global
  662. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  663. * Returns.....:
  664. * Parameters..:
  665. * Notes.......:
  666. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  667. FUNCTION ThaiPADC( pcStr, lnLen )
  668. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  669.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  670. *EOF TPADC
  671.  
  672. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  673. * Function....: ThaiLen
  674. * Called by...: global
  675. * Abstract....: length of Thai string
  676. * Returns.....:
  677. * Parameters..:
  678. * Notes.......:
  679. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  680. FUNCTION ThaiLen(  pcStr )
  681. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  682. *EOF TLen
  683. * Called by...:
  684. * Abstract....: Change KU/TIS character code
  685. * Returns.....: TRUE
  686. * Parameters..: pcStr
  687. *                                        plCode : DEFAULT TRUE KUcode
  688. * Notes.......:
  689. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  690. FUNCTION ThaiCode
  691.         PARAMETER pcStr, plKUcode
  692.         IF PARAMETERS() < 2
  693.                 plKUcode = TRUE
  694.         ENDIF
  695. RETURN IIF( plKUcode, CHRTRAN( pcStr, THAIku, THAItis ), ;
  696.                                 CHRTRAN( pcStr, THAItis, THAIku ) )
  697. *EOF ThaiCode
  698.  
  699. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  700. * Function....: ThaiStr
  701. * Called by...: glabal
  702. * Abstract....: Thai String true/false
  703. * Returns.....:
  704. * Parameters..:
  705. * Notes.......:
  706. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  707. FUNCTION ThaiStr
  708.         PARAMETERS pcStr
  709.         PRIVATE lnTuplo, l, c, llSuccess
  710.         llSuccess = FALSE
  711.         lnTuplo = LEN( TUPLOSTR )
  712.         FOR l=1 TO lnTuplo
  713.            c = SUBSTR( TUPLOSTR,l,1 )
  714.            IF !EMPTY(AT(c, pcStr))
  715.                 llSuccess = TRUE
  716.                 EXIT
  717.            ENDIF
  718.         ENDFOR &&* l=1 TO lnTuplo
  719.        
  720. RETURN llSuccess
  721. *EOF ThaiStr
  722.  
  723. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  724. * Function....: Numthai
  725. * Called by...: global
  726. * Abstract....: thai character of number
  727. * Returns.....:
  728. * Parameters..:
  729. * Notes.......:
  730. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  731. FUNCTION Numthai( pnBaht )
  732.        
  733. LOCAL lcBaht1, lcBaht2
  734.        
  735. DIMENSION laNum[9], laDigit[6]
  736.  
  737.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  738.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  739.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  740.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  741.         laNum[5] = '&Euml;&eacute;&Ograve;'
  742.         laNum[6] = '&Euml;&iexcl;'
  743.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  744.         laNum[8] = '&aacute;&raquo;&acute;'
  745.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  746.        
  747.         laDigit[6] = ''
  748.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  749.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  750.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  751.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  752.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  753.        
  754.         lcBaht1 = STR(pnBaht,15,2)
  755.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  756.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  757.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  758.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  759.        
  760. RETURN lcBaht2
  761. *EOF Numthai
  762.  
  763. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  764. * Function....: NumLet2
  765. * Called by...: Numthai
  766. * Abstract....: calculate thai character
  767. * Returns.....: lcStr
  768. * Parameters..:
  769. * Notes.......:
  770. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  771. FUNCTION NumLet2(  pcStr )
  772.  
  773. LOCAL lcStr, l
  774. lcStr = ""
  775. FOR l=1 TO 6
  776.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  777.         DO CASE
  778.         CASE lnDigit = 0
  779.         CASE l = 5 AND lnDigit = 2
  780.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  781.         CASE l = 5 AND lnDigit = 1
  782.                         lcStr = lcStr + laDigit[l]
  783.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  784.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  785.         OTHERWISE
  786.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  787.         ENDCASE
  788. ENDFOR
  789. RETURN lcStr
  790. *EOF NumLet2
  791.  
  792. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  793. * Procedure...: Thai3lev
  794. * Called by...:
  795. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  796. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  797. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  798. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  799. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  800. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  801. *
  802. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  803. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  804. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  805.        
  806.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  807.        
  808.         DIMENSION laLevel[4], laThChr[3]
  809.        
  810.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  811.         *********      
  812.         IF !plThaiCode
  813.         ***** KU code *****
  814.                  lcVowel0 = "12345"
  815.                  lcVowel1 = "238243247251234230"
  816.  
  817.                 pcStr   = ThaiCode(pcStr,FALSE)        
  818.                
  819.                 laThChr[1] = k_lv1KU
  820.                 laThChr[2] = k_lv2KU
  821.                 laThChr[3] = k_lv4KU
  822.                
  823.         *******************
  824.         ELSE
  825.         ***** TIS code *****
  826.                 lcVowel0 = "12345"
  827.                 lcVowel1 = "150155219251251"
  828.  
  829.                 laThChr[1] = k_lv1TIS
  830.                 laThChr[2] = k_lv2TIS
  831.                 laThChr[3] = k_lv4TIS
  832.  
  833.         *******************
  834.         ENDIF
  835.        
  836.  
  837.         lnTrim  = LEN(TRIM(pcStr))
  838.         lnNewLen = 0
  839.        
  840.         FOR l=1 TO lnTrim
  841.                 lnLevel = 0
  842.                 lcChar = SUBSTR( pcStr, l, 1)
  843.                 FOR k=1 TO 3
  844.                    IF lcChar $ laThChr[k]
  845.                         lnLevel = k
  846.                         EXIT
  847.                    ENDIF
  848.                 ENDFOR &&* k=1 TO 3
  849.                 DO CASE
  850.                 CASE lnLevel = 0
  851.                         lnLevel = 3
  852.                         lnNewLen = lnNewLen + 1
  853.                 CASE lnLevel = 3
  854.                         lnLevel = 4
  855.                 ENDCASE
  856.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  857.         ENDFOR
  858.        
  859.         FOR l=1 TO lnNewLen
  860.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  861.                 IF lcChar1 # " "
  862.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  863.                         IF lcChar2 = " "
  864.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  865.                         ELSE
  866.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  867.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  868.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  869.                         ENDIF
  870.                 ENDIF
  871.         ENDFOR
  872.        
  873.         TH_1 = laLevel(2)
  874.         TH_2 = laLevel(3)
  875.         TH_3 = laLevel(4)
  876.  
  877. RETURN
  878. *EOP Thai3lev
  879.  
  880. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  881. * Function....: ThaiPADC
  882. * Called by...: global
  883. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  884. * Returns.....:
  885. * Parameters..:
  886. * Notes.......:
  887. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  888. FUNCTION ThaiPADC( pcStr, lnLen )
  889. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  890.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  891. *EOF TPADC
  892.  
  893. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  894. * Function....: ThaiLen
  895. * Called by...: global
  896. * Abstract....: length of Thai string
  897. * Returns.....:
  898. * Parameters..:
  899. * Notes.......:
  900. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  901. FUNCTION ThaiLen(  pcStr )
  902. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  903. *EOF TLen
  904. * Abstract....: Change KU/TIS character code
  905. * Returns.....: TRUE
  906. * Parameters..: pcStr
  907. *                                        plCode : DEFAULT TRUE KUcode
  908. * Notes.......:
  909. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  910. FUNCTION ThaiCode
  911.         PARAMETER pcStr, plKUcode
  912.         IF PARAMETERS() < 2
  913.                 plKUcode = TRUE
  914.         ENDIF
  915. RETURN IIF( plKUcode, CHRTRAN( pcStr, THAIku, THAItis ), ;
  916.                                 CHRTRAN( pcStr, THAItis, THAIku ) )
  917. *EOF ThaiCode
  918.  
  919. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  920. * Function....: ThaiStr
  921. * Called by...: glabal
  922. * Abstract....: Thai String true/false
  923. * Returns.....:
  924. * Parameters..:
  925. * Notes.......:
  926. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  927. FUNCTION ThaiStr
  928.         PARAMETERS pcStr
  929.         PRIVATE lnTuplo, l, c, llSuccess
  930.         llSuccess = FALSE
  931.         lnTuplo = LEN( TUPLOSTR )
  932.         FOR l=1 TO lnTuplo
  933.            c = SUBSTR( TUPLOSTR,l,1 )
  934.            IF !EMPTY(AT(c, pcStr))
  935.                 llSuccess = TRUE
  936.                 EXIT
  937.            ENDIF
  938.         ENDFOR &&* l=1 TO lnTuplo
  939.        
  940. RETURN llSuccess
  941. *EOF ThaiStr
  942.  
  943. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  944. * Function....: Numthai
  945. * Called by...: global
  946. * Abstract....: thai character of number
  947. * Returns.....:
  948. * Parameters..:
  949. * Notes.......:
  950. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  951. FUNCTION Numthai( pnBaht )
  952.        
  953. LOCAL lcBaht1, lcBaht2
  954.        
  955. DIMENSION laNum[9], laDigit[6]
  956.  
  957.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  958.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  959.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  960.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  961.         laNum[5] = '&Euml;&eacute;&Ograve;'
  962.         laNum[6] = '&Euml;&iexcl;'
  963.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  964.         laNum[8] = '&aacute;&raquo;&acute;'
  965.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  966.        
  967.         laDigit[6] = ''
  968.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  969.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  970.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  971.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  972.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  973.        
  974.         lcBaht1 = STR(pnBaht,15,2)
  975.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  976.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  977.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  978.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  979.        
  980. RETURN lcBaht2
  981. *EOF Numthai
  982.  
  983. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  984. * Function....: NumLet2
  985. * Called by...: Numthai
  986. * Abstract....: calculate thai character
  987. * Returns.....: lcStr
  988. * Parameters..:
  989. * Notes.......:
  990. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  991. FUNCTION NumLet2(  pcStr )
  992.  
  993. LOCAL lcStr, l
  994. lcStr = ""
  995. FOR l=1 TO 6
  996.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  997.         DO CASE
  998.         CASE lnDigit = 0
  999.         CASE l = 5 AND lnDigit = 2
  1000.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  1001.         CASE l = 5 AND lnDigit = 1
  1002.                         lcStr = lcStr + laDigit[l]
  1003.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  1004.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  1005.         OTHERWISE
  1006.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  1007.         ENDCASE
  1008. ENDFOR
  1009. RETURN lcStr
  1010. *EOF NumLet2
  1011.  
  1012. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1013. * Procedure...: Thai3lev
  1014. * Called by...:
  1015. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  1016. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  1017. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  1018. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  1019. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  1020. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  1021. *
  1022. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  1023. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1024. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  1025.        
  1026.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  1027.        
  1028.         DIMENSION laLevel[4], laThChr[3]
  1029.        
  1030.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  1031.         *********      
  1032.         IF !plThaiCode
  1033.         ***** KU code *****
  1034.                  lcVowel0 = "12345"
  1035.                  lcVowel1 = "238243247251234230"
  1036.  
  1037.                 pcStr   = ThaiCode(pcStr,FALSE)        
  1038.                
  1039.                 laThChr[1] = k_lv1KU
  1040.                 laThChr[2] = k_lv2KU
  1041.                 laThChr[3] = k_lv4KU
  1042.                
  1043.         *******************
  1044.         ELSE
  1045.         ***** TIS code *****
  1046.                 lcVowel0 = "12345"
  1047.                 lcVowel1 = "150155219251251"
  1048.  
  1049.                 laThChr[1] = k_lv1TIS
  1050.                 laThChr[2] = k_lv2TIS
  1051.                 laThChr[3] = k_lv4TIS
  1052.  
  1053.         *******************
  1054.         ENDIF
  1055.        
  1056.  
  1057.         lnTrim  = LEN(TRIM(pcStr))
  1058.         lnNewLen = 0
  1059.        
  1060.         FOR l=1 TO lnTrim
  1061.                 lnLevel = 0
  1062.                 lcChar = SUBSTR( pcStr, l, 1)
  1063.                 FOR k=1 TO 3
  1064.                    IF lcChar $ laThChr[k]
  1065.                         lnLevel = k
  1066.                         EXIT
  1067.                    ENDIF
  1068.                 ENDFOR &&* k=1 TO 3
  1069.                 DO CASE
  1070.                 CASE lnLevel = 0
  1071.                         lnLevel = 3
  1072.                         lnNewLen = lnNewLen + 1
  1073.                 CASE lnLevel = 3
  1074.                         lnLevel = 4
  1075.                 ENDCASE
  1076.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  1077.         ENDFOR
  1078.        
  1079.         FOR l=1 TO lnNewLen
  1080.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  1081.                 IF lcChar1 # " "
  1082.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  1083.                         IF lcChar2 = " "
  1084.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  1085.                         ELSE
  1086.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  1087.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  1088.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  1089.                         ENDIF
  1090.                 ENDIF
  1091.         ENDFOR
  1092.        
  1093.         TH_1 = laLevel(2)
  1094.         TH_2 = laLevel(3)
  1095.         TH_3 = laLevel(4)
  1096.  
  1097. RETURN
  1098. *EOP Thai3lev
  1099.  
  1100. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1101. * Function....: ThaiPADC
  1102. * Called by...: global
  1103. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  1104. * Returns.....:
  1105. * Parameters..:
  1106. * Notes.......:
  1107. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1108. FUNCTION ThaiPADC( pcStr, lnLen )
  1109. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  1110.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  1111. *EOF TPADC
  1112.  
  1113. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1114. * Function....: ThaiLen
  1115. * Called by...: global
  1116. * Abstract....: length of Thai string
  1117. * Returns.....:
  1118. * Parameters..:
  1119. * Notes.......:
  1120. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1121. FUNCTION ThaiLen(  pcStr )
  1122. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  1123. *EOF TLen
  1124. * Returns.....: TRUE
  1125. * Parameters..: pcStr
  1126. *                                        plCode : DEFAULT TRUE KUcode
  1127. * Notes.......:
  1128. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1129. FUNCTION ThaiCode
  1130.         PARAMETER pcStr, plKUcode
  1131.         IF PARAMETERS() < 2
  1132.                 plKUcode = TRUE
  1133.         ENDIF
  1134. RETURN IIF( plKUcode, CHRTRAN( pcStr, THAIku, THAItis ), ;
  1135.                                 CHRTRAN( pcStr, THAItis, THAIku ) )
  1136. *EOF ThaiCode
  1137.  
  1138. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1139. * Function....: ThaiStr
  1140. * Called by...: glabal
  1141. * Abstract....: Thai String true/false
  1142. * Returns.....:
  1143. * Parameters..:
  1144. * Notes.......:
  1145. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1146. FUNCTION ThaiStr
  1147.         PARAMETERS pcStr
  1148.         PRIVATE lnTuplo, l, c, llSuccess
  1149.         llSuccess = FALSE
  1150.         lnTuplo = LEN( TUPLOSTR )
  1151.         FOR l=1 TO lnTuplo
  1152.            c = SUBSTR( TUPLOSTR,l,1 )
  1153.            IF !EMPTY(AT(c, pcStr))
  1154.                 llSuccess = TRUE
  1155.                 EXIT
  1156.            ENDIF
  1157.         ENDFOR &&* l=1 TO lnTuplo
  1158.        
  1159. RETURN llSuccess
  1160. *EOF ThaiStr
  1161.  
  1162. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1163. * Function....: Numthai
  1164. * Called by...: global
  1165. * Abstract....: thai character of number
  1166. * Returns.....:
  1167. * Parameters..:
  1168. * Notes.......:
  1169. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1170. FUNCTION Numthai( pnBaht )
  1171.        
  1172. LOCAL lcBaht1, lcBaht2
  1173.        
  1174. DIMENSION laNum[9], laDigit[6]
  1175.  
  1176.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  1177.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  1178.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  1179.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  1180.         laNum[5] = '&Euml;&eacute;&Ograve;'
  1181.         laNum[6] = '&Euml;&iexcl;'
  1182.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  1183.         laNum[8] = '&aacute;&raquo;&acute;'
  1184.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  1185.        
  1186.         laDigit[6] = ''
  1187.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  1188.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  1189.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  1190.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  1191.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  1192.        
  1193.         lcBaht1 = STR(pnBaht,15,2)
  1194.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  1195.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  1196.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  1197.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  1198.        
  1199. RETURN lcBaht2
  1200. *EOF Numthai
  1201.  
  1202. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1203. * Function....: NumLet2
  1204. * Called by...: Numthai
  1205. * Abstract....: calculate thai character
  1206. * Returns.....: lcStr
  1207. * Parameters..:
  1208. * Notes.......:
  1209. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1210. FUNCTION NumLet2(  pcStr )
  1211.  
  1212. LOCAL lcStr, l
  1213. lcStr = ""
  1214. FOR l=1 TO 6
  1215.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  1216.         DO CASE
  1217.         CASE lnDigit = 0
  1218.         CASE l = 5 AND lnDigit = 2
  1219.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  1220.         CASE l = 5 AND lnDigit = 1
  1221.                         lcStr = lcStr + laDigit[l]
  1222.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  1223.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  1224.         OTHERWISE
  1225.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  1226.         ENDCASE
  1227. ENDFOR
  1228. RETURN lcStr
  1229. *EOF NumLet2
  1230.  
  1231. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1232. * Procedure...: Thai3lev
  1233. * Called by...:
  1234. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  1235. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  1236. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  1237. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  1238. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  1239. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  1240. *
  1241. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  1242. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1243. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  1244.        
  1245.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  1246.        
  1247.         DIMENSION laLevel[4], laThChr[3]
  1248.        
  1249.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  1250.         *********      
  1251.         IF !plThaiCode
  1252.         ***** KU code *****
  1253.                  lcVowel0 = "12345"
  1254.                  lcVowel1 = "238243247251234230"
  1255.  
  1256.                 pcStr   = ThaiCode(pcStr,FALSE)        
  1257.                
  1258.                 laThChr[1] = k_lv1KU
  1259.                 laThChr[2] = k_lv2KU
  1260.                 laThChr[3] = k_lv4KU
  1261.                
  1262.         *******************
  1263.         ELSE
  1264.         ***** TIS code *****
  1265.                 lcVowel0 = "12345"
  1266.                 lcVowel1 = "150155219251251"
  1267.  
  1268.                 laThChr[1] = k_lv1TIS
  1269.                 laThChr[2] = k_lv2TIS
  1270.                 laThChr[3] = k_lv4TIS
  1271.  
  1272.         *******************
  1273.         ENDIF
  1274.        
  1275.  
  1276.         lnTrim  = LEN(TRIM(pcStr))
  1277.         lnNewLen = 0
  1278.        
  1279.         FOR l=1 TO lnTrim
  1280.                 lnLevel = 0
  1281.                 lcChar = SUBSTR( pcStr, l, 1)
  1282.                 FOR k=1 TO 3
  1283.                    IF lcChar $ laThChr[k]
  1284.                         lnLevel = k
  1285.                         EXIT
  1286.                    ENDIF
  1287.                 ENDFOR &&* k=1 TO 3
  1288.                 DO CASE
  1289.                 CASE lnLevel = 0
  1290.                         lnLevel = 3
  1291.                         lnNewLen = lnNewLen + 1
  1292.                 CASE lnLevel = 3
  1293.                         lnLevel = 4
  1294.                 ENDCASE
  1295.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  1296.         ENDFOR
  1297.        
  1298.         FOR l=1 TO lnNewLen
  1299.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  1300.                 IF lcChar1 # " "
  1301.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  1302.                         IF lcChar2 = " "
  1303.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  1304.                         ELSE
  1305.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  1306.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  1307.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  1308.                         ENDIF
  1309.                 ENDIF
  1310.         ENDFOR
  1311.        
  1312.         TH_1 = laLevel(2)
  1313.         TH_2 = laLevel(3)
  1314.         TH_3 = laLevel(4)
  1315.  
  1316. RETURN
  1317. *EOP Thai3lev
  1318.  
  1319. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1320. * Function....: ThaiPADC
  1321. * Called by...: global
  1322. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  1323. * Returns.....:
  1324. * Parameters..:
  1325. * Notes.......:
  1326. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1327. FUNCTION ThaiPADC( pcStr, lnLen )
  1328. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  1329.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  1330. *EOF TPADC
  1331.  
  1332. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1333. * Function....: ThaiLen
  1334. * Called by...: global
  1335. * Abstract....: length of Thai string
  1336. * Returns.....:
  1337. * Parameters..:
  1338. * Notes.......:
  1339. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1340. FUNCTION ThaiLen(  pcStr )
  1341. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  1342. *EOF TLen
  1343. * Parameters..: pcStr
  1344. *                                        plCode : DEFAULT TRUE KUcode
  1345. * Notes.......:
  1346. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1347. FUNCTION ThaiCode
  1348.         PARAMETER pcStr, plKUcode
  1349.         IF PARAMETERS() < 2
  1350.                 plKUcode = TRUE
  1351.         ENDIF
  1352. RETURN IIF( plKUcode, CHRTRAN( pcStr, THAIku, THAItis ), ;
  1353.                                 CHRTRAN( pcStr, THAItis, THAIku ) )
  1354. *EOF ThaiCode
  1355.  
  1356. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1357. * Function....: ThaiStr
  1358. * Called by...: glabal
  1359. * Abstract....: Thai String true/false
  1360. * Returns.....:
  1361. * Parameters..:
  1362. * Notes.......:
  1363. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1364. FUNCTION ThaiStr
  1365.         PARAMETERS pcStr
  1366.         PRIVATE lnTuplo, l, c, llSuccess
  1367.         llSuccess = FALSE
  1368.         lnTuplo = LEN( TUPLOSTR )
  1369.         FOR l=1 TO lnTuplo
  1370.            c = SUBSTR( TUPLOSTR,l,1 )
  1371.            IF !EMPTY(AT(c, pcStr))
  1372.                 llSuccess = TRUE
  1373.                 EXIT
  1374.            ENDIF
  1375.         ENDFOR &&* l=1 TO lnTuplo
  1376.        
  1377. RETURN llSuccess
  1378. *EOF ThaiStr
  1379.  
  1380. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1381. * Function....: Numthai
  1382. * Called by...: global
  1383. * Abstract....: thai character of number
  1384. * Returns.....:
  1385. * Parameters..:
  1386. * Notes.......:
  1387. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1388. FUNCTION Numthai( pnBaht )
  1389.        
  1390. LOCAL lcBaht1, lcBaht2
  1391.        
  1392. DIMENSION laNum[9], laDigit[6]
  1393.  
  1394.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  1395.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  1396.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  1397.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  1398.         laNum[5] = '&Euml;&eacute;&Ograve;'
  1399.         laNum[6] = '&Euml;&iexcl;'
  1400.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  1401.         laNum[8] = '&aacute;&raquo;&acute;'
  1402.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  1403.        
  1404.         laDigit[6] = ''
  1405.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  1406.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  1407.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  1408.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  1409.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  1410.        
  1411.         lcBaht1 = STR(pnBaht,15,2)
  1412.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  1413.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  1414.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  1415.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  1416.        
  1417. RETURN lcBaht2
  1418. *EOF Numthai
  1419.  
  1420. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1421. * Function....: NumLet2
  1422. * Called by...: Numthai
  1423. * Abstract....: calculate thai character
  1424. * Returns.....: lcStr
  1425. * Parameters..:
  1426. * Notes.......:
  1427. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1428. FUNCTION NumLet2(  pcStr )
  1429.  
  1430. LOCAL lcStr, l
  1431. lcStr = ""
  1432. FOR l=1 TO 6
  1433.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  1434.         DO CASE
  1435.         CASE lnDigit = 0
  1436.         CASE l = 5 AND lnDigit = 2
  1437.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  1438.         CASE l = 5 AND lnDigit = 1
  1439.                         lcStr = lcStr + laDigit[l]
  1440.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  1441.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  1442.         OTHERWISE
  1443.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  1444.         ENDCASE
  1445. ENDFOR
  1446. RETURN lcStr
  1447. *EOF NumLet2
  1448.  
  1449. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1450. * Procedure...: Thai3lev
  1451. * Called by...:
  1452. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  1453. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  1454. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  1455. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  1456. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  1457. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  1458. *
  1459. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  1460. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1461. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  1462.        
  1463.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  1464.        
  1465.         DIMENSION laLevel[4], laThChr[3]
  1466.        
  1467.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  1468.         *********      
  1469.         IF !plThaiCode
  1470.         ***** KU code *****
  1471.                  lcVowel0 = "12345"
  1472.                  lcVowel1 = "238243247251234230"
  1473.  
  1474.                 pcStr   = ThaiCode(pcStr,FALSE)        
  1475.                
  1476.                 laThChr[1] = k_lv1KU
  1477.                 laThChr[2] = k_lv2KU
  1478.                 laThChr[3] = k_lv4KU
  1479.                
  1480.         *******************
  1481.         ELSE
  1482.         ***** TIS code *****
  1483.                 lcVowel0 = "12345"
  1484.                 lcVowel1 = "150155219251251"
  1485.  
  1486.                 laThChr[1] = k_lv1TIS
  1487.                 laThChr[2] = k_lv2TIS
  1488.                 laThChr[3] = k_lv4TIS
  1489.  
  1490.         *******************
  1491.         ENDIF
  1492.        
  1493.  
  1494.         lnTrim  = LEN(TRIM(pcStr))
  1495.         lnNewLen = 0
  1496.        
  1497.         FOR l=1 TO lnTrim
  1498.                 lnLevel = 0
  1499.                 lcChar = SUBSTR( pcStr, l, 1)
  1500.                 FOR k=1 TO 3
  1501.                    IF lcChar $ laThChr[k]
  1502.                         lnLevel = k
  1503.                         EXIT
  1504.                    ENDIF
  1505.                 ENDFOR &&* k=1 TO 3
  1506.                 DO CASE
  1507.                 CASE lnLevel = 0
  1508.                         lnLevel = 3
  1509.                         lnNewLen = lnNewLen + 1
  1510.                 CASE lnLevel = 3
  1511.                         lnLevel = 4
  1512.                 ENDCASE
  1513.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  1514.         ENDFOR
  1515.        
  1516.         FOR l=1 TO lnNewLen
  1517.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  1518.                 IF lcChar1 # " "
  1519.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  1520.                         IF lcChar2 = " "
  1521.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  1522.                         ELSE
  1523.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  1524.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  1525.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  1526.                         ENDIF
  1527.                 ENDIF
  1528.         ENDFOR
  1529.        
  1530.         TH_1 = laLevel(2)
  1531.         TH_2 = laLevel(3)
  1532.         TH_3 = laLevel(4)
  1533.  
  1534. RETURN
  1535. *EOP Thai3lev
  1536.  
  1537. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1538. * Function....: ThaiPADC
  1539. * Called by...: global
  1540. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  1541. * Returns.....:
  1542. * Parameters..:
  1543. * Notes.......:
  1544. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1545. FUNCTION ThaiPADC( pcStr, lnLen )
  1546. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  1547.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  1548. *EOF TPADC
  1549.  
  1550. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1551. * Function....: ThaiLen
  1552. * Called by...: global
  1553. * Abstract....: length of Thai string
  1554. * Returns.....:
  1555. * Parameters..:
  1556. * Notes.......:
  1557. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1558. FUNCTION ThaiLen(  pcStr )
  1559. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  1560. *EOF TLen
  1561. *                                        plCode : DEFAULT TRUE KUcode
  1562. * Notes.......:
  1563. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1564. FUNCTION ThaiCode
  1565.         PARAMETER pcStr, plKUcode
  1566.         IF PARAMETERS() < 2
  1567.                 plKUcode = TRUE
  1568.         ENDIF
  1569. RETURN IIF( plKUcode, CHRTRAN( pcStr, THAIku, THAItis ), ;
  1570.                                 CHRTRAN( pcStr, THAItis, THAIku ) )
  1571. *EOF ThaiCode
  1572.  
  1573. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1574. * Function....: ThaiStr
  1575. * Called by...: glabal
  1576. * Abstract....: Thai String true/false
  1577. * Returns.....:
  1578. * Parameters..:
  1579. * Notes.......:
  1580. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1581. FUNCTION ThaiStr
  1582.         PARAMETERS pcStr
  1583.         PRIVATE lnTuplo, l, c, llSuccess
  1584.         llSuccess = FALSE
  1585.         lnTuplo = LEN( TUPLOSTR )
  1586.         FOR l=1 TO lnTuplo
  1587.            c = SUBSTR( TUPLOSTR,l,1 )
  1588.            IF !EMPTY(AT(c, pcStr))
  1589.                 llSuccess = TRUE
  1590.                 EXIT
  1591.            ENDIF
  1592.         ENDFOR &&* l=1 TO lnTuplo
  1593.        
  1594. RETURN llSuccess
  1595. *EOF ThaiStr
  1596.  
  1597. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1598. * Function....: Numthai
  1599. * Called by...: global
  1600. * Abstract....: thai character of number
  1601. * Returns.....:
  1602. * Parameters..:
  1603. * Notes.......:
  1604. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1605. FUNCTION Numthai( pnBaht )
  1606.        
  1607. LOCAL lcBaht1, lcBaht2
  1608.        
  1609. DIMENSION laNum[9], laDigit[6]
  1610.  
  1611.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  1612.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  1613.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  1614.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  1615.         laNum[5] = '&Euml;&eacute;&Ograve;'
  1616.         laNum[6] = '&Euml;&iexcl;'
  1617.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  1618.         laNum[8] = '&aacute;&raquo;&acute;'
  1619.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  1620.        
  1621.         laDigit[6] = ''
  1622.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  1623.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  1624.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  1625.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  1626.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  1627.        
  1628.         lcBaht1 = STR(pnBaht,15,2)
  1629.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  1630.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  1631.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  1632.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  1633.        
  1634. RETURN lcBaht2
  1635. *EOF Numthai
  1636.  
  1637. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1638. * Function....: NumLet2
  1639. * Called by...: Numthai
  1640. * Abstract....: calculate thai character
  1641. * Returns.....: lcStr
  1642. * Parameters..:
  1643. * Notes.......:
  1644. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1645. FUNCTION NumLet2(  pcStr )
  1646.  
  1647. LOCAL lcStr, l
  1648. lcStr = ""
  1649. FOR l=1 TO 6
  1650.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  1651.         DO CASE
  1652.         CASE lnDigit = 0
  1653.         CASE l = 5 AND lnDigit = 2
  1654.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  1655.         CASE l = 5 AND lnDigit = 1
  1656.                         lcStr = lcStr + laDigit[l]
  1657.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  1658.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  1659.         OTHERWISE
  1660.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  1661.         ENDCASE
  1662. ENDFOR
  1663. RETURN lcStr
  1664. *EOF NumLet2
  1665.  
  1666. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1667. * Procedure...: Thai3lev
  1668. * Called by...:
  1669. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  1670. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  1671. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  1672. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  1673. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  1674. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  1675. *
  1676. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  1677. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1678. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  1679.        
  1680.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  1681.        
  1682.         DIMENSION laLevel[4], laThChr[3]
  1683.        
  1684.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  1685.         *********      
  1686.         IF !plThaiCode
  1687.         ***** KU code *****
  1688.                  lcVowel0 = "12345"
  1689.                  lcVowel1 = "238243247251234230"
  1690.  
  1691.                 pcStr   = ThaiCode(pcStr,FALSE)        
  1692.                
  1693.                 laThChr[1] = k_lv1KU
  1694.                 laThChr[2] = k_lv2KU
  1695.                 laThChr[3] = k_lv4KU
  1696.                
  1697.         *******************
  1698.         ELSE
  1699.         ***** TIS code *****
  1700.                 lcVowel0 = "12345"
  1701.                 lcVowel1 = "150155219251251"
  1702.  
  1703.                 laThChr[1] = k_lv1TIS
  1704.                 laThChr[2] = k_lv2TIS
  1705.                 laThChr[3] = k_lv4TIS
  1706.  
  1707.         *******************
  1708.         ENDIF
  1709.        
  1710.  
  1711.         lnTrim  = LEN(TRIM(pcStr))
  1712.         lnNewLen = 0
  1713.        
  1714.         FOR l=1 TO lnTrim
  1715.                 lnLevel = 0
  1716.                 lcChar = SUBSTR( pcStr, l, 1)
  1717.                 FOR k=1 TO 3
  1718.                    IF lcChar $ laThChr[k]
  1719.                         lnLevel = k
  1720.                         EXIT
  1721.                    ENDIF
  1722.                 ENDFOR &&* k=1 TO 3
  1723.                 DO CASE
  1724.                 CASE lnLevel = 0
  1725.                         lnLevel = 3
  1726.                         lnNewLen = lnNewLen + 1
  1727.                 CASE lnLevel = 3
  1728.                         lnLevel = 4
  1729.                 ENDCASE
  1730.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  1731.         ENDFOR
  1732.        
  1733.         FOR l=1 TO lnNewLen
  1734.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  1735.                 IF lcChar1 # " "
  1736.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  1737.                         IF lcChar2 = " "
  1738.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  1739.                         ELSE
  1740.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  1741.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  1742.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  1743.                         ENDIF
  1744.                 ENDIF
  1745.         ENDFOR
  1746.        
  1747.         TH_1 = laLevel(2)
  1748.         TH_2 = laLevel(3)
  1749.         TH_3 = laLevel(4)
  1750.  
  1751. RETURN
  1752. *EOP Thai3lev
  1753.  
  1754. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1755. * Function....: ThaiPADC
  1756. * Called by...: global
  1757. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  1758. * Returns.....:
  1759. * Parameters..:
  1760. * Notes.......:
  1761. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1762. FUNCTION ThaiPADC( pcStr, lnLen )
  1763. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  1764.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  1765. *EOF TPADC
  1766.  
  1767. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1768. * Function....: ThaiLen
  1769. * Called by...: global
  1770. * Abstract....: length of Thai string
  1771. * Returns.....:
  1772. * Parameters..:
  1773. * Notes.......:
  1774. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1775. FUNCTION ThaiLen(  pcStr )
  1776. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  1777. *EOF TLen
  1778. * Notes.......:
  1779. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1780. FUNCTION ThaiCode
  1781.         PARAMETER pcStr, plKUcode
  1782.         IF PARAMETERS() < 2
  1783.                 plKUcode = TRUE
  1784.         ENDIF
  1785. RETURN IIF( plKUcode, CHRTRAN( pcStr, THAIku, THAItis ), ;
  1786.                                 CHRTRAN( pcStr, THAItis, THAIku ) )
  1787. *EOF ThaiCode
  1788.  
  1789. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1790. * Function....: ThaiStr
  1791. * Called by...: glabal
  1792. * Abstract....: Thai String true/false
  1793. * Returns.....:
  1794. * Parameters..:
  1795. * Notes.......:
  1796. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1797. FUNCTION ThaiStr
  1798.         PARAMETERS pcStr
  1799.         PRIVATE lnTuplo, l, c, llSuccess
  1800.         llSuccess = FALSE
  1801.         lnTuplo = LEN( TUPLOSTR )
  1802.         FOR l=1 TO lnTuplo
  1803.            c = SUBSTR( TUPLOSTR,l,1 )
  1804.            IF !EMPTY(AT(c, pcStr))
  1805.                 llSuccess = TRUE
  1806.                 EXIT
  1807.            ENDIF
  1808.         ENDFOR &&* l=1 TO lnTuplo
  1809.        
  1810. RETURN llSuccess
  1811. *EOF ThaiStr
  1812.  
  1813. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1814. * Function....: Numthai
  1815. * Called by...: global
  1816. * Abstract....: thai character of number
  1817. * Returns.....:
  1818. * Parameters..:
  1819. * Notes.......:
  1820. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1821. FUNCTION Numthai( pnBaht )
  1822.        
  1823. LOCAL lcBaht1, lcBaht2
  1824.        
  1825. DIMENSION laNum[9], laDigit[6]
  1826.  
  1827.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  1828.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  1829.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  1830.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  1831.         laNum[5] = '&Euml;&eacute;&Ograve;'
  1832.         laNum[6] = '&Euml;&iexcl;'
  1833.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  1834.         laNum[8] = '&aacute;&raquo;&acute;'
  1835.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  1836.        
  1837.         laDigit[6] = ''
  1838.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  1839.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  1840.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  1841.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  1842.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  1843.        
  1844.         lcBaht1 = STR(pnBaht,15,2)
  1845.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  1846.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  1847.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  1848.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  1849.        
  1850. RETURN lcBaht2
  1851. *EOF Numthai
  1852.  
  1853. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1854. * Function....: NumLet2
  1855. * Called by...: Numthai
  1856. * Abstract....: calculate thai character
  1857. * Returns.....: lcStr
  1858. * Parameters..:
  1859. * Notes.......:
  1860. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1861. FUNCTION NumLet2(  pcStr )
  1862.  
  1863. LOCAL lcStr, l
  1864. lcStr = ""
  1865. FOR l=1 TO 6
  1866.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  1867.         DO CASE
  1868.         CASE lnDigit = 0
  1869.         CASE l = 5 AND lnDigit = 2
  1870.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  1871.         CASE l = 5 AND lnDigit = 1
  1872.                         lcStr = lcStr + laDigit[l]
  1873.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  1874.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  1875.         OTHERWISE
  1876.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  1877.         ENDCASE
  1878. ENDFOR
  1879. RETURN lcStr
  1880. *EOF NumLet2
  1881.  
  1882. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1883. * Procedure...: Thai3lev
  1884. * Called by...:
  1885. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  1886. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  1887. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  1888. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  1889. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  1890. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  1891. *
  1892. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  1893. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1894. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  1895.        
  1896.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  1897.        
  1898.         DIMENSION laLevel[4], laThChr[3]
  1899.        
  1900.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  1901.         *********      
  1902.         IF !plThaiCode
  1903.         ***** KU code *****
  1904.                  lcVowel0 = "12345"
  1905.                  lcVowel1 = "238243247251234230"
  1906.  
  1907.                 pcStr   = ThaiCode(pcStr,FALSE)        
  1908.                
  1909.                 laThChr[1] = k_lv1KU
  1910.                 laThChr[2] = k_lv2KU
  1911.                 laThChr[3] = k_lv4KU
  1912.                
  1913.         *******************
  1914.         ELSE
  1915.         ***** TIS code *****
  1916.                 lcVowel0 = "12345"
  1917.                 lcVowel1 = "150155219251251"
  1918.  
  1919.                 laThChr[1] = k_lv1TIS
  1920.                 laThChr[2] = k_lv2TIS
  1921.                 laThChr[3] = k_lv4TIS
  1922.  
  1923.         *******************
  1924.         ENDIF
  1925.        
  1926.  
  1927.         lnTrim  = LEN(TRIM(pcStr))
  1928.         lnNewLen = 0
  1929.        
  1930.         FOR l=1 TO lnTrim
  1931.                 lnLevel = 0
  1932.                 lcChar = SUBSTR( pcStr, l, 1)
  1933.                 FOR k=1 TO 3
  1934.                    IF lcChar $ laThChr[k]
  1935.                         lnLevel = k
  1936.                         EXIT
  1937.                    ENDIF
  1938.                 ENDFOR &&* k=1 TO 3
  1939.                 DO CASE
  1940.                 CASE lnLevel = 0
  1941.                         lnLevel = 3
  1942.                         lnNewLen = lnNewLen + 1
  1943.                 CASE lnLevel = 3
  1944.                         lnLevel = 4
  1945.                 ENDCASE
  1946.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  1947.         ENDFOR
  1948.        
  1949.         FOR l=1 TO lnNewLen
  1950.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  1951.                 IF lcChar1 # " "
  1952.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  1953.                         IF lcChar2 = " "
  1954.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  1955.                         ELSE
  1956.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  1957.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  1958.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  1959.                         ENDIF
  1960.                 ENDIF
  1961.         ENDFOR
  1962.        
  1963.         TH_1 = laLevel(2)
  1964.         TH_2 = laLevel(3)
  1965.         TH_3 = laLevel(4)
  1966.  
  1967. RETURN
  1968. *EOP Thai3lev
  1969.  
  1970. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1971. * Function....: ThaiPADC
  1972. * Called by...: global
  1973. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  1974. * Returns.....:
  1975. * Parameters..:
  1976. * Notes.......:
  1977. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1978. FUNCTION ThaiPADC( pcStr, lnLen )
  1979. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  1980.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  1981. *EOF TPADC
  1982.  
  1983. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1984. * Function....: ThaiLen
  1985. * Called by...: global
  1986. * Abstract....: length of Thai string
  1987. * Returns.....:
  1988. * Parameters..:
  1989. * Notes.......:
  1990. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1991. FUNCTION ThaiLen(  pcStr )
  1992. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  1993. *EOF TLen
  1994. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  1995. FUNCTION ThaiCode
  1996.         PARAMETER pcStr, plKUcode
  1997.         IF PARAMETERS() < 2
  1998.                 plKUcode = TRUE
  1999.         ENDIF
  2000. RETURN IIF( plKUcode, CHRTRAN( pcStr, THAIku, THAItis ), ;
  2001.                                 CHRTRAN( pcStr, THAItis, THAIku ) )
  2002. *EOF ThaiCode
  2003.  
  2004. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2005. * Function....: ThaiStr
  2006. * Called by...: glabal
  2007. * Abstract....: Thai String true/false
  2008. * Returns.....:
  2009. * Parameters..:
  2010. * Notes.......:
  2011. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2012. FUNCTION ThaiStr
  2013.         PARAMETERS pcStr
  2014.         PRIVATE lnTuplo, l, c, llSuccess
  2015.         llSuccess = FALSE
  2016.         lnTuplo = LEN( TUPLOSTR )
  2017.         FOR l=1 TO lnTuplo
  2018.            c = SUBSTR( TUPLOSTR,l,1 )
  2019.            IF !EMPTY(AT(c, pcStr))
  2020.                 llSuccess = TRUE
  2021.                 EXIT
  2022.            ENDIF
  2023.         ENDFOR &&* l=1 TO lnTuplo
  2024.        
  2025. RETURN llSuccess
  2026. *EOF ThaiStr
  2027.  
  2028. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2029. * Function....: Numthai
  2030. * Called by...: global
  2031. * Abstract....: thai character of number
  2032. * Returns.....:
  2033. * Parameters..:
  2034. * Notes.......:
  2035. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2036. FUNCTION Numthai( pnBaht )
  2037.        
  2038. LOCAL lcBaht1, lcBaht2
  2039.        
  2040. DIMENSION laNum[9], laDigit[6]
  2041.  
  2042.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  2043.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  2044.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  2045.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  2046.         laNum[5] = '&Euml;&eacute;&Ograve;'
  2047.         laNum[6] = '&Euml;&iexcl;'
  2048.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  2049.         laNum[8] = '&aacute;&raquo;&acute;'
  2050.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  2051.        
  2052.         laDigit[6] = ''
  2053.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  2054.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  2055.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  2056.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  2057.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  2058.        
  2059.         lcBaht1 = STR(pnBaht,15,2)
  2060.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  2061.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  2062.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  2063.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  2064.        
  2065. RETURN lcBaht2
  2066. *EOF Numthai
  2067.  
  2068. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2069. * Function....: NumLet2
  2070. * Called by...: Numthai
  2071. * Abstract....: calculate thai character
  2072. * Returns.....: lcStr
  2073. * Parameters..:
  2074. * Notes.......:
  2075. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2076. FUNCTION NumLet2(  pcStr )
  2077.  
  2078. LOCAL lcStr, l
  2079. lcStr = ""
  2080. FOR l=1 TO 6
  2081.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  2082.         DO CASE
  2083.         CASE lnDigit = 0
  2084.         CASE l = 5 AND lnDigit = 2
  2085.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  2086.         CASE l = 5 AND lnDigit = 1
  2087.                         lcStr = lcStr + laDigit[l]
  2088.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  2089.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  2090.         OTHERWISE
  2091.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  2092.         ENDCASE
  2093. ENDFOR
  2094. RETURN lcStr
  2095. *EOF NumLet2
  2096.  
  2097. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2098. * Procedure...: Thai3lev
  2099. * Called by...:
  2100. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  2101. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  2102. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  2103. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  2104. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  2105. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  2106. *
  2107. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  2108. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2109. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  2110.        
  2111.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  2112.        
  2113.         DIMENSION laLevel[4], laThChr[3]
  2114.        
  2115.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  2116.         *********      
  2117.         IF !plThaiCode
  2118.         ***** KU code *****
  2119.                  lcVowel0 = "12345"
  2120.                  lcVowel1 = "238243247251234230"
  2121.  
  2122.                 pcStr   = ThaiCode(pcStr,FALSE)        
  2123.                
  2124.                 laThChr[1] = k_lv1KU
  2125.                 laThChr[2] = k_lv2KU
  2126.                 laThChr[3] = k_lv4KU
  2127.                
  2128.         *******************
  2129.         ELSE
  2130.         ***** TIS code *****
  2131.                 lcVowel0 = "12345"
  2132.                 lcVowel1 = "150155219251251"
  2133.  
  2134.                 laThChr[1] = k_lv1TIS
  2135.                 laThChr[2] = k_lv2TIS
  2136.                 laThChr[3] = k_lv4TIS
  2137.  
  2138.         *******************
  2139.         ENDIF
  2140.        
  2141.  
  2142.         lnTrim  = LEN(TRIM(pcStr))
  2143.         lnNewLen = 0
  2144.        
  2145.         FOR l=1 TO lnTrim
  2146.                 lnLevel = 0
  2147.                 lcChar = SUBSTR( pcStr, l, 1)
  2148.                 FOR k=1 TO 3
  2149.                    IF lcChar $ laThChr[k]
  2150.                         lnLevel = k
  2151.                         EXIT
  2152.                    ENDIF
  2153.                 ENDFOR &&* k=1 TO 3
  2154.                 DO CASE
  2155.                 CASE lnLevel = 0
  2156.                         lnLevel = 3
  2157.                         lnNewLen = lnNewLen + 1
  2158.                 CASE lnLevel = 3
  2159.                         lnLevel = 4
  2160.                 ENDCASE
  2161.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  2162.         ENDFOR
  2163.        
  2164.         FOR l=1 TO lnNewLen
  2165.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  2166.                 IF lcChar1 # " "
  2167.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  2168.                         IF lcChar2 = " "
  2169.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  2170.                         ELSE
  2171.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  2172.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  2173.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  2174.                         ENDIF
  2175.                 ENDIF
  2176.         ENDFOR
  2177.        
  2178.         TH_1 = laLevel(2)
  2179.         TH_2 = laLevel(3)
  2180.         TH_3 = laLevel(4)
  2181.  
  2182. RETURN
  2183. *EOP Thai3lev
  2184.  
  2185. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2186. * Function....: ThaiPADC
  2187. * Called by...: global
  2188. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  2189. * Returns.....:
  2190. * Parameters..:
  2191. * Notes.......:
  2192. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2193. FUNCTION ThaiPADC( pcStr, lnLen )
  2194. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  2195.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  2196. *EOF TPADC
  2197.  
  2198. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2199. * Function....: ThaiLen
  2200. * Called by...: global
  2201. * Abstract....: length of Thai string
  2202. * Returns.....:
  2203. * Parameters..:
  2204. * Notes.......:
  2205. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2206. FUNCTION ThaiLen(  pcStr )
  2207. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  2208. *EOF TLen
  2209. *EOF ThaiCode
  2210. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2211. * Function....: ThaiStr
  2212. * Called by...: glabal
  2213. * Abstract....: Thai String true/false
  2214. * Returns.....:
  2215. * Parameters..:
  2216. * Notes.......:
  2217. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2218. FUNCTION ThaiStr
  2219.         PARAMETERS pcStr
  2220.         PRIVATE lnTuplo, l, c, llSuccess
  2221.         llSuccess = FALSE
  2222.         lnTuplo = LEN( TUPLOSTR )
  2223.         FOR l=1 TO lnTuplo
  2224.            c = SUBSTR( TUPLOSTR,l,1 )
  2225.            IF !EMPTY(AT(c, pcStr))
  2226.                 llSuccess = TRUE
  2227.                 EXIT
  2228.            ENDIF
  2229.         ENDFOR &&* l=1 TO lnTuplo
  2230.        
  2231. RETURN llSuccess
  2232. *EOF ThaiStr
  2233.  
  2234. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2235. * Function....: Numthai
  2236. * Called by...: global
  2237. * Abstract....: thai character of number
  2238. * Returns.....:
  2239. * Parameters..:
  2240. * Notes.......:
  2241. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2242. FUNCTION Numthai( pnBaht )
  2243.        
  2244. LOCAL lcBaht1, lcBaht2
  2245.        
  2246. DIMENSION laNum[9], laDigit[6]
  2247.  
  2248.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  2249.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  2250.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  2251.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  2252.         laNum[5] = '&Euml;&eacute;&Ograve;'
  2253.         laNum[6] = '&Euml;&iexcl;'
  2254.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  2255.         laNum[8] = '&aacute;&raquo;&acute;'
  2256.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  2257.        
  2258.         laDigit[6] = ''
  2259.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  2260.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  2261.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  2262.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  2263.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  2264.        
  2265.         lcBaht1 = STR(pnBaht,15,2)
  2266.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  2267.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  2268.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  2269.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  2270.        
  2271. RETURN lcBaht2
  2272. *EOF Numthai
  2273.  
  2274. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2275. * Function....: NumLet2
  2276. * Called by...: Numthai
  2277. * Abstract....: calculate thai character
  2278. * Returns.....: lcStr
  2279. * Parameters..:
  2280. * Notes.......:
  2281. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2282. FUNCTION NumLet2(  pcStr )
  2283.  
  2284. LOCAL lcStr, l
  2285. lcStr = ""
  2286. FOR l=1 TO 6
  2287.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  2288.         DO CASE
  2289.         CASE lnDigit = 0
  2290.         CASE l = 5 AND lnDigit = 2
  2291.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  2292.         CASE l = 5 AND lnDigit = 1
  2293.                         lcStr = lcStr + laDigit[l]
  2294.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  2295.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  2296.         OTHERWISE
  2297.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  2298.         ENDCASE
  2299. ENDFOR
  2300. RETURN lcStr
  2301. *EOF NumLet2
  2302.  
  2303. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2304. * Procedure...: Thai3lev
  2305. * Called by...:
  2306. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  2307. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  2308. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  2309. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  2310. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  2311. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  2312. *
  2313. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  2314. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2315. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  2316.        
  2317.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  2318.        
  2319.         DIMENSION laLevel[4], laThChr[3]
  2320.        
  2321.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  2322.         *********      
  2323.         IF !plThaiCode
  2324.         ***** KU code *****
  2325.                  lcVowel0 = "12345"
  2326.                  lcVowel1 = "238243247251234230"
  2327.  
  2328.                 pcStr   = ThaiCode(pcStr,FALSE)        
  2329.                
  2330.                 laThChr[1] = k_lv1KU
  2331.                 laThChr[2] = k_lv2KU
  2332.                 laThChr[3] = k_lv4KU
  2333.                
  2334.         *******************
  2335.         ELSE
  2336.         ***** TIS code *****
  2337.                 lcVowel0 = "12345"
  2338.                 lcVowel1 = "150155219251251"
  2339.  
  2340.                 laThChr[1] = k_lv1TIS
  2341.                 laThChr[2] = k_lv2TIS
  2342.                 laThChr[3] = k_lv4TIS
  2343.  
  2344.         *******************
  2345.         ENDIF
  2346.        
  2347.  
  2348.         lnTrim  = LEN(TRIM(pcStr))
  2349.         lnNewLen = 0
  2350.        
  2351.         FOR l=1 TO lnTrim
  2352.                 lnLevel = 0
  2353.                 lcChar = SUBSTR( pcStr, l, 1)
  2354.                 FOR k=1 TO 3
  2355.                    IF lcChar $ laThChr[k]
  2356.                         lnLevel = k
  2357.                         EXIT
  2358.                    ENDIF
  2359.                 ENDFOR &&* k=1 TO 3
  2360.                 DO CASE
  2361.                 CASE lnLevel = 0
  2362.                         lnLevel = 3
  2363.                         lnNewLen = lnNewLen + 1
  2364.                 CASE lnLevel = 3
  2365.                         lnLevel = 4
  2366.                 ENDCASE
  2367.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  2368.         ENDFOR
  2369.        
  2370.         FOR l=1 TO lnNewLen
  2371.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  2372.                 IF lcChar1 # " "
  2373.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  2374.                         IF lcChar2 = " "
  2375.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  2376.                         ELSE
  2377.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  2378.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  2379.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  2380.                         ENDIF
  2381.                 ENDIF
  2382.         ENDFOR
  2383.        
  2384.         TH_1 = laLevel(2)
  2385.         TH_2 = laLevel(3)
  2386.         TH_3 = laLevel(4)
  2387.  
  2388. RETURN
  2389. *EOP Thai3lev
  2390.  
  2391. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2392. * Function....: ThaiPADC
  2393. * Called by...: global
  2394. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  2395. * Returns.....:
  2396. * Parameters..:
  2397. * Notes.......:
  2398. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2399. FUNCTION ThaiPADC( pcStr, lnLen )
  2400. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  2401.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  2402. *EOF TPADC
  2403.  
  2404. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2405. * Function....: ThaiLen
  2406. * Called by...: global
  2407. * Abstract....: length of Thai string
  2408. * Returns.....:
  2409. * Parameters..:
  2410. * Notes.......:
  2411. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2412. FUNCTION ThaiLen(  pcStr )
  2413. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  2414. *EOF TLen
  2415. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2416. * Function....: ThaiStr
  2417. * Called by...: glabal
  2418. * Abstract....: Thai String true/false
  2419. * Returns.....:
  2420. * Parameters..:
  2421. * Notes.......:
  2422. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2423. FUNCTION ThaiStr
  2424.         PARAMETERS pcStr
  2425.         PRIVATE lnTuplo, l, c, llSuccess
  2426.         llSuccess = FALSE
  2427.         lnTuplo = LEN( TUPLOSTR )
  2428.         FOR l=1 TO lnTuplo
  2429.            c = SUBSTR( TUPLOSTR,l,1 )
  2430.            IF !EMPTY(AT(c, pcStr))
  2431.                 llSuccess = TRUE
  2432.                 EXIT
  2433.            ENDIF
  2434.         ENDFOR &&* l=1 TO lnTuplo
  2435.        
  2436. RETURN llSuccess
  2437. *EOF ThaiStr
  2438.  
  2439. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2440. * Function....: Numthai
  2441. * Called by...: global
  2442. * Abstract....: thai character of number
  2443. * Returns.....:
  2444. * Parameters..:
  2445. * Notes.......:
  2446. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2447. FUNCTION Numthai( pnBaht )
  2448.        
  2449. LOCAL lcBaht1, lcBaht2
  2450.        
  2451. DIMENSION laNum[9], laDigit[6]
  2452.  
  2453.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  2454.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  2455.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  2456.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  2457.         laNum[5] = '&Euml;&eacute;&Ograve;'
  2458.         laNum[6] = '&Euml;&iexcl;'
  2459.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  2460.         laNum[8] = '&aacute;&raquo;&acute;'
  2461.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  2462.        
  2463.         laDigit[6] = ''
  2464.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  2465.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  2466.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  2467.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  2468.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  2469.        
  2470.         lcBaht1 = STR(pnBaht,15,2)
  2471.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  2472.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  2473.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  2474.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  2475.        
  2476. RETURN lcBaht2
  2477. *EOF Numthai
  2478.  
  2479. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2480. * Function....: NumLet2
  2481. * Called by...: Numthai
  2482. * Abstract....: calculate thai character
  2483. * Returns.....: lcStr
  2484. * Parameters..:
  2485. * Notes.......:
  2486. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2487. FUNCTION NumLet2(  pcStr )
  2488.  
  2489. LOCAL lcStr, l
  2490. lcStr = ""
  2491. FOR l=1 TO 6
  2492.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  2493.         DO CASE
  2494.         CASE lnDigit = 0
  2495.         CASE l = 5 AND lnDigit = 2
  2496.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  2497.         CASE l = 5 AND lnDigit = 1
  2498.                         lcStr = lcStr + laDigit[l]
  2499.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  2500.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  2501.         OTHERWISE
  2502.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  2503.         ENDCASE
  2504. ENDFOR
  2505. RETURN lcStr
  2506. *EOF NumLet2
  2507.  
  2508. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2509. * Procedure...: Thai3lev
  2510. * Called by...:
  2511. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  2512. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  2513. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  2514. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  2515. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  2516. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  2517. *
  2518. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  2519. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2520. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  2521.        
  2522.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  2523.        
  2524.         DIMENSION laLevel[4], laThChr[3]
  2525.        
  2526.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  2527.         *********      
  2528.         IF !plThaiCode
  2529.         ***** KU code *****
  2530.                  lcVowel0 = "12345"
  2531.                  lcVowel1 = "238243247251234230"
  2532.  
  2533.                 pcStr   = ThaiCode(pcStr,FALSE)        
  2534.                
  2535.                 laThChr[1] = k_lv1KU
  2536.                 laThChr[2] = k_lv2KU
  2537.                 laThChr[3] = k_lv4KU
  2538.                
  2539.         *******************
  2540.         ELSE
  2541.         ***** TIS code *****
  2542.                 lcVowel0 = "12345"
  2543.                 lcVowel1 = "150155219251251"
  2544.  
  2545.                 laThChr[1] = k_lv1TIS
  2546.                 laThChr[2] = k_lv2TIS
  2547.                 laThChr[3] = k_lv4TIS
  2548.  
  2549.         *******************
  2550.         ENDIF
  2551.        
  2552.  
  2553.         lnTrim  = LEN(TRIM(pcStr))
  2554.         lnNewLen = 0
  2555.        
  2556.         FOR l=1 TO lnTrim
  2557.                 lnLevel = 0
  2558.                 lcChar = SUBSTR( pcStr, l, 1)
  2559.                 FOR k=1 TO 3
  2560.                    IF lcChar $ laThChr[k]
  2561.                         lnLevel = k
  2562.                         EXIT
  2563.                    ENDIF
  2564.                 ENDFOR &&* k=1 TO 3
  2565.                 DO CASE
  2566.                 CASE lnLevel = 0
  2567.                         lnLevel = 3
  2568.                         lnNewLen = lnNewLen + 1
  2569.                 CASE lnLevel = 3
  2570.                         lnLevel = 4
  2571.                 ENDCASE
  2572.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  2573.         ENDFOR
  2574.        
  2575.         FOR l=1 TO lnNewLen
  2576.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  2577.                 IF lcChar1 # " "
  2578.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  2579.                         IF lcChar2 = " "
  2580.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  2581.                         ELSE
  2582.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  2583.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  2584.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  2585.                         ENDIF
  2586.                 ENDIF
  2587.         ENDFOR
  2588.        
  2589.         TH_1 = laLevel(2)
  2590.         TH_2 = laLevel(3)
  2591.         TH_3 = laLevel(4)
  2592.  
  2593. RETURN
  2594. *EOP Thai3lev
  2595.  
  2596. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2597. * Function....: ThaiPADC
  2598. * Called by...: global
  2599. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  2600. * Returns.....:
  2601. * Parameters..:
  2602. * Notes.......:
  2603. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2604. FUNCTION ThaiPADC( pcStr, lnLen )
  2605. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  2606.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  2607. *EOF TPADC
  2608.  
  2609. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2610. * Function....: ThaiLen
  2611. * Called by...: global
  2612. * Abstract....: length of Thai string
  2613. * Returns.....:
  2614. * Parameters..:
  2615. * Notes.......:
  2616. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2617. FUNCTION ThaiLen(  pcStr )
  2618. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  2619. *EOF TLen
  2620. * Function....: ThaiStr
  2621. * Called by...: glabal
  2622. * Abstract....: Thai String true/false
  2623. * Returns.....:
  2624. * Parameters..:
  2625. * Notes.......:
  2626. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2627. FUNCTION ThaiStr
  2628.         PARAMETERS pcStr
  2629.         PRIVATE lnTuplo, l, c, llSuccess
  2630.         llSuccess = FALSE
  2631.         lnTuplo = LEN( TUPLOSTR )
  2632.         FOR l=1 TO lnTuplo
  2633.            c = SUBSTR( TUPLOSTR,l,1 )
  2634.            IF !EMPTY(AT(c, pcStr))
  2635.                 llSuccess = TRUE
  2636.                 EXIT
  2637.            ENDIF
  2638.         ENDFOR &&* l=1 TO lnTuplo
  2639.        
  2640. RETURN llSuccess
  2641. *EOF ThaiStr
  2642.  
  2643. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2644. * Function....: Numthai
  2645. * Called by...: global
  2646. * Abstract....: thai character of number
  2647. * Returns.....:
  2648. * Parameters..:
  2649. * Notes.......:
  2650. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2651. FUNCTION Numthai( pnBaht )
  2652.        
  2653. LOCAL lcBaht1, lcBaht2
  2654.        
  2655. DIMENSION laNum[9], laDigit[6]
  2656.  
  2657.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  2658.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  2659.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  2660.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  2661.         laNum[5] = '&Euml;&eacute;&Ograve;'
  2662.         laNum[6] = '&Euml;&iexcl;'
  2663.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  2664.         laNum[8] = '&aacute;&raquo;&acute;'
  2665.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  2666.        
  2667.         laDigit[6] = ''
  2668.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  2669.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  2670.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  2671.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  2672.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  2673.        
  2674.         lcBaht1 = STR(pnBaht,15,2)
  2675.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  2676.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  2677.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  2678.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  2679.        
  2680. RETURN lcBaht2
  2681. *EOF Numthai
  2682.  
  2683. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2684. * Function....: NumLet2
  2685. * Called by...: Numthai
  2686. * Abstract....: calculate thai character
  2687. * Returns.....: lcStr
  2688. * Parameters..:
  2689. * Notes.......:
  2690. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2691. FUNCTION NumLet2(  pcStr )
  2692.  
  2693. LOCAL lcStr, l
  2694. lcStr = ""
  2695. FOR l=1 TO 6
  2696.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  2697.         DO CASE
  2698.         CASE lnDigit = 0
  2699.         CASE l = 5 AND lnDigit = 2
  2700.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  2701.         CASE l = 5 AND lnDigit = 1
  2702.                         lcStr = lcStr + laDigit[l]
  2703.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  2704.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  2705.         OTHERWISE
  2706.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  2707.         ENDCASE
  2708. ENDFOR
  2709. RETURN lcStr
  2710. *EOF NumLet2
  2711.  
  2712. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2713. * Procedure...: Thai3lev
  2714. * Called by...:
  2715. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  2716. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  2717. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  2718. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  2719. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  2720. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  2721. *
  2722. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  2723. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2724. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  2725.        
  2726.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  2727.        
  2728.         DIMENSION laLevel[4], laThChr[3]
  2729.        
  2730.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  2731.         *********      
  2732.         IF !plThaiCode
  2733.         ***** KU code *****
  2734.                  lcVowel0 = "12345"
  2735.                  lcVowel1 = "238243247251234230"
  2736.  
  2737.                 pcStr   = ThaiCode(pcStr,FALSE)        
  2738.                
  2739.                 laThChr[1] = k_lv1KU
  2740.                 laThChr[2] = k_lv2KU
  2741.                 laThChr[3] = k_lv4KU
  2742.                
  2743.         *******************
  2744.         ELSE
  2745.         ***** TIS code *****
  2746.                 lcVowel0 = "12345"
  2747.                 lcVowel1 = "150155219251251"
  2748.  
  2749.                 laThChr[1] = k_lv1TIS
  2750.                 laThChr[2] = k_lv2TIS
  2751.                 laThChr[3] = k_lv4TIS
  2752.  
  2753.         *******************
  2754.         ENDIF
  2755.        
  2756.  
  2757.         lnTrim  = LEN(TRIM(pcStr))
  2758.         lnNewLen = 0
  2759.        
  2760.         FOR l=1 TO lnTrim
  2761.                 lnLevel = 0
  2762.                 lcChar = SUBSTR( pcStr, l, 1)
  2763.                 FOR k=1 TO 3
  2764.                    IF lcChar $ laThChr[k]
  2765.                         lnLevel = k
  2766.                         EXIT
  2767.                    ENDIF
  2768.                 ENDFOR &&* k=1 TO 3
  2769.                 DO CASE
  2770.                 CASE lnLevel = 0
  2771.                         lnLevel = 3
  2772.                         lnNewLen = lnNewLen + 1
  2773.                 CASE lnLevel = 3
  2774.                         lnLevel = 4
  2775.                 ENDCASE
  2776.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  2777.         ENDFOR
  2778.        
  2779.         FOR l=1 TO lnNewLen
  2780.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  2781.                 IF lcChar1 # " "
  2782.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  2783.                         IF lcChar2 = " "
  2784.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  2785.                         ELSE
  2786.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  2787.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  2788.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  2789.                         ENDIF
  2790.                 ENDIF
  2791.         ENDFOR
  2792.        
  2793.         TH_1 = laLevel(2)
  2794.         TH_2 = laLevel(3)
  2795.         TH_3 = laLevel(4)
  2796.  
  2797. RETURN
  2798. *EOP Thai3lev
  2799.  
  2800. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2801. * Function....: ThaiPADC
  2802. * Called by...: global
  2803. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  2804. * Returns.....:
  2805. * Parameters..:
  2806. * Notes.......:
  2807. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2808. FUNCTION ThaiPADC( pcStr, lnLen )
  2809. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  2810.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  2811. *EOF TPADC
  2812.  
  2813. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2814. * Function....: ThaiLen
  2815. * Called by...: global
  2816. * Abstract....: length of Thai string
  2817. * Returns.....:
  2818. * Parameters..:
  2819. * Notes.......:
  2820. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2821. FUNCTION ThaiLen(  pcStr )
  2822. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  2823. *EOF TLen
  2824. * Called by...: glabal
  2825. * Abstract....: Thai String true/false
  2826. * Returns.....:
  2827. * Parameters..:
  2828. * Notes.......:
  2829. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2830. FUNCTION ThaiStr
  2831.         PARAMETERS pcStr
  2832.         PRIVATE lnTuplo, l, c, llSuccess
  2833.         llSuccess = FALSE
  2834.         lnTuplo = LEN( TUPLOSTR )
  2835.         FOR l=1 TO lnTuplo
  2836.            c = SUBSTR( TUPLOSTR,l,1 )
  2837.            IF !EMPTY(AT(c, pcStr))
  2838.                 llSuccess = TRUE
  2839.                 EXIT
  2840.            ENDIF
  2841.         ENDFOR &&* l=1 TO lnTuplo
  2842.        
  2843. RETURN llSuccess
  2844. *EOF ThaiStr
  2845.  
  2846. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2847. * Function....: Numthai
  2848. * Called by...: global
  2849. * Abstract....: thai character of number
  2850. * Returns.....:
  2851. * Parameters..:
  2852. * Notes.......:
  2853. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2854. FUNCTION Numthai( pnBaht )
  2855.        
  2856. LOCAL lcBaht1, lcBaht2
  2857.        
  2858. DIMENSION laNum[9], laDigit[6]
  2859.  
  2860.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  2861.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  2862.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  2863.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  2864.         laNum[5] = '&Euml;&eacute;&Ograve;'
  2865.         laNum[6] = '&Euml;&iexcl;'
  2866.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  2867.         laNum[8] = '&aacute;&raquo;&acute;'
  2868.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  2869.        
  2870.         laDigit[6] = ''
  2871.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  2872.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  2873.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  2874.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  2875.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  2876.        
  2877.         lcBaht1 = STR(pnBaht,15,2)
  2878.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  2879.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  2880.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  2881.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  2882.        
  2883. RETURN lcBaht2
  2884. *EOF Numthai
  2885.  
  2886. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2887. * Function....: NumLet2
  2888. * Called by...: Numthai
  2889. * Abstract....: calculate thai character
  2890. * Returns.....: lcStr
  2891. * Parameters..:
  2892. * Notes.......:
  2893. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2894. FUNCTION NumLet2(  pcStr )
  2895.  
  2896. LOCAL lcStr, l
  2897. lcStr = ""
  2898. FOR l=1 TO 6
  2899.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  2900.         DO CASE
  2901.         CASE lnDigit = 0
  2902.         CASE l = 5 AND lnDigit = 2
  2903.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  2904.         CASE l = 5 AND lnDigit = 1
  2905.                         lcStr = lcStr + laDigit[l]
  2906.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  2907.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  2908.         OTHERWISE
  2909.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  2910.         ENDCASE
  2911. ENDFOR
  2912. RETURN lcStr
  2913. *EOF NumLet2
  2914.  
  2915. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2916. * Procedure...: Thai3lev
  2917. * Called by...:
  2918. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  2919. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  2920. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  2921. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  2922. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  2923. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  2924. *
  2925. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  2926. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  2927. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  2928.        
  2929.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  2930.        
  2931.         DIMENSION laLevel[4], laThChr[3]
  2932.        
  2933.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  2934.         *********      
  2935.         IF !plThaiCode
  2936.         ***** KU code *****
  2937.                  lcVowel0 = "12345"
  2938.                  lcVowel1 = "238243247251234230"
  2939.  
  2940.                 pcStr   = ThaiCode(pcStr,FALSE)        
  2941.                
  2942.                 laThChr[1] = k_lv1KU
  2943.                 laThChr[2] = k_lv2KU
  2944.                 laThChr[3] = k_lv4KU
  2945.                
  2946.         *******************
  2947.         ELSE
  2948.         ***** TIS code *****
  2949.                 lcVowel0 = "12345"
  2950.                 lcVowel1 = "150155219251251"
  2951.  
  2952.                 laThChr[1] = k_lv1TIS
  2953.                 laThChr[2] = k_lv2TIS
  2954.                 laThChr[3] = k_lv4TIS
  2955.  
  2956.         *******************
  2957.         ENDIF
  2958.        
  2959.  
  2960.         lnTrim  = LEN(TRIM(pcStr))
  2961.         lnNewLen = 0
  2962.        
  2963.         FOR l=1 TO lnTrim
  2964.                 lnLevel = 0
  2965.                 lcChar = SUBSTR( pcStr, l, 1)
  2966.                 FOR k=1 TO 3
  2967.                    IF lcChar $ laThChr[k]
  2968.                         lnLevel = k
  2969.                         EXIT
  2970.                    ENDIF
  2971.                 ENDFOR &&* k=1 TO 3
  2972.                 DO CASE
  2973.                 CASE lnLevel = 0
  2974.                         lnLevel = 3
  2975.                         lnNewLen = lnNewLen + 1
  2976.                 CASE lnLevel = 3
  2977.                         lnLevel = 4
  2978.                 ENDCASE
  2979.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  2980.         ENDFOR
  2981.        
  2982.         FOR l=1 TO lnNewLen
  2983.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  2984.                 IF lcChar1 # " "
  2985.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  2986.                         IF lcChar2 = " "
  2987.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  2988.                         ELSE
  2989.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  2990.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  2991.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  2992.                         ENDIF
  2993.                 ENDIF
  2994.         ENDFOR
  2995.        
  2996.         TH_1 = laLevel(2)
  2997.         TH_2 = laLevel(3)
  2998.         TH_3 = laLevel(4)
  2999.  
  3000. RETURN
  3001. *EOP Thai3lev
  3002.  
  3003. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3004. * Function....: ThaiPADC
  3005. * Called by...: global
  3006. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  3007. * Returns.....:
  3008. * Parameters..:
  3009. * Notes.......:
  3010. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3011. FUNCTION ThaiPADC( pcStr, lnLen )
  3012. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  3013.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  3014. *EOF TPADC
  3015.  
  3016. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3017. * Function....: ThaiLen
  3018. * Called by...: global
  3019. * Abstract....: length of Thai string
  3020. * Returns.....:
  3021. * Parameters..:
  3022. * Notes.......:
  3023. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3024. FUNCTION ThaiLen(  pcStr )
  3025. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  3026. *EOF TLen
  3027. * Abstract....: Thai String true/false
  3028. * Returns.....:
  3029. * Parameters..:
  3030. * Notes.......:
  3031. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3032. FUNCTION ThaiStr
  3033.         PARAMETERS pcStr
  3034.         PRIVATE lnTuplo, l, c, llSuccess
  3035.         llSuccess = FALSE
  3036.         lnTuplo = LEN( TUPLOSTR )
  3037.         FOR l=1 TO lnTuplo
  3038.            c = SUBSTR( TUPLOSTR,l,1 )
  3039.            IF !EMPTY(AT(c, pcStr))
  3040.                 llSuccess = TRUE
  3041.                 EXIT
  3042.            ENDIF
  3043.         ENDFOR &&* l=1 TO lnTuplo
  3044.        
  3045. RETURN llSuccess
  3046. *EOF ThaiStr
  3047.  
  3048. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3049. * Function....: Numthai
  3050. * Called by...: global
  3051. * Abstract....: thai character of number
  3052. * Returns.....:
  3053. * Parameters..:
  3054. * Notes.......:
  3055. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3056. FUNCTION Numthai( pnBaht )
  3057.        
  3058. LOCAL lcBaht1, lcBaht2
  3059.        
  3060. DIMENSION laNum[9], laDigit[6]
  3061.  
  3062.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  3063.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  3064.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  3065.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  3066.         laNum[5] = '&Euml;&eacute;&Ograve;'
  3067.         laNum[6] = '&Euml;&iexcl;'
  3068.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  3069.         laNum[8] = '&aacute;&raquo;&acute;'
  3070.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  3071.        
  3072.         laDigit[6] = ''
  3073.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  3074.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  3075.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  3076.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  3077.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  3078.        
  3079.         lcBaht1 = STR(pnBaht,15,2)
  3080.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  3081.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  3082.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  3083.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  3084.        
  3085. RETURN lcBaht2
  3086. *EOF Numthai
  3087.  
  3088. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3089. * Function....: NumLet2
  3090. * Called by...: Numthai
  3091. * Abstract....: calculate thai character
  3092. * Returns.....: lcStr
  3093. * Parameters..:
  3094. * Notes.......:
  3095. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3096. FUNCTION NumLet2(  pcStr )
  3097.  
  3098. LOCAL lcStr, l
  3099. lcStr = ""
  3100. FOR l=1 TO 6
  3101.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  3102.         DO CASE
  3103.         CASE lnDigit = 0
  3104.         CASE l = 5 AND lnDigit = 2
  3105.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  3106.         CASE l = 5 AND lnDigit = 1
  3107.                         lcStr = lcStr + laDigit[l]
  3108.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  3109.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  3110.         OTHERWISE
  3111.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  3112.         ENDCASE
  3113. ENDFOR
  3114. RETURN lcStr
  3115. *EOF NumLet2
  3116.  
  3117. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3118. * Procedure...: Thai3lev
  3119. * Called by...:
  3120. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  3121. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  3122. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  3123. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  3124. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  3125. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  3126. *
  3127. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  3128. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3129. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  3130.        
  3131.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  3132.        
  3133.         DIMENSION laLevel[4], laThChr[3]
  3134.        
  3135.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  3136.         *********      
  3137.         IF !plThaiCode
  3138.         ***** KU code *****
  3139.                  lcVowel0 = "12345"
  3140.                  lcVowel1 = "238243247251234230"
  3141.  
  3142.                 pcStr   = ThaiCode(pcStr,FALSE)        
  3143.                
  3144.                 laThChr[1] = k_lv1KU
  3145.                 laThChr[2] = k_lv2KU
  3146.                 laThChr[3] = k_lv4KU
  3147.                
  3148.         *******************
  3149.         ELSE
  3150.         ***** TIS code *****
  3151.                 lcVowel0 = "12345"
  3152.                 lcVowel1 = "150155219251251"
  3153.  
  3154.                 laThChr[1] = k_lv1TIS
  3155.                 laThChr[2] = k_lv2TIS
  3156.                 laThChr[3] = k_lv4TIS
  3157.  
  3158.         *******************
  3159.         ENDIF
  3160.        
  3161.  
  3162.         lnTrim  = LEN(TRIM(pcStr))
  3163.         lnNewLen = 0
  3164.        
  3165.         FOR l=1 TO lnTrim
  3166.                 lnLevel = 0
  3167.                 lcChar = SUBSTR( pcStr, l, 1)
  3168.                 FOR k=1 TO 3
  3169.                    IF lcChar $ laThChr[k]
  3170.                         lnLevel = k
  3171.                         EXIT
  3172.                    ENDIF
  3173.                 ENDFOR &&* k=1 TO 3
  3174.                 DO CASE
  3175.                 CASE lnLevel = 0
  3176.                         lnLevel = 3
  3177.                         lnNewLen = lnNewLen + 1
  3178.                 CASE lnLevel = 3
  3179.                         lnLevel = 4
  3180.                 ENDCASE
  3181.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  3182.         ENDFOR
  3183.        
  3184.         FOR l=1 TO lnNewLen
  3185.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  3186.                 IF lcChar1 # " "
  3187.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  3188.                         IF lcChar2 = " "
  3189.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  3190.                         ELSE
  3191.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  3192.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  3193.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  3194.                         ENDIF
  3195.                 ENDIF
  3196.         ENDFOR
  3197.        
  3198.         TH_1 = laLevel(2)
  3199.         TH_2 = laLevel(3)
  3200.         TH_3 = laLevel(4)
  3201.  
  3202. RETURN
  3203. *EOP Thai3lev
  3204.  
  3205. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3206. * Function....: ThaiPADC
  3207. * Called by...: global
  3208. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  3209. * Returns.....:
  3210. * Parameters..:
  3211. * Notes.......:
  3212. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3213. FUNCTION ThaiPADC( pcStr, lnLen )
  3214. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  3215.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  3216. *EOF TPADC
  3217.  
  3218. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3219. * Function....: ThaiLen
  3220. * Called by...: global
  3221. * Abstract....: length of Thai string
  3222. * Returns.....:
  3223. * Parameters..:
  3224. * Notes.......:
  3225. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3226. FUNCTION ThaiLen(  pcStr )
  3227. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  3228. *EOF TLen
  3229. * Returns.....:
  3230. * Parameters..:
  3231. * Notes.......:
  3232. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3233. FUNCTION ThaiStr
  3234.         PARAMETERS pcStr
  3235.         PRIVATE lnTuplo, l, c, llSuccess
  3236.         llSuccess = FALSE
  3237.         lnTuplo = LEN( TUPLOSTR )
  3238.         FOR l=1 TO lnTuplo
  3239.            c = SUBSTR( TUPLOSTR,l,1 )
  3240.            IF !EMPTY(AT(c, pcStr))
  3241.                 llSuccess = TRUE
  3242.                 EXIT
  3243.            ENDIF
  3244.         ENDFOR &&* l=1 TO lnTuplo
  3245.        
  3246. RETURN llSuccess
  3247. *EOF ThaiStr
  3248.  
  3249. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3250. * Function....: Numthai
  3251. * Called by...: global
  3252. * Abstract....: thai character of number
  3253. * Returns.....:
  3254. * Parameters..:
  3255. * Notes.......:
  3256. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3257. FUNCTION Numthai( pnBaht )
  3258.        
  3259. LOCAL lcBaht1, lcBaht2
  3260.        
  3261. DIMENSION laNum[9], laDigit[6]
  3262.  
  3263.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  3264.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  3265.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  3266.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  3267.         laNum[5] = '&Euml;&eacute;&Ograve;'
  3268.         laNum[6] = '&Euml;&iexcl;'
  3269.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  3270.         laNum[8] = '&aacute;&raquo;&acute;'
  3271.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  3272.        
  3273.         laDigit[6] = ''
  3274.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  3275.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  3276.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  3277.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  3278.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  3279.        
  3280.         lcBaht1 = STR(pnBaht,15,2)
  3281.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  3282.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  3283.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  3284.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  3285.        
  3286. RETURN lcBaht2
  3287. *EOF Numthai
  3288.  
  3289. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3290. * Function....: NumLet2
  3291. * Called by...: Numthai
  3292. * Abstract....: calculate thai character
  3293. * Returns.....: lcStr
  3294. * Parameters..:
  3295. * Notes.......:
  3296. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3297. FUNCTION NumLet2(  pcStr )
  3298.  
  3299. LOCAL lcStr, l
  3300. lcStr = ""
  3301. FOR l=1 TO 6
  3302.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  3303.         DO CASE
  3304.         CASE lnDigit = 0
  3305.         CASE l = 5 AND lnDigit = 2
  3306.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  3307.         CASE l = 5 AND lnDigit = 1
  3308.                         lcStr = lcStr + laDigit[l]
  3309.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  3310.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  3311.         OTHERWISE
  3312.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  3313.         ENDCASE
  3314. ENDFOR
  3315. RETURN lcStr
  3316. *EOF NumLet2
  3317.  
  3318. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3319. * Procedure...: Thai3lev
  3320. * Called by...:
  3321. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  3322. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  3323. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  3324. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  3325. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  3326. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  3327. *
  3328. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  3329. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3330. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  3331.        
  3332.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  3333.        
  3334.         DIMENSION laLevel[4], laThChr[3]
  3335.        
  3336.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  3337.         *********      
  3338.         IF !plThaiCode
  3339.         ***** KU code *****
  3340.                  lcVowel0 = "12345"
  3341.                  lcVowel1 = "238243247251234230"
  3342.  
  3343.                 pcStr   = ThaiCode(pcStr,FALSE)        
  3344.                
  3345.                 laThChr[1] = k_lv1KU
  3346.                 laThChr[2] = k_lv2KU
  3347.                 laThChr[3] = k_lv4KU
  3348.                
  3349.         *******************
  3350.         ELSE
  3351.         ***** TIS code *****
  3352.                 lcVowel0 = "12345"
  3353.                 lcVowel1 = "150155219251251"
  3354.  
  3355.                 laThChr[1] = k_lv1TIS
  3356.                 laThChr[2] = k_lv2TIS
  3357.                 laThChr[3] = k_lv4TIS
  3358.  
  3359.         *******************
  3360.         ENDIF
  3361.        
  3362.  
  3363.         lnTrim  = LEN(TRIM(pcStr))
  3364.         lnNewLen = 0
  3365.        
  3366.         FOR l=1 TO lnTrim
  3367.                 lnLevel = 0
  3368.                 lcChar = SUBSTR( pcStr, l, 1)
  3369.                 FOR k=1 TO 3
  3370.                    IF lcChar $ laThChr[k]
  3371.                         lnLevel = k
  3372.                         EXIT
  3373.                    ENDIF
  3374.                 ENDFOR &&* k=1 TO 3
  3375.                 DO CASE
  3376.                 CASE lnLevel = 0
  3377.                         lnLevel = 3
  3378.                         lnNewLen = lnNewLen + 1
  3379.                 CASE lnLevel = 3
  3380.                         lnLevel = 4
  3381.                 ENDCASE
  3382.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  3383.         ENDFOR
  3384.        
  3385.         FOR l=1 TO lnNewLen
  3386.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  3387.                 IF lcChar1 # " "
  3388.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  3389.                         IF lcChar2 = " "
  3390.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  3391.                         ELSE
  3392.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  3393.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  3394.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  3395.                         ENDIF
  3396.                 ENDIF
  3397.         ENDFOR
  3398.        
  3399.         TH_1 = laLevel(2)
  3400.         TH_2 = laLevel(3)
  3401.         TH_3 = laLevel(4)
  3402.  
  3403. RETURN
  3404. *EOP Thai3lev
  3405.  
  3406. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3407. * Function....: ThaiPADC
  3408. * Called by...: global
  3409. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  3410. * Returns.....:
  3411. * Parameters..:
  3412. * Notes.......:
  3413. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3414. FUNCTION ThaiPADC( pcStr, lnLen )
  3415. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  3416.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  3417. *EOF TPADC
  3418.  
  3419. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3420. * Function....: ThaiLen
  3421. * Called by...: global
  3422. * Abstract....: length of Thai string
  3423. * Returns.....:
  3424. * Parameters..:
  3425. * Notes.......:
  3426. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3427. FUNCTION ThaiLen(  pcStr )
  3428. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  3429. *EOF TLen
  3430. * Parameters..:
  3431. * Notes.......:
  3432. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3433. FUNCTION ThaiStr
  3434.         PARAMETERS pcStr
  3435.         PRIVATE lnTuplo, l, c, llSuccess
  3436.         llSuccess = FALSE
  3437.         lnTuplo = LEN( TUPLOSTR )
  3438.         FOR l=1 TO lnTuplo
  3439.            c = SUBSTR( TUPLOSTR,l,1 )
  3440.            IF !EMPTY(AT(c, pcStr))
  3441.                 llSuccess = TRUE
  3442.                 EXIT
  3443.            ENDIF
  3444.         ENDFOR &&* l=1 TO lnTuplo
  3445.        
  3446. RETURN llSuccess
  3447. *EOF ThaiStr
  3448.  
  3449. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3450. * Function....: Numthai
  3451. * Called by...: global
  3452. * Abstract....: thai character of number
  3453. * Returns.....:
  3454. * Parameters..:
  3455. * Notes.......:
  3456. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3457. FUNCTION Numthai( pnBaht )
  3458.        
  3459. LOCAL lcBaht1, lcBaht2
  3460.        
  3461. DIMENSION laNum[9], laDigit[6]
  3462.  
  3463.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  3464.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  3465.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  3466.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  3467.         laNum[5] = '&Euml;&eacute;&Ograve;'
  3468.         laNum[6] = '&Euml;&iexcl;'
  3469.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  3470.         laNum[8] = '&aacute;&raquo;&acute;'
  3471.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  3472.        
  3473.         laDigit[6] = ''
  3474.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  3475.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  3476.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  3477.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  3478.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  3479.        
  3480.         lcBaht1 = STR(pnBaht,15,2)
  3481.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  3482.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  3483.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  3484.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  3485.        
  3486. RETURN lcBaht2
  3487. *EOF Numthai
  3488.  
  3489. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3490. * Function....: NumLet2
  3491. * Called by...: Numthai
  3492. * Abstract....: calculate thai character
  3493. * Returns.....: lcStr
  3494. * Parameters..:
  3495. * Notes.......:
  3496. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3497. FUNCTION NumLet2(  pcStr )
  3498.  
  3499. LOCAL lcStr, l
  3500. lcStr = ""
  3501. FOR l=1 TO 6
  3502.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  3503.         DO CASE
  3504.         CASE lnDigit = 0
  3505.         CASE l = 5 AND lnDigit = 2
  3506.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  3507.         CASE l = 5 AND lnDigit = 1
  3508.                         lcStr = lcStr + laDigit[l]
  3509.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  3510.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  3511.         OTHERWISE
  3512.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  3513.         ENDCASE
  3514. ENDFOR
  3515. RETURN lcStr
  3516. *EOF NumLet2
  3517.  
  3518. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3519. * Procedure...: Thai3lev
  3520. * Called by...:
  3521. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  3522. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  3523. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  3524. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  3525. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  3526. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  3527. *
  3528. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  3529. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3530. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  3531.        
  3532.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  3533.        
  3534.         DIMENSION laLevel[4], laThChr[3]
  3535.        
  3536.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  3537.         *********      
  3538.         IF !plThaiCode
  3539.         ***** KU code *****
  3540.                  lcVowel0 = "12345"
  3541.                  lcVowel1 = "238243247251234230"
  3542.  
  3543.                 pcStr   = ThaiCode(pcStr,FALSE)        
  3544.                
  3545.                 laThChr[1] = k_lv1KU
  3546.                 laThChr[2] = k_lv2KU
  3547.                 laThChr[3] = k_lv4KU
  3548.                
  3549.         *******************
  3550.         ELSE
  3551.         ***** TIS code *****
  3552.                 lcVowel0 = "12345"
  3553.                 lcVowel1 = "150155219251251"
  3554.  
  3555.                 laThChr[1] = k_lv1TIS
  3556.                 laThChr[2] = k_lv2TIS
  3557.                 laThChr[3] = k_lv4TIS
  3558.  
  3559.         *******************
  3560.         ENDIF
  3561.        
  3562.  
  3563.         lnTrim  = LEN(TRIM(pcStr))
  3564.         lnNewLen = 0
  3565.        
  3566.         FOR l=1 TO lnTrim
  3567.                 lnLevel = 0
  3568.                 lcChar = SUBSTR( pcStr, l, 1)
  3569.                 FOR k=1 TO 3
  3570.                    IF lcChar $ laThChr[k]
  3571.                         lnLevel = k
  3572.                         EXIT
  3573.                    ENDIF
  3574.                 ENDFOR &&* k=1 TO 3
  3575.                 DO CASE
  3576.                 CASE lnLevel = 0
  3577.                         lnLevel = 3
  3578.                         lnNewLen = lnNewLen + 1
  3579.                 CASE lnLevel = 3
  3580.                         lnLevel = 4
  3581.                 ENDCASE
  3582.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  3583.         ENDFOR
  3584.        
  3585.         FOR l=1 TO lnNewLen
  3586.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  3587.                 IF lcChar1 # " "
  3588.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  3589.                         IF lcChar2 = " "
  3590.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  3591.                         ELSE
  3592.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  3593.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  3594.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  3595.                         ENDIF
  3596.                 ENDIF
  3597.         ENDFOR
  3598.        
  3599.         TH_1 = laLevel(2)
  3600.         TH_2 = laLevel(3)
  3601.         TH_3 = laLevel(4)
  3602.  
  3603. RETURN
  3604. *EOP Thai3lev
  3605.  
  3606. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3607. * Function....: ThaiPADC
  3608. * Called by...: global
  3609. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  3610. * Returns.....:
  3611. * Parameters..:
  3612. * Notes.......:
  3613. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3614. FUNCTION ThaiPADC( pcStr, lnLen )
  3615. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  3616.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  3617. *EOF TPADC
  3618.  
  3619. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3620. * Function....: ThaiLen
  3621. * Called by...: global
  3622. * Abstract....: length of Thai string
  3623. * Returns.....:
  3624. * Parameters..:
  3625. * Notes.......:
  3626. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3627. FUNCTION ThaiLen(  pcStr )
  3628. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  3629. *EOF TLen
  3630. * Notes.......:
  3631. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3632. FUNCTION ThaiStr
  3633.         PARAMETERS pcStr
  3634.         PRIVATE lnTuplo, l, c, llSuccess
  3635.         llSuccess = FALSE
  3636.         lnTuplo = LEN( TUPLOSTR )
  3637.         FOR l=1 TO lnTuplo
  3638.            c = SUBSTR( TUPLOSTR,l,1 )
  3639.            IF !EMPTY(AT(c, pcStr))
  3640.                 llSuccess = TRUE
  3641.                 EXIT
  3642.            ENDIF
  3643.         ENDFOR &&* l=1 TO lnTuplo
  3644.        
  3645. RETURN llSuccess
  3646. *EOF ThaiStr
  3647.  
  3648. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3649. * Function....: Numthai
  3650. * Called by...: global
  3651. * Abstract....: thai character of number
  3652. * Returns.....:
  3653. * Parameters..:
  3654. * Notes.......:
  3655. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3656. FUNCTION Numthai( pnBaht )
  3657.        
  3658. LOCAL lcBaht1, lcBaht2
  3659.        
  3660. DIMENSION laNum[9], laDigit[6]
  3661.  
  3662.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  3663.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  3664.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  3665.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  3666.         laNum[5] = '&Euml;&eacute;&Ograve;'
  3667.         laNum[6] = '&Euml;&iexcl;'
  3668.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  3669.         laNum[8] = '&aacute;&raquo;&acute;'
  3670.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  3671.        
  3672.         laDigit[6] = ''
  3673.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  3674.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  3675.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  3676.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  3677.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  3678.        
  3679.         lcBaht1 = STR(pnBaht,15,2)
  3680.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  3681.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  3682.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  3683.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  3684.        
  3685. RETURN lcBaht2
  3686. *EOF Numthai
  3687.  
  3688. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3689. * Function....: NumLet2
  3690. * Called by...: Numthai
  3691. * Abstract....: calculate thai character
  3692. * Returns.....: lcStr
  3693. * Parameters..:
  3694. * Notes.......:
  3695. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3696. FUNCTION NumLet2(  pcStr )
  3697.  
  3698. LOCAL lcStr, l
  3699. lcStr = ""
  3700. FOR l=1 TO 6
  3701.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  3702.         DO CASE
  3703.         CASE lnDigit = 0
  3704.         CASE l = 5 AND lnDigit = 2
  3705.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  3706.         CASE l = 5 AND lnDigit = 1
  3707.                         lcStr = lcStr + laDigit[l]
  3708.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  3709.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  3710.         OTHERWISE
  3711.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  3712.         ENDCASE
  3713. ENDFOR
  3714. RETURN lcStr
  3715. *EOF NumLet2
  3716.  
  3717. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3718. * Procedure...: Thai3lev
  3719. * Called by...:
  3720. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  3721. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  3722. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  3723. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  3724. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  3725. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  3726. *
  3727. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  3728. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3729. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  3730.        
  3731.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  3732.        
  3733.         DIMENSION laLevel[4], laThChr[3]
  3734.        
  3735.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  3736.         *********      
  3737.         IF !plThaiCode
  3738.         ***** KU code *****
  3739.                  lcVowel0 = "12345"
  3740.                  lcVowel1 = "238243247251234230"
  3741.  
  3742.                 pcStr   = ThaiCode(pcStr,FALSE)        
  3743.                
  3744.                 laThChr[1] = k_lv1KU
  3745.                 laThChr[2] = k_lv2KU
  3746.                 laThChr[3] = k_lv4KU
  3747.                
  3748.         *******************
  3749.         ELSE
  3750.         ***** TIS code *****
  3751.                 lcVowel0 = "12345"
  3752.                 lcVowel1 = "150155219251251"
  3753.  
  3754.                 laThChr[1] = k_lv1TIS
  3755.                 laThChr[2] = k_lv2TIS
  3756.                 laThChr[3] = k_lv4TIS
  3757.  
  3758.         *******************
  3759.         ENDIF
  3760.        
  3761.  
  3762.         lnTrim  = LEN(TRIM(pcStr))
  3763.         lnNewLen = 0
  3764.        
  3765.         FOR l=1 TO lnTrim
  3766.                 lnLevel = 0
  3767.                 lcChar = SUBSTR( pcStr, l, 1)
  3768.                 FOR k=1 TO 3
  3769.                    IF lcChar $ laThChr[k]
  3770.                         lnLevel = k
  3771.                         EXIT
  3772.                    ENDIF
  3773.                 ENDFOR &&* k=1 TO 3
  3774.                 DO CASE
  3775.                 CASE lnLevel = 0
  3776.                         lnLevel = 3
  3777.                         lnNewLen = lnNewLen + 1
  3778.                 CASE lnLevel = 3
  3779.                         lnLevel = 4
  3780.                 ENDCASE
  3781.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  3782.         ENDFOR
  3783.        
  3784.         FOR l=1 TO lnNewLen
  3785.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  3786.                 IF lcChar1 # " "
  3787.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  3788.                         IF lcChar2 = " "
  3789.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  3790.                         ELSE
  3791.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  3792.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  3793.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  3794.                         ENDIF
  3795.                 ENDIF
  3796.         ENDFOR
  3797.        
  3798.         TH_1 = laLevel(2)
  3799.         TH_2 = laLevel(3)
  3800.         TH_3 = laLevel(4)
  3801.  
  3802. RETURN
  3803. *EOP Thai3lev
  3804.  
  3805. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3806. * Function....: ThaiPADC
  3807. * Called by...: global
  3808. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  3809. * Returns.....:
  3810. * Parameters..:
  3811. * Notes.......:
  3812. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3813. FUNCTION ThaiPADC( pcStr, lnLen )
  3814. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  3815.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  3816. *EOF TPADC
  3817.  
  3818. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3819. * Function....: ThaiLen
  3820. * Called by...: global
  3821. * Abstract....: length of Thai string
  3822. * Returns.....:
  3823. * Parameters..:
  3824. * Notes.......:
  3825. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3826. FUNCTION ThaiLen(  pcStr )
  3827. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  3828. *EOF TLen
  3829. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3830. FUNCTION ThaiStr
  3831.         PARAMETERS pcStr
  3832.         PRIVATE lnTuplo, l, c, llSuccess
  3833.         llSuccess = FALSE
  3834.         lnTuplo = LEN( TUPLOSTR )
  3835.         FOR l=1 TO lnTuplo
  3836.            c = SUBSTR( TUPLOSTR,l,1 )
  3837.            IF !EMPTY(AT(c, pcStr))
  3838.                 llSuccess = TRUE
  3839.                 EXIT
  3840.            ENDIF
  3841.         ENDFOR &&* l=1 TO lnTuplo
  3842.        
  3843. RETURN llSuccess
  3844. *EOF ThaiStr
  3845.  
  3846. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3847. * Function....: Numthai
  3848. * Called by...: global
  3849. * Abstract....: thai character of number
  3850. * Returns.....:
  3851. * Parameters..:
  3852. * Notes.......:
  3853. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3854. FUNCTION Numthai( pnBaht )
  3855.        
  3856. LOCAL lcBaht1, lcBaht2
  3857.        
  3858. DIMENSION laNum[9], laDigit[6]
  3859.  
  3860.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  3861.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  3862.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  3863.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  3864.         laNum[5] = '&Euml;&eacute;&Ograve;'
  3865.         laNum[6] = '&Euml;&iexcl;'
  3866.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  3867.         laNum[8] = '&aacute;&raquo;&acute;'
  3868.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  3869.        
  3870.         laDigit[6] = ''
  3871.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  3872.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  3873.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  3874.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  3875.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  3876.        
  3877.         lcBaht1 = STR(pnBaht,15,2)
  3878.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  3879.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  3880.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  3881.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  3882.        
  3883. RETURN lcBaht2
  3884. *EOF Numthai
  3885.  
  3886. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3887. * Function....: NumLet2
  3888. * Called by...: Numthai
  3889. * Abstract....: calculate thai character
  3890. * Returns.....: lcStr
  3891. * Parameters..:
  3892. * Notes.......:
  3893. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3894. FUNCTION NumLet2(  pcStr )
  3895.  
  3896. LOCAL lcStr, l
  3897. lcStr = ""
  3898. FOR l=1 TO 6
  3899.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  3900.         DO CASE
  3901.         CASE lnDigit = 0
  3902.         CASE l = 5 AND lnDigit = 2
  3903.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  3904.         CASE l = 5 AND lnDigit = 1
  3905.                         lcStr = lcStr + laDigit[l]
  3906.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  3907.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  3908.         OTHERWISE
  3909.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  3910.         ENDCASE
  3911. ENDFOR
  3912. RETURN lcStr
  3913. *EOF NumLet2
  3914.  
  3915. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3916. * Procedure...: Thai3lev
  3917. * Called by...:
  3918. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  3919. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  3920. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  3921. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  3922. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  3923. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  3924. *
  3925. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  3926. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  3927. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  3928.        
  3929.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  3930.        
  3931.         DIMENSION laLevel[4], laThChr[3]
  3932.        
  3933.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  3934.         *********      
  3935.         IF !plThaiCode
  3936.         ***** KU code *****
  3937.                  lcVowel0 = "12345"
  3938.                  lcVowel1 = "238243247251234230"
  3939.  
  3940.                 pcStr   = ThaiCode(pcStr,FALSE)        
  3941.                
  3942.                 laThChr[1] = k_lv1KU
  3943.                 laThChr[2] = k_lv2KU
  3944.                 laThChr[3] = k_lv4KU
  3945.                
  3946.         *******************
  3947.         ELSE
  3948.         ***** TIS code *****
  3949.                 lcVowel0 = "12345"
  3950.                 lcVowel1 = "150155219251251"
  3951.  
  3952.                 laThChr[1] = k_lv1TIS
  3953.                 laThChr[2] = k_lv2TIS
  3954.                 laThChr[3] = k_lv4TIS
  3955.  
  3956.         *******************
  3957.         ENDIF
  3958.        
  3959.  
  3960.         lnTrim  = LEN(TRIM(pcStr))
  3961.         lnNewLen = 0
  3962.        
  3963.         FOR l=1 TO lnTrim
  3964.                 lnLevel = 0
  3965.                 lcChar = SUBSTR( pcStr, l, 1)
  3966.                 FOR k=1 TO 3
  3967.                    IF lcChar $ laThChr[k]
  3968.                         lnLevel = k
  3969.                         EXIT
  3970.                    ENDIF
  3971.                 ENDFOR &&* k=1 TO 3
  3972.                 DO CASE
  3973.                 CASE lnLevel = 0
  3974.                         lnLevel = 3
  3975.                         lnNewLen = lnNewLen + 1
  3976.                 CASE lnLevel = 3
  3977.                         lnLevel = 4
  3978.                 ENDCASE
  3979.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  3980.         ENDFOR
  3981.        
  3982.         FOR l=1 TO lnNewLen
  3983.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  3984.                 IF lcChar1 # " "
  3985.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  3986.                         IF lcChar2 = " "
  3987.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  3988.                         ELSE
  3989.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  3990.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  3991.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  3992.                         ENDIF
  3993.                 ENDIF
  3994.         ENDFOR
  3995.        
  3996.         TH_1 = laLevel(2)
  3997.         TH_2 = laLevel(3)
  3998.         TH_3 = laLevel(4)
  3999.  
  4000. RETURN
  4001. *EOP Thai3lev
  4002.  
  4003. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4004. * Function....: ThaiPADC
  4005. * Called by...: global
  4006. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  4007. * Returns.....:
  4008. * Parameters..:
  4009. * Notes.......:
  4010. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4011. FUNCTION ThaiPADC( pcStr, lnLen )
  4012. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  4013.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  4014. *EOF TPADC
  4015.  
  4016. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4017. * Function....: ThaiLen
  4018. * Called by...: global
  4019. * Abstract....: length of Thai string
  4020. * Returns.....:
  4021. * Parameters..:
  4022. * Notes.......:
  4023. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4024. FUNCTION ThaiLen(  pcStr )
  4025. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  4026. *EOF TLen
  4027. *EOF ThaiStr
  4028. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4029. * Function....: Numthai
  4030. * Called by...: global
  4031. * Abstract....: thai character of number
  4032. * Returns.....:
  4033. * Parameters..:
  4034. * Notes.......:
  4035. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4036. FUNCTION Numthai( pnBaht )
  4037.        
  4038. LOCAL lcBaht1, lcBaht2
  4039.        
  4040. DIMENSION laNum[9], laDigit[6]
  4041.  
  4042.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  4043.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  4044.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  4045.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  4046.         laNum[5] = '&Euml;&eacute;&Ograve;'
  4047.         laNum[6] = '&Euml;&iexcl;'
  4048.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  4049.         laNum[8] = '&aacute;&raquo;&acute;'
  4050.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  4051.        
  4052.         laDigit[6] = ''
  4053.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  4054.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  4055.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  4056.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  4057.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  4058.        
  4059.         lcBaht1 = STR(pnBaht,15,2)
  4060.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  4061.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  4062.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  4063.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  4064.        
  4065. RETURN lcBaht2
  4066. *EOF Numthai
  4067.  
  4068. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4069. * Function....: NumLet2
  4070. * Called by...: Numthai
  4071. * Abstract....: calculate thai character
  4072. * Returns.....: lcStr
  4073. * Parameters..:
  4074. * Notes.......:
  4075. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4076. FUNCTION NumLet2(  pcStr )
  4077.  
  4078. LOCAL lcStr, l
  4079. lcStr = ""
  4080. FOR l=1 TO 6
  4081.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  4082.         DO CASE
  4083.         CASE lnDigit = 0
  4084.         CASE l = 5 AND lnDigit = 2
  4085.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  4086.         CASE l = 5 AND lnDigit = 1
  4087.                         lcStr = lcStr + laDigit[l]
  4088.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  4089.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  4090.         OTHERWISE
  4091.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  4092.         ENDCASE
  4093. ENDFOR
  4094. RETURN lcStr
  4095. *EOF NumLet2
  4096.  
  4097. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4098. * Procedure...: Thai3lev
  4099. * Called by...:
  4100. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  4101. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  4102. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  4103. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  4104. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  4105. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  4106. *
  4107. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  4108. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4109. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  4110.        
  4111.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  4112.        
  4113.         DIMENSION laLevel[4], laThChr[3]
  4114.        
  4115.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  4116.         *********      
  4117.         IF !plThaiCode
  4118.         ***** KU code *****
  4119.                  lcVowel0 = "12345"
  4120.                  lcVowel1 = "238243247251234230"
  4121.  
  4122.                 pcStr   = ThaiCode(pcStr,FALSE)        
  4123.                
  4124.                 laThChr[1] = k_lv1KU
  4125.                 laThChr[2] = k_lv2KU
  4126.                 laThChr[3] = k_lv4KU
  4127.                
  4128.         *******************
  4129.         ELSE
  4130.         ***** TIS code *****
  4131.                 lcVowel0 = "12345"
  4132.                 lcVowel1 = "150155219251251"
  4133.  
  4134.                 laThChr[1] = k_lv1TIS
  4135.                 laThChr[2] = k_lv2TIS
  4136.                 laThChr[3] = k_lv4TIS
  4137.  
  4138.         *******************
  4139.         ENDIF
  4140.        
  4141.  
  4142.         lnTrim  = LEN(TRIM(pcStr))
  4143.         lnNewLen = 0
  4144.        
  4145.         FOR l=1 TO lnTrim
  4146.                 lnLevel = 0
  4147.                 lcChar = SUBSTR( pcStr, l, 1)
  4148.                 FOR k=1 TO 3
  4149.                    IF lcChar $ laThChr[k]
  4150.                         lnLevel = k
  4151.                         EXIT
  4152.                    ENDIF
  4153.                 ENDFOR &&* k=1 TO 3
  4154.                 DO CASE
  4155.                 CASE lnLevel = 0
  4156.                         lnLevel = 3
  4157.                         lnNewLen = lnNewLen + 1
  4158.                 CASE lnLevel = 3
  4159.                         lnLevel = 4
  4160.                 ENDCASE
  4161.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  4162.         ENDFOR
  4163.        
  4164.         FOR l=1 TO lnNewLen
  4165.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  4166.                 IF lcChar1 # " "
  4167.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  4168.                         IF lcChar2 = " "
  4169.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  4170.                         ELSE
  4171.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  4172.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  4173.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  4174.                         ENDIF
  4175.                 ENDIF
  4176.         ENDFOR
  4177.        
  4178.         TH_1 = laLevel(2)
  4179.         TH_2 = laLevel(3)
  4180.         TH_3 = laLevel(4)
  4181.  
  4182. RETURN
  4183. *EOP Thai3lev
  4184.  
  4185. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4186. * Function....: ThaiPADC
  4187. * Called by...: global
  4188. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  4189. * Returns.....:
  4190. * Parameters..:
  4191. * Notes.......:
  4192. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4193. FUNCTION ThaiPADC( pcStr, lnLen )
  4194. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  4195.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  4196. *EOF TPADC
  4197.  
  4198. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4199. * Function....: ThaiLen
  4200. * Called by...: global
  4201. * Abstract....: length of Thai string
  4202. * Returns.....:
  4203. * Parameters..:
  4204. * Notes.......:
  4205. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4206. FUNCTION ThaiLen(  pcStr )
  4207. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  4208. *EOF TLen
  4209. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4210. * Function....: Numthai
  4211. * Called by...: global
  4212. * Abstract....: thai character of number
  4213. * Returns.....:
  4214. * Parameters..:
  4215. * Notes.......:
  4216. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4217. FUNCTION Numthai( pnBaht )
  4218.        
  4219. LOCAL lcBaht1, lcBaht2
  4220.        
  4221. DIMENSION laNum[9], laDigit[6]
  4222.  
  4223.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  4224.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  4225.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  4226.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  4227.         laNum[5] = '&Euml;&eacute;&Ograve;'
  4228.         laNum[6] = '&Euml;&iexcl;'
  4229.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  4230.         laNum[8] = '&aacute;&raquo;&acute;'
  4231.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  4232.        
  4233.         laDigit[6] = ''
  4234.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  4235.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  4236.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  4237.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  4238.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  4239.        
  4240.         lcBaht1 = STR(pnBaht,15,2)
  4241.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  4242.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  4243.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  4244.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  4245.        
  4246. RETURN lcBaht2
  4247. *EOF Numthai
  4248.  
  4249. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4250. * Function....: NumLet2
  4251. * Called by...: Numthai
  4252. * Abstract....: calculate thai character
  4253. * Returns.....: lcStr
  4254. * Parameters..:
  4255. * Notes.......:
  4256. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4257. FUNCTION NumLet2(  pcStr )
  4258.  
  4259. LOCAL lcStr, l
  4260. lcStr = ""
  4261. FOR l=1 TO 6
  4262.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  4263.         DO CASE
  4264.         CASE lnDigit = 0
  4265.         CASE l = 5 AND lnDigit = 2
  4266.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  4267.         CASE l = 5 AND lnDigit = 1
  4268.                         lcStr = lcStr + laDigit[l]
  4269.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  4270.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  4271.         OTHERWISE
  4272.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  4273.         ENDCASE
  4274. ENDFOR
  4275. RETURN lcStr
  4276. *EOF NumLet2
  4277.  
  4278. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4279. * Procedure...: Thai3lev
  4280. * Called by...:
  4281. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  4282. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  4283. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  4284. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  4285. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  4286. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  4287. *
  4288. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  4289. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4290. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  4291.        
  4292.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  4293.        
  4294.         DIMENSION laLevel[4], laThChr[3]
  4295.        
  4296.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  4297.         *********      
  4298.         IF !plThaiCode
  4299.         ***** KU code *****
  4300.                  lcVowel0 = "12345"
  4301.                  lcVowel1 = "238243247251234230"
  4302.  
  4303.                 pcStr   = ThaiCode(pcStr,FALSE)        
  4304.                
  4305.                 laThChr[1] = k_lv1KU
  4306.                 laThChr[2] = k_lv2KU
  4307.                 laThChr[3] = k_lv4KU
  4308.                
  4309.         *******************
  4310.         ELSE
  4311.         ***** TIS code *****
  4312.                 lcVowel0 = "12345"
  4313.                 lcVowel1 = "150155219251251"
  4314.  
  4315.                 laThChr[1] = k_lv1TIS
  4316.                 laThChr[2] = k_lv2TIS
  4317.                 laThChr[3] = k_lv4TIS
  4318.  
  4319.         *******************
  4320.         ENDIF
  4321.        
  4322.  
  4323.         lnTrim  = LEN(TRIM(pcStr))
  4324.         lnNewLen = 0
  4325.        
  4326.         FOR l=1 TO lnTrim
  4327.                 lnLevel = 0
  4328.                 lcChar = SUBSTR( pcStr, l, 1)
  4329.                 FOR k=1 TO 3
  4330.                    IF lcChar $ laThChr[k]
  4331.                         lnLevel = k
  4332.                         EXIT
  4333.                    ENDIF
  4334.                 ENDFOR &&* k=1 TO 3
  4335.                 DO CASE
  4336.                 CASE lnLevel = 0
  4337.                         lnLevel = 3
  4338.                         lnNewLen = lnNewLen + 1
  4339.                 CASE lnLevel = 3
  4340.                         lnLevel = 4
  4341.                 ENDCASE
  4342.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  4343.         ENDFOR
  4344.        
  4345.         FOR l=1 TO lnNewLen
  4346.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  4347.                 IF lcChar1 # " "
  4348.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  4349.                         IF lcChar2 = " "
  4350.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  4351.                         ELSE
  4352.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  4353.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  4354.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  4355.                         ENDIF
  4356.                 ENDIF
  4357.         ENDFOR
  4358.        
  4359.         TH_1 = laLevel(2)
  4360.         TH_2 = laLevel(3)
  4361.         TH_3 = laLevel(4)
  4362.  
  4363. RETURN
  4364. *EOP Thai3lev
  4365.  
  4366. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4367. * Function....: ThaiPADC
  4368. * Called by...: global
  4369. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  4370. * Returns.....:
  4371. * Parameters..:
  4372. * Notes.......:
  4373. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4374. FUNCTION ThaiPADC( pcStr, lnLen )
  4375. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  4376.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  4377. *EOF TPADC
  4378.  
  4379. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4380. * Function....: ThaiLen
  4381. * Called by...: global
  4382. * Abstract....: length of Thai string
  4383. * Returns.....:
  4384. * Parameters..:
  4385. * Notes.......:
  4386. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4387. FUNCTION ThaiLen(  pcStr )
  4388. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  4389. *EOF TLen
  4390. * Function....: Numthai
  4391. * Called by...: global
  4392. * Abstract....: thai character of number
  4393. * Returns.....:
  4394. * Parameters..:
  4395. * Notes.......:
  4396. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4397. FUNCTION Numthai( pnBaht )
  4398.        
  4399. LOCAL lcBaht1, lcBaht2
  4400.        
  4401. DIMENSION laNum[9], laDigit[6]
  4402.  
  4403.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  4404.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  4405.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  4406.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  4407.         laNum[5] = '&Euml;&eacute;&Ograve;'
  4408.         laNum[6] = '&Euml;&iexcl;'
  4409.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  4410.         laNum[8] = '&aacute;&raquo;&acute;'
  4411.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  4412.        
  4413.         laDigit[6] = ''
  4414.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  4415.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  4416.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  4417.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  4418.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  4419.        
  4420.         lcBaht1 = STR(pnBaht,15,2)
  4421.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  4422.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  4423.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  4424.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  4425.        
  4426. RETURN lcBaht2
  4427. *EOF Numthai
  4428.  
  4429. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4430. * Function....: NumLet2
  4431. * Called by...: Numthai
  4432. * Abstract....: calculate thai character
  4433. * Returns.....: lcStr
  4434. * Parameters..:
  4435. * Notes.......:
  4436. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4437. FUNCTION NumLet2(  pcStr )
  4438.  
  4439. LOCAL lcStr, l
  4440. lcStr = ""
  4441. FOR l=1 TO 6
  4442.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  4443.         DO CASE
  4444.         CASE lnDigit = 0
  4445.         CASE l = 5 AND lnDigit = 2
  4446.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  4447.         CASE l = 5 AND lnDigit = 1
  4448.                         lcStr = lcStr + laDigit[l]
  4449.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  4450.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  4451.         OTHERWISE
  4452.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  4453.         ENDCASE
  4454. ENDFOR
  4455. RETURN lcStr
  4456. *EOF NumLet2
  4457.  
  4458. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4459. * Procedure...: Thai3lev
  4460. * Called by...:
  4461. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  4462. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  4463. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  4464. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  4465. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  4466. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  4467. *
  4468. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  4469. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4470. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  4471.        
  4472.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  4473.        
  4474.         DIMENSION laLevel[4], laThChr[3]
  4475.        
  4476.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  4477.         *********      
  4478.         IF !plThaiCode
  4479.         ***** KU code *****
  4480.                  lcVowel0 = "12345"
  4481.                  lcVowel1 = "238243247251234230"
  4482.  
  4483.                 pcStr   = ThaiCode(pcStr,FALSE)        
  4484.                
  4485.                 laThChr[1] = k_lv1KU
  4486.                 laThChr[2] = k_lv2KU
  4487.                 laThChr[3] = k_lv4KU
  4488.                
  4489.         *******************
  4490.         ELSE
  4491.         ***** TIS code *****
  4492.                 lcVowel0 = "12345"
  4493.                 lcVowel1 = "150155219251251"
  4494.  
  4495.                 laThChr[1] = k_lv1TIS
  4496.                 laThChr[2] = k_lv2TIS
  4497.                 laThChr[3] = k_lv4TIS
  4498.  
  4499.         *******************
  4500.         ENDIF
  4501.        
  4502.  
  4503.         lnTrim  = LEN(TRIM(pcStr))
  4504.         lnNewLen = 0
  4505.        
  4506.         FOR l=1 TO lnTrim
  4507.                 lnLevel = 0
  4508.                 lcChar = SUBSTR( pcStr, l, 1)
  4509.                 FOR k=1 TO 3
  4510.                    IF lcChar $ laThChr[k]
  4511.                         lnLevel = k
  4512.                         EXIT
  4513.                    ENDIF
  4514.                 ENDFOR &&* k=1 TO 3
  4515.                 DO CASE
  4516.                 CASE lnLevel = 0
  4517.                         lnLevel = 3
  4518.                         lnNewLen = lnNewLen + 1
  4519.                 CASE lnLevel = 3
  4520.                         lnLevel = 4
  4521.                 ENDCASE
  4522.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  4523.         ENDFOR
  4524.        
  4525.         FOR l=1 TO lnNewLen
  4526.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  4527.                 IF lcChar1 # " "
  4528.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  4529.                         IF lcChar2 = " "
  4530.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  4531.                         ELSE
  4532.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  4533.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  4534.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  4535.                         ENDIF
  4536.                 ENDIF
  4537.         ENDFOR
  4538.        
  4539.         TH_1 = laLevel(2)
  4540.         TH_2 = laLevel(3)
  4541.         TH_3 = laLevel(4)
  4542.  
  4543. RETURN
  4544. *EOP Thai3lev
  4545.  
  4546. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4547. * Function....: ThaiPADC
  4548. * Called by...: global
  4549. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  4550. * Returns.....:
  4551. * Parameters..:
  4552. * Notes.......:
  4553. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4554. FUNCTION ThaiPADC( pcStr, lnLen )
  4555. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  4556.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  4557. *EOF TPADC
  4558.  
  4559. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4560. * Function....: ThaiLen
  4561. * Called by...: global
  4562. * Abstract....: length of Thai string
  4563. * Returns.....:
  4564. * Parameters..:
  4565. * Notes.......:
  4566. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4567. FUNCTION ThaiLen(  pcStr )
  4568. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  4569. *EOF TLen
  4570. * Called by...: global
  4571. * Abstract....: thai character of number
  4572. * Returns.....:
  4573. * Parameters..:
  4574. * Notes.......:
  4575. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4576. FUNCTION Numthai( pnBaht )
  4577.        
  4578. LOCAL lcBaht1, lcBaht2
  4579.        
  4580. DIMENSION laNum[9], laDigit[6]
  4581.  
  4582.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  4583.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  4584.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  4585.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  4586.         laNum[5] = '&Euml;&eacute;&Ograve;'
  4587.         laNum[6] = '&Euml;&iexcl;'
  4588.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  4589.         laNum[8] = '&aacute;&raquo;&acute;'
  4590.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  4591.        
  4592.         laDigit[6] = ''
  4593.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  4594.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  4595.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  4596.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  4597.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  4598.        
  4599.         lcBaht1 = STR(pnBaht,15,2)
  4600.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  4601.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  4602.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  4603.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  4604.        
  4605. RETURN lcBaht2
  4606. *EOF Numthai
  4607.  
  4608. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4609. * Function....: NumLet2
  4610. * Called by...: Numthai
  4611. * Abstract....: calculate thai character
  4612. * Returns.....: lcStr
  4613. * Parameters..:
  4614. * Notes.......:
  4615. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4616. FUNCTION NumLet2(  pcStr )
  4617.  
  4618. LOCAL lcStr, l
  4619. lcStr = ""
  4620. FOR l=1 TO 6
  4621.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  4622.         DO CASE
  4623.         CASE lnDigit = 0
  4624.         CASE l = 5 AND lnDigit = 2
  4625.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  4626.         CASE l = 5 AND lnDigit = 1
  4627.                         lcStr = lcStr + laDigit[l]
  4628.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  4629.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  4630.         OTHERWISE
  4631.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  4632.         ENDCASE
  4633. ENDFOR
  4634. RETURN lcStr
  4635. *EOF NumLet2
  4636.  
  4637. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4638. * Procedure...: Thai3lev
  4639. * Called by...:
  4640. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  4641. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  4642. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  4643. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  4644. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  4645. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  4646. *
  4647. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  4648. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4649. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  4650.        
  4651.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  4652.        
  4653.         DIMENSION laLevel[4], laThChr[3]
  4654.        
  4655.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  4656.         *********      
  4657.         IF !plThaiCode
  4658.         ***** KU code *****
  4659.                  lcVowel0 = "12345"
  4660.                  lcVowel1 = "238243247251234230"
  4661.  
  4662.                 pcStr   = ThaiCode(pcStr,FALSE)        
  4663.                
  4664.                 laThChr[1] = k_lv1KU
  4665.                 laThChr[2] = k_lv2KU
  4666.                 laThChr[3] = k_lv4KU
  4667.                
  4668.         *******************
  4669.         ELSE
  4670.         ***** TIS code *****
  4671.                 lcVowel0 = "12345"
  4672.                 lcVowel1 = "150155219251251"
  4673.  
  4674.                 laThChr[1] = k_lv1TIS
  4675.                 laThChr[2] = k_lv2TIS
  4676.                 laThChr[3] = k_lv4TIS
  4677.  
  4678.         *******************
  4679.         ENDIF
  4680.        
  4681.  
  4682.         lnTrim  = LEN(TRIM(pcStr))
  4683.         lnNewLen = 0
  4684.        
  4685.         FOR l=1 TO lnTrim
  4686.                 lnLevel = 0
  4687.                 lcChar = SUBSTR( pcStr, l, 1)
  4688.                 FOR k=1 TO 3
  4689.                    IF lcChar $ laThChr[k]
  4690.                         lnLevel = k
  4691.                         EXIT
  4692.                    ENDIF
  4693.                 ENDFOR &&* k=1 TO 3
  4694.                 DO CASE
  4695.                 CASE lnLevel = 0
  4696.                         lnLevel = 3
  4697.                         lnNewLen = lnNewLen + 1
  4698.                 CASE lnLevel = 3
  4699.                         lnLevel = 4
  4700.                 ENDCASE
  4701.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  4702.         ENDFOR
  4703.        
  4704.         FOR l=1 TO lnNewLen
  4705.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  4706.                 IF lcChar1 # " "
  4707.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  4708.                         IF lcChar2 = " "
  4709.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  4710.                         ELSE
  4711.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  4712.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  4713.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  4714.                         ENDIF
  4715.                 ENDIF
  4716.         ENDFOR
  4717.        
  4718.         TH_1 = laLevel(2)
  4719.         TH_2 = laLevel(3)
  4720.         TH_3 = laLevel(4)
  4721.  
  4722. RETURN
  4723. *EOP Thai3lev
  4724.  
  4725. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4726. * Function....: ThaiPADC
  4727. * Called by...: global
  4728. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  4729. * Returns.....:
  4730. * Parameters..:
  4731. * Notes.......:
  4732. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4733. FUNCTION ThaiPADC( pcStr, lnLen )
  4734. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  4735.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  4736. *EOF TPADC
  4737.  
  4738. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4739. * Function....: ThaiLen
  4740. * Called by...: global
  4741. * Abstract....: length of Thai string
  4742. * Returns.....:
  4743. * Parameters..:
  4744. * Notes.......:
  4745. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4746. FUNCTION ThaiLen(  pcStr )
  4747. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  4748. *EOF TLen
  4749. * Abstract....: thai character of number
  4750. * Returns.....:
  4751. * Parameters..:
  4752. * Notes.......:
  4753. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4754. FUNCTION Numthai( pnBaht )
  4755.        
  4756. LOCAL lcBaht1, lcBaht2
  4757.        
  4758. DIMENSION laNum[9], laDigit[6]
  4759.  
  4760.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  4761.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  4762.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  4763.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  4764.         laNum[5] = '&Euml;&eacute;&Ograve;'
  4765.         laNum[6] = '&Euml;&iexcl;'
  4766.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  4767.         laNum[8] = '&aacute;&raquo;&acute;'
  4768.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  4769.        
  4770.         laDigit[6] = ''
  4771.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  4772.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  4773.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  4774.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  4775.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  4776.        
  4777.         lcBaht1 = STR(pnBaht,15,2)
  4778.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  4779.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  4780.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  4781.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  4782.        
  4783. RETURN lcBaht2
  4784. *EOF Numthai
  4785.  
  4786. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4787. * Function....: NumLet2
  4788. * Called by...: Numthai
  4789. * Abstract....: calculate thai character
  4790. * Returns.....: lcStr
  4791. * Parameters..:
  4792. * Notes.......:
  4793. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4794. FUNCTION NumLet2(  pcStr )
  4795.  
  4796. LOCAL lcStr, l
  4797. lcStr = ""
  4798. FOR l=1 TO 6
  4799.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  4800.         DO CASE
  4801.         CASE lnDigit = 0
  4802.         CASE l = 5 AND lnDigit = 2
  4803.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  4804.         CASE l = 5 AND lnDigit = 1
  4805.                         lcStr = lcStr + laDigit[l]
  4806.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  4807.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  4808.         OTHERWISE
  4809.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  4810.         ENDCASE
  4811. ENDFOR
  4812. RETURN lcStr
  4813. *EOF NumLet2
  4814.  
  4815. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4816. * Procedure...: Thai3lev
  4817. * Called by...:
  4818. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  4819. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  4820. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  4821. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  4822. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  4823. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  4824. *
  4825. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  4826. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4827. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  4828.        
  4829.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  4830.        
  4831.         DIMENSION laLevel[4], laThChr[3]
  4832.        
  4833.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  4834.         *********      
  4835.         IF !plThaiCode
  4836.         ***** KU code *****
  4837.                  lcVowel0 = "12345"
  4838.                  lcVowel1 = "238243247251234230"
  4839.  
  4840.                 pcStr   = ThaiCode(pcStr,FALSE)        
  4841.                
  4842.                 laThChr[1] = k_lv1KU
  4843.                 laThChr[2] = k_lv2KU
  4844.                 laThChr[3] = k_lv4KU
  4845.                
  4846.         *******************
  4847.         ELSE
  4848.         ***** TIS code *****
  4849.                 lcVowel0 = "12345"
  4850.                 lcVowel1 = "150155219251251"
  4851.  
  4852.                 laThChr[1] = k_lv1TIS
  4853.                 laThChr[2] = k_lv2TIS
  4854.                 laThChr[3] = k_lv4TIS
  4855.  
  4856.         *******************
  4857.         ENDIF
  4858.        
  4859.  
  4860.         lnTrim  = LEN(TRIM(pcStr))
  4861.         lnNewLen = 0
  4862.        
  4863.         FOR l=1 TO lnTrim
  4864.                 lnLevel = 0
  4865.                 lcChar = SUBSTR( pcStr, l, 1)
  4866.                 FOR k=1 TO 3
  4867.                    IF lcChar $ laThChr[k]
  4868.                         lnLevel = k
  4869.                         EXIT
  4870.                    ENDIF
  4871.                 ENDFOR &&* k=1 TO 3
  4872.                 DO CASE
  4873.                 CASE lnLevel = 0
  4874.                         lnLevel = 3
  4875.                         lnNewLen = lnNewLen + 1
  4876.                 CASE lnLevel = 3
  4877.                         lnLevel = 4
  4878.                 ENDCASE
  4879.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  4880.         ENDFOR
  4881.        
  4882.         FOR l=1 TO lnNewLen
  4883.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  4884.                 IF lcChar1 # " "
  4885.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  4886.                         IF lcChar2 = " "
  4887.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  4888.                         ELSE
  4889.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  4890.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  4891.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  4892.                         ENDIF
  4893.                 ENDIF
  4894.         ENDFOR
  4895.        
  4896.         TH_1 = laLevel(2)
  4897.         TH_2 = laLevel(3)
  4898.         TH_3 = laLevel(4)
  4899.  
  4900. RETURN
  4901. *EOP Thai3lev
  4902.  
  4903. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4904. * Function....: ThaiPADC
  4905. * Called by...: global
  4906. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  4907. * Returns.....:
  4908. * Parameters..:
  4909. * Notes.......:
  4910. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4911. FUNCTION ThaiPADC( pcStr, lnLen )
  4912. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  4913.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  4914. *EOF TPADC
  4915.  
  4916. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4917. * Function....: ThaiLen
  4918. * Called by...: global
  4919. * Abstract....: length of Thai string
  4920. * Returns.....:
  4921. * Parameters..:
  4922. * Notes.......:
  4923. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4924. FUNCTION ThaiLen(  pcStr )
  4925. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  4926. *EOF TLen
  4927. * Returns.....:
  4928. * Parameters..:
  4929. * Notes.......:
  4930. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4931. FUNCTION Numthai( pnBaht )
  4932.        
  4933. LOCAL lcBaht1, lcBaht2
  4934.        
  4935. DIMENSION laNum[9], laDigit[6]
  4936.  
  4937.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  4938.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  4939.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  4940.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  4941.         laNum[5] = '&Euml;&eacute;&Ograve;'
  4942.         laNum[6] = '&Euml;&iexcl;'
  4943.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  4944.         laNum[8] = '&aacute;&raquo;&acute;'
  4945.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  4946.        
  4947.         laDigit[6] = ''
  4948.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  4949.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  4950.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  4951.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  4952.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  4953.        
  4954.         lcBaht1 = STR(pnBaht,15,2)
  4955.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  4956.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  4957.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  4958.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  4959.        
  4960. RETURN lcBaht2
  4961. *EOF Numthai
  4962.  
  4963. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4964. * Function....: NumLet2
  4965. * Called by...: Numthai
  4966. * Abstract....: calculate thai character
  4967. * Returns.....: lcStr
  4968. * Parameters..:
  4969. * Notes.......:
  4970. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4971. FUNCTION NumLet2(  pcStr )
  4972.  
  4973. LOCAL lcStr, l
  4974. lcStr = ""
  4975. FOR l=1 TO 6
  4976.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  4977.         DO CASE
  4978.         CASE lnDigit = 0
  4979.         CASE l = 5 AND lnDigit = 2
  4980.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  4981.         CASE l = 5 AND lnDigit = 1
  4982.                         lcStr = lcStr + laDigit[l]
  4983.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  4984.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  4985.         OTHERWISE
  4986.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  4987.         ENDCASE
  4988. ENDFOR
  4989. RETURN lcStr
  4990. *EOF NumLet2
  4991.  
  4992. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  4993. * Procedure...: Thai3lev
  4994. * Called by...:
  4995. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  4996. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  4997. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  4998. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  4999. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  5000. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  5001. *
  5002. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  5003. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5004. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  5005.        
  5006.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  5007.        
  5008.         DIMENSION laLevel[4], laThChr[3]
  5009.        
  5010.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  5011.         *********      
  5012.         IF !plThaiCode
  5013.         ***** KU code *****
  5014.                  lcVowel0 = "12345"
  5015.                  lcVowel1 = "238243247251234230"
  5016.  
  5017.                 pcStr   = ThaiCode(pcStr,FALSE)        
  5018.                
  5019.                 laThChr[1] = k_lv1KU
  5020.                 laThChr[2] = k_lv2KU
  5021.                 laThChr[3] = k_lv4KU
  5022.                
  5023.         *******************
  5024.         ELSE
  5025.         ***** TIS code *****
  5026.                 lcVowel0 = "12345"
  5027.                 lcVowel1 = "150155219251251"
  5028.  
  5029.                 laThChr[1] = k_lv1TIS
  5030.                 laThChr[2] = k_lv2TIS
  5031.                 laThChr[3] = k_lv4TIS
  5032.  
  5033.         *******************
  5034.         ENDIF
  5035.        
  5036.  
  5037.         lnTrim  = LEN(TRIM(pcStr))
  5038.         lnNewLen = 0
  5039.        
  5040.         FOR l=1 TO lnTrim
  5041.                 lnLevel = 0
  5042.                 lcChar = SUBSTR( pcStr, l, 1)
  5043.                 FOR k=1 TO 3
  5044.                    IF lcChar $ laThChr[k]
  5045.                         lnLevel = k
  5046.                         EXIT
  5047.                    ENDIF
  5048.                 ENDFOR &&* k=1 TO 3
  5049.                 DO CASE
  5050.                 CASE lnLevel = 0
  5051.                         lnLevel = 3
  5052.                         lnNewLen = lnNewLen + 1
  5053.                 CASE lnLevel = 3
  5054.                         lnLevel = 4
  5055.                 ENDCASE
  5056.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  5057.         ENDFOR
  5058.        
  5059.         FOR l=1 TO lnNewLen
  5060.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  5061.                 IF lcChar1 # " "
  5062.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  5063.                         IF lcChar2 = " "
  5064.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  5065.                         ELSE
  5066.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  5067.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  5068.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  5069.                         ENDIF
  5070.                 ENDIF
  5071.         ENDFOR
  5072.        
  5073.         TH_1 = laLevel(2)
  5074.         TH_2 = laLevel(3)
  5075.         TH_3 = laLevel(4)
  5076.  
  5077. RETURN
  5078. *EOP Thai3lev
  5079.  
  5080. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5081. * Function....: ThaiPADC
  5082. * Called by...: global
  5083. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  5084. * Returns.....:
  5085. * Parameters..:
  5086. * Notes.......:
  5087. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5088. FUNCTION ThaiPADC( pcStr, lnLen )
  5089. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  5090.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  5091. *EOF TPADC
  5092.  
  5093. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5094. * Function....: ThaiLen
  5095. * Called by...: global
  5096. * Abstract....: length of Thai string
  5097. * Returns.....:
  5098. * Parameters..:
  5099. * Notes.......:
  5100. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5101. FUNCTION ThaiLen(  pcStr )
  5102. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  5103. *EOF TLen
  5104. * Parameters..:
  5105. * Notes.......:
  5106. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5107. FUNCTION Numthai( pnBaht )
  5108.        
  5109. LOCAL lcBaht1, lcBaht2
  5110.        
  5111. DIMENSION laNum[9], laDigit[6]
  5112.  
  5113.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  5114.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  5115.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  5116.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  5117.         laNum[5] = '&Euml;&eacute;&Ograve;'
  5118.         laNum[6] = '&Euml;&iexcl;'
  5119.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  5120.         laNum[8] = '&aacute;&raquo;&acute;'
  5121.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  5122.        
  5123.         laDigit[6] = ''
  5124.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  5125.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  5126.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  5127.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  5128.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  5129.        
  5130.         lcBaht1 = STR(pnBaht,15,2)
  5131.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  5132.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  5133.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  5134.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  5135.        
  5136. RETURN lcBaht2
  5137. *EOF Numthai
  5138.  
  5139. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5140. * Function....: NumLet2
  5141. * Called by...: Numthai
  5142. * Abstract....: calculate thai character
  5143. * Returns.....: lcStr
  5144. * Parameters..:
  5145. * Notes.......:
  5146. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5147. FUNCTION NumLet2(  pcStr )
  5148.  
  5149. LOCAL lcStr, l
  5150. lcStr = ""
  5151. FOR l=1 TO 6
  5152.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  5153.         DO CASE
  5154.         CASE lnDigit = 0
  5155.         CASE l = 5 AND lnDigit = 2
  5156.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  5157.         CASE l = 5 AND lnDigit = 1
  5158.                         lcStr = lcStr + laDigit[l]
  5159.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  5160.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  5161.         OTHERWISE
  5162.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  5163.         ENDCASE
  5164. ENDFOR
  5165. RETURN lcStr
  5166. *EOF NumLet2
  5167.  
  5168. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5169. * Procedure...: Thai3lev
  5170. * Called by...:
  5171. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  5172. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  5173. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  5174. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  5175. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  5176. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  5177. *
  5178. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  5179. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5180. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  5181.        
  5182.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  5183.        
  5184.         DIMENSION laLevel[4], laThChr[3]
  5185.        
  5186.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  5187.         *********      
  5188.         IF !plThaiCode
  5189.         ***** KU code *****
  5190.                  lcVowel0 = "12345"
  5191.                  lcVowel1 = "238243247251234230"
  5192.  
  5193.                 pcStr   = ThaiCode(pcStr,FALSE)        
  5194.                
  5195.                 laThChr[1] = k_lv1KU
  5196.                 laThChr[2] = k_lv2KU
  5197.                 laThChr[3] = k_lv4KU
  5198.                
  5199.         *******************
  5200.         ELSE
  5201.         ***** TIS code *****
  5202.                 lcVowel0 = "12345"
  5203.                 lcVowel1 = "150155219251251"
  5204.  
  5205.                 laThChr[1] = k_lv1TIS
  5206.                 laThChr[2] = k_lv2TIS
  5207.                 laThChr[3] = k_lv4TIS
  5208.  
  5209.         *******************
  5210.         ENDIF
  5211.        
  5212.  
  5213.         lnTrim  = LEN(TRIM(pcStr))
  5214.         lnNewLen = 0
  5215.        
  5216.         FOR l=1 TO lnTrim
  5217.                 lnLevel = 0
  5218.                 lcChar = SUBSTR( pcStr, l, 1)
  5219.                 FOR k=1 TO 3
  5220.                    IF lcChar $ laThChr[k]
  5221.                         lnLevel = k
  5222.                         EXIT
  5223.                    ENDIF
  5224.                 ENDFOR &&* k=1 TO 3
  5225.                 DO CASE
  5226.                 CASE lnLevel = 0
  5227.                         lnLevel = 3
  5228.                         lnNewLen = lnNewLen + 1
  5229.                 CASE lnLevel = 3
  5230.                         lnLevel = 4
  5231.                 ENDCASE
  5232.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  5233.         ENDFOR
  5234.        
  5235.         FOR l=1 TO lnNewLen
  5236.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  5237.                 IF lcChar1 # " "
  5238.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  5239.                         IF lcChar2 = " "
  5240.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  5241.                         ELSE
  5242.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  5243.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  5244.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  5245.                         ENDIF
  5246.                 ENDIF
  5247.         ENDFOR
  5248.        
  5249.         TH_1 = laLevel(2)
  5250.         TH_2 = laLevel(3)
  5251.         TH_3 = laLevel(4)
  5252.  
  5253. RETURN
  5254. *EOP Thai3lev
  5255.  
  5256. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5257. * Function....: ThaiPADC
  5258. * Called by...: global
  5259. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  5260. * Returns.....:
  5261. * Parameters..:
  5262. * Notes.......:
  5263. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5264. FUNCTION ThaiPADC( pcStr, lnLen )
  5265. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  5266.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  5267. *EOF TPADC
  5268.  
  5269. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5270. * Function....: ThaiLen
  5271. * Called by...: global
  5272. * Abstract....: length of Thai string
  5273. * Returns.....:
  5274. * Parameters..:
  5275. * Notes.......:
  5276. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5277. FUNCTION ThaiLen(  pcStr )
  5278. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  5279. *EOF TLen
  5280. * Notes.......:
  5281. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5282. FUNCTION Numthai( pnBaht )
  5283.        
  5284. LOCAL lcBaht1, lcBaht2
  5285.        
  5286. DIMENSION laNum[9], laDigit[6]
  5287.  
  5288.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  5289.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  5290.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  5291.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  5292.         laNum[5] = '&Euml;&eacute;&Ograve;'
  5293.         laNum[6] = '&Euml;&iexcl;'
  5294.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  5295.         laNum[8] = '&aacute;&raquo;&acute;'
  5296.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  5297.        
  5298.         laDigit[6] = ''
  5299.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  5300.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  5301.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  5302.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  5303.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  5304.        
  5305.         lcBaht1 = STR(pnBaht,15,2)
  5306.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  5307.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  5308.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  5309.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  5310.        
  5311. RETURN lcBaht2
  5312. *EOF Numthai
  5313.  
  5314. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5315. * Function....: NumLet2
  5316. * Called by...: Numthai
  5317. * Abstract....: calculate thai character
  5318. * Returns.....: lcStr
  5319. * Parameters..:
  5320. * Notes.......:
  5321. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5322. FUNCTION NumLet2(  pcStr )
  5323.  
  5324. LOCAL lcStr, l
  5325. lcStr = ""
  5326. FOR l=1 TO 6
  5327.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  5328.         DO CASE
  5329.         CASE lnDigit = 0
  5330.         CASE l = 5 AND lnDigit = 2
  5331.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  5332.         CASE l = 5 AND lnDigit = 1
  5333.                         lcStr = lcStr + laDigit[l]
  5334.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  5335.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  5336.         OTHERWISE
  5337.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  5338.         ENDCASE
  5339. ENDFOR
  5340. RETURN lcStr
  5341. *EOF NumLet2
  5342.  
  5343. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5344. * Procedure...: Thai3lev
  5345. * Called by...:
  5346. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  5347. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  5348. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  5349. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  5350. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  5351. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  5352. *
  5353. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  5354. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5355. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  5356.        
  5357.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  5358.        
  5359.         DIMENSION laLevel[4], laThChr[3]
  5360.        
  5361.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  5362.         *********      
  5363.         IF !plThaiCode
  5364.         ***** KU code *****
  5365.                  lcVowel0 = "12345"
  5366.                  lcVowel1 = "238243247251234230"
  5367.  
  5368.                 pcStr   = ThaiCode(pcStr,FALSE)        
  5369.                
  5370.                 laThChr[1] = k_lv1KU
  5371.                 laThChr[2] = k_lv2KU
  5372.                 laThChr[3] = k_lv4KU
  5373.                
  5374.         *******************
  5375.         ELSE
  5376.         ***** TIS code *****
  5377.                 lcVowel0 = "12345"
  5378.                 lcVowel1 = "150155219251251"
  5379.  
  5380.                 laThChr[1] = k_lv1TIS
  5381.                 laThChr[2] = k_lv2TIS
  5382.                 laThChr[3] = k_lv4TIS
  5383.  
  5384.         *******************
  5385.         ENDIF
  5386.        
  5387.  
  5388.         lnTrim  = LEN(TRIM(pcStr))
  5389.         lnNewLen = 0
  5390.        
  5391.         FOR l=1 TO lnTrim
  5392.                 lnLevel = 0
  5393.                 lcChar = SUBSTR( pcStr, l, 1)
  5394.                 FOR k=1 TO 3
  5395.                    IF lcChar $ laThChr[k]
  5396.                         lnLevel = k
  5397.                         EXIT
  5398.                    ENDIF
  5399.                 ENDFOR &&* k=1 TO 3
  5400.                 DO CASE
  5401.                 CASE lnLevel = 0
  5402.                         lnLevel = 3
  5403.                         lnNewLen = lnNewLen + 1
  5404.                 CASE lnLevel = 3
  5405.                         lnLevel = 4
  5406.                 ENDCASE
  5407.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  5408.         ENDFOR
  5409.        
  5410.         FOR l=1 TO lnNewLen
  5411.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  5412.                 IF lcChar1 # " "
  5413.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  5414.                         IF lcChar2 = " "
  5415.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  5416.                         ELSE
  5417.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  5418.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  5419.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  5420.                         ENDIF
  5421.                 ENDIF
  5422.         ENDFOR
  5423.        
  5424.         TH_1 = laLevel(2)
  5425.         TH_2 = laLevel(3)
  5426.         TH_3 = laLevel(4)
  5427.  
  5428. RETURN
  5429. *EOP Thai3lev
  5430.  
  5431. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5432. * Function....: ThaiPADC
  5433. * Called by...: global
  5434. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  5435. * Returns.....:
  5436. * Parameters..:
  5437. * Notes.......:
  5438. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5439. FUNCTION ThaiPADC( pcStr, lnLen )
  5440. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  5441.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  5442. *EOF TPADC
  5443.  
  5444. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5445. * Function....: ThaiLen
  5446. * Called by...: global
  5447. * Abstract....: length of Thai string
  5448. * Returns.....:
  5449. * Parameters..:
  5450. * Notes.......:
  5451. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5452. FUNCTION ThaiLen(  pcStr )
  5453. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  5454. *EOF TLen
  5455. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5456. FUNCTION Numthai( pnBaht )
  5457.        
  5458. LOCAL lcBaht1, lcBaht2
  5459.        
  5460. DIMENSION laNum[9], laDigit[6]
  5461.  
  5462.         laNum[1] = '&Euml;&sup1;&Ouml;&egrave;&sect;'
  5463.         laNum[2] = '&Ecirc;&Iacute;&sect;'
  5464.         laNum[3] = '&Ecirc;&Ograve;&Aacute;'
  5465.         laNum[4] = '&Ecirc;&Otilde;&egrave;'
  5466.         laNum[5] = '&Euml;&eacute;&Ograve;'
  5467.         laNum[6] = '&Euml;&iexcl;'
  5468.         laNum[7] = '&agrave;&uml;&ccedil;&acute;'
  5469.         laNum[8] = '&aacute;&raquo;&acute;'
  5470.         laNum[9] = '&agrave;&iexcl;&eacute;&Ograve;'
  5471.        
  5472.         laDigit[6] = ''
  5473.         laDigit[5] = '&Ecirc;&Ocirc;&ordm;'
  5474.         laDigit[4] = '&Atilde;&eacute;&Iacute;&Acirc;'
  5475.         laDigit[3] = '&frac34;&Ntilde;&sup1;'
  5476.         laDigit[2] = '&Euml;&Aacute;&times;&egrave;&sup1;'
  5477.         laDigit[1] = '&aacute;&Ecirc;&sup1;'
  5478.        
  5479.         lcBaht1 = STR(pnBaht,15,2)
  5480.         lcBaht2 = IIF( !EMPTY(LEFT(lcBaht1,6)), NumLet2( LEFT(lcBaht1,6)) ;
  5481.                                                 +'&Aring;&eacute;&Ograve;&sup1;', '')
  5482.         lcBaht2 = lcBaht2 + NumLet2( SUBSTR(lcBaht1,7,6) )+'&ordm;&Ograve;&middot;'
  5483.         lcBaht2 = lcBaht2 + IIF( RIGHT(lcBaht1,2)=[00], '&para;&eacute;&Ccedil;&sup1;',  NumLet2( SPACE(04) + RIGHT(lcBaht1,2) ) + '&Ecirc;&micro;&Ograve;&sect;&curren;&igrave;' )
  5484.        
  5485. RETURN lcBaht2
  5486. *EOF Numthai
  5487.  
  5488. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5489. * Function....: NumLet2
  5490. * Called by...: Numthai
  5491. * Abstract....: calculate thai character
  5492. * Returns.....: lcStr
  5493. * Parameters..:
  5494. * Notes.......:
  5495. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5496. FUNCTION NumLet2(  pcStr )
  5497.  
  5498. LOCAL lcStr, l
  5499. lcStr = ""
  5500. FOR l=1 TO 6
  5501.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  5502.         DO CASE
  5503.         CASE lnDigit = 0
  5504.         CASE l = 5 AND lnDigit = 2
  5505.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  5506.         CASE l = 5 AND lnDigit = 1
  5507.                         lcStr = lcStr + laDigit[l]
  5508.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  5509.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  5510.         OTHERWISE
  5511.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  5512.         ENDCASE
  5513. ENDFOR
  5514. RETURN lcStr
  5515. *EOF NumLet2
  5516.  
  5517. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5518. * Procedure...: Thai3lev
  5519. * Called by...:
  5520. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  5521. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  5522. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  5523. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  5524. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  5525. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  5526. *
  5527. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  5528. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5529. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  5530.        
  5531.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  5532.        
  5533.         DIMENSION laLevel[4], laThChr[3]
  5534.        
  5535.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  5536.         *********      
  5537.         IF !plThaiCode
  5538.         ***** KU code *****
  5539.                  lcVowel0 = "12345"
  5540.                  lcVowel1 = "238243247251234230"
  5541.  
  5542.                 pcStr   = ThaiCode(pcStr,FALSE)        
  5543.                
  5544.                 laThChr[1] = k_lv1KU
  5545.                 laThChr[2] = k_lv2KU
  5546.                 laThChr[3] = k_lv4KU
  5547.                
  5548.         *******************
  5549.         ELSE
  5550.         ***** TIS code *****
  5551.                 lcVowel0 = "12345"
  5552.                 lcVowel1 = "150155219251251"
  5553.  
  5554.                 laThChr[1] = k_lv1TIS
  5555.                 laThChr[2] = k_lv2TIS
  5556.                 laThChr[3] = k_lv4TIS
  5557.  
  5558.         *******************
  5559.         ENDIF
  5560.        
  5561.  
  5562.         lnTrim  = LEN(TRIM(pcStr))
  5563.         lnNewLen = 0
  5564.        
  5565.         FOR l=1 TO lnTrim
  5566.                 lnLevel = 0
  5567.                 lcChar = SUBSTR( pcStr, l, 1)
  5568.                 FOR k=1 TO 3
  5569.                    IF lcChar $ laThChr[k]
  5570.                         lnLevel = k
  5571.                         EXIT
  5572.                    ENDIF
  5573.                 ENDFOR &&* k=1 TO 3
  5574.                 DO CASE
  5575.                 CASE lnLevel = 0
  5576.                         lnLevel = 3
  5577.                         lnNewLen = lnNewLen + 1
  5578.                 CASE lnLevel = 3
  5579.                         lnLevel = 4
  5580.                 ENDCASE
  5581.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  5582.         ENDFOR
  5583.        
  5584.         FOR l=1 TO lnNewLen
  5585.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  5586.                 IF lcChar1 # " "
  5587.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  5588.                         IF lcChar2 = " "
  5589.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  5590.                         ELSE
  5591.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  5592.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  5593.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  5594.                         ENDIF
  5595.                 ENDIF
  5596.         ENDFOR
  5597.        
  5598.         TH_1 = laLevel(2)
  5599.         TH_2 = laLevel(3)
  5600.         TH_3 = laLevel(4)
  5601.  
  5602. RETURN
  5603. *EOP Thai3lev
  5604.  
  5605. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5606. * Function....: ThaiPADC
  5607. * Called by...: global
  5608. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  5609. * Returns.....:
  5610. * Parameters..:
  5611. * Notes.......:
  5612. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5613. FUNCTION ThaiPADC( pcStr, lnLen )
  5614. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  5615.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  5616. *EOF TPADC
  5617.  
  5618. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5619. * Function....: ThaiLen
  5620. * Called by...: global
  5621. * Abstract....: length of Thai string
  5622. * Returns.....:
  5623. * Parameters..:
  5624. * Notes.......:
  5625. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5626. FUNCTION ThaiLen(  pcStr )
  5627. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  5628. *EOF TLen
  5629. *EOF Numthai
  5630. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5631. * Function....: NumLet2
  5632. * Called by...: Numthai
  5633. * Abstract....: calculate thai character
  5634. * Returns.....: lcStr
  5635. * Parameters..:
  5636. * Notes.......:
  5637. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5638. FUNCTION NumLet2(  pcStr )
  5639.  
  5640. LOCAL lcStr, l
  5641. lcStr = ""
  5642. FOR l=1 TO 6
  5643.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  5644.         DO CASE
  5645.         CASE lnDigit = 0
  5646.         CASE l = 5 AND lnDigit = 2
  5647.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  5648.         CASE l = 5 AND lnDigit = 1
  5649.                         lcStr = lcStr + laDigit[l]
  5650.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  5651.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  5652.         OTHERWISE
  5653.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  5654.         ENDCASE
  5655. ENDFOR
  5656. RETURN lcStr
  5657. *EOF NumLet2
  5658.  
  5659. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5660. * Procedure...: Thai3lev
  5661. * Called by...:
  5662. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  5663. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  5664. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  5665. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  5666. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  5667. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  5668. *
  5669. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  5670. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5671. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  5672.        
  5673.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  5674.        
  5675.         DIMENSION laLevel[4], laThChr[3]
  5676.        
  5677.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  5678.         *********      
  5679.         IF !plThaiCode
  5680.         ***** KU code *****
  5681.                  lcVowel0 = "12345"
  5682.                  lcVowel1 = "238243247251234230"
  5683.  
  5684.                 pcStr   = ThaiCode(pcStr,FALSE)        
  5685.                
  5686.                 laThChr[1] = k_lv1KU
  5687.                 laThChr[2] = k_lv2KU
  5688.                 laThChr[3] = k_lv4KU
  5689.                
  5690.         *******************
  5691.         ELSE
  5692.         ***** TIS code *****
  5693.                 lcVowel0 = "12345"
  5694.                 lcVowel1 = "150155219251251"
  5695.  
  5696.                 laThChr[1] = k_lv1TIS
  5697.                 laThChr[2] = k_lv2TIS
  5698.                 laThChr[3] = k_lv4TIS
  5699.  
  5700.         *******************
  5701.         ENDIF
  5702.        
  5703.  
  5704.         lnTrim  = LEN(TRIM(pcStr))
  5705.         lnNewLen = 0
  5706.        
  5707.         FOR l=1 TO lnTrim
  5708.                 lnLevel = 0
  5709.                 lcChar = SUBSTR( pcStr, l, 1)
  5710.                 FOR k=1 TO 3
  5711.                    IF lcChar $ laThChr[k]
  5712.                         lnLevel = k
  5713.                         EXIT
  5714.                    ENDIF
  5715.                 ENDFOR &&* k=1 TO 3
  5716.                 DO CASE
  5717.                 CASE lnLevel = 0
  5718.                         lnLevel = 3
  5719.                         lnNewLen = lnNewLen + 1
  5720.                 CASE lnLevel = 3
  5721.                         lnLevel = 4
  5722.                 ENDCASE
  5723.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  5724.         ENDFOR
  5725.        
  5726.         FOR l=1 TO lnNewLen
  5727.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  5728.                 IF lcChar1 # " "
  5729.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  5730.                         IF lcChar2 = " "
  5731.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  5732.                         ELSE
  5733.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  5734.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  5735.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  5736.                         ENDIF
  5737.                 ENDIF
  5738.         ENDFOR
  5739.        
  5740.         TH_1 = laLevel(2)
  5741.         TH_2 = laLevel(3)
  5742.         TH_3 = laLevel(4)
  5743.  
  5744. RETURN
  5745. *EOP Thai3lev
  5746.  
  5747. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5748. * Function....: ThaiPADC
  5749. * Called by...: global
  5750. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  5751. * Returns.....:
  5752. * Parameters..:
  5753. * Notes.......:
  5754. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5755. FUNCTION ThaiPADC( pcStr, lnLen )
  5756. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  5757.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  5758. *EOF TPADC
  5759.  
  5760. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5761. * Function....: ThaiLen
  5762. * Called by...: global
  5763. * Abstract....: length of Thai string
  5764. * Returns.....:
  5765. * Parameters..:
  5766. * Notes.......:
  5767. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5768. FUNCTION ThaiLen(  pcStr )
  5769. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  5770. *EOF TLen
  5771. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5772. * Function....: NumLet2
  5773. * Called by...: Numthai
  5774. * Abstract....: calculate thai character
  5775. * Returns.....: lcStr
  5776. * Parameters..:
  5777. * Notes.......:
  5778. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5779. FUNCTION NumLet2(  pcStr )
  5780.  
  5781. LOCAL lcStr, l
  5782. lcStr = ""
  5783. FOR l=1 TO 6
  5784.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  5785.         DO CASE
  5786.         CASE lnDigit = 0
  5787.         CASE l = 5 AND lnDigit = 2
  5788.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  5789.         CASE l = 5 AND lnDigit = 1
  5790.                         lcStr = lcStr + laDigit[l]
  5791.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  5792.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  5793.         OTHERWISE
  5794.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  5795.         ENDCASE
  5796. ENDFOR
  5797. RETURN lcStr
  5798. *EOF NumLet2
  5799.  
  5800. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5801. * Procedure...: Thai3lev
  5802. * Called by...:
  5803. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  5804. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  5805. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  5806. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  5807. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  5808. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  5809. *
  5810. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  5811. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5812. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  5813.        
  5814.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  5815.        
  5816.         DIMENSION laLevel[4], laThChr[3]
  5817.        
  5818.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  5819.         *********      
  5820.         IF !plThaiCode
  5821.         ***** KU code *****
  5822.                  lcVowel0 = "12345"
  5823.                  lcVowel1 = "238243247251234230"
  5824.  
  5825.                 pcStr   = ThaiCode(pcStr,FALSE)        
  5826.                
  5827.                 laThChr[1] = k_lv1KU
  5828.                 laThChr[2] = k_lv2KU
  5829.                 laThChr[3] = k_lv4KU
  5830.                
  5831.         *******************
  5832.         ELSE
  5833.         ***** TIS code *****
  5834.                 lcVowel0 = "12345"
  5835.                 lcVowel1 = "150155219251251"
  5836.  
  5837.                 laThChr[1] = k_lv1TIS
  5838.                 laThChr[2] = k_lv2TIS
  5839.                 laThChr[3] = k_lv4TIS
  5840.  
  5841.         *******************
  5842.         ENDIF
  5843.        
  5844.  
  5845.         lnTrim  = LEN(TRIM(pcStr))
  5846.         lnNewLen = 0
  5847.        
  5848.         FOR l=1 TO lnTrim
  5849.                 lnLevel = 0
  5850.                 lcChar = SUBSTR( pcStr, l, 1)
  5851.                 FOR k=1 TO 3
  5852.                    IF lcChar $ laThChr[k]
  5853.                         lnLevel = k
  5854.                         EXIT
  5855.                    ENDIF
  5856.                 ENDFOR &&* k=1 TO 3
  5857.                 DO CASE
  5858.                 CASE lnLevel = 0
  5859.                         lnLevel = 3
  5860.                         lnNewLen = lnNewLen + 1
  5861.                 CASE lnLevel = 3
  5862.                         lnLevel = 4
  5863.                 ENDCASE
  5864.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  5865.         ENDFOR
  5866.        
  5867.         FOR l=1 TO lnNewLen
  5868.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  5869.                 IF lcChar1 # " "
  5870.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  5871.                         IF lcChar2 = " "
  5872.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  5873.                         ELSE
  5874.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  5875.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  5876.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  5877.                         ENDIF
  5878.                 ENDIF
  5879.         ENDFOR
  5880.        
  5881.         TH_1 = laLevel(2)
  5882.         TH_2 = laLevel(3)
  5883.         TH_3 = laLevel(4)
  5884.  
  5885. RETURN
  5886. *EOP Thai3lev
  5887.  
  5888. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5889. * Function....: ThaiPADC
  5890. * Called by...: global
  5891. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  5892. * Returns.....:
  5893. * Parameters..:
  5894. * Notes.......:
  5895. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5896. FUNCTION ThaiPADC( pcStr, lnLen )
  5897. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  5898.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  5899. *EOF TPADC
  5900.  
  5901. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5902. * Function....: ThaiLen
  5903. * Called by...: global
  5904. * Abstract....: length of Thai string
  5905. * Returns.....:
  5906. * Parameters..:
  5907. * Notes.......:
  5908. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5909. FUNCTION ThaiLen(  pcStr )
  5910. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  5911. *EOF TLen
  5912. * Function....: NumLet2
  5913. * Called by...: Numthai
  5914. * Abstract....: calculate thai character
  5915. * Returns.....: lcStr
  5916. * Parameters..:
  5917. * Notes.......:
  5918. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5919. FUNCTION NumLet2(  pcStr )
  5920.  
  5921. LOCAL lcStr, l
  5922. lcStr = ""
  5923. FOR l=1 TO 6
  5924.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  5925.         DO CASE
  5926.         CASE lnDigit = 0
  5927.         CASE l = 5 AND lnDigit = 2
  5928.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  5929.         CASE l = 5 AND lnDigit = 1
  5930.                         lcStr = lcStr + laDigit[l]
  5931.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  5932.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  5933.         OTHERWISE
  5934.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  5935.         ENDCASE
  5936. ENDFOR
  5937. RETURN lcStr
  5938. *EOF NumLet2
  5939.  
  5940. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5941. * Procedure...: Thai3lev
  5942. * Called by...:
  5943. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  5944. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  5945. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  5946. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  5947. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  5948. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  5949. *
  5950. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  5951. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  5952. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  5953.        
  5954.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  5955.        
  5956.         DIMENSION laLevel[4], laThChr[3]
  5957.        
  5958.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  5959.         *********      
  5960.         IF !plThaiCode
  5961.         ***** KU code *****
  5962.                  lcVowel0 = "12345"
  5963.                  lcVowel1 = "238243247251234230"
  5964.  
  5965.                 pcStr   = ThaiCode(pcStr,FALSE)        
  5966.                
  5967.                 laThChr[1] = k_lv1KU
  5968.                 laThChr[2] = k_lv2KU
  5969.                 laThChr[3] = k_lv4KU
  5970.                
  5971.         *******************
  5972.         ELSE
  5973.         ***** TIS code *****
  5974.                 lcVowel0 = "12345"
  5975.                 lcVowel1 = "150155219251251"
  5976.  
  5977.                 laThChr[1] = k_lv1TIS
  5978.                 laThChr[2] = k_lv2TIS
  5979.                 laThChr[3] = k_lv4TIS
  5980.  
  5981.         *******************
  5982.         ENDIF
  5983.        
  5984.  
  5985.         lnTrim  = LEN(TRIM(pcStr))
  5986.         lnNewLen = 0
  5987.        
  5988.         FOR l=1 TO lnTrim
  5989.                 lnLevel = 0
  5990.                 lcChar = SUBSTR( pcStr, l, 1)
  5991.                 FOR k=1 TO 3
  5992.                    IF lcChar $ laThChr[k]
  5993.                         lnLevel = k
  5994.                         EXIT
  5995.                    ENDIF
  5996.                 ENDFOR &&* k=1 TO 3
  5997.                 DO CASE
  5998.                 CASE lnLevel = 0
  5999.                         lnLevel = 3
  6000.                         lnNewLen = lnNewLen + 1
  6001.                 CASE lnLevel = 3
  6002.                         lnLevel = 4
  6003.                 ENDCASE
  6004.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  6005.         ENDFOR
  6006.        
  6007.         FOR l=1 TO lnNewLen
  6008.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  6009.                 IF lcChar1 # " "
  6010.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  6011.                         IF lcChar2 = " "
  6012.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  6013.                         ELSE
  6014.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  6015.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  6016.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  6017.                         ENDIF
  6018.                 ENDIF
  6019.         ENDFOR
  6020.        
  6021.         TH_1 = laLevel(2)
  6022.         TH_2 = laLevel(3)
  6023.         TH_3 = laLevel(4)
  6024.  
  6025. RETURN
  6026. *EOP Thai3lev
  6027.  
  6028. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6029. * Function....: ThaiPADC
  6030. * Called by...: global
  6031. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  6032. * Returns.....:
  6033. * Parameters..:
  6034. * Notes.......:
  6035. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6036. FUNCTION ThaiPADC( pcStr, lnLen )
  6037. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  6038.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  6039. *EOF TPADC
  6040.  
  6041. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6042. * Function....: ThaiLen
  6043. * Called by...: global
  6044. * Abstract....: length of Thai string
  6045. * Returns.....:
  6046. * Parameters..:
  6047. * Notes.......:
  6048. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6049. FUNCTION ThaiLen(  pcStr )
  6050. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  6051. *EOF TLen
  6052. * Called by...: Numthai
  6053. * Abstract....: calculate thai character
  6054. * Returns.....: lcStr
  6055. * Parameters..:
  6056. * Notes.......:
  6057. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6058. FUNCTION NumLet2(  pcStr )
  6059.  
  6060. LOCAL lcStr, l
  6061. lcStr = ""
  6062. FOR l=1 TO 6
  6063.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  6064.         DO CASE
  6065.         CASE lnDigit = 0
  6066.         CASE l = 5 AND lnDigit = 2
  6067.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  6068.         CASE l = 5 AND lnDigit = 1
  6069.                         lcStr = lcStr + laDigit[l]
  6070.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  6071.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  6072.         OTHERWISE
  6073.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  6074.         ENDCASE
  6075. ENDFOR
  6076. RETURN lcStr
  6077. *EOF NumLet2
  6078.  
  6079. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6080. * Procedure...: Thai3lev
  6081. * Called by...:
  6082. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  6083. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  6084. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  6085. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  6086. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  6087. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  6088. *
  6089. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  6090. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6091. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  6092.        
  6093.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  6094.        
  6095.         DIMENSION laLevel[4], laThChr[3]
  6096.        
  6097.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  6098.         *********      
  6099.         IF !plThaiCode
  6100.         ***** KU code *****
  6101.                  lcVowel0 = "12345"
  6102.                  lcVowel1 = "238243247251234230"
  6103.  
  6104.                 pcStr   = ThaiCode(pcStr,FALSE)        
  6105.                
  6106.                 laThChr[1] = k_lv1KU
  6107.                 laThChr[2] = k_lv2KU
  6108.                 laThChr[3] = k_lv4KU
  6109.                
  6110.         *******************
  6111.         ELSE
  6112.         ***** TIS code *****
  6113.                 lcVowel0 = "12345"
  6114.                 lcVowel1 = "150155219251251"
  6115.  
  6116.                 laThChr[1] = k_lv1TIS
  6117.                 laThChr[2] = k_lv2TIS
  6118.                 laThChr[3] = k_lv4TIS
  6119.  
  6120.         *******************
  6121.         ENDIF
  6122.        
  6123.  
  6124.         lnTrim  = LEN(TRIM(pcStr))
  6125.         lnNewLen = 0
  6126.        
  6127.         FOR l=1 TO lnTrim
  6128.                 lnLevel = 0
  6129.                 lcChar = SUBSTR( pcStr, l, 1)
  6130.                 FOR k=1 TO 3
  6131.                    IF lcChar $ laThChr[k]
  6132.                         lnLevel = k
  6133.                         EXIT
  6134.                    ENDIF
  6135.                 ENDFOR &&* k=1 TO 3
  6136.                 DO CASE
  6137.                 CASE lnLevel = 0
  6138.                         lnLevel = 3
  6139.                         lnNewLen = lnNewLen + 1
  6140.                 CASE lnLevel = 3
  6141.                         lnLevel = 4
  6142.                 ENDCASE
  6143.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  6144.         ENDFOR
  6145.        
  6146.         FOR l=1 TO lnNewLen
  6147.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  6148.                 IF lcChar1 # " "
  6149.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  6150.                         IF lcChar2 = " "
  6151.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  6152.                         ELSE
  6153.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  6154.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  6155.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  6156.                         ENDIF
  6157.                 ENDIF
  6158.         ENDFOR
  6159.        
  6160.         TH_1 = laLevel(2)
  6161.         TH_2 = laLevel(3)
  6162.         TH_3 = laLevel(4)
  6163.  
  6164. RETURN
  6165. *EOP Thai3lev
  6166.  
  6167. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6168. * Function....: ThaiPADC
  6169. * Called by...: global
  6170. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  6171. * Returns.....:
  6172. * Parameters..:
  6173. * Notes.......:
  6174. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6175. FUNCTION ThaiPADC( pcStr, lnLen )
  6176. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  6177.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  6178. *EOF TPADC
  6179.  
  6180. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6181. * Function....: ThaiLen
  6182. * Called by...: global
  6183. * Abstract....: length of Thai string
  6184. * Returns.....:
  6185. * Parameters..:
  6186. * Notes.......:
  6187. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6188. FUNCTION ThaiLen(  pcStr )
  6189. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  6190. *EOF TLen
  6191. * Abstract....: calculate thai character
  6192. * Returns.....: lcStr
  6193. * Parameters..:
  6194. * Notes.......:
  6195. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6196. FUNCTION NumLet2(  pcStr )
  6197.  
  6198. LOCAL lcStr, l
  6199. lcStr = ""
  6200. FOR l=1 TO 6
  6201.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  6202.         DO CASE
  6203.         CASE lnDigit = 0
  6204.         CASE l = 5 AND lnDigit = 2
  6205.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  6206.         CASE l = 5 AND lnDigit = 1
  6207.                         lcStr = lcStr + laDigit[l]
  6208.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  6209.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  6210.         OTHERWISE
  6211.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  6212.         ENDCASE
  6213. ENDFOR
  6214. RETURN lcStr
  6215. *EOF NumLet2
  6216.  
  6217. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6218. * Procedure...: Thai3lev
  6219. * Called by...:
  6220. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  6221. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  6222. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  6223. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  6224. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  6225. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  6226. *
  6227. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  6228. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6229. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  6230.        
  6231.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  6232.        
  6233.         DIMENSION laLevel[4], laThChr[3]
  6234.        
  6235.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  6236.         *********      
  6237.         IF !plThaiCode
  6238.         ***** KU code *****
  6239.                  lcVowel0 = "12345"
  6240.                  lcVowel1 = "238243247251234230"
  6241.  
  6242.                 pcStr   = ThaiCode(pcStr,FALSE)        
  6243.                
  6244.                 laThChr[1] = k_lv1KU
  6245.                 laThChr[2] = k_lv2KU
  6246.                 laThChr[3] = k_lv4KU
  6247.                
  6248.         *******************
  6249.         ELSE
  6250.         ***** TIS code *****
  6251.                 lcVowel0 = "12345"
  6252.                 lcVowel1 = "150155219251251"
  6253.  
  6254.                 laThChr[1] = k_lv1TIS
  6255.                 laThChr[2] = k_lv2TIS
  6256.                 laThChr[3] = k_lv4TIS
  6257.  
  6258.         *******************
  6259.         ENDIF
  6260.        
  6261.  
  6262.         lnTrim  = LEN(TRIM(pcStr))
  6263.         lnNewLen = 0
  6264.        
  6265.         FOR l=1 TO lnTrim
  6266.                 lnLevel = 0
  6267.                 lcChar = SUBSTR( pcStr, l, 1)
  6268.                 FOR k=1 TO 3
  6269.                    IF lcChar $ laThChr[k]
  6270.                         lnLevel = k
  6271.                         EXIT
  6272.                    ENDIF
  6273.                 ENDFOR &&* k=1 TO 3
  6274.                 DO CASE
  6275.                 CASE lnLevel = 0
  6276.                         lnLevel = 3
  6277.                         lnNewLen = lnNewLen + 1
  6278.                 CASE lnLevel = 3
  6279.                         lnLevel = 4
  6280.                 ENDCASE
  6281.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  6282.         ENDFOR
  6283.        
  6284.         FOR l=1 TO lnNewLen
  6285.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  6286.                 IF lcChar1 # " "
  6287.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  6288.                         IF lcChar2 = " "
  6289.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  6290.                         ELSE
  6291.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  6292.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  6293.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  6294.                         ENDIF
  6295.                 ENDIF
  6296.         ENDFOR
  6297.        
  6298.         TH_1 = laLevel(2)
  6299.         TH_2 = laLevel(3)
  6300.         TH_3 = laLevel(4)
  6301.  
  6302. RETURN
  6303. *EOP Thai3lev
  6304.  
  6305. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6306. * Function....: ThaiPADC
  6307. * Called by...: global
  6308. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  6309. * Returns.....:
  6310. * Parameters..:
  6311. * Notes.......:
  6312. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6313. FUNCTION ThaiPADC( pcStr, lnLen )
  6314. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  6315.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  6316. *EOF TPADC
  6317.  
  6318. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6319. * Function....: ThaiLen
  6320. * Called by...: global
  6321. * Abstract....: length of Thai string
  6322. * Returns.....:
  6323. * Parameters..:
  6324. * Notes.......:
  6325. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6326. FUNCTION ThaiLen(  pcStr )
  6327. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  6328. *EOF TLen
  6329. * Returns.....: lcStr
  6330. * Parameters..:
  6331. * Notes.......:
  6332. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6333. FUNCTION NumLet2(  pcStr )
  6334.  
  6335. LOCAL lcStr, l
  6336. lcStr = ""
  6337. FOR l=1 TO 6
  6338.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  6339.         DO CASE
  6340.         CASE lnDigit = 0
  6341.         CASE l = 5 AND lnDigit = 2
  6342.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  6343.         CASE l = 5 AND lnDigit = 1
  6344.                         lcStr = lcStr + laDigit[l]
  6345.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  6346.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  6347.         OTHERWISE
  6348.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  6349.         ENDCASE
  6350. ENDFOR
  6351. RETURN lcStr
  6352. *EOF NumLet2
  6353.  
  6354. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6355. * Procedure...: Thai3lev
  6356. * Called by...:
  6357. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  6358. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  6359. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  6360. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  6361. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  6362. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  6363. *
  6364. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  6365. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6366. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  6367.        
  6368.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  6369.        
  6370.         DIMENSION laLevel[4], laThChr[3]
  6371.        
  6372.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  6373.         *********      
  6374.         IF !plThaiCode
  6375.         ***** KU code *****
  6376.                  lcVowel0 = "12345"
  6377.                  lcVowel1 = "238243247251234230"
  6378.  
  6379.                 pcStr   = ThaiCode(pcStr,FALSE)        
  6380.                
  6381.                 laThChr[1] = k_lv1KU
  6382.                 laThChr[2] = k_lv2KU
  6383.                 laThChr[3] = k_lv4KU
  6384.                
  6385.         *******************
  6386.         ELSE
  6387.         ***** TIS code *****
  6388.                 lcVowel0 = "12345"
  6389.                 lcVowel1 = "150155219251251"
  6390.  
  6391.                 laThChr[1] = k_lv1TIS
  6392.                 laThChr[2] = k_lv2TIS
  6393.                 laThChr[3] = k_lv4TIS
  6394.  
  6395.         *******************
  6396.         ENDIF
  6397.        
  6398.  
  6399.         lnTrim  = LEN(TRIM(pcStr))
  6400.         lnNewLen = 0
  6401.        
  6402.         FOR l=1 TO lnTrim
  6403.                 lnLevel = 0
  6404.                 lcChar = SUBSTR( pcStr, l, 1)
  6405.                 FOR k=1 TO 3
  6406.                    IF lcChar $ laThChr[k]
  6407.                         lnLevel = k
  6408.                         EXIT
  6409.                    ENDIF
  6410.                 ENDFOR &&* k=1 TO 3
  6411.                 DO CASE
  6412.                 CASE lnLevel = 0
  6413.                         lnLevel = 3
  6414.                         lnNewLen = lnNewLen + 1
  6415.                 CASE lnLevel = 3
  6416.                         lnLevel = 4
  6417.                 ENDCASE
  6418.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  6419.         ENDFOR
  6420.        
  6421.         FOR l=1 TO lnNewLen
  6422.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  6423.                 IF lcChar1 # " "
  6424.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  6425.                         IF lcChar2 = " "
  6426.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  6427.                         ELSE
  6428.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  6429.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  6430.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  6431.                         ENDIF
  6432.                 ENDIF
  6433.         ENDFOR
  6434.        
  6435.         TH_1 = laLevel(2)
  6436.         TH_2 = laLevel(3)
  6437.         TH_3 = laLevel(4)
  6438.  
  6439. RETURN
  6440. *EOP Thai3lev
  6441.  
  6442. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6443. * Function....: ThaiPADC
  6444. * Called by...: global
  6445. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  6446. * Returns.....:
  6447. * Parameters..:
  6448. * Notes.......:
  6449. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6450. FUNCTION ThaiPADC( pcStr, lnLen )
  6451. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  6452.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  6453. *EOF TPADC
  6454.  
  6455. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6456. * Function....: ThaiLen
  6457. * Called by...: global
  6458. * Abstract....: length of Thai string
  6459. * Returns.....:
  6460. * Parameters..:
  6461. * Notes.......:
  6462. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6463. FUNCTION ThaiLen(  pcStr )
  6464. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  6465. *EOF TLen
  6466. * Parameters..:
  6467. * Notes.......:
  6468. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6469. FUNCTION NumLet2(  pcStr )
  6470.  
  6471. LOCAL lcStr, l
  6472. lcStr = ""
  6473. FOR l=1 TO 6
  6474.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  6475.         DO CASE
  6476.         CASE lnDigit = 0
  6477.         CASE l = 5 AND lnDigit = 2
  6478.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  6479.         CASE l = 5 AND lnDigit = 1
  6480.                         lcStr = lcStr + laDigit[l]
  6481.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  6482.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  6483.         OTHERWISE
  6484.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  6485.         ENDCASE
  6486. ENDFOR
  6487. RETURN lcStr
  6488. *EOF NumLet2
  6489.  
  6490. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6491. * Procedure...: Thai3lev
  6492. * Called by...:
  6493. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  6494. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  6495. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  6496. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  6497. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  6498. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  6499. *
  6500. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  6501. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6502. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  6503.        
  6504.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  6505.        
  6506.         DIMENSION laLevel[4], laThChr[3]
  6507.        
  6508.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  6509.         *********      
  6510.         IF !plThaiCode
  6511.         ***** KU code *****
  6512.                  lcVowel0 = "12345"
  6513.                  lcVowel1 = "238243247251234230"
  6514.  
  6515.                 pcStr   = ThaiCode(pcStr,FALSE)        
  6516.                
  6517.                 laThChr[1] = k_lv1KU
  6518.                 laThChr[2] = k_lv2KU
  6519.                 laThChr[3] = k_lv4KU
  6520.                
  6521.         *******************
  6522.         ELSE
  6523.         ***** TIS code *****
  6524.                 lcVowel0 = "12345"
  6525.                 lcVowel1 = "150155219251251"
  6526.  
  6527.                 laThChr[1] = k_lv1TIS
  6528.                 laThChr[2] = k_lv2TIS
  6529.                 laThChr[3] = k_lv4TIS
  6530.  
  6531.         *******************
  6532.         ENDIF
  6533.        
  6534.  
  6535.         lnTrim  = LEN(TRIM(pcStr))
  6536.         lnNewLen = 0
  6537.        
  6538.         FOR l=1 TO lnTrim
  6539.                 lnLevel = 0
  6540.                 lcChar = SUBSTR( pcStr, l, 1)
  6541.                 FOR k=1 TO 3
  6542.                    IF lcChar $ laThChr[k]
  6543.                         lnLevel = k
  6544.                         EXIT
  6545.                    ENDIF
  6546.                 ENDFOR &&* k=1 TO 3
  6547.                 DO CASE
  6548.                 CASE lnLevel = 0
  6549.                         lnLevel = 3
  6550.                         lnNewLen = lnNewLen + 1
  6551.                 CASE lnLevel = 3
  6552.                         lnLevel = 4
  6553.                 ENDCASE
  6554.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  6555.         ENDFOR
  6556.        
  6557.         FOR l=1 TO lnNewLen
  6558.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  6559.                 IF lcChar1 # " "
  6560.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  6561.                         IF lcChar2 = " "
  6562.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  6563.                         ELSE
  6564.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  6565.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  6566.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  6567.                         ENDIF
  6568.                 ENDIF
  6569.         ENDFOR
  6570.        
  6571.         TH_1 = laLevel(2)
  6572.         TH_2 = laLevel(3)
  6573.         TH_3 = laLevel(4)
  6574.  
  6575. RETURN
  6576. *EOP Thai3lev
  6577.  
  6578. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6579. * Function....: ThaiPADC
  6580. * Called by...: global
  6581. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  6582. * Returns.....:
  6583. * Parameters..:
  6584. * Notes.......:
  6585. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6586. FUNCTION ThaiPADC( pcStr, lnLen )
  6587. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  6588.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  6589. *EOF TPADC
  6590.  
  6591. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6592. * Function....: ThaiLen
  6593. * Called by...: global
  6594. * Abstract....: length of Thai string
  6595. * Returns.....:
  6596. * Parameters..:
  6597. * Notes.......:
  6598. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6599. FUNCTION ThaiLen(  pcStr )
  6600. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  6601. *EOF TLen
  6602. * Notes.......:
  6603. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6604. FUNCTION NumLet2(  pcStr )
  6605.  
  6606. LOCAL lcStr, l
  6607. lcStr = ""
  6608. FOR l=1 TO 6
  6609.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  6610.         DO CASE
  6611.         CASE lnDigit = 0
  6612.         CASE l = 5 AND lnDigit = 2
  6613.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  6614.         CASE l = 5 AND lnDigit = 1
  6615.                         lcStr = lcStr + laDigit[l]
  6616.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  6617.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  6618.         OTHERWISE
  6619.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  6620.         ENDCASE
  6621. ENDFOR
  6622. RETURN lcStr
  6623. *EOF NumLet2
  6624.  
  6625. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6626. * Procedure...: Thai3lev
  6627. * Called by...:
  6628. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  6629. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  6630. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  6631. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  6632. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  6633. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  6634. *
  6635. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  6636. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6637. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  6638.        
  6639.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  6640.        
  6641.         DIMENSION laLevel[4], laThChr[3]
  6642.        
  6643.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  6644.         *********      
  6645.         IF !plThaiCode
  6646.         ***** KU code *****
  6647.                  lcVowel0 = "12345"
  6648.                  lcVowel1 = "238243247251234230"
  6649.  
  6650.                 pcStr   = ThaiCode(pcStr,FALSE)        
  6651.                
  6652.                 laThChr[1] = k_lv1KU
  6653.                 laThChr[2] = k_lv2KU
  6654.                 laThChr[3] = k_lv4KU
  6655.                
  6656.         *******************
  6657.         ELSE
  6658.         ***** TIS code *****
  6659.                 lcVowel0 = "12345"
  6660.                 lcVowel1 = "150155219251251"
  6661.  
  6662.                 laThChr[1] = k_lv1TIS
  6663.                 laThChr[2] = k_lv2TIS
  6664.                 laThChr[3] = k_lv4TIS
  6665.  
  6666.         *******************
  6667.         ENDIF
  6668.        
  6669.  
  6670.         lnTrim  = LEN(TRIM(pcStr))
  6671.         lnNewLen = 0
  6672.        
  6673.         FOR l=1 TO lnTrim
  6674.                 lnLevel = 0
  6675.                 lcChar = SUBSTR( pcStr, l, 1)
  6676.                 FOR k=1 TO 3
  6677.                    IF lcChar $ laThChr[k]
  6678.                         lnLevel = k
  6679.                         EXIT
  6680.                    ENDIF
  6681.                 ENDFOR &&* k=1 TO 3
  6682.                 DO CASE
  6683.                 CASE lnLevel = 0
  6684.                         lnLevel = 3
  6685.                         lnNewLen = lnNewLen + 1
  6686.                 CASE lnLevel = 3
  6687.                         lnLevel = 4
  6688.                 ENDCASE
  6689.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  6690.         ENDFOR
  6691.        
  6692.         FOR l=1 TO lnNewLen
  6693.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  6694.                 IF lcChar1 # " "
  6695.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  6696.                         IF lcChar2 = " "
  6697.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  6698.                         ELSE
  6699.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  6700.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  6701.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  6702.                         ENDIF
  6703.                 ENDIF
  6704.         ENDFOR
  6705.        
  6706.         TH_1 = laLevel(2)
  6707.         TH_2 = laLevel(3)
  6708.         TH_3 = laLevel(4)
  6709.  
  6710. RETURN
  6711. *EOP Thai3lev
  6712.  
  6713. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6714. * Function....: ThaiPADC
  6715. * Called by...: global
  6716. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  6717. * Returns.....:
  6718. * Parameters..:
  6719. * Notes.......:
  6720. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6721. FUNCTION ThaiPADC( pcStr, lnLen )
  6722. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  6723.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  6724. *EOF TPADC
  6725.  
  6726. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6727. * Function....: ThaiLen
  6728. * Called by...: global
  6729. * Abstract....: length of Thai string
  6730. * Returns.....:
  6731. * Parameters..:
  6732. * Notes.......:
  6733. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6734. FUNCTION ThaiLen(  pcStr )
  6735. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  6736. *EOF TLen
  6737. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6738. FUNCTION NumLet2(  pcStr )
  6739.  
  6740. LOCAL lcStr, l
  6741. lcStr = ""
  6742. FOR l=1 TO 6
  6743.         lnDigit = VAL(SUBSTR(pcStr,l,1))
  6744.         DO CASE
  6745.         CASE lnDigit = 0
  6746.         CASE l = 5 AND lnDigit = 2
  6747.                         lcStr = lcStr + "&Acirc;&Otilde;&egrave;" + laDigit[l]
  6748.         CASE l = 5 AND lnDigit = 1
  6749.                         lcStr = lcStr + laDigit[l]
  6750.         CASE l = 6 AND lnDigit = 1 AND BETWEEN(VAL(SUBSTR(pcStr, 5, 1)),1,9)
  6751.                         lcStr = lcStr + "&agrave;&Iacute;&ccedil;&acute;"
  6752.         OTHERWISE
  6753.                         lcStr = lcStr + laNum[lnDigit] + laDigit[l]
  6754.         ENDCASE
  6755. ENDFOR
  6756. RETURN lcStr
  6757. *EOF NumLet2
  6758.  
  6759. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6760. * Procedure...: Thai3lev
  6761. * Called by...:
  6762. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  6763. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  6764. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  6765. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  6766. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  6767. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  6768. *
  6769. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  6770. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6771. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  6772.        
  6773.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  6774.        
  6775.         DIMENSION laLevel[4], laThChr[3]
  6776.        
  6777.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  6778.         *********      
  6779.         IF !plThaiCode
  6780.         ***** KU code *****
  6781.                  lcVowel0 = "12345"
  6782.                  lcVowel1 = "238243247251234230"
  6783.  
  6784.                 pcStr   = ThaiCode(pcStr,FALSE)        
  6785.                
  6786.                 laThChr[1] = k_lv1KU
  6787.                 laThChr[2] = k_lv2KU
  6788.                 laThChr[3] = k_lv4KU
  6789.                
  6790.         *******************
  6791.         ELSE
  6792.         ***** TIS code *****
  6793.                 lcVowel0 = "12345"
  6794.                 lcVowel1 = "150155219251251"
  6795.  
  6796.                 laThChr[1] = k_lv1TIS
  6797.                 laThChr[2] = k_lv2TIS
  6798.                 laThChr[3] = k_lv4TIS
  6799.  
  6800.         *******************
  6801.         ENDIF
  6802.        
  6803.  
  6804.         lnTrim  = LEN(TRIM(pcStr))
  6805.         lnNewLen = 0
  6806.        
  6807.         FOR l=1 TO lnTrim
  6808.                 lnLevel = 0
  6809.                 lcChar = SUBSTR( pcStr, l, 1)
  6810.                 FOR k=1 TO 3
  6811.                    IF lcChar $ laThChr[k]
  6812.                         lnLevel = k
  6813.                         EXIT
  6814.                    ENDIF
  6815.                 ENDFOR &&* k=1 TO 3
  6816.                 DO CASE
  6817.                 CASE lnLevel = 0
  6818.                         lnLevel = 3
  6819.                         lnNewLen = lnNewLen + 1
  6820.                 CASE lnLevel = 3
  6821.                         lnLevel = 4
  6822.                 ENDCASE
  6823.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  6824.         ENDFOR
  6825.        
  6826.         FOR l=1 TO lnNewLen
  6827.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  6828.                 IF lcChar1 # " "
  6829.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  6830.                         IF lcChar2 = " "
  6831.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  6832.                         ELSE
  6833.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  6834.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  6835.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  6836.                         ENDIF
  6837.                 ENDIF
  6838.         ENDFOR
  6839.        
  6840.         TH_1 = laLevel(2)
  6841.         TH_2 = laLevel(3)
  6842.         TH_3 = laLevel(4)
  6843.  
  6844. RETURN
  6845. *EOP Thai3lev
  6846.  
  6847. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6848. * Function....: ThaiPADC
  6849. * Called by...: global
  6850. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  6851. * Returns.....:
  6852. * Parameters..:
  6853. * Notes.......:
  6854. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6855. FUNCTION ThaiPADC( pcStr, lnLen )
  6856. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  6857.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  6858. *EOF TPADC
  6859.  
  6860. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6861. * Function....: ThaiLen
  6862. * Called by...: global
  6863. * Abstract....: length of Thai string
  6864. * Returns.....:
  6865. * Parameters..:
  6866. * Notes.......:
  6867. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6868. FUNCTION ThaiLen(  pcStr )
  6869. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  6870. *EOF TLen
  6871. *EOF NumLet2
  6872. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6873. * Procedure...: Thai3lev
  6874. * Called by...:
  6875. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  6876. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  6877. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  6878. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  6879. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  6880. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  6881. *
  6882. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  6883. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6884. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  6885.        
  6886.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  6887.        
  6888.         DIMENSION laLevel[4], laThChr[3]
  6889.        
  6890.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  6891.         *********      
  6892.         IF !plThaiCode
  6893.         ***** KU code *****
  6894.                  lcVowel0 = "12345"
  6895.                  lcVowel1 = "238243247251234230"
  6896.  
  6897.                 pcStr   = ThaiCode(pcStr,FALSE)        
  6898.                
  6899.                 laThChr[1] = k_lv1KU
  6900.                 laThChr[2] = k_lv2KU
  6901.                 laThChr[3] = k_lv4KU
  6902.                
  6903.         *******************
  6904.         ELSE
  6905.         ***** TIS code *****
  6906.                 lcVowel0 = "12345"
  6907.                 lcVowel1 = "150155219251251"
  6908.  
  6909.                 laThChr[1] = k_lv1TIS
  6910.                 laThChr[2] = k_lv2TIS
  6911.                 laThChr[3] = k_lv4TIS
  6912.  
  6913.         *******************
  6914.         ENDIF
  6915.        
  6916.  
  6917.         lnTrim  = LEN(TRIM(pcStr))
  6918.         lnNewLen = 0
  6919.        
  6920.         FOR l=1 TO lnTrim
  6921.                 lnLevel = 0
  6922.                 lcChar = SUBSTR( pcStr, l, 1)
  6923.                 FOR k=1 TO 3
  6924.                    IF lcChar $ laThChr[k]
  6925.                         lnLevel = k
  6926.                         EXIT
  6927.                    ENDIF
  6928.                 ENDFOR &&* k=1 TO 3
  6929.                 DO CASE
  6930.                 CASE lnLevel = 0
  6931.                         lnLevel = 3
  6932.                         lnNewLen = lnNewLen + 1
  6933.                 CASE lnLevel = 3
  6934.                         lnLevel = 4
  6935.                 ENDCASE
  6936.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  6937.         ENDFOR
  6938.        
  6939.         FOR l=1 TO lnNewLen
  6940.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  6941.                 IF lcChar1 # " "
  6942.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  6943.                         IF lcChar2 = " "
  6944.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  6945.                         ELSE
  6946.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  6947.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  6948.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  6949.                         ENDIF
  6950.                 ENDIF
  6951.         ENDFOR
  6952.        
  6953.         TH_1 = laLevel(2)
  6954.         TH_2 = laLevel(3)
  6955.         TH_3 = laLevel(4)
  6956.  
  6957. RETURN
  6958. *EOP Thai3lev
  6959.  
  6960. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6961. * Function....: ThaiPADC
  6962. * Called by...: global
  6963. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  6964. * Returns.....:
  6965. * Parameters..:
  6966. * Notes.......:
  6967. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6968. FUNCTION ThaiPADC( pcStr, lnLen )
  6969. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  6970.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  6971. *EOF TPADC
  6972.  
  6973. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6974. * Function....: ThaiLen
  6975. * Called by...: global
  6976. * Abstract....: length of Thai string
  6977. * Returns.....:
  6978. * Parameters..:
  6979. * Notes.......:
  6980. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6981. FUNCTION ThaiLen(  pcStr )
  6982. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  6983. *EOF TLen
  6984. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6985. * Procedure...: Thai3lev
  6986. * Called by...:
  6987. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  6988. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  6989. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  6990. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  6991. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  6992. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  6993. *
  6994. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  6995. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  6996. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  6997.        
  6998.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  6999.        
  7000.         DIMENSION laLevel[4], laThChr[3]
  7001.        
  7002.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  7003.         *********      
  7004.         IF !plThaiCode
  7005.         ***** KU code *****
  7006.                  lcVowel0 = "12345"
  7007.                  lcVowel1 = "238243247251234230"
  7008.  
  7009.                 pcStr   = ThaiCode(pcStr,FALSE)        
  7010.                
  7011.                 laThChr[1] = k_lv1KU
  7012.                 laThChr[2] = k_lv2KU
  7013.                 laThChr[3] = k_lv4KU
  7014.                
  7015.         *******************
  7016.         ELSE
  7017.         ***** TIS code *****
  7018.                 lcVowel0 = "12345"
  7019.                 lcVowel1 = "150155219251251"
  7020.  
  7021.                 laThChr[1] = k_lv1TIS
  7022.                 laThChr[2] = k_lv2TIS
  7023.                 laThChr[3] = k_lv4TIS
  7024.  
  7025.         *******************
  7026.         ENDIF
  7027.        
  7028.  
  7029.         lnTrim  = LEN(TRIM(pcStr))
  7030.         lnNewLen = 0
  7031.        
  7032.         FOR l=1 TO lnTrim
  7033.                 lnLevel = 0
  7034.                 lcChar = SUBSTR( pcStr, l, 1)
  7035.                 FOR k=1 TO 3
  7036.                    IF lcChar $ laThChr[k]
  7037.                         lnLevel = k
  7038.                         EXIT
  7039.                    ENDIF
  7040.                 ENDFOR &&* k=1 TO 3
  7041.                 DO CASE
  7042.                 CASE lnLevel = 0
  7043.                         lnLevel = 3
  7044.                         lnNewLen = lnNewLen + 1
  7045.                 CASE lnLevel = 3
  7046.                         lnLevel = 4
  7047.                 ENDCASE
  7048.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  7049.         ENDFOR
  7050.        
  7051.         FOR l=1 TO lnNewLen
  7052.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  7053.                 IF lcChar1 # " "
  7054.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  7055.                         IF lcChar2 = " "
  7056.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  7057.                         ELSE
  7058.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  7059.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  7060.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  7061.                         ENDIF
  7062.                 ENDIF
  7063.         ENDFOR
  7064.        
  7065.         TH_1 = laLevel(2)
  7066.         TH_2 = laLevel(3)
  7067.         TH_3 = laLevel(4)
  7068.  
  7069. RETURN
  7070. *EOP Thai3lev
  7071.  
  7072. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7073. * Function....: ThaiPADC
  7074. * Called by...: global
  7075. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  7076. * Returns.....:
  7077. * Parameters..:
  7078. * Notes.......:
  7079. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7080. FUNCTION ThaiPADC( pcStr, lnLen )
  7081. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  7082.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  7083. *EOF TPADC
  7084.  
  7085. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7086. * Function....: ThaiLen
  7087. * Called by...: global
  7088. * Abstract....: length of Thai string
  7089. * Returns.....:
  7090. * Parameters..:
  7091. * Notes.......:
  7092. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7093. FUNCTION ThaiLen(  pcStr )
  7094. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  7095. *EOF TLen
  7096. * Procedure...: Thai3lev
  7097. * Called by...:
  7098. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  7099. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  7100. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  7101. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  7102. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  7103. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  7104. *
  7105. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  7106. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7107. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  7108.        
  7109.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  7110.        
  7111.         DIMENSION laLevel[4], laThChr[3]
  7112.        
  7113.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  7114.         *********      
  7115.         IF !plThaiCode
  7116.         ***** KU code *****
  7117.                  lcVowel0 = "12345"
  7118.                  lcVowel1 = "238243247251234230"
  7119.  
  7120.                 pcStr   = ThaiCode(pcStr,FALSE)        
  7121.                
  7122.                 laThChr[1] = k_lv1KU
  7123.                 laThChr[2] = k_lv2KU
  7124.                 laThChr[3] = k_lv4KU
  7125.                
  7126.         *******************
  7127.         ELSE
  7128.         ***** TIS code *****
  7129.                 lcVowel0 = "12345"
  7130.                 lcVowel1 = "150155219251251"
  7131.  
  7132.                 laThChr[1] = k_lv1TIS
  7133.                 laThChr[2] = k_lv2TIS
  7134.                 laThChr[3] = k_lv4TIS
  7135.  
  7136.         *******************
  7137.         ENDIF
  7138.        
  7139.  
  7140.         lnTrim  = LEN(TRIM(pcStr))
  7141.         lnNewLen = 0
  7142.        
  7143.         FOR l=1 TO lnTrim
  7144.                 lnLevel = 0
  7145.                 lcChar = SUBSTR( pcStr, l, 1)
  7146.                 FOR k=1 TO 3
  7147.                    IF lcChar $ laThChr[k]
  7148.                         lnLevel = k
  7149.                         EXIT
  7150.                    ENDIF
  7151.                 ENDFOR &&* k=1 TO 3
  7152.                 DO CASE
  7153.                 CASE lnLevel = 0
  7154.                         lnLevel = 3
  7155.                         lnNewLen = lnNewLen + 1
  7156.                 CASE lnLevel = 3
  7157.                         lnLevel = 4
  7158.                 ENDCASE
  7159.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  7160.         ENDFOR
  7161.        
  7162.         FOR l=1 TO lnNewLen
  7163.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  7164.                 IF lcChar1 # " "
  7165.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  7166.                         IF lcChar2 = " "
  7167.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  7168.                         ELSE
  7169.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  7170.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  7171.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  7172.                         ENDIF
  7173.                 ENDIF
  7174.         ENDFOR
  7175.        
  7176.         TH_1 = laLevel(2)
  7177.         TH_2 = laLevel(3)
  7178.         TH_3 = laLevel(4)
  7179.  
  7180. RETURN
  7181. *EOP Thai3lev
  7182.  
  7183. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7184. * Function....: ThaiPADC
  7185. * Called by...: global
  7186. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  7187. * Returns.....:
  7188. * Parameters..:
  7189. * Notes.......:
  7190. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7191. FUNCTION ThaiPADC( pcStr, lnLen )
  7192. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  7193.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  7194. *EOF TPADC
  7195.  
  7196. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7197. * Function....: ThaiLen
  7198. * Called by...: global
  7199. * Abstract....: length of Thai string
  7200. * Returns.....:
  7201. * Parameters..:
  7202. * Notes.......:
  7203. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7204. FUNCTION ThaiLen(  pcStr )
  7205. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  7206. *EOF TLen
  7207. * Called by...:
  7208. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  7209. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  7210. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  7211. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  7212. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  7213. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  7214. *
  7215. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  7216. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7217. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  7218.        
  7219.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  7220.        
  7221.         DIMENSION laLevel[4], laThChr[3]
  7222.        
  7223.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  7224.         *********      
  7225.         IF !plThaiCode
  7226.         ***** KU code *****
  7227.                  lcVowel0 = "12345"
  7228.                  lcVowel1 = "238243247251234230"
  7229.  
  7230.                 pcStr   = ThaiCode(pcStr,FALSE)        
  7231.                
  7232.                 laThChr[1] = k_lv1KU
  7233.                 laThChr[2] = k_lv2KU
  7234.                 laThChr[3] = k_lv4KU
  7235.                
  7236.         *******************
  7237.         ELSE
  7238.         ***** TIS code *****
  7239.                 lcVowel0 = "12345"
  7240.                 lcVowel1 = "150155219251251"
  7241.  
  7242.                 laThChr[1] = k_lv1TIS
  7243.                 laThChr[2] = k_lv2TIS
  7244.                 laThChr[3] = k_lv4TIS
  7245.  
  7246.         *******************
  7247.         ENDIF
  7248.        
  7249.  
  7250.         lnTrim  = LEN(TRIM(pcStr))
  7251.         lnNewLen = 0
  7252.        
  7253.         FOR l=1 TO lnTrim
  7254.                 lnLevel = 0
  7255.                 lcChar = SUBSTR( pcStr, l, 1)
  7256.                 FOR k=1 TO 3
  7257.                    IF lcChar $ laThChr[k]
  7258.                         lnLevel = k
  7259.                         EXIT
  7260.                    ENDIF
  7261.                 ENDFOR &&* k=1 TO 3
  7262.                 DO CASE
  7263.                 CASE lnLevel = 0
  7264.                         lnLevel = 3
  7265.                         lnNewLen = lnNewLen + 1
  7266.                 CASE lnLevel = 3
  7267.                         lnLevel = 4
  7268.                 ENDCASE
  7269.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  7270.         ENDFOR
  7271.        
  7272.         FOR l=1 TO lnNewLen
  7273.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  7274.                 IF lcChar1 # " "
  7275.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  7276.                         IF lcChar2 = " "
  7277.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  7278.                         ELSE
  7279.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  7280.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  7281.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  7282.                         ENDIF
  7283.                 ENDIF
  7284.         ENDFOR
  7285.        
  7286.         TH_1 = laLevel(2)
  7287.         TH_2 = laLevel(3)
  7288.         TH_3 = laLevel(4)
  7289.  
  7290. RETURN
  7291. *EOP Thai3lev
  7292.  
  7293. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7294. * Function....: ThaiPADC
  7295. * Called by...: global
  7296. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  7297. * Returns.....:
  7298. * Parameters..:
  7299. * Notes.......:
  7300. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7301. FUNCTION ThaiPADC( pcStr, lnLen )
  7302. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  7303.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  7304. *EOF TPADC
  7305.  
  7306. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7307. * Function....: ThaiLen
  7308. * Called by...: global
  7309. * Abstract....: length of Thai string
  7310. * Returns.....:
  7311. * Parameters..:
  7312. * Notes.......:
  7313. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7314. FUNCTION ThaiLen(  pcStr )
  7315. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  7316. *EOF TLen
  7317. * Abstract....: &Ecirc;&egrave;&sect;&frac14;&Aring;&iexcl;&Ograve;&Atilde;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&Ecirc;&Ugrave;&egrave;&agrave;&curren;&Atilde;&times;&egrave;&Iacute;&sect;&frac34;&Ocirc;&Aacute;&frac34;&igrave;&acute;&eacute;&Ccedil;&Acirc;&Atilde;&Euml;&Ntilde;&Ecirc;&agrave;&iexcl;&Eacute;&micro;&Atilde;
  7318. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  7319. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  7320. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  7321. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  7322. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  7323. *
  7324. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  7325. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7326. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  7327.        
  7328.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  7329.        
  7330.         DIMENSION laLevel[4], laThChr[3]
  7331.        
  7332.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  7333.         *********      
  7334.         IF !plThaiCode
  7335.         ***** KU code *****
  7336.                  lcVowel0 = "12345"
  7337.                  lcVowel1 = "238243247251234230"
  7338.  
  7339.                 pcStr   = ThaiCode(pcStr,FALSE)        
  7340.                
  7341.                 laThChr[1] = k_lv1KU
  7342.                 laThChr[2] = k_lv2KU
  7343.                 laThChr[3] = k_lv4KU
  7344.                
  7345.         *******************
  7346.         ELSE
  7347.         ***** TIS code *****
  7348.                 lcVowel0 = "12345"
  7349.                 lcVowel1 = "150155219251251"
  7350.  
  7351.                 laThChr[1] = k_lv1TIS
  7352.                 laThChr[2] = k_lv2TIS
  7353.                 laThChr[3] = k_lv4TIS
  7354.  
  7355.         *******************
  7356.         ENDIF
  7357.        
  7358.  
  7359.         lnTrim  = LEN(TRIM(pcStr))
  7360.         lnNewLen = 0
  7361.        
  7362.         FOR l=1 TO lnTrim
  7363.                 lnLevel = 0
  7364.                 lcChar = SUBSTR( pcStr, l, 1)
  7365.                 FOR k=1 TO 3
  7366.                    IF lcChar $ laThChr[k]
  7367.                         lnLevel = k
  7368.                         EXIT
  7369.                    ENDIF
  7370.                 ENDFOR &&* k=1 TO 3
  7371.                 DO CASE
  7372.                 CASE lnLevel = 0
  7373.                         lnLevel = 3
  7374.                         lnNewLen = lnNewLen + 1
  7375.                 CASE lnLevel = 3
  7376.                         lnLevel = 4
  7377.                 ENDCASE
  7378.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  7379.         ENDFOR
  7380.        
  7381.         FOR l=1 TO lnNewLen
  7382.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  7383.                 IF lcChar1 # " "
  7384.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  7385.                         IF lcChar2 = " "
  7386.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  7387.                         ELSE
  7388.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  7389.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  7390.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  7391.                         ENDIF
  7392.                 ENDIF
  7393.         ENDFOR
  7394.        
  7395.         TH_1 = laLevel(2)
  7396.         TH_2 = laLevel(3)
  7397.         TH_3 = laLevel(4)
  7398.  
  7399. RETURN
  7400. *EOP Thai3lev
  7401.  
  7402. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7403. * Function....: ThaiPADC
  7404. * Called by...: global
  7405. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  7406. * Returns.....:
  7407. * Parameters..:
  7408. * Notes.......:
  7409. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7410. FUNCTION ThaiPADC( pcStr, lnLen )
  7411. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  7412.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  7413. *EOF TPADC
  7414.  
  7415. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7416. * Function....: ThaiLen
  7417. * Called by...: global
  7418. * Abstract....: length of Thai string
  7419. * Returns.....:
  7420. * Parameters..:
  7421. * Notes.......:
  7422. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7423. FUNCTION ThaiLen(  pcStr )
  7424. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  7425. *EOF TLen
  7426. * Parameters..: pcStr &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&iexcl;&egrave;&Iacute;&sup1;&aacute;&raquo;&Aring;&sect;
  7427. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  7428. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  7429. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  7430. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  7431. *
  7432. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  7433. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7434. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  7435.        
  7436.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  7437.        
  7438.         DIMENSION laLevel[4], laThChr[3]
  7439.        
  7440.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  7441.         *********      
  7442.         IF !plThaiCode
  7443.         ***** KU code *****
  7444.                  lcVowel0 = "12345"
  7445.                  lcVowel1 = "238243247251234230"
  7446.  
  7447.                 pcStr   = ThaiCode(pcStr,FALSE)        
  7448.                
  7449.                 laThChr[1] = k_lv1KU
  7450.                 laThChr[2] = k_lv2KU
  7451.                 laThChr[3] = k_lv4KU
  7452.                
  7453.         *******************
  7454.         ELSE
  7455.         ***** TIS code *****
  7456.                 lcVowel0 = "12345"
  7457.                 lcVowel1 = "150155219251251"
  7458.  
  7459.                 laThChr[1] = k_lv1TIS
  7460.                 laThChr[2] = k_lv2TIS
  7461.                 laThChr[3] = k_lv4TIS
  7462.  
  7463.         *******************
  7464.         ENDIF
  7465.        
  7466.  
  7467.         lnTrim  = LEN(TRIM(pcStr))
  7468.         lnNewLen = 0
  7469.        
  7470.         FOR l=1 TO lnTrim
  7471.                 lnLevel = 0
  7472.                 lcChar = SUBSTR( pcStr, l, 1)
  7473.                 FOR k=1 TO 3
  7474.                    IF lcChar $ laThChr[k]
  7475.                         lnLevel = k
  7476.                         EXIT
  7477.                    ENDIF
  7478.                 ENDFOR &&* k=1 TO 3
  7479.                 DO CASE
  7480.                 CASE lnLevel = 0
  7481.                         lnLevel = 3
  7482.                         lnNewLen = lnNewLen + 1
  7483.                 CASE lnLevel = 3
  7484.                         lnLevel = 4
  7485.                 ENDCASE
  7486.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  7487.         ENDFOR
  7488.        
  7489.         FOR l=1 TO lnNewLen
  7490.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  7491.                 IF lcChar1 # " "
  7492.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  7493.                         IF lcChar2 = " "
  7494.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  7495.                         ELSE
  7496.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  7497.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  7498.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  7499.                         ENDIF
  7500.                 ENDIF
  7501.         ENDFOR
  7502.        
  7503.         TH_1 = laLevel(2)
  7504.         TH_2 = laLevel(3)
  7505.         TH_3 = laLevel(4)
  7506.  
  7507. RETURN
  7508. *EOP Thai3lev
  7509.  
  7510. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7511. * Function....: ThaiPADC
  7512. * Called by...: global
  7513. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  7514. * Returns.....:
  7515. * Parameters..:
  7516. * Notes.......:
  7517. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7518. FUNCTION ThaiPADC( pcStr, lnLen )
  7519. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  7520.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  7521. *EOF TPADC
  7522.  
  7523. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7524. * Function....: ThaiLen
  7525. * Called by...: global
  7526. * Abstract....: length of Thai string
  7527. * Returns.....:
  7528. * Parameters..:
  7529. * Notes.......:
  7530. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7531. FUNCTION ThaiLen(  pcStr )
  7532. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  7533. *EOF TLen
  7534. *               TH_1 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 1
  7535. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  7536. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  7537. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  7538. *
  7539. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  7540. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7541. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  7542.        
  7543.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  7544.        
  7545.         DIMENSION laLevel[4], laThChr[3]
  7546.        
  7547.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  7548.         *********      
  7549.         IF !plThaiCode
  7550.         ***** KU code *****
  7551.                  lcVowel0 = "12345"
  7552.                  lcVowel1 = "238243247251234230"
  7553.  
  7554.                 pcStr   = ThaiCode(pcStr,FALSE)        
  7555.                
  7556.                 laThChr[1] = k_lv1KU
  7557.                 laThChr[2] = k_lv2KU
  7558.                 laThChr[3] = k_lv4KU
  7559.                
  7560.         *******************
  7561.         ELSE
  7562.         ***** TIS code *****
  7563.                 lcVowel0 = "12345"
  7564.                 lcVowel1 = "150155219251251"
  7565.  
  7566.                 laThChr[1] = k_lv1TIS
  7567.                 laThChr[2] = k_lv2TIS
  7568.                 laThChr[3] = k_lv4TIS
  7569.  
  7570.         *******************
  7571.         ENDIF
  7572.        
  7573.  
  7574.         lnTrim  = LEN(TRIM(pcStr))
  7575.         lnNewLen = 0
  7576.        
  7577.         FOR l=1 TO lnTrim
  7578.                 lnLevel = 0
  7579.                 lcChar = SUBSTR( pcStr, l, 1)
  7580.                 FOR k=1 TO 3
  7581.                    IF lcChar $ laThChr[k]
  7582.                         lnLevel = k
  7583.                         EXIT
  7584.                    ENDIF
  7585.                 ENDFOR &&* k=1 TO 3
  7586.                 DO CASE
  7587.                 CASE lnLevel = 0
  7588.                         lnLevel = 3
  7589.                         lnNewLen = lnNewLen + 1
  7590.                 CASE lnLevel = 3
  7591.                         lnLevel = 4
  7592.                 ENDCASE
  7593.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  7594.         ENDFOR
  7595.        
  7596.         FOR l=1 TO lnNewLen
  7597.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  7598.                 IF lcChar1 # " "
  7599.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  7600.                         IF lcChar2 = " "
  7601.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  7602.                         ELSE
  7603.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  7604.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  7605.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  7606.                         ENDIF
  7607.                 ENDIF
  7608.         ENDFOR
  7609.        
  7610.         TH_1 = laLevel(2)
  7611.         TH_2 = laLevel(3)
  7612.         TH_3 = laLevel(4)
  7613.  
  7614. RETURN
  7615. *EOP Thai3lev
  7616.  
  7617. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7618. * Function....: ThaiPADC
  7619. * Called by...: global
  7620. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  7621. * Returns.....:
  7622. * Parameters..:
  7623. * Notes.......:
  7624. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7625. FUNCTION ThaiPADC( pcStr, lnLen )
  7626. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  7627.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  7628. *EOF TPADC
  7629.  
  7630. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7631. * Function....: ThaiLen
  7632. * Called by...: global
  7633. * Abstract....: length of Thai string
  7634. * Returns.....:
  7635. * Parameters..:
  7636. * Notes.......:
  7637. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7638. FUNCTION ThaiLen(  pcStr )
  7639. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  7640. *EOF TLen
  7641. *               TH_2 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 2
  7642. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  7643. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  7644. *
  7645. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  7646. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7647. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  7648.        
  7649.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  7650.        
  7651.         DIMENSION laLevel[4], laThChr[3]
  7652.        
  7653.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  7654.         *********      
  7655.         IF !plThaiCode
  7656.         ***** KU code *****
  7657.                  lcVowel0 = "12345"
  7658.                  lcVowel1 = "238243247251234230"
  7659.  
  7660.                 pcStr   = ThaiCode(pcStr,FALSE)        
  7661.                
  7662.                 laThChr[1] = k_lv1KU
  7663.                 laThChr[2] = k_lv2KU
  7664.                 laThChr[3] = k_lv4KU
  7665.                
  7666.         *******************
  7667.         ELSE
  7668.         ***** TIS code *****
  7669.                 lcVowel0 = "12345"
  7670.                 lcVowel1 = "150155219251251"
  7671.  
  7672.                 laThChr[1] = k_lv1TIS
  7673.                 laThChr[2] = k_lv2TIS
  7674.                 laThChr[3] = k_lv4TIS
  7675.  
  7676.         *******************
  7677.         ENDIF
  7678.        
  7679.  
  7680.         lnTrim  = LEN(TRIM(pcStr))
  7681.         lnNewLen = 0
  7682.        
  7683.         FOR l=1 TO lnTrim
  7684.                 lnLevel = 0
  7685.                 lcChar = SUBSTR( pcStr, l, 1)
  7686.                 FOR k=1 TO 3
  7687.                    IF lcChar $ laThChr[k]
  7688.                         lnLevel = k
  7689.                         EXIT
  7690.                    ENDIF
  7691.                 ENDFOR &&* k=1 TO 3
  7692.                 DO CASE
  7693.                 CASE lnLevel = 0
  7694.                         lnLevel = 3
  7695.                         lnNewLen = lnNewLen + 1
  7696.                 CASE lnLevel = 3
  7697.                         lnLevel = 4
  7698.                 ENDCASE
  7699.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  7700.         ENDFOR
  7701.        
  7702.         FOR l=1 TO lnNewLen
  7703.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  7704.                 IF lcChar1 # " "
  7705.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  7706.                         IF lcChar2 = " "
  7707.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  7708.                         ELSE
  7709.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  7710.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  7711.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  7712.                         ENDIF
  7713.                 ENDIF
  7714.         ENDFOR
  7715.        
  7716.         TH_1 = laLevel(2)
  7717.         TH_2 = laLevel(3)
  7718.         TH_3 = laLevel(4)
  7719.  
  7720. RETURN
  7721. *EOP Thai3lev
  7722.  
  7723. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7724. * Function....: ThaiPADC
  7725. * Called by...: global
  7726. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  7727. * Returns.....:
  7728. * Parameters..:
  7729. * Notes.......:
  7730. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7731. FUNCTION ThaiPADC( pcStr, lnLen )
  7732. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  7733.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  7734. *EOF TPADC
  7735.  
  7736. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7737. * Function....: ThaiLen
  7738. * Called by...: global
  7739. * Abstract....: length of Thai string
  7740. * Returns.....:
  7741. * Parameters..:
  7742. * Notes.......:
  7743. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7744. FUNCTION ThaiLen(  pcStr )
  7745. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  7746. *EOF TLen
  7747. *               TH_3 &cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;&Atilde;&ETH;&acute;&Ntilde;&ordm;&middot;&Otilde;&egrave; 3
  7748. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  7749. *
  7750. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  7751. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7752. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  7753.        
  7754.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  7755.        
  7756.         DIMENSION laLevel[4], laThChr[3]
  7757.        
  7758.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  7759.         *********      
  7760.         IF !plThaiCode
  7761.         ***** KU code *****
  7762.                  lcVowel0 = "12345"
  7763.                  lcVowel1 = "238243247251234230"
  7764.  
  7765.                 pcStr   = ThaiCode(pcStr,FALSE)        
  7766.                
  7767.                 laThChr[1] = k_lv1KU
  7768.                 laThChr[2] = k_lv2KU
  7769.                 laThChr[3] = k_lv4KU
  7770.                
  7771.         *******************
  7772.         ELSE
  7773.         ***** TIS code *****
  7774.                 lcVowel0 = "12345"
  7775.                 lcVowel1 = "150155219251251"
  7776.  
  7777.                 laThChr[1] = k_lv1TIS
  7778.                 laThChr[2] = k_lv2TIS
  7779.                 laThChr[3] = k_lv4TIS
  7780.  
  7781.         *******************
  7782.         ENDIF
  7783.        
  7784.  
  7785.         lnTrim  = LEN(TRIM(pcStr))
  7786.         lnNewLen = 0
  7787.        
  7788.         FOR l=1 TO lnTrim
  7789.                 lnLevel = 0
  7790.                 lcChar = SUBSTR( pcStr, l, 1)
  7791.                 FOR k=1 TO 3
  7792.                    IF lcChar $ laThChr[k]
  7793.                         lnLevel = k
  7794.                         EXIT
  7795.                    ENDIF
  7796.                 ENDFOR &&* k=1 TO 3
  7797.                 DO CASE
  7798.                 CASE lnLevel = 0
  7799.                         lnLevel = 3
  7800.                         lnNewLen = lnNewLen + 1
  7801.                 CASE lnLevel = 3
  7802.                         lnLevel = 4
  7803.                 ENDCASE
  7804.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  7805.         ENDFOR
  7806.        
  7807.         FOR l=1 TO lnNewLen
  7808.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  7809.                 IF lcChar1 # " "
  7810.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  7811.                         IF lcChar2 = " "
  7812.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  7813.                         ELSE
  7814.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  7815.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  7816.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  7817.                         ENDIF
  7818.                 ENDIF
  7819.         ENDFOR
  7820.        
  7821.         TH_1 = laLevel(2)
  7822.         TH_2 = laLevel(3)
  7823.         TH_3 = laLevel(4)
  7824.  
  7825. RETURN
  7826. *EOP Thai3lev
  7827.  
  7828. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7829. * Function....: ThaiPADC
  7830. * Called by...: global
  7831. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  7832. * Returns.....:
  7833. * Parameters..:
  7834. * Notes.......:
  7835. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7836. FUNCTION ThaiPADC( pcStr, lnLen )
  7837. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  7838.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  7839. *EOF TPADC
  7840.  
  7841. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7842. * Function....: ThaiLen
  7843. * Called by...: global
  7844. * Abstract....: length of Thai string
  7845. * Returns.....:
  7846. * Parameters..:
  7847. * Notes.......:
  7848. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7849. FUNCTION ThaiLen(  pcStr )
  7850. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  7851. *EOF TLen
  7852. *               plThaiCode &agrave;&raquo;&ccedil;&sup1;&agrave;&iexcl;&Eacute;&micro;&Atilde;&Euml;&Atilde;&times;&Iacute;&Ecirc;&Aacute;&Iacute; ( TRUE &agrave;&iexcl;&Eacute;&micro;&Atilde; , FALSE &Ecirc;&Aacute;&Iacute;.)
  7853. *
  7854. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  7855. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7856. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  7857.        
  7858.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  7859.        
  7860.         DIMENSION laLevel[4], laThChr[3]
  7861.        
  7862.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  7863.         *********      
  7864.         IF !plThaiCode
  7865.         ***** KU code *****
  7866.                  lcVowel0 = "12345"
  7867.                  lcVowel1 = "238243247251234230"
  7868.  
  7869.                 pcStr   = ThaiCode(pcStr,FALSE)        
  7870.                
  7871.                 laThChr[1] = k_lv1KU
  7872.                 laThChr[2] = k_lv2KU
  7873.                 laThChr[3] = k_lv4KU
  7874.                
  7875.         *******************
  7876.         ELSE
  7877.         ***** TIS code *****
  7878.                 lcVowel0 = "12345"
  7879.                 lcVowel1 = "150155219251251"
  7880.  
  7881.                 laThChr[1] = k_lv1TIS
  7882.                 laThChr[2] = k_lv2TIS
  7883.                 laThChr[3] = k_lv4TIS
  7884.  
  7885.         *******************
  7886.         ENDIF
  7887.        
  7888.  
  7889.         lnTrim  = LEN(TRIM(pcStr))
  7890.         lnNewLen = 0
  7891.        
  7892.         FOR l=1 TO lnTrim
  7893.                 lnLevel = 0
  7894.                 lcChar = SUBSTR( pcStr, l, 1)
  7895.                 FOR k=1 TO 3
  7896.                    IF lcChar $ laThChr[k]
  7897.                         lnLevel = k
  7898.                         EXIT
  7899.                    ENDIF
  7900.                 ENDFOR &&* k=1 TO 3
  7901.                 DO CASE
  7902.                 CASE lnLevel = 0
  7903.                         lnLevel = 3
  7904.                         lnNewLen = lnNewLen + 1
  7905.                 CASE lnLevel = 3
  7906.                         lnLevel = 4
  7907.                 ENDCASE
  7908.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  7909.         ENDFOR
  7910.        
  7911.         FOR l=1 TO lnNewLen
  7912.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  7913.                 IF lcChar1 # " "
  7914.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  7915.                         IF lcChar2 = " "
  7916.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  7917.                         ELSE
  7918.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  7919.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  7920.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  7921.                         ENDIF
  7922.                 ENDIF
  7923.         ENDFOR
  7924.        
  7925.         TH_1 = laLevel(2)
  7926.         TH_2 = laLevel(3)
  7927.         TH_3 = laLevel(4)
  7928.  
  7929. RETURN
  7930. *EOP Thai3lev
  7931.  
  7932. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7933. * Function....: ThaiPADC
  7934. * Called by...: global
  7935. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  7936. * Returns.....:
  7937. * Parameters..:
  7938. * Notes.......:
  7939. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7940. FUNCTION ThaiPADC( pcStr, lnLen )
  7941. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  7942.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  7943. *EOF TPADC
  7944.  
  7945. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7946. * Function....: ThaiLen
  7947. * Called by...: global
  7948. * Abstract....: length of Thai string
  7949. * Returns.....:
  7950. * Parameters..:
  7951. * Notes.......:
  7952. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7953. FUNCTION ThaiLen(  pcStr )
  7954. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  7955. *EOF TLen
  7956. *
  7957. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  7958. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  7959. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  7960.        
  7961.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  7962.        
  7963.         DIMENSION laLevel[4], laThChr[3]
  7964.        
  7965.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  7966.         *********      
  7967.         IF !plThaiCode
  7968.         ***** KU code *****
  7969.                  lcVowel0 = "12345"
  7970.                  lcVowel1 = "238243247251234230"
  7971.  
  7972.                 pcStr   = ThaiCode(pcStr,FALSE)        
  7973.                
  7974.                 laThChr[1] = k_lv1KU
  7975.                 laThChr[2] = k_lv2KU
  7976.                 laThChr[3] = k_lv4KU
  7977.                
  7978.         *******************
  7979.         ELSE
  7980.         ***** TIS code *****
  7981.                 lcVowel0 = "12345"
  7982.                 lcVowel1 = "150155219251251"
  7983.  
  7984.                 laThChr[1] = k_lv1TIS
  7985.                 laThChr[2] = k_lv2TIS
  7986.                 laThChr[3] = k_lv4TIS
  7987.  
  7988.         *******************
  7989.         ENDIF
  7990.        
  7991.  
  7992.         lnTrim  = LEN(TRIM(pcStr))
  7993.         lnNewLen = 0
  7994.        
  7995.         FOR l=1 TO lnTrim
  7996.                 lnLevel = 0
  7997.                 lcChar = SUBSTR( pcStr, l, 1)
  7998.                 FOR k=1 TO 3
  7999.                    IF lcChar $ laThChr[k]
  8000.                         lnLevel = k
  8001.                         EXIT
  8002.                    ENDIF
  8003.                 ENDFOR &&* k=1 TO 3
  8004.                 DO CASE
  8005.                 CASE lnLevel = 0
  8006.                         lnLevel = 3
  8007.                         lnNewLen = lnNewLen + 1
  8008.                 CASE lnLevel = 3
  8009.                         lnLevel = 4
  8010.                 ENDCASE
  8011.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  8012.         ENDFOR
  8013.        
  8014.         FOR l=1 TO lnNewLen
  8015.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  8016.                 IF lcChar1 # " "
  8017.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  8018.                         IF lcChar2 = " "
  8019.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  8020.                         ELSE
  8021.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  8022.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  8023.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  8024.                         ENDIF
  8025.                 ENDIF
  8026.         ENDFOR
  8027.        
  8028.         TH_1 = laLevel(2)
  8029.         TH_2 = laLevel(3)
  8030.         TH_3 = laLevel(4)
  8031.  
  8032. RETURN
  8033. *EOP Thai3lev
  8034.  
  8035. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8036. * Function....: ThaiPADC
  8037. * Called by...: global
  8038. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  8039. * Returns.....:
  8040. * Parameters..:
  8041. * Notes.......:
  8042. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8043. FUNCTION ThaiPADC( pcStr, lnLen )
  8044. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  8045.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  8046. *EOF TPADC
  8047.  
  8048. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8049. * Function....: ThaiLen
  8050. * Called by...: global
  8051. * Abstract....: length of Thai string
  8052. * Returns.....:
  8053. * Parameters..:
  8054. * Notes.......:
  8055. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8056. FUNCTION ThaiLen(  pcStr )
  8057. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8058. *EOF TLen
  8059. * Notes.......: &micro;&eacute;&Iacute;&sect; define &micro;&Ntilde;&Ccedil;&aacute;&raquo;&Atilde; Th_1, Th_2, Th_3 &auml;&Ccedil;&eacute;&iexcl;&egrave;&Iacute;&sup1;
  8060. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8061. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  8062.        
  8063.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  8064.        
  8065.         DIMENSION laLevel[4], laThChr[3]
  8066.        
  8067.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  8068.         *********      
  8069.         IF !plThaiCode
  8070.         ***** KU code *****
  8071.                  lcVowel0 = "12345"
  8072.                  lcVowel1 = "238243247251234230"
  8073.  
  8074.                 pcStr   = ThaiCode(pcStr,FALSE)        
  8075.                
  8076.                 laThChr[1] = k_lv1KU
  8077.                 laThChr[2] = k_lv2KU
  8078.                 laThChr[3] = k_lv4KU
  8079.                
  8080.         *******************
  8081.         ELSE
  8082.         ***** TIS code *****
  8083.                 lcVowel0 = "12345"
  8084.                 lcVowel1 = "150155219251251"
  8085.  
  8086.                 laThChr[1] = k_lv1TIS
  8087.                 laThChr[2] = k_lv2TIS
  8088.                 laThChr[3] = k_lv4TIS
  8089.  
  8090.         *******************
  8091.         ENDIF
  8092.        
  8093.  
  8094.         lnTrim  = LEN(TRIM(pcStr))
  8095.         lnNewLen = 0
  8096.        
  8097.         FOR l=1 TO lnTrim
  8098.                 lnLevel = 0
  8099.                 lcChar = SUBSTR( pcStr, l, 1)
  8100.                 FOR k=1 TO 3
  8101.                    IF lcChar $ laThChr[k]
  8102.                         lnLevel = k
  8103.                         EXIT
  8104.                    ENDIF
  8105.                 ENDFOR &&* k=1 TO 3
  8106.                 DO CASE
  8107.                 CASE lnLevel = 0
  8108.                         lnLevel = 3
  8109.                         lnNewLen = lnNewLen + 1
  8110.                 CASE lnLevel = 3
  8111.                         lnLevel = 4
  8112.                 ENDCASE
  8113.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  8114.         ENDFOR
  8115.        
  8116.         FOR l=1 TO lnNewLen
  8117.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  8118.                 IF lcChar1 # " "
  8119.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  8120.                         IF lcChar2 = " "
  8121.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  8122.                         ELSE
  8123.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  8124.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  8125.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  8126.                         ENDIF
  8127.                 ENDIF
  8128.         ENDFOR
  8129.        
  8130.         TH_1 = laLevel(2)
  8131.         TH_2 = laLevel(3)
  8132.         TH_3 = laLevel(4)
  8133.  
  8134. RETURN
  8135. *EOP Thai3lev
  8136.  
  8137. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8138. * Function....: ThaiPADC
  8139. * Called by...: global
  8140. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  8141. * Returns.....:
  8142. * Parameters..:
  8143. * Notes.......:
  8144. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8145. FUNCTION ThaiPADC( pcStr, lnLen )
  8146. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  8147.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  8148. *EOF TPADC
  8149.  
  8150. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8151. * Function....: ThaiLen
  8152. * Called by...: global
  8153. * Abstract....: length of Thai string
  8154. * Returns.....:
  8155. * Parameters..:
  8156. * Notes.......:
  8157. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8158. FUNCTION ThaiLen(  pcStr )
  8159. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8160. *EOF TLen
  8161. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8162. PROCEDURE Thai3lev(  pcStr, TH_1, TH_2, TH_3, pnLen, plThaicode )
  8163.        
  8164.         LOCAL  lnLevel, lcChar, l, lcVowel0, lcVowel1, k
  8165.        
  8166.         DIMENSION laLevel[4], laThChr[3]
  8167.        
  8168.         laLevel = SPACE(IIF( !EMPTY(pnLen), pnLen, LEN(pcStr) ))
  8169.         *********      
  8170.         IF !plThaiCode
  8171.         ***** KU code *****
  8172.                  lcVowel0 = "12345"
  8173.                  lcVowel1 = "238243247251234230"
  8174.  
  8175.                 pcStr   = ThaiCode(pcStr,FALSE)        
  8176.                
  8177.                 laThChr[1] = k_lv1KU
  8178.                 laThChr[2] = k_lv2KU
  8179.                 laThChr[3] = k_lv4KU
  8180.                
  8181.         *******************
  8182.         ELSE
  8183.         ***** TIS code *****
  8184.                 lcVowel0 = "12345"
  8185.                 lcVowel1 = "150155219251251"
  8186.  
  8187.                 laThChr[1] = k_lv1TIS
  8188.                 laThChr[2] = k_lv2TIS
  8189.                 laThChr[3] = k_lv4TIS
  8190.  
  8191.         *******************
  8192.         ENDIF
  8193.        
  8194.  
  8195.         lnTrim  = LEN(TRIM(pcStr))
  8196.         lnNewLen = 0
  8197.        
  8198.         FOR l=1 TO lnTrim
  8199.                 lnLevel = 0
  8200.                 lcChar = SUBSTR( pcStr, l, 1)
  8201.                 FOR k=1 TO 3
  8202.                    IF lcChar $ laThChr[k]
  8203.                         lnLevel = k
  8204.                         EXIT
  8205.                    ENDIF
  8206.                 ENDFOR &&* k=1 TO 3
  8207.                 DO CASE
  8208.                 CASE lnLevel = 0
  8209.                         lnLevel = 3
  8210.                         lnNewLen = lnNewLen + 1
  8211.                 CASE lnLevel = 3
  8212.                         lnLevel = 4
  8213.                 ENDCASE
  8214.                 laLevel[lnLevel] = STUFF( laLevel[lnLevel], lnNewLen , 1, lcChar )
  8215.         ENDFOR
  8216.        
  8217.         FOR l=1 TO lnNewLen
  8218.                 lcChar1 = SUBSTR( laLevel[1], l, 1)
  8219.                 IF lcChar1 # " "
  8220.                         lcChar2 = SUBSTR( laLevel[2], l, 1)
  8221.                         IF lcChar2 = " "
  8222.                                 laLevel[2] = STUFF( laLevel[2], l, 1, lcChar1 )
  8223.                         ELSE
  8224.                                 x1 = VAL( SUBSTR( lcVowel1, (AT(lcChar2,laThChr[2])-1)*3+1 , 3) )
  8225.                                 x2 = VAL( SUBSTR( lcVowel0,  AT(lcChar1,laThChr[1])-1      , 1) )
  8226.                                 laLevel[2] = STUFF( laLevel[2], l, 1, CHR(x1 + x2) )
  8227.                         ENDIF
  8228.                 ENDIF
  8229.         ENDFOR
  8230.        
  8231.         TH_1 = laLevel(2)
  8232.         TH_2 = laLevel(3)
  8233.         TH_3 = laLevel(4)
  8234.  
  8235. RETURN
  8236. *EOP Thai3lev
  8237.  
  8238. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8239. * Function....: ThaiPADC
  8240. * Called by...: global
  8241. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  8242. * Returns.....:
  8243. * Parameters..:
  8244. * Notes.......:
  8245. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8246. FUNCTION ThaiPADC( pcStr, lnLen )
  8247. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  8248.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  8249. *EOF TPADC
  8250.  
  8251. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8252. * Function....: ThaiLen
  8253. * Called by...: global
  8254. * Abstract....: length of Thai string
  8255. * Returns.....:
  8256. * Parameters..:
  8257. * Notes.......:
  8258. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8259. FUNCTION ThaiLen(  pcStr )
  8260. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8261. *EOF TLen
  8262. *EOP Thai3lev
  8263. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8264. * Function....: ThaiPADC
  8265. * Called by...: global
  8266. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  8267. * Returns.....:
  8268. * Parameters..:
  8269. * Notes.......:
  8270. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8271. FUNCTION ThaiPADC( pcStr, lnLen )
  8272. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  8273.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  8274. *EOF TPADC
  8275.  
  8276. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8277. * Function....: ThaiLen
  8278. * Called by...: global
  8279. * Abstract....: length of Thai string
  8280. * Returns.....:
  8281. * Parameters..:
  8282. * Notes.......:
  8283. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8284. FUNCTION ThaiLen(  pcStr )
  8285. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8286. *EOF TLen
  8287. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8288. * Function....: ThaiPADC
  8289. * Called by...: global
  8290. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  8291. * Returns.....:
  8292. * Parameters..:
  8293. * Notes.......:
  8294. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8295. FUNCTION ThaiPADC( pcStr, lnLen )
  8296. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  8297.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  8298. *EOF TPADC
  8299.  
  8300. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8301. * Function....: ThaiLen
  8302. * Called by...: global
  8303. * Abstract....: length of Thai string
  8304. * Returns.....:
  8305. * Parameters..:
  8306. * Notes.......:
  8307. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8308. FUNCTION ThaiLen(  pcStr )
  8309. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8310. *EOF TLen
  8311. * Function....: ThaiPADC
  8312. * Called by...: global
  8313. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  8314. * Returns.....:
  8315. * Parameters..:
  8316. * Notes.......:
  8317. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8318. FUNCTION ThaiPADC( pcStr, lnLen )
  8319. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  8320.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  8321. *EOF TPADC
  8322.  
  8323. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8324. * Function....: ThaiLen
  8325. * Called by...: global
  8326. * Abstract....: length of Thai string
  8327. * Returns.....:
  8328. * Parameters..:
  8329. * Notes.......:
  8330. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8331. FUNCTION ThaiLen(  pcStr )
  8332. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8333. *EOF TLen
  8334. * Called by...: global
  8335. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  8336. * Returns.....:
  8337. * Parameters..:
  8338. * Notes.......:
  8339. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8340. FUNCTION ThaiPADC( pcStr, lnLen )
  8341. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  8342.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  8343. *EOF TPADC
  8344.  
  8345. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8346. * Function....: ThaiLen
  8347. * Called by...: global
  8348. * Abstract....: length of Thai string
  8349. * Returns.....:
  8350. * Parameters..:
  8351. * Notes.......:
  8352. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8353. FUNCTION ThaiLen(  pcStr )
  8354. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8355. *EOF TLen
  8356. * Abstract....: &uml;&Ntilde;&acute;&micro;&Ntilde;&Ccedil;&Euml;&sup1;&Ntilde;&sect;&Ecirc;&times;&Iacute;&iexcl;&Aring;&Ograve;&sect;&cent;&eacute;&Iacute;&curren;&Ccedil;&Ograve;&Aacute;
  8357. * Returns.....:
  8358. * Parameters..:
  8359. * Notes.......:
  8360. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8361. FUNCTION ThaiPADC( pcStr, lnLen )
  8362. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  8363.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  8364. *EOF TPADC
  8365.  
  8366. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8367. * Function....: ThaiLen
  8368. * Called by...: global
  8369. * Abstract....: length of Thai string
  8370. * Returns.....:
  8371. * Parameters..:
  8372. * Notes.......:
  8373. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8374. FUNCTION ThaiLen(  pcStr )
  8375. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8376. *EOF TLen
  8377. * Returns.....:
  8378. * Parameters..:
  8379. * Notes.......:
  8380. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8381. FUNCTION ThaiPADC( pcStr, lnLen )
  8382. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  8383.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  8384. *EOF TPADC
  8385.  
  8386. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8387. * Function....: ThaiLen
  8388. * Called by...: global
  8389. * Abstract....: length of Thai string
  8390. * Returns.....:
  8391. * Parameters..:
  8392. * Notes.......:
  8393. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8394. FUNCTION ThaiLen(  pcStr )
  8395. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8396. *EOF TLen
  8397. * Parameters..:
  8398. * Notes.......:
  8399. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8400. FUNCTION ThaiPADC( pcStr, lnLen )
  8401. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  8402.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  8403. *EOF TPADC
  8404.  
  8405. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8406. * Function....: ThaiLen
  8407. * Called by...: global
  8408. * Abstract....: length of Thai string
  8409. * Returns.....:
  8410. * Parameters..:
  8411. * Notes.......:
  8412. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8413. FUNCTION ThaiLen(  pcStr )
  8414. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8415. *EOF TLen
  8416. * Notes.......:
  8417. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8418. FUNCTION ThaiPADC( pcStr, lnLen )
  8419. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  8420.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  8421. *EOF TPADC
  8422.  
  8423. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8424. * Function....: ThaiLen
  8425. * Called by...: global
  8426. * Abstract....: length of Thai string
  8427. * Returns.....:
  8428. * Parameters..:
  8429. * Notes.......:
  8430. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8431. FUNCTION ThaiLen(  pcStr )
  8432. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8433. *EOF TLen
  8434. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8435. FUNCTION ThaiPADC( pcStr, lnLen )
  8436. RETURN SPACE(INT((lnLen-Tlen(pcStr))/2))+ pcStr +;
  8437.                 SPACE(INT((lnLen-LEN(pcStr))/2))
  8438. *EOF TPADC
  8439.  
  8440. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8441. * Function....: ThaiLen
  8442. * Called by...: global
  8443. * Abstract....: length of Thai string
  8444. * Returns.....:
  8445. * Parameters..:
  8446. * Notes.......:
  8447. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8448. FUNCTION ThaiLen(  pcStr )
  8449. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8450. *EOF TLen
  8451. *EOF TPADC
  8452. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8453. * Function....: ThaiLen
  8454. * Called by...: global
  8455. * Abstract....: length of Thai string
  8456. * Returns.....:
  8457. * Parameters..:
  8458. * Notes.......:
  8459. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8460. FUNCTION ThaiLen(  pcStr )
  8461. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8462. *EOF TLen
  8463. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8464. * Function....: ThaiLen
  8465. * Called by...: global
  8466. * Abstract....: length of Thai string
  8467. * Returns.....:
  8468. * Parameters..:
  8469. * Notes.......:
  8470. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8471. FUNCTION ThaiLen(  pcStr )
  8472. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8473. *EOF TLen
  8474. * Function....: ThaiLen
  8475. * Called by...: global
  8476. * Abstract....: length of Thai string
  8477. * Returns.....:
  8478. * Parameters..:
  8479. * Notes.......:
  8480. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8481. FUNCTION ThaiLen(  pcStr )
  8482. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8483. *EOF TLen
  8484. * Called by...: global
  8485. * Abstract....: length of Thai string
  8486. * Returns.....:
  8487. * Parameters..:
  8488. * Notes.......:
  8489. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8490. FUNCTION ThaiLen(  pcStr )
  8491. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8492. *EOF TLen
  8493. * Abstract....: length of Thai string
  8494. * Returns.....:
  8495. * Parameters..:
  8496. * Notes.......:
  8497. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8498. FUNCTION ThaiLen(  pcStr )
  8499. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8500. *EOF TLen
  8501. * Returns.....:
  8502. * Parameters..:
  8503. * Notes.......:
  8504. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8505. FUNCTION ThaiLen(  pcStr )
  8506. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8507. *EOF TLen
  8508. * Parameters..:
  8509. * Notes.......:
  8510. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8511. FUNCTION ThaiLen(  pcStr )
  8512. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8513. *EOF TLen
  8514. * Notes.......:
  8515. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8516. FUNCTION ThaiLen(  pcStr )
  8517. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8518. *EOF TLen
  8519. *&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;*
  8520. FUNCTION ThaiLen(  pcStr )
  8521. RETURN LEN( CHRTRAN(pcStr,TUPLOSTR,'') )
  8522. *EOF TLen
  8523. *EOF TLen
  8524.  
  8525.  
  8526.