Você está na página 1de 3

Logical Expressions - Comparison Operators for Character-Type Fields

In some cases, the syntax rules that apply to Unicode programs are different than those for non-Unicode programs. See Processing Strings in Unicode Programs. In the condition " c1 op c2", the comparison operator op between the fields c1 and c2 may be any of the operations listed below, but c1 and c2 must be character- type fields ( C, STRING, N, D, T . 1. CO (!ontains "nly # c1 contains only characters from the string c2. If c1 or c2 is of type C, the comparison ta$es into account the full length of the field, including blan$s at the end. comparison. If c1 is of type STRING and empty, the result of the comparison is always positi%e. If c2 is of type STRING and empty, the result of the comparison is always negati%e, unless c1 is also an empty string. If the result of the comparison is negati%e, the field SY-FDPOS contains the offset of the first character in c1 which is not also included in c2. If the result of the comparison is positi%e, the system field SY-FDPOS contains the length of c1. &he comparison is case-sensiti%e. 'xamples# 'ABCDE' CO 'XYZ' is false( SY-FDPOS ) *. 'ABCDE' CO 'AB' is false( SY-FDPOS ) +. 'ABCDE' CO 'ABCDE' is true( SY-FDPOS ) ,.

2.

CN (!ontains -ot only # "c1 CN c2" is e.ui%alent to " NOT ( c1 CO c2 )". c1 contains not only characters from c2. If the result of the comparison is positi%e, the system field SY-FDPOS contains the offset of the first character in c1 which is not also in c2. If the result of the comparison is negati%e, the system field SY-FDPOS contains the length of c1.

3.

CA (!ontains /ny # c1 contains at least one character from the string c2. If c1 or c2 is of type C, the comparison ta$es into account the full length of the field, including blan$s at the end. If c1 or c2 is of type STRING and empty, the result of the comparison is always negati%e. If the result of the comparison is positi%e, the system field SY-FDPOS contains the offset of the first character in c1 which is also in c2. If the result of the comparison is negati%e, the system field SY-FDPOS contains the length of c1. &he comparison is case-sensiti%e. 'xamples#

'ABCDE' CA 'CY' is true( SY-FDPOS ) +. 'ABCDE' CA 'XY' is false( SY-FDPOS ) ,.

4.

NA (contains -ot /ny # "c1 NA c2" is e.ui%alent to "NOT ( c1 CA c2 )". c1 contains no characters from c2. SY-FDPOS is set accordingly.

5.

CS (!ontains String # c1 contains the character string c2. &railing blan$s in c1 and c2 are ignored if the respecti%e field is of type C. /n empty string c2 (i.e., only blan$s with type C, or empty string with type STRING is included in any string c1, including the empty string itself. "n the other hand, there is no non-empty string c2 included in an empty string c1. If the result of the comparison is positi%e, the system field SY-FDPOS contains the offset of the first character of c2 in c1. If the result of the comparison is negati%e, the system field SY-FDPOS contains the length of c1. &he comparison is not case-sensiti%e. 'xamples# 'ABCDE' CS 'CD' is true( SY-FDPOS ) +. 'ABCDE' CS 'XY' is false( SY-FDPOS ) ,. 'ABAAA' CS 'AB ' is true( SY-FDPOS ) *. ' ABC' CS ' AB' is true( SY-FDPOS ) 0. 'ABC DEF' CS ' ' is true( but: SY-FDPOS ) *, since ' ' is interpreted as a trailing blan$ and is thus ignored.

6.

NS (contains -o String # "c1 NS c2" is e.ui%alent to " NOT ( c1 CS c2 )". c1 does not contain c2. SY-FDPOS is set accordingly. CP (!ontains Pattern # &he complete string c1 matches the pattern c2 (c1 "matches" c2 . &he pattern c2 can contain ordinary characters and wildcards. '*' stands for any character string and '+' denotes any character. If the result of the comparison is positi%e, the system field SY-FDPOS contains the offset of the first character of c2 in c1. &he wildcard character '*' at the beginning of the pattern c2 is ignored when determining the %alue of SY-FDPOS. If the result of the comparison is negati%e, the system field SY-FDPOS contains the length of c1. 'xamples# 'ABCDE' CP '*CD*' is true( SY-FDPOS ) +. 'ABCDE' CP '*CD' is false( SY-FDPOS ) ,. 'ABCDE' CP '++CD+' is true( SY-FDPOS ) *.

7.

'ABCDE' CP '+CD*' is false( SY-FDPOS ) ,. 'ABCDE' CP '*B*D*' is true( SY-FDPOS ) 0. &he character '#' has a special meaning. It ser%es as an escape symbol and indicates that the %ery next character should be compared "exactly". &his allows you to search for# - characters in upper or lower case e.g.# c1 CP '*#A#b*' - the wildcard characters '*', '+' themsel%es e.g.# c1 CP '*#**' or c1 CP '*#+*' - the escape symbol itself e.g.# c1 CP '*##*' - blan$s at the end of c0 e.g.# c1 CP '*# ' If c2 does not contain the wildcard character '*', the shorter field is padded with "soft blan$s" to bring it up to the length of the longer field. 'xamples# 'ABC' CP 'ABC ' is true, 'ABC ' CP 'ABC' is true, but 'ABC' CP 'ABC+' is false, 'ABC' CP 'ABC# ' is false, because a "soft blan$" is neither any character ('+' nor a "real" blan$ ('# ' . &he escape symbol does not affect the length of 2 ('A#!#B' still has the length 1 . &he comparison is not case-sensiti%e.

8.

NP (contains -o Pattern # "c1 NP c2" is e.ui%alent to " NOT ( c1 CP c2 )" c1 does not match c2.

Você também pode gostar