メニューボタン
IBMi海外記事2016.12.22

21世紀のソースを検索する

Ted Holt 著

私が以前にできなかったことをする手段を IBM が教えてくれるとき、本当にうれしく思います。30 年前に取り組まなければならなかったツールのことを考えると、涙が出そうになります。最近、文字列のソース・メンバーを検索しなければならなかったのですが、LPEX が SEU でできなかったことを教えてくれて大喜びしました。

要件を準備するためには、事実上、データ構造を RPG プログラムで修飾することを述べておく必要があります。qualified キーワードを省略するには、その理由が必要です。

技術情報01

修飾データ構造のサブフィールドにアクセスするには、データ構造名とピリオドでサブフィールドに接頭部を付ける必要があります。

技術情報02

RPG コンパイラーは、ピリオドの前後に快く空白を入れさせてくれます。これは読みやすさを考えてのことだと思います。少なくとも、私が時折空白を入れるのはそうした理由からです。

技術情報03

では、Status データ構造の Code サブフィールドのすべてのインスタンスを、どのように検索しましょう。"status.code" を検索する場合、ピリオドの前後に 1 つ以上の空白を入れたサブフィールドは検索されません。あちらこちらに空白を入れると、空白はパターンとして照合されます。ちょうど、他の文字を照合するような具合です。

幸いにも、LPEX では検索時に正規表現を使うことができます。

技術情報04

私の例にある正規表現は、以下で構成されています。

status\d status とその後の数字を検索します。
\s* ゼロまたはそれ以上の空白文字
\. ピリオド1つ。バックスラッシュがない場合、ピリオドは任意の文字と一致し、検索では StatusXcode サブプロシージャーへの呼び出しを検索します。
\s* ゼロまたはそれ以上の空白文字
code 大文字小文字の区別は無視して、文字列 code を検索します。

正規表現を使った検索の例をいくつかご紹介します。

status\d status とその後の数字を検索します。
^\s*status status が最初の空白以外の値の行を検索します。
code|text 大文字小文字の区別は無視して、code または text を検索します。

多くのことができます。多くとは、正規表現を使ってということです。正規表現は暗号のようですが、パワフルであるためには暗号のようでなければなりません。

正規表現をマスターしてもいいかもしれません。

これらがすぐになくなってしまうことはないでしょうから。

正規表現をもっと覚えたければ下記のリンクをご参照ください。

Java Regular Expression Patterns

Regular Expression Library

Online Regular Expression Tester

あわせて読みたい記事

PAGE TOP