compareBytes()

Die Systemfunktion vgLib.compareBytes() vergleicht die Inhalte von zwei Unterzeichenfolgen Byte für Byte, ohne auf das Format oder den Inhalt selbst zu achten.

vgLib.compareBytes() ist eine von vielen Funktionen, die zum Zweck der Kompatibilität mit aus VisualAge Generator migriertem Code beibehalten wird. Neuer Code kann Standard-EGL-Operatoren für diese Zwecke einsetzen.

EGL führt einen binären Byte-für-Byte-Vergleich der Werte aus. Wenn die Werte nicht dieselbe Länge haben, füllt EGL den kürzeren Wert mit Leerzeichen auf, auch wenn es sich um einen numerischen Wert handelt.

Syntax

  vgLib.compareBytes(
    var1 HEX inOut,
    var1index INT in,
    var1SubstrLength INT in,
    var2 HEX inOut,
    var2Index INT in,
    var2SubstrLength INT in  )
  returns (result INT)
var1
Wert, von dem der erste Vergleichswert abgeleitet wird. Dabei kann es sich um einen beliebigen Wert handeln, der verweiskompatibel mit HEX ist.
var1SubstrIndex
Gibt das Anfangsbyte der Unterzeichenfolge in var1 an, vorausgesetzt, dass der Indexwert des ersten Bytes '1' ist. Bei diesem Index kann es sich um ein ganzzahliges Literal oder eine Variable (INT oder BIN(9)) handeln.
var1SubstrLength
Gibt die Anzahl von Bytes in der Unterzeichenfolge an, die von var1 abgeleitet wird. Die Länge kann ein ganzzahliges Literal oder eine Variable sein (INT oder BIN(9)).
var2
Wert, von dem die zweite Vergleichsunterzeichenfolge abgeleitet wird. Dabei kann es sich um einen beliebigen Wert handeln, der verweiskompatibel mit HEX ist.
var2SubstrIndex
Gibt das Anfangsbyte der Unterzeichenfolge in var2 an, vorausgesetzt, dass der Indexwert des ersten Bytes '1' ist. Bei diesem Index kann es sich um ein ganzzahliges Literal oder eine Variable (INT oder BIN(9)) handeln.
var2SubstrLength
Gibt die Anzahl von Bytes in der Unterzeichenfolge an, die von var2 abgeleitet wird. Die Länge kann ein ganzzahliges Literal oder eine Variable sein (INT oder BIN(9)).
result
Ein ganzzahliger Wert (INT oder BIN(9)), der von der Funktion zurückgegeben wird. Die Funktion kann einen der folgenden Werte zurückgeben:
-1
Die Unterzeichenfolge, die auf var1 basiert, ist kleiner als die Unterzeichenfolge, die auf var2 basiert.
0
Die Unterzeichenfolge, die auf var1 basiert, entspricht der Unterzeichenfolge, die auf var2 basiert.
1
Die Unterzeichenfolge, die auf var1 basiert, ist größer als die Unterzeichenfolge, die auf var2 basiert.

Hinweise zu Fehlern

Wenn Sie V6-Ausnahmekompatibilität verwenden (siehe V6-Ausnahmebedingungskompatibilität verwenden), werden die folgenden Werte in sysVar.errorCode zurückgegeben:
8
Der Index ist kleiner als 1 oder größer als die Länge des Werts.
12
Die Länge ist kleiner als 1.
20
Der Index für eine DBCHAR- oder UNICODE-Zeichenfolge zeigt auf die Mitte eines Doppelbytezeichens.
24
Die Länge in Bytes für eine DBCHAR- oder UNICODE-Zeichenfolge ist ungerade. (Doppelbytelängen müssen jedoch immer gerade sein.)

Beispiel

Im folgenden Beispiel wird gezeigt, wie die Funktion vgLib.compareBytes() verwendet werden soll.

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

Feedback