!--a11y-->
文字列(
C 型)と数値の文字列( N 型)を比較するときは、論理式で次の演算子を使用することができます。
< 演算子 > |
意味 |
CO |
すべて含まれる |
CN |
以外も含まれる |
CA |
少なくとも1文字 |
NA |
含まれない |
CS |
文字列が含まれる |
NS |
文字列が含まれない |
CP |
パターンが含まれる |
NP |
パターンが含まれない |
比較に、上記のいずれかの演算子が含まれている場合は、オペランドのデータ型は
N または C でなければなりません。なぜならば、タイプ N からタイプ C への変換以外のデータ型変換は行われないからです。演算子の機能は次のとおりです。
CO
(すべて含まれる)論理式
<f1> CO <f2>
は、
<f1> の文字すべてが <f2> に含まれているときに真となります。比較は大文字と小文字を区別します。右側の空白は無視されません。真であれば、 <f1> の長さが SY-FDPOS から返されます。偽であれば、 <f1> の文字のうち、 <f2> に含まれていない最初の文字のオフセットが SY-FDPOS から返されます。CN
(以外も含まれる)論理式
<f1> CN <f2>
が真であるのは、
<f2> に属さない文字が <f1> に含まれている場合です。比較は大文字と小文字を区別します。右側の空白は無視されません。比較が真である場合は、システム項目の SY-FDPOS には、 <f2> には含まれない文字で、最初に <f1> 内に現れた文字のオフセットが入ります。偽の場合には、 SY-FDPOS には <f1> の長さが入ります。CA
(少なくとも1文字)論理式
<f1> CA <f2>
が真であるのは、
<f2> にある文字が少なくとも1個 <f1> に含まれる場合です。比較は大文字と小文字を区別します。比較が真であれば、 <f2> にも含まれる <f1> の最初の文字がシステム項目 SY-FDPOS に格納されます。偽の場合には、 SY-FDPOS には <f1> の長さが入ります。NA
(含まれない)論理式
<f1> NA <f2>
は、
<f2> に含まれる文字が <f1> に1つも含まれないと真になります。比較は大文字と小文字を区別します。真であれば、 <f1> の長さが SY-FDPOS から返されます。偽であれば、 <f1> の文字のうち <f2> にも含まれている最初の文字のオフセットが返されます。CS
(文字列が含まれる)論理式
<f1> CS <f2>
が真であるのは、
<f1> が文字列 <f2> を含む場合です。後続のスペースは無視され、比較では大文字 / 小文字は区別 されません。比較の結果が真である場合は、システム項目の SY-FDPOS には <f1> 内の <f2> のオフセットが入ります。偽の場合には、 SY-FDPOS には <f1> の長さが入ります。NS
(文字列が含まれない)論理式
<f1> NS <f2>
は、文字列
<f2> が <f1> に含まれていなければ真になります。後続のスペースは無視され、比較では大文字 / 小文字は区別 されません。真であれば、 <f1> の長さが SY-FDPOS から返されます。偽の場合は、 SY-FDPOS には <f1> 内の <f2> のオフセットが入ります。CP
(パターンが含まれる)論理式
<f1> CP <f2>
は、パターン
<f2> が <f1> に含まれていると真になります。 <f2> が C 型のときは、 <f2> の中で次のワイルドカードを使用することができます。
後続のスペースは無視され、比較では大文字
/ 小文字は区別 されません。比較の結果が真である場合は、システム項目の SY-FDPOS には <f1> 内の <f2> のオフセットが入ります。偽の場合には、 SY-FDPOS には <f1> の長さが入ります。<f2>
内の文字を特定して比較を行う場合は、その文字の前にエスケープ文字である # を入れてください。また、エスケープ文字を使うことで次の文字を指定できます。NP
(パターンが含まれない)論理式
<f1> NP <f2>
が真であるのは、 <f1> がパターン <f2> を含まない場合です。 <f2> では、演算子 CP の場合と同じワイルドカードおよびエスケープ文字を使用することができます。後続のスペースは無視され、比較では大文字
/ 小文字は区別 されません。真であれば、 <f1> の長さが SY-FDPOS から返されます。偽の場合は、 SY-FDPOS には <f1> 内の <f2> のオフセットが入ります。

DATA: F1(5) TYPE C VALUE <f1>,
F2(5) TYPE C VALUE <f2>.
IF F1 <
演算子 > F2.以下のテーブルに、使用する演算子と
F1/F2 項目別にこのプログラムを実行した結果を示します。<f1> |
< 演算子 > |
<f2> |
結果 |
SY-FDPOS |
'BD ' |
CO |
'ABCD ' |
真 |
5 |
'BD ' |
CO |
'ABCDE' |
偽 |
2 |
'ABC12' |
CN |
'ABCD ' |
真 |
3 |
'ABABC' |
CN |
'ABCD ' |
偽 |
5 |
'ABcde' |
CA |
'Bd ' |
真 |
1 |
'ABcde' |
CA |
'bD ' |
偽 |
5 |
'ABAB ' |
NA |
'AB ' |
偽 |
0 |
'ababa' |
NA |
'AB ' |
真 |
5 |
'ABcde' |
CS |
'bC ' |
真 |
1 |
'ABcde' |
CS |
'ce ' |
偽 |
5 |
'ABcde' |
NS |
'bC ' |
偽 |
1 |
'ABcde' |
NS |
'ce ' |
真 |
5 |
'ABcde' |
CP |
'*b*' |
真 |
1 |
'ABcde' |
CP |
'*#b*' |
偽 |
5 |
'ABcde' |
NP |
'*b*' |
偽 |
1 |
'ABcde' |
NP |
'*#b*' |
真 |
5 |
