![]() |
![]() |
![]() |
![]() |
![]() |
• Oracle Tuxedo Mainframe Adapter for SNA Gatewayは他のドメイン・ゲートウェイと同様にATMI型付きバッファを使用してデータを送受信します。リモート・ホストのアプリケーションは型付きバッファを認識しないため、ATMIアプリケーションはレコードと呼ばれる集計データ型を使用してホスト・アプリケーションと通信する必要があります。レコードは、フラットなデータ領域であり、レコード内の各フィールドのデータ型および長さを記述したテンプレートによって定義されます。ほとんどの場合、ATMI型付きバッファとレコード形式の間の変換は、Oracle Tuxedo Mainframe Adapter for SNA Gatewayによって処理されます。DMCONFIGファイルのDM_LOCAL_SERVICESおよびDM_REMOTE_SERVICESセクションのサービス定義で、アプリケーション間の通信を成功させるために必要な型付きバッファとレコードの組合せを記述するパラメータを指定します。ATMIアプリケーションが型付きバッファをリモート・ホスト・アプリケーションに送信する場合、バッファをリモート・ホスト・アプリケーションに渡す前にOracle Tuxedo Mainframe Adapter for SNA Gatewayがそのバッファをレコードに変換する必要があります。Gatewayは、サービス定義を使用して、バッファに適用する必要がある変換(ある場合)を判別します。サービス定義では、DMCONFIGファイルのDM_LOCAL_SERVICESセクションとDM_REMOTE_SERVICESセクションの両方でINBUFTYPEを使用して、目的の変換について説明します。INBUFTYPEは次のように指定します。このパラメータ定義において、typeは、次の項に説明されている指定のATMI型付きバッファのいずれかである必要があります。INBUFTYPEパラメータには1つのtype:subtypeのみ入力可能です。デフォルトでは、nullで終了する文字列はEBCDICに変換されます。null文字も変換後のレコードに含まれます。ViewおよびFMLデータ型の文字列の使用の詳細は、「文字列の変換ルール」の項を参照してください。これらの型付きバッファが使用されるのは、他のstrong型付きバッファのいずれを使用してもデータ・レコードを記述または変換できない場合です。strongは、Oracle Tuxedo Mainframe Adapter for SNA Gatewayがあらゆるデータ・フィールドを認識して必要なデータ変換を実行できることを意味しています。これらの型付きバッファが使用される他の場合として、リモート・サービスで様々なスタイルのデータ集計(複数のレコード・タイプ)が必要とされる場合があります(INBUFTYPEパラメータが1つのtype:subtypeに制限されているため)。これらの型付きバッファではサブタイプが必要です。サブタイプは、リモート・ホスト・レコードについて説明するビューの名前です。ATMIバッファは、コンパイル済VIEWファイルを使用して、C構造体からレコードに変換されます(EBCDIC変換など)。デフォルトでは、レコードはリモート・ホスト・アプリケーションがCOBOLコピーブックを使用してマップしたCOBOL構造体です。変換オプションの詳細は、「VIEWデータ型の変換ルール」を参照してください。これらの型付きバッファではサブタイプが必要です。サブタイプは、リモート・ホスト・レコードについて説明するビューの名前です。型付きバッファ内のデータは、フィールド操作言語(FML)データです。バッファは、Oracle Tuxedo Mainframe Adapter for SNA Gatewayにより、ビューで記述されたレコードにEBCDICとして変換されます。リモート・アプリケーションがレコードをATMIアプリケーションに送信する場合、レコードをATMIアプリケーションに渡す前にOracle Tuxedo Mainframe Adapter for SNA GatewayがそのレコードをATMI型付きバッファに変換する必要があります。Gatewayは、サービス定義を使用して、ホスト・レコードに適用する必要がある変換(ある場合)を判別します。サービス定義では、DMCONFIGファイルのDM_LOCAL_SERVICESセクションとDM_REMOTE_SERVICESセクションの両方でOUTBUFTYPEを使用して、目的の変換について説明します。OUTBUFTYPEは次のように指定します。OUTBUFTYPEパラメータには1つのtype:subtypeのみ入力可能です。null終了文字列は、ASCIIに変換されます。変換後の文字列は、ATMI STRING型付きバッファに移動します。ViewおよびFMLデータ型の文字列の使用の詳細は、「文字列の変換ルール」の項を参照してください。これらの型付きバッファが使用されるのは、他のstrong型バッファのいずれを使用してもデータ・レコードを記述または変換できない場合です。strongは、Oracle Tuxedo Mainframe Adapter for SNAがあらゆるデータ・フィールドを認識して必要なデータ変換を実行できることを意味しています。これらの型付きバッファが使用される他の場合として、リモート・サービスで様々なスタイルのデータ集計(複数のレコード・タイプ)が必要とされる場合があります(OUTBUFTYPEパラメータが1つのtype:subtypeに制限されているため)。これらの型付きバッファではサブタイプが必要です。サブタイプは、リモート・ホスト・レコードについて説明するビューの名前です。リモート・ホスト・レコードは、ATMI型付きバッファに変換されます。コンパイル済VIEWファイルは、ホスト・レコードでデータとASCIIの変換を実行するために使用します。デフォルトでは、ホスト・レコードはCOBOLデータ集合体で、変換された型付きバッファはC構造体を使用してATMIアプリケーションによってマップされます。変換オプションの詳細は、「VIEWデータ型の変換ルール」の項を参照してください。Oracle Tuxedo Mainframe Adapter for SNAシステムは、リモートCICSサービスを分散プログラム・リンク(DPL)プログラムとしてサポートします。DPLのサポートは、ATMIサービスをピアのCICS/ESAサービスであるものとみなして実行されます。DPLプログラムでは、アプリケーションをすべての分散トランザクション処理(DTP)から保護します。DPLのアプリケーションはリクエスト/レスポンス・サービスであり、すべてのデータ通信がCOMMAREAの受渡しによって実行されます。前の例で、リクエスト元がDATALENGTHサイズのCOMMAREAを送信し、受信側アプリケーションがLENGTHのサイズのCOMMAREAデータ・コンテンツをバッファに受信します。DATALENGTHのサイズはLENGTHサイズより小さくてもかまいませんが、リクエスト元は元のCOMMAREAバッファへの受信対象としてLENGTHサイズのレスポンスを想定しています。Oracle Tuxedo Mainframe Adapter for SNAソフトウェアでは、ATMIリクエスト側に対応するLENGTHパラメータがないためにどのようなサイズのCOMMAREAをリモートのDPLサービスで想定するかを決定する必要があります。
表5-1 DPLリクエストのLENGTH計算 LENGTHはVIEWファイルの最大サイズです。この計算では、C構造体とターゲット・レコードのうち、大きい方のサイズが採用されます。 Oracle Tuxedo Mainframe Adapter for SNAソフトウェアはリクエスト元のCICS DPLからLENGTH値とDATALENGTHサイズのCOMMAREAデータを受け取ります。このソフトウェアはLENGTHサイズのバッファを割り当て、COMMAREAデータをこのバッファに移動してから、変換を実行します。表5-2は、VIEWデータ変換ルールを示します。
表5-2 VIEWデータ変換ルール
注意: ATMIプラットフォームには、VIEW内の10進値をサポートするdec_tというフィールド・タイプが用意されています。ゲートウェイはこれらのフィールドをマシン非依存のパック10進数表現に変換します。たとえば、dec_t(m,n)とすると、S9(2*m-(n+1))V9(n) COMP-3という結果になります。したがって、サイズ8,5の10進フィールドはS9(10)V9(5) COMP-3になります。表5-3は、CとIBM/370のデータ型の間の変換ルールを示します。
Oracle Tuxedo Mainframe Adapter for SNAが実行するキャラクタ・セット変換は、X/Open XPGポータビリティ・ガイドに従えば完全にローカライズ可能です。ASCIIおよびEBCDICの変換は、メッセージ・ファイルからロードされます。詳細は、「文字列の変換ルール」の項を参照してください。Oracle Tuxedo Mainframe Adapter for SNAソフトウェアには、英語言語のほとんどのアプリケーションの要件を満たす、デフォルトの動作があります。ただし、変換をカスタマイズすることが必要になる場合もあります。詳細は、「文字列の変換ルール」の項を参照してください。たとえば、適切なdec_t型VIEW要素を指定することで、リモート・ターゲット・システムで倍精度のフィールド操作言語(FML)フィールドをパック10進数フィールドに変換できます。また、数値を文字列に変換することもできます。たとえば、FMLバッファでdec_t型が直接サポートされない場合、10進値を文字列フィールドに入れてVIEW定義内のdec_tフィールドにマップすることができます。RECORDバッファ内のデータは、常に元の形式(COBOL内部表現)のままです。詳細は、『FMLを使用したOracle Tuxedo ATMIアプリケーションのプログラミング』のデータ型および変換に関する項を参照してください。ATMIプラットフォームとホスト・アプリケーションの間の対話を計画するときには、アプリケーションの記述に使用されるプログラミング言語を考慮する必要があります。COBOL言語では、文字列の表現がC言語および関連するATMIプラットフォームVIEWバッファとは異なります。リスト5-1に、同じ2つの文字列(string1およびstring2)をコーディングする3つの方法を示します。リスト5-1 文字列の3つの表現リストにおいて、C構造体とVIEWバッファではstring1とstring2のサイズがそれぞれ10および16文字として表現されています。これに対して、COBOLレコードでは、これらのサイズはそれぞれ9および15文字です。ソース・コードでこの非互換性に対応しておかないと、CとCOBOLプログラム間でコードのミスアラインメントが発生する可能性があります。文字列変換オプションを設定するには、UBBCONFIGファイルのゲートウェイ・サーバー(GWSNAX)定義を構成する際にCLOPTパラメータを使用します。CLOPTパラメータの-tオプションを表5-4にリストされたいずれかの値に設定すると、ゲートウェイにより該当する文字列変換が実行されます。次の構文形式を使用します。-- システムが認識する引数の最後と、サーバー内のサブルーチンに渡す引数の最初をマークします。-tオプションなどアプリケーション固有の引数をサーバーに指定する場合には、このオプションは必須です。-tは、CからCOBOLへの文字列変換を確立するOracle Tuxedo Mainframe Adapter for SNAオプションです。
注意: サーバー定義にCLOPTパラメータの-tオプションを設定しない場合は、デフォルトでゲートウェイは文字列変換を実行しません。
表5-4 CからCOBOLへの文字列変換 各変換表は、2つのマッピング表で構成されています。1つはアウトバウンド変換(ATMIプラットフォームからホストへ)用で、もう1つはインバウンド変換(ホストからATMIプラットフォームへ)用です。変換の方向を指定する必要はありません。ホスト・アプリケーションの記述に使用される各国語を決定することのみが必要です。図5-1に、コードページ変換を示します。BEAS TYPE=SNAX CODEPAGE=“cpname”表5-5に、Oracle Tuxedo Mainframe Adapter for SNAソフトウェアに付属している変換表を示します。
ATMIプラットフォームのデフォルト値1 CP-00819 2
ハードコードされているデフォルトのATMI表を除くすべての表は、アプリケーションの変換ニーズに合うように修正できます。表の内容の詳細は、付録D「コード・ページ変換表」を参照してください。変換表の定義を変更するには、ゲートウェイを再起動する必要があります。リモート・ドメインのCODEPAGE指定が行われていない場合は、Oracle Tuxedo Mainframe Adapter for SNAソフトウェアではATMIのデフォルト変換表が使用されます。変換表ファイルが見つからない場合、「2241: エラー コードページ表にアクセスできません」というメッセージと理由コードが生成され、ゲートウェイを起動できません。理由コードの詳細は、付録B「エラー・メッセージ」内でこのメッセージを参照してください。リスト5-2は、1つのローカル・ドメイン(CIXA)と2つのリモート・ドメイン(CISAおよびIMSA)を定義するエントリを示しています。常にローカル・ドメインではASCIIコードページCP-00819を使用するものと想定されています。この例では、2つのリモート・ドメインはそれぞれドイツ語とフランス語のEBCDICコードページ、CP-00273とCP-00297を使用します。リスト5-2 コードページ定義の例1バイト・キャラクタ・セット(SBCS)変換の他に、TMA SNAはアジアの顧客の要件を満たすためにマルチバイト・キャラクタ・セット(MBCS)変換もサポートしています。この変換は、ディレクトリ$TUXDIR/udataobj/codepageにある変換表には依存せず、200種類を超えるSBCSおよびMBCSキャラクタ・セットが含まれているICUライブラリに基づいています。この変換を使用するには、次の形式でDMCONFIG DM_REMOTE_DOMAINSのCODEPAGEを指定する必要があります。ASCII_CHAR_SETはローカル・ドメイン用で、EBCDIC_CHAR_SETはリモート・ドメイン用です。これらは、コロンで区切ります。ASCII_CHAR_SETとEBCDIC_CHAR_SETの両方が、ICUで認識される使用可能なキャラクタ・セットである必要があります。ユーティリティuconvを使用すると、これらのキャラクタ・セットの関連情報を取得できます。"-m32"によってCOBOLの"S9(9) COMP"に32ビット長を使用することを指定し、"-fpack-struct=1"によってCOBOL向けにアラインメントなしを指定します。GWSNAXのみがVIEW32バイナリを使用できることを確認してください(他のCアプリケーションでは使用できません)。