DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ステータスコード(リターンコード)について

分類:[.NET]

2003/09/16(Tue) 20:36:33 編集(投稿者)
2003/09/16(Tue) 20:36:15 編集(投稿者)

私なりにがんばって調べてみたのですが、どうしてもわからないところがありますので、教えていただきたいことがあります。
"ジョプスケジューラにてプログラムをコントロールしたいと考えています。
正常終了の時は0、異常終了の時は0より大きい整数をステータスコード(リターンコード)に返したいのですが
どのようにコードを記述すればよいのでしょうか?"
プログラム経験があまりないので的のはずれたことを言っているかも知れませんが、
どうぞよろしくお願いします。
こんばんは、みきさん。ピラルクです。

プロジェクトのプロパティでスタートアップの設定をSub Mainにし、

Public Shared Function Main(ByVal args() As String) As Integer
Application.Run(new Form1())
Return 777 '返却値
End Function

C#の場合は public static int Main(string[] args)

で起動します。

VS7では何故かどんな値を返しても、
プログラム '[nnnn] hoge.exe' はコード 0 (0x0) で終了しました。
と出力ペインに表示されますが、ちゃんと返せているようです。
(ジョブスケジューラが何かは?ですが、
少なくともBatの||,&&では分岐できました。)
■No662に返信(ピラルクさんの記事)

こんにちは、ピラルクさん。
返事を書くのが遅くなってしまい申し訳ありません。

私は、返信していただいたレスを参考に色々やってみたのですが、どうしてもうまくいきません。

>Public Shared Function Main(ByVal args() As String) As Integer
>Application.Run(new Form1())
>Return 777 '返却値
>End Function

を実行して、Mainに777が返っていることは確認できたのですが、
コマンドプロンプトにてプログラムを実行後、

echo %errorlevel%

を実行すると0が返り、リターンコードの受け渡しがうまくいってないようです。
それともこの確認方法が間違っているのでしょうか?
こんにちは、みきさん。ピラルクです。

> コマンドプロンプトにてプログラムを実行後、
>
> echo %errorlevel%

は、別々でDOS窓から叩いたのですよね。それではおそらくダメです。

MyAssembly.exe
echo %errorlevel%
pause

とバッチファイルに続けて記述し、確認してみてください。
ちゃんと返ってくるはず。
■No668に返信(ピラルクさんの記事)

できました!ちゃんと値が返ってました。
ピラルクさん、本当にありがとうございました。

これからはDOSプロンプトもしっかり勉強していこうと思います。
また、お世話になることがあるかもしれませんが
その時はよろしくお願いします。ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板