IEB および IBB で定義された REXX 関数を使用する際の一般的ヒント
- 「現行」セグメントとはなにか?
- 複数の関数の説明で
現行
セグメントについて言及されています。これは、GETIMS、ISRTIMS、または REPLIMS 関数によって検索、挿入、または置換された最新のセグメントを意味します。 - キー値の指定によるセグメントの探索
- DELIMS、GETIMS、ISRTIMS、および REPLIMS 関数では、WHERE 文節を使用して、キー値に従ってセグメントを探索することができます。WHERE 文節で、以下のいずれかを指定できます。
- 単一パラメーターとしての完全な連結キーである CKEY。
- 目的のセグメントの階層パスにおける 1 つ以上のレベルのセグメント名およびキー・フィールド (別個のパラメーターとして)。例えば、以下のセグメント階層があるとします。
この場合は、以下のように指定します。┌───────────────────────────────────────────────┐ │ Segment name: SUBURB │ │ Key field name: SUBURBK │ ◄─ Root segment │ Key field value: 'DENMARK' │ └──────────────────────┬────────────────────────┘ │ ┌──────────────────────┴────────────────────────┐ │ Segment name: LINKSTR │ │ Key field name: LINKSTRK │ ◄─ This is the segment │ Key field value: 'ALPINE ST ' │ you want to retrieve └───────────────────────────────────────────────┘GETIMS('SEGMENT=LINKSTR ', 'WHERE SEGMENT=SUBURB #SUBURBK=DENMARK ', 'SEGMENT=LINKSTR #LINKSTRK=ALPINE ST')階層パス内のすべてのセグメントを指定する必要はありません。例えば、データベース全体で、「ALPINE ST 」のキーを持つ LINKSTR セグメントが 1 つのみ存在する場合、以下のように指定できます。
GETIMS('SEGMENT=LINKSTR', 'WHERE SEGMENT=LINKSTR #LINKSTRK=ALPINE ST')「ALPINE ST 」が DENMARK のキーを持った SUBURB セグメントの下の最初または唯一の LINKSTR セグメントである場合は、以下のように指定できます。
GETIMS('SEGMENT=LINKSTR', 'WHERE SEGMENT=SUBURB #SUBURBK=DENMARK')フィールドは、フィールド名 (前の例のように) か、それらの参照番号 (#1, #2 など) のいずれかを使用して指定することができます。フィールド値は、等号 (=) 記号の直後か、 = 記号の後の引用符内に置くことができます。フィールド値に先行スペースまたは後続スペースが含まれる場合は、引用符が必要です。これ以外のスペースは無視されます。次のように、
GETIMS('SEGMENT=LINKSTR', 'WHERE SEGMENT=LINKSTR #LINKSTRK=ALPINE ST')および
GETIMS('SEGMENT=LINKSTR', 'WHERE SEGMENT=LINKSTR #LINKSTRK= ALPINE ST ')は、同一のものと評価されますが、
GETIMS('SEGMENT=LINKSTR', 'WHERE SEGMENT=LINKSTR #LINKSTRK=" ALPINE ST "')は、別のものと評価されます。
これらの参照番号をリストするには、この DBD のテンプレートを表示する FM/IMS ISPF パネル、または IEB を指定した VIEWIMS DESCRIBE REXX 関数を使用することができます。
同じ WHERE 文節で、フィールド名と参照番号を混在させることができます。
このタイプの WHERE 文節を使用する前に、VIEWIMS 関数を呼び出し、使用する DBD に一致するテンプレートまたはビューをロードする必要があります。これによって、WHERE 文節で、フィールド名または参照番号と、IMS セグメント内の該当するフィールドを一致させることができます。
GETIMS、DELIMS、または REPLIMS 呼び出しに WHERE 文節がある場合、この前に FIRST パラメーターまたは NEXT パラメーターを指定することができます。FIRST パラメーターを指定する場合、呼び出しは、データベース内の WHERE 文節を満たす最初のセグメントを探索します。NEXT パラメーターを指定する場合、呼び出しは、データベース内の WHERE 文節を満たす現行セグメントの後の次のセグメントを探索します。デフォルトは、NEXT です。
WHERE 文節が ISRTIMS 呼び出しにある場合、呼び出しは、データベース内の WHERE 文節を満たす最初のセグメントを探索します。
- 直前の現行セグメントの参照
- FMCONKEY REXX 変数には、直前の DELIMS、GETIMS、ISRTIMS、または REPLIMS 関数呼び出しによって削除、取得、挿入、置換されたセグメントの連結キーが含まれます。同じように、FMSEGNM REXX 変数にはそのセグメントの名前が含まれます。
後で FMCONKEY および FMSEGNM 値を使用する必要がある場合は、それらを独自に定義した変数に保管することができます。これらのユーザー定義変数は、SEGMENT および CKEY パラメーターとともに使用することができます。