Gadgets para Blogger

Operadores para manejo de String

En la condición "c1 op c2", el operador relacional op entre las variables c1 y c2 puede ser cualquiera de las operaciones listadas abajo, pero c1 y c2 deben ser caracteres como (tipo C, STRING, N, D, T).

1. CO (contiene solo):

c1 contiene solo caracteres desde el string c2.
Si c1 o c2 es del tipo C, la comparación toma en cuenta el largo total de la variable, incluyendo los espacios al final.
Si c1 es del tipo STRING y vacío, el resultado de la comparación es siempre positiva.
Si c2 es del tipo STRING y vacío, el resultado de la comparación es siempre negativa, a menos que c1 sea tambien un string vacío.
Si el resultado de la comparación es negativa, la variable SY-FDPOS contiene el offset del primer caracter en c1 que no está incluido en c2.
Si el resultado de la comparación es positivo, la variable SY-FDPOS contiene el largo de c1.
La comparación es sensible a minúsculas y mayúsculas.

Ejemplos:

'ABCDE' CO 'XYZ' es falso; SY-FDPOS = 0.
'ABCDE' CO 'AB' es falso; SY-FDPOS = 2.
'ABCDE' CO 'ABCDE' es verdadero; SY-FDPOS = 5.

2. CN (no solo contiene):
"c1 CN c2" es equivalente a "NOT ( c1 CO c2 )".
c1 no solo contiene caracteres de c2.
Si el resultado de la comparación es positiva, la variable SY-FDPOS contiene el offset del primer caracter en c1 que no esta en c2.
Si el resultado de la comparación es negativa, la variable SY-FDPOS contiene el largo de c1.

3. CA (contiene cualquiera):
c1 contiene a lo menos un caracter de c2.
Si c1 o c2 es del tipo C, la comparación toma en cuenta el largo total de la variable, incluyendo los espacios al final.
Si c1 o c2 es del tipo STRING y vacío, el resultado de la comparación es siempre negativa.
Si el resultado de la comparación es positiva, la variable SY-FDPOS contiene el offset del primer caracter en c1 que esta en c2.
Si el resultado de la comparación es negativa, la variable SY-FDPOS contiene el largo de c1.
La comparación es sensible a minúsculas y mayúsculas.

Ejemplos:

'ABCDE' CA 'CY' es verdadero; SY-FDPOS = 2.
'ABCDE' CA 'XY' es falso; SY-FDPOS = 5.

4. NA (no contiene cualquiera):
"c1 NA c2" es equivalente a "NOT ( c1 CA c2 )".
c1 no contiene caracteres de c2.

5. CS (contiene String):
c1 contiene a c2.
Espacios sobrantes en c1 y c2 son ignorados si se trata de variables del tipo C.
Si el resultado de la comparación es positiva, la variable SY-FDPOS contiene el offset del primer caracter de c2 en c1.
Si el resultado de la comparación es negativo, la variable SY-FDPOS contiene largo de c1.
La comparación no es sensible a minúsculas y mayúsculas.

Ejemplos:

'ABCDE' CS 'CD' es verdadero; SY-FDPOS = 2.
'ABCDE' CS 'XY' es falso; SY-FDPOS = 5.
'ABAAA' CS 'AB ' es verdadero; SY-FDPOS = 0.
' ABC' CS ' AB' es verdadero; SY-FDPOS = 1.
'ABC DEF' CS ' ' es verdadero; but: SY-FDPOS = 0,
debido a que ' ' es interpretado como como espacio sobrante y se ignora.

6. NS (no contiene string):
"c1 NS c2" es equivalente a "NOT ( c1 CS c2 )".
c1 no contiene a c2.

7. CP (contiene patrón):
El string completo c1 coincide con el patrón c2 (c1 "coincide con" c2).
El patrón c2 puede contener caracteres comunes y asteíscos '*' para cualquier string y '+' para cualquier caracter.
Si el resultado de la comparación es positiva, la variable SY-FDPOS contiene el offset del primer caracter de c2 en c1. El asterísco '*' al principio del patrón c2 es ignorado cuando se determina el valor de SY-FDPOS.
Si el resultado de la comparación es negativa, la variable SY-FDPOS contiene el largo de c1.

Ejemplos:

'ABCDE' CP '*CD*' es verdadero; SY-FDPOS = 2.
'ABCDE' CP '*CD' es falso; SY-FDPOS = 5.
'ABCDE' CP '++CD+' es verdadero; SY-FDPOS = 0.
'ABCDE' CP '+CD*' es falso; SY-FDPOS = 5.
'ABCDE' CP '*B*D*' es verdadero; SY-FDPOS = 1.

El caracter '#' tiene un significado especial. Sirve como símbolo de escape e indica que cada caracter siguiente debería ser comparado "exactamente".
Esto permite buscar por:

- caracteres en mayúsculas o minúsculas
ejemplo: c1 CP '*#A#b*'
- buscar caracteres '*', '+' como tales
ejemplo: c1 CP '*#**' o c1 CP '*#+*'
- el símbolo de escape
ejemplo: c1 CP '*##*'
- espacios al final de c1
ejemplo: c1 CP '*# '


Ejemplos:

'ABC' CP 'ABC ' es verdadero,
'ABC ' CP 'ABC' es verdadero,

pero

'ABC' CP 'ABC+' es falso,
'ABC' CP 'ABC# ' es falso,


La comparación no es sensible a minúsculas y mayúsculas.

8. NP (no contiene patrón):
"c1 NP c2" es equivalente a "NOT ( c1 CP c2 )" c1 no coincide con c2.

1 comentario:

Esperamos tus comentarios y sugerencias para mejorar el sitio.

Related Posts