過去の桐井戸端BBS (桐ver.8)
6603 終了状態の判定タイミングについて(桐8) wing 2000/06/24-18:49
一括処理のコマンドで設定する”終了状態”の判定タイミングについて教えて下さい。

 表 ”a.tbl”,終了状態=&終了
 条件(&終了≠1) 分岐 エラー処理

といったように、コマンドのすぐ次で判定をしなくてはいけないのでしょうか。
例えば、次のような方法で終了状態を判定する事は可能なのでしょうか。

 表 ”a.tbl”,終了状態=&終了1
 表 ”a.tbl”,終了状態=&終了2
 絞り込み ・・・・
 併合 ・・・・,終了状態=&終了3

 IF(&終了1≠1 .and &終了2≠1 .and &終了3≠1)
   分岐 エラー処理
 END IF

質問の内容がうまく書けなくてすみません。
終了状態についての過去BBSも拝見させて頂いたのですが、いまいち理解できません。
宜しくお願いします。
6604 Re:終了状態の判定タイミングについて(桐8) bonito 2000/06/24-20:08
記事番号6603へのコメント
wingさん、こんにちは。
これはもう全然問題なく可能です。

> 表 ”a.tbl”,終了状態=&終了

では、変数「&終了」に 1 か 0 か -1 か -2 を代入しますよね。
一度変数に代入された「値」は再度代入処理をするか(例えば 代入 &終了=&終了+1 とか…)、
同じ変数を再び変数宣言するか、変数削除するか、変数が無効になるか(自動変数や局所変数なら有り得るかも…)
しない限り失われる事はない筈ですから・・・。

WIN桐では、作業中にも変数管理で変数に代入された値を参照出来たり、変数宣言出来たり、
(DOS版ではメインメニューからしか出来なかったと思う…?)
かなり便利 (^o^)
6606 Re:終了状態の判定タイミングについて(桐8) 悲しげ 2000/06/24-21:52
記事番号6603へのコメント
どもっ、wingさん
お答えではなくてすいませんが、

>表 ”a.tbl”,終了状態=&終了1
>表 ”a.tbl”,終了状態=&終了2

ひとつの表を、多重化や共有指定無しで、このように続けてふたつオープンなんてできましたっけ?
何のために、同じ表を続けてふたつ開こうとするのでしょう?
ひょっとして、後者の表は"b.tbl"(別表)?
6609 Re:終了状態の判定タイミングについて(桐8) KH 2000/06/24-23:12
記事番号6603へのコメント
> 表 ”a.tbl”,終了状態=&終了
> 条件(&終了≠1) 分岐 エラー処理
>
>といったように、コマンドのすぐ次で判定をしなくてはいけないのでしょうか。

通常は直ぐに判定しなければ、意味がないと思われますが。
つまり、その表が正常に開かれているかどうかによって、次の処理ができるかどうかを判断して、
正常に開かれていれば、次に目的とされる処理に入っていけますが、ダメであれば、リトライするか、
処理をすべて止めてしまうかを選択するような処理となるのではないでしょうか。
個人的に使うものであれば終了状態をチェックする必要はほとんどないと思われますが、
業務で不特定多数の使用者がいる場合やコンピュータに詳しくない人が使う場合は必須と思われます。
 次のプログラムが何を意図しているのかわからないので、ピンぼけでしたらごめんなさい。

6611 Re:終了状態の判定タイミングについて(桐8) KH 2000/06/24-23:19
記事番号6609へのコメント
 追伸
 ごめんなさい、肝心な事を書くのを忘れました。この終了状態は、正常に表が開かなかったとき、
一括処理をエラーで止めないためのものです、確か。
ですからやっぱり直後でないと意味がないと思います。
6618 終了状態の判定について 佐田 守弘 2000/06/25-13:38
記事番号6603へのコメント
wingさん
● 終了状態判定の意味について
終了状態を取得する事の意味は2つあります。
@コマンドが正しく実行できたかどうかを知る。
Aコマンドが実行できなかった場合のエラーブレークを回避する
つまり、
単に 「表 "a.tbl"」と書いた場合、表aが開けなかった場合には、エラーになって一括処理がそこでブレークします。
これに対して、「表 "a.tbl",終了状態=&終了」の様に書くと、仮に表が開けなかった場合でもブレークはせず、
そのコマンドは実行されないまま、次のコマンドに進みます。

● 結果はユーザーが判定する
終了状態を取得した場合には、そこにコマンドの実行結果が取得されます。
正しく開けた時には1ですが、開けなかった時にはその状況によって0、-1、-2などの値が返されます。
この値を使って、その後どうすべきかは、ユーザーが決めてそのように一括処理を作っておきます。

● 結果判定の時期
いつでも構いません。
一般的にいえば、表コマンドで表を開いた直後にこの判定を行い、表が正しく開かれたかを確認して
次のコマンドに進めます。
しかし、判定する必要がなければ、判定を行う必要はありません。
またその場では判定せず、判定をする必要がある時に判定しても良いでしょう。
これは、構築されようとしているシステムによって変わりますから、一概には言えません。

佐田守弘(KS-00119)
6623 Re:終了状態の判定タイミングについて(桐8) wing 2000/06/25-23:46
記事番号6606へのコメント
こんにちは。wingです。

>>表 ”a.tbl”,終了状態=&終了1
>>表 ”a.tbl”,終了状態=&終了2
>
>ひょっとして、後者の表は"b.tbl"(別表)?

その通り、”b.tbl”です。
書き間違えてしまったようです。
6624 Re:終了状態の判定について wing 2000/06/26-00:09
記事番号6618へのコメント
みなさん、ご回答ありがとうございます。

今、作っているシステムは、ネットワークで複数のユーザーが使用します。
ユーザーは、エラー等の対処はできません。
そこで、終了状態を判定して、ユーザーが対応できるようにメッセージを表示しようと考えています。

>これに対して、「表 "a.tbl",終了状態=&終了」の様に書くと、仮に表が開けなか
>った場合でもブレークはせず、そのコマンドは実行されないまま、次のコマンドに
>進みます。

次のコマンドに進んだ時は、次のコマンドは実行されてしまうのですか。

>● 結果判定の時期
>いつでも構いません。一般的にいえば、表コマンドで表を開いた直後にこの判定を
>行い、表が正しく開かれたかを確認して次のコマンドに進めます。

エラーが起きた場合は、それ以降の処理は実行したくありません。
次のコマンドに進み、実行されてしまうと考えると、コマンドの直後に判定するのが良い方法だと思います。
その方法で、作成して行きたいと思います。
6628 Re:終了状態の判定について 佐田 守弘 2000/06/26-17:07
記事番号6624へのコメント
wingさん

>次のコマンドに進んだ時は、次のコマンドは実行されてしまうのですか。

「次のコマンドに進む」とは、次のコマンドが実行されると言う意味です。
もしそのコマンドが実行できなければ、そこで新たなエラーが発生します。

佐田守弘(KS-00119)
6630 Re:終了状態の判定について wing 2000/06/26-23:36
記事番号6628へのコメント
ありがとうございました。
ようやく、理解できました。

次のコマンドが実行されてしまうのであれば、各コマンドの次に終了状態を判定して、
エラー時の処理を組み込みながら作成を進めたいと思います。

今後も質問を出す機会があるかと思います。
その時は、またよろしくお願いします。

戻る