Natural ユーザー出口は、Natural、サブコンポーネント、またはサブ製品によって呼び出されるプログラミングオブジェクトです。 通常は、サンプルのユーザー出口がソース形式で提供されています。 ユーザー出口に含まれる命令は、ユーザーが記述または調整する必要があります。 ユーザー出口の目的は、データの操作または決定を行うことです。 ほとんどのユーザー出口は Natural プログラミング言語を利用しています。1 つの小さなサブセットは、アセンブラ言語で記述する必要があります。
このドキュメントでは、以下の Natural ユーザー出口について説明します。
その他の Natural ユーザー出口とアプリケーションプログラミングインターフェイスについては、Natural サブコンポーネントまたはサブ製品のドキュメント(『Natural リモートプロシージャコール(RPC)』、『TP モニタインターフェイス』、『ユーティリティ』、アドオン製品など)で関連箇所を参照してください。
ユーザー出口 NATUEX1
は、ユーザーセッションがアクティブ化されるときはいつでも呼び出されます。 これを使用して、ユーザーに Natural の使用権限があるかどうかを判定します。 この判定に使用されるセキュリティデータは、使用中のセキュリティシステム(RACF や
ACF2 など)から取得できます。
NATUEX1
は、標準の呼び出し規則を使用して呼び出されます。
レジスタ | 内容 |
---|---|
15 |
NATUEX1 のエントリアドレス
|
14 |
Natural のリターンアドレス |
13 |
18 ワードのセーブエリアのアドレス |
1 |
パラメータリストのアドレス |
パラメータリストには、以下の 5 つのアドレスが含まれています。
アドレス | Natural システム変数に指定する値を含む 8 バイトのフィールドをポイント |
---|---|
1 |
*INIT-USER |
2 |
*ETID |
3 |
*INIT-ID |
4 |
*INIT-PROGRAM |
5 |
*USER (このシステム変数は Natural Security ログオン時に上書きされます)
|
これらの 5 つの値はユーザー出口によって変更できます。
正常終了するには、ユーザー出口がレジスタ 15 に 0
を設定して制御を返す必要があります。 レジスタ 15 の値が 0
でない場合は、Natural セッションはレジスタ 15 の値と同じコンディションコードで終了します。
NATUEX1
は、共有ニュークリアスまたは環境非依存ニュークリアスにリンクできます。 また、代替パラメータモジュールにリンクしたり、プロファイルパラメータ RCA
で実行している場合は独立したモジュールとしてリンクしたりできます。
ユーザー出口の例は、Natural ソースライブラリのメンバ XNATUEX1
として使用できます。
CICS の場合:Natural の『TP モニタインターフェイス』ドキュメントの「NCIUIDEX - ユーザー ID 出口インターフェイス」も参照してください。
Natural には、2 つのソート処理用ユーザー出口、NATSREX2
と NATSREX3
があります。
この 2 つのユーザー出口は、Natural 固有のソートプログラムでも、外部ソートプログラムでも使用できます。 出口は、ニュークリアスにリンクされてアドレスが解決されると、自動的にアクティブになります。 z/OS および z/VSE 環境では、すでに多数の外部
SORT
プログラムが複数の出口機能を提供しているため、NATSREX2
出口と NATSREX3
出口は Natural の内部ソートプログラムまたは BS2000/OSD 環境の外部 SORT
専用にしてもかまいません。
NATSREX2
は、Natural がレコードをソートプログラムに渡すときに常に呼び出されます。 NATSREX3
は、ソートプログラムがソート実行の終了後にレコードを Natural に渡すときに呼び出されます。 提供している例は、SORT
に独自の照合順序を設定する方法を示しています。
ユーザー出口がアクティブ化されるときは、以下のレジスタ規則に従います。
レジスタ | 内容 |
---|---|
15 |
NATSREX2 および NATSREX3 のエントリアドレス
|
14 |
Natural のリターンアドレス |
13 |
18 ワードのセーブエリアのアドレス |
1 |
ソートレコードのアドレス |
3 |
ソートレコードの長さ |
ユーザー出口は、Natural レジスタを保護し、Natural に制御を戻すときにそれらのレジスタを復元する必要があります。
ソート出口モジュールは NAT2SORT
モジュールにリンクされるため、プログラミングはリエントラントでなければなりません。 ソートレコードのフォーマットと構造は変更できません。
一部の言語には、ソートプログラムまたはデータベースシステムで正しいアルファベット順にソートできない文字が含まれています。 システム関数 SORTKEY
を使用すると、このような "正しくソートされない" 文字をアルファベット順で "正しくソートされる" 別の文字に変換できます。
Natural プログラム内で SORTKEY
関数を使用すると、ユーザー出口 NATUSKnn
が呼び出されます。nn
は現在の言語コード(システム変数 *LANGUAGE
の現在の値)です。
NATUSKnn
ユーザー出口は、標準 CALL
インターフェイスを提供する任意のプログラミング言語で記述できます。 SORTKEY
で指定した文字列はユーザー出口に渡されます。 ユーザー出口は、この文字列の "正しくソートされない" 文字を対応する "正しくソートされる" 文字に変換するようにプログラミングされている必要があります。 続けて、変換された文字列が Natural プログラムで使用され、さらに処理が実行されます。
変換のために NATUSKnn
でコンフィグレーションモジュール NATCONF
の変換テーブル NTUTAB1
を使用できます。その場合は、それに応じて NTUTAB1
を調整する必要があります。
NATUSKnn
は、標準の呼び出し規則を使用して呼び出されます。
レジスタ | 内容 |
---|---|
15 |
NATUSKnn のエントリアドレス
|
14 |
Natural のリターンアドレス |
13 |
18 フルワードのセーブエリアのアドレス |
1 |
パラメータリストのアドレス |
パラメータリストには、以下のアドレスが含まれています。
オフセット | アドレスの内容 |
---|---|
+0 |
Natural から渡された文字列 |
+4 |
文字列の長さ(フルワード) |
+8 |
変換結果の文字列 |
+12 |
結果の文字列の長さ(フルワード) |
+16 |
変換テーブル NTUTAB1 |
NATUSKnn
は、レジスタ 14 および 15 以外のすべてのレジスタを保護し、Natural に制御を戻すときにそれらのレジスタを復元する必要があります。
正常終了するには、ユーザー出口がレジスタ 15 にリターンコード 0 を設定して制御を返す必要があります。 レジスタ 15 の値が "0" でない場合は、該当する Natural エラーが発行されます。
以下のサンプルのユーザー出口がソースコード形式で提供されています。
プログラム | 機能 |
---|---|
NATUSK01 |
英語に適用され、文字列内のすべての英小文字を大文字に変換します。 |
NATUSK02 |
ドイツ語に適用され、異なるソート順序を提供するために、ドイツ語のウムラウト文字 ä、ö、ü、および ß を対応する置換文字 ae、oe、ue、および ss に変換します。 |
共有ニュークリアスを使用している場合は、NATUSKnn
をニュークリアスの環境非依存部分にリンクできます。
また、代替パラメータモジュールにリンクしたり、呼び出される NATUSKnn
モジュールの名前をプロファイルパラメータ RCA
で指定している場合は独立したモジュールとしてリンクしたりできます。
リンケージ規則およびロード規則については、Natural の『ステートメント』ドキュメントの CALL
ステートメントも参照してください。
NATPM
モジュールは、逆方向端末をサポートするために使用されます。 このモジュールには、出力モード(プロファイルパラメータ PM
)が I
に設定されているフィールドがある場合に、端末の I/O 時に Natural から呼び出されるフィールドおよび行変換用のユーザー出口ルーチンが含まれます。
PM=I
は、逆方向であることを示し、右から左に記述する言語(双方向言語など)をサポートするために使用されます。プロファイルパラメータ PM
の説明も参照してください。
NATPM
モジュールはソースモジュールとして提供されるので、必要に応じて変更できます。
Natural は、結果属性が PM=I
の各フィールド用と、ハードコピー、追加レポート、およびプライマリバッチ出力を使用して出力される各行用に呼び出されるユーザー出口ルーチンを提供します。 この出口は、以下の 3 つのパラメータで呼び出します。
インバートするソースフィールド
インバートされたデータを受け取るターゲットフィールド
ソースおよびターゲットフィールドの長さを示す長さフィールド
このユーザー出口ルーチンは、すべてのユーザーがソースコード形式で入手できるので、PM=I
属性によってトリガされる明示的なフィールド出口として使用してもかまいません。 このようにすると、ユーザーは行内容やフィールド内容を確認および変更することができます。
NATPM
のユーザー出口は、属性 PM=I
が設定されているフィールドごとに呼び出されます。
この属性は、Natural プログラマが設定することも、グローバル出力モードが PM=I
に設定されたときに数値フィールドに自動設定されるようにすることもできます。 出力の生成目的が、端末、ハードコピー、追加レポート、プライマリバッチ出力のいずれであっても同じです。
印刷デバイスの場合は、Natural ではハードウェアによる自動的なインバートは想定せず、完全行のために NATPM
を再度呼び出します。 この機能は、フィールドのインバートが必要ない国でも、フィールド属性に基づいて Natural とインターフェイスロジックを確立するために使用できます。
NREXPG
は Natural リモートジョブエントリ(NATRJE
)のユーザー出口です。 ジョブが完了すると、各 JCL カードはオペレーティングシステムにサブミットされる前に出口に渡されます。 以下のデータを出口に使用できます。
サブミットされる JCL カード
リターンコードフィールド
現在実行中の Natural プログラムの名前
Natural ユーザー ID
240 バイトのワークエリア
出口は、各呼び出しの終了後に、以下のいずれかのイベントを示すリターンコードを NATRJE
に渡します。
コード | 説明 |
---|---|
0 |
サブミット:カードがサブミットされます。出口により、サブミット前にカードが変更されることがあります。 |
4 |
終了:カードがサブミットされます。出口は、現在のジョブの以降のカードには無効です。 |
8 |
挿入:カードがスキップされます(カードには INSERT 文字のみが含まれているという前提に基づいて)。追加指定のカードはサブミットされます。
|
10 |
削除:カードはサブミットされません。 |
12 |
現在のジョブがフラッシュされます。 |
NREXPG
というユーザー出口の例は、Natural ソースライブラリのメンバ XNATRJE
として使用できます。 CSTATIC
として指定されたプログラムのルールに従って、出口をアセンブルしリンクすることができます。 ただし、NREXPG
の CSTATIC
エントリは不要です。
ユーザー出口ルーチン USR0070P
を使用して、デフォルトプロファイル SYSTEM
の Natural プログラムエディタまたはデータエリアエディタのパラメータ設定を変更できます。
エディタプロファイルの詳細については、『エディタ』ドキュメントの「エディタ - 全般的な情報」を参照してください。
USR0070P
は、デフォルト設定を受け取るすべてのパラメータのリストを提供します。
このユーザー出口を使用して、エディタプロファイルを FNAT
システムファイル、FUSER
システムファイル、またはスクラッチパッドファイルに保存するかどうかを指定することもできます。
さらに、USR0070P
では DBCS サポートが考慮され、これに対応してエディタプロファイルオプション Editing in Lower Case
および Dynamic Conversion of Lower Case
が設定されます。
このユーザー出口ルーチンの例は、FNAT
システムファイルの SYSEXT
ライブラリから、オブジェクトおよびソースの両方の形式で入手できます。 使用方法については、テキストメンバ USR0070T
を参照してください。
ユーザー出口ルーチン USR2002P
を使用して、カーソルがメッセージ行にあるときにヘルプキーを押すと表示される[Current Natural Message]ウィンドウのテキスト文字列をカスタマイズできます。
オブジェクト USR2002P
自体にも、ウィンドウタイトルや説明テキストなど[Current Natural Message]ウィンドウで使用されるテキスト文字列が含まれています。記述テキストとは、フィールド名の Sh
(ショートメッセージ)、Tx
(ロングメッセージ)、Ex
(説明)、Ac
(アクション)などです。
このユーザー出口ルーチンの例は、FNAT
システムファイルの SYSEXT
ライブラリから、オブジェクトおよびソースの両方の形式で入手できます。 使用方法については、テキストメンバ USR2002T
を参照してください。
ユーザー出口ルーチン USR2003P
を使用して、Natural メインメニューとサブメニューの以下の設定をカスタマイズできます。
メッセージ行の位置と色
PF キー行の位置と色
このユーザー出口ルーチンの例は、FNAT
システムファイルの SYSEXT
ライブラリから、オブジェクトおよびソースの両方の形式で入手できます。 使用方法については、テキストメンバ USR2003T
を参照してください。