//──────────────────────────────────────── protected override void LinkToParent( Configurationtree_Node cur_Cf, Configurationtree_Node parent_Cf, MemoryApplication memoryApplication, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "LinkToParent", log_Reports); log_Method.WriteWarning_ToConsole("親要素に、連結。"); parent_Cf.List_Child.Add(cur_Cf, log_Reports); log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public string GetArgumentBySet(int index, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(); log_Method.BeginMethod(Info_SpeedCoder.Name_Library, this, "GetArgumentBySet", log_Reports); string result = this.listPuttingArgumentBySet[index]; switch (this.Option) { case "": { //無視。 } break; case DefinitionParameterlineImpl.OPTION_FIRST_LETTER_UPPER: { if (1 <= result.Length) { string head = result.Substring(0, 1); //頭 string left = result.Remove(0, 1); //残り result = head.ToUpper() + left; } } break; case DefinitionParameterlineImpl.OPTION_FIRST_LETTER_LOWER: { if (1 <= result.Length) { string head = result.Substring(0, 1); //頭 string left = result.Remove(0, 1); //残り result = head.ToLower() + left; } } break; default: { //サポートしていないオプション。 //無視します。 log_Method.WriteWarning_ToConsole("サポートしていないオプション=[" + this.Option + "]"); } break; } log_Method.EndMethod(log_Reports); return(result); }
//──────────────────────────────────────── #endregion #region アクション //──────────────────────────────────────── /// <summary> /// アクション実行。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public override string Execute5_Main(Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_Functions.Name_Library, this, "Execute5_Main", log_Reports); if (log_Method.CanWarning()) { log_Method.WriteWarning_ToConsole(" ▲▲▲▲▲オーバーライド実装してください。"); } log_Method.EndMethod(log_Reports); return(""); }
//──────────────────────────────────────── protected void Execute6_Sub( object sender, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Functions.Name_Library, this, "Execute6_Sub", log_Reports); string sFncName0; this.TrySelectAttribute(out sFncName0, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); if (log_Reports.CanStopwatch) { log_Method.Log_Stopwatch.Message = "Nアクション[" + sFncName0 + "]実行"; log_Method.Log_Stopwatch.Begin(); } // // if (log_Reports.Successful) { // 正常時 if (sender is Customcontrol) { Customcontrol fcCc = (Customcontrol)sender; string sName_Usercontrol = fcCc.ControlCommon.Expression_Name_Control.Execute4_OnExpressionString( EnumHitcount.Unconstraint, log_Reports ); log_Reports.Comment_EventCreationMe += "/追記:[" + sName_Usercontrol + "]コントロールが、[" + sFncName0 + "]アクションを実行。"; } else { log_Reports.Comment_EventCreationMe += "/追記:[" + sFncName0 + "]アクションを実行。"; } } else { } // // // // リストボックス // // // UsercontrolListbox uctLst; if (log_Reports.Successful) { Expression_Node_String ec_ArgFcName; this.TrySelectAttribute(out ec_ArgFcName, Expression_Node_Function33Impl.PM_NAME_CONTROL, EnumHitcount.One_Or_Zero, log_Reports); List <Usercontrol> list_FcUc = this.Owner_MemoryApplication.MemoryForms.GetUsercontrolsByName( ec_ArgFcName, true, log_Reports ); if (0 < list_FcUc.Count) { Usercontrol uct = list_FcUc[0]; if (uct is UsercontrolListbox) { uctLst = (UsercontrolListbox)uct; } else { uctLst = null; } } else { uctLst = null; } } else { uctLst = null; } // // // // 項目選択の要求。 // // // if (log_Reports.Successful) { Expression_Node_String ec_ArgExpectedValue; this.TrySelectAttribute(out ec_ArgExpectedValue, Expression_Node_Function33Impl.PM_VALUE_EXPECTED, EnumHitcount.One_Or_Zero, log_Reports); Expression_Node_String ec_ArgKeyFieldName; this.TrySelectAttribute(out ec_ArgKeyFieldName, Expression_Node_Function33Impl.PM_NAME_FIELD_KEY, EnumHitcount.One_Or_Zero, log_Reports); Expression_Node_String ec_ArgEmptyToAltValue; this.TrySelectAttribute(out ec_ArgEmptyToAltValue, Expression_Node_Function33Impl.PM_VALUE_EMPTY, EnumHitcount.One_Or_Zero, log_Reports); if ("" == ec_ArgExpectedValue.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports)) { // // 空文字列が指定されたときの代替値で検索。(初期値は空文字列)。 // uctLst.SelectItem( ec_ArgKeyFieldName, ec_ArgEmptyToAltValue, log_Reports ); } else { uctLst.SelectItem( ec_ArgKeyFieldName, ec_ArgExpectedValue, log_Reports ); } // // 一致項目がなければ、選択は解除されている。 // if (-1 == uctLst.SelectedIndex) { // #警告 log_Method.WriteWarning_ToConsole("選択されてない。。。"); Expression_Node_String ec_ArgExpectedValue2; this.TrySelectAttribute(out ec_ArgExpectedValue2, Expression_Node_Function33Impl.PM_VALUE_EXPECTED2, EnumHitcount.One_Or_Zero, log_Reports); // // デフォルト値の設定があるかどうか。 // if ("" != ec_ArgExpectedValue2.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports)) { if ("" == ec_ArgExpectedValue2.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports)) { // // 空文字列が指定されたときの代替値で検索。(初期値は空文字列)。 // uctLst.SelectItem( ec_ArgKeyFieldName, ec_ArgEmptyToAltValue, log_Reports ); } else { uctLst.SelectItem( ec_ArgKeyFieldName, ec_ArgExpectedValue2, log_Reports ); } } } } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── #endregion #region アクション //──────────────────────────────────────── /// <summary> /// 実行。 /// </summary> /// <param name="sender"></param> /// <param name="eventMonitor"></param> /// <param name="log_Reports"></param> public override string Execute5_Main(Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Functions.Name_Library, this, "Execute5_Main", log_Reports); string sFncName0; this.TrySelectAttribute(out sFncName0, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); if (log_Reports.CanStopwatch) { log_Method.Log_Stopwatch.Message = "「E■[" + sFncName0 + "]アクション」実行(A)"; log_Method.Log_Stopwatch.Begin(); } if (this.EnumEventhandler == EnumEventhandler.O_Lr) { string sName_Usercontrol; if (this.Functionparameterset.Sender is Customcontrol) { Customcontrol ccFc = (Customcontrol)this.Functionparameterset.Sender; sName_Usercontrol = ccFc.ControlCommon.Expression_Name_Control.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); log_Reports.Comment_EventCreationMe += "/追記:[" + sName_Usercontrol + "]コントロールが、[" + sFncName0 + "]アクションを実行。"; } else { sName_Usercontrol = "(▲不明101!)"; log_Reports.Comment_EventCreationMe += "/追記:[" + sFncName0 + "]アクションを実行。"; } // // // // List <Usercontrol> ucFcList; if (log_Reports.Successful) { // 正常時 // テーブルデータをコントロールにセットします。 // // 指定のコントロール(無指定の場合、自コントロール)を // まず取得。 // Expression_Node_String ec_ArgListboxName; this.TrySelectAttribute(out ec_ArgListboxName, Expression_Node_Function20Impl.PM_NAME_CONTROL_LISTBOX, EnumHitcount.One_Or_Zero, log_Reports); ucFcList = this.Owner_MemoryApplication.MemoryForms.GetUsercontrolsByName( ec_ArgListboxName, true, log_Reports); } else { ucFcList = new List <Usercontrol>(); } // リストボックスにテーブルのデータソースを関連付けます。 if (log_Reports.Successful) { // 正常時 // リストボックス コントロール。 Usercontrol fcUc = ucFcList[0]; Expression_Node_String ec_TableName = null; string sTableName; this.TrySelectAttribute(out sTableName, Expression_Node_Function20Impl.PM_NAME_TABLE, EnumHitcount.One_Or_Zero, log_Reports); if ("" != sTableName)//this.E_SysArgDic.ContainsKey(E_SysFnc20Impl.S_ARG_TABLE_NAME) { //テーブル名を指定(アクション用引数) this.TrySelectAttribute(out ec_TableName, Expression_Node_Function20Impl.PM_NAME_TABLE, EnumHitcount.One_Or_Zero, log_Reports); // #デバッグ if (log_Method.CanWarning()) { log_Method.WriteWarning_ToConsole(" <arg3 tableName=”[" + ec_TableName.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + "]”>属性でした。"); } } else { // #デバッグ if (log_Method.CanWarning()) { log_Method.WriteWarning_ToConsole(" <arg3 tableName=”☆”>属性が未指定でした。"); } Configuration_Node owner_Configurationtree_Control; { owner_Configurationtree_Control = this.Cur_Configuration.GetParentByNodename( NamesNode.S_CONTROL1, EnumConfiguration.Tree, true, log_Reports); } // // 次を期待。 // <data target=”list-box”> // <arg5 name=”tableName” value=”☆”> // List <Configurationtree_Node> cfList_Data = ((Configurationtree_Node)owner_Configurationtree_Control).GetChildrenByNodename( NamesNode.S_DATA, false, log_Reports); foreach (Configurationtree_Node cf_Data in cfList_Data) { string sAccess; cf_Data.Dictionary_Attribute.TryGetValue(PmNames.S_ACCESS, out sAccess, false, log_Reports); List <string> sList_Access = new CsvTo_ListImpl().Read(sAccess); if (sList_Access.Contains(ValuesAttr.S_FROM)) { // <data access=”from”> string sDataMemory; cf_Data.Dictionary_Attribute.TryGetValue(PmNames.S_MEMORY, out sDataMemory, true, log_Reports); if (!log_Reports.Successful) { goto gt_EndMethod; } if (ValuesAttr.S_RECORDS == sDataMemory) { cf_Data.Dictionary_Attribute.TryGetValue(PmNames.S_NAME_TABLE, out sTableName, true, log_Reports); if (!log_Reports.Successful) { goto gt_EndMethod; } ec_TableName = new Expression_Leaf_StringImpl(sTableName, this, cf_Data); // #デバッグ if (log_Method.CanWarning()) { log_Method.WriteWarning_ToConsole(" <data tableName=”[" + sTableName + "]”>属性でした。"); } } else { //#連続エラー { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sDataMemory, log_Reports);//属性memoryの値 this.Owner_MemoryApplication.CreateErrorReport("Er:110007;", tmpl, log_Reports); } } } } if (null == ec_TableName) { // エラー処理? if (log_Method.CanError()) { log_Method.WriteError_ToConsole(" 直接指定されなかったので、既に<data>にtableName属性があると期待しましたが、ありませんでした。"); } sTableName = ""; //string sTableName = ""; ec_TableName = new Expression_Leaf_StringImpl(sTableName, this, owner_Configurationtree_Control); // owner_Cf_Fc.S_DataSource } } //↓この中で時間かかってる。 Utility_Listbox.BindTableToDatasource( fcUc,// リストボックス・コントロール ec_TableName, this.Owner_MemoryApplication, log_Reports ); //↑この中で時間かかってる。 } } goto gt_EndMethod; // // gt_EndMethod: log_Method.EndMethod(log_Reports); return(""); }
//──────────────────────────────────────── /// <summary> /// 例えば、次の2つの物を与えると、 /// ●ID=10、EXPL=赤、と入っている行。 /// ●「%1%:%2%|ID|EXPL」という文字列。 /// /// すると、次の文字列が返ってくる。 /// ●「10:EXPL」 /// /// %1%はID、%2%はEXPLに当たる。 /// </summary> /// <param name="sFormat"></param> /// <param name="dataRowView"></param> /// <param name="xenonTable"></param> /// <param name="sErrorMsg"></param> /// <returns></returns> public string Perform( string sFormat, DataRowView dataRowView, Table_Humaninput xenonTable, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(); log_Method.BeginMethod(Info_Table.Name_Library, this, "Perform", log_Reports); string result; if (null == xenonTable) { // エラー // テーブルが未指定の場合 goto gt_Error_NullTable; } CsvTo_DataTableImpl reader = new CsvTo_DataTableImpl(); reader.CharSeparator = '|'; DataTable scriptParameters = reader.Read( sFormat ); if (scriptParameters.Rows.Count < 1) { // 警告 // 項目の表示書式が指定されていない場合 // result = "(【Er:301;】表示書式未指定、レイアウト設定で)"; // エラーにはしない。 if (log_Method.CanWarning()) { log_Method.WriteWarning_ToConsole("(【Er:301;】表示書式未指定、レイアウト設定で)"); } goto gt_EndMethod; } DataRow dataRow = scriptParameters.Rows[0]; object[] recordFields = dataRow.ItemArray;// ItemArrayは1回の呼び出しが重い。 Builder_TexttemplateP1pImpl formatString = new Builder_TexttemplateP1pImpl(); formatString.Text = recordFields[0].ToString();//例:"%1%:%2%" //.Console.WriteLine(this.GetType().Name + "#CreateText: recordFields[0].ToString()=[" + recordFields[0].ToString() + "]"); FieldToParameters fieldToParameters = new FieldToParameters(); Configurationtree_Node parent_Configurationtree_Node = new Configurationtree_NodeImpl("!ハードコーディング_RecordFormatStringImpl#CreateText", null); // フィールド名のリストが続く。 for (int nIndex = 1; nIndex < recordFields.Length; nIndex++) { //.Console.WriteLine(this.GetType().Name + "#CreateText: index=[" + index + "] recordFields[index].ToString()=[" + recordFields[index].ToString() + "]"); string sFieldName = recordFields[nIndex].ToString(); fieldToParameters.AddField( sFieldName, xenonTable, log_Reports ); if (!log_Reports.Successful) { // 既エラー。 result = "(エラー)"; goto gt_EndMethod; } } fieldToParameters.Perform(ref formatString, dataRowView, xenonTable, log_Reports); if (!log_Reports.Successful) { // 既エラー。 result = "(エラー)"; goto gt_EndMethod; } result = formatString.Perform(log_Reports); goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NullTable: result = "(テーブルが未指定です)"; if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー131!", log_Method); r.Message = "(エラー。テーブルが未指定です)"; log_Reports.EndCreateReport(); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); return(result); }
//──────────────────────────────────────── /// <summary> /// システム定義関数の実行。 /// </summary> /// <param name="fc_EventHandler"></param> /// <param name="sender"></param> /// <param name="eventMonitor"></param> /// <param name="log_Reports"></param> public void Execute3_Function( Expression_Node_Function expr_Func, object sender, MemoryApplication memoryApplication, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Functions.Name_Library, this, "Execute3_Function", log_Reports); if (log_Reports.CanStopwatch) { log_Method.Log_Stopwatch.Begin(); } // // // // string sFncName; expr_Func.TrySelectAttribute(out sFncName, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); // // アクションの実行 // //ystem.Console.WriteLine(this.GetType().Name + "#: 【開始】E_Action実行します。"); if (log_Reports.Successful) { if (null != expr_Func) { if (log_Method.CanWarning()) { log_Method.WriteWarning_ToConsole(" 【実行】イベント=[" + expr_Func.EnumEventhandler + "] システム関数=[" + sFncName + "] "); } switch (expr_Func.EnumEventhandler) { case EnumEventhandler.O_Lr: { expr_Func.Execute4_OnLr( sender, log_Reports ); } break; case EnumEventhandler.O_Ea: { // 変換 OEa → WrRhn。 expr_Func.Execute4_OnLr( sender, log_Reports ); } break; //case EnumEventhandler.O_DEA_P_S_B_WR: // break; default: //エラー goto gt_Error_NotSupportedEnum; } } } else { // // アクションしていない、アクションは終了したという判断。 // } goto gt_EndMethod; // #region 異常系 //──────────────────────────────────────── gt_Error_NotSupportedEnum: // アクションしていない、アクションは終了したという判断。 { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sFncName, log_Reports); //関数名 tmpl.SetParameter(2, expr_Func.EnumEventhandler.ToString(), log_Reports); //イベントハンドラー名 tmpl.SetParameter(3, log_Method.Fullname, log_Reports); //問題のあったメソッド memoryApplication.CreateErrorReport("Er:110029;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public override void XmlToConfigurationtree( XmlElement cur_X, Configurationtree_Node parent_Cf, MemoryApplication memoryApplication, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "XmlToConfigurationtree", log_Reports); // // // // // // 自 // // // log_Method.WriteWarning_ToConsole("①自 [" + log_Reports.Successful + "]"); Configurationtree_Node cur_Cf; if (log_Reports.Successful) { cur_Cf = this.CreateMyself(cur_X, parent_Cf, memoryApplication, log_Reports); } else { cur_Cf = null; } // // // // 属性 // // // log_Method.WriteWarning_ToConsole("②属性 [" + log_Reports.Successful + "]"); if (log_Reports.Successful) { this.Parse_SAttribute(cur_X, cur_Cf, memoryApplication, log_Reports); } // // // // 属性テスト // // // log_Method.WriteWarning_ToConsole("③属性テスト [" + log_Reports.Successful + "]"); if (log_Reports.Successful) { this.Test_Attributes(cur_X, cur_Cf, memoryApplication, log_Reports); } // // // // 子 // // // log_Method.WriteWarning_ToConsole("④子 [" + log_Reports.Successful + "]"); if (log_Reports.Successful) { this.Parse_ChildNodes(cur_X, cur_Cf, memoryApplication, log_Reports); } // // // // 子テスト // // // log_Method.WriteWarning_ToConsole("⑤子テスト [" + log_Reports.Successful + "]"); if (log_Reports.Successful) { this.Test_ChildNodes(cur_X, cur_Cf, log_Reports); } // // // // 親へ連結。 // // // log_Method.WriteWarning_ToConsole("⑥親へ連結 [" + log_Reports.Successful + "]"); if (log_Reports.Successful) { this.LinkToParent(cur_Cf, parent_Cf, memoryApplication, log_Reports); } goto gt_EndMethod; // // // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public override void XmlToConfigurationtree( XmlElement cur_X, //<arg1> Configurationtree_Node parent_Cf, //<fnc> MemoryApplication memoryApplication, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "XmlToConfigurationtree", log_Reports); // // // // // // 自 // // // Configurationtree_Node cur_Cf = this.CreateMyself(cur_X, parent_Cf, memoryApplication, log_Reports); // // // // 属性 // // // //string sFncName; //s_Parent.Dictionary_Attribute.TryGetValue(PmNames.NAME.Name_Attr, out sFncName, false, log_Reports); if (NamesNode.S_VALIDATOR == parent_Cf.Name) { // // <validator>の子<arg> // // // name=”” { XmlNode xNode = cur_X.Attributes.GetNamedItem(PmNames.S_NAME.Name_Attribute); if (null != xNode) { string sName = xNode.Value; cur_Cf.Dictionary_Attribute.Set(PmNames.S_NAME.Name_Pm, sName, log_Reports); } } // // value=”” string sValue; { XmlNode xNode = cur_X.Attributes.GetNamedItem(PmNames.S_VALUE.Name_Attribute); if (null != xNode) { sValue = xNode.Value; cur_Cf.Dictionary_Attribute.Add(PmNames.S_VALUE.Name_Pm, sValue, cur_Cf, true, log_Reports); } else { sValue = ""; } } { string sName; cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName, false, log_Reports); //O_Name o_Name = new O_NameImpl(sName, s_Cur); parent_Cf.Dictionary_Attribute.Add(sName, sValue, parent_Cf, false, log_Reports); } } else { this.Parse_SAttribute(cur_X, cur_Cf, memoryApplication, log_Reports); } // // // // 子 // // // this.Parse_ChildNodes(cur_X, cur_Cf, memoryApplication, log_Reports); // // // // 親へ連結 // // // string err_Parent_SName; string parent_SName_Fnc; string parent_SAmemory; if (!log_Reports.Successful) { // エラー goto gt_EndMethod; } else if ( // 親<data > NamesNode.S_DATA == parent_Cf.Name ) { bool bHit = parent_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out parent_SName_Fnc, false, log_Reports); bool bHit3 = parent_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_MEMORY, out parent_SAmemory, true, log_Reports); if ( ValuesAttr.S_RECORDS == parent_SAmemory || ValuesAttr.S_VARIABLE == parent_SAmemory ) { // // 親 <data memory=”records”> // 親 <data memory=”variable”> // // // 属性としては追加する。 // string sName_Fnc; bool bHit2 = cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Fnc, false, log_Reports); if (bHit2) { string sValue_Arg; cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_VALUE, out sValue_Arg, false, log_Reports); // 「S■data-source」の(<arg5 name属性>としてtarget値を追加。 // 属性とする。 if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("<データ target=[" + parent_SAmemory + "]>に属性追加 [" + sName_Fnc + "]←[" + sValue_Arg + "]"); } parent_Cf.Dictionary_Attribute.Add(sName_Fnc, sValue_Arg, parent_Cf, true, log_Reports); } } else { // エラー err_Parent_SName = parent_Cf.Name; goto gt_Error_Target; } } else { // 親が<data>以外。 bool bHit = parent_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out parent_SName_Fnc, true, log_Reports);//name属性が無い親もある?? if (!log_Reports.Successful) { log_Method.WriteWarning_ToConsole("s_Parent.Name_Node=[" + parent_Cf.Name + "]"); } else { } if ( NamesNode.S_FNC != parent_Cf.Name && NamesNode.S_VALIDATOR != parent_Cf.Name && NamesNode.S_COMMON_FUNCTION != parent_Cf.Name && NamesFnc.S_SWITCH != parent_SName_Fnc //旧仕様に対応 ) { // 親要素が<fnc>でも<validator><common-function><f-switch>でもない。 // エラー err_Parent_SName = parent_Cf.Name; goto gt_Error_Parent; } else if ( // 親が<fnc name=”Sf:where;”> NamesNode.S_FNC == parent_Cf.Name && NamesFnc.S_WHERE == parent_SName_Fnc) { // この子arg1要素は、 // 親要素「S■f-cell」には追加しません。 // 【追加 2012-06-02】 // 現状では、「S■a-where」に子「S■arg1」要素が含まれていると、 // 「E■f-cell」にarg1要素を追加してしまうので都合が悪い。 // // 属性としては追加する。 // string sArgAname; bool bHit2 = cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sArgAname, true, log_Reports); if (!log_Reports.Successful) { goto gt_EndMethod; } string sValue; cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_VALUE, out sValue, false, log_Reports); // 「S■fnc」のlogic属性として追加。 // 属性連結 parent_Cf.Dictionary_Attribute.Add(sArgAname, sValue, parent_Cf, true, log_Reports); } else { // 属性にせず、子まま連結。 // 子連結 parent_Cf.List_Child.Add(cur_Cf, log_Reports); } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_Parent: if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー361!", log_Method); Log_TextIndented t = new Log_TextIndentedImpl(); t.Append("<"); t.Append(cur_X.Name); t.Append(">要素の親は、<fnc>でなければなりませんでしたが、別の要素<"); t.Append(err_Parent_SName); t.Append(">でした。"); t.Newline(); t.Newline(); // ヒント t.Append(r.Message_Configuration(parent_Cf)); r.Message = t.ToString(); log_Reports.EndCreateReport(); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_Target: if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー562!", log_Method); Log_TextIndented s = new Log_TextIndentedImpl(); s.Append("<"); s.Append(cur_X.Name); s.Append(">要素のtarget属性が予想外でした。<["); s.Append(err_Parent_SName); s.Append("] target=”["); s.Append(parent_SAmemory); s.Append("]”>"); s.Newline(); s.Newline(); // ヒント s.Append(r.Message_Configuration(parent_Cf)); r.Message = s.ToString(); log_Reports.EndCreateReport(); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }