compareStr()

Die Systemfunktion vgLib.compareStr() vergleicht zwei Unterzeichenfolgen entsprechend ihrer ASCII- oder EBCDIC-Reihenfolge zur Laufzeit.

vgLib.compareStr() ist eine von vielen Funktionen, die für die Kompatibilität mit früheren Versionen beibehalten werden. Neuer Code kann Standard-EGL-Operatoren für diese Zwecke einsetzen.

EGL führt einen 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.compareStr(
    var1 CharType in,
    var1SubstrIndex INT in,
    var1SubstrLength INT in,
    var2 CharType in,
    var2SubstrIndex INT in,
    var2SubstrLength INT in  )
  returns (result INT)
var1
Wert, von dem die erste Vergleichsunterzeichenfolge abgeleitet wird. Dabei kann es sich um eine Variable oder ein Literal handeln.
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 eine Variable oder ein Literal handeln.
var2SubstrIndex
Gibt das Anfangsbyte der Unterzeichenfolge in var2 an, vorausgesetzt, dass das erste Byte in source den Indexwert '1' hat. 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
Einer der folgenden ganzzahligen Werte (INT oder BIN(9)), der von der Funktion zurückgegeben wird:
-1
Die Unterzeichenfolge, die auf var1 basiert, ist kleiner als die Unterzeichenfolge, die auf var2 basiert.
0
Die Unterzeichenfolge, die auf var1 basiert, ist gleich 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 der Zeichenfolge.
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

Das folgende Beispiel stellt die Verwendung der Funktion vgLib.compareStr() dar.

target, source CHAR (6);
result INT;
target = "123456";
source = "34";
result = vgLib.compareStr(target,3,2,source,1,2); // result = 0

Kompatibilität

Tabelle 1. Hinweise zur Kompatibilität für 'vgLib.compareStr()'
Plattform Problem
COBOL-Generierung NUM ist ein gültiger Typ für die Quellen- oder Zielvariable.

Feedback