フィールド・タイプ使用の推奨事項
新しいフィールドを LANSA ディクショナリに定義する場合は、以下の指針を参考にしてください。
- フィールドが日付または時刻の場合は次の 3 つのケースを考慮します。
- 固有の日付を格納する場合は、タイプDateを使用します。
- 固有の日時を格納する場合は、日付フィールドと時刻フィールドを別々に設定するよりも、タイプDateTimeを使用します。
- 固有でない時刻を格納する場合は、Timeを使用します(そのようなケースはまれです)。
- 値が真偽 (True/False) である場合は、Boolean を使用します。
- 数字の場合小数点以下がない場合はタイプIntegerを使用し、それ以外の場合はタイプPackedを使用します。
- また、これは文字列または他のバイト・ストリームである必要があります。
- 通常、特殊なタイプのファイルまたはドキュメント(例: 画像、音声、MS-Word文書またはXML文書)に保持される場合は、タイプBLOBを使用します。
- 通常のコード・ページ変換が必要でない場合、必要データ長が常に同じでない限り、VarBinaryを使用します。データ長が常に同じ場合は、Binaryを使用することもできます。
- フィールドが 256 バイト以下で、固定長フィールドとして保管するのが最適な場合、かつ、実行時、一つの言語でのサポートのみが必要な場合、タイプ Alpha. を使用します。
- データ長が 65535 バイトを超える場合は、タイプCLOBを使用します。
- フィールドを、末尾ブランクが意味を持つ可変長フィールドとして保管する場合(フィールド連結操作に含まれる場合など)、実行時、一つの言語でのサポートのみが必要な場合、タイプ String を使用します。その他の場合は、タイプ NVarChar を使用します。
- 他の固定長フィールドの場合で、実行時、一つの言語でのサポートのみが必要な場合、タイプ Char を使用します。この他の場合は、タイプ NChar を使用します。
他のすべてのタイプは、LANSA以外のデータベース・テーブルとの互換性のために用意されています。新しいDBMSテーブルの新しいフィールドや列を定義するときには、基本的にそれらのタイプを使用しないでください。
通常使用されるフィールド・タイプ
タイプ
|
説明
|
標準的なDBMSへの格納タイプ
|
ディクショナリで定義可能な最大長
|
コード・ページ変換が必要
|
注記
|
RDMLまたはRDMLXプログラムで使用可能
|
Integer
|
整数
|
INTEGER
|
4 バイト
|
|
ハードウェアとコンパイラにより動作が異なる可能性あり
|
RDMLX
|
Packed
|
標準的な 10 進数
|
DECIMAL
|
RDMLX プログラム: 63 桁までで、そのすべての桁で 10 進数を使用可能
RDML プログラム:30 桁までで、そのうちの 9 桁で 10 進数を使用可能
|
N/A
|
|
両方
|
String
|
ディクショナリ定義に最大長がある可変長の英数文字列
|
VARCHAR (可変長)
|
65535
|
要
|
ディクショナリで定義されている最大長までブランクが埋め込まれない。ただし、長さ0の文字列には1個のスペースが追加される
|
RDMLX
|
VarBinary
|
コード・ページの変換がないこと以外は、String とまったく同じ
|
VARBINARY
|
32767
|
不要
|
ディクショナリ定義の最大長まで埋め込まれない
|
RDMLX
|
NVarChar
|
String と似ているがデータは Unicode として扱われる。実行時に多言語利用が可能
|
NVARCHAR
|
65535 文字
|
要 (ただし、ネイティブ String へ変換する場合のみ)
|
|
RDMLX
|
Alpha
|
ディクショナリ定義に最大長がある一定の長さの英数文字列
|
CHAR (固定長)
|
256
|
要
|
常にディクショナリ定義の最大長までブランクで埋め込まれる
|
両方
|
Date
|
ISO 形式の日付 (YYYY-MM-DD)
|
DATE
|
N/A
|
N/A
|
|
RDMLX
|
Time
|
ISO 形式の時間 (HH:MM:SS)
|
TIME
|
N/A
|
N/A
|
|
RDMLX
|
DateTime
|
ISO 形式 YYYY-MM-DD HH:MM:SS[.fffffffff] の日付と時間。[.fffffffff] の部分の存在と長さは定義可能
|
DATETIME
|
29
|
N/A
|
|
RDMLX
|
Boolean
|
TrueまたはFalse。
|
10 進数
|
N/A
|
N/A
|
|
RDMLX
|
|
特殊な文字とバイナリのタイプ(RDMLXプログラムのみで使用可能)
タイプ
|
説明
|
標準的にDBMSへ格納されるタイプ
|
ディクショナリで定義可能な最大長
|
使用される標準的なDBMSへの格納の長さ
|
コード・ページ変換が必要
|
重要なポイント
|
Char
|
固定長であることと、DBMSへの格納の実行が通常CHARである以外は、Stringとまったく同じ
|
CHAR
|
65535
|
固定長
|
要
|
|
Binary
|
DBMSの実装が多様であること以外は、VarBinaryとまったく同じ
|
BINARY
|
32767
|
固定または可変のいずれか
|
不要
|
固定長の列タイプを使用するデータベースでは最大長まで埋め込みが行われる
|
NChar
|
固定長であることと、DBMSへの格納の実行が通常NCHARである以外は、NVarCharとまったく同じ
|
NCHAR
|
65535
|
固定長
|
要 (ただし、ネイティブ String へ変換する場合のみ)
|
|
CLOB
|
文字ラージ
オブジェクト
|
CLOB
|
未定義
|
内容により異なる
|
要
|
DBMSのパフォーマンスの考慮事項が適用される場合あり
|
BLOB
|
バイナリー
ラージ
オブジェクト
|
BLOB
|
未定義
|
内容により異なる
|
不要
|
DBMSのパフォーマンスの考慮事項が適用される場合あり
|
|
ほとんど使用されない数値タイプ
タイプ
|
説明
|
標準的なDBMSへの格納タイプ
|
ディクショナリで定義可能な最大長
|
使用するケース
|
重要なポイント
|
RDMLまたはRDMLXプログラムで使用可能
|
Signed
|
Signed (符号付き) 10進数、または Zoned (ゾーン) 10進数
|
DECIMAL
|
RDMLX プログラム:63 桁までで、そのうちの 63 桁で 10 進数を使用可能
RDML プログラム:30 桁までで、そのうちの 9 桁で 10 進数を使用可能
|
プログラムによる数値と文字のオーバーレイ操作用
|
算術演算では、SignedはPackedやIntegerより効率に劣る
|
両方
|
Float
|
Floating Point (浮動小数点)
|
FLOAT
|
未定義
浮動小数点数は厳密な数値ではなく、近似値
|
LANSA以外で定義されているDBMSテーブルでのみ使用する場合
|
ハードウェアとコンパイラにより動作が異なる可能性あり
|
RDMLX
|
|