5.4 実行および解析時のメッセージ

ここでは,AITファイル解析時および実行時に表示されるメッセージを示します。これらのメッセージは,アウトプットウィンドウに表示されます。


AITCE-0001

<トークン1>は予期しないものです。<トークン2>は見つかりません。

要因
無効なキーワードまたはシンボル<トークン1>が検出されました。スクリプト解析では,キーワードまたはシンボル<トークン2>を予期しています。
対処
必要に応じて<トークン2>を追加してください。
誤った指定例

DEFINE
{
  const integer OK_END = 0;
  const integer NG_END = -1      // 「;」が指定されていません
  const integer sloop_max = 30;
}

正しい指定例

DEFINE
{
  const integer OK_END = 0;
  const integer NG_END = -1;      // 「;」を追加しました
  const integer sloop_max = 30;
}


AITCE-0002

<トークン>は予期しないものです。

要因
無効なキーワードまたはシンボル<トークン>が検出されました。
対処
予期されないキーワードまたはシンボルを削除してください。
誤った指定例

DEFINE
{
  integer OK_END = 0;
  integer sloop_max = 0;;      // 「;」が二つ指定されています
}

変数「sloop_max」に「;」が二つ指定されています。
正しい指定例

DEFINE
{
  integer OK_END = 0;
  integer sloop_max = 0;      // 「;」を削除しました
}

変数「sloop_max」の「;」を一つ削除しました。

AITCE-0003

関数名を識別子名として使用しています。

要因
関数名は識別子として使用できません。
対処
識別子名を変更してください。
誤った指定例

DEFINE
{
  integer AIT_LogMessage = 10;
}

変数名に関数名が使用されています。
正しい指定例

DEFINE
{
  integer AIT_LogMessageNumber = 10;
}

変数名を「AIT_LogMessageNumber」に変更しました。

AITCE-0005

階層数が255を超えています。

要因
AITファイル内で構造体の階層レベルが最大値の255を超えています。
対処
if,if-else,do-while,whileまたはswitch構造体の階層レベルが最大値の255を超えると,AITファイルの解析ができなくなります。AITファイルを再編集し,構造体の階層レベルのネストを浅くしてください。

AITCE-0006

識別子名が64文字を超えています。

要因
各識別子名に使用できる最大文字数は64です。この最大文字数を超える識別子名がAITファイルに存在します。
対処
識別子名は1~64文字で指定してください。
誤った指定例

DEFINE
{
  integer sloop_max = 0;
  integer sample123456sample123456sample123456sample123456sample123456sample = 0;      // 66文字で変数名が指定されています
}

2番目に定義した変数名が最大文字数を超えています。
正しい指定例

DEFINE
{
  integer sloop_max = 0;
  integer sample123456 = 0;   // 64文字以内で変数名を指定しました
}

2番目に定義した変数名を最大文字数内で指定しました。

AITCE-0007

文字列定数が複数列にわたっています。

要因
最初の行が¥nで終わっているため,文字列定数が2行目に続いています。
対処
文字列定数は1行で指定してください。
誤った指定例

DEFINE
{
  integer sloop_max = 0;
  string SoftwareName = " My
                              Setup";      // 文字列定数が2行目に続いています
}

変数「SoftwareName」の文字列定数が2行目に続いています。
正しい指定例

DEFINE
{
  integer sloop_max = 0;
  string SoftwareName = " My Setup";   // 文字列定数を1行で指定しました
}

変数「SoftwareName」の文字列定数を1行で指定しました。

AITCE-0008

エスケープシーケンスの使用方法が誤っています。

要因
実行時に指定されたAITファイルの文字列定数に,誤ったエスケープシーケンスが含まれています。
対処
文字列定数には,正しいエスケープシーケンスを使用してください。
誤った指定例

DEFINE
{
  integer sloop_max = 0;
  string str1 = "sample'
                 testing";
}

文字列変数「strl」は「'」付きの文字列が代入されていますが,その文字列が複数行にわたって記述されています。
文字列が連続していることを示す文字「_」を「'」の代わりに使用する必要があります。
正しい指定例

DEFINE
{
  integer sloop_max=10;
  string str1 = "sample_
                 testing";
}

「'」を削除してエスケープシーケンスの誤りを修正しました。

AITCE-0009

case内で識別子は使用できません。

要因
case内で識別子を指定しています。
対処
case内では,定数またはマクロだけを使用してください。
誤った指定例

DEFINE
{
  const string FileVersion = "7.1";
  string stMsgText;
}
MAIN
{
  switch (FileVersion)
     case stMsgText:      // caseに識別子が指定されています
        ...
        break;
     default:
        ...
        break;
  endswitch;
}

case内に,識別子「stMsgText」が指定されています。
正しい指定例

DEFINE
{
  const string FileVersion = "7.1";
  string stMsgText;
}
MAIN
{
  switch (FileVersion)
     case "7.1":      // 識別子の代わりに文字列定数を指定しました
        ...
        break;
     default:
        ...
        break;
  endswitch;
}

case内に,識別子「stMsgText」の代わりに文字列定数を指定しました。

AITCE-0010

"+" または "-"の使用方法が誤っています。

要因
AITファイルで,「++」,「--」,「+-」,または「-+」演算子が指定されています。AITファイルの解析では,これらの演算子を解析できません。
対処
「++」,「--」,「+-」,または「-+」演算子をAITファイルから削除してください。
誤った指定例

