//using System;
//using System.Collections.Generic;
//using System.Diagnostics;
//using System.Globalization;
//using System.IO;
//using System.Linq;
//using System.Reflection;
//using System.Runtime.CompilerServices;
//using System.Security;
//using System.Text;
//using System.Threading.Tasks;
//using System.Collections;

//namespace Project
//{
//    public class CParser
//    {
//        private string SrcText;
//        private ArrayList CommandList;   // //여기엔 Scommand 가 들어있다.
//        private System.Text.StringBuilder ErrMsg;
//        // Public Log As System.Text.StringBuilder

//        public event MessageEventHandler Message;
//        public void raiseMessage(string m, Boolean err)
//        {
//            if (Message != null) Message(m, err);
//        }
//        public delegate void MessageEventHandler(string M, bool Err);

//        public CParser()
//        {

//        }

//        public new string toString
//        {
//            get
//            {
//                if (this.isError == false)
//                {
//                    object Value = ParseCommand(SrcText, true);
//                    return Value.ToString();
//                }
//                return "";
//            }
//        }
//        public new object GetData
//        {
//            get
//            {
//                if (this.isError == false)
//                {
//                    object Value = ParseCommand(SrcText, true);
//                    return Value;
//                }
//                return null;
//            }
//        }
//        public bool isError
//        {
//            get
//            {
//                if (this.ErrMsg.ToString() != "")
//                    return true;
//                else
//                    return false;
//            }
//        }
//        private void Check_error(string vSrcText)
//        {
//            // Return '//임시로 해제

//            int Lcnt = 0;
//            int Rcnt = 0;

//            ErrMsg = new System.Text.StringBuilder();

//            return; // 
//            foreach (string EXP_ in vSrcText.Split(';')) // //각명령을 ;로 구분되어잇기떄문에 구분됫것들이 각자의 명령이다.
//            {
//                var EXP = EXP_.Trim();
//                Lcnt = EXP.ToCharArray().Where(t => t == '(').Count();// MyString.GetInCountChar(EXP, "(");   // //파라미터 시작갯수
//                Rcnt = EXP.ToCharArray().Where(t => t == ')').Count();// MyString.GetInCountChar(EXP, ")");  // //파라미터 종료갯수
//                if (Lcnt != Rcnt)
//                    ErrMsg.AppendLine(EXP + "파라미터 시작기호 ( 와 종료기호 ) 가 일치하지 않습니다");
//                Lcnt = EXP.ToCharArray().Where(t => t == '"').Count();// MyString.GetInCountChar(EXP, Strings.Chr(34));   // //파라미터 시작갯수
//                Rcnt = EXP.ToCharArray().Where(t => t == '"').Count();// MyString.GetInCountChar(EXP, Strings.Chr(34));  // //파라미터 종료갯수
//                if (Lcnt != Rcnt)
//                    ErrMsg.AppendLine(EXP + "문자열묶음기호(\")가 일치하지 않습니다");
//            }
//        }

//        public virtual void CommandText(string s)
//        {
//            SrcText = s;
//            Check_error(SrcText);
//            if (this.isError)
//                UTIL.MsgE(ErrMsg.ToString());// Interaction.MsgBox(ErrMsg.ToString(), MsgBoxStyle.Critical, "오류");
//        }

//        protected string Buffer1 = "";
//        protected string Buffer2 = "";
//        protected string Buffer3 = "";
//        protected string Buffer4 = "";

//        private object ParseCommand(string vSrcText, bool isfirst, object NEwValue = null)
//    {
//        // //각명령어를 쪼갠다. 
//        // //중첩명령어의 경우에도 쪼갠다.

//        // Dim Cmd As String '//명령어
//        // Dim Param As String   '//명렁파라미터
//        // Dim target As String   '//타겏값
//        // Dim Str As String
//        // Dim Line As String

//        if (isfirst)
//            this.CommandList = new ArrayList();// //처음에만 이것을 초기화한다.

