ストリングの検索と置換

データ・セットまたはデータ・セット・メンバー内にある文字ストリングの 1 つ以上のオカレンスを検索して置換するには、CHANGE 基本コマンドを使用します。SNGL または TABL 表示形式の場合は、CHANGE コマンドを使用して、数値フィールドの中の数値を検索して置き換えることもできます。

注:
  1. コマンド行に収まりきらない長いストリングを検索して置換するには、CX コマンドを使用します (CHANGE での長いストリングの処理を参照してください)。
  2. 複数のデータ・セットまたはデータ・セット・メンバー内にあるストリングを検索して置き換えるには、検索/変更ユーティリティーを使用します (複数の PDS メンバーでのデータの検索と変更を参照してください)。
  3. ストリング値または数値を変更しないで検索するには、FIND 基本コマンドを使用してください。FIND/FX 基本コマンドを参照してください。

CHANGE コマンドを使用して文字ストリングを変更するには、次のようにします。

  1. データをエディター・パネルに表示します (詳しくは、エディター・セッションの開始と終了を参照してください)。
  2. テンプレートを使用していて、CHANGE コマンドの影響を制限したい場合は、適切なレコード ID 基準またはレコード選択基準を適用して、処理するレコードを選択します (テンプレートを使用したレコードの選択を参照してください)。
  3. 特定のレコードが CHANGE コマンドによる影響を受けないようにしたい場合は、BOUNDS コマンドまたは EX コマンドを使用して、CHANGE コマンドの範囲を制限します (編集変更の影響の制限を参照してください)。
  4. コマンド行で、CHANGE コマンドを希望のパラメーターと一緒に入力し、ストリングを検索して置換します。例:
    CHANGE black white

    CHANGE コマンドの構文とパラメーターについて詳しくは、CHANGE/CX 基本コマンドを参照してください。

    CHANGE コマンドは、データ・セット全体の検索ストリングまたは数値のオカレンスのすべてを強調表示します。

    強調表示をオフにするには、RESET FIND コマンドを入力します。

    CHANGE コマンドがデータを変更すると、File Manager は変更済みデータの先頭にカーソルを位置付け、必要な場合は、自動的にスクロールしてそのデータをビューに表示します。

    ストリングの次のオカレンスを変更するには、「RChange」機能キー (F6) を押してください。

    ストリングの次のオカレンスを検索して、オプショナルでそれを変更するには、「RFind」機能キー (F5) と「RChange」機能キー (F6) の組み合わせを使用してください。

    前の CHANGE 基本コマンドで指定したものと同じストリングを検索するには、検索ストリングにアスタリスク (*) を指定します。

    前の CHANGE 基本コマンドで指定したものと同じ置き換えストリングを使用するには、置き換えストリングにアスタリスク (*) を指定します。

    データ内の接頭部として現れる個所のみにストリングの検索を限定するには、PREFIX パラメーターを指定します。

    データ内の接尾部として現れる箇所のみにストリングの検索を限定するには、SUFFIX パラメーターを指定します。

    データ内の「ワード」として現れる個所のみにストリングの検索を限定するには、WORD パラメーターを指定します。

    ストリングのすべてのオカレンス (非選択レコードまたは抑制レコード内のストリングを除く) を変更するには、CHANGE コマンドと一緒に ALL パラメーターを使用します。

CHANGE コマンドは、非表示になっているか、あるいはシャドー行によって表現されている非選択レコードまたは抑制レコードには作用しません。これらのレコードを CHANGE コマンドに含めるには、そのレコードを表示する必要があります。詳しくは、SHOW (REC) 基本コマンドを参照してください。

NX パラメーターを使用していない場合、CHANGE コマンドは、EXCLUDE コマンドを使用して非表示になっているレコードに影響します。変更が除外レコードに影響すると、そのレコードは非除外レコードになります。EXCLUDE コマンドまたは EX および NX パラメーターの使用について詳しくは、レコードの除外CHANGE/CX 基本コマンド、またはEXCLUDE/XX 基本コマンドを参照してください。

レコードにズームインしている場合は、CHANGE コマンドはそのレコードにしか影響しません。1 レコードすべてを表示するためのズームインを参照してください。

