CHANGE 基本コマンド (編集のみ)

CHANGE 基本コマンドは、文字ストリング (またはフィールド値) の 1 つ以上 のオカレンスを編集されるデータから検索し、変更します。

1 つ以上のストリングのオカレンスが見つかると、FM/IMS は、最初のオカレンスの直後にカーソルを合わせます。必要に応じて、データがスクロールされ、ストリングがビュー内に取り込まれます。

ビューで定義された出力フォーマットを使用して表示されている日時フィールドについては、FM/IMS は表示された値から string1 を検索し、検出された場合には、表示されている値の中の string1string2 に置き換えます。

ビューを使用する場合は、SHOW SUP コマンドの設定値が検索されるセグメントに影響します。SHOW SUP OFF を用いると、現行セグメント・タイプおよびレイアウトに一致するセグメントのみが検索されます。SHOW SUP ON を用いると、検索は現行セグメント・タイプおよびレイアウトに限定されません。

CHANGE 基本コマンドは、ストリングのいずれかの部分がセグメントのキー・フィールドにある 場合は、ストリングのオカレンスを変更しません。

FM/IMS は、ストリングの最初のオカレンスの直後にカーソルを合わせます。必要に応じて、データがスクロールされ、ストリングがビュー内に取り込まれます。

CX コマンドは、「Extended Command Entry (拡張コマンド入力)」パネルを表示します。 このパネルでは、コマンド行に収まらない可能性のある長い引数も入力できます。

構文

1. CHANGE syntax in edit

1 Change
1 CX
1 CHG
2? SEGment(segment-name)
2? GET(n)
2? 
3.1! SCOPE
3.1 Db
3.1 Rec
3.1 DEPendent
3.1 *
3.1 string1
3.1 *
3.1 string2
3.1! NEXT
3.1 ALL
3.1 FIRST
3.1! CHARs
3.1 PREfix
3.1 SUFfix
3.1 WORD
1  %column range
1  %field list or range
column range (CHAR, HEX, and LHEX formats only)

1 col1 ?col2
field list or range (SNGL or TABL display format)

