エラー対策


そもそもマイツールは自分の道具ですから、他の人に関係なく自分がしないミスをフォローする必要は無いわけです。 が、自分一人だけが判ってるオートでは他の人に変わって貰えず、病気も出来ませんよね〜。
自分が良くするミスもフォロー出来るのが、オートのメリットです。

また、原因不明のエラーでエラーで訳が分からない、という事は有りません?
エラー対策を考えるようになると、何故エラーが出るのか、理解出来るようになります。

EFのエスケープ終了


エラー終了対策の代表的なものに、EFのエスケープ終了というのが有ります。
EFは ?E で終わらないといけないのに、ついエスケープを押してしまった!という失敗対策。

EFでエスケープ終了すると、Z40に画面表示のページ番号が入ります。
?Eで正常に終了すると、Z40に0が入ります。

これを利用して、エスケープしたら注意を促す事が出来ます。
私は下のようにしています。
画面を一旦保存した後、どうするのか聞かせています。

EF部分を、あなたのに変更なされば、使えるかと思います。

*EF
  DPON:DR:2:1:V10="EF2":
  EF:Z17:=*振替伝票デザイン頁:S/1-Z18:?:Z21=Z0:        *Z21 書込み最終

*Z40  エスケ-プ終了…画面表示頁数  ?E終了…0
  IF Z40=0 THEN:GOTO *整理:ENDIF:                     *正常終了時

*エスケ―プ終了時                                     *Z40>0
  IF [T1,1]="" THEN:DPOFF:DL:T:DPON:ENDIF:             *空行削除
  Z21=Z40:W:Z21::                                      *画面表示頁数代入
  COLOR:6:0:2:
  LOC:01:06:PRINT:┏━━━━━━━━━━━━┓:
  LOC:02:06:PRINT:┃エスケ―プ終了  理由は?┃:
  LOC:03:06:PRINT:┗━━━━━━━━━━━━┛:
  V0="ESC":                                            *エスケ-プ時変数設定
  ACCP:1 との間違い(再入力)…エスケ-プ  ?E との間違い(終了)… :?:
  IF V0="ESC" THEN:Z17=Z21:GOTO *EF:                *再入力
  ELSE:IF V0<>"" THEN:BEEP:GOTO *エスケ―プ終了時:ENDIF:
  ENDIF:

*整理               *今月先頭 Z16(EF記入 Z17) 〜 記入最終 Z21
*ここで、ソートしたり、伝票番号を入れたり、計算したりしています。
 STOP:

「入力が範囲外です」対策


このオートを走らせるには、この画面が無いといけないとか、セットになるものです。
ところが、そのページを画面に用意するのを忘れてオートを走らせ、「入力が範囲外です」とエラー音。という事は有りませんでしょうか?

まぁ、全部のオートを画面とページ読み出しの双方に対応させれば良いわけですが、最近では画面の処理で済む事も多く、オートからページを読み出すというのは案外と色々な問題を孕(はら)み、画面処理の方が簡単です。

そうすると今度は、そのオートを画面対応だか、ページを読み出す仕様にしたか、忘れるわけです。σ(^-^; んで、エラーが出る。。。
エラーが出たら読み出せば良いじゃないか、と言えばそうですが。。。自分のオートがエラーで強制終了させられるって、いい感じしませんもん。

第一、次のオートへと渡せなくなります。
オートを連動させず、細切れにすれば良い、ったって。。。そうすると、どのオートが次か忘れます。
番号を振ってさえ、今何番まで実行したかメモする必要が有ったりして!_(.・)/

そこで、エラー対策と相成ります。
画面に表データが有るか無いか程度なら、下の程度で済みますしね。
また、エラーメッセージを入れて置くと、後でオート変更する時も分かり易いです。
作ったのを忘れていて、久しぶりに使ったりする時も、思い出しやすいものです。

[  ※  ]                                  00.08.13    混    L=10326 C=0080

IF T0=0 THEN:
   COLOR:0:7:2:
   LOC:10:16:PRINT:                                            :
   LOC:11:16:PRINT:  あなたが RUN した私は [SEQ2] 。           :
   LOC:12:16:PRINT:  私の役目は、T列に連番を記入する事です。  :
   LOC:13:16:PRINT:  ペ―ジ対応として作られていません。        :
   LOC:14:16:PRINT:  画面に、連番を入れる表を出して下さい。    :
   LOC:15:16:PRINT:                                            :
   STOP:
ELSE:
DR:0:1:SEQ[1,1]=CT:
ENDIF:

STOP:
こういう感じで作れば、オートはエラー終了しませんので、エラー音がなったり、エラー番号を出さずに済みます。
横から見ただけでは、エラーを出してると判らないようにも出来ます。
SETCの4やサウンド設定で、ブザー音は止められますが。。。それも問題で。。。
せめて自分のオートが出すエラー音は、対策を用いれば何とでもなるわけです。

そして、数年忘れていて、ある日見ても「ああ、そうか」と思い出しますよね?
ああ、SEQとは連番を入れる関数だった、とか?

こうした、エラー対策、その他、オートをフル利用出来る為の一覧が有ります。
マイツール命令別 Z変数代入値一覧

解像度を知る


仕事は=の上にメッセージを出せば分かり易いのですが、デスクトップ、ノート、画面の大きさ、解像度、様々で行の数によっては PRINT 文が見えなかったりします。
それで上から表示させる、という手を使っていたのですが。。。ちゃんと用意されていました。^^;

一覧の中に、WSIZE というのが有りますが、これですね〜。

[  ※  ]                                  00.08.13    混    L=5286  C=0170

WSIZE:2:::::
Z91=Z40:
IF T0=0 THEN:
   COLOR:0:7:2:
   LOC:Z91-6:6:PRINT:                                            :
   LOC:Z91-5:6:PRINT:  あなたが RUN した私は [SEQ2] 。           :
   LOC:Z91-4:6:PRINT:  私の役目は、T列に連番を記入する事です。  :
   LOC:Z91-3:6:PRINT:  ペ―ジ対応として作られていません。        :
   LOC:Z91-2:6:PRINT:  画面に、連番を入れる表を出して下さい。    :
   LOC:Z91-1:6:PRINT:                                            :
   STOP:
ELSE:
DR:0:1:SEQ[1,1]=CT:
ENDIF:

STOP:
こうすれば、 Libretto だろうが、21inchディスプレイだろうが、画面をめくり上げて行数が減っていようが、「仕事は=」の上にメッセージが出ます。
但し、全画面表示で使ってらっしゃる方は、WSIZE:1: になさって下さい。

戻る
2000/08/13 -