//        vSrcText = vSrcText.Replace("\r\n","\n");//Constants.vbCrLf, Constants.vbLf);
//        vSrcText = vSrcText.Replace("\r","\n");//Constants.vbCr, Constants.vbLf);
//        vSrcText = vSrcText.Replace("\n\n","\n");//Constants.vbLf + Constants.vbLf, Constants.vbLf);
//        vSrcText = vSrcText.Replace(";","\n");// Constants.vbLf);

//          raiseMessage("Command Expression : " + vSrcText, false);
//        foreach (string EXP_ in vSrcText.Split('\n')) // //각명령을 ;로 구분되어잇기떄문에 구분됫것들이 각자의 명령이다.
//        {
//            if (EXP_.Trim() == "")
//                continue;
//            if (EXP_.Length < 3)
//                continue;
//            if (EXP_.Substring(0, 2) == "//")
//                continue;

//            // Me.Log.AppendLine("New Line Value is : " & NEwValue.ToString)

//           var EXP = EXP_.Trim();
//            bool CmdFind = false;    // //명령어를다 찾앗는가?
//            bool ParamFind = false;
//            System.Text.StringBuilder NewParam = new System.Text.StringBuilder();
//            bool Isfunction = false;
//            bool IsFunctionEnd = false;
//            short InnerFuncCnt = 0;
//            System.Text.StringBuilder NewCmd = new System.Text.StringBuilder();
//            ArrayList ParamList = new ArrayList();
//            bool IsTextInner = false;

//            if (EXP != "")
//            {

//                // My.Computer.FileSystem.WriteAllText("c:\command.txT", "expressiong=" & EXP, True)

//                if (EXP.Substring(0, 1) == "\"")//Strings.Chr(34))
//                    NEwValue = EXP;    // //해당문자자체가 값이된다.
//                else
//                    // //파라미터란 ()사이의 명령어이며, 콤마(,)로 분리된다
//                    // //단 "" 사이의 콤마는 인정하지않는다.

//                    foreach (char C in EXP.ToCharArray())
//                    {
//                        if (CmdFind == false)
//                        {
//                            if (C == '(')
//                                CmdFind = true;
//                            else
//                                NewCmd.Append(C);
//                        }
//                        else
//                            switch (C)
//                            {
//                                case ',':
//                                    {
//                                        if (IsTextInner)
//                                            NewParam.Append(C);
//                                        else if (Isfunction == false)
//                                        {
//                                            if (IsFunctionEnd)
//                                                ParamList.Add(NewParam.ToString());  // //파라미터를 찾았으므로 파람리스트에 추가한다.
//                                            else
//                                                ParamList.Add(NewParam.ToString());// //파라미터를 찾았으므로 파람리스트에 추가한다.
//                                            NewParam = new System.Text.StringBuilder();   // //파라미터부분 초기화
//                                            IsFunctionEnd = false;
//                                        }
//                                        else
//                                            NewParam.Append(C);
//                                        break;
//                                    }

//                                case '(':
//                                    {
//                                        if (IsTextInner)
//                                            NewParam.Append(C);
//                                        else if (Isfunction)
//                                        {
//                                            InnerFuncCnt += 1;
//                                            NewParam.Append(C);
//                                        }
//                                        else
//                                        {
//                                            Isfunction = true; // //이파라미터가 또 함수를 가지고있다 ㅠ_ㅠ;
//                                            NewParam.Append(C);
//                                        }

//                                        break;
//                                    }

//                                case ')':
//                                    {
//                                        if (IsTextInner)
//                                            NewParam.Append(C);
//                                        else if (Isfunction)
//                                        {
//                                            if (InnerFuncCnt > 0)
//                                            {
//                                                InnerFuncCnt -= 1;
//                                                NewParam.Append(C);
//                                            }
//                                            else
//                                            {
//                                                Isfunction = false; // //이파라미터가 또 함수를 가지고있다 ㅠ_ㅠ;
//                                                IsFunctionEnd = true;
//                                                NewParam.Append(C);
//                                            }
//                                        }
//                                        else
//                                        {
//                                            if (NewParam.ToString() != "")
//                                                ParamList.Add(NewParam.ToString()); // //파라미터를 찾았으므로 파람리스트에 추가한다.
//                                            NewParam = new System.Text.StringBuilder();   // //파라미터부분 초기화
//                                            IsFunctionEnd = false;

