REPLIMS 呼び出し (IMS セグメントの置換)

1. Syntax
(1)
Segment details

1 1SEGMENT=segname +  #
2.1 ? layout_ref. field_ref=field_value4
2.1 ? + 5 qualifier .field_name=field_value
注:
  • 1 field_ref または field_name を使用するには、この関数呼び出しの前に VIEWIMS を呼び出して、ビューをロードしておく必要があります。
  • 2 layout_ref を修飾せずに field_ref を指定すると、field_ref は、置き換えられる repsegm セグメントの現在のレイアウトに関連付けられます。
  • 3 フィールド名を完全修飾するには、レイアウト名を最初の修飾子として指定する必要があります。 レイアウト名が指定されていない場合、FM/IMS は現在のレイアウトで置換される repsegm セグメントを検索します。 グループ修飾子とフィールド名が見つからない場合、FM/IMS は、グループ修飾子とフィールド名が見つかるまで、相対的な順序で repsegm セグメントのすべてのレイアウトを検索します。 見つからない場合は、エラー メッセージが表示され、処理が終了します。
  • 4 layout_ref を修飾せずに field_ref を指定すると、field_refsegname セグメントの最初のレイアウトに関連付けられます。
  • 5 フィールド名を完全修飾するには、レイアウト名を最初の修飾子として指定する必要があります。 レイアウト名が指定されていない場合、FM/IMS は、グループ修飾子とフィールド名が見つかるまで、segname セグメントのすべてのレイアウトを相対的な順序で検索します。 見つからない場合は、エラー メッセージが表示され、処理が終了します。
conkey
更新するセグメントの連結キー。
field_name
フィールド名。
field_ref
レイアウト内のフィールドのフィールド参照番号。VIEWIMS DESCRIBE 文節を使用してビューまたはテンプレートを印刷するか、ビューまたはテンプレートをオンラインでブラウズすることで取得できます。
field_value
field_ref または field_name に指定したフィールドの値。
FIRST
データベース内の WHERE 文節を満たす最初のセグメントを置き換えます。
layout_ref
segname セグメント内のレイアウトの相対番号。VIEWIMS DESCRIBE 文節を使用してビューまたはテンプレートを印刷することで取得できます。
NEXT
データベース内の WHERE 文節を満たす現行セグメントの後の次のセグメントを置き換えます。
qualifier
フィールド名 (field_name) を特定する 1 つ以上の修飾子。最初の修飾子はセグメント・レイアウト名です。後続の修飾子 (ある場合) は、指定したフィールド名を特定するために使われるグループ・フィールドです。
レイアウト名またはグループ・フィールドを省略すると、FM/IMS は次のように処理します。
  • SET 文節の場合、指定された修飾子とフィールド名を現在の repsegm セグメント・レイアウトから検索します。見つからない場合、すべての repsegm セグメント・レイアウトから、指定された修飾子とフィールド名を検索します。
  • WHERE 文節の場合、指定された修飾子とフィールド名をすべての segname セグメント・レイアウトから検索します。
注: レイアウト名とグループ・フィールドは、VIEWIMS DESCRIBE 文節を使用してビューまたはテンプレートを印刷するか、ビューまたはテンプレートをオンラインでブラウズすることで取得できます。
repsegm
更新するセグメントの名前。
segname
更新するセグメントの階層パス内のセグメントの名前。

正常に行われればゼロを戻し、そうでなければゼロ以外を戻します。

FM/IMS で使用不可の HALDB 区画または DEDB 領域が検出された場合、REPLIMS 関数は戻りコード 8 を受け取り、ISPF 変数 FMSTATUS は、以下の IMS 状況コードを示します。

FH
使用不可の DEDB 領域。
BA
使用不可の HALDB 区画。

現行セグメントの内容を更新するには、WHERE 文節を省略します。それ以外の場合には、WHERE 文節を使用して、更新するセグメントを識別します。

セグメントの現在の内容を OUTREC 変数の内容で置き換えるには、SET 文節を省略します。可変長セグメントを挿入する場合には、OUTREC の最初の 2 バイトでセグメントの長さを指定する必要があります。

それ以外の場合には、SET 文節を使用して、セグメントの置換フィールド値を指定します。

OUTREC を使用すると、セグメントの内容全体が置き換えられます。SET 文節を使用すると、指定したフィールド値だけを置き換えることができます。 他のフィールド値は変更されないまま残されます。

IEB の REPLIMS 使用例

⋮
$$FILEM IEB
⋮
$$FILEM     PROC=*

filerc = VIEWIMS('TPLDSN=FMN.IMS.IVP.TEMPLATE')

filerc = GETIMS('SEGMENT=SUBURB  ',
               ' WHERE SEGMENT=SUBURB #SUBURB-NAME=CITY BEACH')

 /* Replace a segment using OUTREC */
         /* or */
OUTREC = OVERLAY('6168',outrec,19)
filerc = REPLIMS('SEGMENT=SUBURB')
         /* or */
 /* Replace a segment using SET */

rtrc=REPLIMS('SEGMENT=SUBURB ',
             'SET #POST-CODE=6168',
            ' WHERE SEGMENT=SUBURB #SUBURB-NAME=CITY BEACH')
/+
⋮