abc プロジェクト
14.8.17. MakeSelectData メンバ関数説明

メンバ関数名 MakeSelectData
定義ファイル名TuneRegion.cpp
定義行 187
所属名 TTuneRegion
アクセス属性 public
宣言形式 void MakeSelectData ( int sPos )
概要 Selectの解析を行う
戻り値
パラメタ説明 sPos 開始位置
機能説明
備考

呼出し元関数一覧表
名称 定義ファイル名 定義行
1 TTuneRegion::TTuneRegion TuneRegion.cpp 37

呼出し先関数一覧表
名称 定義ファイル名 定義行
1 TMainF::err main.cpp 271
2 TTuneRegion::MakeArgValList TuneRegion.cpp 457
3 TTuneRegion::SaveAndResetValBits TuneRegion.cpp 996
4 TTuneRegion::SortArgValList TuneRegion.cpp 1085
5 Add

6 AnsiCompareText

7 atoi

8 c_str

9 Clear

10 IntToStr

参照外部変数一覧表
名称 定義ファイル名 定義行
1 MainF main.cpp 26

参照メンバ変数一覧表
名称 定義ファイル名 定義行
1 TTuneRegion::AccordingStr TuneRegion.h 134
2 TTuneRegion::ArgValList TuneRegion.h 140
3 TTuneRegion::CaseCount TuneRegion.h 141
4 TTuneRegion::DoToken TuneRegion.h 182
5 TTuneRegion::FittingDegree TuneRegion.h 168
6 TTuneRegion::FittingType TuneRegion.h 166
7 TTuneRegion::FuncName TuneRegion.h 126
8 TTuneRegion::Name TuneRegion.h 125
9 TTuneRegion::Number TuneRegion.h 138
10 TTuneRegion::SampledList TuneRegion.h 169
11 TTuneRegion::SubRegionList TuneRegion.h 143
12 TTuneRegion::TokenEndPos TuneRegion.h 123
13 TTuneRegion::TokenList TuneRegion.h 120
14 TTuneRegion::TokenStartPos TuneRegion.h 122
15 TTuneRegion::TuneGroup TuneRegion.h 128
16 TTuneRegion::UseAccordingF TuneRegion.h 132
17 TTuneRegion::variedCount TuneRegion.h 157
18 TTuneRegion::variedFromValue TuneRegion.h 159
19 TTuneRegion::variedToValue TuneRegion.h 160
20 TTuneRegion::variedValData TuneRegion.h 161
21 TTuneRegion::variedValName TuneRegion.h 158

参照先一覧表
名称 種別 定義ファイル名 定義行
1 TScript クラス pass3.h 151
2 TScValData クラス pass3.h 112
3 TSubRegion クラス TuneRegion.h 249
4 TToken クラス pass1.h 216
5 TValData クラス pass2.h 42

