過去の桐井戸端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へのコメント 返答くださいました皆さん有り難うございました。 疑問に思っていた事が解かりました。 これからもよろしくお願いします。 |