新規記事の投稿を行うことで、非表示にすることが可能です。
2020年02月13日
【ABAP】CONDENSE命令
ABAPにおける文字列操作命令「CONDENSE」の使い方、「NO-GAPS」オプションについて解説します。
CONDENSEを日本語に直すと「濃縮する」「凝縮する」といった意味となり、ABAPのCONDENSE命令では変数(データオブジェクト)に含まれるブランクを削除し、文字列だけを残す処理を行います。
目次
1 CONDENSE命令とは
2NO-GAPSオプション
3CONDENSE命令の注意点
1 CONDENSE命令とは
2NO-GAPSオプション
3CONDENSE命令の注意点
1 CONDENSE命令とは
CONDENSE命令とは、ABAPにおける文字列の処理命令です。
冒頭でも解説した通り「CONDENSE」とは日本語で「凝縮する」という意味で、その意味の通り文字列を凝縮(縮める)処理を行います。
構文ルール:CONDENSE命令
CONDENSE (変数).
対象の文字列が格納されている変数をオペランドに指定するだけで、変数に含まれる文字列の@先頭と末尾に存在する空白と、Aその他の「連続するブランク」が消去され、ブランクが1つだけに変更されます。
データオブジェクトがstring型の場合には、変数の長さも合わせて圧縮してくれます。
string型でなければ、右側にブランクが格納されます。
2文字以上のブランクのみを消去するのがCONDENSE命令で理解が難しい点ですので、以下の通りきちんと整理して理解しておきましょう。
•ブランクが連続で存在する場合 ⇒ 連続するブランクを削除し1つのブランクに変更する
•ブランクが連続で存在しない場合 ⇒ 何もしない
CONDENSE命令は、MESSAGE命令を用いてテキストを動的に表示したい場合などに用いる場合などに応用できます。
2 NO-GAPSオプション
CONDENSE (変数) NO-GAPS.
「NO-GAPS」オプションを指定すると、すべてのブランクを削除するようになります。
NO-GAPSオプションを利用しない
⇒ 2文字以上のブランクが削除され、1つのブランクになる
NO-GAPSオプションを利用する
⇒ すべてのブランクが削除される
⇒ 2文字以上のブランクが削除され、1つのブランクになる
NO-GAPSオプションを利用する
⇒ すべてのブランクが削除される
つまり、NO-GAPSオプションを利用するとすべてのブランクが削除され文字列が左詰めされることになります。
3 CONDENSE命令の注意点
CONDENSE命令で指定する変数(データオブジェクト)は、文字型でなければいけません。
文字型以外の場合は、おそらく構文チェックにひっかかるはずです。
その場合は、変数のデータ型を変換して解決します。
タグ:ABAP