リターンコードとは、C言語で言うmain()関数の戻り値のことで、MS-DOSでは
1バイトの数字である。これは親プロセス(MS-DOSのコマンドラインから実行された場合は
MS-DOS)に渡されて処理される。
例えば、バッチファイルの中でプログラムを実行し、エラーならばバッチファイルを
終了して、正常にプログラムが実行されたら次のプログラムを実行するというような感じで
使用されたり、プログラムから「AX=4B00hのシステムコール」
で子プロセスを実行し、その成功の可否を判断して次の処理を行うなどの
用途で使用する。
通常、プログラムが正常に終了すれば、リターンコードは0、失敗した場合は
その理由によってプログラマーが決めた値を返す。
バッチファイルでプログラムのリターンコードを得るには「IF 〜 ERRORLEVEL」
を用いる。例えば、下記のようにすると、
C:\>IF /?
バッチファイル中で条件処理を実行します.
IF [NOT] ERRORLEVEL 番号 コマンド
IF [NOT] 文字列1==文字列2 コマンド
IF [NOT] EXIST ファイル名 コマンド
NOT 条件が偽のときだけコマンドを実行するように指定します.
ERRORLEVEL 番号 最近実行したプログラムが返した終了コードが指定した番号
以上であれば真になるように指定します.
コマンド 条件が真であれば実行するコマンドを指定します.
文字列1==文字列2 文字列が一致すれば真になるように指定します.
EXIST ファイル名 ファイル名に指定されたファイルが実際に存在すれば真に
なるように指定します.
C:\>TYPE TEST.BAT
TEST.COM
IF ERRORLEVEL 5 ECHO リターンコードは5以上です
C:\>
|
TEST.COMのリターンコードが5以上ならばメッセージを表示し、それ未満
なら何も表示しないバッチファイルになります。
プログラムから子プロセスを呼び出し、子プロセスからのリターンコードを調べるには
下記のシステムコールを使用します。
子プロセスのリターンコード
AH = 4Dh
INT 21h
戻り値:AL : 子プロセスからのリターンコード
AH : 子プロセスの終了状態
AH = 0 : 通常終了
AH = 1 : CTRL + C による中断
AH = 2 : 致命的なエラー
AH = 3 : 常駐終了
|