abc プロジェクト
14.8.19. OutputAutoExecCode メンバ関数説明

メンバ関数名 OutputAutoExecCode
定義ファイル名TuneRegion.cpp
定義行 1328
所属名 TTuneRegion
アクセス属性 public
宣言形式 void OutputAutoExecCode ( FILE * fp )
概要 時間計測を行うための ATexec サブルーチンのコードの生成を行う。
戻り値
パラメタ説明 fp 出力先ファイルポインタ
機能説明
備考

呼出し元関数一覧表
名称 定義ファイル名 定義行
1 TPass5::MakeControlCode pass5.cpp 211

呼出し先関数一覧表
名称 定義ファイル名 定義行
1 TMainF::err main.cpp 271
2 TTuneRegion::GetDefStr TuneRegion.cpp 2198
3 TTuneRegion::GetPrePostSubregionStr TuneRegion.cpp 4337
4 TTuneRegion::SepLongStr TuneRegion.cpp 4274
5 Add

6 c_str

7 CompareText

8 fprintf

9 IndexOf

10 Length

11 LowerCase

12 Pos

13 printf

14 strlen

15 SubString

16 Trim

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

参照メンバ変数一覧表
名称 定義ファイル名 定義行
1 TTuneRegion::AccordingStr TuneRegion.h 134
2 TTuneRegion::ArgValList TuneRegion.h 140
3 TTuneRegion::BaseValList TuneRegion.h 148
4 TTuneRegion::CaseCount TuneRegion.h 141
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::ParamValList TuneRegion.h 152
10 TTuneRegion::Pass4 TuneRegion.h 90
11 TTuneRegion::SampledList TuneRegion.h 169
12 TTuneRegion::SubRegionList TuneRegion.h 143
13 TTuneRegion::TokenList TuneRegion.h 120
14 TTuneRegion::TuneGroup TuneRegion.h 128
15 TTuneRegion::TuneGroupName TuneRegion.h 129
16 TTuneRegion::UseAccordingF TuneRegion.h 132
17 TTuneRegion::ValDataList TuneRegion.h 121

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

