MPC2000 Reference Manual [JAPANESE] [ENGLISH]
【コマンド】   【制御文】
【使い方】
ON_ERROR

ON_ERROR  *USB 
ON_ERROR VOID
【書   式】 【機   能】
ON_ERROR arg

エラー処理ジャンプ先を定義
【解   説】
コマンド、関数などでエラーが発生した場合、通常、実行中のプログラムが停止します。
ON_ERROR コマンドは、プログラムを停止させず、エラー処理プログラムを指定して、プログラムの実行を継続させます。
方法は以下のとおりです。
ON_ERROR *labelで飛び先を規定します。
規定を解除する場合は、ON_ERROR VOIDを実行します。
ON_ERRORはどのようなエラーでもエラー処理に制御を移してしまうため、
エラー処理プログラムでは、適切にエラーコードによって処理を分類する必要があります。
通常、実行時にで発生するエラーは、致命的なものがほとんどで、リトライ措置は不可能です。
この場合は、エラー場所と内容を外部に知らせてデバッグに役立てます。
しかし、USBメモリをアクセスするような場合は、接続デバイスの状態によりランタイム・エラーが発生することがあります。
この場合は、RST_USBなど適切な処理により、デバイスを正常化してプログラムを再継続することができます。

ON_ERRORによるエラー処理ルーチンから、通常処理プログラムへの戻りにはGOTO,RESUMEを使用します。
GOTOの場合は、エラー発生場所がサブルーチン中の場合、戻し場所に注意してください。

RESUMEの場合は発生箇所に戻すため、コマンドをリトライする場合は、RESUME,
リトライさせずに次の処理に移るには、RESUME _NEXTと記述します。

エラーコードは、タスク変数、err_に反映されます。err_の値に適合した処理を記述します。
err_は上位1byteがエラーコード、下位3byteがプログラム番号となっています。

err_>>24 --> エラーコード
ERR$(err_) --> エラーメッセージ
err_&&HFFFFFF --> プログラム番号

エラー番号はエラーメッセージの末尾に表示されます。
以下はUSBメモリ関連のエラーコードです。

このUSBは使用中です。:53
USBメモリがありません。:54
MRS-MCOMがありません。:55
USBメモリが動作異常。:56




FORK   1 *case1
TIME 500
FORK 2 *case2
END
*case1
ON_ERROR *err1
DO
S_MBK 1 9000
PRINT 10
PRINT 20
LOOP
*err1
PRINT "case1=" TASKn err_&&H00FFFFFF ERR$(err_) err_>>24
TIME 1000
RESUME _NEXT
END
*case2
ON_ERROR *err2
DO
OUT 1 -10000
PRINT 1
PRINT 2
LOOP
*err2
PRINT "case2=" TASKn err_&&H00FFFFFF ERR$(err_) err_>>24
TIME 1000
RESUME
END
  [LASTMODIFY]2011-06-20 11:36:20 [CREATEDATE]2009-04-06 16:12:31
MPC2000 Reference Manual -R5.11-   (C)2007 ACCEL Corp. all right reserved.