abc プロジェクト
21.9. IMPLICIT 関数説明

関数名 IMPLICIT
定義ファイル名pass2.cpp
定義行 1326
宣言形式 void IMPLICIT ( TList * TokenList , int sPos , int ePos )
概要 暗黙の型宣言の変更
暗黙の型宣言の変更に伴って、暗黙の型宣言テーブルの内容を変更する。

IMPLICIT NONE、
IMPLICIT 型指定子(x1,x2-x3,…)
戻り値
パラメタ説明 TokenList トークンリスト
sPos 開始位置
ePos 終了位置
機能説明
備考

呼出し元関数一覧表
名称 定義ファイル名 定義行
1 Pass2_Line pass2.cpp 104

呼出し先関数一覧表
名称 定義ファイル名 定義行
1 AnsiCompareText

2 LowerCase

3 memset

参照外部変数一覧表
名称 定義ファイル名 定義行
1 ImplType pass2.cpp 23

参照先一覧表
名称 種別 定義ファイル名 定義行
1 TToken クラス pass1.h 216

関数論理チャート

        |  +----------------------------------------------------+ 
  1326  +--+ void IMPLICIT(TList *TokenList,int sPos,int ePos)  | 
  1327     | {                                                  | 
           +--+-------------------------------------------------+ 
  1328        +--- TToken *Token;
  1329        +--- int i,j;
  1330        +--- int Nest = 0;
  1331        +--- char c,c2;
  1332        |    
  1333        +--- setmem(ImplType,sizeof(ImplType),dt_Real);
              |  +----------------------------------+ 
  1334        +--+ for(i = sPos; i <= ePos ; i++){  | 
              |  +--+-------------------------------+ 
  1335        |     +--- Token = (TToken *)TokenList->Items[i];
              |     |  +--------------------------------+ 
  1336        |     +--+ if(Token->TokId == tid_Kakko){ | 
              |     |  +--+-----------------------------+ 
  1337        |     |     +--- Nest++;
              |     |   +-+---+ 
  1338        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+-------------------------------------+ 
  1338        |     |   |  else if(Token->TokId == tid_Kokka){  | 
              |     |   +-+-------------------------------------+ 
  1339        |     |     +--- Nest--;
              |     |   +-+---+ 
  1340        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+-----------------------------+ 
  1340        |     |   |  else if(Token->Str == "-"){  | 
              |     |   +-+-----------------------------+ 
  1341        |     |     +--- Nest--;
  1342        |     |     +--- Token = (TToken *)TokenList->Items[++i];
  1343        |     |     +--- c2 = LowerCase(Token->Str)[1];
              |     |     |  +------------------------------+ 
  1344        |     |     +--+ if((c2 < 'a')||(c2 > 'z')){  | 
              |     |     |  +--+---------------------------+ 
  1345        |     |     |     +--- c2 = 'z';
              |     |     |   +-+---+ 
  1346        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |     |  +------------------------------+ 
  1347        |     |     +--+ for(j = c ; j <= c2 ; j++){  | 
              |     |     |  +--+---------------------------+ 
  1348        |     |     |     +--- ImplType[j] = dt_Real;
  1349        |     |     |     +--- ImplType[j+'A'-'a'] = dt_Real;
              |     |     |   +-+---+ 
  1350        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |   +-+---+ 
  1351        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+---------------------------------------------------+ 
  1351        |     |   |  else if(AnsiCompareText(Token->Str,"NONE") == 0){  | 
              |     |   +-+---------------------------------------------------+ 
              |     |     |  +--------+ 
  1352        |     |     +--+ break; | 
              |     |     |  +--------+ 
              |     |   +-+---+ 
  1353        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+-----------------------------+ 
  1353        |     |   |  else if(Token->Str == ","){  | 
              |     |   +-+-----------------------------+ 
  1354        |     |     +--- c = 0;
              |     |   +-+---+ 
  1355        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+-------+ 
  1355        |     |   |  else{  | 
              |     |   +-+-------+ 
  1356        |     |     +--- c = LowerCase(Token->Str)[1];
  1357        |     |     +--- ImplType[c] = dt_Int;
  1358        |     |     +--- ImplType[c+'A'-'a'] = dt_Int;
              |     |   +-+---+ 
  1359        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
  1360        |   |  }  | 
              |   +-----+ 
            +-+---+ 
  1361      |  }  | 
            +-----+