関数論理チャート

        |  +------------------------------------------------+ 
  1328  +--+ void TTuneRegion::OutputAutoExecCode(FILE *fp) | 
  1329     | {                                              | 
           +--+---------------------------------------------+ 
  1330        +--- int idx,Data;
  1331        +--- int i,j,k,DefPosS;
  1332        +--- AnsiString s;
  1333        +--- TValData *ValData;
  1334        +--- TToken *Token;
  1335        +--- int CaseArrayCount;
  1336        +--- int BaseValIdx;
  1337        +--- AnsiString ValName;
  1338        +--- AnsiString BaseValName;
  1339        +--- int ParamValIdx;
  1340        +--- int EndTuneSizeData;
  1341        |    
  1342        +--- bool VisualF = MainF->VisualF;
  1343        |    
  1344        +--- BaseValName = BaseValList->Strings[0];
  1345        +--- CaseArrayCount = CaseCount;
              |  +------------------------+ 
  1346        +--+ if(FittingType != 0){  | 
              |  +--+---------------------+ 
  1347        |     +--- CaseArrayCount = SampledList->Count;
              |   +-+---+ 
  1348        |   |  }  | 
              |   +-----+ 
  1349        +--- fprintf(fp,"c     ==== %s Optimization Routines\n",TuneGroupName);
  1350        +--- fprintf(fp,"c     ==============================================================\n");
              |  +------------------------------+ 
  1351        +--+ if(TuneGroup != tgDynamic){  | 
              |  +--+---------------------------+ 
  1352        |     +--- s.printf("      subroutine ABCLib_ATexec%s%s(ABCLib_Routines)\n",TuneGroupName,Name);
  1353        |     +--- fprintf(fp,"%s",SepLongStr(s).c_str());
  1354        |     +--- fprintf(fp,"      character*%d ABCLib_Routines\n",MainF->CharMaxLen);
              |   +-+---+ 
  1355        |   |  }  | 
              |   +-+---+ 
              |   +-+-------+ 
  1355        |   |  else{  | 
              |   +-+-------+ 
  1356        |     +---         s.printf("      subroutine ABCLib_ATexec%s%s(ABCLib_Routines,%s,iBestSw1)\n",
  1357        |     |    //          TuneGroupName,Name,PROB_VALN);                                             
  1358        |     |                TuneGroupName,Name,BaseValName);                                           
  1359        |     +--- fprintf(fp,"%s",SepLongStr(s).c_str());
  1360        |     +--- fprintf(fp,"      character*%d ABCLib_Routines\n",MainF->CharMaxLen);
  1361        |     +--- //      fprintf(fp,"      integer %s\n",PROB_VALN);
  1362        |     +--- fprintf(fp,"      integer %s\n",BaseValName);
  1363        |     +--- fprintf(fp,"      integer iBestSw1\n");
              |   +-+---+ 
  1364        |   |  }  | 
              |   +-----+ 
  1365        +--- fprintf(fp,"\n");
  1366        +--- fprintf(fp,"      include 'ABCLibScript.h'\n");
  1367        +--- fprintf(fp,"\n");
  1368        |    
  1369        +--- //
  1370        |    // チューニングに使用する引数宣言                                  
  1371        |    //  配列の添え字部分が、N 一致する場合は、NN に置換(変数名固定)  
  1372        |    // 配列の添え字部分が、基本パラメタ名(N等) 一致する場合は、        
  1373        |    // 基本パラメタ名*2(NN等) に置換(変数名固定->可変 2009/03/05)   
  1374        |    //                                                                 
  1375        +--- EndTuneSizeData = -1;
  1376        +--- idx = Pass4->ABCLib_ValList->IndexOf("ABCLib_ENDTUNESIZE");
              |  +----------------+ 
  1377        +--+ if(idx == -1){ | 
              |  +--+-------------+ 
  1378        |     +--- /*
  1379        |     |            if(TuneGroup != tgDynamic){                                  
  1380        |     |                MainF->err("ABCLib_ENDTUNESIZEが設定されていません。");  
  1381        |     |                return;                                                  
  1382        |     |            }                                                            
  1383        |     |    */                                                                   
  1384        |     +--- //
  1385        |     |    // ABCLib_ENDTUNESIZEがない場合は、 PROB_VALN,PROB_VALNNの変数を検索して 
  1386        |     |    // その Parm値を使用する。(N,NN固定が前提となる)                       
  1387        |     |    //                                                                       
  1388        |     +--- int kk;
  1389        |     |    
  1390        |     +--- ValName = BaseValList->Strings[0];
              |     |  +------------------------------------------------+ 
  1391        |     +--+ for(kk = 0 ; kk < ValDataList->Count ; kk++){  | 
              |     |  +--+---------------------------------------------+ 
  1392        |     |     +--- ValData = (TValData *)ValDataList->Items[kk];
              |     |     |  +----------------------+ 
  1393        |     |     +--+ if(ValData == NULL){ | 
              |     |     |  +--+-------------------+ 
              |     |     |     |  +------------+ 
  1394        |     |     |     +--+ continue;  | 
              |     |     |     |  +------------+ 
              |     |     |   +-+---+ 
  1395        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |     |  +----------------------------------+ 
  1396        |     |     +--+ if(ValData->ParamValF == false){ | 
              |     |     |  +--+-------------------------------+ 
              |     |     |     |  +------------+ 
  1397        |     |     |     +--+ continue;  | 
              |     |     |     |  +------------+ 
              |     |     |   +-+---+ 
  1398        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |     |  +----------------------------------------------+ 
  1399        |     |     +--+ if(CompareText(ValData->Str,ValName) == 0){  | 
              |     |     |  +--+-------------------------------------------+ 
  1400        |     |     |     +--- EndTuneSizeData = (int)ValData->dData;
              |     |     |     |  +--------+ 
  1401        |     |     |     +--+ break; | 
              |     |     |     |  +--------+ 
              |     |     |   +-+---+ 
  1402        |     |     |   |  }  | 
              |     |     |   +-----+ 
  1403        |     |     +--- // Add 2004/11/12 NN=xxx でもOKとした。Fittingサンプル
              |     |     |  +------------------------------------------------------+ 
  1404        |     |     +--+ if(CompareText(ValData->Str,ValName+ValName) == 0){  | 
              |     |     |  +--+---------------------------------------------------+ 
  1405        |     |     |     +--- EndTuneSizeData = (int)ValData->dData;
              |     |     |   +-+---+ 
  1406        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |   +-+---+ 
  1407        |     |   |  }  | 
              |     |   +-----+ 
              |     |  +--------------------------------+ 
  1408        |     +--+ if(kk >= ValDataList->Count){  | 
              |     |  +--+-----------------------------+ 
  1409        |     |     +--- MainF->err("parameter ("+ValName+"=)が設定されていません。");
              |     |     |  +----------+ 
  1410        |     |     +--+ return;  | 
              |     |     |  +----------+ 
              |     |   +-+---+ 
  1411        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
  1412        |   |  }  | 
              |   +-+---+ 
              |   +-+-------+ 
  1412        |   |  else{  | 
              |   +-+-------+ 
  1413        |     +--- EndTuneSizeData = (int)Pass4->ABCLib_ValList->Objects[idx];
              |   +-+---+ 
  1414        |   |  }  | 
              |   +-----+ 
  1415        +--- #if 1
  1416        +--- //
  1417        |    //  ここで、Parameter (XX=exp.)文と同じ形を追加する。  
  1418        |    //  ただし、基本パラメタ名と一致する部分は置き換える。 
  1419        |    //  2009/02/25                                         
  1420        |    //                                                     
              |  +--------------------------------------------+ 
  1421        +--+ for(k = 0 ; k < ValDataList->Count ; k++){ | 
              |  +--+-----------------------------------------+ 
  1422        |     +--- ValData = (TValData *)ValDataList->Items[k];
              |     |  +----------------------+ 
  1423        |     +--+ if(ValData == NULL){ | 
              |     |  +--+-------------------+ 
              |     |     |  +------------+ 
  1424        |     |     +--+ continue;  | 
              |     |     |  +------------+ 
              |     |   +-+---+ 
  1425        |     |   |  }  | 
              |     |   +-----+ 
              |     |  +----------------------------------+ 
  1426        |     +--+ if(ValData->ParamValF == false){ | 
              |     |  +--+-------------------------------+ 
              |     |     |  +------------+ 
  1427        |     |     +--+ continue;  | 
              |     |     |  +------------+ 
              |     |   +-+---+ 
  1428        |     |   |  }  | 
              |     |   +-----+ 
  1429        |     +--- ValName = ValData->Str;
              |     |  +------------------------------------------------------------------------+ 
  1430        |     +--+ for(BaseValIdx = 0 ; BaseValIdx < BaseValList->Count ; BaseValIdx++){  | 
              |     |  +--+---------------------------------------------------------------------+ 
              |     |     |  +------------------------------------------------------------------+ 
  1431        |     |     +--+ if(CompareText(BaseValList->Strings[BaseValIdx],ValName) == 0){  | 
              |     |     |  +--+---------------------------------------------------------------+ 
              |     |     |     |  +--------+ 
  1432        |     |     |     +--+ break; | 
              |     |     |     |  +--------+ 
              |     |     |   +-+---+ 
  1433        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |   +-+---+ 
  1434        |     |   |  }  | 
              |     |   +-----+ 
              |     |  +--------------------------------------------------------------------------------------------------+ 
  1435        |     +--+ if(BaseValIdx >= BaseValList->Count){   // パラメタ名とは一致しない。値がそのままセットされる。  | 
              |     |  +--+-----------------------------------------------------------------------------------------------+ 
              |     |     |  +------------------------------------+ 
  1436        |     |     +--+ if(ValData->DataType != dt_Real){  | 
              |     |     |  +--+---------------------------------+ 
  1437        |     |     |     +--- fprintf(fp,"      integer %s\n",ValName);
  1438        |     |     |     +--- fprintf(fp,"      parameter ( %s = %d )\n",ValName,(int)ValData->dData);
              |     |     |   +-+---+ 
  1439        |     |     |   |  }  | 
              |     |     |   +-+---+ 
              |     |     |   +-+-------+ 
  1439        |     |     |   |  else{  | 
              |     |     |   +-+-------+ 
  1440        |     |     |     +--- fprintf(fp,"      real %s\n",ValName);
  1441        |     |     |     +--- fprintf(fp,"      parameter ( %s = %f )\n",ValName,ValData->dData);
              |     |     |   +-+---+ 
  1442        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |   +-+---+ 
  1443        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+-----------------------------------------------------------------+ 
  1443        |     |   |  else if(BaseValIdx == 0){ // パラメタ名と一致。置き換えになる。  | 
              |     |   +-+-----------------------------------------------------------------+ 
  1444        |     |     +--- ValName = BaseValList->Strings[0]+BaseValList->Strings[0]; // Exp. N->NN
  1445        |     |     +--- fprintf(fp,"      integer %s\n",ValName);
  1446        |     |     +--- fprintf(fp,"      parameter ( %s = %d )\n",ValName,EndTuneSizeData);
              |     |   +-+---+ 
  1447        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+-------+ 
  1447        |     |   |  else{  | 
              |     |   +-+-------+ 
  1448        |     |     +--- // 基本パラメータと置き換えする2つ目移行の変数 Exp NX,NY 等
  1449        |     |     |    // 変数定義のみ追加する。                                    
              |     |     |  +------------------------------------+ 
  1450        |     |     +--+ if(ValData->DataType != dt_Real){  | 
              |     |     |  +--+---------------------------------+ 
  1451        |     |     |     +--- fprintf(fp,"      integer %s\n",ValName);
              |     |     |   +-+---+ 
  1452        |     |     |   |  }  | 
              |     |     |   +-+---+ 
              |     |     |   +-+-------+ 
  1452        |     |     |   |  else{  | 
              |     |     |   +-+-------+ 
  1453        |     |     |     +--- fprintf(fp,"      real %s\n",ValName);
              |     |     |   +-+---+ 
  1454        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |   +-+---+ 
  1455        |     |   |  }  | 
              |     |   +-----+ 
  1456        |     +--- ParamValList->Add(ValName);
              |   +-+---+ 
  1457        |   |  }  | 
              |   +-----+ 
  1458        +--- #else
  1459        +--- fprintf(fp,"      integer %s\n",PROB_VALNN);
  1460        +--- fprintf(fp,"      parameter ( %s = %d )\n",PROB_VALNN,Data);
  1461        +--- #endif
  1462        +--- DefPosS = -1;
  1463        +--- s = "";
              |  +--------------------------------------------+ 
  1464        +--+ for(i = 0 ; i < ArgValList->Count ; i++){  | 
              |  +--+-----------------------------------------+ 
              |     |  +------------------------------------+ 
  1465        |     +--+ if(ArgValList->Strings[i] == ""){  | 
              |     |  +--+---------------------------------+ 
              |     |     |  +------------+ 
  1466        |     |     +--+ continue;  | 
              |     |     |  +------------+ 
              |     |   +-+---+ 
  1467        |     |   |  }  | 
              |     |   +-----+ 
  1468        |     +--- ValData = (TValData *)ArgValList->Objects[i];
  1469        |     +--- ValName = ValData->Str;
  1470        |     +--- //
  1471        |     |    // パラメータ文として追加済みと同名の変数は対象外とする。(名前で比較)  
  1472        |     |    // N->NN の場合の Nは置き換えを行っているため対象外となる。              
  1473        |     |    //                                                                       
              |     |  +----------------------------------------------------------------------------+ 
  1474        |     +--+ for(ParamValIdx = 0 ; ParamValIdx < ParamValList->Count ; ParamValIdx++){  | 
              |     |  +--+-------------------------------------------------------------------------+ 
              |     |     |  +--------------------------------------------------------------------+ 
  1475        |     |     +--+ if(CompareText(ParamValList->Strings[ParamValIdx],ValName) == 0){  | 
              |     |     |  +--+-----------------------------------------------------------------+ 
              |     |     |     |  +--------+ 
  1476        |     |     |     +--+ break; | 
              |     |     |     |  +--------+ 
              |     |     |   +-+---+ 
  1477        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |   +-+---+ 
  1478        |     |   |  }  | 
              |     |   +-----+ 
              |     |  +----------------------------------------+ 
  1479        |     +--+ if(ParamValIdx < ParamValList->Count){ | 
              |     |  +--+-------------------------------------+ 
              |     |     |  +------------+ 
  1480        |     |     +--+ continue;  | 
              |     |     |  +------------+ 
              |     |   +-+---+ 
  1481        |     |   |  }  | 
              |     |   +-----+ 
              |     |  +------------------------------------------------------------------------+ 
  1482        |     +--+ for(BaseValIdx = 0 ; BaseValIdx < BaseValList->Count ; BaseValIdx++){  | 
              |     |  +--+---------------------------------------------------------------------+ 
              |     |     |  +------------------------------------------------------------------+ 
  1483        |     |     +--+ if(CompareText(BaseValList->Strings[BaseValIdx],ValName) == 0){  | 
              |     |     |  +--+---------------------------------------------------------------+ 
              |     |     |     |  +--------+ 
  1484        |     |     |     +--+ break; | 
              |     |     |     |  +--------+ 
              |     |     |   +-+---+ 
  1485        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |   +-+---+ 
  1486        |     |   |  }  | 
              |     |   +-----+ 
              |     |  +------------------------------------------------------------+ 
  1487        |     +--+ if((BaseValIdx < BaseValList->Count)&&(BaseValIdx != 0)){  | 
              |     |  +--+---------------------------------------------------------+ 
              |     |     |  +------------+ 
  1488        |     |     +--+ continue;  | 
              |     |     |  +------------+ 
              |     |   +-+---+ 
  1489        |     |   |  }  | 
              |     |   +-----+ 
              |     |  +------------------------------+ 
  1490        |     +--+ if(TuneGroup == tgDynamic){  | 
              |     |  +--+---------------------------+ 
              |     |     |  +--------------------------------------+ 
  1491        |     |     +--+ if(BaseValIdx < BaseValList->Count){ | 
              |     |     |  +--+-----------------------------------+ 
              |     |     |     |  +------------+ 
  1492        |     |     |     +--+ continue;  | 
              |     |     |     |  +------------+ 
              |     |     |   +-+---+ 
  1493        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |   +-+---+ 
  1494        |     |   |  }  | 
              |     |   +-----+ 
              |     |  +--------------------------------------------------------------------+ 
  1495        |     +--+ if((DefPosS == -1)||(ValData->DefPosS != DefPosS)){ // 違う定義行  | 
              |     |  +--+-----------------------------------------------------------------+ 
              |     |     |  +--------------+ 
  1496        |     |     +--+ if(s != ""){ | 
              |     |     |  +--+-----------+ 
  1497        |     |     |     +--- fprintf(fp,"%s\n",s.c_str());
  1498        |     |     |     +--- s = "";
              |     |     |   +-+---+ 
  1499        |     |     |   |  }  | 
              |     |     |   +-----+ 
  1500        |     |     +--- //
  1501        |     |     |    //  Dimension属性 に対応するための N->NN への置換を定義文字列まで拡張した  
  1502        |     |     |    //  2007/1/19                                                              
  1503        |     |     |    //                                                                         
  1504        |     |     +--- int j;
  1505        |     |     |    
  1506        |     |     +--- s = "";
              |     |     |  +------------------------------+ 
  1507        |     |     +--+ if(ValData->DefPosS != -1){  | 
              |     |     |  +--+---------------------------+ 
              |     |     |     |  +----------------------------------------------------------+ 
  1508        |     |     |     +--+ for(j = ValData->DefPosS ; j < ValData->DefPosE ; j++){  | 
              |     |     |     |  +--+-------------------------------------------------------+ 
  1509        |     |     |     |     +--- Token = (TToken *)TokenList->Items[j];
  1510        |     |     |     |     +--- ValName = Token->OrgStr;
              |     |     |     |     |  +------------------------------------------------------+ 
  1511        |     |     |     |     +--+ if((Token->TokId == -1)||(Token->TokId == tid_Val)){ | 
              |     |     |     |     |  +--+---------------------------------------------------+ 
              |     |     |     |     |     |  +------------------------------------------------------------------------+ 
  1512        |     |     |     |     |     +--+ for(BaseValIdx = 0 ; BaseValIdx < BaseValList->Count ; BaseValIdx++){  | 
              |     |     |     |     |     |  +--+---------------------------------------------------------------------+ 
              |     |     |     |     |     |     |  +------------------------------------------------------------------+ 
  1513        |     |     |     |     |     |     +--+ if(CompareText(BaseValList->Strings[BaseValIdx],ValName) == 0){  | 
              |     |     |     |     |     |     |  +--+---------------------------------------------------------------+ 
              |     |     |     |     |     |     |     |  +--------+ 
  1514        |     |     |     |     |     |     |     +--+ break; | 
              |     |     |     |     |     |     |     |  +--------+ 
              |     |     |     |     |     |     |   +-+---+ 
  1515        |     |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |     |   +-----+ 
              |     |     |     |     |     |   +-+---+ 
  1516        |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |   +-----+ 
              |     |     |     |     |     |  +--------------------------------------+ 
  1517        |     |     |     |     |     +--+ if(BaseValIdx < BaseValList->Count){ | 
              |     |     |     |     |     |  +--+-----------------------------------+ 
  1518        |     |     |     |     |     |     +--- ValName = BaseValList->Strings[0]+BaseValList->Strings[0]; // Exp. N->NN
              |     |     |     |     |     |   +-+---+ 
  1519        |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |   +-----+ 
              |     |     |     |     |   +-+---+ 
  1520        |     |     |     |     |   |  }  | 
              |     |     |     |     |   +-----+ 
  1521        |     |     |     |     +--- s += ValName;
              |     |     |     |   +-+---+ 
  1522        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
              |     |     |   +-+---+ 
  1523        |     |     |   |  }  | 
              |     |     |   +-+---+ 
              |     |     |   +-+-------+ 
  1523        |     |     |   |  else{  | 
              |     |     |   +-+-------+ 
  1524        |     |     |     +--- s = GetDefStr(ValData);
              |     |     |   +-+---+ 
  1525        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |     |  +--------------+ 
  1526        |     |     +--+ if(s == ""){ | 
              |     |     |  +--+-----------+ 
              |     |     |     |  +------------+ 
  1527        |     |     |     +--+ continue;  | 
              |     |     |     |  +------------+ 
              |     |     |   +-+---+ 
  1528        |     |     |   |  }  | 
              |     |     |   +-----+ 
  1529        |     |     +--- DefPosS = ValData->DefPosS;
              |     |   +-+---+ 
  1530        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+-------+ 
  1530        |     |   |  else{  | 
              |     |   +-+-------+ 
  1531        |     |     +--- s += ",";
              |     |   +-+---+ 
  1532        |     |   |  }  | 
              |     |   +-----+ 
  1533        |     +--- s += " " + ValData->Str;
              |     |  +--------------------------------------------------------------------+ 
  1534        |     +--+ for(j = ValData->ArrayDefPosS ; j < ValData->ArrayDefPosE ; j++){  | 
              |     |  +--+-----------------------------------------------------------------+ 
  1535        |     |     +--- Token = (TToken *)TokenList->Items[j];
  1536        |     |     +--- // Change for N or n 2007/1/19
  1537        |     |     +--- ValName = Token->OrgStr;
              |     |     |  +------------------------------------------------------+ 
  1538        |     |     +--+ if((Token->TokId == -1)||(Token->TokId == tid_Val)){ | 
              |     |     |  +--+---------------------------------------------------+ 
              |     |     |     |  +------------------------------------------------------------------------+ 
  1539        |     |     |     +--+ for(BaseValIdx = 0 ; BaseValIdx < BaseValList->Count ; BaseValIdx++){  | 
              |     |     |     |  +--+---------------------------------------------------------------------+ 
              |     |     |     |     |  +------------------------------------------------------------------+ 
  1540        |     |     |     |     +--+ if(CompareText(BaseValList->Strings[BaseValIdx],ValName) == 0){  | 
              |     |     |     |     |  +--+---------------------------------------------------------------+ 
              |     |     |     |     |     |  +--------+ 
  1541        |     |     |     |     |     +--+ break; | 
              |     |     |     |     |     |  +--------+ 
              |     |     |     |     |   +-+---+ 
  1542        |     |     |     |     |   |  }  | 
              |     |     |     |     |   +-----+ 
              |     |     |     |   +-+---+ 
  1543        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
              |     |     |     |  +--------------------------------------+ 
  1544        |     |     |     +--+ if(BaseValIdx < BaseValList->Count){ | 
              |     |     |     |  +--+-----------------------------------+ 
  1545        |     |     |     |     +--- ValName = BaseValList->Strings[0]+BaseValList->Strings[0]; // Exp. N->NN
              |     |     |     |   +-+---+ 
  1546        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
              |     |     |   +-+---+ 
  1547        |     |     |   |  }  | 
              |     |     |   +-----+ 
  1548        |     |     +--- s += ValName;
              |     |   +-+---+ 
  1549        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
  1550        |   |  }  | 
              |   +-----+ 
              |  +--------------+ 
  1551        +--+ if(s != ""){ | 
              |  +--+-----------+ 
  1552        |     +--- fprintf(fp,"%s\n",s.c_str());
              |   +-+---+ 
  1553        |   |  }  | 
              |   +-----+ 
  1554        +--- fprintf(fp,"\n");
              |  +------------------------+ 
  1555        +--+ if(FittingType != 0){  | 
              |  +--+---------------------+ 
  1556        |     +--- fprintf(fp,"c     !!!!!! fitting用\n");
  1557        |     +--- fprintf(fp,"c     === for estimation using Least Square Method\n");
  1558        |     +--- fprintf(fp,"c        ===  for sumipling data\n");
  1559        |     +--- fprintf(fp,"      real*8  xDim(0:ABCLibLSM_MAX_N-1, 0:ABCLibLSM_MAX_NPARM-1)\n");
  1560        |     +--- fprintf(fp,"      real*8  yEst(0:ABCLibLSM_MAX_N-1, 0:ABCLibLSM_MAX_NPARM-1)\n");
  1561        |     +--- fprintf(fp,"      real*8  x(0:ABCLibLSM_MAX_N-1)\n");
  1562        |     +--- fprintf(fp,"      real*8  y(0:ABCLibLSM_MAX_N-1)\n");
  1563        |     +--- fprintf(fp,"c        === for target coefficients\n");
  1564        |     +--- fprintf(fp,"      real*8  a_lsm(0:ABCLibLSM_MAX_M)\n");
  1565        |     +--- fprintf(fp,"      real*8  aa_lsm(0:ABCLibLSM_MAX_M, 0:ABCLibLSM_MAX_NPARM-1)\n");
  1566        |     +--- fprintf(fp,"c     !!!!!! fitting用終り\n");
              |   +-+---+ 
  1567        |   |  }  | 
              |   +-----+ 
  1568        +--- fprintf(fp,"\n");
  1569        +--- fprintf(fp,"      integer iusw1\n");
  1570        +--- //      fprintf(fp,"      integer F1(%d)\n",CaseCount);
  1571        +--- fprintf(fp,"      integer F1(%d)\n",CaseArrayCount);
  1572        +--- fprintf(fp,"\n");
              |  +------------------------------+ 
  1573        +--+ if(TuneGroup != tgDynamic){  | 
              |  +--+---------------------------+ 
  1574        |     +--- fprintf(fp,"      integer iBestSw1\n");
              |   +-+---+ 
  1575        |   |  }  | 
              |   +-----+ 
  1576        +--- fprintf(fp,"\n");
  1577        +--- fprintf(fp,"      real*8  t1, t2, t_all, bt\n");
  1578        +--- fprintf(fp,"      real*8  dBestTime1\n");
  1579        +--- fprintf(fp,"\n");
              |  +----------------------------------------------------------------------------------+ 
  1580        +--+ if(MainF->EECntlF){     // -eectrlのフラグ(ON時は、コントロール部分を置き換え)  | 
              |  +--+-------------------------------------------------------------------------------+ 
  1581        |     +--- // この定義がないと do While等での型チェックで問題発生していた
  1582        |     +--- fprintf(fp,"      integer ABCLib_Eecntl_NextIndex\n");
  1583        |     +--- fprintf(fp,"      logical ABCLib_Eecntl_Continue\n");
              |   +-+---+ 
  1584        |   |  }  | 
              |   +-----+ 
  1585        |    
              |  +--------------------------------+ 
  1586        +--+ if(VisualF){ // Visualize = ON | 
              |  +--+-----------------------------+ 
  1587        |     +--- // 格納用の ExecState() と読込み用の cbufを確保する。
  1588        |     +--- fprintf(fp,"      integer inum,iloop_v,LoopCount\n");
  1589        |     +--- fprintf(fp,"      integer ExecState(%d)\n",MainF->TuneRegionList->Count);
  1590        |     +--- fprintf(fp,"      character*100 cbuf\n");
  1591        |     +--- fprintf(fp,"      real*8 t_all_sum\n");
              |   +-+---+ 
  1592        |   |  }  | 
              |   +-----+ 
  1593        |    
  1594        +--- //
  1595        |    // FTN95で値が入っていない場合にエラーになったので値のセットを追加 2009/03/10  
  1596        |    // 本来は PrePro指定等で行う方が正解と思われるが省略時でも動作可能とするために 
  1597        |    // 追加した。パラメータ指定の変数は除く                                        
  1598        |    //                                                                             
  1599        +--- fprintf(fp,"\n");
              |  +--------------------------------------------+ 
  1600        +--+ for(i = 0 ; i < ArgValList->Count ; i++){  | 
              |  +--+-----------------------------------------+ 
              |     |  +------------------------------------+ 
  1601        |     +--+ if(ArgValList->Strings[i] == ""){  | 
              |     |  +--+---------------------------------+ 
              |     |     |  +------------+ 
  1602        |     |     +--+ continue;  | 
              |     |     |  +------------+ 
              |     |   +-+---+ 
  1603        |     |   |  }  | 
              |     |   +-----+ 
  1604        |     +--- ValData = (TValData *)ArgValList->Objects[i];
  1605        |     +--- ValName = ValData->Str;
  1606        |     +--- //
  1607        |     |    // パラメータ文として追加済みと同名の変数は対象外とする。(名前で比較)  
  1608        |     |    // N->NN の場合の Nは置き換えを行っているため対象外となる。              
  1609        |     |    //                                                                       
              |     |  +----------------------------------------------------------------------------+ 
  1610        |     +--+ for(ParamValIdx = 0 ; ParamValIdx < ParamValList->Count ; ParamValIdx++){  | 
              |     |  +--+-------------------------------------------------------------------------+ 
              |     |     |  +--------------------------------------------------------------------+ 
  1611        |     |     +--+ if(CompareText(ParamValList->Strings[ParamValIdx],ValName) == 0){  | 
              |     |     |  +--+-----------------------------------------------------------------+ 
              |     |     |     |  +--------+ 
  1612        |     |     |     +--+ break; | 
              |     |     |     |  +--------+ 
              |     |     |   +-+---+ 
  1613        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |   +-+---+ 
  1614        |     |   |  }  | 
              |     |   +-----+ 
              |     |  +----------------------------------------+ 
  1615        |     +--+ if(ParamValIdx < ParamValList->Count){ | 
              |     |  +--+-------------------------------------+ 
              |     |     |  +------------+ 
  1616        |     |     +--+ continue;  | 
              |     |     |  +------------+ 
              |     |   +-+---+ 
  1617        |     |   |  }  | 
              |     |   +-----+ 
              |     |  +------------------------------------------------------------------------+ 
  1618        |     +--+ for(BaseValIdx = 0 ; BaseValIdx < BaseValList->Count ; BaseValIdx++){  | 
              |     |  +--+---------------------------------------------------------------------+ 
              |     |     |  +------------------------------------------------------------------+ 
  1619        |     |     +--+ if(CompareText(BaseValList->Strings[BaseValIdx],ValName) == 0){  | 
              |     |     |  +--+---------------------------------------------------------------+ 
              |     |     |     |  +--------+ 
  1620        |     |     |     +--+ break; | 
              |     |     |     |  +--------+ 
              |     |     |   +-+---+ 
  1621        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |   +-+---+ 
  1622        |     |   |  }  | 
              |     |   +-----+ 
              |     |  +--------------------------------------+ 
  1623        |     +--+ if(BaseValIdx < BaseValList->Count){ | 
              |     |  +--+-----------------------------------+ 
              |     |     |  +------------+ 
  1624        |     |     +--+ continue;  | 
              |     |     |  +------------+ 
              |     |   +-+---+ 
  1625        |     |   |  }  | 
              |     |   +-----+ 
  1626        |     +--- fprintf(fp,"      %s = 1\n",ValName);
              |   +-+---+ 
  1627        |   |  }  | 
              |   +-----+ 
  1628        |    
  1629        +--- fprintf(fp,"\n");
  1630        +--- fprintf(fp,"c     ---- file create\n");
  1631        +--- fprintf(fp,"c     -----------------------------------------\n");
  1632        +--- fprintf(fp,"      if (myid .eq. 0) then\n");
  1633        +--- fprintf(fp,"        open(11, status = 'replace',\n");
  1634        +--- fprintf(fp,"     &     file = 'ABCLib_%s%sParam.dat',\n",TuneGroupName,Name);
  1635        +--- fprintf(fp,"     &     action = 'write', pad= 'yes')\n");
  1636        +--- fprintf(fp,"\n");
  1637        +--- fprintf(fp,"        write (11, *) \"(%s\"\n",Name);
              |  +------------------------------+ 
  1638        +--+ if(TuneGroup != tgDynamic){  | 
              |  +--+---------------------------+ 
  1639        |     +--- fprintf(fp,"        write (11, *) \"  (ABCLib_NUMPROCS \", ABCLib_NUMPROCS,\")\"\n");
  1640        |     +--- fprintf(fp,"        write (11, *) \"  (ABCLib_SAMPDIST \", ABCLib_SAMPDIST,\")\"\n");
              |   +-+---+ 
  1641        |   |  }  | 
              |   +-----+ 
  1642        |    
              |  +--------------------------------+ 
  1643        +--+ if(VisualF){ // Visualize = ON | 
              |  +--+-----------------------------+ 
  1644        |     +--- // 格納用の ExecState() の現在の値を読み込む。
  1645        |     +--- fprintf(fp,"\n");
  1646        |     |    
              |     |  +------------------------------+ 
  1647        |     +--+ if(TuneGroup != tgDynamic){  | 
              |     |  +--+---------------------------+ 
  1648        |     |     +--- fprintf(fp,"        LoopCount = ABCLib_ENDTUNESIZE-ABCLib_STARTTUNESIZE\n");
  1649        |     |     +--- fprintf(fp,"        LoopCount = LoopCount+ABCLib_SAMPDIST\n");
  1650        |     |     +--- fprintf(fp,"        LoopCount = LoopCount/ABCLib_SAMPDIST\n");
              |     |   +-+---+ 
  1651        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+-------+ 
  1651        |     |   |  else{  | 
              |     |   +-+-------+ 
  1652        |     |     +--- fprintf(fp,"        LoopCount = 1\n");
              |     |   +-+---+ 
  1653        |     |   |  }  | 
              |     |   +-----+ 
  1654        |     +--- fprintf(fp,"\n");
  1655        |     |    
  1656        |     +--- fprintf(fp,"        open(12, status = 'old',\n");
  1657        |     +--- fprintf(fp,"     &     file = 'ABCLibATLog.dat',\n");
  1658        |     +--- fprintf(fp,"     &     action = 'read', pad= 'yes')\n");
  1659        |     +--- fprintf(fp,"\n");
  1660        |     +--- fprintf(fp,"        do iloop_v = 1, %d\n",MainF->TuneRegionList->Count);
  1661        |     +--- fprintf(fp,"          read(12, *) cbuf\n");
  1662        |     +--- fprintf(fp,"          call ABCLibCharToNum(cbuf,inum)\n");
  1663        |     +--- fprintf(fp,"          ExecState(iloop_v) = inum\n");
  1664        |     +--- fprintf(fp,"        enddo\n");
  1665        |     +--- fprintf(fp,"        close(12, status = 'keep')\n");
  1666        |     +--- fprintf(fp,"\n");
  1667        |     |    
  1668        |     +--- // 結果Logの書き出し用ファイルをOpen
  1669        |     +--- fprintf(fp,"        open(13, status = 'replace',\n");
  1670        |     +--- fprintf(fp,"     &     file = 'ABCLibATLog_%s.dat',\n",Name);
  1671        |     +--- fprintf(fp,"     &     action = 'write', pad= 'yes')\n");
  1672        |     +--- fprintf(fp,"        write (13, *) ABCLIB_NUMPROCS , \"NUMPROCS\"\n");
              |     |  +------------------------------+ 
  1673        |     +--+ if(TuneGroup != tgDynamic){  | 
              |     |  +--+---------------------------+ 
  1674        |     |     +--- fprintf(fp,"        write (13, *) ABCLib_STARTTUNESIZE, \"ABCLib_STARTTUNESIZE\"\n");
  1675        |     |     +--- fprintf(fp,"        write (13, *) ABCLIB_ENDTUNESIZE, \"ABCLIB_ENDTUNESIZE\"\n");
  1676        |     |     +--- fprintf(fp,"        write (13, *) ABCLIB_SAMPDIST, \"ABCLIB_SAMPDIST\"\n");
              |     |   +-+---+ 
  1677        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+-------+ 
  1677        |     |   |  else{  | 
              |     |   +-+-------+ 
  1678        |     |     +--- fprintf(fp,"        write (13, *) N, \"ABCLib_STARTTUNESIZE\"\n");
  1679        |     |     +--- fprintf(fp,"        write (13, *) N, \"ABCLIB_ENDTUNESIZE\"\n");
  1680        |     |     +--- fprintf(fp,"        write (13, *) 100, \"ABCLIB_SAMPDIST\"\n");
              |     |   +-+---+ 
  1681        |     |   |  }  | 
              |     |   +-----+ 
  1682        |     +--- fprintf(fp,"        write (13, *) -1, \"EndOfHeader\"\n");
  1683        |     +--- fprintf(fp,"\n");
              |   +-+---+ 
  1684        |   |  }  | 
              |   +-----+ 
  1685        |    
  1686        |     
  1687        +--- fprintf(fp,"      endif\n");
  1688        +--- fprintf(fp,"c     ----------------------------------------\n");
  1689        +--- fprintf(fp,"\n");
  1690        +--- fprintf(fp,"c     ---- Start tune\n");
  1691        +--- fprintf(fp,"c     -----------------------------------------\n");
              |  +------------------------+ 
  1692        +--+ if(FittingType != 0){  | 
              |  +--+---------------------+ 
              |     |  +--------------------------------------------+ 
  1693        |     +--+ for(i = 0 ; i < SampledList->Count ; i++){ | 
              |     |  +--+-----------------------------------------+ 
  1694        |     |     +--- fprintf(fp,"      F1(%d)=%d\n",i+1,(int)SampledList->Items[i]);
              |     |   +-+---+ 
  1695        |     |   |  }  | 
              |     |   +-----+ 
  1696        |     |    
  1697        |     +--- fprintf(fp,"\n");
  1698        |     +--- fprintf(fp,"c     !!!!!! fitting用変数\n");
  1699        |     +--- fprintf(fp,"c     !!! variedから推定する最大パラメタ組合せ数\n");
  1700        |     +--- fprintf(fp,"      nparm = %d\n",CaseCount);
  1701        |     +--- fprintf(fp,"\n");
  1702        |     +--- fprintf(fp,"c     !!! パラメタの変化数 / sampled 指定子から算出\n");
  1703        |     +--- fprintf(fp,"      n_lsm = %d\n",SampledList->Count);
  1704        |     +--- fprintf(fp,"\n");
  1705        |     +--- fprintf(fp,"c     !!! 行列サイズに関するサンプル点の個数\n");
  1706        |     +--- fprintf(fp,"      nsamp = 0\n");
  1707        |     +--- fprintf(fp,"      do iloop_n=ABCLib_STARTTUNESIZE,\n");
  1708        |     +--- fprintf(fp,"     &           ABCLib_ENDTUNESIZE,\n");
  1709        |     +--- fprintf(fp,"     &           ABCLib_SAMPDIST\n");
  1710        |     +--- fprintf(fp,"         nsamp = nsamp + 1\n");
  1711        |     +--- fprintf(fp,"      enddo\n");
  1712        |     +--- fprintf(fp,"\n");
  1713        |     +--- fprintf(fp,"\n");
  1714        |     +--- fprintf(fp,"\n");
  1715        |     +--- fprintf(fp,"c     !!! fitting least squares で指定した次元数\n");
  1716        |     +--- fprintf(fp,"      m_lsm = %d\n",FittingDegree);
  1717        |     +--- fprintf(fp,"\n");
  1718        |     +--- fprintf(fp,"c     !!! サンプリング点インデックス初期化\n");
  1719        |     +--- fprintf(fp,"      isamp_indx = 0\n");
  1720        |     +--- fprintf(fp,"\n");
  1721        |     +--- fprintf(fp,"c      print *, \"nparm = \", nparm\n");
  1722        |     +--- fprintf(fp,"c      print *, \"nsamp = \", nsamp\n");
  1723        |     +--- fprintf(fp,"c      print *, \"m_lsm = \", m_lsm\n");
  1724        |     +--- fprintf(fp,"\n");
              |   +-+---+ 
  1725        |   |  }  | 
              |   +-+---+ 
              |   +-+-------+ 
  1725        |   |  else{  | 
              |   +-+-------+ 
              |     |  +------------------------------------+ 
  1726        |     +--+ for(i = 1 ; i <= CaseCount ; i++){ | 
              |     |  +--+---------------------------------+ 
  1727        |     |     +--- fprintf(fp,"      F1(%d)=%d\n",i,i);
              |     |   +-+---+ 
  1728        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
  1729        |   |  }  | 
              |   +-----+ 
              |  +--------------------------------+ 
  1730        +--+ if(VisualF){ // Visualize = ON | 
              |  +--+-----------------------------+ 
  1731        |     +--- fprintf(fp,"      t_all_sum = 0\n"); // 1秒以上のチェック
              |   +-+---+ 
  1732        |   |  }  | 
              |   +-----+ 
              |  +------------------------------+ 
  1733        +--+ if(TuneGroup != tgDynamic){  | 
              |  +--+---------------------------+ 
  1734        |     +--- fprintf(fp,"      do iloop_n=ABCLib_STARTTUNESIZE,\n");
  1735        |     +--- fprintf(fp,"     &           ABCLib_ENDTUNESIZE,\n");
  1736        |     +--- fprintf(fp,"     &           ABCLib_SAMPDIST\n");
              |   +-+---+ 
  1737        |   |  }  | 
              |   +-----+ 
  1738        +--- fprintf(fp,"\n");
              |  +--------------------------------------------------------------------------------------+ 
  1739        +--+ if(!MainF->EECntlF){        // -eectrlのフラグ(ON時は、コントロール部分を置き換え)  | 
              |  +--+-----------------------------------------------------------------------------------+ 
  1740        |     +--- fprintf(fp,"        do iloop_%s=1, %d\n",LowerCase(TuneGroupName),CaseArrayCount);
  1741        |     +--- fprintf(fp,"\n");
  1742        |     +--- fprintf(fp,"          iusw1 = F1(iloop_%s)\n",LowerCase(TuneGroupName));
  1743        |     +--- fprintf(fp,"\n");
              |   +-+---+ 
  1744        |   |  }  | 
              |   +-+---+ 
              |   +-+-------+ 
  1744        |   |  else{  | 
              |   +-+-------+ 
  1745        |     +--- fprintf(fp,"        call ABCLib_Eecntl_Init(F1,%d)\n",CaseArrayCount);
  1746        |     +--- fprintf(fp,"        iBestSw1 = 0\n");
  1747        |     +--- fprintf(fp,"        do while ( .true.)\n");
  1748        |     +--- fprintf(fp,"          iusw1 = ABCLib_Eecntl_NextIndex()\n");
  1749        |     +--- fprintf(fp,"          if (iusw1 < 1 ) exit\n");
  1750        |     +--- fprintf(fp,"\n");
              |   +-+---+ 
  1751        |   |  }  | 
              |   +-----+ 
  1752        |    
              |  +------------------------------+ 
  1753        +--+ if(TuneGroup != tgDynamic){  | 
              |  +--+---------------------------+ 
  1754        |     +--- #if 0
  1755        |     +--- // DOの終わり値の変数をセット << 修正 N 固定 2004/05/11 Select対応
  1756        |     +--- fprintf(fp,"          N = iloop_n\n");
  1757        |     +--- fprintf(fp,"          NX = iloop_n\n");
  1758        |     +--- fprintf(fp,"          NY = iloop_n\n");
  1759        |     +--- fprintf(fp,"          NZ = iloop_n\n");
  1760        |     +--- #else
              |     |  +--------------------------------------------+ 
  1761        |     +--+ for(i = 0 ; i < BaseValList->Count ; i++){ | 
              |     |  +--+-----------------------------------------+ 
  1762        |     |     +--- ValName = BaseValList->Strings[i];
  1763        |     |     +--- fprintf(fp,"          %s = iloop_n\n",ValName.c_str());
              |     |   +-+---+ 
  1764        |     |   |  }  | 
              |     |   +-----+ 
  1765        |     +--- #endif
              |   +-+---+ 
  1766        |   |  }  | 
              |   +-----+ 
  1767        |    
  1768        +--- fprintf(fp,"\n");
  1769        +--- s = GetPrePostSubregionStr(0);
              |  +--------------+ 
  1770        +--+ if(s != ""){ | 
              |  +--+-----------+ 
  1771        |     +--- fprintf(fp,"%s",s.c_str());
  1772        |     +--- fprintf(fp,"\n");
              |   +-+---+ 
  1773        |   |  }  | 
              |   +-----+ 
              |  +----------------------+ 
  1774        +--+ if(!MainF->NoMPIF){  | 
              |  +--+-------------------+ 
  1775        |     +--- fprintf(fp,"          call MPI_BARRIER(MPI_COMM_WORLD, ierr)\n");
              |   +-+---+ 
  1776        |   |  }  | 
              |   +-----+ 
              |  +----------------------------------+ 
  1777        +--+ if(MainF->my_timer_start != ""){ | 
              |  +--+-------------------------------+ 
  1778        |     +--- fprintf(fp,"          call %s()\n",MainF->my_timer_start);
              |   +-+---+ 
  1779        |   |  }  | 
              |   +-----+ 
  1780        +--- //  fprintf(fp,"          t1 = MPI_WTIME()\n");
  1781        +--- fprintf(fp,"          t1 = %s()\n",MainF->TimeFunc);
  1782        +--- fprintf(fp,"\n");
  1783        |    
              |  +----------------------------------------------------------------------------------+ 
  1784        +--+ if(MainF->EECntlF){     // -eectrlのフラグ(ON時は、コントロール部分を置き換え)  | 
              |  +--+-------------------------------------------------------------------------------+ 
  1785        |     +--- fprintf(fp,"          iloop_inner = 0\n");
  1786        |     +--- fprintf(fp,"          do while (ABCLib_Eecntl_Continue())\n");
  1787        |     +--- s = "            call "+FuncName + "(";
              |   +-+---+ 
  1788        |   |  }  | 
              |   +-+---+ 
              |   +-+-------+ 
  1788        |   |  else{  | 
              |   +-+-------+ 
  1789        |     +--- s = "          call "+FuncName + "(";
              |   +-+---+ 
  1790        |   |  }  | 
              |   +-----+ 
              |  +--------------------------------------------+ 
  1791        +--+ for(i = 0 ; i < ArgValList->Count ; i++){  | 
              |  +--+-----------------------------------------+ 
              |     |  +------------------------------------+ 
  1792        |     +--+ if(ArgValList->Strings[i] == ""){  | 
              |     |  +--+---------------------------------+ 
              |     |     |  +------------+ 
  1793        |     |     +--+ continue;  | 
              |     |     |  +------------+ 
              |     |   +-+---+ 
  1794        |     |   |  }  | 
              |     |   +-----+ 
  1795        |     +--- ValData = (TValData *)ArgValList->Objects[i];
  1796        |     +--- s += ValData->Str + ", ";
              |   +-+---+ 
  1797        |   |  }  | 
              |   +-----+ 
  1798        +--- // Mod 2007/1/19
  1799        +--- //  fprintf(fp,"%siusw1)\n",s.c_str());
  1800        +--- s += "iusw1)";
  1801        +--- s = SepLongStr(s);
  1802        +--- fprintf(fp,"%s\n",s.c_str());
              |  +----------------------------------------------------------------------------------+ 
  1803        +--+ if(MainF->EECntlF){     // -eectrlのフラグ(ON時は、コントロール部分を置き換え)  | 
              |  +--+-------------------------------------------------------------------------------+ 
  1804        |     +--- fprintf(fp,"            iloop_inner = iloop_inner + 1\n");
  1805        |     +--- fprintf(fp,"          end do\n");
              |   +-+---+ 
  1806        |   |  }  | 
              |   +-----+ 
  1807        |    
  1808        +--- fprintf(fp,"\n");
              |  +----------------------+ 
  1809        +--+ if(!MainF->NoMPIF){  | 
              |  +--+-------------------+ 
  1810        |     +--- fprintf(fp,"          call MPI_BARRIER(MPI_COMM_WORLD, ierr)\n");
              |   +-+---+ 
  1811        |   |  }  | 
              |   +-----+ 
              |  +----------------------------------+ 
  1812        +--+ if(MainF->my_timer_stop != ""){  | 
              |  +--+-------------------------------+ 
  1813        |     +--- fprintf(fp,"          call %s()\n",MainF->my_timer_stop);
              |   +-+---+ 
  1814        |   |  }  | 
              |   +-----+ 
  1815        +--- //  fprintf(fp,"          t2 = MPI_WTIME()\n");
  1816        +--- fprintf(fp,"          t2 = %s()\n",MainF->TimeFunc);
  1817        |    
  1818        +--- fprintf(fp,"          t_all = t2 - t1\n");
              |  +----------------------+ 
  1819        +--+ if(!MainF->NoMPIF){  | 
              |  +--+-------------------+ 
  1820        |     +--- fprintf(fp,"          call MPI_ALLREDUCE(t_all, bt, 1, MPI_DOUBLE_PRECISION,\n");
  1821        |     +--- fprintf(fp,"     &           MPI_MAX, MPI_COMM_WORLD, ierr)\n");
              |   +-+---+ 
  1822        |   |  }  | 
              |   +-+---+ 
              |   +-+-------+ 
  1822        |   |  else{  | 
              |   +-+-------+ 
  1823        |     +--- fprintf(fp,"          bt = t_all\n");
              |   +-+---+ 
  1824        |   |  }  | 
              |   +-----+ 
              |  +--------------------------------------------------------------------------------------+ 
  1825        +--+ if(!MainF->EECntlF){        // -eectrlのフラグ(ON時は、コントロール部分を置き換え)  | 
              |  +--+-----------------------------------------------------------------------------------+ 
  1826        |     +--- fprintf(fp,"          t_all = bt\n");
              |   +-+---+ 
  1827        |   |  }  | 
              |   +-+---+ 
              |   +-+-------+ 
  1827        |   |  else{  | 
              |   +-+-------+ 
  1828        |     +--- fprintf(fp,"          t_all = bt / iloop_inner\n");
  1829        |     +--- fprintf(fp,"          call ABCLib_Eecntl_Repperf(iusw1, t_all)\n");
              |   +-+---+ 
  1830        |   |  }  | 
              |   +-----+ 
  1831        +--- fprintf(fp,"\n");
  1832        |    
  1833        +--- s = GetPrePostSubregionStr(1);
              |  +--------------+ 
  1834        +--+ if(s != ""){ | 
              |  +--+-----------+ 
  1835        |     +--- fprintf(fp,"%s",s.c_str());
  1836        |     +--- fprintf(fp,"\n");
              |   +-+---+ 
  1837        |   |  }  | 
              |   +-----+ 
  1838        |    
              |  +--------------------------------+ 
  1839        +--+ if(VisualF){ // Visualize = ON | 
              |  +--+-----------------------------+ 
  1840        |     +--- // 0から100(%)までの進行状態の値をセットする。
  1841        |     +--- fprintf(fp,"          if (myid .eq. 0) then\n");
  1842        |     +--- fprintf(fp,"            t_all_sum = t_all_sum + t_all\n"); // 1秒以上のチェック
  1843        |     +--- fprintf(fp,"            if(t_all_sum .ge. 1.0) then\n"); // 1秒以上のチェック
  1844        |     +--- fprintf(fp,"              t_all_sum = 0\n"); // 1秒以上のチェック
  1845        |     +--- fprintf(fp,"              inum = (iloop_n-ABCLib_STARTTUNESIZE)/ABCLib_SAMPDIST\n");
  1846        |     |    
  1847        |     +--- fprintf(fp,"              ExecState(%d) = (100*inum+\n",MainF->TuneRegionList->IndexOf(this)+1);
  1848        |     +--- fprintf(fp,"     &                    100*(iloop_%s-1)/%d)/LoopCount\n",
  1849        |     |            LowerCase(TuneGroupName),                                        
  1850        |     |            CaseCount);                                                      
  1851        |     |    
  1852        |     +--- // 格納用の ExecState() の現在の値を書き込む。
  1853        |     +--- fprintf(fp,"              open(12, status = 'replace',\n");
  1854        |     +--- fprintf(fp,"     &           file = 'ABCLibATLog.dat',\n");
  1855        |     +--- fprintf(fp,"     &           action = 'write', pad= 'yes')\n");
  1856        |     +--- fprintf(fp,"\n");
  1857        |     +--- fprintf(fp,"              do iloop_v = 1, %d\n",MainF->TuneRegionList->Count);
  1858        |     +--- fprintf(fp,"                write (12, *) ExecState(iloop_v)\n");
  1859        |     +--- fprintf(fp,"              enddo\n");
  1860        |     +--- fprintf(fp,"              close(12, status = 'keep')\n");
  1861        |     |    
  1862        |     +--- fprintf(fp,"            endif\n"); // 1秒以上のチェック
  1863        |     +--- fprintf(fp,"          endif\n");
              |   +-+---+ 
  1864        |   |  }  | 
              |   +-----+ 
  1865        |    
  1866        +--- //
  1867        |    // According 指定がある場合は、計測時間を置き換える。              
  1868        |    //  条件指定の場合(estimatedなし)には、条件が一致すれば time = 0 
  1869        |    //  条件が一致しない場合は、かかった時間(0より大きい値)           
  1870        |    //  Accordingと varidの2重の場合には、 範囲で選択となる。         
  1871        |    //  時間変数があると便利? 例えば、 ABCLib_TIME ???             
  1872        |    //                                                                 
              |  +--------------------+ 
  1873        +--+ if(UseAccordingF){ | 
              |  +--+-----------------+ 
  1874        |     +--- AnsiString aStr;
  1875        |     +--- TSubRegion *SubRegion;
  1876        |     +--- int cp1,cp2;
  1877        |     +--- int CaseIdx = 1;
  1878        |     |    
              |     |  +--------------------------------+ 
  1879        |     +--+ if(SubRegionList->Count != 0){ | 
              |     |  +--+-----------------------------+ 
  1880        |     |     +--- fprintf(fp,"          select case(iusw1)\n");
              |     |     |  +----------------------------------------------+ 
  1881        |     |     +--+ for(i = 0 ; i < SubRegionList->Count ; i++){ | 
              |     |     |  +--+-------------------------------------------+ 
  1882        |     |     |     +--- SubRegion = (TSubRegion *)SubRegionList->Items[i];
  1883        |     |     |     +--- aStr = SubRegion->AccordingStr;
              |     |     |     |  +------------------+ 
  1884        |     |     |     +--+ if(aStr == ""){  | 
              |     |     |     |  +--+---------------+ 
              |     |     |     |     |  +------------+ 
  1885        |     |     |     |     +--+ continue;  | 
              |     |     |     |     |  +------------+ 
              |     |     |     |   +-+---+ 
  1886        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
              |     |     |     |  +--------------------------------+ 
  1887        |     |     |     +--+ if(SubRegion->CaseCount <= 1){ | 
              |     |     |     |  +--+-----------------------------+ 
  1888        |     |     |     |     +--- fprintf(fp,"            case(%d)\n",CaseIdx++);
              |     |     |     |   +-+---+ 
  1889        |     |     |     |   |  }  | 
              |     |     |     |   +-+---+ 
              |     |     |     |   +-+-------+ 
  1889        |     |     |     |   |  else{  | 
              |     |     |     |   +-+-------+ 
  1890        |     |     |     |     +--- fprintf(fp,"            case(%d:%d)\n",CaseIdx,CaseIdx+SubRegion->CaseCount-1);
  1891        |     |     |     |     +--- CaseIdx += SubRegion->CaseCount;
              |     |     |     |   +-+---+ 
  1892        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
  1893        |     |     |     +--- cp1 = aStr.Pos("according") + strlen("according");
  1894        |     |     |     +--- cp2 = aStr.Pos("estimated");
              |     |     |     |  +----------------+ 
  1895        |     |     |     +--+ if(cp2 != 0){  | 
              |     |     |     |  +--+-------------+ 
  1896        |     |     |     |     +--- cp1 = cp2 + strlen("estimated");
  1897        |     |     |     |     +--- aStr = Trim(aStr.SubString(cp1+1,aStr.Length()));
  1898        |     |     |     |     +--- fprintf(fp,"              t_all = dble(%s)\n",aStr);
              |     |     |     |   +-+---+ 
  1899        |     |     |     |   |  }  | 
              |     |     |     |   +-+---+ 
              |     |     |     |   +-+-----------------+ 
  1899        |     |     |     |   |  else{ // 条件式  | 
              |     |     |     |   +-+-----------------+ 
  1900        |     |     |     |     +--- aStr = Trim(aStr.SubString(cp1+1,aStr.Length()));
  1901        |     |     |     |     +--- fprintf(fp,"              if (%s) then\n",aStr);
  1902        |     |     |     |     +--- fprintf(fp,"                t_all = 0\n");
  1903        |     |     |     |     +--- fprintf(fp,"              endif\n");
              |     |     |     |   +-+---+ 
  1904        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
              |     |     |   +-+---+ 
  1905        |     |     |   |  }  | 
              |     |     |   +-----+ 
  1906        |     |     +--- fprintf(fp,"          end select\n");
              |     |   +-+---+ 
  1907        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+-------+ 
  1907        |     |   |  else{  | 
              |     |   +-+-------+ 
  1908        |     |     +--- aStr = AccordingStr;
  1909        |     |     +--- cp1 = aStr.Pos("according") + strlen("according");
  1910        |     |     +--- cp2 = aStr.Pos("estimated");
              |     |     |  +----------------+ 
  1911        |     |     +--+ if(cp2 != 0){  | 
              |     |     |  +--+-------------+ 
  1912        |     |     |     +--- cp1 = cp2 + strlen("estimated");
  1913        |     |     |     +--- aStr = Trim(aStr.SubString(cp1+1,aStr.Length()));
  1914        |     |     |     +--- fprintf(fp,"            t_all = dble(%s)\n",aStr);
              |     |     |   +-+---+ 
  1915        |     |     |   |  }  | 
              |     |     |   +-+---+ 
              |     |     |   +-+-----------------+ 
  1915        |     |     |   |  else{ // 条件式  | 
              |     |     |   +-+-----------------+ 
  1916        |     |     |     +--- aStr = Trim(aStr.SubString(cp1+1,aStr.Length()));
  1917        |     |     |     +--- fprintf(fp,"            if (%s) then\n",aStr);
  1918        |     |     |     +--- fprintf(fp,"              t_all = 0\n");
  1919        |     |     |     +--- fprintf(fp,"            endif\n");
              |     |     |   +-+---+ 
  1920        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |   +-+---+ 
  1921        |     |   |  }  | 
              |     |   +-----+ 
  1922        |     +--- fprintf(fp,"\n");
              |   +-+---+ 
  1923        |   |  }  | 
              |   +-----+ 
  1924        |    
              |  +--------------------------------+ 
  1925        +--+ if(VisualF){ // Visualize = ON | 
              |  +--+-----------------------------+ 
  1926        |     +--- //
  1927        |     |    // ビジュアル化のための結果出力                
  1928        |     |    // Sampledでとびとびの場合は、空白行を入れる。 
  1929        |     |    //                                             
  1930        |     +--- fprintf(fp,"          if (myid .eq. 0) then\n");
  1931        |     +--- fprintf(fp,"            if (iloop .eq. 1) then\n");
  1932        |     +--- fprintf(fp,"              do iloop_vi = 1, F1(iloop_%s)-1\n",LowerCase(TuneGroupName));
  1933        |     +--- fprintf(fp,"                write (13, *)\n");
  1934        |     +--- fprintf(fp,"              enddo\n");
  1935        |     +--- fprintf(fp,"            endif\n");
  1936        |     +--- fprintf(fp,"            write (13, *) t_all\n");
  1937        |     +--- fprintf(fp,"            if (iloop .lt. %d) then\n",CaseArrayCount);
  1938        |     +--- fprintf(fp,"              do iloop_vi = F1(iloop_%s)+1, F1(iloop_%s+1)-1\n",
  1939        |     |                                    LowerCase(TuneGroupName),LowerCase(TuneGroupName));  
  1940        |     +--- fprintf(fp,"                write (13, *)\n");
  1941        |     +--- fprintf(fp,"              enddo\n");
  1942        |     +--- fprintf(fp,"            else\n");
  1943        |     +--- fprintf(fp,"              do iloop_vi = F1(iloop_%s)+1,%d\n",
  1944        |     |                                    LowerCase(TuneGroupName),CaseCount); 
  1945        |     +--- fprintf(fp,"                write (13, *)\n");
  1946        |     +--- fprintf(fp,"              enddo\n");
  1947        |     +--- fprintf(fp,"            endif\n");
  1948        |     +--- fprintf(fp,"          endif\n");
              |   +-+---+ 
  1949        |   |  }  | 
              |   +-----+ 
              |  +--------------------+ 
  1950        +--+ if(MainF->DebugF){ | 
              |  +--+-----------------+ 
  1951        |     +--- fprintf(fp,"          if (ABCLib_DEBUG .ge. 1)then\n");
  1952        |     +--- fprintf(fp,"            if (myid .eq. 0) then\n");
  1953        |     +--- fprintf(fp,"              print *, \"N=\",iloop_n, \"iusw1=\", iusw1, t_all\n");
  1954        |     +--- fprintf(fp,"            endif\n");
  1955        |     +--- fprintf(fp,"          endif\n");
              |   +-+---+ 
  1956        |   |  }  | 
              |   +-+---+ 
              |   +-+-------+ 
  1956        |   |  else{  | 
              |   +-+-------+ 
  1957        |     +--- fprintf(fp,"c          if (ABCLib_DEBUG .ge. 1)then\n");
  1958        |     +--- fprintf(fp,"c            if (myid .eq. 0) then\n");
  1959        |     +--- fprintf(fp,"c              print *, \"N=\",iloop_n, \"iusw1=\", iusw1, t_all\n");
  1960        |     +--- fprintf(fp,"c            endif\n");
  1961        |     +--- fprintf(fp,"c          endif\n");
              |   +-+---+ 
  1962        |   |  }  | 
              |   +-----+ 
  1963        +--- fprintf(fp,"\n");
              |  +--------------------------------------------------------------------------------------+ 
  1964        +--+ if(!MainF->EECntlF){        // -eectrlのフラグ(ON時は、コントロール部分を置き換え)  | 
              |  +--+-----------------------------------------------------------------------------------+ 
  1965        |     +--- fprintf(fp,"          if (iloop_%s .eq. 1) then\n",LowerCase(TuneGroupName));
              |   +-+---+ 
  1966        |   |  }  | 
              |   +-+---+ 
              |   +-+-------+ 
  1966        |   |  else{  | 
              |   +-+-------+ 
  1967        |     +--- fprintf(fp,"          if (iBestSw1 == 0) then\n",LowerCase(TuneGroupName));
              |   +-+---+ 
  1968        |   |  }  | 
              |   +-----+ 
  1969        +--- fprintf(fp,"            dBestTime1 = t_all\n");
              |  +--------------------------------------------------------------------------------------+ 
  1970        +--+ if(!MainF->EECntlF){        // -eectrlのフラグ(ON時は、コントロール部分を置き換え)  | 
              |  +--+-----------------------------------------------------------------------------------+ 
  1971        |     +--- fprintf(fp,"            iBestSw1 = F1(1)\n");
              |   +-+---+ 
  1972        |   |  }  | 
              |   +-+---+ 
              |   +-+-------+ 
  1972        |   |  else{  | 
              |   +-+-------+ 
  1973        |     +--- fprintf(fp,"            iBestSw1 = iusw1\n");
              |   +-+---+ 
  1974        |   |  }  | 
              |   +-----+ 
  1975        +--- fprintf(fp,"          else\n");
  1976        +--- fprintf(fp,"            if (t_all .lt. dBestTime1) then\n");
  1977        +--- fprintf(fp,"              dBestTime1 = t_all\n");
              |  +--------------------------------------------------------------------------------------+ 
  1978        +--+ if(!MainF->EECntlF){        // -eectrlのフラグ(ON時は、コントロール部分を置き換え)  | 
              |  +--+-----------------------------------------------------------------------------------+ 
  1979        |     +--- fprintf(fp,"              iBestSw1 = F1(iloop_%s)\n",LowerCase(TuneGroupName));
              |   +-+---+ 
  1980        |   |  }  | 
              |   +-+---+ 
              |   +-+-------+ 
  1980        |   |  else{  | 
              |   +-+-------+ 
  1981        |     +--- fprintf(fp,"              iBestSw1 = iusw1\n");
  1982        |     |    
              |   +-+---+ 
  1983        |   |  }  | 
              |   +-----+ 
  1984        +--- fprintf(fp,"            endif\n");
  1985        +--- fprintf(fp,"          endif\n");
  1986        +--- fprintf(fp,"\n");
              |  +------------------------+ 
  1987        +--+ if(FittingType != 0){  | 
              |  +--+---------------------+ 
  1988        |     |    
  1989        |     +--- fprintf(fp,"c         !!!!!! fitting用変数設定\n");
  1990        |     +--- fprintf(fp,"          x(iloop_install-1) = dble(F1(iloop_install))\n");
  1991        |     +--- fprintf(fp,"          y(iloop_install-1) = t_all\n");
  1992        |     +--- fprintf(fp,"\n");
  1993        |     +--- fprintf(fp,"c          print *, iloop_install-1,x(iloop_install-1),y(iloop_install-1)\n");
  1994        |     +--- fprintf(fp,"\n");
              |   +-+---+ 
  1995        |   |  }  | 
              |   +-----+ 
  1996        +--- fprintf(fp,"        enddo\n");
              |  +----------------------------------------------------------------------------------+ 
  1997        +--+ if(MainF->EECntlF){     // -eectrlのフラグ(ON時は、コントロール部分を置き換え)  | 
              |  +--+-------------------------------------------------------------------------------+ 
  1998        |     +--- fprintf(fp,"        call ABCLib_Eecntl_Fin\n");
              |   +-+---+ 
  1999        |   |  }  | 
              |   +-----+ 
  2000        +--- fprintf(fp,"\n");
  2001        |    
              |  +--------------------+ 
  2002        +--+ if(MainF->DebugF){ | 
              |  +--+-----------------+ 
  2003        |     +--- fprintf(fp,"        if (ABCLib_DEBUG .ge. 1)then\n");
  2004        |     +--- fprintf(fp,"          if (myid .eq. 0) then\n");
  2005        |     +--- fprintf(fp,"             print *, \"N=\",iloop_n, \"BestSw=\",iBestSW1\n");
  2006        |     +--- fprintf(fp,"          endif\n");
  2007        |     +--- fprintf(fp,"        endif\n");
              |   +-+---+ 
  2008        |   |  }  | 
              |   +-----+ 
              |  +------------------------+ 
  2009        +--+ if(FittingType != 0){  | 
              |  +--+---------------------+ 
  2010        |     +--- fprintf(fp,"c       ------ fitting処理\n");
  2011        |     +--- fprintf(fp,"\n");
  2012        |     +--- fprintf(fp,"c       !!!! 以下のF1(%d) と %d は、sampledの個数と、variedの個数から判断\n"
  2013        |     |                    ,CaseArrayCount,CaseCount);                                              
  2014        |     +--- fprintf(fp,"c           -> sampledの点がvariedの全領域を調べているか判断し、\n");
  2015        |     +--- fprintf(fp,"c              全数判断していれば、最適値を選択\n");
  2016        |     +--- fprintf(fp,"        if (F1(%d) .eq. %d) then\n",CaseArrayCount,CaseCount);
  2017        |     +--- fprintf(fp,"c         !!! sampled 指定子なし\n");
  2018        |     +--- fprintf(fp,"c         === if all parameters are mesured or communication optimization\n");
  2019        |     +--- fprintf(fp,"c                then this selects the mesured parameter.\n");
  2020        |     +--- fprintf(fp,"           if (myid .eq. 0) then\n");
  2021        |     +--- fprintf(fp,"              print *, \"All parameters are mesured. \"\n");
  2022        |     +--- fprintf(fp,"              print *, \"So, I will select the measured pararameter.\"\n");
  2023        |     +--- fprintf(fp,"           endif\n");
  2024        |     +--- fprintf(fp,"\n");
  2025        |     +--- fprintf(fp,"c         !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
  2026        |     +--- fprintf(fp,"c         ! 変更点                         !\n");
  2027        |     +--- fprintf(fp,"c         !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
  2028        |     +--- fprintf(fp,"c         === using LSM\n");
  2029        |     +--- fprintf(fp,"c         === Parameter Estimated routine for fixing dimansion\n");
  2030        |     +--- fprintf(fp,"c                 and add estimated costs for all range of the parameter\n");
  2031        |     +--- fprintf(fp,"          call ABCLibLSM_Est_ParamFxDim(x(0), y(0), n_lsm, m_lsm,\n");
  2032        |     +--- fprintf(fp,"     &           a_lsm(0),  iloop_n, nparm, isamp_indx,\n");
  2033        |     +--- fprintf(fp,"     &           xDim(0,0), yEst(0,0), idummy)\n");
  2034        |     +--- fprintf(fp,"          isamp_indx = isamp_indx + 1\n");
  2035        |     +--- fprintf(fp,"          if (myid .eq. 0) then\n");
  2036        |     +--- fprintf(fp,"             print *, \"Best Parameter: \", iBestSW1\n");
  2037        |     +--- fprintf(fp,"          endif\n");
  2038        |     +--- fprintf(fp,"c         !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
  2039        |     +--- fprintf(fp,"c         ! 変更点の終り                   !\n");
  2040        |     +--- fprintf(fp,"c         !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
  2041        |     +--- fprintf(fp,"\n");
  2042        |     +--- fprintf(fp,"        else\n");
  2043        |     +--- fprintf(fp,"\n");
  2044        |     +--- fprintf(fp,"c         !!! sampled 指定子あり\n");
  2045        |     +--- fprintf(fp,"c         === using LSM\n");
  2046        |     +--- fprintf(fp,"c         === Parameter Estimated routine for fixing dimansion\n");
  2047        |     +--- fprintf(fp,"c                 and add estimated costs for all range of the parameter\n");
  2048        |     +--- fprintf(fp,"          call ABCLibLSM_Est_ParamFxDim(x(0), y(0), n_lsm, m_lsm,\n");
  2049        |     +--- fprintf(fp,"     &           a_lsm(0),  iloop_n, nparm, isamp_indx,\n");
  2050        |     +--- fprintf(fp,"     &           xDim(0,0), yEst(0,0), iBestSW1)\n");
  2051        |     +--- fprintf(fp,"          isamp_indx = isamp_indx + 1\n");
  2052        |     +--- fprintf(fp,"          if (myid .eq. 0) then\n");
  2053        |     +--- fprintf(fp,"             print *, \"Estimated Best Parameter: \", iBestSW1\n");
  2054        |     +--- fprintf(fp,"          endif\n");
  2055        |     +--- fprintf(fp,"        endif\n");
  2056        |     +--- fprintf(fp,"c       -----------------------------------------\n");
  2057        |     +--- fprintf(fp,"\n");
              |   +-+---+ 
  2058        |   |  }  | 
              |   +-----+ 
  2059        |    
  2060        +--- fprintf(fp,"c       --- file write\n");
  2061        +--- fprintf(fp,"        if (myid .eq. 0) then\n");
  2062        +--- fprintf(fp,"          write (11, *) \"  (ABCLib_PROBSIZE \", iloop_n, \" \"\n");
  2063        +--- fprintf(fp,"          write (11, *) \"     (%s_I \", iBestSw1,\")\"\n",Name);
  2064        +--- fprintf(fp,"          write (11, *) \"  )\"\n");
  2065        +--- fprintf(fp,"        endif\n");
  2066        +--- fprintf(fp,"c       -----------------------------------------\n");
              |  +------------------------------+ 
  2067        +--+ if(TuneGroup != tgDynamic){  | 
              |  +--+---------------------------+ 
  2068        |     +--- fprintf(fp,"      enddo\n");
              |   +-+---+ 
  2069        |   |  }  | 
              |   +-----+ 
  2070        +--- fprintf(fp,"\n");
  2071        +--- fprintf(fp,"c     --- file close\n");
  2072        +--- fprintf(fp,"      if (myid .eq. 0) then\n");
  2073        +--- fprintf(fp,"        write (11, *) \")\"\n");
  2074        +--- fprintf(fp,"        close(11, status = 'keep')\n");
  2075        |    
              |  +--------------------------------+ 
  2076        +--+ if(VisualF){ // Visualize = ON | 
              |  +--+-----------------------------+ 
  2077        |     +--- // 0から100(%)までの進行状態の値をセットする。
  2078        |     +--- fprintf(fp,"              ExecState(%d) = 100\n",
  2079        |     |            MainF->TuneRegionList->IndexOf(this)+1);   
  2080        |     +--- // 格納用の ExecState() の現在の値を書き込む。
  2081        |     +--- fprintf(fp,"              open(12, status = 'replace',\n");
  2082        |     +--- fprintf(fp,"     &           file = 'ABCLibATLog.dat',\n");
  2083        |     +--- fprintf(fp,"     &           action = 'write', pad= 'yes')\n");
  2084        |     +--- fprintf(fp,"\n");
  2085        |     +--- fprintf(fp,"              do iloop_v = 1, %d\n",MainF->TuneRegionList->Count);
  2086        |     +--- fprintf(fp,"                write (12, *) ExecState(iloop_v)\n");
  2087        |     +--- fprintf(fp,"              enddo\n");
  2088        |     +--- fprintf(fp,"              close(12, status = 'keep')\n");
  2089        |     |    
  2090        |     +--- //
  2091        |     |    // 結果をClose 
  2092        |     |    //             
  2093        |     +--- fprintf(fp,"              close(13, status = 'keep')\n");
              |   +-+---+ 
  2094        |   |  }  | 
              |   +-----+ 
  2095        |    
  2096        +--- fprintf(fp,"      endif\n");
  2097        +--- fprintf(fp,"c     ---------------------------------------------\n");
  2098        +--- fprintf(fp,"\n");
  2099        |    
  2100        |     
              |  +------------------------+ 
  2101        +--+ if(FittingType != 0){  | 
              |  +--+---------------------+ 
  2102        |     |    
  2103        |     +--- fprintf(fp,"c     !!!!!!!! fitting処理\n");
  2104        |     +--- fprintf(fp,"c     === for LSM to estimate variable dimension\n");
  2105        |     +--- fprintf(fp,"c       === Input xDim, yEst\n");
  2106        |     +--- fprintf(fp,"\n");
  2107        |     +--- fprintf(fp,"c      if (myid. eq. 0) then\n");
  2108        |     +--- fprintf(fp,"c        print *, \"nsamp=\",nsamp, \"/ nparm=\",nparm\n");
  2109        |     +--- fprintf(fp,"c        do i=0, nsamp-1\n");
  2110        |     +--- fprintf(fp,"c          write(6, 1919) (xDim(i,isw),isw=0, nparm-1)\n");
  2111        |     +--- fprintf(fp,"c        enddo\n");
  2112        |     +--- fprintf(fp,"c        print *, ""\n");
  2113        |     +--- fprintf(fp,"c        do i=0, nsamp-1\n");
  2114        |     +--- fprintf(fp,"c          write(6, 1919) (yEst(i,isw),isw=0, nparm-1)\n");
  2115        |     +--- fprintf(fp,"c        enddo\n");
  2116        |     +--- fprintf(fp,"c 1919   format(' ', 20F10.5)\n");
  2117        |     +--- fprintf(fp,"c      endif\n");
  2118        |     +--- fprintf(fp,"\n");
  2119        |     +--- fprintf(fp,"\n");
  2120        |     +--- fprintf(fp,"c       === 全組合せ数がデータの総数となる。\n");
  2121        |     +--- fprintf(fp,"        n_lsm = nparm\n");
  2122        |     +--- fprintf(fp,"\n");
  2123        |     +--- fprintf(fp,"        call ABCLibLSM_lsm_DimEst(xDim(0,0), yEst(0,0),\n");
  2124        |     +--- fprintf(fp,"     &               n_lsm, m_lsm, aa_lsm(0,0), nparm, nsamp)\n");
  2125        |     +--- fprintf(fp,"\n");
  2126        |     +--- fprintf(fp,"\n");
  2127        |     +--- fprintf(fp,"      do isw=1, nparm\n");
  2128        |     +--- fprintf(fp,"        do iii=0, nsamp-1\n");
  2129        |     +--- fprintf(fp,"           xDim(iii, isw-1)=0.0d0\n");
  2130        |     +--- fprintf(fp,"        enddo\n");
  2131        |     +--- fprintf(fp,"      enddo\n");
  2132        |     +--- fprintf(fp,"\n");
  2133        |     +--- fprintf(fp,"      do isw=1, nparm\n");
  2134        |     +--- fprintf(fp,"        do iii=0, nsamp-1\n");
  2135        |     +--- fprintf(fp,"          yEst(iii, isw-1)=0.0d0\n");
  2136        |     +--- fprintf(fp,"        enddo\n");
  2137        |     +--- fprintf(fp,"      enddo\n");
  2138        |     +--- fprintf(fp,"\n");
  2139        |     +--- fprintf(fp,"c     === Output is aa_lsm.\n");
  2140        |     +--- fprintf(fp,"c       ===  Output\n");
  2141        |     +--- fprintf(fp,"      if (myid .eq. 0) then\n");
  2142        |     |    
  2143        |     +--- //      fprintf(fp,"         open(10, status = 'replace', file = 'MyMM_I_LSM.dat',\n");
  2144        |     +--- fprintf(fp,"         open(10, status = 'replace', file = '%s_%c_LSM.dat',\n",Name,TuneGroupName[1]);
  2145        |     +--- fprintf(fp,"     &       action = 'write', pad= 'yes')\n");
  2146        |     +--- fprintf(fp,"      endif\n");
  2147        |     +--- fprintf(fp,"      do isw=1, nparm\n");
  2148        |     +--- fprintf(fp,"         write (10, 1001) dble(isw),\n");
  2149        |     +--- fprintf(fp,"     &       (aa_lsm(iii, isw-1), iii=0, m_lsm)\n");
  2150        |     +--- fprintf(fp," 1001    format(D20.10, 20D20.10)\n");
  2151        |     +--- fprintf(fp,"      enddo\n");
  2152        |     +--- fprintf(fp,"      close(10, status = 'keep')\n");
  2153        |     +--- fprintf(fp,"\n");
  2154        |     +--- fprintf(fp,"      if (myid .eq. 0) then\n");
  2155        |     +--- fprintf(fp,"        print *, \"Output Parameters ==============================\"\n");
  2156        |     +--- fprintf(fp,"        do isw=1, nparm\n");
  2157        |     +--- fprintf(fp,"          print *, \"Parameter No.: \", isw\n");
  2158        |     +--- fprintf(fp,"          print *, \"Sample Points: \", n_lsm, \" / Formula Order: \", m_lsm\n");
  2159        |     +--- fprintf(fp,"          print *, \"Calculated Coefficients: \"\n");
  2160        |     +--- fprintf(fp,"          do iii=0, m_lsm\n");
  2161        |     +--- fprintf(fp,"            print *, aa_lsm(iii, isw-1), \" * x^\", m_lsm-iii\n");
  2162        |     +--- fprintf(fp,"          enddo\n");
  2163        |     +--- fprintf(fp,"        enddo\n");
  2164        |     +--- fprintf(fp,"c       === End of Output\n");
  2165        |     +--- fprintf(fp,"      endif\n");
  2166        |     +--- fprintf(fp,"c     !!!!!!!! fitting処理の終り\n");
  2167        |     +--- fprintf(fp,"c     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
  2168        |     +--- fprintf(fp,"\n");
  2169        |     |    
              |   +-+---+ 
  2170        |   |  }  | 
              |   +-----+ 
  2171        |    
  2172        +--- fprintf(fp,"      return\n");
  2173        +--- fprintf(fp,"      end\n");
  2174        |    
  2175        +--- fprintf(fp,"c     ==== End of %s Optimization Routines\n",TuneGroupName);
  2176        +--- fprintf(fp,"c     ==============================================================\n");
  2177        +--- fprintf(fp,"\n");
  2178        +--- fprintf(fp,"\n");
            +-+---+ 
  2179      |  }  | 
            +-----+