文字列操作エラーステータス(STR_ERR_STAT)
文字列操作を行った場合にエラーが発生した場合には、文字列操作エラーステータス[e:STR_ERR_STAT]にエラーがセットされます。[e:STR_ERR_STAT]が0の場合は正常であり、0以外の値が格納されているとエラーです。文字列操作エラーステータス[e:STR_ERR_STAT]には、最後に発生したエラーが格納されます。文字列操作エラーステータスの設定は、Dスクリプトツールボックスの「SIOポート操作/ラベル設定」で行います。文字列操作エラーには、次のようなエラーがあります。
エラー番号0/正常
エラー番号1/文字列オーバーフロー
_strset( ), _strlen( ), _strcat( ), _strmid( ), _IO_READ_WAIT(
)関数に256バイト以上の文字列を直接引数に与えた。
または、_strcat ( )、_ldcopy ( )関数実行時、データバッファを超える文字列を作成した。
例)
_strcat(databuf0, databuf1)
databuf0に1020バイトの文字列、databuf1に60バイトの文字列があるときに上記関数を実行した(データバッファ0のサイズである1024バイトを超えるためエラーとなる)
エラー番号2/文字列変換エラー
_hexasc2bin( ), _decasc2bin ( ) 関数に指定外の文字コードを与えた。
例)
_hexasc2bin( )の第2 引数に0~9, A~F, a~f以外の文字コード(Gなど)をセットした
エラー番号3/文字列抽出エラー
_strmid ( ) 関数で指定した文字列より長い文字列を抽出しようとした。または、指定した文字列より大きいオフセット値を指定した。
例)
_strmid (databuf0, "12345678", 2, 8)
オフセット2から8文字分抽出しようとした
文字列操作エラーステータスをDスクリプト、グローバルDスクリプトで使用することはできません。誤って読み出した場合には、0を読み込みます。
各関数実行時にエラーステータスに格納されます。
[e:STR_ERR_STAT]は、メイン関数の先頭でエラーステータス確認用のチェックを記述してください。次のように記述することでエラーが確認できます。
記述例
if ([e:STR_ERR_STAT] <> 0) //
エラーステータスをチェック
{
set ([b:[#INTERNAL]LS005000])// エラー表示用ランプのビットセット
}
endif
エラーが発生した段階で処理が終了し、メイン関数の先頭に戻ります。(命令が呼び出された関数の中にある場合、呼び出し元の関数の呼び出された次の行に戻ります。)