viernes, 5 de abril de 2013

Operadores Lógicos con Strings

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.

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.