//                                            // MsgBox("명령어실행 : " & NewCmd.ToString)
//                                            // //각 파라미터들의 값을 가져온다
//                                            raiseMessage("New COmmand : " + NewCmd.ToString() + " paramCount=" + ParamList.Count, false);
//                                            switch (NewCmd.ToString().ToUpper())
//                                            {
//                                                case "MUL":
//                                                    {
//                                                        if (ParamList.Count != 2)
//                                                         raiseMessage("MUL 함수에 2개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
//                                                            // Me.Log.AppendLine("MUL " & Param1 & vbTab & Param2)
                                                          
//                                                            if (Param1.ToString().IsNumeric()==false || Param2.ToString().IsNumeric()==false)
//                                                                // Me.Log.AppendLine("MUL param error support only number")
//                                                                return 0;
//                                                            else
//                                                                NEwValue = System.Convert.ToDecimal(Param1) * System.Convert.ToDecimal(Param2);
//                                                        }

//                                                        break;
//                                                    }

//                                                case "PLUS":
//                                                    {
//                                                        if (ParamList.Count != 2)
//                                                           raiseMessage("PLUS 함수에 2개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
                                                            
//                                                            if (Param1.ToString().IsNumeric()==false ||  Param2.ToString().IsNumeric()==false)
//                                                                return 0;
//                                                            else
//                                                                NEwValue = System.Convert.ToDecimal(Param1) + System.Convert.ToDecimal(Param2);
//                                                        }

//                                                        break;
//                                                    }

//                                                case "MINUS":
//                                                    {
//                                                        if (ParamList.Count != 2)
//                                                            raiseMessage("MINUS 함수에 2개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
//                                                            // Me.Log.AppendLine("PLUS " & Param1 & vbTab & Param2)
//                                                            if (Param1.ToString().IsNumeric()==false || Param2.ToString().IsNumeric()==false )
//                                                                // Me.Log.AppendLine("MINUS param error support only number")
//                                                                return 0;
//                                                            else
//                                                                NEwValue = System.Convert.ToDecimal(Param1) - System.Convert.ToDecimal(Param2);
//                                                        }

//                                                        break;
//                                                    }

//                                                case "ISEQULE":
//                                                case "EQ"  // //둘이 같은지 반환해준다.
//                                         :
//                                                    {
//                                                        if (ParamList.Count != 2)
//                                                            raiseMessage("ISEQULE 함수에 2개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
//                                                            // MsgBox(ParamList[1].ToString & "/" & NewValue)
//                                                            // Me.Log.AppendLine("ISEQULE " & Param1 & vbTab & Param2)
//                                                            if (Param1 != Param2)
//                                                            {
//                                                                raiseMessage("ISEQULE RETURN FALSE", true);
//                                                                return false;
//                                                            }
//                                                            else
//                                                            {
//                                                                raiseMessage("ISEQULE RETURN TRUE", true);
//                                                                return true;
//                                                            }
//                                                        }

//                                                        break;
//                                                    }

//                                                case "NEQ":
//                                                case "DIFF"  // //둘이 다르면 true 반환해준다.
//                                         :
//                                                    {
//                                                        if (ParamList.Count != 2)
//                                                            raiseMessage("DIFF(NEQ) 함수에 2개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
//                                                            // MsgBox(ParamList[1].ToString & "/" & NewValue)
//                                                            // Me.Log.AppendLine("ISEQULE " & Param1 & vbTab & Param2)
//                                                            if (Param1 != Param2)
//                                                            {
//                                                                raiseMessage("DIFF RETURN True", true);
//                                                                return true;
//                                                            }
//                                                            else
//                                                            {
//                                                                raiseMessage("DIFF RETURN False", true);
//                                                                return false;
//                                                            }
//                                                        }

