TDPUTCEのカスタマイズ - Teradata Director Program

Teradata® TDPリファレンス

Product
Teradata Director Program
Release Number
17.10
Published
2021年6月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/bvb1608578422774.ditamap
dita:ditavalPath
ja-JP/bvb1608578422774.ditaval
dita:id
B035-2416
Product Category
Teradata Tools and Utilities

NPが使用されると、TDPはz/OS EZASMIソケットAPIを使用するため、このソケットAPIのみがTDPUTCEによって使用されます。IBM社の資料<z/OS Communications Server: IP Sockets Application Programming Interface Guide and Reference>によると、ソケットAPIの1つのタイプのみが単一のアドレス空間内で使用可能です。別のAPIが使用される場合は予期せぬ問題が発生します。

TDPUTCEはTDPの一部として稼動するので、権限を付与されています。TDPUTCEが不適正にコーディングされていると、エラーを引き起こし、TDPを破壊することさえあります。

TDPUTCEモジュールをカスタマイズする場合は、次の点について考慮します。

  • TDPUTCEがアクセスできるのは、TDPによって提供され、MACLIBおよびSAMPLIB(Teradataソフトウェアのリリース テープにある)に記述されたデータ制御ブロックの中に入っているデータだけである。他のTDPコンポーネントにはアクセスできない。
  • TDPUTCEモジュールは、最も標準的なOSサービスを直接使用できます。
  • TDPUTCEが異常終了すると、TDPエラー回復時にTDPUTCEが使用不能になるが、問題が解決した時点でTDP ENABLE TMONコマンドによって再び有効化できるようになる。

    ダンプは、z/OSではTDPSNAP DDNameに書き込まれる。出口にタスクが付加され、サブタスクが正常に終了しなかった場合、TDPはエラーを処理しない。つまり、出口が無効になり、TDPによるダンプの書き込みは行なわれない。ただし、標準のリソースが使用可能な場合(z/OSのSYSUDUMP DD文など)、オペレーティング システムはダンプを記録できる。サブタスクの正しい管理は出口が行なうため、そのようなエラーが発生しても操作に支障はない。

  • TDPUTCEは、TDP下で単一スレッド ルーチンとして稼動し、要求を一度に1つだけ処理できる。したがって、TDPの他の機能との互換性を保つために、少なくとも逐次再使用可能であるか、または再入可能でなければならない。
  • TDPUTCEは独自のテーブルを保存できる。TDPUTCEとTDPとの間のパラメータ リストの一部として、常に単一のワードを渡す。このワードは、呼び出し間で必要な情報が含まれる記憶域ブロックのアドレスを示すために使われるものであり、その使用は完全にTDPUTCEの制御下に置かれる。
  • TDPUTCEはTDPのサブルーチンなので、呼び出されると、標準的なOSフォーマットでレジスターを保存したり復元したりしなければならない。TDPUTCE以外のサービスも呼び出された場合は、TDPUTCEはそれ独自の保存領域を提供する必要がある。最後に、TDPUTCEは汎用レジスター14に渡されるアドレスに戻る必要がある。

制御権はTDPUTCEルーチンに渡され、汎用レジスター1にはTDPMNPRM制御ブロックを示すアドレスが入ります。この制御ブロックには、ユーザー ワード、要求/応答ストリング、および要求元に関する情報を含んだフィールドを指すポインタが含まれます。

TDPコマンドを処理するために呼び出される場合、ユーザーID、パスワード、およびアカウント名は、出口に渡された文字セットの文字から成っています。この文字セットが(START POOLコマンドの場合は、コマンド自体が)2バイト文字をサポートしている場合、一連のEBCDIC2バイト文字にはそれぞれ、先頭にシフトアウト制御文字X'0E'が、末尾にシフトイン制御文字X'0F'が付いています。カンマとブランクをEBCDIC2バイト文字として指定することはできません。

要求や応答を処理するために呼び出される場合、出口に渡したセッション文字セットでEBCDIC2バイト文字が有効であれば、データ(オブジェクト名を含む)に2バイト文字を含めることができます。