DEFINE
{
  integer sloop_count = 0;
}
MAIN
{
  if (AIT_FileExists("#setup.exe") == 0)
     ...
     ...
     sloop_count++;      // 誤った演算子「++」が変数の増分に使用されています
  endif;
}

インクリメント演算子とディクリメント演算子は使用できません。
変数「sloop_count」が「++」で増分されているため,エラーメッセージが表示されます。
正しい指定例

DEFINE
{
  integer sloop_count = 0;
}
MAIN
{
  if (AIT_FileExists("#setup.exe") == 0)
     ...
     ...
     sloop_count = sloop_count + 1;      // 「++」を削除しました
  endif;
}

「++」を変数「sloop_count」から削除しました。

AITCE-0011

AITファイルが65535行を超えています。

要因
AITファイル内の最大行数は65,535です。AITファイルがこの最大値を超えると,AITファイルの解析を停止します。
対処
AITファイル内の行数を減らしてください。

AITCE-0012

<識別子> : 定義されていない識別子です。

要因
変数の型を定義しないで変数が指定されています。
対処
DEFINEセクションで変数を定義してください。
誤った指定例

DEFINE
{
  string stMsgText;
}
MAIN
{
  if (AIT_FileExists("#setup.exe") == 0)
     stMsgText = "Setup(Japanese) " + InstallerName + " Not Found";
     AIT_LogMessage(stMsgText);
     sloop_max = 0;      // この変数はDEFINEセクションで定義されていません
  endif;
}

DEFINEセクションで変数「sloop_max」が定義されていないまま,MAINセクションでこの変数が指定されています。
正しい指定例

DEFINE
{
  string  stMsgText;
  integer sloop_max;      // 変数「sloop_max」を定義しました

}
MAIN
{
  if (AIT_FileExists("#setup.exe") == 0)
     stMsgText = "Setup(Japanese) " + InstallerName + " Not Found";
     AIT_LogMessage(stMsgText);
     sloop_max = 0;      // 定義した変数を利用しました
  endif;
}

変数「sloop_max」がDEFINEセクションで定義され,その変数がMAINセクションで指定されました。

AITCE-0013

<識別子> : 再定義されました。

要因
すでに識別子が定義されている場合に,それと同じ識別子が再定義されています。
対処
再定義されている変数を削除してください。
誤った指定例

DEFINE
{
  integer sloop_max = 10;
  string sloop_max = "sample";      // 変数「sloop_max」がstring型として再定義されています。
}

すでにinteger型として定義されている変数「sloop_max」が,string型変数として再定義されています。
正しい指定例

DEFINE
{
  integer sloop_max = 10;
  string stMsgText = "sample";      // 変数名を変更しました
}

変数「sloop_max」の再定義を削除し,異なる変数名を定義しました。

AITCE-0014

パッケージ情報のフィールド <パッケージ項目>のデータ<値>が誤っています。

要因
PACKAGE_INFOセクション内のパッケージ項目のどれかに無効な値が含まれています。
対処
パッケージ情報のフィールドに適した値を指定してください。
誤った指定例

PACKAGE_INFO
{
  PackageID = "#$@#ADOBEACROBATREADER";      // PackageIDに無効な文字#$@#が含まれています
  Product = "Adobe Acrobat Reader 5.05";
  Version = "505";
  InstallerName = "Ar505jpn.exe";
  InstallDrive = "C:";
  InstallDirectory = "'¥Program Files'¥Adobe";
}    

PACKAGE_INFOセクションのPackageIDに,使用できない文字列「#$@」が含まれています。
正しい指定例

PACKAGE_INFO
{
  PackageID = "ACROBAT-READER";   // 使用できない文字 #$@#を削除しました
  Product = "Adobe Acrobat Reader 5.05";
  Version = "505";
  InstallerName = "Ar505jpn.exe";
  InstallDrive = "C:";
  InstallDirectory = "'¥Program Files'¥Adobe";
}

PACKAGE_INFOセクションのPackageIDから,使用できない文字列「#$@」を削除しました。

AITCE-0015

左辺値はconstオブジェクトに指定されています。

要因
constant型として定義された変数にMAINセクションで値が割り当てられています。
対処
constant定義を変更するか,割り当てた左辺を削除してください。
誤った指定例

DEFINE
{
  const float SLEEP_TIME = 2.0;
  integer sloop_count;
}
MAIN
{
  if (AIT_FocusWindow("Setup", "#32770",0.0) > 0)
     AIT_PlayKey("{Enter}");
     AIT_LogMessage("Setup: Enter");
     sloop_count = 0;
     SLEEP_TIME = 3.0;      // 変数「SLEEP_TIME」のconstant値を変更しようとしています
     AIT_Sleep(SLEEP_TIME);
  endif;
}

変数「SLEEP_TIME」は,constant float型として定義されていますが,MAINセクション内で別の値が割り当てられました。
正しい指定例

DEFINE
{
  const float SLEEP_TIME = 3.0;
  integer sloop_cnt;
}

MAIN
{
  if (AIT_FocusWindow("Setup", "#32770",0.0) > 0)
     AIT_PlayKey("{Enter}");
     AIT_LogMessage("Setup : Enter");
     sloop_cnt = 0;
     AIT_Sleep(SLEEP_TIME);
  endif;
}

MAINセクション内で,変数「SLEEP_TIME」のconstant float値への割り当てを削除しました。

AITCE-0018

AITファイルの構文誤りによって,AITファイルの解析が異常終了しました。

要因
文法チェック中に致命的なエラー(文字列の終了処理が正しくない,変数名内の文字数が正しく指定されていない)が発生しています。
対処
エラー個所を修正したあと,AITファイルを再度確認してください。
誤った指定例

