過去の桐井戸端BBS (桐ver.8)
3876 システムコマンドの戻り値 桐シタン大名 1999/12/21-10:55
はじめまして。過去ログをみてもそれらしき記事がないようですので質問させていただきます。
桐V8 SP3で一括処理を作成しているのですが、システムコマンドの戻り値が0(ZERO)になってしまいます。

一括処理HELPによれば最後に指定する長整数型の変数には実行結果として呼び出したプログラムの
復帰コードが返るはずなんですが...
(エラーのときは0が返るそうですが、都合よくエラーになるようなプログラムが手元にないので
エラー時の戻り値を検証することはしておりません)

ちなみに、サンプルどおりやってみてもZEROが返ってきます。
どこか変なんでしょうか?それともバグ OR マニュアル表記の間違い?

この内容はK3に問い合わせ中なのですが、みなさんの環境ではどうですか?
下記一括処理で&OKがZERO以外の値になるのでしょうか?
よろしくお願いします。

環境:Win98 桐V8 SP3

一括処理記述
 変数宣言 固有,長整数{&OK}
 システム "C:\Windows\Calc.exe","",&OK

3879 Re:システムコマンドの戻り値 宮城 1999/12/21-11:20
記事番号3876へのコメント
それで正常と思われます。

>起動結果を変数[&実行リターン]に代入する。

としか記述していないヘルプが問題で、V5レファレンスでは次のようになって
いました。

戻り値 意味
  0 正常終了。子プロセスを正常に実行できた
(以下略)

きっとかわってないと思います。かような部分を省略されては・・・、ついて
いけませんね。
3880 Re:システムコマンドの戻り値 Hiro 1999/12/21-11:22
記事番号3876へのコメント
桐シタン大名さん、こんにちは。

システムコマンドの戻り値ですが、私も苦労しています。
例えば、FTP処理後の戻り値は0、
圧縮ファイルを解凍した後の戻り値は1になっています。
結局のところ、どのような値が格納されるかは
起動されたプログラムにゆだねられているのだと思います。

実行の都度、事前に確認をした方がよさそうですね。

3886 Re:システムコマンドの戻り値 桐シタン大名 1999/12/21-13:54
記事番号3879へのコメント
宮城さん、ありがとうございます。
>戻り値 意味
>  0 正常終了。子プロセスを正常に実行できた

確かにV5のマニュアルにありました。
DOS版はマニュアルが充実していますね。

>きっとかわってないと思います。

投稿した後、別のプログラムを動かしてみたりしたところ、1を返すヤツ(エクスプローラ)がいましたので
変わっているように思います。

>かような部分を省略されては・・・、ついていけませんね。

K3もDOS版レベルとまでは言いませんが、もう少し詳しい内容を載せていただきたいものです。

3887 Re:システムコマンドの戻り値 桐シタン大名 1999/12/21-14:09
記事番号3880へのコメント
Hiroさんも苦労されているのですね。

>結局のところ、どのような値が格納されるかは
>起動されたプログラムにゆだねられているのだと思います。

宮城さんへのResと重複しますが、1を返してくるプログラムがあることを考えると
Hiroさんのおっしゃるとおり、起動されたプログラムにゆだねられていると考えるのが良さそうですね。

K3から回答を待ってみます。

3888 Re:システムコマンドの戻り値 K3からの回答 桐シタン大名 1999/12/21-17:51
記事番号3876へのコメント
K3から回答がきました。
要約するとマニュアルの間違いということなんですが、以下はK3からの回答です。

>V8の動作では
>A.
>プロセスの起動までの間に失敗するとエラーコードを格納します.
>ここの値に関してはVer5のマニュアルにあるエラーコードの記載がもっとも真実に近
>いものです.
>ただし時代の変遷により戻らない値もあります。
>
>B.
>プロセスが正常に起動され,その後に終了するときにはなにかの戻り値を返してきます.
>この値が変数に格納されます.
>DOS時代には子プロセスは command.com を経由して起動していたので,この戻り値が
>常に 0 でしたが、桐では単に返ってきた値を格納しているだけなため、なにが格納さ
>れるのかは起動されたプログラムのみが知ることになります。
>その意味ではマニュアルの記述は間違っており、ご迷惑をお掛けいたしました。

ということで結局、「なにが戻ってくるかはプログラム次第」と解釈しております。
起動するプログラムが毎回、同じ値を返すのかどうかも気になるところですが仮にそうだ
とすれば、正常時の戻り値を事前に調べておきハンドリングすることになりそうです。

宮城さん、Hiroさん ありがとうございました。

戻る