TDPUAXモジュールをカスタマイズする場合は、次の点について考慮します。
- 他のシステム出口と同様に、TDPUAXのコーディングとデバッグを行なう際には、熟練したシステム プログラマの支援のもとで注意深く行なわなければならない。TDPUAXで何らかのエラーが起こると、アプリケーションのアドレス空間やオペレーティング システム自体が損傷することがある。
- TDPUAXはスーパーバイザー状態、キー7、使用可能状態、ホーム モード、タスク モード、ローカル ロック保留状態で制御権を取得する。TDPUAXはローカル ロックされるので、SVCを発行できない。ローカル ロックを保留解除しないこと。
- データ バッファが16MBより大きな仮想記憶域に入っている可能性があるため、TDPUAXでAMODE 31を指定しなければならない。TDPUAXは実行時にアドレス指定モードを変更できる。しかし、その後で呼び出し側のアドレス指定モードに制御権を戻さなければならない(汎用レジスター14のビット0のレジスターで示される)。これは、通常は"BSM 0,14"という指示を使用して実行する。
- TDPUAXの単一コピーはCSAに入れられ、システム中のすべてのアドレス空間に共用される。したがって、このコピーは再入可能としてコーディングして連係しなければならない。
- 次の理由で、TDPUAXに取得されるメモリを、すべてジョブステップ タスクと関連付ける必要がある。
- こうすると、データベースでさまざまなアプリケーションによる呼び出しを区別できる。
TDPUAXのパラメータ リストにユーザー ワードを組み込んで、呼び出しの間コンテキストを保守できる。パラメータ リストは、アプリケーションを実行させるジョブステップ タスクと関連付けられる。したがって、そのジョブステップ タスクでの呼び出しのたびに、ユーザー ワードの内容がTDPUAXに渡される。
同一のアドレス空間にある別のジョブステップ タスクのもとで別のアプリケーションが実行され、データベースに対するログオンが開始されると、別のパラメータ リスト(および別の固有なユーザー ワード)が渡される。
- ジョブステップ タスクの終了時にオペレーティング システムがメモリ を確実にクリーンアップするので、TDPUAXに対する終了呼出しは行なわれない。
- こうすると、データベースでさまざまなアプリケーションによる呼び出しを区別できる。
- 標準OS連係処理変換によって、TDPUAXに対するインターフェースが確立される。TDPUAXのレジスターのレジスター13に18フルワード保存領域のアドレスが渡される。TDPUAXはレジスターに呼び出し側のレジスターを保存しなければならず、また戻りアドレス(汎用レジスター14に渡される)に戻る際にはその前にそのレジスターを復元しなければならない。
保存域が必要なサービスをTDPUAXが呼び出す場合には、TDPUAXはそのサービス用に保存域を1つ設けなければなりません。
制御権はTDPUAXに渡され、その際に汎用レジスター1は以下を含むTDPUAXP制御ブロック(パラメータ リスト)を指します。
- ユーザー ワード。これは出口によって設定でき、以後の呼出し(同一のジョブステップTCPのもとでの)でも有効です。
- TDP情報
- リクエスター情報
- パラメータ情報
- ログオン情報CLIv2でログオン列の接頭語とみなされるTDP識別子と区切りスラッシュは、CLIv2によって除去されるので、出口の中にはなくなります。
- セッション文字セットの情報
ログオン文字列は、ユーザーID、パスワード、およびアカウント名に分解されます。それらは各々セッション文字セット中の文字から成り立っています。セッション文字セットでダブルバイト文字がサポートされている場合、個々のダブルバイト文字の連続グループの前にシフトアウト制御文字X'0E'が付き、後にシフトイン制御文字X'0F'が付きます。カンマとブランクをダブルバイト文字として指定することはできません。
戻り時に、TDPUAXは次の戻りコードのいずれかをTDPの汎用レジスター15に渡します。
戻りコード | 意味 |
---|---|
0 | ログオン要求を続行できます。 |
非ゼロ | ログオン要求を続行できません。 |
パラメータ リストはTDPUAXPマクロによって記述されます。このマクロは製品に付属しています。