その他の情報
本付録では、ProSortのデータ形式と定数などの情報を記述します。
1. データ形式
以下は、ProSortの各データ形式についての説明です。
-
CH
文字列をASCIIコードまたはEBCDICコードに表現するデータ形式です。
-
USE_CH_EBCDICパラメータの設定値がYの場合
各文字を8ビットのEBCDICコードで表現します。たとえば、PS3はD7E2F3 (HEX形式)で表現されます。
-
USE_CH_EBCDICパラメータの設定値がNの場合
各文字をASCIIコードで表現します。たとえば、PS3は505333 (HEX形式)で表現されます。
-
-
TP
数字を10進数のASCIIコードで表現するデータ形式です。符号は最後のバイトに含まれます。
-
USE_ALTERNATIVE_TP_TYPEパラメータの設定値がYの場合
最後のバイトは以下のように変換されます。
符号 説明 正数
-
変換方法
'0'→'0', '1'→'1', '2'→'2', '3'→'3', '4'→'4', '5'→'5', '6'→'6', '7'→'7', '8'→'8', '9'→'9'
たとえば、123は123で表現されます。
負数
-
変換方法
'0'→'}', '1'→'J', '2'→'K', '3'→'L', '4'→'M', '5'→'N', '6'→'O', '7'→'P', '8'→'Q', '9'→'R'
たとえば、-123は12Lで表現されます。
-
-
USE_ALTERNATIVE_TP_TYPEパラメータの設定値がNの場合
最後のバイトは以下のように変換されます。
符号 説明 正数
-
変換方法
'0'→'{', '1'→'A', '2'→'B', '3'→'C', '4'→'D', '5'→'E', '6'→'F', '7'→'G', '8'→'H', '9'→'I'
たとえば、123は12Cで表現されます。
負数
-
変換方法
'0'→'}', '1'→'J', '2'→'K', '3'→'L', '4'→'M', '5'→'N', '6'→'O', '7'→'P', '8'→'Q', '9'→'R'
たとえば、-123は12Lで表現されます。
-
-
-
ZD
数字を10進数のASCIIコードで表現するデータ形式です。符号は最後のバイトに含まれます。
最後のバイトは以下のように変換されます。
符号 説明 正数
-
変換方法
'0'→'0', '1'→'1', '2'→'2', '3'→'3', '4'→'4', '5'→'5', '6'→'6', '7'→'7', '8'→'8', '9'→'9'
たとえば、123は"123"で表現されます。
負数
-
変換方法
'0'→'p', '1'→'q', '2'→'r', '3'→'s', '4'→'t', '5'→'u', '6'→'v', '7'→'w', '8'→'x', '9'→'y'
たとえば、-123は"12s"で表現されます。
-
-
PD
数字を各桁数ごとに4ビットを使用して表現するデータ形式です。符号は別途のニブル(nibble, 4bit)で最後に表現されます。
ZDは各桁数ごとに1バイトを使用して数字を表現するのに対し、PDはZDより約1/2の領域で数字を表現します。こうした特性からパック10進数(packed decimal)といいます。
各バイトは以下のようにニブルに変換されます。
'0'->X'0', '1'->X'1', '2'->X'2', '3'->X'3', '4'->X'4', '5'->X'5', '6'->X'6', '7'->X'7', '8'->X'8', '9'->X'9'
最後には以下のようにニブルが別途追加されます。
符号 説明 正数
-
変換方法
X'C'
たとえば、123は123C (HEX形式)で表現されます。
負数
-
変換方法
X'D'
たとえば、-123は123D (HEX形式)で表現されます。
-
-
FI
固定小数点の表現方法(fixed-point representation system)を使用して数字を表現するデータ形式です。最上位ビットに符号が含まれます。
符号 説明 正数
-
変換方法
0
たとえば、+247は00F7 (HEX形式)で表現されます。
負数
-
変換方法
1
負数の値は2の補数で表現されます。たとえば、-247はFF09 (HEX形式)で表現されます。
-
-
BI
符号のない2進数で数字を表現するデータ形式です。任意のビットパターンで構成されます。
-
AC
各文字をASCIIコードで表現するデータ形式です。たとえば、PS3は505333 (HEX形式)で表現されます。
-
EC
各文字を8ビットのEBCDICコードで表現するデータ形式です。たとえば、PS3はD7E2F3 (HEX形式)で表現されます。
データ形式の例
以下は、ZD形式コードを使用して'-247'を表現する例です。
2 |
4 |
7 |
Decimal |
F2 |
F4 |
D7 |
Hexadecimal |
11110010 |
11110100 |
11010111 |
Binary |
以下は、ZD形式コードを使用して'+247'を表現する例です。
F2 |
F4 |
C7 |
11110010 |
11110100 |
11000111 |
以下は、PD形式コードを使用して'-247'を表現する例です。
2 |
4 |
7- |
Decimal |
2 |
4 |
7D |
Hexadecimal |
0010 |
0100 |
01111101 |
Binary |
+246はHEX形式で247Cになります。
2. 比較フィールドの形式および長さ制限
| 形式コード | 長さ制限 | 説明 |
|---|---|---|
ZD |
64バイト |
符号付きゾーン10進数(Signed zoned decimal) |
PD |
64バイト |
符号付きパック10進数(Signed packed decimal) |
FI |
64バイト |
符号付き固定小数点(Signed fixed point) |
BI |
64バイト |
符号なしバイナリ(unsigned binary) |
AC |
64バイト |
ASCII文字 |
EC |
64バイト |
EBCDIC文字 |
3. 定数
以下は、ProSortで使用できる定数(Constant)です。
-
10進数(Decimal Number)
xxxxxと同じ形式であり、以下のように数字で定義します。
100, 1000, 2345
-
文字列形式(Character String Format)
C’xxx...x’と同じ形式であり、以下のように文字で定義します。
C'ASDF', C'Test'
-
16進文字列形式(Hexadecimal String Format)
X’yy...yy’と同じ形式であり、以下のようにHEX文字列で定義します。
X'ABCD', X'BF3C', X'AF050505', X'BF3C'
4. エディット・マスク・パターン
パターンには以下のような属性があります。
| 属性 | 説明 |
|---|---|
I |
無効数字(insignificant digit)であり、0であれば出力されません。 |
T |
有効数字(significant digit)であり、0であっても出力されます。 |
CR |
M3の場合のみ定義できます。 負数であれば出力され、負数でなければ2桁の空白が出力されます。 |
S |
符号(+/-)を現します。 |
以下は、サンプル値を使って各エディット・マスク・パターン(Edit Mask Patterns)を実行した結果です。
| マスク | パターン | サンプル値 | 実行結果 |
|---|---|---|---|
M0 |
IIIIIIIIIIIIIITS |
+01234 |
1234 |
-00001 |
1- |
||
M1 |
TTTTTTTTTTTTTTTS |
-00123 |
00123- |
+00123 |
00123 |
||
M2 |
I,III,III,III,IIT.TTS |
+123450 |
1,234.50 |
-000020 |
0.20- |
||
M3 |
I,III,III,III,IIT.TTCR |
-001234 |
12.34CR |
+123456 |
1,234.56 |
||
M4 |
SI,III,III,III,IIT.TT |
+0123456 |
+1,234.56 |
-1234567 |
-12,345.67 |
||
M5 |
SI,III,III,III,IIT.TTS |
-001234 |
(12.34) |
+123450 |
1,234.50 |
||
M6 |
III-TTT-TTTT |
00123456 |
012-3456 |
12345678 |
1-234-56788 |
||
M7 |
TTT-TT-TTTT |
00123456 |
000-12-3456 |
12345678 |
012-34-5678 |
||
M8 |
IT:TT:TT |
030553 |
3:05:53 |
121736 |
12:17:36 |
||
M9 |
IT/TT/TT |
123094 |
12/30/94 |
083194 |
8/31/94 |
||
M10 |
IIIIIIIIIIIIIIT |
01234 |
1234 |
00000 |
0 |
||
M11 |
TTTTTTTTTTTTTTT |
00010 |
00010 |
01234 |
01234 |
||
M12 |
SIII,III,III,III,IIT |
+1234567 |
1,234,567 |
-0012345 |
-12,345 |
||
M13 |
SIII.III.III.III.IIT |
+1234567 |
1.234.567 |
-0012345 |
-12.345 |
||
M14 |
SIII III III III IITS |
+1234567 |
1 234 567 |
-0012345 |
(12 345) |
||
M15 |
III III III III IITS |
+1234567 |
1 234 567 |
-0012345 |
12 345- |
||
M16 |
SIII III III III IIT |
+1234567 |
1 234 567 |
-0012345 |
-12 345 |
||
M17 |
SIII’III’III’III’IIT |
+1234567 |
1’234’567 |
-0012345 |
-12’345 |
||
M18 |
SI,III,III,III,IIT.TT |
+0123456 |
1,234.56 |
-1234567 |
-12,345.67 |
||
M19 |
SI.III.III.III.IIT,TT |
+0123456 |
1.234,56 |
-1234567 |
-12.345,67 |
||
M20 |
SI III III III IIT,TTS |
+0123456 |
1 234,56 |
-1234567 |
(12 345,67) |
||
M21 |
I III III III IIT,TTS |
+0123456 |
1 234,567 |
-1234567 |
12 345,67- |
||
M22 |
SI III III III IIT,TT |
+0123456 |
1 234,56 |
-1234567 |
-12 345,67 |
||
M23 |
SI’III’III’III’IIT.TT |
+0123456 |
1’234.56 |
-1234567 |
-12’345.67 |
||
M24 |
SI’III’III’III’IIT,TT |
+0123456 |
1’234,56 |
-1234567 |
-12’345,67 |
||
M25 |
SIIIIIIIIIIIIIIT |
+01234 |
1234 |
-00001 |
-1 |
||
M26 |
STTTTTTTTTTTTTTT |
1234 |
+01234 |
-1 |
-00001 |