//                                                        break;
//                                                    }

//                                                case "IF":
//                                                    {
//                                                        if (ParamList.Count != 2)
//                                                            raiseMessage("IF 함수에 2개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
//                                                            if (Param1.ToString().ToLower() != Param2.ToString().ToLower())
//                                                            {
//                                                                raiseMessage("IF문 조건이 서로 다르므로 실행을 종료합니다.", false);
//                                                                return ""; // //해당구문전체를 모두 FALSE한다.
//                                                            }
//                                                            else
//                                                                // RaiseEvent RaiseMessage("IF문 조건이 동일 True Case IN(" & Param1 & "  " & Param2 & ")")
//                                                                Console.WriteLine("sdf");
//                                                        }

//                                                        break;
//                                                    }

//                                                case "IFNOT":
//                                                    {
//                                                        if (ParamList.Count != 2)
//                                                            raiseMessage("IFNOT 함수에 2개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
//                                                            if (Param1 == Param2)
//                                                            {
//                                                                raiseMessage("IF문 조건이 서로 같으므로 실행을 종료합니다.", true);
//                                                                return ""; // //해당구문전체를 모두 FALSE한다.
//                                                            }
//                                                            else
//                                                            {
//                                                            }
//                                                        }

//                                                        break;
//                                                    }

//                                                case "MSGBOX":
//                                                case "MSG":
//                                                    {
//                                                        if (ParamList.Count != 1)
//                                                            raiseMessage("MSGBOX 함수에 1개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                          UTIL.MsgE(Param1, MsgBoxStyle.Information, "확인");
//                                                        }

//                                                        break;
//                                                    }

//                                                case "ISNUM":
//                                                    {
//                                                        if (ParamList.Count != 1)
//                                                            raiseMessage("ISNUM 함수에 1개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            NEwValue = Information.IsNumeric(Param1);
//                                                        }

//                                                        break;
//                                                    }

//                                                case "NVL":
//                                                    {
//                                                        if (ParamList.Count != 2)
//                                                            raiseMessage("ISEMPTY 함수에 2개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
//                                                            if (Param1.Trim() == "")
//                                                                NEwValue = Param2;
//                                                            else
//                                                                NEwValue = Param1;
//                                                        }

//                                                        break;
//                                                    }

//                                                case "INDEXOF":
//                                                    {
//                                                        if (ParamList.Count != 2)
//                                                            raiseMessage("INDEXOF 함수에 2개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
//                                                            NEwValue = Param1.IndexOf(Param2) + 1;
//                                                        }

//                                                        break;
//                                                    }

//                                                case "LINDEXOF":
//                                                    {
//                                                        if (ParamList.Count != 2)
//                                                            raiseMessage("LINDEXOF 함수에 2개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
//                                                            NEwValue = Param1.LastIndexOf(Param2) + 1;
//                                                        }

//                                                        break;
//                                                    }

//                                                case "REPLACE":
//                                                    {
//                                                        if (ParamList.Count != 3)
//                                                            raiseMessage("REPLACE 함수에 3개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
//                                                            object Param3 = RunParam(ParamList[2].ToString(), NEwValue.ToString());
//                                                            NEwValue = Param1.ToString().Replace(Param2, Param3);
//                                                        }

//                                                        break;
//                                                    }

//                                                case "REMOVECHAR":
//                                                    {
//                                                        if (ParamList.Count != 2)
//                                                            raiseMessage("REMOVESPACE 함수에 1개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
//                                                            NEwValue = Param1.Trim(Param2.ToCharArray()).ToString().Trim();
//                                                        }

//                                                        break;
//                                                    }

