abc プロジェクト
14.3.4. MakeControlCode メンバ関数説明

メンバ関数名 MakeControlCode
定義ファイル名pass5.cpp
定義行 211
所属名 TPass5
アクセス属性 private
宣言形式 void MakeControlCode ( )
概要 ABCLib/ABCLib_ControlRoutines.f を作成する。
戻り値
パラメタ説明
機能説明
備考

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

呼出し先関数一覧表
名称 定義ファイル名 定義行
1 TMainF::err main.cpp 271
2 TTuneRegion::OutputAutoExecCode TuneRegion.cpp 1328
3 TTuneRegion::OutputSetParamCode TuneRegion.cpp 1131
4 c_str

5 ExtractFileDir

6 fclose

7 fgets

8 fopen

9 fprintf

10 Length

11 SubString

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

参照メンバ変数一覧表
名称 定義ファイル名 定義行
1 TPass5::FittingF pass5.h 44
2 TPass5::fpOutControl pass5.h 42
3 TPass5::TuneRegionList pass5.h 36

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

関数論理チャート

        |  +--------------------------------+ 
   211  +--+ void TPass5::MakeControlCode() | 
   212     | {                              | 
           +--+-----------------------------+ 
   213        +--- FILE *fp = fpOutControl;
   214        +--- AnsiString s,s1,s2,s3;
   215        +--- int i;
   216        +--- TValData *ValData;
   217        +--- int DefPosS,j;
   218        +--- TToken *Token;
   219        +--- TTuneRegion *TuneRegion;
   220        +--- int TempLineNo;
   221        +--- int len;
   222        |    
   223        +--- //
   224        |    // ==== ABCLib_ATset(Type,Routines)  
   225        |    //                                   
   226        |                                         
   227        +--- s = s1 = s2 = s3 = "";
              |  +------------------------------------------------+ 
   228        +--+ for(i = 0 ; i < TuneRegionList->Count ; i++){  | 
              |  +--+---------------------------------------------+ 
   229        |     +--- TuneRegion = (TTuneRegion *)TuneRegionList->Items[i];
              |     |  +--------------+ 
   230        |     +--+ if(s != ""){ | 
              |     |  +--+-----------+ 
   230        |     |     +--- s += ",";
              |     |   +-+---+ 
   230        |     |   |  }  | 
              |     |   +-----+ 
   231        |     +--- s += TuneRegion->Name;
              |     |  +------------------------------------------+ 
   232        |     +--+ if(TuneRegion->TuneGroup == tgInstall){  | 
              |     |  +--+---------------------------------------+ 
              |     |     |  +----------------+ 
   233        |     |     +--+ if(s1 != ""){  | 
              |     |     |  +--+-------------+ 
   233        |     |     |     +--- s1 += ",";
              |     |     |   +-+---+ 
   233        |     |     |   |  }  | 
              |     |     |   +-----+ 
   234        |     |     +--- s1 += TuneRegion->Name;
              |     |   +-+---+ 
   235        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+---------------------------------------------+ 
   235        |     |   |  else if(TuneRegion->TuneGroup == tgStatic){  | 
              |     |   +-+---------------------------------------------+ 
              |     |     |  +----------------+ 
   236        |     |     +--+ if(s2 != ""){  | 
              |     |     |  +--+-------------+ 
   236        |     |     |     +--- s2 += ",";
              |     |     |   +-+---+ 
   236        |     |     |   |  }  | 
              |     |     |   +-----+ 
   237        |     |     +--- s2 += TuneRegion->Name;
              |     |   +-+---+ 
   238        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+---------------------------------------------+ 
   238        |     |   |  else if(TuneRegion->TuneGroup == tgDynamic){ | 
              |     |   +-+---------------------------------------------+ 
              |     |     |  +----------------+ 
   239        |     |     +--+ if(s3 != ""){  | 
              |     |     |  +--+-------------+ 
   239        |     |     |     +--- s3 += ",";
              |     |     |   +-+---+ 
   239        |     |     |   |  }  | 
              |     |     |   +-----+ 
   240        |     |     +--- s3 += TuneRegion->Name;
              |     |   +-+---+ 
   241        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   242        |   |  }  | 
              |   +-----+ 
   243        |    
   244        +--- fprintf(fp,"c     === ABCLib_ATset\n");
   245        +--- fprintf(fp,"c     ============================================================\n");
   246        +--- fprintf(fp,"      subroutine ABCLib_ATset(ABCLib_TYPE, ABCLib_Routines)\n");
   247        +--- fprintf(fp,"      integer   ABCLib_TYPE\n");
   248        +--- //      fprintf(fp,"      character*10000 ABCLib_Routines\n");
   249        +--- fprintf(fp,"      character*%d ABCLib_Routines\n",MainF->CharMaxLen);
   250        +--- fprintf(fp,"\n");
   251        +--- fprintf(fp,"      include 'ABCLibScript.h'\n");
   252        +--- fprintf(fp,"\n");
   253        +--- fprintf(fp,"c     ==== All routines\n");
   254        +--- fprintf(fp,"      if (ABCLib_TYPE .eq. 0) then\n");
   255        +--- // 長い文字列は、分解して設定する。
              |  +--------------+ 
   256        +--+ if(s == ""){ | 
              |  +--+-----------+ 
   257        |     +--- fprintf(fp,"        ABCLib_Routines(1:%d) = '%s'\n",s.Length(),s.c_str());
              |   +-+---+ 
   258        |   |  }  | 
              |   +-+---+ 
              |   +-+-------+ 
   258        |   |  else{  | 
              |   +-+-------+ 
              |     |  +----------------------------------------+ 
   259        |     +--+ for(i = 1 ; i <= s.Length() ; i+= 35){ | 
              |     |  +--+-------------------------------------+ 
   260        |     |     +--- len = s.Length() - i + 1;
              |     |     |  +----------------+ 
   261        |     |     +--+ if(len > 35){  | 
              |     |     |  +--+-------------+ 
   262        |     |     |     +--- len = 35;
              |     |     |   +-+---+ 
   263        |     |     |   |  }  | 
              |     |     |   +-----+ 
   264        |     |     +--- fprintf(fp,"        ABCLib_Routines(%d:%d) = '%s'\n",i,i+len-1,s.SubString(i,len).c_str());
              |     |   +-+---+ 
   265        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   266        |   |  }  | 
              |   +-----+ 
   267        +--- fprintf(fp,"      endif\n");
   268        +--- fprintf(fp,"\n");
   269        +--- fprintf(fp,"c     ==== Install Optimization\n");
   270        +--- fprintf(fp,"      if (ABCLib_TYPE .eq. 1) then\n");
   271        +--- // 長い文字列は、分解して設定する。
   272        +--- s = s1;
              |  +--------------+ 
   273        +--+ if(s == ""){ | 
              |  +--+-----------+ 
   274        |     +--- fprintf(fp,"         ABCLib_Routines(1:%d) = '%s'\n",s1.Length(),s1.c_str());
              |   +-+---+ 
   275        |   |  }  | 
              |   +-+---+ 
              |   +-+-------+ 
   275        |   |  else{  | 
              |   +-+-------+ 
              |     |  +----------------------------------------+ 
   276        |     +--+ for(i = 1 ; i <= s.Length() ; i+= 35){ | 
              |     |  +--+-------------------------------------+ 
   277        |     |     +--- len = s.Length() - i + 1;
              |     |     |  +----------------+ 
   278        |     |     +--+ if(len > 35){  | 
              |     |     |  +--+-------------+ 
   279        |     |     |     +--- len = 35;
              |     |     |   +-+---+ 
   280        |     |     |   |  }  | 
              |     |     |   +-----+ 
   281        |     |     +--- fprintf(fp,"         ABCLib_Routines(%d:%d) = '%s'\n",i,i+len-1,s.SubString(i,len).c_str());
              |     |   +-+---+ 
   282        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   283        |   |  }  | 
              |   +-----+ 
   284        +--- fprintf(fp,"      endif\n");
   285        +--- fprintf(fp,"\n");
   286        +--- fprintf(fp,"c     ==== Before Execution-invocation Optimization Routines\n");
   287        +--- fprintf(fp,"      if (ABCLib_TYPE .eq. 2) then\n");
   288        +--- // 長い文字列は、分解して設定する。
   289        +--- s = s2;
              |  +--------------+ 
   290        +--+ if(s == ""){ | 
              |  +--+-----------+ 
   291        |     +--- fprintf(fp,"        ABCLib_Routines(1:%d) = '%s'\n",s2.Length(),s2.c_str());
              |   +-+---+ 
   292        |   |  }  | 
              |   +-+---+ 
              |   +-+-------+ 
   292        |   |  else{  | 
              |   +-+-------+ 
              |     |  +----------------------------------------+ 
   293        |     +--+ for(i = 1 ; i <= s.Length() ; i+= 35){ | 
              |     |  +--+-------------------------------------+ 
   294        |     |     +--- len = s.Length() - i + 1;
              |     |     |  +----------------+ 
   295        |     |     +--+ if(len > 35){  | 
              |     |     |  +--+-------------+ 
   296        |     |     |     +--- len = 35;
              |     |     |   +-+---+ 
   297        |     |     |   |  }  | 
              |     |     |   +-----+ 
   298        |     |     +--- fprintf(fp,"        ABCLib_Routines(%d:%d) = '%s'\n",i,i+len-1,s.SubString(i,len).c_str());
              |     |   +-+---+ 
   299        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   300        |   |  }  | 
              |   +-----+ 
   301        +--- fprintf(fp,"      endif\n");
   302        +--- fprintf(fp,"\n");
   303        +--- fprintf(fp,"c     ==== Run-time Optimization Routines\n");
   304        +--- fprintf(fp,"      if (ABCLib_TYPE .eq. 3) then\n");
   305        |    
   306        +--- fprintf(fp,"        ABCLib_DYNAMICTUNE = .false.\n");
   307        +--- // 長い文字列は、分解して設定する。
   308        +--- s = s3;
              |  +--------------+ 
   309        +--+ if(s == ""){ | 
              |  +--+-----------+ 
   310        |     +--- fprintf(fp,"        ABCLib_Routines(1:%d) = '%s'\n",s3.Length(),s3.c_str());
              |   +-+---+ 
   311        |   |  }  | 
              |   +-+---+ 
              |   +-+-------+ 
   311        |   |  else{  | 
              |   +-+-------+ 
              |     |  +----------------------------------------+ 
   312        |     +--+ for(i = 1 ; i <= s.Length() ; i+= 35){ | 
              |     |  +--+-------------------------------------+ 
   313        |     |     +--- len = s.Length() - i + 1;
              |     |     |  +----------------+ 
   314        |     |     +--+ if(len > 35){  | 
              |     |     |  +--+-------------+ 
   315        |     |     |     +--- len = 35;
              |     |     |   +-+---+ 
   316        |     |     |   |  }  | 
              |     |     |   +-----+ 
   317        |     |     +--- fprintf(fp,"        ABCLib_Routines(%d:%d) = '%s'\n",i,i+len-1,s.SubString(i,len).c_str());
              |     |   +-+---+ 
   318        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   319        |   |  }  | 
              |   +-----+ 
   320        +--- fprintf(fp,"      endif\n");
   321        +--- fprintf(fp,"\n");
   322        +--- fprintf(fp,"      return\n");
   323        +--- fprintf(fp,"      end\n");
   324        +--- fprintf(fp,"c     ============================================================\n");
   325        +--- fprintf(fp,"\n");
   326        +--- fprintf(fp,"\n");
   327        |    
   328        +--- //
   329        |    //  ABCLib_SetParam(Type,Routine,n,isw)                          
   330        |    //  isw パラメータを所得する。 複数のTR(名前で識別)に対応する。  
   331        |    //                                                               
   332        |                                                                     
   333        +--- fprintf(fp,"c     === ABCLib_SetParm\n");
   334        +--- fprintf(fp,"c     ============================================================\n");
   335        +--- fprintf(fp,"      subroutine ABCLib_SetParm(ABCLib_TYPE, ABCLib_Routine, n, isw)\n");
   336        +--- fprintf(fp,"      integer ABCLib_TYPE\n");
   337        +--- //      fprintf(fp,"      character*10000 ABCLib_Routine\n");
   338        +--- fprintf(fp,"      character*%d ABCLib_Routine\n",MainF->CharMaxLen);
   339        +--- fprintf(fp,"      integer n,isw\n");
   340        +--- fprintf(fp,"\n");
   341        +--- fprintf(fp,"      include 'ABCLibScript.h'\n");
   342        +--- fprintf(fp,"\n");
   343        |    
              |  +----------------------------------+ 
   344        +--+ if(FittingF){   // Fitting用配列 | 
              |  +--+-------------------------------+ 
   345        |     +--- fprintf(fp,"c     !!!!!! fitting用配列\n");
   346        |     +--- fprintf(fp,"c     === for target coefficients\n");
   347        |     +--- fprintf(fp,"      real*8  a_lsm(0:ABCLibLSM_MAX_M, 0:ABCLibLSM_MAX_NPARM-1)\n");
   348        |     +--- fprintf(fp,"      real*8  dtemp\n");
   349        |     +--- fprintf(fp,"\n");
   350        |     +--- fprintf(fp,"      integer nparm, nsamp\n");
              |   +-+---+ 
   351        |   |  }  | 
              |   +-----+ 
   352        +--- fprintf(fp,"\n");
   353        +--- fprintf(fp,"      integer ibsw\n");
   354        +--- fprintf(fp,"\n");
   355        +--- fprintf(fp,"      character*100 cbuf\n");
   356        +--- fprintf(fp,"      character*20 digit\n");
   357        +--- fprintf(fp,"\n");
   358        |    
   359        +--- TempLineNo = 100;
   360        +--- fprintf(fp,"c     ==== Install Optimization\n");
   361        +--- fprintf(fp,"      if (ABCLib_TYPE .eq. 1) then\n");
   362        |    
              |  +------------------------------------------------+ 
   363        +--+ for(i = 0 ; i < TuneRegionList->Count ; i++){  | 
              |  +--+---------------------------------------------+ 
   364        |     +--- TuneRegion = (TTuneRegion *)TuneRegionList->Items[i];
              |     |  +------------------------------------------+ 
   365        |     +--+ if(TuneRegion->TuneGroup == tgInstall){  | 
              |     |  +--+---------------------------------------+ 
   366        |     |     +--- TuneRegion->OutputSetParamCode(fp,TempLineNo);
   367        |     |     +--- TempLineNo += 10;
              |     |   +-+---+ 
   368        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   369        |   |  }  | 
              |   +-----+ 
   370        +--- fprintf(fp,"      endif\n");
   371        +--- fprintf(fp,"c     === end of ABCLib_Install\n");
   372        +--- fprintf(fp,"c     -----------------------------------------------\n");
   373        |    
   374        +--- fprintf(fp,"\n");
   375        +--- fprintf(fp,"c     ==== Before Execution-invocation Optimization\n");
   376        +--- fprintf(fp,"      if (ABCLib_TYPE .eq. 2) then\n");
              |  +------------------------------------------------+ 
   377        +--+ for(i = 0 ; i < TuneRegionList->Count ; i++){  | 
              |  +--+---------------------------------------------+ 
   378        |     +--- TuneRegion = (TTuneRegion *)TuneRegionList->Items[i];
              |     |  +----------------------------------------+ 
   379        |     +--+ if(TuneRegion->TuneGroup == tgStatic){ | 
              |     |  +--+-------------------------------------+ 
   380        |     |     +--- TuneRegion->OutputSetParamCode(fp,TempLineNo);
   381        |     |     +--- TempLineNo += 10;
              |     |   +-+---+ 
   382        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   383        |   |  }  | 
              |   +-----+ 
   384        +--- fprintf(fp,"      endif\n");
   385        +--- fprintf(fp,"c     === end of ABCLib_Static\n");
   386        +--- fprintf(fp,"c     -----------------------------------------------\n");
   387        |    
   388        +--- fprintf(fp,"\n");
   389        +--- fprintf(fp,"c     ==== Run-time Optimization\n");
   390        +--- fprintf(fp,"      if (ABCLib_TYPE .eq. 3) then\n");
   391        +--- //
   392        |    //  g95コンパイラでのエラー回避(Operands of comparision oprator are Logical(4)/Logical(4) 
   393        |    //  論理値どうしの比較を行っているエラー回避のため、論理値をifで直接使用に修正した。       
   394        |    //  2007/1/18                                                                              
   395        |    //                                                                                         
   396        |    //  fprintf(fp,"        if (ABCLib_DYNAMICTUNE .eq. .true.) then\n");                      
   397        +--- fprintf(fp,"        if (ABCLib_DYNAMICTUNE) then\n");
              |  +------------------------------------------------+ 
   398        +--+ for(i = 0 ; i < TuneRegionList->Count ; i++){  | 
              |  +--+---------------------------------------------+ 
   399        |     +--- TuneRegion = (TTuneRegion *)TuneRegionList->Items[i];
              |     |  +------------------------------------------+ 
   400        |     +--+ if(TuneRegion->TuneGroup == tgDynamic){  | 
              |     |  +--+---------------------------------------+ 
   401        |     |     +--- // Dynamicは、SetParamで、ファイルから読込みしない。
   402        |     |     +--- fprintf(fp,"          call ABCLib_ATexecDynamic%s(ABCLib_Routines,n,isw)\n",TuneRegion->Name);
              |     |   +-+---+ 
   403        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   404        |   |  }  | 
              |   +-----+ 
   405        +--- fprintf(fp,"        else\n");
   406        +--- fprintf(fp,"          isw = 1\n");
   407        +--- fprintf(fp,"        endif\n");
   408        +--- fprintf(fp,"      endif\n");
   409        +--- fprintf(fp,"c     === end of ABCLib_Dynamic\n");
   410        +--- fprintf(fp,"c     -----------------------------------------------\n");
   411        +--- fprintf(fp,"\n");
   412        +--- fprintf(fp,"      return\n");
   413        +--- fprintf(fp,"      end\n");
   414        +--- fprintf(fp,"\n");
   415        +--- fprintf(fp,"\n");
   416        |    
   417        +--- //
   418        |    // 文字列操作のサブルーチン  
   419        |    //                           
   420        +--- fprintf(fp,"      subroutine ABCLibCharToNum(coption, inum)\n");
   421        +--- fprintf(fp,"      character*20 coption\n");
   422        +--- fprintf(fp,"      integer inum\n");
   423        +--- fprintf(fp,"\n");
   424        +--- fprintf(fp,"      integer j\n");
   425        +--- fprintf(fp,"      integer idec\n");
   426        +--- fprintf(fp,"      character ctemp\n");
   427        +--- fprintf(fp,"\n");
   428        +--- fprintf(fp,"      inum = 0\n");
   429        +--- fprintf(fp,"      j = 1\n");
   430        +--- fprintf(fp,"      do while(coption(j:j) .ne. ' ')\n");
   431        +--- fprintf(fp,"         ctemp = coption(j:j)\n");
   432        +--- fprintf(fp,"         if (ctemp .eq. ' ') goto 100\n");
   433        +--- fprintf(fp,"         if (ctemp .eq. '0') idec = 0\n");
   434        +--- fprintf(fp,"         if (ctemp .eq. '1') idec = 1\n");
   435        +--- fprintf(fp,"         if (ctemp .eq. '2') idec = 2\n");
   436        +--- fprintf(fp,"         if (ctemp .eq. '3') idec = 3\n");
   437        +--- fprintf(fp,"         if (ctemp .eq. '4') idec = 4\n");
   438        +--- fprintf(fp,"         if (ctemp .eq. '5') idec = 5\n");
   439        +--- fprintf(fp,"         if (ctemp .eq. '6') idec = 6\n");
   440        +--- fprintf(fp,"         if (ctemp .eq. '7') idec = 7\n");
   441        +--- fprintf(fp,"         if (ctemp .eq. '8') idec = 8\n");
   442        +--- fprintf(fp,"         if (ctemp .eq. '9') idec = 9\n");
   443        +--- fprintf(fp,"         inum = inum*10 + idec\n");
   444        +--- fprintf(fp,"         j = j + 1\n");
   445        +--- fprintf(fp,"       enddo\n");
   446        +--- fprintf(fp," 100   continue\n");
   447        +--- fprintf(fp,"\n");
   448        +--- fprintf(fp,"      return\n");
   449        +--- fprintf(fp,"      end\n");
   450        +--- fprintf(fp,"\n");
   451        +--- fprintf(fp,"c     ============================================================\n");
   452        +--- fprintf(fp,"\n");
   453        +--- fprintf(fp,"\n");
   454        |    
   455        |     
   456        +--- //
   457        |    // ABCLib_ATexec(Type,Routines)  
   458        |    //                               
   459        |    //                               
   460        +--- fprintf(fp,"c     === ABCLib_ATexec\n");
   461        +--- fprintf(fp,"c     ============================================================\n");
   462        +--- fprintf(fp,"      subroutine ABCLib_ATexec(ABCLib_TYPE, ABCLib_Routines)\n");
   463        +--- fprintf(fp,"      integer   ABCLib_TYPE\n");
   464        +--- //      fprintf(fp,"      character*10000 ABCLib_Routines\n");
   465        +--- fprintf(fp,"      character*%d ABCLib_Routines\n",MainF->CharMaxLen);
   466        +--- fprintf(fp,"\n");
   467        +--- fprintf(fp,"      include 'ABCLibScript.h'\n");
   468        +--- fprintf(fp,"\n");
   469        +--- fprintf(fp,"c     ==== Install Optimization\n");
   470        +--- fprintf(fp,"      if (ABCLib_TYPE .eq. 1) then\n");
   471        +--- //  fprintf(fp,"        call ABCLib_ATexecInstall(ABCLib_Routines)\n");
   472        |    //    for(i = TuneRegionList->Count-1 ; i >= 0 ; i--){                   
              |  +------------------------------------------------+ 
   473        +--+ for(i = 0 ; i < TuneRegionList->Count ; i++){  | 
              |  +--+---------------------------------------------+ 
   474        |     +--- TuneRegion = (TTuneRegion *)TuneRegionList->Items[i];
              |     |  +------------------------------------------+ 
   475        |     +--+ if(TuneRegion->TuneGroup == tgInstall){  | 
              |     |  +--+---------------------------------------+ 
   476        |     |     +--- fprintf(fp,"        if (index(ABCLib_Routines,'%s') .ne. 0) then\n",TuneRegion->Name);
   477        |     |     +--- fprintf(fp,"          call ABCLib_ATexecInstall%s(ABCLib_Routines)\n",TuneRegion->Name);
   478        |     |     +--- fprintf(fp,"        endif\n");
              |     |   +-+---+ 
   479        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   480        |   |  }  | 
              |   +-----+ 
   481        +--- fprintf(fp,"      endif\n");
   482        +--- fprintf(fp,"\n");
   483        +--- fprintf(fp,"c     ==== Before Execution-invocation Optimization\n");
   484        +--- fprintf(fp,"      if (ABCLib_TYPE .eq. 2) then\n");
   485        +--- //      fprintf(fp,"        call ABCLib_ATexecStatic(ABCLib_Routines)\n");
   486        |    //    for(i = TuneRegionList->Count-1 ; i >= 0 ; i--){                     
              |  +------------------------------------------------+ 
   487        +--+ for(i = 0 ; i < TuneRegionList->Count ; i++){  | 
              |  +--+---------------------------------------------+ 
   488        |     +--- TuneRegion = (TTuneRegion *)TuneRegionList->Items[i];
              |     |  +----------------------------------------+ 
   489        |     +--+ if(TuneRegion->TuneGroup == tgStatic){ | 
              |     |  +--+-------------------------------------+ 
   490        |     |     +--- fprintf(fp,"        if (index(ABCLib_Routines,'%s') .ne. 0) then\n",TuneRegion->Name);
   491        |     |     +--- fprintf(fp,"          call ABCLib_ATexecStatic%s(ABCLib_Routines)\n",TuneRegion->Name);
   492        |     |     +--- fprintf(fp,"        endif\n");
              |     |   +-+---+ 
   493        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   494        |   |  }  | 
              |   +-----+ 
   495        +--- fprintf(fp,"      endif\n");
   496        +--- fprintf(fp,"\n");
   497        +--- fprintf(fp,"c     ==== Run-time Optimization\n");
   498        +--- fprintf(fp,"      if (ABCLib_TYPE .eq. 3) then\n");
   499        +--- //      fprintf(fp,"        call ABCLib_ATexecDynamic(ABCLib_Routines)\n");
   500        |    //    for(i = TuneRegionList->Count-1 ; i >= 0 ; i--){                       
              |  +------------------------------------------------+ 
   501        +--+ for(i = 0 ; i < TuneRegionList->Count ; i++){  | 
              |  +--+---------------------------------------------+ 
   502        |     +--- TuneRegion = (TTuneRegion *)TuneRegionList->Items[i];
              |     |  +------------------------------------------+ 
   503        |     +--+ if(TuneRegion->TuneGroup == tgDynamic){  | 
              |     |  +--+---------------------------------------+ 
   504        |     |     +--- ///         fprintf(fp,"        if (index(ABCLib_Routines,'%s') .ne. 0) then\n",TuneRegion->Name);
   505        |     |     |    //          fprintf(fp,"          call ABCLib_ATexecDynamic%s(ABCLib_Routines)\n",TuneRegion->Name); 
   506        |     |     +--- fprintf(fp,"        ABCLib_DYNAMICTUNE = .true.\n");
   507        |     |     +--- ///         fprintf(fp,"        endif\n");
              |     |   +-+---+ 
   508        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   509        |   |  }  | 
              |   +-----+ 
   510        +--- fprintf(fp,"      endif\n");
   511        +--- fprintf(fp,"\n");
   512        +--- fprintf(fp,"      return\n");
   513        +--- fprintf(fp,"      end\n");
   514        +--- fprintf(fp,"c     ============================================================\n");
   515        +--- fprintf(fp,"\n");
   516        +--- fprintf(fp,"\n");
   517        |    
   518        +--- //
   519        |    // ABCLib_ATexecGGGFFF サブルーチンのコードの生成 (時間計測->ファイル) 
   520        |    //                                                                     
   521        +--- //    for(i = TuneRegionList->Count-1 ; i >= 0 ; i--){
              |  +------------------------------------------------+ 
   522        +--+ for(i = 0 ; i < TuneRegionList->Count ; i++){  | 
              |  +--+---------------------------------------------+ 
   523        |     +--- TuneRegion = (TTuneRegion *)TuneRegionList->Items[i];
   524        |     +--- TuneRegion->OutputAutoExecCode(fp);
              |   +-+---+ 
   525        |   |  }  | 
              |   +-----+ 
              |  +------------------------------------------------+ 
   526        +--+ if(FittingF){   // Fitting用サブルーチンを追加 | 
              |  +--+---------------------------------------------+ 
   527        |     +--- FILE *fpSrc;
   528        |     +--- char cBuff[1024];
   529        |     +--- AnsiString fname;
   530        |     +--- AnsiString DirName;
   531        |     |    
   532        |     +--- fname = MainF->SrcFileName;
   533        |     +--- DirName = ExtractFileDir(Application->ExeName);
   534        |     +--- fname = DirName + "\\abc_Data\\ControlSubrutions.f";
   535        |     +--- fpSrc = fopen(fname.c_str(),"rt");      // 出力ファイル
              |     |  +--------------------+ 
   536        |     +--+ if(fpSrc == NULL){ | 
              |     |  +--+-----------------+ 
   537        |     |     +--- MainF->err("ファイル " + fname + "が開けません。");
              |     |   +-+---+ 
   538        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+-------+ 
   538        |     |   |  else{  | 
              |     |   +-+-------+ 
              |     |     |  +--------------------------------------------------+ 
   539        |     |     +--+ while(fgets(cBuff,sizeof(cBuff),fpSrc) != NULL){ | 
              |     |     |  +--+-----------------------------------------------+ 
   540        |     |     |     +--- fprintf(fp,"%s",cBuff);
              |     |     |   +-+---+ 
   541        |     |     |   |  }  | 
              |     |     |   +-----+ 
   542        |     |     +--- fclose(fpSrc);
              |     |   +-+---+ 
   543        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   544        |   |  }  | 
              |   +-----+ 
   545        +--- //
            +-+---+ 
   546      |  }  | 
            +-----+