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

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.