Procedures (JA)
2.4 プロシージャ
T-Plan Robot は簡単なプロシージャをサポートしています。プロシージャは、その名前を呼び出すことで実行できる、必要な形式で記述された言語要素の名前付きブロックです。プロシージャは、ヘッダ、ボディ、右中括弧で終わります。
プロシージャの書式は
Procedure <procedure_name> {
command1
command2
...
commandN
}
以下のルールが適用される:
プロシージャー名は大文字と小文字を区別せず、他のコマンド名や言語要素名と衝突してはならない。v3.0.1以降、二重引用符で囲まれている場合、名前にスペースが含まれていてもよい:
Procedure "Perform action A" { ...
...
}
...
"Perform action A"
左中括弧'{'は、プロシージャーヘッダーと同じ行になければならない。
終端の右中括弧 '}' は、1行に1つでなければならない。
プロシージャー定義は、すでに定義されている同名のプロシージャーを上書きする。
プロシージャーは、その定義の後にスクリプトの任意の場所で呼び出すことができる。
他のスクリプト(ファイル)で定義されたプロシージャはIncludeコマンドで取り込むことができる。
プロシージャー呼び出しには、以下のようにスペースで区切られたパラメータをいくつでも渡すことができる:
<procedure_name> parameter1 "parameter2 with spaces" ... parameterN
パラメータは、'0', '1' ... 'N'という名前の変数として利用できる。インデックス0の最初の変数には、常にプロシージャー名が格納される。プロシージャが受け付けるパラメータは、プロシージャのヘッダのどこにも宣言されていないことに注意してください。
バージョン2.1以降、_PROCEDURE_ARG_COUNT 変数から多くの入力引数が利用できるようになった。これらは、パラメータの数に応じて動作を分岐させたり、省略されたパラメータにデフォルト値を代入したりするために使用されます。
次の例は、可変画像フォーマットでスクリーンショットを作成する簡単なプロシージャの書き方と呼び出し方を示しています。デフォルト値の代入(Var extension=png)は、パラメータ代入(Var extension={2})の後に指定しなければならないことに注意してください。これは、正しいコマンド構文を検証するために、if/else構造に関係なくコンパイル時にすべての変数代入を実行するコンパイラの制限によるものです。
# プロシージャの定義。期待されるパラメータは以下の通り:
# 1} ... ファイル名(拡張子なし)
# 2} ... 画像の拡張子(jpg, jpeg, pngのいずれか).省略時のデフォルトは "png"。
procedure take_screenshot {
Var extension={2}
if ({_PROCEDURE_ARG_COUNT} == 1) {
Var extension=png
}
Screenshot {1}.{extension} desc="このスクリーンショットは {0} というプロシージャによって作成されました。"
}
take_screenshot image1 jpg
take_screenshot image2
プロシージャは常に、プロシージャ本体内で最後に実行されたコマンドの終了コードを返します。特定の終了コードでプロシージャを終了するには Exit コマンドを scope
ラメータを procedure
. 例を以下に示す:
# プロシージャの定義
Procedure exit2 {
Exit 2 scope=procedure
}
# 手続き呼び出し
exit2
if ({_EXIT_CODE} == 2) {
# exit2 が 2 を返すため、ここにあるコードはすべて実行されます。
}
パラメータがないと、コードが正しいかどうかを判断できないため、プロシージャ定義時にプロシージャの内容がコンパイルされることはありません。T-Plan Robot Enterprise は、代わりにプロシージャ呼び出しをコンパイルします。例えば
take_screenshot image3 tiff
と入力すると、T-Plan Robot はこの行でエラーを報告します。なぜなら 'tiff' は Java がサポートしていない画像形式であるため、例のプロシージャ本体の Screenshot コマンドはコンパイルエラーを投げるからです。