compareStr()

La función de sistema StrLib.compareStr compara dos subseries de acuerdo con su orden ASCII o EBCDIC durante la ejecución.

  StrLib.compareStr(
    destino un tipo de caracteres in,
    índiceSubserieDestino INT in,
    longitudSubserieDestino INT in,
    origen un tipo de caracteres in,
    índiceSubserieOrigen INT in,
    longitudSubserieOrigen INT in  )
  returns (resultado INT)
resultado
Campo numérico que recibe uno de los siguientes valores (definido como de tipo INT o el equivalente: tipo BIN con longitud 9 y sin posiciones decimales) devueltos por la función:
-1
La subserie basada en destino es menor que la subserie basada en origen
0
La subserie basada en destino es igual que la subserie basada en origen
1
La subserie basada en destino es mayor que la subserie basada en origen
destino
Serie de la que se deriva una subserie destino. Puede ser un campo o un literal.
índiceSubserieDestino
Identifica el byte inicial de la subserie de destino, suponiendo que el primer byte de destino tenga el valor de índice 1. Este índice puede ser un literal entero. Como alternativa, este índice puede ser un campo definido como de tipo INT o el siguiente equivalente: tipo BIN con longitud 9 y sin posiciones decimales.
longitudSubserieDestino
Identifica el número de bytes de la subserie que se deriva de destino. La longitud puede ser un literal entero. Como alternativa, este índice puede ser un campo definido como de tipo INT o el siguiente equivalente: tipo BIN con longitud 9 y sin posiciones decimales.
origen
Serie de la que se deriva una subserie origen. Puede ser un campo o un literal.
índiceSubserieOrigen
Identifica el byte inicial de la subserie de origen, suponiendo que el primer byte de origen tenga el valor de índice 1. Este índice puede ser un literal entero. Como alternativa, este índice puede ser un campo definido como de tipo INT o el siguiente equivalente: tipo BIN con longitud 9 y sin posiciones decimales.
longitudSubserieOrigen
Identifica el número de bytes de la subserie que se deriva de origen. La longitud puede ser un literal entero. Como alternativa, este índice puede ser un campo definido como de tipo INT o el siguiente equivalente: tipo BIN con longitud 9 y sin posiciones decimales.

Se realiza una comparación binaria de byte a byte de los valores de subserie. Si las subseries no tienen la misma longitud, la subserie más corta se rellena con espacios antes de la comparación.

Consideraciones de definición

En sysVar.errorCode se devuelven los siguientes valores:
8
El índice es menor que 1 o mayor que la longitud de la serie.
12
La longitud es menor que 1.
20
Índice de doble byte no válido. El índice de una serie DBCHAR o UNICODE señala a la mitad del carácter de doble byte
24
Longitud de doble byte no válida. La longitud en bytes de una serie DBCHAR o UNICODE es impar (las longitudes de doble byte deben ser siempre pares).

Ejemplo

  target = "123456";
  source = "34";
  result = 
    StrLib.compareStr(target,3,2,source,1,2);
  // resultado = 0
Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.