//                                                case "REMOVESCHAR" // //특수기호삭제한다.
//                                         :
//                                                    {
//                                                        if (ParamList.Count != 1)
//                                                            raiseMessage("REMOVESCHAR 함수에 1개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            System.Text.StringBuilder NewString = new System.Text.StringBuilder();
//                                                            foreach (char Cc in Param1.ToCharArray())
//                                                            {
//                                                                switch (Strings.Asc(Cc))
//                                                                {
//                                                                    case object _ when 65 <= Strings.Asc(Cc) && Strings.Asc(Cc) <= 90:
//                                                                    case object _ when 48 <= Strings.Asc(Cc) && Strings.Asc(Cc) <= 57:
//                                                                    case object _ when 97 <= Strings.Asc(Cc) && Strings.Asc(Cc) <= 122:
//                                                                    case object _ when Strings.Asc(Cc) < 0:
//                                                                    case 32:
//                                                                        {
//                                                                            NewString.Append(Cc);
//                                                                            break;
//                                                                        }
//                                                                }
//                                                            }
//                                                            NEwValue = NewString.ToString();
//                                                        }

//                                                        break;
//                                                    }

//                                                case "REMOVESPACE":
//                                                    {
//                                                        if (ParamList.Count != 1)
//                                                            raiseMessage("REMOVESPACE 함수에 1개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            NEwValue = Param1.Replace(Strings.Space(1), Constants.vbNullString);
//                                                        }

//                                                        break;
//                                                    }

//                                                case "TOUPPER":
//                                                    {
//                                                        if (ParamList.Count != 1)
//                                                            raiseMessage("TOUPPER 함수에 1개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            NEwValue = Param1.ToUpper();
//                                                        }

//                                                        break;
//                                                    }

//                                                case "TRIM":
//                                                    {
//                                                        if (ParamList.Count != 1)
//                                                            raiseMessage("TRIM 함수에 1개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            NEwValue = Param1.Trim();
//                                                        }

//                                                        break;
//                                                    }

//                                                case "TOLOWER":
//                                                    {
//                                                        if (ParamList.Count != 1)
//                                                            raiseMessage("TOLOWER 함수에 1개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            NEwValue = Param1.ToLower();
//                                                        }

//                                                        break;
//                                                    }

//                                                case "LENB":
//                                                    {
//                                                        if (ParamList.Count != 1)
//                                                            raiseMessage("LENB 함수에 1개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            NEwValue = System.Text.Encoding.Default.GetByteCount(Param1.ToString());
//                                                        }

//                                                        break;
//                                                    }

//                                                case "LEN":
//                                                    {
//                                                        if (ParamList.Count != 1)
//                                                            raiseMessage("LEN 함수에 1개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            NEwValue = Param1.Length;
//                                                        }

//                                                        break;
//                                                    }

//                                                case "RIGHTADD":
//                                                case "ADDRIGHT":
//                                                    {
//                                                        if (ParamList.Count != 2)
//                                                            raiseMessage("RIGHTADD 함수에 2개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
//                                                            NEwValue = Param1 + Param2;
//                                                        }

//                                                        break;
//                                                    }

//                                                case "ADDNUM":
//                                                    {
//                                                        if (ParamList.Count != 2)
//                                                            raiseMessage("ADDNUM 함수에 2개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
//                                                            NEwValue = Param1 + Param2;
//                                                        }

//                                                        break;
//                                                    }

//                                                case "LEFTADD":
//                                                case "ADDLEFT":
//                                                    {
//                                                        if (ParamList.Count != 2)
//                                                            raiseMessage("LEFTADD 함수에 2개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
//                                                            NEwValue = Param2 + Param1;
//                                                        }

//                                                        break;
//                                                    }

//                                                case "TODATE":
//                                                    {
//                                                        if (ParamList.Count != 1)
//                                                            raiseMessage("TODATE 함수에 1개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            NEwValue = ((DateTime)Param1);
//                                                        }

//                                                        break;
//                                                    }

//                                                case "TOSTRING":
//                                                    {
//                                                        if (ParamList.Count != 1)
//                                                            raiseMessage("TOSTRING 함수에 1개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            NEwValue = (System.Convert.ToString(Param1));
//                                                        }

