これまで、Adabas ではデフォルトの内部 EBCDIC/ASCII 変換テーブルが使用されていました。しかし、複雑なクライアント/サーバーシステムの特定変換テーブルに対して完全な柔軟性を提供するために、特殊なコードページユーザー出口もサポートされるようになりました。
Adabas ニュークリアスは、ユーザー出口がリモートノードから発行されたコマンドを処理するときにユーザー出口をコールします。ユーザー出口は、ノード名を含む構造へのポインタとともにコールされます(次の図を参照)。次に、ユーザー出口はユーザー作成のアルゴリズムを使用してどの変換テーブルを使用するかを決定し、ポインタをテーブルに返します。Adabas はこのテーブルを使用して変換を行います。
環境変数 ADATRT は、ユーザーが適当なオプションで作成した共有ライブラリ(UNIX)またはダイナミックリンクライブラリ(Windows)の名前を保持します。拡張子 .txt を持つ単純なテキストファイルも使用できます(詳細については「コードページのサポート」を参照)。ユーザー関数のデフォルト名は `trt' ですが、次の例のように任意の名前を選択することもできます。
setenv ADATRT "$ADADATADIR/db100/adatrt.sl" (UNIX C shell) set ADATRT= %ADADATADIR%\db100\adatrt.dll (Windows)
または
setenv ADATRT "adatrt.so my_trt" (UNIX C shell) set ADATRT=adatrt.dll my_trt (Windows)
環境変数 ADATRT は、ニュークリアスやユーティリティの開始前に設定されている必要があります。定義されていないと、EBCDIC/ASCII 変換が必要な場合にはデフォルトの内部変換テーブルが使用されます。ADATRT が定義されていてもライブラリを正常にロードできない場合、ニュークリアスは起動フェーズ中に異常終了し、対応するエラーメッセージが発行されます。
Format: unsigned char *trt (struct trt_entry *)
基本入力は、現在 Adabas コールを発行しているノードの名前です。ノード名に基づいて、関数は適切なコードページテーブルを選択します。コードページテーブルが選択されたら、関数はテーブルへのポインタを返します。何も選択されない場合は、NULL ポインタが指定され、何も変換されないか、デフォルトの変換が行われます。
この関数は、2 つの値のうちの 1 つとともにコールされます。TRT_INIT コールはニュークリアス/ユーティリティの起動時に実行され、このコールが成功した場合は NULL が返されます。TRT_CODE_PAGE コールには、関数が変換テーブルを選択できるようにノード名セットが含まれています。ADACMP または ADADCU ユーティリティから関数がコールされた場合、TRT_CODE_PAGE コールが 1 回実行され、ノード名が `adacmp' または `adadcu' になります。
これによって、現在のデータベース番号が指定されます。複数のデータベース間で変換テーブル関数が共有される場合があるため、この処理が必要となります。
変換テーブルは、512 バイト長である必要があります。前半はクライアントマシンアーキテクチャからサーバーアーキテクチャへの変換に使用され、後半の 256 バイトは逆変換に使用されます。
各テーブルは、実際に使用できる変換テーブルである必要があります。つまり、入力文字の値はテーブルに対するインデックスであり、対応するセルに格納されている文字が取得されます。
ユーザーは、異種環境で要求される変換テーブルを制限無く使用できます。
コードページの使用には、次の規則が適用されます。
現在の Adabas コールがリモートノードから発行され、読み込みコマンドまたは更新コマンドである場合、ユーザー作成関数は常にコールされます。
ユーザー作成関数が(コードページに)ポインタを返した場合、これが変換に使用されます。変換されるのは、英数字(フォーマット A)データだけです。
ユーザー作成関数が空値を返し、リモートおよびローカルのアーキテクチャが同一の場合、変換は行われません。
ユーザー作成関数が NULL を返し、リモートアーキテクチャとローカルアーキテクチャが異なる場合、デフォルトの Adabas 変換テーブルを使用して変換が行われます。
Adabas キットには、コードページユーザー出口用の対応する C ヘッダーファイルとサンプルソースファイルが含まれています。
構造体 trt_entry は、ファイル adauex.h に定義されます。これは $ADAPROGDIR/inc にあります。
コードページユーザー出口のためのサンプルソースファイル(ファイル名 adatrt.c)および対応する makefile は $ADAPROGDIR/examples/server にあります。
このユーザー出口例を構築するには、次のように入力します。
cd $ADAPROGDIR/examples/server make trt
ユーザー出口用の共有ライブラリは $ADAPROGDIR/examples/server に作成されます。
構造体 trt_entry は、ファイル adauex.h に定義されます。これは、インストールディレクトリのサブディレクトリ "Adabas\inc" にあります。
コードページユーザー出口のためのサンプルソースファイル(ファイル名 adatrt.c)および対応する makefile はインストールディレクトリのサブディレクトリ "Adabas\examples\server" にあります。
このユーザー出口例を構築するには、次のように入力します。
cd <インストールディレクトリ>\Adabas\examples\server nmake trt
インストールディレクトリのサブディレクトリ "Adabas\examples\server" に作成されたユーザー出口の DLL。
Adabas で使用されるデフォルトの変換テーブルは次のとおりです。
注意:
テーブルに含まれていない未定義文字は 0xFF に変換されます。
10 進値 | ASCII 16 進値 | ASCII 文字 | EBCDIC 16 進値 |
---|---|---|---|
0 | 0x00 | 0x00 | |
1 | 0x01 | 0x01 | |
2 | 0x02 | 0x02 | |
3 | 0x03 | 0x03 | |
4 | 0x04 | 0x37 | |
5 | 0x05 | 0x2D | |
6 | 0x06 | 0x2E | |
7 | 0x07 | 0x2F | |
8 | 0x08 | 0x16 | |
9 | 0x09 | 0x05 | |
10 | 0x0A | 0x25 | |
11 | 0x0B | 0x0B | |
12 | 0x0C | 0x0C | |
13 | 0x0D | 0x0D | |
14 | 0x0E | 0x0E | |
15 | 0x0F | 0x0F | |
16 | 0x10 | 0x10 | |
17 | 0x11 | 0x11 | |
18 | 0x12 | 0x12 | |
19 | 0x13 | 0x13 | |
20 | 0x14 | 0x3C | |
21 | 0x15 | 0x3D | |
22 | 0x16 | 0x32 | |
23 | 0x17 | 0x26 | |
24 | 0x18 | 0x18 | |
25 | 0x19 | 0x19 | |
26 | 0x1A | 0x3F | |
27 | 0x1B | 0x27 | |
28 | 0x1C | 0x1C | |
29 | 0x1D | 0x1D | |
30 | 0x1E | 0x1E | |
31 | 0x1F | 0x1F | |
32 | 0x20 | SP | 0x40 |
33 | 0x21 | ! | 0x4F |
34 | 0x22 | " | 0x7F |
35 | 0x23 | # | 0x7B |
36 | 0x24 | $ | 0x5B |
37 | 0x25 | % | 0x6C |
38 | 0x26 | & | 0x50 |
39 | 0x27 | ' | 0x7D |
40 | 0x28 | ( | 0x4D |
41 | 0x29 | ) | 0x5D |
42 | 0x2A | * | 0x5C |
43 | 0x2B | + | 0x4E |
44 | 0x2C | , | 0x6B |
45 | 0x2D | - | 0x60 |
46 | 0x2E | . | 0x4B |
47 | 0x2F | / | 0x61 |
48 | 0x30 | 0 | 0xF0 |
49 | 0x31 | 1 | 0xF1 |
50 | 0x32 | 2 | 0xF2 |
51 | 0x33 | 3 | 0xF3 |
52 | 0x34 | 4 | 0xF4 |
53 | 0x35 | 5 | 0xF5 |
54 | 0x36 | 6 | 0xF6 |
55 | 0x37 | 7 | 0xF7 |
56 | 0x38 | 8 | 0xF8 |
57 | 0x39 | 9 | 0xF9 |
58 | 0x3A | : | 0x7A |
59 | 0x3B | ; | 0x5E |
60 | 0x3C | < | 0x4C |
61 | 0x3D | = | 0x7E |
62 | 0x3E | > | 0x6E |
63 | 0x3F | ? | 0x6F |
64 | 0x40 | @ | 0x7C |
65 | 0x41 | A | 0xC1 |
66 | 0x42 | B | 0xC2 |
67 | 0x43 | C | 0xC3 |
68 | 0x44 | D | 0xC4 |
69 | 0x45 | E | 0xC5 |
70 | 0x46 | F | 0xC6 |
71 | 0x47 | G | 0xC7 |
72 | 0x48 | H | 0xC8 |
73 | 0x49 | I | 0xC9 |
74 | 0x4A | J | 0xD1 |
75 | 0x4B | K | 0xD2 |
76 | 0x4C | L | 0xD3 |
77 | 0x4D | M | 0xD4 |
78 | 0x4E | X | 0xD5 |
79 | 0x4F | O | 0xD6 |
80 | 0x50 | P | 0xD7 |
81 | 0x51 | Q | 0xD8 |
82 | 0x52 | R | 0xD9 |
83 | 0x53 | S | 0xE2 |
84 | 0x54 | T | 0xE3 |
85 | 0x55 | U | 0xE4 |
86 | 0x56 | V | 0xE5 |
87 | 0x57 | W | 0xE6 |
88 | 0x58 | X | 0xE7 |
89 | 0x59 | ○ | 0xE8 |
90 | 0x5A | Z | 0xE9 |
91 | 0x5B | [ | 0x4A |
92 | 0x5C | \ | 0xE0 |
93 | 0x5D | ] | 0x5A |
94 | 0x5E | ^ | 0x5F |
95 | 0x5F | _ | 0x6D |
96 | 0x60 | ` | 0x79 |
97 | 0x61 | a | 0x81 |
98 | 0x62 | b | 0x82 |
99 | 0x63 | c | 0x83 |
100 | 0x64 | d | 0x84 |
101 | 0x65 | e | 0x85 |
102 | 0x66 | f | 0x86 |
103 | 0x67 | g | 0x87 |
104 | 0x68 | h | 0x88 |
105 | 0x69 | i | 0x89 |
106 | 0x6A | j | 0x91 |
107 | 0x6B | k | 0x92 |
108 | 0x6C | l | 0x93 |
109 | 0x6D | m | 0x94 |
110 | 0x6E | n | 0x95 |
111 | 0x6F | o | 0x96 |
112 | 0x70 | p | 0x97 |
113 | 0x71 | q | 0x98 |
114 | 0x72 | r | 0x99 |
115 | 0x73 | s | 0xA2 |
116 | 0x74 | t | 0xA3 |
117 | 0x75 | u | 0xA4 |
118 | 0x76 | v | 0xA5 |
119 | 0x77 | w | 0xA6 |
120 | 0x78 | x | 0xA7 |
121 | 0x79 | y | 0xA8 |
122 | 0x7A | z | 0x9A |
123 | 0x7B | { | 0xC0 |
124 | 0x7C | | | 0x6A |
125 | 0x7D | } | 0xD0 |
126 | 0x7E | ~ | 0xA1 |
127 | 0x7F | 0x07 | |
196 | 0xC4 | Ä | 0x4A |
214 | 0xD6 | Ö | 0xE0 |
220 | 0xDC | Ü | 0x5A |
223 | 0xDF | ß | 0xA1 |
228 | 0xE4 | ä | 0xC0 |
246 | 0xF6 | ö | 0x6A |
252 | 0xFc | ü | 0xD0 |
注意:
テーブルに含まれていない未定義文字は 0x7F に変換されます。
10 進値 | EBCDIC 16 進値 | EBCDIC 文字 | ASCII 16 進値 |
---|---|---|---|
0 | 0x00 | 0x00 | |
1 | 0x01 | 0x01 | |
2 | 0x02 | 0x02 | |
3 | 0x03 | 0x03 | |
5 | 0x05 | 0x09 | |
7 | 0x07 | 0x7F | |
11 | 0x0B | 0x0B | |
12 | 0x0C | 0x0C | |
13 | 0x0D | 0x0D | |
14 | 0x0E | 0x0E | |
15 | 0x0F | 0x0F | |
16 | 0x10 | 0x10 | |
17 | 0x11 | 0x11 | |
18 | 0x12 | 0x12 | |
19 | 0x13 | 0x13 | |
22 | 0x16 | 0x08 | |
24 | 0x18 | 0x18 | |
25 | 0x19 | 0x19 | |
28 | 0x1C | 0x1C | |
29 | 0x1D | 0x1D | |
30 | 0x1E | 0x1E | |
31 | 0x1F | 0x1F | |
37 | 0x25 | 0x0A | |
38 | 0x26 | 0x17 | |
39 | 0x27 | 0x1B | |
45 | 0x2D | 0x05 | |
46 | 0x2E | 0x06 | |
47 | 0x2F | 0x07 | |
50 | 0x32 | 0x16 | |
55 | 0x37 | 0x04 | |
60 | 0x3C | 0x14 | |
61 | 0x3D | 0x15 | |
63 | 0x3F | 0x1A | |
64 | 0x40 | SP | 0x20 |
74 | 0x4A | Ä | 0xC4 |
75 | 0x4B | . | 0x2E |
76 | 0x4C | < | 0x3C |
77 | 0x4D | ( | 0x28 |
78 | 0x4E | + | 0x2B |
79 | 0x4F | ! | 0x21 |
80 | 0x50 | & | 0x26 |
90 | 0x5A | Ü | 0xDC |
91 | 0x5B | $ | 0x24 |
92 | 0x5C | * | 0x2A |
93 | 0x5D | ) | 0x29 |
94 | 0x5E | ; | 0x3B |
95 | 0x5F | ^ | 0x5E |
96 | 0x60 | 0x2D | |
97 | 0x61 | / | 0x2F |
106 | 0x6A | ö | 0xF6 |
107 | 0x6B | , | 0x2C |
108 | 0x6C | % | 0x25 |
109 | 0x6D | _ | 0x5F |
110 | 0x6E | > | 0x3E |
111 | 0x6F | ? | 0x3F |
121 | 0x79 | ` | 0x60 |
122 | 0x7A | : | 0x3A |
123 | 0x7B | # | 0x23 |
124 | 0x7C | @ | 0x40 |
125 | 0x7D | ' | 0x27 |
126 | 0x7E | = | 0x3D |
127 | 0x7F | " | 0x22 |
129 | 0x81 | a | 0x61 |
130 | 0x82 | b | 0x62 |
131 | 0x83 | c | 0x63 |
132 | 0x84 | d | 0x64 |
133 | 0x85 | e | 0x65 |
134 | 0x86 | f | 0x66 |
135 | 0x87 | g | 0x67 |
136 | 0x88 | h | 0x68 |
137 | 0x89 | i | 0x69 |
145 | 0x91 | j | 0x6A |
146 | 0x92 | k | 0x6B |
147 | 0x93 | l | 0x6C |
148 | 0x94 | m | 0x6D |
149 | 0x95 | n | 0x6E |
150 | 0x96 | o | 0x6F |
151 | 0x97 | p | 0x70 |
152 | 0x98 | q | 0x71 |
153 | 0x99 | r | 0x72 |
161 | 0xA1 | ß | 0xDF |
162 | 0xA2 | s | 0x73 |
163 | 0xA3 | t | 0x74 |
164 | 0xA4 | u | 0x75 |
165 | 0xA5 | v | 0x76 |
166 | 0xA6 | w | 0x77 |
167 | 0xA7 | x | 0x78 |
168 | 0xA8 | y | 0x79 |
169 | 0xA9 | z | 0x7A |
192 | 0xC0 | ä | 0xE4 |
193 | 0xC1 | A | 0x41 |
194 | 0xC2 | B | 0x42 |
195 | 0xC3 | C | 0x43 |
196 | 0xC4 | D | 0x44 |
197 | 0xC5 | E | 0x45 |
198 | 0xC6 | F | 0x46 |
199 | 0xC7 | G | 0x47 |
200 | 0xC8 | H | 0x48 |
201 | 0xC9 | I | 0x49 |
208 | 0xD0 | ü | 0xFC |
209 | 0xD1 | J | 0x4A |
210 | 0xD2 | K | 0x4B |
211 | 0xD3 | L | 0x4C |
212 | 0xD4 | M | 0x4D |
213 | 0xD5 | X | 0x4E |
214 | 0xD6 | O | 0x4F |
215 | 0xD7 | P | 0x50 |
216 | 0xD8 | Q | 0x51 |
217 | 0xD9 | R | 0x52 |
224 | 0xE0 | Ö | 0xFC |
226 | 0xE2 | S | 0x53 |
227 | 0xE3 | T | 0x54 |
228 | 0xE4 | U | 0x55 |
229 | 0xE5 | V | 0x56 |
230 | 0xE6 | W | 0x57 |
231 | 0xE7 | X | 0x58 |
232 | 0xE8 | ○ | 0x59 |
233 | 0xE9 | Z | 0x5A |
240 | 0xF0 | 0 | 0x30 |
241 | 0xF1 | 1 | 0x31 |
242 | 0xF2 | 2 | 0x32 |
243 | 0xF3 | 3 | 0x33 |
244 | 0xF4 | 4 | 0x34 |
245 | 0xF5 | 5 | 0x35 |
246 | 0xF6 | 6 | 0x36 |
247 | 0xF7 | 7 | 0x37 |
248 | 0xF8 | 8 | 0x38 |
249 | 0xF9 | 9 | 0x39 |
250 | 0xFA | 0xFA | |
255 | 0xFF | 0xFF |