ストリング記述子では、最初の 2 バイトは、ストリングの最大長を指定します。 この最大長は常にネイティブ・フォーマットで保持されます。
3 番目のバイトには、(例えば、VARYING ストリングのストリング長の保持フォーマットがリトル・エンディアンなのかビッグ・エンディアンなのか、また WIDECHAR ストリングのデータ保持フォーマットがリトル・エンディアンなのかビッグ・エンディアンなのかを示すフラグなど) さまざまなフラグが含まれます。
非可変ビット・ストリングのストリング記述子では、 4 番目のバイトはビット・オフセットを表します。
CHARACTER ストリングのストリング記述子では、4 番目のバイトは、コンパイラー CODEPAGE オプションをエンコードします。
ストリング記述子の宣言は次のとおりです。
declare
1 dso_string based( null() ),
2 dso_string_length fixed bin(15),
2 dso_string_flags,
3 dso_string_is_varying bit(1),
3 dso_string_is_varyingz bit(1),
3 dso_string_has_nonnative_len bit(1), /* for varying */
3 dso_string_is_ascii bit(1), /* for char */
3 dso_string_has_nonnative_data bit(1), /* for wchar */
3 * bit(1), /* reserved, '0'b */
3 * bit(1), /* reserved, '0'b */
3 * bit(1), /* reserved, '0'b */
2 * union,
3 dso_String_Codepage ordinal ccs_Codepage_Enum,
3 dso_string_bitofs fixed bin(8) unsigned,
2 dso_string_end char(0);
コード・ページエンコードで指定可能な値は、次のように定義されます。
define ordinal
ccs_Codepage_Enum
( ccs_Codepage_01047 value(1)
,ccs_Codepage_01140
,ccs_Codepage_01141
,ccs_Codepage_01142
,ccs_Codepage_01143
,ccs_Codepage_01144
,ccs_Codepage_01145
,ccs_Codepage_01146
,ccs_Codepage_01147
,ccs_Codepage_01148
,ccs_Codepage_01149
,ccs_Codepage_00819
,ccs_Codepage_00813
,ccs_Codepage_00920
,ccs_Codepage_00037
,ccs_Codepage_00273
,ccs_Codepage_00277
,ccs_Codepage_00278
,ccs_Codepage_00280
,ccs_Codepage_00284
,ccs_Codepage_00285
,ccs_Codepage_00297
,ccs_Codepage_00500
,ccs_Codepage_00871
,ccs_Codepage_01026
,ccs_Codepage_01155
) unsigned prec(8);