21世紀のソースを検索する
私が以前にできなかったことをする手段を IBM が教えてくれるとき、本当にうれしく思います。30 年前に取り組まなければならなかったツールのことを考えると、涙が出そうになります。最近、文字列のソース・メンバーを検索しなければならなかったのですが、LPEX が SEU でできなかったことを教えてくれて大喜びしました。
要件を準備するためには、事実上、データ構造を RPG プログラムで修飾することを述べておく必要があります。qualified キーワードを省略するには、その理由が必要です。
修飾データ構造のサブフィールドにアクセスするには、データ構造名とピリオドでサブフィールドに接頭部を付ける必要があります。
RPG コンパイラーは、ピリオドの前後に快く空白を入れさせてくれます。これは読みやすさを考えてのことだと思います。少なくとも、私が時折空白を入れるのはそうした理由からです。
では、Status データ構造の Code サブフィールドのすべてのインスタンスを、どのように検索しましょう。"status.code" を検索する場合、ピリオドの前後に 1 つ以上の空白を入れたサブフィールドは検索されません。あちらこちらに空白を入れると、空白はパターンとして照合されます。ちょうど、他の文字を照合するような具合です。
幸いにも、LPEX では検索時に正規表現を使うことができます。
私の例にある正規表現は、以下で構成されています。
status\d | status とその後の数字を検索します。 |
\s* | ゼロまたはそれ以上の空白文字 |
\. | ピリオド1つ。バックスラッシュがない場合、ピリオドは任意の文字と一致し、検索では StatusXcode サブプロシージャーへの呼び出しを検索します。 |
\s* | ゼロまたはそれ以上の空白文字 |
code | 大文字小文字の区別は無視して、文字列 code を検索します。 |
正規表現を使った検索の例をいくつかご紹介します。
status\d | status とその後の数字を検索します。 |
^\s*status | status が最初の空白以外の値の行を検索します。 |
code|text | 大文字小文字の区別は無視して、code または text を検索します。 |
多くのことができます。多くとは、正規表現を使ってということです。正規表現は暗号のようですが、パワフルであるためには暗号のようでなければなりません。
正規表現をマスターしてもいいかもしれません。
これらがすぐになくなってしまうことはないでしょうから。
正規表現をもっと覚えたければ下記のリンクをご参照ください。
Java Regular Expression Patterns
Online Regular Expression Tester