DEFINE
{
  string ErrorTxt = "ABC
def";
}

文字列定数は,複数の行にわたって指定できませんが,文字列が複数の行にわたって指定されています。
正しい指定例

DEFINE
{
  string ErrorTxt = "ABC_
def";      // 「_」で文字列が連続していることを示しています。
}

文字列の連続を示す「_」を付けて指定しました。

AITCE-0019

除算の2番目のオペランドは0です。

要因
AITファイルの解析時に除算の2番目のオペランドが0のため,未定義として扱われています。
対処
0以外の値を除数として指定してください。
誤った指定例

DEFINE
{
  integer sloop_count = 0;
  const integer  sloop_max = 30;
}  
MAIN
{
  sloop_count = sloop_max / 0;      // 除数が0であるため,エラーになります
}

0による除算はできませんが,変数「sloop_cnt」を0で除算しています。
正しい指定例

DEFINE
{
  integer sloop_count = 0;
  const integer sloop_max = 30;
}  
MAIN
{
  sloop_count = sloop_max / 1;      // 除数が0以外の値に変更しました
}

0による変数「sloop_max」の除算を削除しました。

AITCE-0020

<データ型1>と<データ型2>は<処理名>と互換性がありません。

要因
演算子の左辺値と右辺値で互換性のないデータ型が指定されています。例えば,string型とinteger型が比較に使用された場合,このメッセージが表示されます。
対処
演算子の左辺値と右辺値の両方で互換性のあるデータ型を指定してください。
誤った指定例

DEFINE
{
  const integer ExeVersion = 7;
  const string FileVersion = "7";
}
MAIN
{
  if (ExeVersion == FileVersion)   // string型とinteger型が比較に使用されています
     ...
     ...
  endif;
}

integer型変数「ExeVersion」とstring型変数「FileVersion」が比較に使用されています。
string型とinteger型には,比較演算のための互換性がありません。
正しい指定例

DEFINE
{
  const integer ExeVersion = 7;
  const integer FileVersion = 7;
}
MAIN
{
  if (ExeVersion == FileVersion)      // 同じ型を比較に使用しました
     ...
     ...
  endif;
}

string型変数「FileVersion」をinteger型変数に変更し,integer型変数との比較に変更しました。

AITCE-0021

オペレーション<演算子名>で<データ型1>の使用方法が誤っています。

要因
演算で不適切なデータ型が指定されています。例えば,float型が剰余(%)演算に使用された場合や,string型が!演算に使用された場合,このメッセージが表示されます。
対処
各演算で使用できるデータ型を指定してください。
誤った指定例

DEFINE
{
  float SLEEP_TIME = 7.1;
}
MAIN
{
  SLEEP_TIME = SLEEP_TIME % 2;      // floatは剰余演算で使用できないため,エラーになります
}

float型は剰余演算に使用できませんが,float型変数「SLEEP_TIME」が剰余演算に使用されています。
正しい指定例

DEFINE
{
  integer SLEEP_TIME = 7;
}
MAIN
{
  SLEEP_TIME = SLEEP_TIME % 2;      // integer型変数を剰余演算に使用しました
}

integer値を剰余演算に使用しました。

AITCE-0022

integer値は'-2147483648'~'2147483647'の範囲で指定してください。

要因
許容範囲外のinteger値が指定されています。
対処
'-2,147,483,648'~'2,147,483,647'でinteger値を指定してください。
誤った指定例

DEFINE
{
  const integer OK_END = 21474836476;      // integer値が最大値を超えています
}

変数「OK_END」に最大値よりも大きいinteger値が指定されています。
正しい指定例

DEFINE
{
  const integer OK_END =214748364;      // integer値の範囲内で指定しました
}

変数「OK_END」にinteger値の範囲内の値を指定しました。

AITCE-0023

float値は'3.402823466e+38'~'1.175494351e-38'の範囲で指定してください。

要因
許容範囲外のfloat値が指定されています。
対処
'3.402823466e+38'~'1.175494351e-38'でfloat値を指定してください。
誤った指定例

DEFINE
{
  const float NG_END = 3.402823466e+40;      // float値が最大値を超えています
}

変数「NG_END」に最大値よりも大きいfloat値が指定されています。
正しい指定例

DEFINE
{
  const float NG_END = 3.402823466e+10;      // float値の範囲内で指定しました
}

変数「NG_END」にfloat値の範囲内の値を指定しました。

AITCE-0024

switch式の求める数値のデータ型が誤っています。

要因
caseラベル値のデータ型がswitchステートメントのcaseのデータ型と一致していません。例えば,switchステートメントがinteger型の場合にcase値にfloat値が含まれていると,このメッセージが表示されます。
対処
switchステートメントとcaseラベル値で一致するデータ型を指定してください。
誤った指定例

DEFINE
{
  const string FileVersion = "7.1";
  integer sloop_max = 0;
}
MAIN
{
  switch (FileVersion)   // switchステートメントはstring型です
      case 7.1:      // caseにinteger値が指定されています
        ...
        ...
        break;
     default:
        ...
        ...
        break;
  endswitch;
}

switchステートメントのデータ型はstring型ですが,case値はinteger型になっています。
正しい指定例

DEFINE
{
  const string FileVersion = "7.1";
  integer sloop_max = 0;
}
MAIN
{
  switch (FileVersion)
     case "7.1":    // caseラベルにstring値を指定しました
        ...
        ...
        break;
     default:
        ...
        ...
        break;
  endswitch;
}

