比较字符串 和数字串
要比较字符 串(类型 C)和数字 文本(类型 N),可以 在逻辑表达 式中使用下 列运算符。
<运算符> | 含 义 |
CO | 仅包 含 |
CN | 不仅 包含 |
CA | 包 含任何 |
NA | 不 包含任何 |
CS | 包 含字符串 |
NS | 不 包含字符串 |
CP | 包含模 式 |
NP | 不包 含模式 |
因为除类型 N 和 C 外,系统不 能执行任何 其它类型转 换,所以, 在进行包含 这些运算之 一的比较时 ,操作数应 该是类型 N 或 C。
运算符的功 能如下:
CO (仅包含)
如果 <F1> 仅包含 <F2> 中的字符, 则逻辑表达 式
<F1> CO <F2>
为真。该比 较区分大小写,并包括 尾部空格。 如果比较结果为真,则 系统字段 SY-FDPOS 包括 <F1> 的长度。如 果为假,则 SY-FDPOS 包含 <F1> 中第一个未 在 <F2> 内出现的字符的偏移量 。
<F1> | <operator> | <F2> | Result | SY-FDPOS | 大小写 | 含义 |
'BD ' | CO | 'ABCD ' | 真 | 5 | 区分 | 仅仅包含 |
'BD ' | CO | 'ABCDE' | 假 | 2 | 区分 | 仅仅包含 |
CN (不仅包含 )
如果 <F1> 还包含 <F2> 之外的其他 字符,则逻辑表达式
<F1> CN <F2>
为真。该比较区分大小 写,并包括 尾部空格。 如果比较结果为真,则 系统字段 SY-FDPOS 包含 <F1> 中第一个未 同时在 <F2> 中出现的字符的偏移量 。如果为假 ,SY-FDPOS 包含 <F1> 的长度。
<F1> | <operator> | <F2> | Result | SY-FDPOS | 大小写 | 含义 |
'ABC12' | CN | 'ABCD ' | 真 | 3 | 区分 | 不仅仅包含 |
'ABABC' | CN | 'ABCD ' | 假 | 5 | 区分 | 不仅仅包含 |
CA (包含任何 )
如果 <F1> 至少包含 <F2> 的一个字符 ,则逻辑表 达式
<F1> CA <F2>
为真。该比 较区分大小写。如果比 较结果为真 ,则系统字 段 SY-FDPOS 包含 <F1> 中第一个也 在 <F2> 中出现的字 符的偏移量 。如果为假 ,SY-FDPOS 包含 <F1> 的长度。
<F1> | <operator> | <F2> | Result | SY-FDPOS | 大小写 | 含义 |
'ABcde' | CA | 'Bd ' | 真 | 1 | 区分 | 包含任何 |
'ABcde' | CA | 'bD ' | 假 | 5 | 区分 | 包含任何 |
NA (不包含任 何)
如果 <F1> 不包含 <F2> 的任何字符 ,则逻辑表 达式
<F1> NA <F2>
为真。该比 较区分大小 写。如果比 较结果为真 ,则系统字 段 SY-FDPOS 包含 <F1>的 长度。如果 为假,则 SY-FDPOS 包含 <F1> 中在 <F2> 内出现的第 一个字符的 偏移量。
<F1> | <operator> | <F2> | Result | SY-FDPOS | 大小写 | 含义 |
'ABAB ' | NA | 'AB ' | 假 | 0 | 区分 | 不包含任何 |
'ababa' | NA | 'AB ' | 真 | 5 | 区分 | 不包含任何 |
CS (包含字符 串)
如果 <F1> 包含字符串 <F2>, 则逻辑表达 式
<F1> CS <F2>
为真。忽略 尾部空格并 且比较不区分大小写。 如果比较结 果为真,则 系统字段 SY-FDPOS 包含 <F2> 在 <F1> 中的偏移量 。如果为假 ,SY-FDPOS 包含 <F1> 的长度。
<F1> | <operator> | <F2> | Result | SY-FDPOS | 含义 | 大小写 |
'ABcde' | CS | 'bC ' | 真 | 1 | 包含字符串 | 不区分 |
'ABcde' | CS | 'ce ' | 假 | 5 | 包含字符串 | 不区分 |
NS (不包含字 符串)
如果 <F1> 不包含字符 串 <F2>, 则逻辑表达 式
<F1> NS <F2>
为真。忽略 尾部空格且 比较不区分 大小写。如 果比较为真 ,系统字段 SY-FDPOS 包含 <F1> 的长度。如 果为假,系 统字段 SY-FDPOS 包含 <F2> 在 <F1> 中的偏移量 。
<F1> | <operator> | <F2> | Result | SY-FDPOS | 含义 | 大小写 |
'ABcde' | NS | 'bC ' | 假 | 1 | 不包含字符串 | 不区分 |
'ABcde' | NS | 'ce ' | 真 | 5 | 不包含字符串 | 不区分 |
CP (包含模式 )
如果 <F1> 包含模式 <F2>, 则逻辑表达 式
<F1> CP <F2>
为真。如果 <F2> 属于类型 C,则可以 在 <F2> 中使用下列 通配符:
_ * 用于任何字 符串
_ + 用于任何单 个字符
忽略尾部空 格且比较不 区分大小写 。如果比较 结果为真, 系统字段 SY-FDPOS 包含 <F2> 在 <F1> 中的偏移量 。如果为假 ,SY-FDPOS 包含 <F1> 的长度。
如果要对 <F2> 中的特殊字 符进行比较 ,请将换码 字符 # 放到其前面 。可以使用 换码字符 # 指定
_ 大小写字 符
_ 通配符 "*"(输 入 #*)
_ 通配符 "+" (输入 #+)
_ 换码符号 本身 (输入 ##)
_ 字符串结 尾的空格 (输入 #___)
<F1> | <operator> | <F2> | Result | SY-FDPOS | 大小写 | 含义 |
'ABcde' | CP | '*b*' | 真 | 1 | 不区分 | 包含模式 |
'ABcde' | CP | '*#b*' | 假 | 5 | 不区分 | 包含模式 |
NP (不包含模 式)
如果 <F1> 不包含模式 <F2>, 则逻辑表达 式
<F1> NP <F2>
为真。在<F2>中 ,可以使用 与 CP 相同的通配 符和换码字 符。
忽略尾部空 格且比较不 区分大小写 。如果比较 结果为真, 则系统字段 SY-FDPOS 包含 <F1>. 的长度,如 果为假,SY-FDPOS 包含 <F2> 在 <F1> 中的偏移量 。
DATA: F1(5) TYPE C VALUE<F1>,
F2(5) TYPE C VALUE <F2>.
IF F1 <operator> F2.
WRITE: / 'Comparison true, SY-FDPOS=', SY-FDPOS.
ELSE.
WRITE: / 'Comparison false, SY-FDPOS=', SY-FDPOS.
ENDIF.
下表列出该 程序的执行 结果,取决 于所用的运 算符和 F1 / F2 字段。
<F1> | <operator> | <F2> | Result | SY-FDPOS | 大小写 | 含义 |
'ABcde' | NP | '*b*' | 假 | 1 | 不区分 | 不包含模式 |
'ABcde' | NP | '*#b*' | 真 | 5 | 不区分 | 不包含模式 |