このドキュメントでは、次のトピックについて説明します。
Adabas バージョン 7 より前では、Adabas バッファのデータを異なるマシンアーキテクチャ(ASCII、EBCDIC)間で変換する処理は Entire Net-Work によって行われていました。 クライアントとサーバー(データベース)でのエンコードが異なるアプリケーションの使用が増え、Adabas 自体のデータの転送と変換の機能を拡張する必要が生じました。 Entire Net-Work によって、ターゲットデータベースに変換機能があるかどうかが判別され、変換機能がある場合はそこで変換されるように、未変換のデータがデータベースに渡されます。
Adabas 内でデータを変換する別の利点として、他の送信メカニズムをサポートできるようになりました。 UES 対応データベースについては、Adabas バージョン 7 で、Web ベースのアプリケーション、または Software AG の Jadabas などの PC ベースのアプリケーションから、TCP/IP プロトコルを使用した z/OS メインフレームのデータベースへの Entire Net-Work アクセスが可能です。 詳細については、『ADABAS オペレーションマニュアル』の ADARUN パラメータ TCP と TCPURL の説明を参照してください。
Adabas では次のようにデータが変換されます。
クライアントアプリケーションは特殊エンコードを指定して、セッション開始時(OP コマンド)にそれを Adabas ニュークリアスに伝えることができます。
LNKUES/ADALNK により、コール元のアーキテクチャに応じて Adabas バッファデータが変換されます。
多くのユーティリティが特殊なエンコードおよびアーキテクチャ設定に対応しています。
EBCDIC から ASCII、また ASCII から EBCDIC への変換表が『Adabas インストールマニュアル』にあります。 Adabas バージョン 7 に含まれるエンコードキーの表が『Adabas コマンドリファレンスマニュアル』と『Adabas ユーティリティマニュアル』にあります。
Adabas では 4 種類のエンコードが認識されます。これらは同時に指定できます。
エンコード | 文字列エンコード |
---|---|
ファイル | 内部で格納、処理されます。 |
デフォルトユーザー | Adabas ローカルコールインターフェイス要求と ADACMP DDEBAND のデフォルトとして使用されます。 |
ユーザー | ユーザーセッションまたは ADACMP 実行でデフォルトのユーザーエンコードに優先します。 クライアントプログラムの特別なニーズに対応するために使用されます。 |
照合 | 許可されるソート順になります。 照合は、一般にローカル定義で特定される言語や国の標準で定義できます。 |
ユーザーデータは変換が不要なので、Adabas では、処理速度を上げるため、ローカルのデフォルトのユーザーエンコードとファイルエンコードが同等とみなされます。 ASCII アーキテクチャのリモート要求はデータベースのデフォルトの ASCII ユーザーエンコードを使用して変換されます。
2 バイト文字セットはネイティブのメインフレーム EBCDIC アーキテクチャエンコード(IBM、富士通、または日立のホスト DBCS)を使用して変換されます。
特殊なアプリケーションやリモートクライアントでは、セッションの開始時にそれぞれの処理環境に適合する特定のユーザーエンコードが選択されます。
アーキテクチャおよびエンコード間の上位と下位方向の互換性を確保するために、Adabas では、デフォルトユーザーエンコードおよびあらゆる特定のユーザーエンコードで定義されたすべての文字のスーパーセットを保持するファイルエンコードを使用します。 ファイルエンコードなどのワイド文字フィールドのデフォルトのエンコードは、汎用文字セットの Unicode です。
ディスクリプタフィールドには照合エンコードが定義されます。 このエンコードの値は、文化的に正しいソートキー、つまり文字のディクショナリを生成するようにプログラミングされた照合出口を呼び出すことでアルゴリズムに従って取得されます。 照合エンコードは、英数字およびワイド文字フィールドの両方に定義できます。照合エンコード/出口は、英数字とワイド文字ディスクリプタフィールドのいずれか、またはその両方にファイルレベルで定義されます。
変換出口 ADACOX を使用できます。 ADACOX では、UES 対応のデータベースに対して、Windows-1256 と EBCDIC アラビア語または EBCDIC ペルシア語のコードページ間でのコンテキスト依存の変換がサポートされます。
Windows窶錀1256 において、アラビア語の文字は unshaped ですが、サポートされる EBCDIC エンコードでは前後の文字に応じて shaped 形式が使用されます。 さらに、特定の連続文字には結合形式が使用されます(例えば LAM-ALEF 合字)。
現在、論理順序と視覚順序の間における変換および対称文字の変換はサポートされていません。
UES 対応のデータベースでは、変換出口が常にロードされます。
2 つのエンコード間で新しい変換が初めて使用されるとき、その変換が出口によってサポートされているかどうかが照会されます。 変換がサポートされている場合は、その変換のときに出口が呼び出されます。変換がサポートされていない場合は、Adabas または Entire Conversion Services によって変換が実行されます。
ただし、ADACOX 内で定義される変換には、対応する ECS オブジェクトが必要です。例えば、420 から 1256 に変換する場合、文字セットのプロパティは ECS オブジェクトによって決定されます。
S 演算子を使用して検索を行うとき、通常、上限値は連続した X'FF' バイトです。
UES = YES の場合、ソースとターゲットのコードページによってデータの変換が制御されます。 文字 X'FF' の変換は、ターゲットのコードページへのマッピングに依存します。 したがって、X'FF' は変換後の値では X'FF' ではなくなる可能性があります。
例えば、819(ISO 8859-1 Latin1)から 37(EBCDIC)に変換する場合、分音符号付きの Latin の小文字 'y' は X'FF' から X'DF' にマッピングされます。 その結果、検索機能で見つかるレコードが減るか、まったくなくなります。
この問題は次のように解決します。 UES の値が YES で英数字またはワイドを変換する場合、すべての FROM-TO 検索/論理読み込み条件は、TO 条件内において値の最後の上限値が、内部検索値に変換されるときに保持され、値の変換から除外されるように処理されます。
注意:
この解決策は値演算子(EQ、GT、GE、LE、LT)には実装されていません。 FROM-TO 検索条件(S 演算子)の TO
値に限定されています。
これは英数字フォーマットとワイドフォーマットのフィールド、またスーパーディスクリプタとサブディスクリプタの英数字/ワイドフォーマット部分に当てはまります。
Adabas の変換には、Entire Net-Work の次の制約があります。
圧縮レコード(FB=C)は変換されません。
テキストリテラルは変換されず、そのまま渡されます。 レコードを読み込むとき、リテラルは変更されずに返されます(例えば FB AA, '-do not convert-',BB)。
変換でプリフェッチオプション P はサポートされていません。
ET データは変換されません。 ET データの読み込み時に EBCDIC の空白が埋め込まれます。
Adabas によるその他の制約は次のとおりです。
CSCI で使用されるすべての C'Xn' コマンドコードで、コントロールブロックだけが変換され、バッファは変換されません。 これは Adabas バージョン 7 のサーバーだけが対象です。
Entire System Server(NPR)/XCOM アプリケーションは Adabas 変換の範囲に含まれません。 これらのアプリケーションではアプリケーション内で変換を行う必要があります。
OS/2 のアンパック数値記号 X'Dn' は使用されず、サポートされていません。
Adabas には、フィールドレベル変換のユーザー変換出口はありません。 このような出口は Entire Net-Work にあります。
異なるプラットフォームで動作する Adabas バージョン間の違いは徐々になくなってきましたが、アプリケーションを移植するときには次の点を考慮する必要があります。
メインフレーム | オープンシステム | OpenVMS | |
---|---|---|---|
固定小数点フィールド長 | 2 と 4 のみ | 1,2,4,8 | 1,2,4,8 |
バイナリスーパーディスクリプタフォーマットのデフォルトは U(アンパック) | X | ○ | ○ |
符号付きバイナリスーパーディスクリプタ | ○ | X | X |
バイナリスーパーディスクリプタフォーマットの変換 | ○ | X | X |
MU フィールドと PE フィールドがあるスーパーディスクリプタ | ○ | X | X |
スーパーフィールドとサブフィールド | ○ | X | X |
親が浮動小数点フォーマットのスーパーディスクリプタ | X | ○ | ○ |
アンパックフィールドの最大長 | 29 | 29 | 27 |
パックフィールドの最大長 | 15 | 15 | 14 |
読み込みコマンドと ET/BT コマンドのプリフェッチオプション | ○ | X | X |
ロング英数字(LA)フィールドのオプション | ○ | X | X |
フォーマットバッファのフィールド計算更新オプション | X | ○ | ○ |
MC コマンド | X | ○ | ○ |
バリューバッファからのハイパーフィールド値生成 | X | ○ | ○ |
また、メインフレームの ADALNK ユーザー出口で提供されるユーザーデータは ASCII マシンに送信されません。