概要
2つのブロックの任意の位置(オフセット)にあるデータを比較し、比較結果を格納アドレスに返します。
比較結果は、値が一致する場合は「0」、比較元より比較先の値が大きい場合は「1」、比較元より比較先の値が小さい場合は「2」が格納されます。エラーが発生した場合、LS9152にエラーステータスを書き出します。
書式
_memcmp (比較元ブロックアドレス,比較先ブロックアドレス,比較結果格納アドレス,ブロックの先頭からのオフセット,比較するワード数,1ブロックのワード数)
パラメータ1 : 内部デバイス
パラメータ2 : 内部デバイス
パラメータ3 : 内部デバイス
パラメータ4 : 数値(0 ~ 639)、内部デバイス、テンポラリ変数
パラメータ5 : 数値(1 ~ 640)
パラメータ6 : 数値(1 ~ 640)
格納されるデータ
0 : 一致
1 : 比較元< 比較先
2 : 比較元> 比較先
記述例1
_memcmp ([w:[#INTERNAL]LS1000], [w:[#INTERNAL]LS1005], [w:[#INTERNAL]LS0100], 0, 1, 5)
ブロック1とブロック2のオフセット0から1ワードを比較し、比較結果をLS0100に格納する場合
比較元の値が、比較先の値よりも小さいため、LS0100に格納される比較結果は「1」となります。
記述例2
_memcmp ([w:[#INTERNAL]LS1000], [w:[#INTERNAL]LS1010], [w:[#INTERNAL]LS0100], 2, 3, 5)
ブロック1とブロック3のオフセット2から3ワードを比較し、比較結果をLS0100に格納する場合
比較元の値と、比較先の値が一致するため、LS0100に格納される比較結果は「0」となります。
エラーステータス
エディタ関数名 |
LSエリア |
エラーステータス |
要因 |
---|---|---|---|
_memcmp ( ) |
LS9152 |
0000h |
正常終了 |
0001h |
パラメータエラー |
||
0003h |
書き込み、読み込みエラー |
比較結果の格納アドレスを指定できる内部デバイスの有効範囲はユーザエリア(LS20~LS2031、LS2096~LS8191)のみです。
ブロック先頭からのオフセットに、1ブロックのワード数を超える値が指定されると動作しません。
比較するワード数、1ブロックのワード数を超える値が指定されると動作しません。