バッチ処理などで使用するコンソール・アプリケーションを作成する場合、バッチ処理側でアプリケーションが正しく終了したかどうかを判断するためには、アプリケーションの終了時に、そのアプリケーションがWindows OSへ「終了コード」を返す必要がある。
例えば、mybatapp.exeというファイル名を持つコンソール・アプリケーションを作成した場合に、このアプリケーションが正常終了しなかったときに終了コードとして「100」を返すようになっていれば、次のようなバッチ・ファイルにより、それを判断することができる(通常、終了コードは、0で正常終了、0以外で異常終了を表す)。
@echo off
set msg=正常終了
mybatapp.exe
if %ERRORLEVEL%==100 set msg=異常終了
echo %msg%(終了コード:%ERRORLEVEL%)
本稿では、このような用途のためにアプリケーションから終了コードを返す方法についてまとめる。
アプリケーションから終了コードを返す最も基本的な方法は、プログラムのエントリ・ポイントであるMainメソッドの戻り値を利用する方法である。
class MyBatchApp {
static int Main() {
return 100;
}
}
Module MyBatchApp
Function Main() As Integer
Return 100
End Function
End Module
この場合には、Mainメソッドの型をint型にしておく必要がある。
「TIPS:コンソール・アプリケーションを途中で終了するには?」で紹介しているように、アプリケーションはEnvironmentクラス(System名前空間)のExitメソッドを利用してプログラムを途中で終了することができる。このExitメソッドでは、パラメータに終了コードを指定できる。
using System;
class MyBatchApp {
static void Main() {
Environment.Exit(100);
}
}
Imports System
Module MyBatchApp
Sub Main()
Environment.Exit(100)
End Sub
End Module
もちろん、Environment.ExitメソッドはMainメソッド以外の任意のメソッド内で呼び出すことができる。
EnvironmentクラスのExitCodeプロパティに終了コードをセットしておき、プログラムを終了してもWindows OSに終了コードを返すことができる。
using System;
class MyBatchApp {
static void Main() {
Environment.ExitCode = 100;
}
}
Imports System
Module MyBatchApp
Sub Main()
Environment.ExitCode = 100
End Sub
End Module
ExitCodeプロパティは終了コードの取得/設定を行うだけなので、ほとんどの場合には、先のExitメソッドでことは足りると思われる。
VB.NETにはプログラムを終了させるためのEndステートメントが用意されているが、これを使用する場合には注意が必要だ。なぜなら、このステートメントを使用した場合には終了コードが必ず「0」となるためだ。
Endステートメントの処理は、Openステートメントにより開かれているファイルをすべて閉じた後、「Environment.Exit(0)」を呼び出してプログラムを終了させるのと同等である。
カテゴリ:クラス・ライブラリ 処理対象:コンソール・アプリケーション
使用ライブラリ:Environmentクラス(System名前空間)
関連TIPS:コンソール・アプリケーションを途中で終了するには
Copyright© Digital Advantage Corp. All Rights Reserved.