case値にstring型を指定し,switch文のデータ型と一致するよう変更しました。

AITCE-0025

コメントで予期しないEOFが検出されました。

要因
「/*」で開始されたコメントがファイルの終わりまでに「*/」で終了されていません。
対処
ファイルの終わりまでに,コメントを閉じる「*/」を指定してください。
誤った指定例

DEFINE
{
  /* AITファイルで使用するデータ型   // コメントが閉じられていません
  const integer NG_END = -1
  const integer sloop_max = 30;
}

コメントはすべて閉じる必要があります。この例では,「/*」でコメントが開始されていますが,「*/」で終了されていません。
正しい指定例

DEFINE
{
  /* AITファイルで使用するデータ型 */   // コメントが終了されています
  const integer NG_END = -1;
  const integer sloop_max = 30;
}

コメントが「*/」で終了されました。

AITCE-0026

<文字コード(16進数)>は不正な文字です。

要因
AIT言語仕様で規定されていない文字が存在します。文字コードが16進数で表示されます。
対処
AIT言語仕様に記載されている有効な文字だけを指定してください。
誤った指定例

DEFINE
{
  const integer OK_END = 0;
  const integer NG_END = -1;
  const integer sloop_max = #30;      // 無効な文字「#」があります
}

「#$@」といった無効な文字は,文字列定数内で使用できませんが,「#」が変数「sloop_max」に含まれています。
正しい指定例

DEFINE
{
  const integer OK_END =0;
  const integer NG_END = -1;
  const integer sloop_max = 30;    // 無効な文字「#」を削除しました
}

「#」を変数「sloop_max」から削除しました。

AITCE-0027

式の中ではvoid型を使用できません。有効な型を使用してください。

要因
voidを返す関数が式で使用されています。
対処
voidを返す関数は式で使用しないでください。

AITCE-0029

caseの値<caseラベル値>はすでに使われています。

要因
switchステートメントで同じcase値が複数回使用されています。
対処
固有のcaseラベル値を指定してください。
誤った指定例

DEFINE
{
  const string FileVersion = "7.1";
  string stMsgText;
}  
MAIN
{
  switch(FileVersion )
     case "7.1":
        ...
        ...
        break;
     case "7.1":      // case値"7.1"はすでに使用されています
        ...
        ...
        break;
     default:
        ...
        ...
        break;
  endswitch;
}

switchステートメント内で固有のcaseラベル値を指定する必要があります。
ここで,2番目のcaseラベル値"7.1"は最初のcaseラベル値と同じです。
正しい指定例

DEFINE
{
  const string FileVersion = "7.1";
  string stMsgText;
}
MAIN
{
  switch(FileVersion )
     case "7.1":      // 重複するcase値"7.1"を削除しました
        ...
        ...
        break;
     default:
        ...
        ...
        break;
  endswitch;
}

2番目のcaseラベル値を削除しました。

AITCE-0030

<関数名> : 関数名が誤っています。

要因
無効な関数名(使用できるAPI一覧にない関数名)が指定されています。
対処
AITファイルで有効な関数名を指定してください。有効な関数(API名)の一覧は,「4.1 API一覧」を参照してください。
誤った指定例

DEFINE
{
  const string ExeVersion = "7.1";
  const string FileVersion = "7.1";
  string stMsgText;
}
MAIN
{
  if (ExeVersion == FileVersion)
     if (AIT_FileExists1("#setup.exe") == 0)      // 「AIT_FileExists1」は使用できるAPIではありません
        stMsgText = "Setup(Japanese) " + InstallerName + " Not Found";
        AIT_LogMessage(stMsgText);
     endif;
  endif;
}

「AIT_FileExists1()」は使用できるAPIではありません。
正しい指定例

DEFINE
{
  const string ExeVersion = "7.1";
  const string FileVersion = "7.1";
  string stMsgText;
}  
MAIN
{
  if (ExeVersion == FileVersion)
     if (AIT_FileExists("setup.exe") == 0)      // 使用できるAPIを指定しました
        stMsgText = "Setup(Japanese) " + InstallerName + " Not Found";
        AIT_LogMessage(stMsgText);
     endif;
  endif;
}

使用できるAPIとして「AIT_FileExists()」を指定しました。

AITCE-0031

<関数名> : 引数<指定されている引数の数>を取得できません。

要因
引数の数に誤りのある関数が含まれています。
関数にはそれぞれ独自の引数のセットがあります。関数に対して指定された引数の数が,実際に呼び出させる関数の引数の数と一致しないと,このメッセージが呼び出されます。
対処
関数に対して正しい数の引数を指定してください。実際の引数のリストについては,「4.2 APIの詳細」を参照してください。
誤った指定例

DEFINE
{
  const string ExeVersion = "7.1";
  const string FileVersion = "7.1";
  string stMsgText;
}  
MAIN
{
  if (ExeVersion == FileVersion)
     if (AIT_FileExists() == 0)      // 「AIT_FileExists」に引数が指定されていません
        stMsgText = "Setup(Japanese) " + InstallerName + " Not Found";
        AIT_LogMessage(stMsgText);
     endif;
  endif;
}

「AIT_FileExists()」に対しては,一つ以上の引数を指定してください。この例では「AIT_FileExists()」に対して引数が指定されていません。
正しい指定例

DEFINE
{
  const string ExeVersion = "7.1";
  const string FileVersion = "7.1";
  string stMsgText;
}
MAIN
{
  if (ExeVersion == FileVersion)
     if (AIT_FileExists("#setup.exe") == 0)
     // 「AIT_FileExists」に対して引数を指定しました
        stMsgText = "Setup(Japanese) " + InstallerName + " Not Found";
        AIT_LogMessage(stMsgText);
     endif;
  endif;
}

「AIT_FileExists()」に対して引数を指定しました。

AITCE-0032

関数に指定された一つまたは複数の変数のデータ型が誤っています。

要因
引数のデータ型と一致しないデータ型が関数に含まれています。
関数にはそれぞれ独自の引数のセットがあります。関数に対して指定された引数のデータ型が,実際に呼び出させる関数の引数のデータ型と一致しないと,このメッセージが呼び出されます。
対処
関数の引数で正しいデータ型を指定してください。実際の引数のリストについては,「4.2 APIの詳細」を参照してください。
誤った指定例

DEFINE
{
  const string ExeVersion = "7.1";
  const string FileVersion = "7.1";
  string stMsgText;
}
MAIN
{
  if (ExeVersion == FileVersion )
     if (AIT_FileExists("#setup.exe") == 0)
        stMsgText = "Setup(Japanese) " + InstallerName + " Not Found";
        AIT_LogMessage(stMsgText);
        AIT_Sleep(3);      // integer値が「AIT_Sleep」に指定されています
     endif;
  endif;
}

「AIT_Sleep()」には,float型の引数だけが指定できますが,integer値が引数として指定されています。
正しい指定例

DEFINE
{
  const string ExeVersion = "7.1";
  const string  FileVersion = "7.1";
  string stMsgText;
}
MAIN
{
  if (ExeVersion == Version)
     if (AIT_FileExists("#setup.exe") == 0)
        stMsgText = "Setup(Japanese) " + InstallerName + " Not Found";
        AIT_LogMessage(stMsgText);
        AIT_Sleep(3.1);      // integer値をfloat値に変更しました
     endif;
  endif;
}

「AIT_Sleep()」の引数をintegerからfloatに変更しました。

AITCE-0034

<ラベル名> : 定義されていないラベルです。

要因
ラベルを定義しないでgotoステートメントが使用されています。
AITファイルでは,各gotoステートメントに対して関連するラベルを定義する必要があります。
対処
すべてのgotoステートメントに対して関連ラベル名を指定してください。
誤った指定例

DEFINE
{
  integer sloop_max = 0;
}
MAIN
{
  goto ErrorLabel; // ラベル「ErrorLabel」が定義されていません
  sloop_max = 0;
}

gotoステートメントに対して,関連するラベルステートメントを指定する必要があります。
ここでは,goto ErrorLabelしか指定されていません。ラベル「ErrorLabel」はMAINセクションのどこにも定義されていません。
正しい指定例

DEFINE
{
  integer sloop_max = 0;
}
MAIN
{
  goto ErrorLabel;
  sloop_max = 0;
ErrorLabel:      // ラベルを定義しました
}

gotoステートメントに対してラベル「ErrorLabel」を指定しました。

AITCE-0037

gotoのラベル<ラベル名>は別のセクションにあります。

要因
指定されたラベル名とそれに対応するgotoステートメントが別のセクションに存在します。
gotoステートメントとそれに関連するラベルは,同じセクション内にある必要があります。
対処
ラベル名とgotoステートメントは同じセクション内で指定してください。
誤った指定例

DEFINE
{
  string stMsgText;
}
MAIN
{
  goto ErrorLabel;      // gotoステートメントがMAINセクションで定義されています
}
ERROR
{
ErrorLabel:      // ラベルがERRORセクションで定義されています
     stMsgText = "Setup(Japanese) " + InstallerName + " Not Found";
}

ラベルとそのgotoステートメントは,同じセクション内で定義する必要があります。この例では,gotoステートメントがMAINセクション内にあり,ラベル「ErrorLabel」がERRORセクション内にあります。
正しい指定例

DEFINE
{
  string stMsgText;
}
MAIN
{
     goto ErrorLabel;
ErrorLabel:      // ラベルがMAINセクション内で定義されています
     stMsgText = "Setup(Japanese) " + InstallerName + " Not Found";
}

ラベル「ErrorLabel」とそのgotoステートメントをMAINセクション内で定義しました。

AITCE-0038

変数の設定値の型が誤っています。

要因
変数に対して指定された値が変数のデータ型と異なります。例えば,string値がinteger型変数に割り当てられると,このメッセージが呼び出されます。
対処
変数と同じ型の値を指定してください。
誤った指定例

DEFINE
{
  const integer OK_END =0;
  const integer NG_END = -1;
  const integer sloop_max = "30";      // string値がinteger型変数に割り当てられています
}

この例では,文字列定数が整数定数「sloop_max」に割り当てられています。
正しい指定例

DEFINE
{
  const integer OK_END =0;
  const integer NG_END = -1;
  const integer sloop_max = 30;      // string値でなくinteger値を割り当てました
}

文字列定数を削除し,integer値の変数「sloop_max」を割り当てました。

AITCE-0039

breakの使用方法が誤っています。

要因
do-while,while-loop,for-next,またはswitchステートメント以外でbreakステートメントが使用されています。breakステートメントはループ構造体内だけで有効です。
対処
breakステートメントは,do-while,while-loop,for-next,またはswitchステートメント内で使用してください。
誤った指定例

DEFINE
{
  const string ExeVersion = "7.1";
  const string FileVersion = "7.1";
  string stMsgText;
}
MAIN
{
  if (ExeVersion == FileVersion )
     if (AIT_FileExists("#setup.exe") == 0)
        stMsgText = "Setup(Japanese) " + InstallerName + " Not Found";
        AIT_LogMessage(stMsgText);      
        break;      // breakステートメントがifステートメント内にあります
     endif;
  endif;
}

この例では,breakステートメントがif構造体内にあります。
正しい指定例

DEFINE
{
  const string ExeVersion = "7.1";
  const string  FileVersion = "7.1";
  string stMsgText;
}
MAIN
{
  if (ExeVersion == FileVersion)
     if (AIT_FileExists("#setup.exe") == 0)
        stMsgText = "Setup(Japanese) " + InstallerName + " Not Found";
        AIT_LogMessage(stMsgText);
     endif;
  endif;
}

breakステートメントをif構造体から削除しました。

AITCE-0040

continueの使用方法が誤っています。

要因
do-while,while-loop,またはfor-next以外でcontinueステートメントが使用されています。continueステートメントは,ループ構造体内だけで有効です。
対処
continueステートメントは,do-while,while-loop,またはfor-nextステートメント内だけで使用してください。
誤った指定例

DEFINE
{
  const string ExeVersion = "7.1";
  const string FileVersion = "7.1";
  string stMsgText;
}
MAIN
{
  if (ExeVersion == FileVersion)
     if (AIT_FileExists("#setup.exe") == 0)
        stMsgText = "Setup(Japanese) " + InstallerName + " Not Found";
        AIT_LogMessage(stMsgText);
        continue;      // continueステートメントがifステートメント内にあります
     endif;
  endif;
}

この例では,continueがif構造体内にあります。
正しい指定例

DEFINE
{
  const string ExeVersion = "7.1";
  const string  FileVersion = "7.1";
  string stMsgText;
}
MAIN
{
  if (ExeVersion == FileVersion)
     if (AIT_FileExists("#setup.exe") == 0)
        stMsgText = "Setup(Japanese) " + InstallerName + " Not Found";
        AIT_LogMessage(stMsgText);
     endif;
  endif;
}

continueステートメントをif構造体から削除しました。

AITCE-0041

'<ループ構造体>'が255 breakステートメントを超えました。

要因
255より多くのbreakステートメントがループ構造体内にあります。ループ構造体(do-while,while,for-nextまたはswitch構造体)内で使用できるbreakステートメントの最大数は255です。
対処
ループ構造体内で指定するbreakステートメントの数を,最大数以下にしてください。

AITCE-0042

'<ループ構造体>'が255 continueステートメントを超えました。

要因
255より多くのcontinueステートメントがループ構造体内にあります。ループ構造体(do-while,while,for-next)内で使用できるcontinueステートメントの最大数は255です。
対処
ループ構造体内で指定するcontinueステートメントの数を,最大数以下にしてください。

AITCE-0043

switchステートメントのcaseラベル数が255を超えています。

要因
255より多くのcaseラベルがswitchステートメント内にあります。switchステートメント内で使用できるcaseラベルの最大数は255です。
対処
switchステートメント内で指定するcaseラベルの数は,最大数以下にしてください。

AITCE-0044

switchステートメントに一つ以上のdefaultラベルは使用できません。

要因
switchステートメント内で使用できるdefaultステートメントは一つだけです。
対処
switchステートメント内で指定するdefaultステートメントは一つだけにしてください。
誤った指定例

DEFINE
{
  const string FileVersion = "7.1";
  string stMsgText;
}
MAIN
{
  switch(FileVersion )
     case "7.1":
        ...
        ...
        break;
     default:      // 最初のdefaultです
        ...
        ...
        break;
     default:      // defaultが二つ指定されています
        ...
        ...
        break;
  endswitch;
}

各switchステートメントで指定できるdefaultステートメントは一つだけです。この例では,switchステートメントにdefaultステートメントが二つ指定されています。
正しい指定例

DEFINE
{
  const string FileVersion = "7.1";
  string stMsgText;
}
MAIN
{
  switch(FileVersion)
     case "7.1":
        ...
        ...
        break;
     default:      // defaultを一つだけ指定しました
        ...
        ...
        break;
  endswitch;
}

switchステートメントからdefaultステートメントを一つ削除しました。

AITCE-0045

パッケージ情報に必要なフィールド'<フィールド名>'が見つかりません。

要因
PACKAGE_INFOセクションで指定する必要のあるフィールドのうち,どれかが指定されていません。
対処
PACKAGE_INFOセクションで必要なすべてのフィールドを指定してください。
誤った指定例

PACKAGE_INFO
{
  // 指定する必要のあるPackageIDが欠けています
  Product = "Adobe Acrobat Reader 5.05";
  Version = "505";
  InstallerName = "Ar505jpn.exe";
  InstallDrive = "C:";
  InstallDirectory = "'¥Program Files'¥Adobe";
}

指定する必要のあるPackageIDが指定されていません。
正しい指定例

PACKAGE_INFO
{
  PackageID = "ADOBEACROBATREADER";   // 指定する必要のあるパッケージ項目を指定しました
  Product = "Adobe Acrobat Reader 5.05";
  Version = "505";
  InstallerName = "Ar505jpn.exe";
  InstallDrive = "C:";
  InstallDirectory = "'¥Program Files'¥Adobe";
}

PackageIDをPACKAGE_INFOセクション内に追加しました。

AITCE-0046

演算子'+','-'と'!'は,文字列定数で使用できません。

要因
単項演算子と文字列定数が一緒に指定されています。
対処
単項演算子と文字列定数は一緒に指定しないでください。
誤った指定例

DEFINE
{
  const integer OK_END =0;
  const integer NG_END = -1;
  const string szMsgText = !"30";  // 「!」を文字列定数に使用しました
}

DEFINEセクションで文字列定数を初期化する際,単項演算子(「+」,「-」,および「!」)は使用できません。
ここでは,変数「szMsgText」で,「!」が文字列定数と一緒に指定されています。
正しい指定例

DEFINE
{
  const integer OK_END =0;
  const integer NG_END = -1;
  const string szMsgText = "30";      // 「!」を削除しました
}

「!」を変数「szMsgText」から削除しました。

AITCE-0047

式内でラベルの使用方法が誤っています。

要因
ラベルが式内で使用されています。
対処
ラベルは式内で使用しないでください。
誤った指定例

DEFINE
{
  integer sloop_max = 0;
}
MAIN
{
ErrorLabel:
  if (ErrorLabel)      // if構造体内でラベル名が使用されています
     AIT_LogMessage("Setup(Japanese)For Windows-Start");
     if (AIT_FileExists("#setup.exe") == 0)
        goto ErrorLabel;
        sloop_max = 0;
     endif;
  endif;
}

ラベルは式内で使用できません。この例では,ラベル「ErrorLabel」がif構造体内で指定されています。
正しい指定例

DEFINE
{
  integer sloop_max = 0;
  string stMsgText;
}
MAIN
{
  if(1)      // ラベルを式から削除しました
     if (AIT_FileExists("#setup.exe") == 0)
        goto ErrorLabel;
        sloop_max = 0;
     endif;
ErrorLabel:
     stMsgText = "Setup(Japanese) " + InstallerName + " Not Found";
     AIT_LogMessage(stMsgText);
  endif;
}

ラベル「ErrorLabel」をif構造体から削除し,式内の値を有効にしました。

AITCE-0048

case内で ""!"" 演算子は使用できません。

要因
caseラベル値に式が指定されています。switchステートメント内のcaseラベル値には定数値しか指定できません。
対処
caseラベル値内では式を指定しないでください。
誤った指定例

DEFINE
{
  const integer FileVersion = 7;
  string stMsgText;
}
MAIN
{
  switch (FileVersion)
     case 7:
        ...
        ...
        break;
     case 5 + 1:      // caseステートメント内では式を使用できません
        ...
        ...
        break;
     default:
        ...
        ...
        break;
  endswitch;
}

switchステートメント内では定数だけが指定できます。この例では,2番目のcaseラベルに加算演算式が指定されています。
正しい指定例

DEFINE
{
  const integer FileVersion = 7;
  string stMsgText;
}
MAIN
{
  switch (FileVersion)
     case 7:
        ...
        ...
        break;
     case 6:      // 式を削除し,定数を指定しました
        ...
        ...
        break;
     default:
        ...
        ...
        break;
  endswitch;
}

2番目のcaseステートメントから加算演算式を削除し,定数を指定しました。

AITCE-0050

AITファイルのバージョンと実行エンジンのDLLのバージョンが不一致です。

要因
AITファイルのバージョンが実行エンジンのDLLより新しいことが考えられます。
対処
AITファイルの実行時に,スクリプトエンジンのDLLのバージョンがPACKAGE_INFOセクションで示されているScriptFileVersionよりも新しいか確認してください。ScriptFileVersionは,DLLのバージョンよりも前である必要があります。

AITCW-0016

<ランクの高いデータ型>から<ランクの低いデータ型>に変換しました。データが失われている可能性があります。

要因
AITファイルで,ランクの低いデータ型にランクの高いデータ型を割り当てようとすると,値が切り捨てられ,それがランクの低いデータ型に割り当てられます。float型変数がinteger型変数に割り当てられた場合や,integer型変数が変数に割り当てられたことが考えられます。
対処
ランクの高いデータ型を使用してください。
誤った指定例

DEFINE
{
  const integer OK_END = 0;
  const integer SLEEP_TIME = 3.8;      // float型変数を整数定数に割り当てようとしています。値は切り捨てられ,3だけが変数に保存されます。
}

ここでは,float値がinteger型変数「SLEEP_TIME」に割り当てられています。割り当てられた値は切り捨てられ,integer値だけが変数「SLEEP_TIME」に保存されます。
正しい指定例

DEFINE
{
  const integer OK_END =0;
  const float SLEEP_TIME = 3.8;      // 変数の型をfloat型に変更しました
}

float値を保持するために,変数「SLEEP_TIME」のデータ型をinteger型からfloat型に変更しました。

AITCW-0017

<処理>でbool型変数は指定できません。

要因
bool型変数を予期しない方法で指定すると,この警告が呼び出されます。例えば,bool型変数を除算演算や剰余演算(/,%)に指定すると,0による除算または0/0矛盾につながり,警告メッセージが呼び出されます。
対処
このような場合は,bool型変数を指定しないでください。
誤った指定例

DEFINE
{
  const integer Sloop_Max = 30;
  integer sloop_count;
  bool IsPathSet = false;
}
MAIN
{
  sloop_count = sloop_max / IsPathSet;      // bool型変数が除数として指定されています
}

bool型変数を使用すると,0による除算となり,この警告メッセージが表示されます。ここでは,bool型変数「IsPathSet」が除数として指定されているため,0による除算となります。
正しい指定例

DEFINE
{
  integer NG_END = 1;
  const integer sloop_max = 30;
  integer sloop_count;
}
MAIN
{
  sloop_count = sloop_max / NG_END;      // bool型変数を削除し,integer型変数を除数として指定しました
}

bool型変数「IsPathSet」を削除し,integer型変数「NG_END」を除数として指定しました。

AITCW-0028

演算子<演算子名>で<データ型1>と<データ型2>は混在できません。

要因
ビットの論理積や論理和などの演算の式で,integer型やbool型が混合して指定されています。
対処
式のオペランドでは一貫したデータ型を指定してください。
誤った指定例

DEFINE
{
  integer sloop_max = 0;
  bool IsPathSet;
}
MAIN
{
  sloop_max = sloop_max & IsPathSet;      // ビット演算の論理積に対してinteger型とbool型が指定されています
}

この例では,「&」演算に対してinteger型とbool型が指定され,データ型が混在しています。
正しい指定例

DEFINE
{
  integer sloop_max = 0;
  integer sloop_count;
}
MAIN
{
  sloop_max = sloop_max & sloop_count;      // ビット演算の論理積に対してinteger型とinteger型を指定しました
}

「&」演算に対して同じデータ型(integer型とinteger型)を指定しました。

AITCW-0033

switchステートメントにはdefaultラベルしかありません。

要因
switchステートメントでdefaultステートメントのcaseだけが指定されています。switchステートメントのcaseラベルが指定されていません。これは,ステートメントのシーケンスに相当します。
対処
switchステートメントで少なくとも一つのcaseラベルを指定してください。
誤った指定例

DEFINE
{
  const string FileVersion = "7.1";
  string stMsgText;
}
MAIN
{
  switch(FileVersion)
     default:      // switchステートメントにdefaultステートメントしか使用していません
        ...
        ...
        break;
  endswitch;
}

すべてのswitchステートメントに,一つ以上のcaseステートメントが必要ですが,この例では,caseステートメントがなくdefaultステートメントしか指定されていません。
正しい指定例

DEFINE
{
  const string FileVersion = "7.1";
  string stMsgText;
}
MAIN
{
  switch(Version )
     case "7.1":      // switchステートメントにcaseステートメントが含まれています
        ...
        ...
        break;
     default:
        ...
        ...
        break;
  endswitch;
}

switchステートメントにcaseステートメントを追加しました。

AITCW-0035

<ラベル名> : 定義されたラベルが使われていません。

要因
ラベルが定義されていますが,参照されていません。このラベルを無視します。
対処
ラベル名を参照するgotoステートメントを指定してください。
誤った指定例

DEFINE
{
  const string ExeVersion = "7.1";
  const string FileVersion = "7.1";
  integer sloop_max = 0;
}
MAIN
{
  if (ExeVersion == FileVersion )
ErrorLabel:   // ラベルに関連するgotoステートメントがありません
     AIT_LogMessage("Setup(Japanese)For Windows-Start");
     if (AIT_FileExists("#setup.exe") == 0)
        sloop_max = 0;
     endif;
  endif;
}

ラベルには,対応するgotoステートメントが必要です。gotoステートメントなしでラベルステートメントを定義すると,そのラベルステートメントは無視されます。この例では,ラベル「ErrorLabel」がgotoステートメントなしで指定されています。
正しい指定例

DEFINE
{
  const string ExeVersion = "7.1";
  const string FileVersion = "7.1";
  integer sloop_max = 0;
}
MAIN
{
  if (ExeVersion == FileVersion)
     AIT_LogMessage("Setup(Japanese)For Windows-Start");
     if (AIT_FileExists("#setup.exe") == 0)
        goto ErrorLabel;      // gotoステートメントを指定しました
        sloop_max = 0;
     endif;
ErrorLabel:      // ラベルが定義されています
     stMsgText = "Setup(Japanese) " + InstallerName + " Not Found";
     AIT_LogMessage(stMsgText);
  endif;
}

ラベル「ErrorLabel」に対応するgotoステートメントを指定しました。
なお,必要のないラベルステートメントを削除する対処方法もあります。

AITCW-0036

<変数名> : 定義された変数が使われていません。

要因
変数がDEFINEセクションで定義されていますが,参照されていません。
対処
不要な場合や使用しない場合は,変数の定義を削除してください。
誤った指定例

DEFINE
{
  const string ExeVersion = "7.1";
  const string FileVersion = "7.1";
  integer sloop_max;      // この変数はプログラム内のどこからも参照されていません
  string stMsgText;
}
MAIN
{
  if (ExeVersion == FileVersion)
     AIT_LogMessage("Setup(Japanese)For Windows-Start");
     if (AIT_FileExists("#setup.exe") == 0)
        stMsgText = "Setup(Japanese) " + InstallerName + " Not Found";
     endif;
  endif;
}

上の例で,変数「sloop_max」はDEFINEセクションで定義されていますが,MAINセクション内で使用されていません。
正しい指定例

DEFINE
{
  const string ExeVersion = "7.1";
  const string FileVersion = "7.1";
  integer sloop_max;
  string stMsgText;
}
MAIN
{
  if (ExeVersion == FileVersion)
     AIT_LogMessage("Setup(Japanese)For Windows-Start");
     if (AIT_FileExists("#setup.exe") == 0)
        sloop_max = 0;// ここで変数「sloop_max」が使用されています
        stMsgText = "Setup(Japanese) " + InstallerName + " Not Found";
        AIT_LogMessage(stMsgText);
     endif;
  endif;
}

変数「sloop_max」はMAINセクション内で使用しました。
なお,MAINセクションで必要のない変数はDEFINEセクションから削除する対処方法もあります。