その他の情報

本付録では、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