過去の桐井戸端BBS (桐ver.9)
23056 一括処理のコマンドの最後に終了状態=&OKとの記述がありますがどういう意味があるのでしょうか おさる 2003/10/29-21:19
一括処理ヘルプのコマンドの構文を見ますと、コマンドの最後に 終了状態=&OKというふうに記述してありますが、
これは必ず記述しなければならないのですか?
書き込みを見ると省略してある場合があるようですが。
これは何か規則があるのでしょうか。
それと、違うコマンドを続けて記述する場合、終了状態の変数は全て違う変数でなければいけないのですか。
1つの変数で使いまわせないのでしょうか。
イベントを記述している時に、いつも疑問に思ってました。
よろしくお願いします。 
23057 Re:コマンドの記述について 悲しげ 2003/10/29-22:00
記事番号23056へのコメント
どもっ、おさるさん

>一括処理ヘルプのコマンドの構文を見ますと、コマンドの最後に 終了状態=&OK
>というふうに記述してありますが、これは必ず記述しなければならないのですか?
>書き込みを見ると省略してある場合があるようですが。
>これは何か規則があるのでしょうか。
>それと、違うコマンドを続けて記述する場合、終了状態の変数は全て違う変数でな
>ければいけないのですか。1つの変数で使いまわせないのでしょうか。

省略しても動きます。
が、「終了状態」を記述することのメリットもない訳ではありません。
私の乏しい経験からは、ひとつは当該コマンドでもってエラーが発生した時などで、
「終了状態」を記述してなかったら一括処理自体が落ちてしまう(逆に云えば、
記述しておけば落ちない)ようなことがあったり。
ふたつめとして、終了状態変数の返り値に意味があるため、引き続く処理のための
判断に利用できる場合もあります。例えば「検索」コマンドの場合は、返り値が1なら
検索に成功した=該当データが存在したことを示すので、その結果次第でケース分けすることができる、とか。
他にもありそうですが、ま、こんなところで。
なお、上記「メリット」と全く無縁と考えられるなら、省略してもいいんじゃない
でしょうか。私も、面倒なので、しばしば省略します。(^^;)

あと、ひとつの変数で共用するか、別名の変数を使うかは、変数の返り値をどう利用するか、
その際に同名でぶつかることがないかどうか、と云った問題になります
から、結論的には「ケース バイ ケース」と云うしかありません。

23058 Re:コマンドの記述について うにん 2003/10/29-23:14
記事番号23056へのコメント

>これは何か規則があるのでしょうか。

終了状態に限らず、「パラメータ名=値」の形式の部分は省略できます。

23060 終了状態取得によるエラー回避 佐田 守弘 2003/10/30-01:52
記事番号23056へのコメント
おさるさん
ほとんどは悲しげさんが書いているとおりですが、多少補足します。
一般にコマンドは、その実行の結果がエラーになると、その段階で一括処理を中断してブレークします。
このエラーとは、文法エラーではなくて、主として動作環境やその時の状況によって発生する事があるエラーです。
例えばある表を開こうとしたが、その表が存在しない、他の人が専有で使っている、
表が壊れている、などなど、様々な要因があるかと思います。
いずれにしても開けなかった事には変りありませんから、開いた前提で行うであろう
それ以降のコマンドは、実行しようがない訳です。
だから、基本的にはそのエラーによって、一括処理をブレークさせます。

自分で作って自分で使う一括処理であれば、それで構わないわけです。
むしろ、エラーが起きた事が分るわけで、少なくとも開発途中ではその方が好ましいかも知れません。

しかし、桐を知らない人に使ってもらう一括処理だと、これでは困ります。
もし、例えばファイルが存在しなくて開けなかった様な場合であっても、
一括処理をブレークさせるのではなく、エラーの原因を明示して処理は中止し、
メニューに戻してやり直させるとか、あるいは他の人に使われているなら、
何回かリトライを繰り返すなど、状況に応じた処理が必要になります。

この様な場合に、終了状態を取得します。
「終了状態=<変数>」のパラメータを付けると、仮にエラーになっても、一括処理の中断は発生しません。
しかし、取得したエラーを無視して、そのまま次に進んでしまえば、次の新たなエラーが発生します。
単にエラーをパスさせるためにこのパラメータを記述することも「あり」ですが、
基本的には、「エラーが生じたら何をさせるか」までを記述しておかないと、
人に使ってもらえるプログラムにはなりません。

つまり、終了状態を取らないと、予測外の事態が起きた時に、一括処理がブレークして止まります。
終了状態を取れば、ブレークは回避できますが、エラーが起きたかどうかをその都度判断し、
エラーであれば何をすべきかまで、プログラムの中に記述する必要があります。

終了状態を取得する変数をその都度別のものを使うかは、その値を後で使うかどうかによります。
判断が終って、その値が書き換えられても構わないなら、1つの変数でも構いません。

佐田守弘(KS-00119)



23121 Re:コマンドの記述について おさる 2003/10/31-21:43
記事番号23056へのコメント
返答くださいました皆さん有り難うございました。
疑問に思っていた事が解かりました。
これからもよろしくお願いします。

戻る