CHANGE コマンドは、レコード長に影響することがあります。
  • CHAR、HEX、または LHEX 表示形式の場合に CHANGE コマンドを使用すると、次の通りです。
    • 編集タイプがレコード長の変更をサポートする可変長ファイルで、string2string1 より長いときに、長さの差を調整するのに十分な数の EBCDIC ブランク文字 (X'40') がレコードの終わりにない場合は、File Manager が必要に応じてレコード長を拡張します。
    • 編集タイプがレコード長の変更をサポートする可変長ファイルであり、string2string1 より短いときは、File Manager により必要に応じてレコード長が短縮されます。

    それ以外、つまり固定長ファイルであるかレコード長の変更に対応しない編集のタイプの場合は、次のようになります。

    • string2string1 より長い場合は、長さの差を調整するのに十分な数の EBCDIC ブランク文字 (X'40') がレコードの終わりにある場合にのみ、変更が行われます。File Manager は、レコードの末尾からブランクを除去することによって、同一レコード長を維持します。
    • string2string1 より短い場合、File Manager は、レコードの末尾にブランクを埋め込むことによって同一レコード長を維持します。
  • SNGL 表示形式または TABL 表示形式で CHANGE コマンドを使用して非数値フィールドを変更する場合は、変更に関して、レコードではなくフィールドに適用されるという点を除いて、上記の固定長での考慮事項と同じです。レコード長の変更が可能であり、変更によって影響を受けるフィールドが基底にあるレコードの終端とオーバーラップする場合は、変更要求を完了するために File Manager で必要に応じてレコードを拡張する場合があります。この処理は、基底にあるレコードがレコード構造より短い場合にのみ実行されます。
    SNGL または TABL 表示形式で CHANGE コマンドを使用して数値フィールドを変更する場合は、string1 および string2 の長さは重要ではありません。例えば、フィールド「#2」が数値フィールドである場合は、string1 および string2 は数値として解釈されるので、次の CHANGE コマンドは許可されます。
    CHANGE 107 2 #2

    数値フィールド中の値の変更について詳しくは、数値フィールドの検索を参照してください。

  • 引数が DBCS ストリングの場合は、シフトアウトおよびシフトイン間のデータだけが突き合わせのために検索されます。例えば、DBCS のブランク X'0E40400F' は、非 DBCS データ内に連続しては検出されません。

    この規則に対する例外は、グラフィックス・フィールドの場合の TABL または SNGL 形式です。不定形式のグラフィック・フィールドは DBCS として扱われません。

CHANGE コマンドで検索する列、フィールド、またはレコードの制限について詳しくは、編集変更の影響の制限を参照してください。

例(X)

  • テンプレートを使用中でない場合は、次のようになります。
    CHANGE CAT DOG
    ズームインしている場合、現行レコードにおいてのみ、「CAT」の次のオカレンスが「DOG」に変更されます。そうでない場合、「CAT」の次のオカレンスが「DOG」に変更されます。
    CHANGE YELLOW ORANGE ALL
    ズームインしている場合、現行レコードにおいてのみ、「YELLOW」のすべてのオカレンスが「ORANGE」に変更されます。そうでない場合、すべてのレコードにおいて、「YELLOW」が「ORANGE」に変更されます。
  • テンプレートを使用中であり、データが SNGL または TABL 形式で表示されている場合は、次のようになります。
    CHANGE BLACK WHITE (#4 #7)
    TABL 形式では、「BLACK」の次のオカレンスが「WHITE」に変更されます。この場合、「BLACK」は、フィールド参照 4 および 7 によって表されるいずれかのフィールド内に完全に含まれたものです。SNGL 形式では、現行レコードにおいてのみ、「BLACK」の次のオカレンスが「WHITE」に変更されます。この場合、「BLACK」は、フィールド参照 4 および 7 によって表されるいずれかのフィールド内に完全に含まれたものです。
    CHANGE BLACK WHITE ALL #2,#8
    TABL 形式では、すべてのレコードにおいて、「BLACK」のすべてのオカレンスが「WHITE」に変更されます。 この場合、「BLACK」は、フィールド参照 2 および 8 によって表される いずれかのフィールド内に完全に含まれたものです。SNGL 形式では、現行レコードにおいてのみ、「BLACK」のすべてのオカレンスが「WHITE」に変更されます。 この場合、「BLACK」は、フィールド参照 2 および 8 によって表される いずれかのフィールド内に完全に含まれたものです。