エラー・チェックと分岐
IfErrorは、ラベル名で定義されたスクリプト内の特定のロケーションまで後続の文をスキップして、前の文のエラーに応答するようにMaxL Shellに指示します。
IfErrorでは、先行する文にのみエラーがあるかどうかがチェックされます。 IfErrorは、次のことをチェックします:
-
MaxL文の実行エラー
-
次のようなMaxL Shellコマンド実行のエラー:
-
spool on/off
のエラー(権限エラーなど) -
無効な幅など、
set column_width
のエラー -
権限エラーや存在しないインクルード・ファイルなどのスクリプト・ネストのエラー
-
gotoは、ラベル名で定義されたスクリプト内の特定のロケーションにMaxL Shellを強制的に分岐させます。gotoはエラーの発生に依存しません。
構文
iferror LABELNAME
goto LABELNAME
define label LABELNAME
例: Iferror (MaxL)
次のスクリプト例には、ディメンション構築文とデータ・ロード文が含まれています。 ディメンションの構築に失敗した場合、データ・ロードはスキップされます。
login $1 $2;
import database sample.basic dimensions
from data_file 'C:\\data\\dimensions.txt'
using rules_file 'C:\\\\data\\rulesfile.rul'
on error append to 'C:\\\\logs\\dimbuild.log';
iferror 'dimbuildFailed';
import database sample.basic data from data_file
"$ARBORPATH\\app\\sample\\basic\\calcdat.txt"
on error abort;
define label 'dimbuildFailed';
exit;
例: Iferror (MaxL Shell)
次のスクリプト例では、MaxL Shellエラーを含む様々なエラーをテストし、終了ステータス変数をゼロ以外の引数に設定して終了ステータスをMaxL Shellに返す方法を示します。
### Begin Script ###
login $1 $2;
echo "Testing syntactic errors...";
spool on to spool.out;
set timestampTypo on;
iferror 'End';
msh "doesnotexistlerr.mxl";
iferror 'FileDoesNotExistError';
echo "Script completed successfully...";
spool off;
logout;
exit 0;
define label 'FileDoesNotExistError';
echo "Error detected: Script file does not exist";
spool off;
logout;
exit 1;
define label 'ShellError';
echo ' Shell error detected...';
spool off;
logout;
exit 2;
define label 'End';
echo ' Syntax error detected...';
spool off;
logout;
exit 3;
### End Script ###
例: Goto
次のスクリプト例には、ディメンション構築文とデータ・ロード文が含まれています。 移動先は、データ・ロードをスキップするために使用します。
login $1 $2;
import database sample.basic dimensions
from data_file 'C:\\data\\dimensions.txt'
using rules_file 'C:\\\\data\\rulesfile.rul'
on error append to 'C:\\\\logs\\dimbuild.log';
goto 'Finished';
import database sample.basic data from data_file
"$ARBORPATH\\app\\sample\\basic\\calcdat.txt"
on error abort;
define label 'Finished';
exit;
ノート
MaxL Shellは、スクリプト内でLABELNAMEまでスキップしますが、逆方向にはスキップしません。