関数論理チャート

        |  +--------------------------------------------+ 
   187  +--+ void TTuneRegion::MakeSelectData(int sPos) | 
   188     | {                                          | 
           +--+-----------------------------------------+ 
   189        +--- int i,j,k,k2;
   190        +--- TToken *Token;
   191        +--- TScript *Script;
   192        +--- AnsiString s;
   193        +--- TScValData *ScValData;
   194        +--- AnsiString ScValName;
   195        +--- int Nest;
   196        +--- TSubRegion *SubRegion;
   197        +--- TValData *ValData;
   198        +--- bool InSubRegionF = false;
   199        |    
   200        +--- Token = (TToken *)TokenList->Items[sPos];
   201        |    
   202        +--- //
   203        |    // 対象変数名を所得  
   204        |    //                   
   205        +--- ScValData = NULL;
   206        +--- ScValName = "";
   207        +--- //
   208        |    // 名前、参照変数(Setが先の場合は、不要)を求める 
   209        |    //                                                 
   210        |    // Name指定なし時の対策 Add 2004/08/26             
   211        +--- Name = IntToStr(MainF->TuneRegionList->Count+1);
              |  +------------------------------+ 
   212        +--+ if(TuneGroup == tgInstall){  | 
              |  +--+---------------------------+ 
   213        |     +--- FuncName = "ABCLib_Install"+Name;
              |   +-+---+ 
   214        |   |  }  | 
              |   +-+---+ 
              |   +-+---------------------------------+ 
   214        |   |  else if(TuneGroup == tgStatic){  | 
              |   +-+---------------------------------+ 
   215        |     +--- FuncName = "ABCLib_Static"+Name;
              |   +-+---+ 
   216        |   |  }  | 
              |   +-+---+ 
              |   +-+---------------------------------+ 
   216        |   |  else if(TuneGroup == tgDynamic){ | 
              |   +-+---------------------------------+ 
   217        |     +--- FuncName = "ABCLib_Dynamic"+Name;
              |   +-+---+ 
   218        |   |  }  | 
              |   +-----+ 
   219        +--- Nest = 0;
   220        +--- ArgValList->Clear();
              |  +------------------------------------------+ 
   221        +--+ for(i = sPos ; i <= TokenEndPos ; i++){  | 
              |  +--+---------------------------------------+ 
   222        |     +--- Token = (TToken *)TokenList->Items[i];
              |     |  +----------------+ 
   223        |     +--+ if(Nest != 1){ | 
              |     |  +--+-------------+ 
   224        |     |     +--- //
   225        |     |     |    // TRのネストは、Skipするが、                                    
   226        |     |     |    // 変数に関しては、チェック対象とする。                          
   227        |     |     |    // 複数のSubRegionでの変数の参照・代入は統一していることが前提。 
   228        |     |     |    //                                                               
              |     |     |  +----------------------------+ 
   229        |     |     +--+ if(Token->Script != NULL){ | 
              |     |     |  +--+-------------------------+ 
   230        |     |     |     +--- Script = (TScript *)Token->Script;
              |     |     |     |  +------------------------------------+ 
   231        |     |     |     +--+ if(Script->ScRegion == scr_start){ | 
              |     |     |     |  +--+---------------------------------+ 
   232        |     |     |     |     +--- Nest++;
              |     |     |     |   +-+---+ 
   233        |     |     |     |   |  }  | 
              |     |     |     |   +-+---+ 
              |     |     |     |   +-+---------------------------------------+ 
   233        |     |     |     |   |  else if(Script->ScRegion == scr_end){  | 
              |     |     |     |   +-+---------------------------------------+ 
   234        |     |     |     |     +--- Nest--;
              |     |     |     |   +-+---+ 
   235        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
              |     |     |   +-+---+ 
   236        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |     |  +------------+ 
   237        |     |     +--+ continue;  | 
              |     |     |  +------------+ 
              |     |   +-+---+ 
   238        |     |   |  }  | 
              |     |   +-----+ 
              |     |  +----------------------------+ 
   239        |     +--+ if(Token->Script != NULL){ | 
              |     |  +--+-------------------------+ 
   240        |     |     +--- Script = (TScript *)Token->Script;
              |     |     |  +----------------------------------------------------------+ 
   241        |     |     +--+ if(Script->ScRegion == scr_start){      // region Start  | 
              |     |     |  +--+-------------------------------------------------------+ 
   242        |     |     |     +--- Nest++;     // TR ネスト部分の処理
              |     |     |     |  +------------+ 
   243        |     |     |     +--+ continue;  | 
              |     |     |     |  +------------+ 
              |     |     |   +-+---+ 
   244        |     |     |   |  }  | 
              |     |     |   +-+---+ 
              |     |     |   +-+-----------------------------------------------+ 
   244        |     |     |   |  else if(Script->ScType == sct_name){   // name | 
              |     |     |   +-+-----------------------------------------------+ 
   245        |     |     |     +--- Name = Script->TokStrList->Strings[2];
              |     |     |     |  +------------------------------+ 
   246        |     |     |     +--+ if(TuneGroup == tgInstall){  | 
              |     |     |     |  +--+---------------------------+ 
   247        |     |     |     |     +--- FuncName = "ABCLib_Install"+Name;
              |     |     |     |   +-+---+ 
   248        |     |     |     |   |  }  | 
              |     |     |     |   +-+---+ 
              |     |     |     |   +-+---------------------------------+ 
   248        |     |     |     |   |  else if(TuneGroup == tgStatic){  | 
              |     |     |     |   +-+---------------------------------+ 
   249        |     |     |     |     +--- FuncName = "ABCLib_Static"+Name;
              |     |     |     |   +-+---+ 
   250        |     |     |     |   |  }  | 
              |     |     |     |   +-+---+ 
              |     |     |     |   +-+---------------------------------+ 
   250        |     |     |     |   |  else if(TuneGroup == tgDynamic){ | 
              |     |     |     |   +-+---------------------------------+ 
   251        |     |     |     |     +--- FuncName = "ABCLib_Dynamic"+Name;
              |     |     |     |   +-+---+ 
   252        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
              |     |     |   +-+---+ 
   253        |     |     |   |  }  | 
              |     |     |   +-+---+ 
              |     |     |   +-+-------------------------------------------------+ 
   253        |     |     |   |  else if(Script->ScType == sct_Number){ // number | 
              |     |     |   +-+-------------------------------------------------+ 
   254        |     |     |     +--- Number = atoi(Script->TokStrList->Strings[2].c_str());
              |     |     |   +-+---+ 
   255        |     |     |   |  }  | 
              |     |     |   +-+---+ 
              |     |     |   +-+---------------------------------------------------------+ 
   255        |     |     |   |  else if(Script->ScType == sct_according){  // Acoording  | 
              |     |     |   +-+---------------------------------------------------------+ 
              |     |     |     |  +----------------------------------------------------------------------+ 
   256        |     |     |     +--+ if(!InSubRegionF){ // SubRegion内の acordingは、SubRegion内のみ有効  | 
              |     |     |     |  +--+-------------------------------------------------------------------+ 
   257        |     |     |     |     +--- UseAccordingF = true;
   258        |     |     |     |     +--- AccordingStr = Token->OrgStr;
              |     |     |     |   +-+---+ 
   259        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
              |     |     |   +-+---+ 
   260        |     |     |   |  }  | 
              |     |     |   +-+---+ 
              |     |     |   +-+---------------------------------------+ 
   260        |     |     |   |  else if(Script->ScType == sct_varied){ | 
              |     |     |   +-+---------------------------------------+ 
   261        |     |     |     +--- //
   262        |     |     |     |    // varried処理を行う。 
   263        |     |     |     |    //                     
              |     |     |     |  +--------------------------------------------------------------------+ 
   264        |     |     |     +--+ if(!InSubRegionF){ // SubRegion内の variedは、SubRegion内のみ有効  | 
              |     |     |     |  +--+-----------------------------------------------------------------+ 
              |     |     |     |     |  +------------------------------------+ 
   265        |     |     |     |     +--+ if(Script->ScValDataList == NULL){ | 
              |     |     |     |     |  +--+---------------------------------+ 
   266        |     |     |     |     |     +--- MainF->err("varied の変数指定が見つかりません。");
              |     |     |     |     |     |  +----------+ 
   267        |     |     |     |     |     +--+ return;  | 
              |     |     |     |     |     |  +----------+ 
              |     |     |     |     |   +-+---+ 
   268        |     |     |     |     |   |  }  | 
              |     |     |     |     |   +-----+ 
              |     |     |     |     |  +----------------------------------------+ 
   269        |     |     |     |     +--+ if(Script->ScValDataList->Count == 0){ | 
              |     |     |     |     |  +--+-------------------------------------+ 
   270        |     |     |     |     |     +--- MainF->err("varied の変数指定が見つかりません。");
              |     |     |     |     |     |  +----------+ 
   271        |     |     |     |     |     +--+ return;  | 
              |     |     |     |     |     |  +----------+ 
              |     |     |     |     |   +-+---+ 
   272        |     |     |     |     |   |  }  | 
              |     |     |     |     |   +-----+ 
              |     |     |     |     |  +------------------------------------------------------+ 
   273        |     |     |     |     +--+ for(k = 0 ; k < Script->ScValDataList->Count ; k++){ | 
              |     |     |     |     |  +--+---------------------------------------------------+ 
   274        |     |     |     |     |     +--- ScValData = (TScValData *)Script->ScValDataList->Items[k];
   275        |     |     |     |     |     +--- variedValName[variedCount] = ScValData->Str;
   276        |     |     |     |     |     +--- variedValData[variedCount] = ScValData;
   277        |     |     |     |     |     +--- DoToken[variedCount] = NULL;
              |     |     |     |     |     |  +------------------------------------------------------+ 
   278        |     |     |     |     |     +--+ for(j = 0 ; j < Script->TokStrList->Count-1 ; j++){  | 
              |     |     |     |     |     |  +--+---------------------------------------------------+ 
   279        |     |     |     |     |     |     +--- s = Script->TokStrList->Strings[j];
              |     |     |     |     |     |     |  +--------------------------------------+ 
   280        |     |     |     |     |     |     +--+ if(AnsiCompareText(s,"from") == 0){  | 
              |     |     |     |     |     |     |  +--+-----------------------------------+ 
   281        |     |     |     |     |     |     |     +--- s = Script->TokStrList->Strings[j+1];
   282        |     |     |     |     |     |     |     +--- variedFromValue[variedCount] = atoi(s.c_str());
              |     |     |     |     |     |     |   +-+---+ 
   283        |     |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |     |   +-+---+ 
              |     |     |     |     |     |     |   +-+---------------------------------------+ 
   283        |     |     |     |     |     |     |   |  else if(AnsiCompareText(s,"to") == 0){ | 
              |     |     |     |     |     |     |   +-+---------------------------------------+ 
   284        |     |     |     |     |     |     |     +--- s = Script->TokStrList->Strings[j+1];
   285        |     |     |     |     |     |     |     +--- variedToValue[variedCount] = atoi(s.c_str());
              |     |     |     |     |     |     |   +-+---+ 
   286        |     |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |     |   +-----+ 
              |     |     |     |     |     |   +-+---+ 
   287        |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |   +-----+ 
   288        |     |     |     |     |     +--- variedCount++;
              |     |     |     |     |   +-+---+ 
   289        |     |     |     |     |   |  }  | 
              |     |     |     |     |   +-----+ 
              |     |     |     |   +-+---+ 
   290        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
              |     |     |   +-+---+ 
   291        |     |     |   |  }  | 
              |     |     |   +-+---+ 
              |     |     |   +-+-----------------------------------------+ 
   291        |     |     |   |  else if(Script->ScType == sct_fitting){  | 
              |     |     |   +-+-----------------------------------------+ 
   292        |     |     |     +--- //
   293        |     |     |     |    // Fitting指定子の処理を行う。(TuneRegionへデータ複写のみ)  
   294        |     |     |     |    //                                                           
   295        |     |     |     +--- FittingType = Script->FittingType;
   296        |     |     |     +--- FittingDegree = Script->FittingDegree;
   297        |     |     |     +--- SampledList = Script->SampledList;
   298        |     |     |     +--- //          }else if(Script->ScRegion == scr_substart){ // Sub region Start
              |     |     |   +-+---+ 
   299        |     |     |   |  }  | 
              |     |     |   +-+---+ 
              |     |     |   +-+-------------------------------------------------------------------+ 
   299        |     |     |   |  else if((Script->ScRegion == scr_substart)                         | 
   300        |     |     |   |         &&(Script->ScType == sct_select)){      // Sub region Start | 
              |     |     |   +-+-------------------------------------------------------------------+ 
   301        |     |     |     +--- InSubRegionF = true;
   302        |     |     |     +--- SubRegion = new TSubRegion();
   303        |     |     |     +--- SubRegion->TokenStartPos = i;
   304        |     |     |     +--- SubRegion->ScType = Script->ScType;
   305        |     |     |     +--- SubRegion->AccordingStr = AccordingStr;
   306        |     |     |     +--- SubRegionList->Add((void *)SubRegion);
   307        |     |     |     |    
              |     |     |     |  +----------------------------------------------------------+ 
   308        |     |     |     +--+ for(j = 0 ; j < variedCount ; j++){ // varidCountを継承  | 
              |     |     |     |  +--+-------------------------------------------------------+ 
   309        |     |     |     |     +--- SubRegion->variedValName[j] = variedValName[j];
   310        |     |     |     |     +--- SubRegion->variedValData[j] = variedValData[j];
   311        |     |     |     |     +--- SubRegion->variedFromValue[j] = variedFromValue[j];
   312        |     |     |     |     +--- SubRegion->variedToValue[j] = variedToValue[j];
              |     |     |     |   +-+---+ 
   313        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
   314        |     |     |     +--- SubRegion->variedCount = variedCount;
   315        |     |     |     |    
              |     |     |     |  +--------------------------------------+ 
   316        |     |     |     +--+ for(j = i ; j <= TokenEndPos ; j++){ | 
              |     |     |     |  +--+-----------------------------------+ 
   317        |     |     |     |     +--- Token = (TToken *)TokenList->Items[j];
              |     |     |     |     |  +----------------------------+ 
   318        |     |     |     |     +--+ if(Token->Script != NULL){ | 
              |     |     |     |     |  +--+-------------------------+ 
   319        |     |     |     |     |     +--- Script = (TScript *)Token->Script;
              |     |     |     |     |     |  +------------------------------------+ 
   320        |     |     |     |     |     +--+ if(Script->ScRegion == scr_start){ | 
              |     |     |     |     |     |  +--+---------------------------------+ 
   321        |     |     |     |     |     |     +--- // Nestしている場合は、region end まで Skipする。
              |     |     |     |     |     |     |  +----------------------------------+ 
   322        |     |     |     |     |     |     +--+ for( ; j <= TokenEndPos ; j++){  | 
              |     |     |     |     |     |     |  +--+-------------------------------+ 
   323        |     |     |     |     |     |     |     +--- Token = (TToken *)TokenList->Items[j];
              |     |     |     |     |     |     |     |  +----------------------------+ 
   324        |     |     |     |     |     |     |     +--+ if(Token->Script != NULL){ | 
              |     |     |     |     |     |     |     |  +--+-------------------------+ 
   325        |     |     |     |     |     |     |     |     +--- Script = (TScript *)Token->Script;
              |     |     |     |     |     |     |     |     |  +----------------------------------+ 
   326        |     |     |     |     |     |     |     |     +--+ if(Script->ScRegion == scr_end){ | 
              |     |     |     |     |     |     |     |     |  +--+-------------------------------+ 
              |     |     |     |     |     |     |     |     |     |  +--------+ 
   327        |     |     |     |     |     |     |     |     |     +--+ break; | 
              |     |     |     |     |     |     |     |     |     |  +--------+ 
              |     |     |     |     |     |     |     |     |   +-+---+ 
   328        |     |     |     |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |     |     |     |   +-----+ 
              |     |     |     |     |     |     |     |   +-+---+ 
   329        |     |     |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |     |     |   +-----+ 
              |     |     |     |     |     |     |   +-+---+ 
   330        |     |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |     |   +-----+ 
              |     |     |     |     |     |   +-+---+ 
   331        |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |   +-+---+ 
              |     |     |     |     |     |   +-+-----------------------------------------+ 
   331        |     |     |     |     |     |   |  else if(Script->ScRegion == scr_subend){ | 
              |     |     |     |     |     |   +-+-----------------------------------------+ 
              |     |     |     |     |     |     |  +--------+ 
   332        |     |     |     |     |     |     +--+ break; | 
              |     |     |     |     |     |     |  +--------+ 
              |     |     |     |     |     |   +-+---+ 
   333        |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |   +-+---+ 
              |     |     |     |     |     |   +-+---------------------------------------------------------+ 
   333        |     |     |     |     |     |   |  else if(Script->ScType == sct_according){  // Acoording  | 
              |     |     |     |     |     |   +-+---------------------------------------------------------+ 
   334        |     |     |     |     |     |     +--- UseAccordingF = true;
   335        |     |     |     |     |     |     +--- SubRegion->AccordingStr = Token->OrgStr;
              |     |     |     |     |     |   +-+---+ 
   336        |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |   +-+---+ 
              |     |     |     |     |     |   +-+---------------------------------------+ 
   336        |     |     |     |     |     |   |  else if(Script->ScType == sct_varied){ | 
              |     |     |     |     |     |   +-+---------------------------------------+ 
   337        |     |     |     |     |     |     +--- //
   338        |     |     |     |     |     |     |    // varried処理を行う。 
   339        |     |     |     |     |     |     |    //                     
              |     |     |     |     |     |     |  +------------------------------------+ 
   340        |     |     |     |     |     |     +--+ if(Script->ScValDataList == NULL){ | 
              |     |     |     |     |     |     |  +--+---------------------------------+ 
   341        |     |     |     |     |     |     |     +--- MainF->err("varied の変数指定が見つかりません。");
              |     |     |     |     |     |     |     |  +----------+ 
   342        |     |     |     |     |     |     |     +--+ return;  | 
              |     |     |     |     |     |     |     |  +----------+ 
              |     |     |     |     |     |     |   +-+---+ 
   343        |     |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |     |   +-----+ 
              |     |     |     |     |     |     |  +----------------------------------------+ 
   344        |     |     |     |     |     |     +--+ if(Script->ScValDataList->Count == 0){ | 
              |     |     |     |     |     |     |  +--+-------------------------------------+ 
   345        |     |     |     |     |     |     |     +--- MainF->err("varied の変数指定が見つかりません。");
              |     |     |     |     |     |     |     |  +----------+ 
   346        |     |     |     |     |     |     |     +--+ return;  | 
              |     |     |     |     |     |     |     |  +----------+ 
              |     |     |     |     |     |     |   +-+---+ 
   347        |     |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |     |   +-----+ 
              |     |     |     |     |     |     |  +------------------------------------------------------+ 
   348        |     |     |     |     |     |     +--+ for(k = 0 ; k < Script->ScValDataList->Count ; k++){ | 
              |     |     |     |     |     |     |  +--+---------------------------------------------------+ 
   349        |     |     |     |     |     |     |     +--- ScValData = (TScValData *)Script->ScValDataList->Items[k];
   350        |     |     |     |     |     |     |     +--- SubRegion->variedValName[variedCount] = ScValData->Str;
   351        |     |     |     |     |     |     |     +--- SubRegion->variedValData[variedCount] = ScValData;
              |     |     |     |     |     |     |     |  +--------------------------------------------------------+ 
   352        |     |     |     |     |     |     |     +--+ for(k2 = 0 ; k2 < Script->TokStrList->Count-1 ; k2++){ | 
              |     |     |     |     |     |     |     |  +--+-----------------------------------------------------+ 
   353        |     |     |     |     |     |     |     |     +--- s = Script->TokStrList->Strings[k2];
              |     |     |     |     |     |     |     |     |  +--------------------------------------+ 
   354        |     |     |     |     |     |     |     |     +--+ if(AnsiCompareText(s,"from") == 0){  | 
              |     |     |     |     |     |     |     |     |  +--+-----------------------------------+ 
   355        |     |     |     |     |     |     |     |     |     +--- s = Script->TokStrList->Strings[k2+1];
   356        |     |     |     |     |     |     |     |     |     +--- SubRegion->variedFromValue[variedCount] = atoi(s.c_str());
              |     |     |     |     |     |     |     |     |   +-+---+ 
   357        |     |     |     |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |     |     |     |   +-+---+ 
              |     |     |     |     |     |     |     |     |   +-+---------------------------------------+ 
   357        |     |     |     |     |     |     |     |     |   |  else if(AnsiCompareText(s,"to") == 0){ | 
              |     |     |     |     |     |     |     |     |   +-+---------------------------------------+ 
   358        |     |     |     |     |     |     |     |     |     +--- s = Script->TokStrList->Strings[k2+1];
   359        |     |     |     |     |     |     |     |     |     +--- SubRegion->variedToValue[variedCount] = atoi(s.c_str());
              |     |     |     |     |     |     |     |     |   +-+---+ 
   360        |     |     |     |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |     |     |     |   +-----+ 
              |     |     |     |     |     |     |     |   +-+---+ 
   361        |     |     |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |     |     |   +-----+ 
   362        |     |     |     |     |     |     |     +--- SubRegion->variedCount++;
              |     |     |     |     |     |     |   +-+---+ 
   363        |     |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |     |   +-----+ 
              |     |     |     |     |     |   +-+---+ 
   364        |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |   +-----+ 
              |     |     |     |     |   +-+---+ 
   365        |     |     |     |     |   |  }  | 
              |     |     |     |     |   +-----+ 
              |     |     |     |   +-+---+ 
   366        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
   367        |     |     |     +--- SubRegion->TokenEndPos = j;
              |     |     |     |  +------------------------+ 
   368        |     |     |     +--+ if(j >= TokenEndPos){  | 
              |     |     |     |  +--+---------------------+ 
   369        |     |     |     |     +--- MainF->err("sub region endが見つかりません。");
              |     |     |     |   +-+---+ 
   370        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
   371        |     |     |     |    
              |     |     |   +-+---+ 
   372        |     |     |   |  }  | 
              |     |     |   +-+---+ 
              |     |     |   +-+-----------------------------------------+ 
   372        |     |     |   |  else if(Script->ScRegion == scr_subend){ | 
              |     |     |   +-+-----------------------------------------+ 
   373        |     |     |     +--- InSubRegionF = false;
              |     |     |   +-+---+ 
   374        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |   +-+---+ 
   375        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   376        |   |  }  | 
              |   +-----+ 
   377        +--- MakeArgValList();   // TRのサブルーチンに渡す引数リストを生成する。
   378        +--- //
   379        |    // Case数を計算する。                                              
   380        |    // SubRegionがある場合は、各SubReguionの varied数だけのCaseの総和  
   381        |    // SubRegionがない場合は、varied数だけのCase                       
   382        |    //                                                                 
              |  +--------------------------------+ 
   383        +--+ if(SubRegionList->Count > 0){  | 
              |  +--+-----------------------------+ 
   384        |     +--- int SubCaseCount;
   385        |     |    
   386        |     +--- CaseCount = 0;
              |     |  +----------------------------------------------+ 
   387        |     +--+ for(j = 0 ; j < SubRegionList->Count; j++){  | 
              |     |  +--+-------------------------------------------+ 
   388        |     |     +--- SubRegion = (TSubRegion *)SubRegionList->Items[j];
   389        |     |     +--- SubCaseCount = 1;
              |     |     |  +--------------------------------------------------------------------------+ 
   390        |     |     +--+ for(k = 0 ; k < SubRegion->variedCount ; k++){ // SubRegionがない場合の  | 
              |     |     |  +--+-----------------------------------------------------------------------+ 
   391        |     |     |     +--- SubCaseCount *= (SubRegion->variedToValue[k] - SubRegion->variedFromValue[k] + 1);
              |     |     |   +-+---+ 
   392        |     |     |   |  }  | 
              |     |     |   +-----+ 
   393        |     |     +--- SubRegion->CaseCount = SubCaseCount;
   394        |     |     +--- CaseCount += SubCaseCount;
              |     |   +-+---+ 
   395        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   396        |   |  }  | 
              |   +-+---+ 
              |   +-+-------+ 
   396        |   |  else{  | 
              |   +-+-------+ 
   397        |     +--- // SubRegionがない場合の処理
   398        |     +--- CaseCount = 1;
              |     |  +--------------------------------------------------------------+ 
   399        |     +--+ for(k = 0 ; k < variedCount ; k++){ // SubRegionがない場合の | 
              |     |  +--+-----------------------------------------------------------+ 
   400        |     |     +--- CaseCount *= (variedToValue[k] - variedFromValue[k] + 1);
              |     |   +-+---+ 
   401        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   402        |   |  }  | 
              |   +-----+ 
   403        +--- //
   404        |    // varied from to で定数に置換される変数は、引数リストから参照扱いをCUT        
   405        |    // 現状、同一名で、片側は変数として使用、もう一方は引数と指定使用は出来ない。  
   406        |    // 最終的には、エラーメッセージが必要?                                        
   407        |    //                                                                             
              |  +----------------------------------------------+ 
   408        +--+ for(i = 0 ; i < SubRegionList->Count; i++){  | 
              |  +--+-------------------------------------------+ 
   409        |     +--- SubRegion = (TSubRegion *)SubRegionList->Items[i];
              |     |  +------------------------------------------------+ 
   410        |     +--+ for(k = 0 ; k < SubRegion->variedCount ; k++){ | 
              |     |  +--+---------------------------------------------+ 
   411        |     |     +--- s = SubRegion->variedValName[k];
              |     |     |  +--------------------------------------------+ 
   412        |     |     +--+ for(j = 0 ; j < ArgValList->Count ; j++){  | 
              |     |     |  +--+-----------------------------------------+ 
              |     |     |     |  +------------------------------------------------------+ 
   413        |     |     |     +--+ if(AnsiCompareText(ArgValList->Strings[j],s) == 0){  | 
              |     |     |     |  +--+---------------------------------------------------+ 
   414        |     |     |     |     +--- ArgValList->Strings[j] = "";
              |     |     |     |   +-+---+ 
   415        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
              |     |     |   +-+---+ 
   416        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |   +-+---+ 
   417        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   418        |   |  }  | 
              |   +-----+ 
              |  +--------------------------------------+ 
   419        +--+ for(k = 0 ; k < variedCount ; k++){  | 
              |  +--+-----------------------------------+ 
   420        |     +--- s = variedValName[k];
              |     |  +--------------------------------------------+ 
   421        |     +--+ for(j = 0 ; j < ArgValList->Count ; j++){  | 
              |     |  +--+-----------------------------------------+ 
              |     |     |  +------------------------------------------------------+ 
   422        |     |     +--+ if(AnsiCompareText(ArgValList->Strings[j],s) == 0){  | 
              |     |     |  +--+---------------------------------------------------+ 
   423        |     |     |     +--- ArgValList->Strings[j] = "";
              |     |     |   +-+---+ 
   424        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |   +-+---+ 
   425        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   426        |   |  }  | 
              |   +-----+ 
   427        +--- //
   428        |    // ArgValListを定義順にSortする。                        
   429        |    // ""(最初に代入で使用)も、必要なので、削除はしないこと  
   430        |    //                                                       
   431        +--- SortArgValList();
   432        +--- SaveAndResetValBits(TokenStartPos,TokenEndPos);  // 変数識別を、保存してリセット
            +-+---+ 
   433      |  }  | 
            +-----+