//                                                        break;
//                                                    }

//                                                case "TOINT":
//                                                    {
//                                                        if (ParamList.Count != 1)
//                                                            raiseMessage("TOINT 함수에 1개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            NEwValue = Param1;
//                                                        }

//                                                        break;
//                                                    }

//                                                case "NOW":
//                                                    {
//                                                        NEwValue = DateTime.Now;
//                                                        break;
//                                                    }

//                                                case "SUBSTRING":
//                                                case "SUBSTR"  // //2개의 파라미터를 사용한다.
//                                         :
//                                                    {
//                                                        if (ParamList.Count < 2)
//                                                            raiseMessage("SUBSTRING 함수에 2개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
//                                                            object param3 = "";
//                                                            if (ParamList.Count == 3)
//                                                                param3 = RunParam(ParamList[2].ToString(), NEwValue.ToString());
//                                                            if (Param1.Trim() == "" || Information.IsNumeric(Param2) == false || System.Convert.ToInt32(Param2) < 0)
//                                                                NEwValue = "";
//                                                            else if (param3 != "")
//                                                            {
//                                                                // //길이를 참고한다. 너무 긴건 처리하지 못하므로
//                                                                if (System.Convert.ToInt32(Param2) + System.Convert.ToInt32(param3) > Param1.Length)
//                                                                    NEwValue = Param1.Substring(Param2, (Param1.Length - System.Convert.ToInt32(Param2)));
//                                                                else
//                                                                    NEwValue = Param1.Substring(Param2, param3);
//                                                            }
//                                                            else
//                                                                NEwValue = Param1.Substring(Param2);
//                                                        }

//                                                        break;
//                                                    }

//                                                case "SAVE1":
//                                                    {
//                                                        if (ParamList.Count < 1)
//                                                          UTIL.MsgE("SAVE1 함수에 1개의 파라미터가 없습니다");
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            Buffer1 = Param1;
//                                                        }

//                                                        break;
//                                                    }

//                                                case "SAVE2":
//                                                    {
//                                                        if (ParamList.Count < 1)
//                                                          UTIL.MsgE("SAVE1 함수에 1개의 파라미터가 없습니다");
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            Buffer2 = Param1;
//                                                        }

//                                                        break;
//                                                    }

//                                                case "SAVE3":
//                                                    {
//                                                        if (ParamList.Count < 1)
//                                                            UTIL.MsgE("SAVE1 함수에 1개의 파라미터가 없습니다");
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            Buffer3 = Param1;
//                                                        }

//                                                        break;
//                                                    }

//                                                case "SAVE4":
//                                                    {
//                                                        if (ParamList.Count < 1)
//                                                          UTIL.MsgE("SAVE1 함수에 1개의 파라미터가 없습니다");
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            Buffer4 = Param1;
//                                                        }

//                                                        break;
//                                                    }

//                                                case "LEFT"  // //2개의 파라미터를 사용한다.
//                                         :
//                                                    {
//                                                        if (ParamList.Count != 2)
//                                                            raiseMessage("LEFT 함수에 2개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
//                                                            NEwValue = Strings.Left(Param1, Param2);
//                                                        }

//                                                        break;
//                                                    }

//                                                case "RIGHT"  // //2개의 파라미터를 사용한다.
//                                         :
//                                                    {
//                                                        if (ParamList.Count != 2)
//                                                            raiseMessage("RIGHT 함수에 2개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            var Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString()).ToString();
//                                                            var Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString()).ToString();
//                                                            NEwValue =  Param1.Substring(Param1.Length-int.Parse(Param2));// Strings.Right(Param1, Param2);
//                                                        }

//                                                        break;
//                                                    }

