5
X 0609 : 1998
1.5.3 記述子フォーマット 位置,長さ,名前及び各欄の内容を規定する表1.1によって,記述子フォー
マットを規定する。各欄の解釈は,表に関連する文によって示す。
表1.1 記述子フォーマットの例
バイト位置 長さ(バイト) 名前 内容
0 4 データ長 (=DL) Uint32 (1.6.1.5)
4 32 応用識別子 regid (1.6.4)
36 4 予備 #00バイト
40 2 種別 Int16 (1.6.1.4)=57
42 DL 処理システム用 バイト
[DL+42] * 埋込み #00バイト
表1.1によって規定する記述子は,6個の欄をもつ。
a) データ長欄は,記述子のバイト位置03にUint32(1.6.1.5参照)に従って記録した32ビット符号な
し整数とする。この欄の値はDLとして参照する。
b) 応用識別子欄は,記述子のバイト位置435に1.6.4に従って記録した応用プログラムの識別情報を規
定する32バイトの欄とする。
c) 予備欄は,記述子のバイト位置3639に記録した,各々が値#00をもつ4バイトとする。
d) 種別欄は,記述子のバイト位置4041にInt16 (1.6.1.4) に従って記録した16ビット符号付き整数と
し,その値は57でなければならない。
e) 処理システム用欄は,バイト位置42DL+41に記録したDLバイトとする。ここで,DLは,こ
の記述子のデータ長欄に記録した値とする。記述子の中で参照する記号で表した長さは,その記述子
の中で定義するか,又は欄の解釈の中で記述しなければならない。この欄の解釈を規定する節は,こ
の規格が規定しないとしてもよいし,このバイトの特定の解釈を規定することもできる。
f) 埋込み欄は,各々が#00の値をもつ*で表す可変長の欄とする。この欄の解釈を規定する節は,この欄
の長さを規定しなければならない。
各欄の詳細規定において,バイトがnである欄をbyte (n) と表記する。
1.5.4 文字列 バイト列の値は,ISO/IEC 646 IRVで符号化した “ ” で囲んだ文字列で規定する。例えば,
“sheep” はバイト列#53 #68 #65 #65 #70を表す。
1.5.5 算術表記法 表記法ip (x) は,xの整数部を意味する。
表記法rem (a, b) は,a−b×ip (a/b) を意味する。ここで,a及びbは整数とする。
1.5.6 記述子列スキーマ この節が規定する表記法(以後,スキーマと呼ぶ。)は,構造フォーマットを
規定する。空白は意味をもたない。構造は,項の列でなければならない。項は<>で囲んだ名前,又は{}
で囲んだ構造定義のどちらかでなければならない。 [lab] を前置することによって,項に名前labを付け
てもよい。項には,表1.2に示す繰返し演算子の一つを添字として付けてもよい。
表1.2 繰返し演算子
演算子 解釈
n+m n回からm回繰り返す。
n+ n回以上繰り返す。
n n回繰り返す。
項1|項2という表現は,列中のこの位置に項1又は項2のどちらかが現れることを意味する。
名前は,次の三つの方法の一つで決定する。
a) この規格で定義した記述子又は項の名前とする。
――――― [JIS X 0609 pdf 6] ―――――
6
X 0609 : 1998
b) [ ]表記法を用いて構造列定義の中で定義する。
c) 構造列定義に伴う文中で定義する。
項の後に( )で囲まれた節があるとき,その項は,その節が真である対象だけを示す。
これらの演算子を,評価する順序が遅いもの順に並べると,次のとおりとなる。
|繰返し演算子[ ]( )
例として,図1.1に示すスキーマは,セットという項が0個以上のグループを意味することを規定する。
ここでグループは,二つ以上のグループ前端,グループ要素及び一つ以上のグループ後端の列とする。グ
ループ要素は,種別1の一つ若しくは二つの記述子,長さが偶数である種別2の一つの記述子,又は種別
3の一つ以上の記述子のいずれかとする。
[セット]{
[グループ]{
<グループ前端>2+
[グループ要素]{
<種別1の記述子>1+2
|<種別2の記述子>(記述子長が偶数)
|<種別3の記述子>1+
}
<グループ後端>1+
}0+
}
図1.1 構造列スキーマの例
1.5.7 ほかの表記法 この規格に使うほかの表記法は,表1.3に規定する。
表1.3 ほかの表記法
表記法 解釈
BP 記述子内のバイト位置。0から始まる。
RBP 記述子内の相対バイト位置。0から始まる。
ZERO 値が0である一つのビット。
ONE 値が1である一つのビット。
1.6 基本データ種別 この規格は,次の基本種別を使用する。
1.6.1 数値 2進表記法で表したnビットの数値の記録フォーマットは,種別名Intn又はUintnで示す。
ここで,
a) は,2進数のビットの個数を表す。
b) intは,2進数で表す,0≦x<2nの範囲の符号なし整数を示す。
c) ntは,2の補数で表す,−2n−1数値は,この規格が規定する構造の欄を次のフォーマットの一つによって記録する。適用するフォーマ
ットは,構造の記述の中で規定する。
参考 符号付き数値は,−2n−1を含まない。
1.6.1.1 8ビット符号なし数値 Uint8の数値は,8ビット符号なし数として1バイト欄に記録する。
1.6.1.2 8ビット符号付き数値 Int8の数値は,2の補数として1バイト欄に記録する。
――――― [JIS X 0609 pdf 7] ―――――
7
X 0609 : 1998
1.6.1.3 16ビット符号なし数値 16進表現で#wxyzと表すUint16の数値は,2バイト欄に#yz #wxと記録
する。
参考 例えば,10進数4660は16進表現で#1234となり,#34 #12と記録する。
1.6.1.4 16ビット符号付き数値 16進表現#wxyzによって,2の補数で表すInt16の数値は,2バイト欄に
#yz #wxと記録する。
参考 例えば,10進数−30845は16進表現で#8765となり,#65 #87と記録する。
1.6.1.5 32ビット符号なし数値 16進表現で#stuvwxyzと表すUint32の数値は,4バイト欄に#yz #wx #uv
#wxと記録する。
参考 例えば,10進数305419896は16進表現で#12345678となり,#78 #56 #34 #12と記録する。
1.6.1.6 32ビット符号付き数値 16進表現で#stuvwxyzによって,2の補数で表すInt32の数値は,4バイ
ト欄に#yz #wx #uv #stと記録する。
参考 例えば,10進数−559038737は16進表現で#DEADBEEFとなり,#EF #BE #AD #DEと記録す
る。
1.6.1.7 64ビット符号なし数値 16進表現で#klmnopqrstuvwxyzと表すUint64の数値は,8バイト欄に#yz
#wx #uv #st #qr #op #mn #klと記録する。
参考 例えば,10進数12345678987654321012は16進表現で#AB54A9A10A23D374となり,#74 #D3 #23
#0A #A1 #A9 #54 #ABと記録する。
1.6.2 文字集合及び文字符号化 この規格で規定する記述子中の文字は,この1.6.2に規定する事項を除
き,ISO/IEC 646 IRVに従って符号化しなければならない。
文字列を規定する欄で使用可能な文字集合をd文字と呼ぶ。文字列を規定する欄は,d文字又はdstring
(1.6.2.4参照)のいずれかを含むものとして指定する。これらの欄に使えるd文字の指定及び記録方法は,
1.6.2.1が定義するcharspecによって規定する。
1.6.2.1 文字集合の指定 記述子のある欄に使用可能な文字集合は,表1.4に示すフォーマットをもつ
charspecによって規定する。
表1.4 charspecフォーマット
RBP 長さ 名前 内容
0 1 文字集合の種別 Uint8 (1.6.1.1) =0
1 63 文字集合情報 バイト= “OSTA Compressed Unicode”
1.6.2.1.1 文字集合の種別 (RBP0) この欄は,表1.5に示す文字集合を識別することによって,使用可
能な文字を指定する。この欄には,CS0符号化文字集合を示す種別0を設定する。
表1.5 使用可能な文字集合
種別 使用可能な文字
0 CS0符号化文字集合 (1.6.2.2)
1.6.2.1.2 文字集合情報 (RBP1) この欄には,ASCII列の “OSTA Compressed Unicode” を設定する。
1.6.2.2 CS0符号化文字集合 CS0符号化文字集合及びそのd文字は,媒体の作成者と受領者との間の同
意に従わなければならない。
文字集合の識別を,文字集合情報欄に指定してもよい。その識別情報は,欄の先頭から連続して記録し,
使用しないバイトには#00を設定する。
1.6.2.3 文字集合のリスト 文字集合種別(1.6.2.1.1参照)のリストは,文字集合種別がそのリストに属
する場合は,対応するビットをONEとし,それ以外はZEROにするUint32(1.6.1.5参照)で記録する。
――――― [JIS X 0609 pdf 8] ―――――
8
X 0609 : 1998
文字集合の種別CS0のビットは,Uint32(1.6.1.5参照)のビット0に記録する。ビット231はZERO
に設定する。
1.6.2.4 固定長文字欄 長さnのdstringは,d文字(1.6.2参照)を記録するnバイトの欄とする。
文字の記録に使用するバイトの数は,バイトn−1にUint8(1.6.1.1参照)で記録する。ここでnは,こ
の欄の長さとする。文字は欄の先頭バイトから記録し,記録した文字以後からバイトn−2までのバイト位
置に,すべて#00を設定する。
特記しない限り,dstringはすべてのバイトが#00であってはならない。
1.6.3 日時表示 timestampは,表1.6に示すフォーマットで記録日時を指定する。すべての欄が0の場
合,日時は指定しないことを意味する。
表1.6 timestampフォーマット
RBP 長さ 名前 内容
0 2 種別及び時間帯 Uint16 (1.6.1.3) 種別=1
2 2 年 Int16 (1.6.1.4)
4 1 月 Uint8 (1.6.1.1)
5 1 日 Uint8 (1.6.1.1)
6 1 時間 Uint8 (1.6.1.1)
7 1 分 Uint8 (1.6.1.1)
8 1 秒 Uint8 (1.6.1.1)
9 1 1/100秒 Uint8 (1.6.1.1)
10 1 100マイクロ秒 Uint8 (1.6.1.1)
11 1 マイクロ秒 Uint8 (1.6.1.1)
1.6.3.1 種別及び時間帯 (RBP0) この欄の最上位4ビットは,4ビット数として解釈し,表1.7に示す
timestampの解釈を規定する。この4ビット数には,現地時を示す1を設定する。
表1.7 timestampの解釈
種別 解釈
1 timestamは,現地時を指定する。
下位12ビットは,2の補数で表す符号付き12ビット数として解釈し,次のとおりに解釈する。
a) 値が−14401440の範囲では,その値は協定世界時からの日時の差を分で指定する。
b) 値が−2047の場合には,時間帯を指定していない。
時間帯の概念が利用可能なオペレーティングシステムは,協定世界時からの時間帯の差(1分ごと)を
この欄に指定する。それ以外は,この欄の時間帯の部分には,値 (−2047) を設定する。
1.6.3.2 年 (RBP2) この欄は,19999の数値で年を指定する。
1.6.3.3 月 (RBP4) この欄は,112の数値でその年の月を指定する。
1.6.3.4 日 (RBP5) この欄は,131の数値でその月の日を指定する。
1.6.3.5 時間 (RBP6) この欄は,023の数値でその日の時間を指定する。
1.6.3.6 分 (RBP7) この欄は,059の数値でその時間の分を指定する。
1.6.3.7 秒 (RBP8) 種別欄の値が2の場合,この欄は060の数値でその分の秒を指定する。それ以外
は,この欄は059の数値でその分の秒を指定する。
1.6.3.8 1/100秒 (RBP9) この欄は,099の数値で1/100秒を指定する。
1/100秒の概念をサポートしないオペレーティングシステムでは,処理システムはこの欄に0を設定す
る。
1.6.3.9 100マイクロ秒 (RBP10) この欄は,099の数値で100マイクロ秒を指定する。
――――― [JIS X 0609 pdf 9] ―――――
9
X 0609 : 1998
100マイクロ秒の概念をサポートしないオペレーティングシステムでは,処理システムはこの欄に0を
設定する。
1.6.3.10 マイクロ秒 (RBP11) この欄は,099の数値でマイクロ秒を指定する。
マイクロ秒の概念をサポートしないオペレーティングシステムでは,処理システムはこの欄に0を設定
する。
1.6.4 実体識別子 regidは,実体識別子を規定し,表1.8に示すフォーマットで記録する。regid中の識
別情報は,ある情報に関係し,この情報をregidの適用範囲と呼ぶ。regidの適用範囲は,regidを記録した
欄と,その記法がregidの適用範囲部分であると指定するすべての情報とから成る。
表1.8 regidフォーマット
RBP 長さ 名前 内容
0 1 フラグ Uint8 (1.6.1.1) =ZERO
1 23 識別子 バイト
24 8 識別子添字 バイト
実体識別子を,次に示す三つの種別に分類する。
a) 範囲識別子
b) DF識別子
c) 処理システム識別子
1.6.4.1 フラグ (RBP0) この欄のビットには,すべてZEROを設定する。その意味は,表1.9に示すregid
の特性とする。
表1.9 regidの特性
ビット 解釈
0 不正 : 処理システムがこのregidで規定する識別情報が有効でないregidの適
用範囲内に媒体上の情報を修正していない。
1 保護 : このreidの内容を修正してもよい(3.8.1及び4.12.2.3参照)。
1.6.4.2 識別子 (RBP1) この欄には,処理システムを一意に識別する識別子を設定する。この方法は,
異なる処理システム間で交換する媒体中に記録した構造が,どの処理システムによるものかの識別を可能
にする。
処理システムが,ほかの処理システムで書き込んだ媒体中に存在する構造を更新する場合,現状の処理
システムは,現状の処理システムを一意に識別する値を識別子欄に設定する。
表1.10は,定義する実体識別子欄を要約したものであり,設定しなければならない値を示す。ここで,
N/Aは規定しないことを示す。
――――― [JIS X 0609 pdf 10] ―――――
次のページ PDF 11
JIS X 0609:1998の国際規格 ICS 分類一覧
JIS X 0609:1998の関連規格と引用規格一覧
- 規格番号
- 規格名称