DELIMS 呼び出し (IMS セグメントの削除)

この IEB 呼び出しでは、現行セグメントを削除します。

目的
IMS セグメントを削除します。
使用上の注意
DELIMS 組み込み FM/IMS REXX 関数は、以下の目的で使用することができます。
  • 現行セグメントを削除する。
  • where 文節を指定して特定のセグメントを削除する。
1. Syntax
(1)
Segment details

1 1SEGMENT=segname +  #
2.1 ? layout_ref. field_ref=field_value2
2.1 ? + 3 qualifier .field_name=field_value
注:
  • 1 field_ref または field_name を使用するには、この関数呼び出しの前の VIEWIMS の呼び出しによって、ビューがすでにロードされている必要があります。
  • 2 layout_ref の修飾がない field_ref を指定した場合、field_refdelsegm セグメントの最初のレイアウトに関連付けられます。
  • 3 field_name を完全修飾するには、指定する最初の qualifier をレイアウト名にする必要があります。レイアウト名が指定されていない場合、FM/IMS は、グループ修飾子と field_name が見つかるまで、相対順序ですべてのレイアウトから delsegm セグメントを検索します。見つからない場合、エラー・メッセージが表示され、処理が終了します。
conkey
削除するセグメントの連結キー。

すでに削除したセグメントの連結キーを指定した場合には、DELIMS はゼロ以外の戻りコードを生成し、セグメントを削除しません。

delsegm
削除するセグメントの名前。
field_name
テンプレートまたはビューに指定した、segname セグメント内のキー・フィールドの名前。
field_ref
テンプレートまたはビューに指定した、segname セグメント内のキー・フィールドの参照番号。VIEWIMS DESCRIBE 文節を使用してビューまたはテンプレートを印刷するか、ビューまたはテンプレートをオンラインでブラウズすることで取得できます。
field_value
field_ref または field_name によって指定したキー・フィールドの値。
FIRST
データベース内の WHERE 文節を満たす最初のセグメントを削除します。
layout_ref
segname セグメント内のレイアウトの相対番号。VIEWIMS DESCRIBE 文節を使用してビューまたはテンプレートを印刷することで取得できます。
NEXT
データベース内の WHERE 文節を満たす現行セグメントの後の次のセグメントを削除します。
qualifier
フィールド名 (field_name) を特定する 1 つ以上の修飾子。最初の修飾子はセグメント・レイアウト名です。後続の修飾子 (ある場合) は、指定したフィールド名を特定するために使われるグループ・フィールドです。レイアウト名またはグループ・フィールドを省略すると、FM/IMS は指定された修飾子とフィールド名をセグメント・レイアウトから検索します。
注: レイアウト名とグループ・フィールドは、VIEWIMS DESCRIBE 文節を使用してビューまたはテンプレートを印刷するか、ビューまたはテンプレートをオンラインでブラウズすることで取得できます。
segname
削除するセグメントの階層パス内のセグメントの名前。

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

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

正常に行われればゼロを戻し、そうでなければゼロ以外を戻します。DELIMS が正常に行われなかった場合には、FMSTATUS REXX 変数の DL/I 状況コードを検査して、障害の原因を判別することができます。

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

IEB の DELIMS 使用例

⋮
$$FILEM IEB
⋮
$$FILEM     PROC=*
filerc = VIEWIMS('TPLDSN=FMN.IMS.IVP.TEMPLATE')
 /*  Delete Segment at the current position    */
filerc = GETIMS('SEGMENT=NSTREET NEXT')
filerc = DELIMS('SEGMENT=NSTREET')
 /*  Delete Segment using a where Clause       */
filerc = DELIMS('SEGMENT=NSTREET ',
               ' WHERE SEGMENT=SUBURB #SUBURB-NAME=CITY BEACH',
                      'SEGMENT=NSTREET #2=FLOREAT BEACH ')
/+
⋮