//                                                case "MID":  // //2개의 파라미터를 사용한다.
//                                                    {
//                                                        if (ParamList.Count != 3)
//                                                            raiseMessage("MID 함수에 3개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            var Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            var Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());
//                                                            var Param3 = RunParam(ParamList[2].ToString(), NEwValue.ToString());
//                                                            if (Param2 == "-1" || int.Parse(Param3.ToString()) < 1)
//                                                            {
//                                                                raiseMessage("MID 함수의 시작위치값은 0이상이여야합니다\nMID 함수의 추출길이는 1이상이여야합니다", true);
//                                                                NEwValue = "";
//                                                            }
//                                                            else
//                                                                NEwValue = Param1.ToString().Substring(int.Parse(Param2.ToString()), int.Parse(Param3.ToString()));
//                                                        }

//                                                        break;
//                                                    }

//                                                case "FORMAT":
//                                                    {
//                                                        if (ParamList.Count != 2)
//                                                            raiseMessage("FORMAT 함수에 2개의 파라미터가 없습니다", true);
//                                                        else
//                                                        {
//                                                            object Param1 = RunParam(ParamList[0].ToString(), NEwValue.ToString());
//                                                            object Param2 = RunParam(ParamList[1].ToString(), NEwValue.ToString());

//                                                            // MsgBox(Param1 & "/" & Param2)
//                                                            if(Param1.GetType()== typeof(int))
//                                                                NEwValue = ((int)Param1).ToString(Param2.ToString());
//                                                            else
//                                                                NEwValue = Param1.ToString();
//                                                        }

//                                                        break;
//                                                    }

//                                                default:
//                                                    {
//                                                        //raiseMessage("미지원 함수 입니다")
//                                                         raiseMessage("미지원 : " + NewCmd.ToString(),true);
//                                                        break;
//                                                    }
//                                            }
//                                        }

//                                        break;
//                                    }

//                                default:
//                                    {
//                                        if (C == '"')
//                                        {
//                                            IsTextInner = !IsTextInner;
//                                            NewParam.Append(C);
//                                        }
//                                        else if (IsFunctionEnd)
//                                            raiseMessage("내부한수 종결문다음에 , 가 와야하는데 " + C + "가 왔습니다", true);
//                                        else
//                                            NewParam.Append(C);
//                                        break;
//                                    }
//                            }
//                    }
//            }
//        }
//        // Me.Log.AppendLine("ParseCOmmand Return : " & NEwValue.ToString)
//        return NEwValue;
//    }

//        public object RunParam(string vParam, string SrcValue)
//        {
//            // My.Computer.FileSystem.WriteAllText("c:\log.txT", "runparam  param=" & vParam, True)
//            vParam = vParam.Trim();
//            if (vParam == "")
//                return "";
//            if (vParam.Substring(0, 1) == "\"")
//                return vParam.Replace("\"", "");
//            if (vParam.ToUpper() == "TRUE")
//                return true;
//            if (vParam.ToUpper() == "FALSE")
//                return false;

//            // //시작값이 숫자라면 이건 숫자값이다.
//            if (vParam.Substring(0, 1).IsNumeric() == true)
//                return vParam;

//            // //시작값이 # 라면 원본 데이터이다.
//            if (vParam == "#")
//                return SrcValue;
//            if (vParam == "#1")
//                return Buffer1;
//            if (vParam == "#2")
//                return Buffer2;
//            if (vParam == "#3")
//                return Buffer3;
//            if (vParam == "#4")
//                return Buffer4;

//            // //시작값이 숫자도 일반 문자도 공백도 아니라면 영문단어이다.
//            // // (  가 있다면 함수이므로 함수를 실행한다.
//            switch (vParam.ToUpper())
//            {
//                case "NOW" // //date 타입을 반환한다.
//               :
//                    {
//                        return DateTime.Now;
//                    }

//                default:
//                    {
//                        if (vParam.IndexOf("(") != -1)
//                            return this.ParseCommand(vParam, false, SrcValue);
//                        else
//                            return "";// return RunUnknown(vParam, SrcValue);// //비지원 목록으로 반환한다.
//                        break;
//                    }
//            }
//            return "";
//        }

//    }
//}