1 ! #ALL
2.1 (?+ , #field)
1 (?+ , #field_1 - #field_2)

パラメーターは、任意の順序で指定できます。

segment-name
SEGMENT パラメーターを指定すると、検索はセグメント・タイプ segment-name の オカレンスに制限されます。このパラメーターは、SHOW SUP がオンの場合、またはビューを使用しない場合にのみ許可されます。
GET(n)
検索するセグメントの数を n に制限します。
SCOPE
検索範囲は現行の有効範囲です。
DB
データベース全体を検索します。
REC
検索は現行のデータベース・レコードに制限されます。
DEPENDENT
検索は現行セグメントの従属セグメントに制限されます。このパラメーターは、SHOW SUP がオンの場合、またはビューを使用しない場合にのみ許可されます。
* (アスタリスク)
検索ストリングの代わりに使用された場合、検索ストリングとして、直前の CHANGE コマンドで指定された検索ストリングを使用します。

置き換えストリングの代わりに使用された場合、置き換えストリングとして、直前の CHANGE コマンドで指定された置き換えストリングを使用します。

CHANGE の場合、* の位置が重要になります。ストリングの前にある場合は、直前の検索引数を示します。つまり、最初のストリングとして扱われます。* の前にストリングがある場合は、2 番目のストリング (変更引数) として扱われ、直前の CHANGE コマンドの変更引数を使用します。直前の検索ストリングと直前の変更ストリングの両方を使用するには、CHANGE * * と指定します。

string1
検索するストリングで、最大文字長は 100 文字です。

ストリングは以下のいずれかが可能です。

  • 引用符で開始または終了せず、ブランクまたはコンマを含まない文字ストリング。ストリングの大/小文字は無視されます。同一文字の英大文字表記と小文字表記は一致します。

    例:

    CHANGE before after

    beforeBefore、およびBEFOREというストリングを変更します。

  • 一重引用符で囲まれた文字ストリング。このストリングには、ブランクとコンマを入れることができます。ストリングの大/小文字は無視されます。ストリングはヌル・ストリング ('') であっても構いません。string1 がヌル・ストリングの場合には、string2 が現在の桁位置に挿入されます。
  • 「C」と、その後に引用符で囲まれた文字ストリング (C'Frog')、または、引用符で囲まれた文字ストリングと、その後に「C」('Frog'C)。このストリングには、ブランクとコンマを入れることができます。ストリングは (大文字/小文字も含めて) 完全に一致しなければなりません。
  • P が前または後に付いている単一引用符または二重引用符で囲まれた、文字そのものではなく検索対象のストリングのタイプを表すピクチャー・ストリング。それ自体を表すブランク、英字、および数字、あるいは、それぞれ文字のクラスを表す下記の任意の特殊文字を含めることができます。
    =
    任意の文字。
    @
    英字。
    #
    数字。
    $
    特殊文字。
    & notsym;
    非ブランク文字。
    .
    無効文字。
    -
    非数値文字。
    <
    小文字英字。
    >
    大文字英字。

    この表記が使用される場合、数字、ビット、およびユニコードのフィールド (SNGL および TABL 表示形式) は、検索処理から除外されます。

  • 「X」と、一重引用符で囲まれた 16 進ストリング (X'C1C2')。
  • 文字そのものではなくストリングのパターンとして指定するには、正規表現ストリングの前または後に R を追加し、単一引用符または二重引用符で囲みます。このストリングは、C ランタイム・ライブラリーでサポートされいる、C ランタイム・ライブラリーの regcomp 関数で許可されている形式に準拠している必要があり、かつ C ランタイム・ライブラリーが使用可能である必要があります。大/小文字を区別した検索を行うには、RC を使用します。
    正規表現の例は次のとおりです。
    列 1 ~ 10 内の「cat」または「hat」
    r'[ch]at' 1 10
    「payer」または「payee」
    r'pay(er!ee)'
    「band」または「bald」、ただし「bad」を除く
    'ba.d'r
    「feed」または「weed」、ただし「fed」または「wed」を除く
    r'[fw]e{2}d'
    「The」または「She」、ただし「the」または「she」を除く
    rc'[TS]he'
    この SETLOCALE 関数は、regcomp 関数が正規表現をコンパイルする際に使用するロケールを定義するために使用されます。SETLOCALE 関数に使用されるロケールは、端末 CCSID に基づいています。ロケールは、次の端末 CCSID でサポートされています。
        00037   00871   01123   01156                                     
        00273   00875   01140   01157                                     
        00277   00924   01141   01158                                     
        00278   00930   01142   01160                                     
        00280   00933   01143   01165                                     
        00284   00935   01144   01364                                     
        00285   00937   01145   01371                                     
        00290   00939   01146   01388                                     
        00297   01025   01147   01390                                     
        00424   01026   01148   01399                                     
        00425   01027   01149   04971                                     
        00500   01047   01153   05123                                     
        00838   01112   01154   08482                                     
        00870   01122   01155   12712 
    
    別の CCSID を持つ端末を使用している場合、正規表現をコンパイルするときにデフォルトの C ロケールが使用されます。
  • 数値 (SNGL または TABL 表示形式のみ)。string1 の代数値は数値フィールドの代数値と一致する必要があります。string1 および数値フィールドの長さ (桁数) による影響はありません。同様に、数値フィールドのデータ・タイプも意味がありません。例えば、ストリング 123 は、00123 が入っているパック 10 進数フィールド または 1.230E+02 が入っている浮動小数点フィールドと一致します。string1 内の符号なしの値は正と見なされます。
  • DBCS ストリングまたは DBCS と非 DBCS の混合ストリング。シフトアウト (x'0E') が引数の先頭文字である場合は、ストリングの検索前に除去されます。シフトイン (X'0F') が引数の末尾文字である場合は、ストリングの検索前に除去されます。
string2
string1 を置き換えるために使用するストリングで、最大文字長は 100 文字です。

ストリングは以下のいずれかが可能です。

  • 引用符で開始または終了せず、ブランクまたはコンマを含まない文字ストリング。CAPS ON または CASE UPPER が有効になっていると、string2 は大文字に変換されます。
  • 一重引用符で囲まれた文字ストリング。このストリングには、ブランクとコンマを入れることができます。CAPS ON が有効でない限り、大/小文字が反映されて保存されます。CAPS ON が有効の場合は、string2 は大文字に変換されます。ストリングはヌル・ストリング ('') であっても構いません。
  • 「C」と、その後に引用符で囲まれた文字ストリング (C'Frog')、または、引用符で囲まれた文字ストリングと、その後に「C」('Frog'C)。このストリングには、ブランクとコンマを入れることができます。大/小文字の区別は考慮され、保持されます。ストリングはヌル・ストリング (C'') であっても構いません。
  • DBCS ストリング、または DBCS と非 DBCS の混合ストリング。ストリングの先頭と末尾にあるシフトアウト (X'0E') とシフトイン (X'0F') は、DBCS データの保全性が損なわれないような方法で調整されます。
  • P が前または後に付いている単一引用符または二重引用符で囲まれた、実行する変更内容を表すピクチャー・ストリング。大文字から小文字に、または小文字から大文字に文字を変更するか、あるいは下記のストリングの特殊文字を使用してフィールドをそのままにしておくことができます。
    =
    任意の文字。
    <
    小文字英字。
    >
    大文字英字。

    CHANGE コマンドで使用されるピクチャー・ストリングの例:

    c p'.' x'00'
    次の無効文字を 16 進数 x'00' に変更します。
    c p'###' 100
    次の 3 桁の数字を 100 に変更します。
    c all 73 80 p'=' " "
    73 桁目から 80 桁目にブランクを入力します。
    c all p'-' 1 10 "0"
    1 桁目から 10 桁目のすべての非数値文字を文字「0」に変更します。
    c p'<' p'>'
    すべての小文字を大文字に変更します。
    c p'a>' p'=<'
    文字 a と直後の大文字を、文字 a と小文字に変更します。
    c p'>' '¬'
    大文字は「not 記号」に変更します (注: 「not 記号」には「to」ストリングの特殊な意味がありません)。
    c p'<#' p'>='
    小文字と直後の数字を、大文字と検出された数字に変更します。

    この表記が使用される場合、数字、ビット、およびユニコードのフィールド (SNGL および TABL 表示形式) は、検索処理から除外されます。

    .
  • 「X」と、一重引用符で囲まれた 16 進ストリング (X'C1C2')。CAPS ON が有効な場合は、英小文字の 16 進表記はすべて同等の英大文字に変換されます。
  • 数値 (SNGL または TABL 表示形式のみ)。
  • DBCS ストリングまたは DBCS と非 DBCS の混合ストリング。ストリングの先頭と末尾にある シフトアウト (X'0E') とシフトイン (X'0F') は、DBCS データの保全性が損なわれないような方法で調整されます。
NEXT
CHANGE コマンドは、ストリング string1 の次のオカレンスを検索します。 検索範囲は、カーソル位置 (カーソルがディスプレイのデータ部分内にある場合)、あるいは 表示されたページの先頭 (カーソルがディスプレイのデータ部分の外側にある場合) から 始まる範囲です。

string1 が検出された場合は、FM/IMS はそれを string2 に変更し、カーソルを string2 の直後に合わせます。

string1 が検索範囲の最後までに検出されなかった場合、あるいはカーソル位置が検索範囲の最後のセグメントの後にあった場合、FM/IMS は検索範囲の終りわに到達したことを示すメッセージを表示し、検索前に表示されていたページを再表示します。検索範囲の先頭から検索を再開するには、RFIND (F5) 基本コマンドまたは RCHANGE (F6) 基本コマンド を使用します。

FIRST
CHANGE コマンドは、検索範囲の最初のセグメントの先頭から始まる検索範囲 で、ストリング string1 の最初のオカレンスを検索します。

string1 が検出された場合は、FM/IMS はそれを string2 に変更し、カーソルを string2 の直後に合わせます。

string1 が検索範囲で検出されなかった場合、FM/IMS はストリングが見つからなかったことを示すメッセージを表示し、検索前に表示されていたページを再表示します。

ALL
CHANGE コマンドは、検索範囲の最初のセグメントの先頭から始まり、検索範囲の終わりまで続く検索範囲 で、ストリング string1 のすべてのオカレンスを検索します。
string1 が 1 回以上検出された場合、FM/IMS は以下のようにします。
  • string1 のすべてのオカレンスを string2 に変更します。
  • カーソルを最初に変更したオカレンスの直後に合わせます。
  • ストリングの変更された回数を示すメッセージを表示します。

string1 が検索範囲で検出されなかった場合、FM/IMS はストリングが見つからなかったことを示すメッセージを表示し、検索前に表示されていたページを再表示します。

CHARS
データ内の任意の場所で、その検索ストリングに突き合わせます。
PREFIX
データ内の接頭部として出現する場所で、その検索ストリングに突き合わせます。接頭部にするには、一致したテキストの前に非英数字が付くか、あるいは一致したテキストが行またはフィールドの先頭である必要があり、その後に英数字が続く必要があります。
SUFFIX
データ内の接尾部として出現する場所で、その検索ストリングに突き合わせます。接尾部にするには、一致したテキストの前に英数字が付く必要があり、後に非英数字が続くか、一致したテキストが行またはフィールドの終端である必要があります。
WORD
データ内のワードとして出現する場所で、その検索ストリングに突き合わせます。ワードにするには、一致したテキストの前に非英数字が付くか、あるいは一致したテキストが行またはフィールドの先頭である必要があり、その後に非英数字が続くか、あるいは一致したテキストが行またはフィールドの終端である必要があります。
col1
検索の開始桁。col2 を指定せずに col1 を指定した場合、string1 が検出されるためには開始位置が col1 である必要があります。col1col2 の両方を指定した場合には、string1 が指定した桁の範囲内に完全に入っていることが必要です。
注:
桁の範囲を指定して、データが SNGL または TABL 形式で表示されると、検索がデータの発生順に実行されます (これはフィールドの表示順ではないことがあります)。数値フィールド値はこのタイプの検索では考慮されません。

桁範囲を指定すると、ストリング比較が実行されます。これは数値フィールドに対しても実行されます。

col2
検索の終了桁。col2 がセグメント・サイズより大きい場合には、セグメント・サイズが使用されます。
#ALL
各フィールドが、テンプレート属性に従って検索されます。
#field
現行セグメント・タイプのレイアウトにおけるフィールドのフィールド参照番号。検索を現在表示されているセグメント・タイプの 1 つ以上の指定のフィールドに制限するために、SNGL または TABL 形式で使用されます。

複数のフィールド参照を指定する場合は、フィールド参照を括弧で囲む (オプションとしてコンマで区切る) か、あるいはコンマで区切る必要がありますが、スペースを入れることはできません。例えば、(#17 #22)、(#17, #22)、および #17,#22 は、有効なフィールド参照の指定です。

英数字フィールドの場合に、指定のフィールドのいずれかにストリングが完全に含まれていれば、そのストリングが検出されます。例: CHANGE DB ALL xxxx yyyy #5,#6 では、フィールド参照が #5 および #6 のフィールドのいずれかの中に「xxxx」の含まれている、現行タイプのすべてのセグメントが検出されて、変更されます。

数値フィールドの場合、数値フィールドのいずれかの値が、 ストリングで指定する値に等しいときに検出されます。

フィールド参照番号は、変更操作中に検索されるセグメントのレイアウトに関係があります。そのため、フィールド参照番号を使用し、SHOW SUP ON が有効である (セグメントがグループ化されていない) 場合、 指定のフィールドがレイアウト間で共通でないと、 フィールド内のデータに予期しない変更が行われる場合があります。

例えば、CHANGE DB ALL 123 256 #8,#9 では、以下の現行 (数値または文字) タイプのすべてのセグメントが検出されて、変更されます。
  • フィールド参照が #8 および #9 の数値フィールドのいずれかに値 123 が含まれている
  • フィールド参照が #8 および #9 の文字フィールドのいずれかにストリング 123 が含まれている

引数が DBCS ストリングの場合は、シフトアウトおよびシフトイン間のデータだけが突き合わせのために検索されます。例えば、検索ストリングが X'0E40400F' (つまり、シフトイン、ブランク、ブランク、シフトアウト) であった場合は、CHANGE コマンドは 非 DBCS データの連続する 2 つのブランクを検出しません。

#field_1
フィールドの範囲の最初のフィールド参照。添え字にすることはできません。#field_1 フィールド参照値が最低の表示フィールド参照値より小さい場合は、最低の表示フィールド参照値が使用されます。
#field_2
フィールドの範囲の最後のフィールド参照。添え字にすることはできません。#field_2 フィールド参照値が最高の表示フィールド参照値より大きい場合は、最高の表示フィールド参照値が使用されます。

#field_1#field_2 のフィールド参照値はハイフン (-) によって区別する必要があります。ハイフンとフィールド参照値の間にスペースを使用することができます。

#field_1#field_2 より大きい値の場合、検索処理ではオペランドが逆になります。

使用箇所

関連作業および例

CHANGE コマンドの「Extended Command Entry (拡張コマンド入力)」ポップアップ・パネル は、CHANGE コマンドの「Extended Command Entry (拡張コマンド入力)」ポップアップ・パネルを示しています。この例では、FM/IMS にあるストリングThe Cappuccino Stripが、LONG AND WINDING ROADに変更されます。
2. CHANGE コマンドの「Extended Command Entry (拡張コマンド入力)」ポップアップ・パネル
Process   Options   Utilities   Help
  ──────────────────────────────────────────────────────────────────────────────
FM/IMS                        Edit : IMS Database DJ1E
            Autosave OFF SHOW SUP ON  Scope ALL    Col 1          Format CHAR
   ┌───────────────────── Extended Command Entry ──────────────────────┐ DATE
   │                                                                   │
   │ Complete typing the CHANGE command and press Enter.               │
   │                                                                   │
 0 │ CHANGE  ===> 'THE CAPPUCCINO STRIP '___________________________   │
 0 │         ===> 'LONG AND WINDING ROAD'___________________________   │
 0 │         ===>  _________________________________________________   │
 0 │         ===>  _________________________________________________   │
 0 │         ===>  _________________________________________________   │
 0 │                                                                   │
 0 │                                                                   │
 0 │  F1=Help    F2=Split   F3=Exit    F9=Swap   F12=Cancel            │
 0 └───────────────────────────────────────────────────────────────────┘ 9/1980
    ___  2    LINKSUB   O'CONNOR
    ___  2    LINKSUB   SAMSON
    ___  2    LINKSUB   SOUTH FREMANTLE
    ___  2    LINKSUB   WHITE GUM VALLEY
    ___ 1     SHIRE     KALGOORLIE          W60500012.`....................o.
    ___  2    SHIRENP   .......b...
    ___  2    LINKSUB   HANNANS
    ___  2    LINKSUB   KALGOORLIE
    ___ 1     SHIRE     MOUNT MAGNET        070400399.............. ..... ...
    ___  2    SHIRENP   ...........
    ___  2    LINKSUB   MOUNT MAGNET
    ___  2    LINKSUB   MOUNT MAGNET SHIRE
 Command ===> cx___________________________________________________ Scroll CSR
  F1=Help      F2=Format    F3=Exit      F4=CRetriev  F5=RFind     F6=RChange
  F7=Up        F8=Down      F9=Swap     F10=Left     F11=Right    F12=Cancel