compareBytes()
vgLib.compareBytes() システム関数は、2 つのサブストリングの内容の形式に関係なく、その内容をバイト単位で比較します。
vgLib.compareBytes() は、VisualAge® Generator からマイグレーションされるコードの互換性の目的で維持される多くの関数の 1 つです。この意図から、新規のコードでは標準の EGL 演算子を使用できます。
EGL は、バイト間で値のバイナリー比較を実行します。 値の長さが一致しない場合、EGL は短い方の値にブランクを埋め込みます (値が数値の場合も)。
構文
vgLib.compareBytes(
var1 HEX inOut,
var1index INT in,
var1SubstrLength INT in,
var2 HEX inOut,
var2Index INT in,
var2SubstrLength INT in )
returns (result INT)
- var1
- 最初の比較値の派生元の値。 HEX と参照互換性のある任意の値を使用できます。
- var1SubstrIndex
- 先頭バイトの指標値が 1 である場合に、var1 のサブストリングの開始バイトを識別します。この指標には、整数リテラルまたは変数 (INT または BIN(9)) を使用できます。
- var1SubstrLength
- var1 から派生するサブストリングのバイト数を識別します。 この長さには、整数リテラルまたは変数 (INT または BIN(9)) を使用できます。
- var2
- 2 番目の比較サブストリングの派生元の値。 HEX と参照互換性のある任意の値を使用できます。
- var2SubstrIndex
- 先頭バイトの指標値が 1 である場合に、var2 のサブストリングの開始バイトを識別します。この指標には、整数リテラルまたは変数 (INT または BIN(9)) を使用できます。
- var2SubstrLength
- var2 から派生するサブストリングのバイト数を識別します。 この長さには、整数リテラルまたは変数 (INT または BIN(9)) を使用できます。
- result
- 次のような、関数で戻される整数値 (INT または BIN(9))。 関数は、次の値のいずれかを戻すことができます。
- -1
- var1 を基にしたサブストリングは、var2 を基にしたサブストリングより小さい。
- 0
- var1 を基にしたサブストリングは、var2 を基にしたサブストリングと等しい。
- 1
- var1 を基にしたサブストリングは、var2 を基にしたサブストリングより大きい。
エラーに関する考慮事項
V6 の例外互換性 (V6 の例外互換性の使用を参照) を使用している場合、以下の値が sysVar.errorCode で戻されます。
- 8
- 指標が 1 より小さいか、値の長さよりも大きい。
- 12
- 長さが 1 より小さい。
- 20
- DBCHAR ストリングや UNICODE ストリングの指標が、2 バイト文字の中間を指しています。
- 24
- DBCHAR ストリングや UNICODE ストリングの長さを示すバイト数が、奇数になっています (2 バイト文字の長さは常に偶数になります)。
例
以下の例は、vgLib.compareBytes() 関数を使用する方法を示しています。
target, source HEX (6); // index must be multiple of 2
result INT;
target = "123456";
source = "34";
result = vgLib.compareBytes(target,2,1,source,1,1); // result = 0