サイトトップへこのカテゴリの一覧へ

X 3004 - 1987  

(1) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

目次 

ページ 

1. 適用範囲 ························································································································ 1 

2. 関連規格 ························································································································ 2 

3. 概要 ······························································································································ 2 

3.1 構成 ···························································································································· 2 

3.2 表記法 ························································································································· 2 

3.3 規約 ···························································································································· 3 

3.4 規格合致性 ··················································································································· 3 

4. 概念 ······························································································································ 4 

4.1 データ型 ······················································································································ 4 

4.1.1 文字列 ······················································································································· 4 

4.1.2 数 ····························································································································· 4 

4.2 構成要素 ······················································································································ 4 

4.3 レコード ······················································································································ 5 

4.3.1 データベースキー ········································································································ 5 

4.3.2 システムレコード ········································································································ 5 

4.4 親子集合型 ··················································································································· 5 

4.4.1 特異親子集合 ·············································································································· 6 

4.4.2 再帰親子集合 ·············································································································· 6 

4.5 スキーマ ······················································································································ 6 

4.6 サブスキーマ ················································································································ 6 

4.7 データベース ················································································································ 6 

4.8 モジュール ··················································································································· 6 

4.9 手続 ···························································································································· 6 

4.10 標準プログラム言語 ······································································································ 7 

4.11 一時親子集合 ··············································································································· 7 

4.12 パラメタ ····················································································································· 7 

4.12.1 STATUSパラメタ ······································································································· 7 

4.12.2 TESTパラメタ ··········································································································· 7 

4.12.3 RECORDパラメタ ······································································································ 7 

4.13 セション ····················································································································· 7 

4.14 トランザクション ········································································································· 8 

4.15 整合性制約 ·················································································································· 8 

4.15.1 検査条件 ··················································································································· 8 

4.15.2 既定値 ······················································································································ 8 

4.15.3 一意性制約 ················································································································ 8 

X 3004 - 1987 目次 

(2) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

ページ 

4.15.4 親子集合順序基準 ······································································································· 8 

4.15.5 親子関係 ··················································································································· 9 

5. 共通要素 ························································································································ 9 

5.1 <条件> ······················································································································ 9 

5.2 <オペランド> ············································································································ 11 

5.3 <識別子> ·················································································································· 11 

5.4 <定数> ····················································································································· 12 

5.5 <データ型> ··············································································································· 13 

5.6 <反復句> ·················································································································· 14 

5.7 <添字> ····················································································································· 15 

5.8 <分離符号>及び<語>································································································· 15 

6. スキーマ定義言語 ··········································································································· 16 

6.1 <スキーマ> ··············································································································· 16 

6.2 <スキーマ名句> ········································································································· 16 

6.3 <レコード型> ············································································································ 17 

6.4 <レコード名句> ········································································································· 17 

6.5 <レコード一意性句>···································································································· 17 

6.6 <構成要素型> ············································································································ 18 

6.7 <構成要素名句> ········································································································· 18 

6.8 <既定句> ·················································································································· 18 

6.9 <レコード検査句> ······································································································ 19 

6.10 <親子集合型> ··········································································································· 19 

6.11 <親子集合名句> ········································································································ 20 

6.12 <親レコード句> ········································································································ 20 

6.13 <順序句> ················································································································· 20 

6.14 <子レコード句> ········································································································ 22 

6.15 <子レコード名句> ····································································································· 22 

6.16 <組入れ句> ·············································································································· 23 

6.17 <保存句> ················································································································· 24 

6.18 <子レコード一意性句> ······························································································· 24 

6.19 <キー句> ················································································································· 25 

6.20 <子レコード検査句> ·································································································· 27 

6.21 <構成要素識別子> ····································································································· 28 

7. サブスキーマ定義言語 ····································································································· 29 

7.1 <サブスキーマ> ········································································································· 29 

7.2 <サブスキーマ名句>···································································································· 29 

7.3 <レコードビュー> ······································································································ 29 

7.4 <構成要素ビュー> ······································································································ 30 

7.5 <親子集合ビュー> ······································································································ 31 

X 3004 - 1987 目次 

(3) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

ページ 

8. モジュール言語 ·············································································································· 31 

8.1 <モジュール> ············································································································ 32 

8.2 <モジュール名句> ······································································································ 32 

8.3 <一時親子集合指定群>································································································· 33 

8.4 <手続> ····················································································································· 33 

9. データ操作言語 ·············································································································· 37 

9.1 <COMMIT文> ··········································································································· 37 

9.2 <CONNECT文>·········································································································· 37 

9.3 <DISCONNECT文> ····································································································· 38 

9.4 <ERASE文> ·············································································································· 38 

9.5 <FIND文> ················································································································· 39 

9.6 <GET文> ·················································································································· 43 

9.7 <MODIFY文> ············································································································ 44 

9.8 <NULLIFY文> ··········································································································· 45 

9.9 <READY文> ············································································································· 46 

9.10 <RECONNECT文> ···································································································· 46 

9.11 <ROLLBACK文> ······································································································ 47 

9.12 <STORE文> ············································································································· 47 

9.13 <データベースキー等価テスト文> ················································································ 49 

9.14 <データベースキーナルテスト文> ················································································ 50 

9.15 <親子集合空テスト文> ······························································································· 50 

9.16 <親子関係テスト文> ·································································································· 50 

9.17 <データベースキー識別子> ························································································· 51 

9.18 <構成要素ビュー識別子> ···························································································· 52 

9.19 <パラメタ識別子> ····································································································· 53 

9.20 <パラメタ転送>と<データベース転送> ······································································· 53 

10. 補助操作 ····················································································································· 54 

10.1 <組入れ操作> ··········································································································· 54 

10.2 <切離し操作> ··········································································································· 56 

11. 解釈上の状態················································································································ 57 

11.1 <セション状態> ········································································································ 57 

11.2 <位置指示子群> ········································································································ 57 

11.3 <一時親子集合群> ····································································································· 59 

11.4 <準備リスト> ··········································································································· 59 

12. 状態コード ·················································································································· 59 

13. 水準 ··························································································································· 60 

参考 ·································································································································· 61 

索引1.用語索引(用語-英語) ································································································ 71 

索引2.用語索引(英語-用語) ································································································ 81 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

日本工業規格          JIS 

X 3004 - 1987 

データベース言語NDL 

Database Language NDL 

1. 適用範囲 適用範囲は,次のとおりとする。 

(1) この規格は,次の三つのデータベース言語の構文と意味を規定する。 

(a) スキーマ定義言語:NDLデータベース(以下,データベースという。)の構造と整合性制約 (integrity 

constraint) を宣言する。 

(b) サブスキーマ定義言語:データベースについての利用者ビューを宣言する。 

(c) モジュール言語とデータベース操作言語:特定のデータベース適用業務プログラム (application 

program) のデータベース手続と実行可能文を宣言する。 

(2) この規格は,データベースに対する論理データ構造と基本操作を定義する。この規格は,データベー

スの設計・アクセス・保守・制御・保護のための機能を規定する。 

(3) この規格は,規格に合致する処理系 (implementation) 間でのデータベース定義と適用業務プログラム

の可搬性の手段を規定する。 

(4) この規格は,二つの水準を規定する。水準2は,完全NDLデータベース言語とする。水準1は,“13.

水準”で定義される部分集合とする。 

(5) この規格は,実データベース環境で提供されうる機能のうち,次に掲げるものは規定しない。 

(a) 特定の利用者にアクセスと操作の権限を付与するためのアクセス制御機能。 

(b) データベース上でより複雑な整合性制約を指定するための付加的整合性制御機能。 

(c) スキーマ定義を搬入したり搬出したりするための機能。 

(d) 情報交換のために,レコードと親子集合の実現値の集まりを標準ファイルに複写するためのデータ

ベースアンロード機能。 

(e) アクセスする適用業務プログラムからスキーマとサブスキーマを使用可能にするためのスキーマデ

ータベース。 

(f) スキーマ又はサブスキーマの一部を作成,修正又は削除するためのスキーマ操作言語。 

(g) データ辞書 (data dictionary) へのインタフェース。 

(h) 標準データベースモジュールと標準言語プログラムを別々に生成するための適用業務プログラム事

前処理機能。 

(i) 物理記憶構造と物理アクセス方法を定義するためのデータ記憶定義言語。 

(j) 利用者が指定する主張 (assertion) と引き金 (trigger) のためのデータベース手続。 

(k) データベースに対する非定型アクセスのための自然言語問合せ機能。 

(l) 帳票及び図表を作成するための報告書作成機能。 

(m) 標準グラフィックスシステムとの直接的データベースインタフェースのためのグラフィックス機能。 

(n) 通信ネットワーク中の異なった地点 (node) にあるデータを定義しアクセスするための分散データ

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

ベース機能。 

参考 このような付加的な機能に対する規格は,この規格と上位互換がある方法で規定できる。付加

的な機能の幾つかは,この規格の次版以降で規定され,他のものは,別の規格で規定されるこ

ともあり,またあるものは,常に処理系作成者の定義によることもある。 

(6) この規格は,データベース設計・データ管理・性能最適化のための様々な道具はもちろん,適用業務

プログラム言語・エンドユーザ問合せ言語・報告書作成システム・データ辞書システム・プログラム

ライブラリシステム・分散通信システムを含む環境中に存在する処理系に適用される。 

2. 関連規格 関連規格は,次による。 

2.1 

引用規格 

(1) JIS X 3001-1982 電子計算機プログラム言語FORTRAN 

(2) JIS X 3002-1980 電子計算機プログラム言語COBOL 

2.2 

引用国際規格 

(1) ISO 6160 Programming Languages PL/I 

(2) ISO 7185 Programming Languages PASCAL 

2.3 

対応国際規格 

(1) ISO 8907 Database Language NDL 

3. 概要 

3.1 

構成 この規格は,次のとおり構成する。 

(1) “3.2表記法”と“3.3規約”は,この規格で用いる表記法と規約を定義する。 

(2) “3.4規格合致性”は,規格合致性の基準を定義する。 

(3) “4.概念”は,NDLの定義中で用いる用語を定義し,概念を述べる。 

(4) “5.共通要素”は,NDL言語のいろいろな部分に現れる言語要素を定義する。 

(5) “6.スキーマ定義言語”は,データベースを規定するためのNDLの機能を定義する。 

(6) “7.サブスキーマ定義言語”は,適用業務プログラムによって参照され得るデータベースの部分を規

定するためのNDLの機能を定義する。 

(7) “8.モジュール言語”は,NDLのモジュールと手続を定義する。 

(8) “9.データ操作言語”は,NDLのデータ操作文 (data manipulation statement) を定義する。 

(9) “10.補助操作”は,NDLのデータ操作文の定義中で用いられる特定の操作を定義する。 

(10) “11.解釈上の状態”は,NDLのデータ操作文の定義中で用いられる“セション状態”を定義する。 

(11) “12.状態コード”は,NDLのデータ操作文の実行後のSTATUSパラメタの値を定義する。 

(12) “13.水準”は,NDLの二つの水準を定義する。 

3.2 

表記法 この規格で用いる構文表記法は,次の拡張を行ったBNF(“バッカス正規形”又は“バッカ

ス−ナウア形”)とする。 

(1) 角括弧([ ])は,選択可能な要素を示す。 

(2) 反復符号(...)は,1回以上繰り返してもよい要素を示す。 

(3) 波括弧({ })は,要素の並びをまとめる。 

BNF構文では,生成記号<A>の展開のどこかに生成記号<B>が現れるならば,<A>が<B>を“含

む”と定義する。<A>が<B>を含むならば,<B>は<A>に“含まれる”とする。<A>が<B>を含

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

むならば,<A>は<B>を“含んでいる”生成記号<A>とする。 

生成記号<A>が生成記号<B>を含み,かつ<B>が<A>の最初の展開に現れるならば,<A>は<B

>を“直接含む”とする。 

この規格の語い単位(例えば,<分離符号>,<キーワード>,<識別子>,<定義>など)は,この

規格の中で別に定義する。次の文字は,それぞれの生成規則の中で特別の意味をもつ。 

ʼ<拡張識別子>中 

”<文字列定数>中 

(<注釈>,<条件>,<添字>中 

)<注釈>,<条件>,<添字>中 

*<注釈>中 

+<数値定数>中 

−<数値定数>中 

<<関係>中 

><関係>中 

=<構成要素識別子致>,<関係>,<データベースキ等価テスト文>中 

E<概数値定数>中 

−<識別子>中 

・<構成要素識別子>,<構成要素ビュー識別子>,<数値定数>,<サブスキーマ名句>, 

<サブスキーマ指定>中 

3.3 

規約 この規格の構文要素は,次の項目で規定する。 

(1) 機能:要素の目的についての短い文 

(2) 形式:要素の構文のBNF定義 

(3) 構文規則:要素が満たされなければならない付加的な構文制約であって,BNFでは表せないもの 

(4) 一般規則:要素の実行時の効果を順番に指定する。 

構文規則中で,“(し)なければならない”という用語は,構文上規格に合致するNDL言語に要求

される条件を定義する。形式や構文規則に合致しないNDL言語の取扱いは,処理系作成者の定義に

よる。 

規格に合致する処理系は,一般規則で定義される動作を一般規則の順番で実行することは要求され

ないが,データベースに対してこの順番と同じ効果を達成しなければならない。 

“永続対象”という用語は,処理系作成者の定義による仕組みで生成され,破壊される<モジュー

ル>や<スキーマ>のような対象を特徴付けるために用いる。 

3.4 

規格合致性 この規格は,規格に合致するNDL言語と規格に合致するNDLの処理系を規定する。

規格に合致するNDL言語は,BNF形式や対応する構文規則に従わなければならない。規格に合致するNDL

の処理系は,規格に合致するNDL言語を一般規則に従って処理しなければならない。 

規格に合致する処理系は,この規格で規定されていない付加的な機能を提供してもよい。たとえ規格に

合致しないNDL言語を処理したり,規格に合致するNDL言語を規格に合致しない方法で処理したりする

利用者オプションを提供するときでさえも,処理系は,規格合致性を維持している。 

この規格は,適用業務プログラムとデータベース管理システム構成要素との結合の方法や時機を定義し

ない。 

この規格の水準1に合致する処理系は,“13.水準”で規定される特定の機能を除いて,水準2の規格合

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

致性の要求項目を満たさなければならない。 

この規格は,三つの言語を規定し,それらの構文と意味を定義する。データベース管理システムの処理

系作成者は,この規格に対する製品の規格合致性を二つの方法で主張できる。処理系は,これらの言語と

同一の構文を支援し,構文的及び機能的な規格合致性を主張してもよく,又は,同じ概念,意味,機能性

を表すために異なる構文を用い,機能的な規格合致性を主張してもよい。 

三つの標準言語のいずれかに対して機能的な規格合致性を主張する処理系は,これらの標準言語の意味

と機能に合った等価な書き方を指定しなければならない。例えば,データベース管理システム表示機能に

よって表示されるスキーマは,標準スキーマ定義言語構文の表現に記号変換できることによって,スキー

マの機能的な等価性を示せることが望ましい。 

4. 概念 

4.1 

データ型 <データ型 (data type)>は,表現可能な値の集合とする。値の論理的表現は,<定数 

(literal)>とする。値の物理的表現は,処理系作成者の定義による。 

値は,基本要素とし,この規格において,論理的に分割されることがない。値は,データ項目 (data item) 

と配列 (array) の定義の基礎とする。 

値は,文字列又は数のいずれかとする。文字列と数は,相互に比較可能な値ではない。 

4.1.1 

文字列 文字列は,処理系作成者の定義による文字集合の文字の並び (sequence) からなる。文字

列は長さをもち,その長さは並びの中の文字数を指定する正の整数とする。 

4.1.2 

数 数は,真数値 (exact numeric value) 又は概数値 (approximate numeric value) のいずれかとする。

すべての数は,比較可能な値とする。 

真数値は,精度 (precision) と位取り (scale) をもつ。精度は,有効十進けた数を決める正の整数とする。

位取りは,符号付き整数とする。位取りが0とは,その数を整数とすることを示す。位取りNに対し,真

数値は,有効数字の整数値に10の−N乗をかけた値とする。 

概数値は,仮数 (mantissa) と指数 (exponent) からなる。仮数は符号付き数値とし,指数は仮数の大きさ

を指定する符号付き整数とする。概数値は,精度をもつ。精度は,仮数中の有効十進けた数を指定する正

の整数とする。 

真数値が真数値を表すデータ項目又はパラメタに代入されるときはいつでも,その値は相手のデータ型

で正確に表現可能でなければならない。値は,相手の精度と位取りをもつように変換される。 

真数値又は概数値が概数値を表すデータ項目又はパラメタに代入されるときはいつでも,その値の近似

は,相手のデータ型で表現される。値は,相手の精度をもつように変換される。 

4.2 

構成要素 構成要素 (component) は,データ項目又はデータ項目の配列のいずれかとする。<構成

要素型>は,すべての同じ<データ型>をもつ構成要素の実現値 (occurrence) の集まりを定義する。 

データ項目は,一つの値からなる。配列は,データ項目の並びからなる。 

配列は<範囲 (extent)>によって指定され,その<範囲>は<符号なし整数>のリストとする。配列に

現れるデータ項目の個数は,<符号なし整数>の積に等しい。配列に含まれないデータ項目は,<構成要

素名>と<データベースキー>によって参照される。配列に含まれるデータ項目は,<構成要素名>,<

データベースキー>及び<添字>によって参照される。 

同じ<構成要素型>のすべての値は,同じ<データ型>をもつ。<構成要素型>が配列を定義するなら

ば,各構成要素の実現値は,同じ次元と範囲の整数をもつ配列とする。同じ文字列の構成要素のすべての

文字列は,同じ<長さ>をもつ。同じ真数の構成要素のすべての数は,同じ<精度>と<位取り>をもつ。

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

同じ概数の構成要素のすべての数は,同じ<精度>をもつ。 

いずれの<構成要素型>も<レコード型>の一部分として定義される。<構成要素型>は,<データ型

>を指定する。<構成要素型>が配列を定義するならば,それは,<範囲>を指定する。文字列<構成要

素型>は,その文字列の<長さ>を指定する。真数<構成要素型>は,その数の<精度>と<位取り>を

指定する。概数<構成要素型>は,その数の<精度>を指定する。 

4.3 

レコード レコード (record) は,この規格中で操作の基本単位とする。レコードは,格納,消去,

位置決め,変更され,親子集合内で接続,切断,再接続される。 

レコードは,構成要素の集まりとする。<レコード型>は,すべて同じ<構成要素型>をもつレコード

実現値の集まりを定義する。<レコード型>は,<構成要素型>を定義し,レコード実現値が満たさなけ

ればならない整合性制約 (integrity constraint) を指定する。 

各レコードは唯一の<レコード型>の実現値とし,その<レコード型>によって定義される構成要素だ

けからなる。 

各<レコード型>のレコードは,処理系作成者の定義による順序に従って保持される。 

4.3.1 

データベースキー すべてのレコードは,区別することができる。各レコードは,<データベース

キー>により一意に識別される。<データベースキー>は,ナル (null) であってどのレコードも識別しな

いか,又はナルでなくてデータベース中の唯一のレコードを識別するかのいずれかとする。<データベー

スキー>は,どのような論理的表現ももたず,この規格により定義されるどのインタフェースによっても

利用可能でない。<データベースキー>の物理的表現は,処理系作成者の定義による。 

<データベースキー>は,セション状態 (session state) 中の位置指示子 (cursor) を表現するため及びデ

ータ操作言語中の文の意味を定義するために用いられる。セション状態中では,<データベースキー>は,

<データベースキー>によって参照される。データ操作言語文中では,<データベースキー>は,<デー

タベースキー識別子>によって参照される。 

4.3.2 

システムレコード この規格は,特殊なSYSTEM<レコード型>の存在を想定する。SYSTEM<

レコード型>は,どのような<構成要素型>や整合性制約をももたず,システムレコードと呼ばれる唯一

の仮想的なレコード実現値をもつ。 

この規格は,システムレコードに対する<データベースキー>を規定しない。システムレコードと

SYSTEM<レコード型>は,特異親子集合 (singular set) の定義のためにだけ存在する。 

4.4 

親子集合型 <親子集合型(set type)>は,二つ以上の<レコード型>の間で定義された関連とする。 

<親子集合型>中では,一つの<レコード型>は,親 (owner) <レコード型>として示され,他の各<

レコード型>は,その<親子集合型>の子 (member) <レコード型>として参照される。 

各<親子集合型>に対して,データベース中に0個以上の親子集合がある。 

親子集合は,その<レコード型>が親<レコード型>である一つの親レコードと,各レコード型が子<

レコード型>である0個以上の子レコードからなる。 

親子集合は,データベース中で,その<親子集合名>とその親レコード実現値によって一意に識別され

る。<親子集合型>の親<レコード型>の実現値がデータベースに格納されるとき,その<親子集合型>

の新しい親子集合が生成される。 

<レコード型>の実現値がデータベースに格納されるとき,それは,その<レコード型>が子<レコー

ド型>である各<親子集合型>の高々一つの親子集合に属する。 

<親子集合型>の各親子集合の子レコードは,その<親子集合型>の順序基準によって決定される並び

順で保持される。 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

4.4.1 

特異親子集合 特異 (singular) <親子集合型>は,親<レコード型>としてSYSTEMをもつ<親

子集合型>とする。特異親子集合は,特異<親子集合型>の唯一の実現値とする。 

4.4.2 

再帰親子集合 再帰 (recursive) <親子集合型>は,同じ<レコード型>を親<レコード型>と子

<レコード型>の双方にもつ<親子集合型>とする。再帰親子集合は,再帰<親子集合型>の実現値とす

る。 

4.5 

スキーマ <スキーマ>は,スキーマ定義言語により指定される永続対象とする。<スキーマ>は,

データベースの論理的な記述とする。<スキーマ>は,<スキーマ名>,<レコード型>記述の集まり及

び<親子集合型>記述の集まりからなる。 

4.6 

サブスキーマ <サブスキーマ>は,サブスキーマ定義言語によって指定される永続対象とする。

<サブスキーマ>は,アクセス<モジュール>が使用可能なデータベースの部分の論理的な記述とする。

<サブスキーマ>は,<サブスキーマ名>,<レコードビュー>の集まり及び<親子集合ビュー>の集ま

りからなる。 

<レコードビュー>は,与えられた<レコード型>の使用可能な<構成要素型>を指定する。<親子集

合ビュー>は,使用可能な<親子集合型>を指定する。<レコードビュー>と<親子集合ビュー>は,組

み合わされて各<親子集合型>の使用可能な子<レコード型>を決める。 

<レコードビュー>と<親子集合ビュー>は,<構成要素型>,<レコード型>及び<親子集合型>に

対して,それぞれ<構成要素ビュー名>,<レコードビュー名>及び<親子集合ビュー名>の別名を定義

できる。別名は,アクセス<モジュール>にとって,<構成要素型>,<レコード型>及び<親子集合型

>に対してだけ使用可能な名前となる。 

アクセス<モジュール>が使用可能なレコードは,処理系作成者の定義による順序 (order) に保持され

る。この順序は,各<レコード型>のレコードの処理系作成者の定義による順序と必ずしも同じでない。 

4.7 

データベース データベースは,<スキーマ>によって定義されるすべてのデータの集まりとする。

それは,各<レコード型>と各<親子集合型>の実現値からなる。各<スキーマ>定義に対して唯一のデ

ータベースがある。 

4.8 

モジュール <モジュール>は,モジュール言語中で指定される永続対象とする。<モジュール>

は,選択可能な<モジュール名>,<言語句>,<サブスキーマ指定>,選択可能な<一時親子集合指定

群>及び一つ以上の<手続>からなる。 

適用業務プログラムは,複数のサブプログラムからなり得る実行可能コードの部分とする。一つの<モ

ジュール>は,実行時中は一つの適用業務プログラムと結合する。一つの適用業務プログラムは,複数の

<モジュール>と結合されてはならない。この結合を指定する方法は,処理系作成者の定義による文の実

行の要求を含めて,処理系作成者の定義による。 

4.9 

手続 <手続 (procedure)>は,<手続名>,<パラメタ宣言>の並び及び<NDL文>の並びからな

る。 

<モジュール>と結合する適用業務プログラムは,その<モジュール>の<手続>を“呼出し (call)”

文によって参照でき,その“呼出し”文は,<手続>の<手続名>を指定し,その手続の<パラメタ宣言

>における個数と<データ型>が一致するパラメタ値の並びを与える。<手続>の呼出しによって,それ

が含む<NDL文>の並びが実行される。 

<モジュール>の<サブスキーマ指定>は,<モジュール>によって参照できるレコードや親子集合を

定義する<サブスキーマ>を指定する。 

<モジュール>の<一時親子集合指定群(temporary set specifications)>は,<モジュール>によって参照

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

できる一時的な<親子集合型>を定義する。 

4.10 標準プログラム言語 この規格は,特定の標準プログラム言語規格に合致するプログラムから<モ

ジュール>中の<手続>が呼び出されたときのその<手続>の動作を規定する。“標準COBOLプログラ

ム”,“標準FORTRANプログラム”,“標準Pascalプログラム”及び“標準PL/Iプログラム”という用語は,

“2.関連規格”で挙げる規格の規格合致性の基準に合うプログラムをいう。 

4.11 一時親子集合 <一時親子集合 (temporary set)>は,一時<親子集合型>の実現値とする。一時<親

子集合型>は,<モジュール>中の<一時親子集合指定>によって宣言される。 

<モジュール>中の各<一時親子集合指定>に対し,対応する一時<親子集合型>の実現値は,<モジ

ュール>が開始したときに生成され終了したときに抹消される。 

4.12 パラメタ パラメタは,<パラメタ宣言>によって<手続>中で宣言される。<パラメタ宣言>は,

パラメタが基本データ項目かデータ項目の配列かを指定し,またその値の<データ型>を指定する。パラ

メタは,その手続の呼出し中の対応する引数の値をとるか又は与えるかする。 

4.12.1 STATUSパラメタ STATUSパラメタは,<長さ>5文字の特殊なパラメタとする。このようなパ

ラメタが<手続>で宣言されるならば,その値には状態コード (status code) が設定され,そのコードは,

<手続>の呼出しが正しく完了したことを示すか,又は<手続>実行中に生じた例外の条件を識別する。 

4.12.2 TESTパラメタ TESTパラメタは,<長さ>1文字の特殊なパラメタとする。テスト文がこのパ

ラメタを含む<手続>中で実行されるならば,パラメタの値には,そのテストが真ならば“1”が,偽なら

ば“0”が設定される。 

4.12.3 RECORDパラメタ RECORDパラメタは,<長さ>18文字の特殊なパラメタとする。このよう

なパラメタが<手続>で宣言されるならば,それには,<セション状態>の<セション位置指示子>によ

って識別されるレコードの<レコード名>が設定される。 

4.13 セション データベース操作は,<NDL文>の実行とする。 

セションは,<モジュール>に結合する適用業務プログラムの実行中になされるデータベース操作の並

びとする。 

<セション状態>は,セションに結合する短期対象とする。<セション状態>は,そのセション中の最

初のデータベース操作に先立って生成され,そのセション中の最終のデータベース操作のあと抹消される。 

<セション状態>は,<位置指示子>,<一時親子集合群>及び<準備リスト>からなる。<位置指示

子>は,現セションレコードを識別するための<セション位置指示子>,各<サブスキーマ><レコード

型>の現レコードを識別するための<レコード位置指示子>及び各<サブスキーマ><親子集合型>の現

親子集合中の親レコードと現親子レコードを識別するための<親子集合位置指示子>を含む。<一時親子

集合群>は,結合する<モジュール>により定義される各<一時親子集合>の内容を保持する。<準備リ

スト>は,<READY文>で活性化された各<レコード型>に対し<準備指定>を保持する。 

<セション状態>は,<NDL文>によってだけ適用業務プログラムで使用可能となる。<セション状態

>の内容は,結合する<モジュール>の<手続>中の<NDL文>の実行に基づいてデータベース管理シス

テムによって変更される。データ操作言語は,<データベースキー>の位置決めと比較及び<準備リスト

>と各<一時親子集合>の内容の変更を行うための<NDL文>を含む。 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

4.14 トランザクション トランザクションは,データベース操作を含む操作の並びとし,それは,回復 

(recovery) や同時実行 (concurrency) に関して基本単位となる。トランザクションは,<COMMIT文>又

は<ROLLBACK文>によって終了する。トランザクションが<COMMIT文>により終了するならば,デ

ータベースに対し,そのトランザクションによってなされたすべての変更は,すべての同時実行トランザ

クションに対しアクセス可能となる。このことをコミットするという。トランザクションが<ROLLBACK

文>によって終了するならば,データベースに対し,そのトランザクションによってなされたすべての変

更は,取り消される。このことをロールバックするという。コミットされた変更を取り消すことはできな

い。トランザクションによってなされたデータベースに対する変更は,そのトランザクションでは知るこ

とができるが,そのトランザクションが<COMMIT文>によって終了するまでは,他のトランザクション

では知ることはできない。 

同時実行トランザクションの実行は,直列可能 (serializable) であることが保証される。直列可能な実行

は,同時実行中のトランザクションの操作の実行で,それらの同じトランザクションのある直列実行と同

じ効果を生成するものと定義される。直列実行では,次のトランザクションが開始する前に各トランザク

ションが実行を完了するものとする。 

トランザクション内での<NDL文>の実行は,その<NDL文>に対する一般規則で述べられている効

果以外には,データベースや<セション状態>に影響を与えない。直列可能な実行とともに,これは,ト

ランザクションそれ自身によって陽になされた変更を除いては,すべての読込み操作がトランザクション

内で再生可能であることを意味する。 

4.15 整合性制約 整合性制約 (integrity constraint) は,データベースの正当な状態を限定する。整合性制

約は,<レコード型>又は<親子集合型>に対してと,親<レコード型>と子<レコード型>間の構成要

素制約に対して定義される。 

整合性制約は,各<NDL文>の実行後に検査される。整合性制約に関連する対象が制約を満たさないな

らば,<NDL文>はデータベースに対して影響を与えず,STATUSパラメタは特定の例外を示すように設

定される。 

4.15.1 検査条件 検査条件 (check condition) は,データベース中の状態が変更されるときレコードの値に

よって満たされなければならない表現式とする。表現式は,<レコード型>の<レコード検査句>の<条

件>,又は<親子集合型>の<子レコード検査句>の<条件>によって指定される。 

4.15.2 既定値 既定値 (default value) は,<手続>によって陽に値が与えられないすべての構成要素実現

値に対して想定される値とする。既定値は,<構成要素型>の<既定句 (default clause)>中の<定数>に

よって指定される。 

4.15.3 一意性制約 一意性制約 (uniqueness constraint) は,与えられた<レコード型>のどの二つのレコ

ードも,また与えられた<親子集合型>の親子集合のどの二つの子レコードも,データベースの中で指定

された構成要素に対して同一の値をとることがないという指定とする。一意性制約は,<レコード型>中

の<レコード一意性句>,又は<親子集合型>の<子レコード句>中の<子レコード一意性句>によって

指定される。 

4.15.4 親子集合順序基準 親子集合順序 (set ordering) は,一つの親子集合中の子レコードの並び順を指

定する。順序は,次のいずれかとする。 

(1) 構成要素の値による整列順 

(2) 発生順又は逆発生順 

(3) 与えられた子レコードの直後又は直前としての相対順 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

(4) 処理系作成者の定義による順 

親子集合順序基準は,<親子集合型>の<順序句>によって指定され,かつその順序が整列順ならば,

その<親子集合型>に含まれる各<子レコード句>の<キー句>によって指定される。 

4.15.5 親子関係 親子関係 (set membership) は,一つのレコードが子レコードとして現れる各親子集合に

対し,そのレコードの組入れモード (insertion mode) 及び保存モード (retention mode) を指定する。各子<

レコード型>は,組入れモード及び保存モードをもつ。 

組入れ (insertion) は,自動 (automatic),構造 (structural) 又は手動 (manual) のいずれかとする。組入れ

が手動ならば,陽に<CONNECT文>によってだけレコードが親子集合中の子レコードとして組み入れら

れる。組入れが自動又は構造ならば,子<レコード型>の各レコードは,それが最初にデータベースに格

納されるとき,その<親子集合型>のある親子集合の子レコードとなる。組入れが自動又は手動ならば,

親レコードは,適用業務プログラムによって識別される。組入れが構造ならば,組み入れられるレコード

の特定のデータ項目に等しい値をもつ親レコードがデータベース管理システムによって選ばれる。組入れ

モードは,<スキーマ>の各<子レコード句>中の<組入れ句>によって指定される。 

保存は,固定 (fixed),準固定 (mandatory) 又は任意 (optional) のいずれかとする。保存が固定ならば,

ある親子集合の子レコードとなったレコードは,それがデータベースから消去されるまでその親子集合の

子レコードのままでいる。保存が準固定ならば,ある親子集合の子レコードとなったレコードは,それが

データベースから消去されるまで同じ<親子集合型>のどれかの親子集合の子レコードのままでいる。保

存が任意ならば,ある親子集合の子レコードとなったレコードは,その親子集合又はその<親子集合型>

の任意の親子集合の子レコードのままでいる必要はない。保存モードは,<スキーマ>の各<子レコード

句>中の<保存句>によって指定される。 

5. 共通要素 

5.1 

<条件> 

5.1.1 

機能 真又は偽のいずれかとして評価される表現式を指定する。 

5.1.2 

形式 形式は,次による。 

<条件> ::= 

<選択条件>[{OR<選択条件>}...] 

<選択条件> ::= 

<単純条件>[{AND<単純条件>}...] 

<単純条件> ::= 

<副条件> 

|<否定副条件> 

|<関係条件> 

<副条件> ::=(<条件>) 

<否定副条件> ::= 

NOT(<条件>) 

<関係条件> ::= 

<オペランド><関係><オペランド> 

<関係> ::= 

<|<=|=|>=|>|<> 

10 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

5.1.3 

構文規則 構文規則は,次による。 

(1) <関係条件 (relation condition)>の最初の<オペランド>が配列を指定するならば,その<関係条件>

の2番目の<オペランド>は配列を指定してはならない。 

(2) 最初のオペランドの型が文字列ならば,2番目のオペランドの型は文字列でなければならない。最初

のオペランドの型が真数ならば,2番目のオペランドの型は真数又は概数でなければならない。最初

のオペランドの型が概数ならば,2番目のオペランドの型は真数又は概数でなければならない。 

5.1.4 

一般規則 一般規則は,次による。 

(1) <条件 (condition)>は,それに含まれる任意の<選択条件 (alternative)>が真ならば真とし,そうでな

ければ偽とする。 

(2) <選択条件>は,それに含まれるいずれの<単純条件>も真ならば真とし,そうでなければ偽とする。 

(3) <副条件>を直接含む<単純条件>は,<副条件>が真ならば真とし,そうでなければ偽とする。 

<否定副条件>を直接含む<単純条件>は,<否定副条件>に直接含まれる<条件>が偽ならば真

とし,そうでなければ偽とする。 

<関係条件>を直接含む<単純条件>は,<関係条件>が真ならば真とし,そうでなければ偽とす

る。 

(4) <関係条件>の最初の(2番目の)オペランドは,その<関係条件>内の最初の(2番目の)オペラン

ドの値とする。 

(5) <関係条件>の<関係>は,<関係条件>の二つのオペランドの間でなされる比較を指定する。選択

的<関係>によって指定される比較は,次による。 

<関係> 

比較 

< 

より小さい 

<= 

より小さいか等しい 

= 

等しい 

>= 

より大きいか等しい 

> 

より大きい 

<> 

等しくない 

(6) <関係条件>のオペランドがどちらも配列でないならば,<関係条件>は,二つのオペランドの指定

された比較が真ならば真とし,そうでなければ,<関係条件>は偽とする。<関係条件>のオペラン

ドの一つが配列ならば,<関係条件>は,他のオペランドと配列並び中のいずれの値との指定された

比較が真ならば真とし,そうでなければ<関係条件>は,偽とする。 

(7) 比較は,次のとおりとする。 

(7.1) オペランドが真数型又は概数型ならば,比較は,それらの数値に従って実行される。 

(7.2) オペランドが文字列型であるならば, 

(a) 二つのオペランドの長さが等しくないならば,短いオペランドが空白文字で長いオペランドの長さ

まで右側に拡張されたものとみなされる。 

(b) 比較は,オペランドの個々の文字を比較しながら左から右へ行われる。 

すべてのこのような個々の比較が等しいならば,二つのオペランドは等しく,そうでなければ,

オペランドの比較の結果は,個々の文字の中で最も左側で等しくなかった比較の結果とすると定義

される。 

(c) 個々の文字の比較は,処理系作成者の定義による。 

11 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

(8) 一般規則において,“より小さい”,“より大きい”,“等しい”,“等しくない”の用語は,対応する関係

演算子を参照する。 

5.2 

<オペランド> 

5.2.1 

機能 値を指定する。 

5.2.2 

形式 形式は,次による。 

<オペランド> ::= 

<構成要素識別子> 

|<構成要素ビュー識別子> 

|<パラメタ識別子> 

|<定数> 

5.2.3 

構文規則 構文規則は,次による。 

(1) <オペランド>の指定は,次のとおりとする。 

(a) <オペランド>が<スキーマ>に含まれるならば,それは<パラメタ識別子>又は<構成要素ビュ

ー識別子>であってはならない。 

(b) <オペランド>が<モジュール>に含まれるならば,それは<構成要素識別子>であってはならな

い。 

(2) <オペランド>のデータ型は,<構成要素識別子>,<構成要素ビュー識別子>,<パラメタ識別子

>又は<定数>のデータ型とする。 

5.2.4 

一般規則 一般規則は,次による。 

(1) <オペランド>の値は,<構成要素識別子>,<構成要素ビュー識別子>若しくは<パラメタ識別子

>によって参照されるデータ項目若しくは配列とするか,又は<定数>の値とする。 

5.3 

<識別子> 

5.3.1 

機能 <手続>中のパラメタ又はデータベース中の対象に対して名前を指定する。 

5.3.2 

形式 形式は,次による。 

<識別子> ::= 

<一般識別子>|<拡張識別子> 

<一般識別子> ::= 

<英大文字> 

[{[<下線>]<英字又は数字>}...] 

<下線> ::=_ 

<英字又は数字> ::= 

<英大文字>|<数字> 

<英字> ::= 

<英大文字>|<英小文字> 

<英大文字> ::= 

 A |B |C |D |E |F |G |H |I  

|J |K |L |M |N |O |P |Q |R  

|S |T  |U |V |W |X |Y |Z  

<英小文字> ::= 

 a |b |c |d |e |f |g |h |i  

12 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

|j |k |l |m |n |o |p |q |r  

|s |t |u |v |w |x |y |z  

<数字> ::= 

0|1|2|3|4|5|6|7|8|9 

<拡張識別子> ::= 

ʼ<拡張識別子文字表現>...ʼ 

<拡張識別子文字表現> ::= 

<拡張識別子文字> 

|<アポストロフィ表現> 

<拡張識別子文字> ::= 

構文規則5.3.3(3)参照 

<アポストロフィ表現> ::=” 

5.3.3 

構文規則 構文規則は,次による。 

(1) <一般識別子>は,18文字以内でなければならない。<拡張識別子>は,18文字以内の<拡張識別子

文字表現>を含まなければならない。 

(2) <一般識別子>は,<キーワード>と同じ文字の並びであってはならない(“5.8<分離符号>及び<

語>”を参照)。 

(3) <拡張識別子文字>は,アポストロフィ文字(ʼ)以外の処理系作成者の定義による文字集合中の任意

の文字とする。 

(4) <拡張識別子>中の各<アポストロフィ表現>は,単一のアポストロフィ文字を表す。 

(5) <拡張識別子>(囲み用のアポストロフィを別として)が<一般識別子>の形式に合致し,それが<

キーワード>でないならば,囲み用のアポストロフィを取り去ることによって形成される<一般識別

子>と等価とする。 

5.3.4 

一般規則 一般規則は,次による。 

なし。 

5.4 

<定数> 

5.4.1 

機能 定数値を指定する。 

5.4.2 

形式 形式は,次による。 

<定数> ::= 

<文字列定数> 

|<数定数> 

<文字列定数> ::= 

“<文字表現>…” 

<文字表現> ::= 

<非引用文字> 

|<引用表現> 

<非引用文字> ::= 

構文規則5.4.3(1)参照 

<引用表現> ::= 

”” 

13 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

<数定数> ::= 

<真数定数> 

|<概数定数> 

<真数定数> ::= 

[+|−]{<符号なし整数>[.<符号なし整数>] 

|<符号なし整数>. 

|.<符号なし整数>} 

<概数定数> ::= 

<仮数>E<指数> 

<仮数> ::= 

<真数定数> 

<指数> ::= 

<符号付き整数> 

<符号付き整数> ::= [+|−]<符号なし整数> 

<符号なし整数> ::= 

<数字>… 

5.4.3 

構文規則 構文規則は,次による。 

(1) <非引用文字 (nonquote character)>は,二重引用記号 (double quote mark) 文字 (”) 以外の処理系作成

者の定義による文字集合の任意の文字とする。 

(2) <文字列定数>のデータ型は,文字列とする。<文字列定数>の長さは,それが含む<文字表現>の

個数とする。<文字列定数>中の各<引用表現>は,<文字列定数>の値と長さの両方において単一

の引用記号文字を表現する。 

(3) 小数点 (.) をもたない<真数定数>は,最後の<数字>の後に小数点が想定される。 

(4) <真数定数>のデータ型は,真数とする。<真数定数>の精度は,それが含む<数字>の個数とする。

<真数定数>の位取りは,小数点の右にある<数字>の個数とする。 

(5) <概数定数>のデータ型は,概数とする。<概数定数>の精度は,その<仮数>の有効けた数を表す

ために必要とされる二進けた数の精度とする。 

5.4.4 

一般規則 一般規則は,次による。 

(1) <文字列定数>の値は,それが含む文字の並びとする。 

(2) <符号なし整数>,<符号付き整数>又は<真数定数>の数値は,符号つき十進表記法の通常の数字

的解釈から導き出される。 

(3) <概数定数>の数値は,<仮数>によって表される真数値と,<指数>によって表される数の10のべ

き乗によって得られる数の積とする。 

5.5 

<データ型> 

5.5.1 

機能 データ型を指定する。 

5.5.2 

形式 形式は,次による。 

<データ型> ::= 

<文字列型> 

|<真数型> 

|<概数型> 

<文字列型> ::= 

CHARACTER [<長さ>] 

14 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

<真数型> ::= 

FIXED <精度>[<位取り>] 

| NUMERIC <精度>[<位取り>] 

| INTEGER 

<概数型> ::= 

FLOAT <精度> 

| REAL 

| DOUBLE PRECISION 

<長さ> ::= 

<符号なし整数> 

<精度> ::= 

<符号なし整数> 

<位取り> ::= <符号付き整数> 

5.5.3 

構文規則 構文規則は,次による。 

(1) <長さ>又は<精度>である<符号なし整数>の値は,0より大きくなければならない。 

(2) <長さ>を省略すると,それは1と想定される。<位取り>を省略すると,それは0と想定される。 

5.5.4 

一般規則 一般規則は,次による。 

(1) <データ型>は,データ項目値の種類を指定する。 

(2) <データ型>CHARACTERのデータ項目は,指定される<長さ>の値に等しい長さをもつ文字列とす

る。 

(3) <データ型>FIXEDのデータ項目は,指定される<位取り>の値に等しい位取りと,指定される<精

度>の値以上の精度の真数値をもつ。 

(4) <データ型>NUMERICのデータ項目は,指定される<精度>及び<位取り>の値にそれぞれ等しい

精度と位取りの真数値をもつ。精度がP,位取りがSならば,0でないNUMERICデータ項目の絶対

値は,1E−S以上か,1E (P−S) −1E−S以下でなければならない。 

(5) <データ型>INTEGERのデータ項目は,位取りが0で,処理系作成者の定義による精度の真数値を

もつ。 

(6) <データ型>FLOATのデータ項目は,指定される<精度>の値以上の精度の概数値をもつ。 

(7) <データ型>REALのデータ項目は,処理系作成者の定義による精度の概数値をもつ。 

(8) <データ型>DOUBLE PRECISIONのデータ項目は,REALの処理系作成者の定義による精度より大

きい処理系作成者の定義による精度の概数値をもつ。 

5.6 

<反復句> 

5.6.1 

機能 <範囲>を指定することによって配列を定義する。 

5.6.2 

形式 形式は,次による。 

<反復句> ::= 

OCCURS<範囲> 

<範囲> ::= 

<符号なし整数>… 

5.6.3 

構文規則 構文規則は,次による。 

(1) <範囲>中の各<符号なし整数>の値は,0より大きくなければならない。 

5.6.4 

一般規則 一般規則は,次による。 

(1) <反復句>は,データ項目の配列を指定する。<範囲>中の<符号なし整数>の値の積は,配列の各

実現値に含まれるデータ項目の個数を指定する。 

15 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

5.7 

<添字> 

5.7.1 

機能 配列のデータ項目を指定する。 

5.7.2 

形式 形式は,次による。 

<添字> ::= 

(<オペランド>…) 

5.7.3 

構文規則 構文規則は,次による。 

(1) <添字>の該当<反復句>は,<添字>を直接含む生成記号の構文規則で指定される。 

(2) <オペランド>の個数は,該当<反復句>の<範囲>中の<符号なし整数>の個数に等しくなければ

ならない。 

(3) <オペランド>は,次のとおりとする。 

(a) <オペランド>が<定数>ならば,それは<符号なし整数>でなければならず,その値は正とし,

かつ,該当<反復句>の<範囲>の対応する<符号なし整数>の値より大きくてはならない。 

(b) <オペランド>が<定数>でないならば,そのデータ型は,位取りが0の真数でなければならない。 

5.7.4 

一般規則 一般規則は,次による。 

(1) dを<添字>中の<オペランド>の数とする。 

(2) 1からdまでのiに対して,Siを<添字>中のi番目の<オペランド>の値とする。 

(3) 1からdまでのiに対して,Eiを該当<反復句>の<範囲>中のi番目の<符号なし整数>の値とする。 

(4) 1からdまでのiに対して,Siが1より小さいか又はSiがEiより大きいならば,配列参照:添字が境

界外であるの例外を発生させる。 

(5) Mdを1とする。1から (d−1) までのiに対して,Miを (i+1) からdまでのjに対する項Ejの積と

する。 

(6) Jを1からdまでのiに対する項Mi* (Si−1) の和とする。 

(7) <添字>の値は,J+1とする。 

5.8 

<分離符号>及び<語> 

5.8.1 

機能 語い単位を指定する。 

5.8.2 

形式 形式は,次による。 

<分離符号> ::= 

{<注釈>|<空白>|<改行>}… 

<注釈> ::= 

(*[<文字>…]*) 

<文字> ::= 

<数字>|<英字>|<特殊文字> 

<特殊文字> ::= 

構文規則5.8.3(1)参照 

<空白> ::= 

空白 

<改行> ::= 

処理系作成者の定義による行端標識 

<語> ::= 

<キーワード>|<識別子>|<定数> 

16 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

<キーワード> ::= 

ABSOLUTE|ALL|AND|AS|ASCENDING|AUTOMATIC 

|CASCADE|CHARACTER|CHECK|COBOL|COMMIT|CONNECT|CONTAINS 

|DEFAULT|DESCENDING|DISCONNECT|DOUBLE|DUPLICATES 

|EMPTY|ERASE|EXCLUSIVE 

|FIND|FINISH|FIRST|FIXED|FLOAT|FOR|FORTRAN|FROM|FULL 

|GET|IN|INSERTION|INTEGER|ITEM|KEY|LANGUAGE|LAST 

|MANDATORY|MANUAL|MEMBER|MODIFY|MODULE 

|NEXT|NOT|NULL|NULLIFY|NUMERIC 

|OCCURS|OF|OPTIONAL|OR|ORDER|OWNER 

|PARTIAL|PASCAL|PLI|PRECISION 

|PRIOR|PROCEDURE|PROHIBITED|PROTECTED 

|READY|REAL|RECONNECT|RECORD|RELATIVE|RENAMED 

|RETAIN|RETENTION|RETRIEVE|ROLLBACK 

|SCHEMA|SESSION|SET|SHARED|SORTED 

|STATUS|STORE|STRUCTURAL|SUBSCHEMA|SYSTEM 

|TEST|TO|TYPE|UNIQUE|UPDATE|WHERE|WITH 

5.8.3 

構文規則 構文規則は,次による。 

(1) <特殊文字>は,<数字>又は<英字>以外の処理系作成者の定義による文字集合中の任意の文字と

する。処理系作成者の定義による行端標識 (end-of-line indicator)(<改行>)が文字ならば,それも<

特殊文字>から除外する。 

(2) <スキーマ>,<サブスキーマ>又は<モジュール>は,最終的に<分離符号>によって任意に区切

られる<語>及び記号の並びからなるように生成される。<語>は,<分離符号>を挟むことなしに,

すぐ後に他の<語>が続いてはならない。 

(3) <注釈>内の列“<文字>…”は,部分列 “*)” を含んではならない。 

5.8.4 

一般規則 一般規則は,次による。 

なし。 

6. スキーマ定義言語 

6.1 

<スキーマ> 

6.1.1 

機能 データベースの論理的構造を定義する。 

6.1.2 

形式 形式は,次による。 

<スキーマ> ::= 

<スキーマ名句> 

[{<レコード型>|<親子集合型>}…] 

6.1.3 

構文規則 構文規則は,次による。 

なし。 

6.1.4 

一般規則 一般規則は,次による。 

なし。 

6.2 

<スキーマ名句> 

17 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

6.2.1 

機能 <スキーマ>に名前を付ける。 

6.2.2 

形式 形式は,次による。 

<スキーマ名句> ::= 

SCHEMA <スキーマ名> 

<スキーマ名> ::= 

<識別子> 

6.2.3 

構文規則 構文規則は,次による。 

(1) <スキーマ名>は,同一環境中の他のどの<スキーマ>の<スキーマ名>とも異ならなければならな

い。環境の概念は,処理系作成者の定義による。 

6.2.4 

一般規則 一般規則は,次による。 

(1) <スキーマ名句>は,それを含む<スキーマ>を指す<スキーマ名>となる<識別子>を定義する。 

6.3 

<レコード型> 

6.3.1 

機能 <レコード型>を定義する。 

6.3.2 

形式 形式は,次による。 

<レコード型> ::= 

<レコード名句> 

[{<レコード一意性句> 

|<構成要素型> 

|<レコード検査句>}…] 

6.3.3 

構文規則 構文規則は,次による。 

なし。 

6.3.4 

一般規則 一般規則は,次による。 

なし。 

6.4 

<レコード名句> 

6.4.1 

機能 <レコード型>に名前を付ける。 

6.4.2 

形式 形式は,次による。 

<レコード名句> ::= 

RECORD <レコード名> 

<レコード名> ::= <識別子> 

6.4.3 

構文規則 構文規則は,次による。 

(1) <レコード名>は,それを含む<スキーマ>中の他のどの<レコード名句>の<レコード名>とも異

ならなければならない。 

6.4.4 

一般規則 一般規則は,次による。 

(1) <レコード名句>は,それを含む<レコード型>を指す<レコード名>となる<識別子>を定義する。 

6.5 

<レコード一意性句> 

6.5.1 

機能 <レコード型>の実現値に対して一意性制約を指定する。 

6.5.2 

形式 形式は,次による。 

<レコード一意性句> ::= 

UNIQUE <構成要素識別子>… 

6.5.3 

構文規則 構文規則は,次による。 

(1) <構成要素識別子>の<構成要素名>が配列を指すならば,その<構成要素識別子>は,<添字>を

18 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

含まなければならない。 

(2) 同じ<構成要素識別子>は,一つの<レコード一意性句>に複数含まれてはならない。 

(3) <レコード一意性句>中の各<構成要素識別子>の該当<レコード型>は,その<レコード一意性句

>を含む<レコード型>とする。 

6.5.4 

一般規則 一般規則は,次による。 

(1) <レコード一意性句>の<構成要素識別子>がレコード実現値に対して参照されるとき,それらの<

構成要素識別子>の該当<データベースキー>は,そのレコード実現値の<データベースキー>とす

る。 

(2) データベースが<レコード一意性句>を含む<レコード型>の二つの実現値を含み,第1のレコード

実現値の<レコード一意性句>中の<構成要素識別子>によって指される構成要素の各値と,第2の

レコード実現値の対応する構成要素の値とが等しいならば,<レコード一意性句>に関する違反とな

る。 

6.6 

<構成要素型> 

6.6.1 

機能 <構成要素型>を定義する。 

6.6.2 

形式 形式は,次による。 

<構成要素型> ::= 

<構成要素名句> 

<データ型> 

[<反復句>] 

[<既定句>] 

6.6.3 

構文規則 構文規則は,次による。 

なし。 

6.6.4 

一般規則 一般規則は,次による。 

なし。 

6.7 

<構成要素名句> 

6.7.1 

機能 <構成要素型>に名前を付ける。 

6.7.2 

形式 形式は,次による。 

<構成要素名句> ::= ITEM <構成要素名> 

<構成要素名> ::= <識別子> 

6.7.3 

構文規則 構文規則は,次による。 

(1) <構文要素名>は,それを含む<レコード型>中の他のどの<構成要素名>とも異ならなければなら

ない。 

6.7.4 

一般規則 一般規則は,次による。 

(1) <構成要素名句>は,それを含む<構成要素型>を指す<構成要素名>となる<識別子>を定義する。 

6.8 

<既定句> 

6.8.1 

機能 <構成要素型>に対して既定値を指定する。 

6.8.2 

形式 形式は,次による。 

<既定句> ::= 

DEFAULT <定数> 

6.8.3 

構文規則 構文規則は,次による。 

19 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

(1) <既定句>の主体<データ型>は,それを含む<構成要素型>の<データ型>とする。 

(2) <定数>は,次のとおりとする。 

(a) 主体<データ型>が文字列値を定義するならば,<定数>は<文字列定数>でなければならない。

<文字列定数>の長さは,主体<データ型>の<長さ>の値より大きくてはならない。 

(b) 主体<データ型>が真数値を定義するならば,<定数>は<真数定数>でなければならない。小数

点の右の有効けた数は,主体<データ型>の<位取り>より大きくてはならない。小数点の左の有

効けた数は,P−Sより大きくてはならない。ここでP及びSは,それぞれ主体<データ型>の<精

度>と<位取り>とする。 

(c) 主体<データ型>が概数値を定義するならば,<定数>は<概数定数>又は<真数定数>でなけれ

ばならない。有効けた数を表すために必要とする二進けた数は,主体<データ型>の<精度>より

大きくてはならない。 

6.8.4 

一般規則 一般規則は,次による。 

(1) <既定句>を含む<レコード型>の実現値が<STORE文>によって格納されるとき,その<既定句>

を含む<構成要素型>の実現値中に含まれる各データ項目の値は,次のとおりとする。 

(a) <定数>が<真数定数>ならば,その値は<定数>の真数値とする。 

(b) <定数>が<概数定数>ならば,その値は<定数>の概数値とする。 

(c) <定数>が<文字列定数>であり,<定数>の<長さ>が主体<データ型>の長さに等しいならば,

その値は<定数>とする。 

(d) <定数>が<文字列定数>であり,<定数>の長さが主体<データ型>の長さより短いならば,そ

の値は空白文字で主体構成要素の長さまで右側に拡張される<文字列定数>とする。 

6.9 

<レコード検査句> 

6.9.1 

機能 <レコード型>の実現値に対して正当性条件 (validity condition) を指定する。 

6.9.2 

形式 形式は,次による。 

<レコード検査句> ::= 

CHECK <条件> 

6.9.3 

構文規則 構文規則は,次による。 

(1) <条件>中の各<構成要素識別子>の該当<レコード型>は,<レコード検査句>を含む<レコード

型>とする。 

6.9.4 

一般規則 一般規則は,次による。 

(1) <レコード検査句>の<条件>がレコード実現値に対して評価されるとき,<条件>中の任意の<構

成要素識別子>に対して該当<データベースキー>は,そのレコード実現値の<データベースキー>

とする。 

(2) <条件>が偽である<レコード型>のレコード実現値をデータベースが含むならば,<レコード検査

句>に関する違反となる。 

6.10 <親子集合型> 

6.10.1 機能 <親子集合型>を定義する。 

6.10.2 形式 形式は,次による。 

<親子集合型> ::= 

<親子集合名句> 

<親レコード句> 

20 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

<順序句> 

<子レコード句>… 

6.10.3 構文規則 構文規則は,次による。 

なし。 

6.10.4 一般規則 一般規則は,次による。 

なし。 

6.11 <親子集合名句> 

6.11.1 機能 <親子集合型>に名前を付ける。 

6.11.2 形式 形式は,次による。 

<親子集合名句> ::= 

SET<親子集合名> 

<親子集合名> ::= 

<識別子> 

6.11.3 構文規則 構文規則は,次による。 

(1) <親子集合名>は,それを含む<スキーマ>中の他のどの<親子集合名句>の<親子集合名>とも異

ならなければならない。 

6.11.4 一般規則 一般規則は,次による。 

(1) <親子集合名句>は,それを含む<親子集合型>を指す<親子集合名>となる<識別子>を定義する。 

6.12 <親レコード句> 

6.12.1 機能 <親子集合型>の親<レコード型>を指定する。 

6.12.2 形式 形式は,次による。 

<親レコード句> ::= 

OWNER {<レコード名>|SYSTEM} 

6.12.3 構文規則 構文規則は,次による。 

(1) <親レコード句>が<レコード名>を含むならば,その<レコード名>は,その<親レコード句>を

含む<スキーマ>中の<レコード型>を指さなければならない。 

6.12.4 一般規則 一般規則は,次による。 

(1) <親レコード句>は,次のとおりとする。 

(a) <親レコード句>が<レコード名>を指定するならば,その<レコード名>はその<親レコード句

>を含む<親子集合型>の親<レコード名>とし,その<レコード名>で指される<レコード型>

はその<親子集合型>の親<レコード型>とする。 

(b) <親レコード句>がSYSTEMを指定するならば,その<親レコード句>を含む<親子集合型>はそ

の親<レコード型>としてSYSTEMをもつ特異<親子集合型>とする。 

6.13 <順序句> 

6.13.1 機能 親子集合中の子レコードの順序を指定する。 

6.13.2 形式 形式は,次による。 

<順序句> ::= 

ORDER <順序選択> 

<順序選択> ::= 

FIRST 

|LAST 

21 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

|NEXT 

|PRIOR 

|DEFAULT 

|<整列順序> 

<整列順序> ::= 

SORTED {<レコード型順>|<順序重複>} 

<レコード型順> ::= 

RECORD TYPE <レコード名>... 

<順序重複> ::= 

DUPLICATES 

{PROHIBITED 

|FIRST 

|LAST 

|DEFAULT} 

6.13.3 構文規則 構文規則は,次による。 

(1) <整列順序>を指定するならば,<キー句>は,<順序句>を含む<親子集合型>の各<子レコード

句>に含まれなければならない。そうでなければ,<順序句>を含む<親子集合型>のどの<子レコ

ード句>も<キー句>を含んではならない。 

(2) <レコード型順>を指定するならば,各<レコード名>は,それを含む<親子集合型>の子<レコー

ド型>を指さなければならず,その<順序句>を含む<親子集合型>の子<レコード型>を指すいず

れの<レコード名>も,<レコード型順>の中に丁度一度だけ現れなければならない。 

(3) <レコード型順>を含むならば,<順序句>を含む<親子集合型>中の各<子レコード句>の<キー

句>は,<レコード型キー項目>を含まなければならない。そうでなければ,そのようなどの<キー

句>も<レコード型キー項目>を含んではならない。 

(4) <順序重複>を指定するならば,<順序句>を含む<親子集合型>中のどの<子レコード句>の<キ

ー句>も<キー重複>を含んではならない。そうでなければ,<順序句>を含む<親子集合型>のい

ずれの<子レコード句>の各<キー句>も<キー重複>を含まなければならない(1)。 

注(1) <キー句>を扱う規則とともに,これは,重複キー項目をもつ親子集合の子レコードが,<順

序句>中の一つの<順序重複>か,又は各<子レコード句>の<キー重複>かによって制御さ

れることを保証する。 

6.13.4 一般規則 一般規則は,次による。 

(1) <順序選択>がLAST又はFIRSTならば,データベース制御システムは,それを含む<親子集合型>

の実現値の子レコードをそれぞれ発生順又は逆発生順に保守しなければならない。この発生順は,<

組入れ操作>がその親子集合実現値に子レコードを組み入れる最も新しい時に基づいている。同じ親

子集合実現値に子レコードを(再)組入れる<MODIFY文>又は<RECONNECT文>の結果から生じ

る<組入れ操作>は,LASTとFIRSTに対して発生順の新しい位置を確立する。 

(2) <順序選択>がNEXT又はPRIORならば,データベース制御システムは,<順序句>を含む<親子

集合型>の実現値の子レコードを,<組入れ操作>の対象<親子集合位置指示子>に含まれる<位置

>によって決定される順序で保持しなければならない。 

(3) <順序選択>がDEFAULTならば,データベース制御システムは,<順序句>を含む<親子集合型> 

22 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

の実現値の子レコードを,処理系作成者の定義による順序で保守しなければならない。この順序は,

トランザクション内では再生可能要求に従うが,トランザクション間では変更してもよい。 

(4) <整列順序>を指定するならば,データベース制御システムは,<順序句>を含む<親子集合型>の

実現値の子レコードを,各子レコードの整列制御キーに基づく順序で保守しなければならない。ここ

で,子レコードの整列制御キーは,<順序句>を含む<親子集合型>の対応する<子レコード句>の

<キー句>で指定されるキー項目の並びからなる。 

(5) <レコード型順>を指定するならば,<順序句>を含む<親子集合型>の子<レコード型>は,その

<順序句>を含む<親子集合型>の<子レコード句>の<キー句>で定義される整列制御キー中のキ

ー項目として使用される。<レコード型順>中の<レコード名>の並びは,<レコード型>の昇順を

指定し,<レコード型>の降順は,その並びの逆によって与えられる。 

(6) <順序重複>は,<順序句>を含む<親子集合型>の実現値が<組入れ操作>によって二つ以上の子

レコードがキー項目のすべてに対して等しい値をもつものを含むようになるとき,データベース制御

システムによってとられる動作を指定する。それは,次のとおりとする。 

(a) PROHIBITEDを指定しているならば,<順序句>に関する違反となる。 

(b) LAST又はFIRSTを指定しているならば,キー項目に対して等しい値をもつ子レコードは,それぞ

れ発生順又は逆発生順に並べられなければならない。この発生順は,<STORE文>,<MODIFY

文>,<CONNECT文>若しくは<RECONNECT文>が親子集合実現値に与えられた子レコードを

組み入れ時点,又は,<MODIFY文>が与えられた子レコード中の一つ以上のキー項目に対して値

を指定した最も新しい時点に基づいている。そのレコード中のキー項目に対して現在の値に等しい

その子レコード中の一つ以上のキー項目に対して値を指定する<MODIFY文>は,<順序重複>

FIRST又はLASTに対して発生順の新しい位置を確立する。 

(c) DEFAULTを指定しているならば,キー項目のすべてに対して等しい値をもつ子レコードは,処理

系作成者の定義による順序に並べられる(2)。 

注(2) <順序重複>が指定されないならば,とられるべき動作は,それを含む<親子集合型>の各<

子レコード句>の<キー重複>によって制御される。 

6.14 <子レコード句> 

6.14.1 機能 <親子集合型>の子<レコード型>を指定する。 

6.14.2 形式 形式は,次による。 

<子レコード句> ::= 

<子レコード名句> 

<組入れ句> 

<保存句> 

[<子レコード一意性句>…] 

[<キー句>] 

[<子レコード検査句>…] 

6.14.3 構文規則 構文規則は,次による。 

なし。 

6.14.4 一般規則 一般規則は,次による。 

なし。 

6.15 <子レコード名句> 

23 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

6.15.1 機能 <親子集合型>の子<レコード型>のレコード名を指定する。 

6.15.2 形式 形式は,次による。 

<子レコード名句> ::= 

MEMBER <レコード名> 

6.15.3 構文規則 構文規則は,次による。 

(1) <レコード名>は,それを含む<スキーマ>中の<レコード型>を指さなければならない。 

(2) <レコード名>は,それを含む<親子集合型>中の他のどの子<レコード型>も指してはならない。 

6.15.4 一般規則 一般規則は,次による。 

(1) <子レコード名句>は,<レコード名>によって指される<レコード型>がその<子レコード名句>

を含む<親子集合型>の子<レコード型>となり,かつ,その<子レコード名句>を含む<子レコー

ド句>の子<レコード型>となることを定義する。 

6.16 <組入れ句> 

6.16.1 機能 <親子集合型>の子<レコード型>の組入れ特性を定義する。 

6.16.2 形式 形式は,次による。 

<組入れ句> ::= 

INSERTION <組入れモード> 

<組入れモード> ::= 

AUTOMATIC 

|STRUCTURAL <構造指定> 

|MANUAL 

<構造指定> ::= 

<構成要素識別子一致> 

[{AND <構成要素識別子一致>}…] 

<構成要素識別子一致> ::= 

<子レコード構成要素識別子>=<親レコード構成要素識別子> 

|<親レコード構成要素識別子>=<子レコード構成要素識別子> 

<子レコード構成要素識別子> ::= <構成要素識別子> 

<親レコード構成要素識別子> ::= <構成要素識別子> 

6.16.3 構文規則 構文規則は,次による。 

(1) <組入れ句>にSTRUCTURALを指定するならば,次のとおりとする。 

(a) <構成要素識別子>の<構成要素名>が配列を指すならば,その<構成要素識別子>は,<添字>

を含まなければならない。 

(b) その<親子集合型>は,特異<親子集合型>であってはならない。対象<レコード型>は,<子レ

コード名句>を含む<親子集合型>の親<レコード型>とする。主体<レコード型>は,<子レコ

ード名句>を含む<子レコード句>の子<レコード型>とする。 

(c) 主体<レコード型>と対象<レコード型>が同じならば,<構成要素識別一致>中のいずれの<構

成要素識別子>も,OWNER又はMEMBERを指定する<修飾子>を含まなければならない。 

(d) 主体<レコード型>と対象<レコード型>との両方で定義される<構成要素名>を含む<構成要素

識別子一致>中の任意の<構成要素識別子>は,<修飾子>を含まなければならない。 

(e) <構成要素識別一致>中の<構成要素識別子>が<レコード名>を指定する<修飾子 (qualifier)>

24 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

を含むならば,<子レコード名句>を含む<レコード名>は,主体<レコード型>か,又は対象<

レコード型>のいずれかの<レコード名>でなければならず,<構成要素識別子>の該当<レコー

ド型>は,その<レコード型>とする。 

(f) <構成要素識別子一致>中の<構成要素識別子>がOWNER (MEMBER) を指定する<修飾子>を

含むならば,<構成要素識別子>の該当<レコード型>は,対象(主体)<レコード型>とする。 

(g) <構成要素識別子一致>中の<構成要素識別子>が<修飾子>を含まないならば,その<構成要素

識別子>の<構成要素名>は,対象<レコード型>中か,主体<レコード型>中のいずれかに定義

されていなければならず,<構成要素識別子>の該当<レコード型>は,その<レコード型>とす

る。 

(h) <親レコード構成要素識別子>によって参照されるデータ項目は,対象<レコード型>中の<レコ

ード一意性句>にある<構成要素識別子>でなければならない。 

(i) <子レコード構成要素識別子>によって参照されるデータ項目は,主体<レコード型>のデータ項

目でなければならない。<構成要素識別子一致>の<子レコード構成要素識別子>によって参照さ

れる<構成要素型>の<データ型>は,その<構成要素識別子致>の<親レコード構成要素識別子

>によって参照される<構成要素型>の<データ型>と一致しなければならない。 

6.16.4 一般規則 一般規則は,次による。 

(1) STRUCTURALが指定されたとき,M1,M2,…を<子レコード構成要素識別子>として指定される

<構成要素識別子>とする。それらの<構成要素識別子>の該当<データベースキー>は,新しい子

レコード実現値の<データベースキー>とする。O1,O2,…を<親レコード構成要素識別子>として

指定される<構成要素識別子>とする。それらの<構成要素識別子>の該当<データベースキー>は,

<組入れ操作>によって指定される親子集合実現値の親レコード実現値の<データベースキー>とす

る。暗黙的に次の形式<子レコード検査句>が強制される。 

CHECK M1=O1 AND M2=O2… 

6.17 <保存句> 

6.17.1 機能 <親子集合型>の子<レコード型>の保存特性を定義する。 

6.17.2 形式 形式は,次による。 

<保存句> ::= 

RETENTION {FIXED | MANDATORY | OPTIONAL} 

6.17.3 構文規則 構文規則は,次による。 

なし。 

6.17.4 一般規則 一般規則は,次による。 

なし。 

6.18 <子レコード一意性句> 

6.18.1 機能 <親子集合型>の各実現値の子レコードに対して一意性制約を指定する。 

6.18.2 形式 形式は,次による。 

<子レコード一意性句> ::= 

UNIQUE <構成要素識別子>… 

6.18.3 構文規則 構文規則は,次による。 

(1) <構成要素識別子>の<構成要素名>が配列を指すならば,その<構成要素識別子>は,<添字>を

含まなければならない。 

25 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

(2) 同じ<構成要素識別子>は,一つの<子レコード一意性句>に複数含まれてはならない。 

(3) <子レコード一意性句>の主体<レコード型>は,<子レコード名句>を含む<子レコード句>の子

<レコード型>とする。 

<子レコード一意性句>中の各<構成要素識別子>の該当<レコード型>は,主体<レコード型>

とする。 

6.18.4 一般規則 一般規則は,次による。 

(1) <子レコード一意性句>の<構成要素識別子>がレコード実現値に対して参照されるとき,それらの

<構成要素識別子>に対する該当<データベースキー>は,そのレコード実現値の<データベースキ

ー>とする。 

(2) データベースが<子レコード一意性句>を含む<親子集合型>の実現値を含み,その実現値が,第1

のレコード実現値の<子レコード一意性句>中の<構成要素識別子>によって指される構成要素の各

値が,第2のレコード実現値の対応する構成要素の値に等しい主体<レコード型>の二つの子レコー

ド実現値を含むならば,<子レコード一意性句>に関する違反となる。 

6.19 <キー句> 

6.19.1 機能 整列される<親子集合型>の子<レコード型>に対して整列制御キーを定義する。 

6.19.2 形式 形式は,次による。 

<キー句> ::= 

KEY <キー項目>…[<キー重複>] 

<キー項目> ::= 

{ASCENDING|DESCENDING} 

{<構成要素識別子>|<レコード型キー項目>}… 

<レコード型キー項目> ::= RECORD TYPE 

<キー重複> ::= 

DUPLICATES 

{PROHIBITED 

|FIRST 

|LAST 

|DEFAULT} 

6.19.3 構文規則 構文規則は,次による。 

(1) <構成要素識別子>の<構成要素名>が配列を指すならば,その<構成要素識別子>は,<添字>を

含まなければならない。 

(2) 同じ<構成要素識別子>は,一つの<キー句>に複数含まれてはならない。 

(3) <キー句>の主体<レコード型>は,その<キー句>を含む<子レコード句>の子<レコード型>と

する。 

<キー句>中の各<構成要素識別子>の該当<レコード型>は,<キー句>の主体<レコード型>

とする。 

(4) <キー句>を含む<親子集合型>が<整列順序>を指定するならば,<キー句>を指定しなければな

らない。そうでなければ,<キー句>を指定してはならない。 

(5) <キー句>を含む<親子集合型>が<順序重複>をもつ<整列順序>を指定しないならば,<キー重

複>を指定しなければならない。そうでなければ,<キー重複>を指定してはならない(3)。 

26 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

注(3) <順序句>を扱う規則とともに,これは,重複キー項目をもつ親子集合の子レコードが<順序

句>中の一つの<順序重複>により制御されるか,又は各<子レコード句>の<キー重複>に

よって制御されることを保証する。 

(6) <キー句>を含む<親子集合型>が<レコード型順>をもつ<整列順序>を指定するならば,一つの

<キー句>は唯一の<レコード型キー項目>を含まなければならない。そうでなければ,<キー句>

は<レコード型キー項目>を含んではならない。 

(7) <キー句>で指定される<構成要素識別子>と<レコード型キー項目>は,その<キー句>を含む<

親子集合型>の子<レコード型>として主体<レコード型>に対する整列制御キーを構成するキー項

目とする。キー項目の直前にASCENDING又はDESCENDINGがあるならば,キー項目の方向は,そ

れぞれ昇順又は降順になるように定義される。キー項目Kの直前にキー項目Jがあるならば,キー項

目Kの方向は,キー項目Jの方向となるように定義される。 

(8) どの<レコード型キー項目>も<キー句>で指定していないならば,その<キー句>中のすべてのキ

ー項目は,共通キー項目となるように定義される。そうでなければ,<キー句>の共通キー項目は,

<キー句>中のキー項目のもとの位置が<レコード型キー項目>のもとの位置よりも小さいキー項目

と<レコード型キー項目>になるように定義される。<親子集合型>の各<子レコード句>は,同じ

個数の共通キー項目を含まなければならない。<親子集合型>中の<子レコード句>の<キー句>中

の同じもとの位置にあるすべての共通キー項目は,同じ方向をもたなければならず,<レコード型キ

ー項目>とするか,又は,同一の<データ型>をもつ<構成要素型>を指しているかのいずれかでな

ければならない。 

6.19.4 一般規則 一般規則は,次による。 

(1) <キー句>の<構成要素識別子>がレコード実現値に対して参照されるとき,それらの<構成要素識

別子>に対する該当<データベースキー>は,そのレコード実現値の<データベースキー>とする。 

(2) キー項目は,<キー句>で優先度の高い順番に宣言される。 

(3) キー項目の方向が昇順であるか降順であるかに依存して,キー項目の値は,それぞれ最小から最大へ

又は最大から最小へと順序付けられる。 

(4) キー項目の順序は,次のとおりとする。 

(a) キー項目が<構成要素識別子>ならば,キー項目の方向が昇順か降順かに依存して,そのキー項目

の順序は,より小さいか,より大きいかの関係条件のいずれかによって定義される。 

(b) キー項目が<レコード型キー項目>ならば,そのキー項目の順序は,その<親子集合型>の<整列

順序>の<レコード型順>で指定される<レコード名>の並びによって定義される。 

(5) <キー重複>は,<STORE文>,<MODIFY文>,<CONNECT文>又は<RECONNECT文>の実

行によって,<キー句>を含む<親子集合型>の実現値がキー項目のすべてに対して等しい値をもつ

複数の子レコードを含むときにとられるべき動作を指定する。それは,次のとおりとする。 

(a) PROHIBITを指定しているならば,<キー句>に関する違反となる。 

(b) キー項目の値が等しい複数の子レコードは,LAST又はFIRSTを指定しているならば,発生順又は

逆発生順に並べられる。この発生順は,<STORE文>,<MODIFY文>,<CONNECT文>若し

くは<RECONNECT文>が親子集合実現値に与えられた子レコードを組み入れた時点,又は,<

MODIFY文>が与えられた子レコード中の一つ以上のキー項目に対して値を指定した最も新しい

時点に基づいている。その子レコード中のそれらのキー項目に対して現在の値に等しい子レコード

中の一つ以上のキー項目に対して値を指定する<MODIFY文>は,発生順の新しい位置を確立する。 

27 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

(c) DEFAULTを指定しているならば,キー項目のすべてに対して等しい値をもつ子レコードは,処理

系作成者の定義による順序に並べられる。 

<キー重複>を指定しないならば,とられるべき動作は,<キー句>を含む<親子集合型>の<

順序重複>によって制御される。 

6.20 <子レコード検査句> 

6.20.1 機能 <親子集合型>の各実現値の子レコードの正当性条件を指定する。 

6.20.2 形式 形式は,次による。 

<子レコード検査句> ::= 

CHECK <条件> 

6.20.3 構文規則 構文規則は,次による。 

(1) <子レコード検査句>の主体<レコード型>は,その<子レコード検査句>を含む<子レコード句>

の子<レコード型>とする。 

<子レコード検査句>を含む<親子集合型>が特異<親子集合型>でないならば,<子レコード検

査句>の対象<レコード型>は,その<子レコード検査句>を含む<親子集合型>の親<レコード型

>とする。<子レコード検査句>を含む<親子集合型>が特異<親子集合型>ならば,<子レコード

検査句>は,対象<レコード型>をもたない。 

(2) 主体<レコード型>と対象<レコード型>とが同じならば,<条件>中のすべての<構成要素識別子

>は,OWNER又はMEMBERのいずれかを指定する<修飾子>を含まなければならない。 

(3) <子レコード検査句>の主体<レコード型>と対象<レコード型>との両方に定義される<構成要素

名>を含む<条件>中の任意の<構成要素識別子>は,<修飾子>を含まなければならない。 

(4) <修飾子>は,次のとおりとする。 

(a) <条件>中の<構成要素識別子>が<レコード名>を指定する<修飾子>を含むならば,その<レ

コード名>は主体<レコード型>か対象<レコード型>かのいずれかの<レコード名>でなければ

ならない。<構成要素識別子>の該当<レコード型>は,その<レコード型>とする。 

(b) <条件>中の<構成要素識別子>がOWNERを指定する<修飾子>を含むならば,<構成要素識別

子>は,対象<レコード型>をもたなければならず,<構成要素識別子>の該当<レコード型>は,

その<レコード型>とする。 

(c) <条件>中の<構成要素識別子>がMEMBERを指定する<修飾子>を含むならば,<構成要素識

別子>の該当<レコード型>は,主体<レコード型>とする。 

(d) <条件>中の<構成要素識別子>が<修飾子>を含まないならば,その<構成要素識別子>の<構

成要素名>は,主体<レコード型>か対象<レコード型>かのいずれかで定義されていなければな

らない。<構成要素識別子>の該当<レコード型>は,その<レコード型>とする。 

6.20.4 一般規則 一般規則は,次による。 

(1) <子レコード検査句>の<条件>が親子集合実現値に対して評価されるとき,<条件>の該当<レコ

ード型>が親子集合の親<レコード型>である<条件>中の<構成要素識別子>に対して該当<デー

タベースキー>は,その親子集合実現値の親レコード実現値の<データベースキー>とする。そして,

<条件>中の該当<レコード型>が親子集合の子<レコード型>である<条件>中の<構成要素識別

子>に対して該当<データベースキー>は,その親子集合実現値の子レコード実現値の<データベー

スキー>とする。 

(2) 親レコードの実現値及びその親子集合実現値の子レコードである主体<レコード型>の任意の実現値

28 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

に関して評価したとき,<条件>が偽となり,それを含む<親子集合型>のレコード実現値をデータ

ベースが含むならば,<子レコード検査句>に関する違反となる。 

6.21 <構成要素識別子> 

6.21.1 機能 構成要素又はデータ項目を参照する。 

6.21.2 形式 形式は,次による。 

<構成要素識別子> ::= 

<ドット形式構成要素識別子> 

|<OF形式構成要素識別子> 

<ドット形式構成要素識別子> ::= 

[<修飾子>.]<構成要素名>[<添字>] 

<OF形式構成要素識別子> ::= 

<構成要素名>[<添字>][OF <修飾子>] 

<修飾子> ::= 

<レコード名> 

|OWNER 

|MEMBER 

6.21.3 構文規則 構文規則は,次による。 

(1) <構成要素識別子>の該当<レコード型>は,<添字>を直接含む生成記号の構文規則で規定される。 

(2) <構成要素識別子>が<修飾子>を含むならば, 

(a) <修飾子>が<レコード名>を含むならば,その<レコード名>は,該当<レコード型>を指さな

ければならない。 

(b) <修飾子>がOWNERを指定するならば,<構成要素識別子>は,<親子集合型>に含まれなけれ

ばならず,その<親子集合型>の親<レコード型>は,該当<レコード型>でなければならない。 

(c) <修飾子>がMEMBERを指定するならば,<構成要素識別子>は,<子レコード句>に含まれな

ければならず,その<子レコード句>の子<レコード名>は,該当<レコード型>を指さなければ

ならない。 

(3) <構成要素名>は,該当<レコード型>の<構成要素型>を指さなければならない。その<構成要素

型>は,主体<構成要素型>とする。 

(4) <構成要素識別子>が<添字>を含むならば, 

(a) 主体<構成要素型>は,配列を定義しなければならない。 

(b) <添字>の該当<反復句>は,主体<構成要素型>に含まれる<反復句>とする。 

(c) <添字>中の各<オペランド>は,<定数>でなければならない。 

6.21.4 一般規則 一般規則は,次による。 

(1) <構成要素識別子>の該当<データベースキー>は,<構成要素識別子>を直接含む生成記号の一般

規則で規定される。 

(2) <構成要素識別子>は,該当<データベースキー>によって参照されるレコード中のデータ項目又は

配列を次のとおりに参照する。 

(a) <構成要素識別子>の主体<構成要素>がデータ項目を定義するならば,<構成要素識別子>は,

そのデータ項目を参照する。 

(b) <構成要素識別子>の主体<構成要素型>が配列を定義し,<構成要素識別子>が<添字>を含ま

29 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

ないならば,<構成要素識別子>は配列を参照する。 

(c) <構成要素識別子>の主体<構成要素型>が配列を定義し,<構成要素識別子>が<添字>を含む

ならば,<構成要素識別子>は,配列中のi番目のデータ項目を参照する。ここで,iは<添字>の

値とする。 

7. サブスキーマ定義言語 

7.1 

<サブスキーマ> 

7.1.1 

機能 データベースの利用者のビューを定義する。 

7.1.2 

形式 形式は,次による。 

<サブスキーマ> ::= 

<サブスキーマ名句> 

[{<レコードビュー>|<親子集合ビュー>}…] 

7.1.3 

構文規則 構文規則は,次による。 

なし。 

7.1.4 

一般規則 一般規則は,次による。 

なし。 

7.2 

<サブスキーマ名句> 

7.2.1 

機能 <サブスキーマ>に名前を付ける。 

7.2.2 

形式 形式は,次による。 

<サブスキーマ名句> ::= 

<ドット形式サブスキーマ名句> 

|<OF形式サブスキーマ名句> 

<ドット形式サブスキーマ名句> ::= 

SUBSCHEMA <スキーマ名>.<サブスキーマ名> 

<OF形式サブスキーマ名句> ::= 

SUBSCHEMA <サブスキーマ名> OF <スキーマ名> 

<サブスキーマ名> ::= <識別子> 

7.2.3 

構文規則 構文規則は,次による。 

(1) <スキーマ名>は,<サブスキーマ>と同じ環境中の<スキーマ>を指さなければならない。その<

スキーマ>は,<サブスキーマ>の主体<スキーマ>とする。環境の概念は,処理系作成者の定義に

よる。 

(2) <サブスキーマ>の<サブスキーマ名>は,同じ主体<スキーマ>をもつ他のどの<サブスキーマ>

の<サブスキーマ名>とも異ならなければならない。 

7.2.4 

一般規則 一般規則は,次による。 

(1) <サブスキーマ名句>は,主体<スキーマ>内のその<サブスキーマ名句>を含む<サブスキーマ>

を指す<サブスキーマ名>となる<識別子>を定義する。 

7.3 

<レコードビュー> 

7.3.1 

機能 <サブスキーマ>に含まれるべき<レコード型>を指定し,<サブスキーマ>内でそれを指

す<識別子>を宣言する。 

7.3.2 

形式 形式は,次による。 

30 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

<レコードビュー> ::= 

RECORD [<レコード再命名>]<レコードビュー名> 

[<構成要素リスト>] 

<レコード再命名> ::= 

<レコード名> RENAMED 

<レコードビュー名> ::= 

<識別子> 

<構成要素リスト> ::= 

<構成要素ビュー>…| ALL 

7.3.3 

構文規則 構文規則は,次による。 

(1) <レコード再命名>の指定は,次のとおりとする。 

(a) <レコード再命名>を指定するならば,<レコード名>は,主体<スキーマ>中の<レコード型>

を指さなければならない。その<レコード型>は,主体<レコード型>とする。 

(b) <レコード再命名>を省略するならば,<レコードビュー名>は,主体<スキーマ>中の<レコー

ド型>を指す<レコード名>でなければならない。その<レコード型>は,主体<レコード型>と

する。 

(2) <レコードビュー名>は,<レコードビュー>を含む<サブスキーマ>中の他のいずれの<レコード

ビュー>の<レコードビュー名>とも異ならなければならない。主体<レコード型>は,<レコード

ビュー>を含む<サブスキーマ>中の他のいずれの主体<レコード型>とも異ならなければならない。 

(3) ALLの<構成要素リスト>を指定するならば,それは,主体<レコード型>中のいずれの<構成要素

型>に対しても<構成要素ビュー>を含む<構成要素リスト>に等価である。ここで,<構成要素型

>に対応する<構成要素ビュー>は,<構成要素型>の<構成要素名>である<構成要素ビュー名>

を含み,決して<構成要素再命名>を含まない。 

7.3.4 

一般規則 一般規則は,次による。 

(1) <レコードビュー>は,主体<レコード型>を指す<レコードビュー名>である<識別子>を定義す

る。 

7.4 

<構成要素ビュー> 

7.4.1 

機能 <サブスキーマ>内に含まれるべき<構成要素型>を指定し,<サブスキーマ>内でそれを

指す<識別子>を宣言する。 

7.4.2 

形式 形式は,次による。 

<構成要素ビュー> ::= 

ITEM [<構成要素再命名>]<構成要素ビュー名> 

<構成要素再命名> ::= 

<構成要素名> RENAMED 

<構成要素ビュー名> ::= 

<識別子> 

7.4.3 

構文規則 構文規則は,次による。 

(1) 主体<レコード型>は,<構成要素ビュー>を含む<レコードビュー>の<レコードビュー名>によ

って指される<レコード型>とする。 

(2) <構成要素再命名>の指定は,次のとおりとする。 

31 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

(a) <構成要素再命名>を指定するならば,<構成要素名>は,主体<レコード型>に含まれる<構成

要素型>を指さなければならない。その<構成要素型>は,主体<構成要素型>とする。 

(b) <構成要素再命名>を省略するならば,<構成要素ビュー名>は,主体<レコード型>に含まれる

<構成要素型>を指す<構成要素名>でなければならない。その<構成要素型>は,主体<構成要

素型>とする。 

(3) <構成要素ビュー名>は,<構成要素ビュー>を含む<レコードビュー>中の他のいずれの<構成要

素ビュー>の<構成要素ビュー名>とも異ならなければならない。主体<構成要素型>は,<構成要

素ビュー>を含む<レコードビュー>中の他のいずれの<構成要素ビュー>の主体<構成要素型>と

も異ならなければならない。 

7.4.4 

一般規則 一般規則は,次による。 

(1) <構成要素ビュー>は,主体<構成要素型>を指す<構成要素ビュー名>である<識別子>を定義す

る。 

7.5 

<親子集合ビュー> 

7.5.1 

機能 <サブスキーマ>に含まれるべき<親子集合型>を指定し,<サブスキーマ>内でそれを指

す<識別子>を宣言する。 

7.5.2 

形式 形式は,次による。 

<親子集合ビュー> ::= 

SET [<親子集合再命名>]<親子集合ビュー名> 

<親子集合再命名> ::= 

<親子集合名> RENAMED 

<親子集合ビュー名> ::= 

<識別子> 

7.5.3 

構文規則 構文規則は,次による。 

(1) <親子集合再命名>の指定は,次のとおりとする。 

(a) <親子集合再命名>を指定するならば,<親子集合名>は,主体<スキーマ>中の<親子集合型>

を指さなければならない。その<親子集合型>は,主体<親子集合型>とする。 

(b) <親子集合再命名>を省略するならば,<親子集合ビュー名>は,主体<スキーマ>中の<親子集

合型>を指す<親子集合名>でなければならない。その<親子集合型>は,主体<親子集合型>と

する。 

(2) <親子集合ビュー名>は,<親子集合ビュー>を含む<サブスキーマ>中の他のいずれの<親子集合

ビュー>の<親子集合ビュー名>とも異ならなければならない。主体<親子集合型>は,<親子集合

ビュー>を含む<サブスキーマ>中の他のいずれの<親子集合ビュー>の主体<親子集合型>とも異

ならなければならない。 

(3) 主体<親子集合型>の親<レコード型>と少なくとも一つの子<レコード型>は,<親子集合ビュー

>を含む<サブスキーマ>の<レコードビュー>によって指されなければならない。 

7.5.4 

一般規則 一般規則は,次による。 

(1) <親子集合ビュー>は,主体<親子集合型>を指す<親子集合ビュー名>である<識別子>を定義す

る。 

8. モジュール言語 

32 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

8.1 

<モジュール> 

8.1.1 

機能 モジュールを定義する。 

8.1.2 

形式 形式は,次による。 

<モジュール> ::= 

<モジュール名句> 

<言語句> 

<サブスキーマ指定> 

[<一時親子集合指定群>] 

<手続>… 

<言語句> ::= 

LANGUAGE {COBOL|FORTRAN|PASCAL|PLI} 

<サブスキーマ指定> ::= 

<ドット形式サブスキーマ指定> 

|<OF形式サブスキーマ指定> 

<ドット形式サブスキーマ指定> ::= 

SUBSCHEMA<スキーマ名>.<サブスキーマ名> 

<OF形式サブスキーマ指定> ::= 

SUBSCHEMA<サブスキーマ名> OF <スキーマ名> 

8.1.3 

構文規則 構文規則は,次による。 

(1) <スキーマ名>は,<モジュール>と同じ環境中の<スキーマ>を指さなければならない。その<ス

キーマ>は,<モジュール>の主体<スキーマ>とする。 

(2) <サブスキーマ名>は,<モジュール>と同じ環境中の<サブスキーマ>を指さなければならない。

その<サブスキーマ>の主体<スキーマ>は,<モジュール>の主体<スキーマ>でなければならな

い。その<サブスキーマ>は,<モジュール>の主体<サブスキーマ>とする。 

8.1.4 

一般規則 一般規則は,次による。 

(1) 一つの<モジュール>は,実行時に一つの適用業務プログラムと結合されなければならない。一つの

適用業務プログラムは,高々一つの<モジュール>と結合されなければならない。 

(2) <モジュール>の<言語句>がCOBOL(それぞれにFORTRAN,PASCAL,PLI)を指定し,その<

モジュール>中の<手続>の呼出しを実行する方法が標準COBOLプログラム(それぞれに標準

FORTRAN,標準Pascal又は標準PL/Iプログラム)でなければ,結果は規定しない。 

(3) 最初にプログラムが<モジュール>中の<手続>の呼出しを実行する前に,初期<セション状態>を

構築し,その<セション状態>を<モジュール>中の任意の<手続>のそのプログラムによるいずれ

の呼出しにも関連付ける。 

(4) 最後にプログラムが<モジュール>中の<手続>の呼出しを実行した後に,FINISHを指定する<

ROLLBACK文>を実行し,その<モジュール>に結合されている<セション状態>を抹消する。 

8.2 

<モジュール名句> 

8.2.1 

機能 <モジュール>に名前を付ける。 

8.2.2 

形式 形式は,次による。 

<モジュール名句> ::= 

MODULE [<モジュール名>] 

33 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

<モジュール名> ::= <識別子> 

8.2.3 

構文規則 構文規則は,次による。 

(1) <モジュール名句>は,同じ環境中の他のどの<モジュール>の<モジュール名>とも異ならなけれ

ばならない。環境の概念は,処理系作成者の定義による。 

8.2.4 

一般規則 一般規則は,次による。 

(1) <モジュール名句>は,環境中でその<モジュール名句>を含む<モジュール名>を指す<モジュー

ル名>である省略可能な<識別子>を定義する。 

8.3 

<一時親子集合指定群> 

8.3.1 

機能 一時親子集合を指定する。 

8.3.2 

形式 形式は,次による。 

<一時親子集合指定群> ::= 

<一時親子集合指定>… 

<一時親子集合指定> ::= 

SET <親子集合ビュー名> 

8.3.3 

構文規則 構文規則は,次による。 

(1) 各<一時親子集合指定>の<親子集合ビュー名>は,<一時親子集合指定群>を含む<モジュール>

中の他のどの<一時親子集合指定>の<親子集合ビュー名>とも異ならなければならない。そして,

主体<サブスキーマ>中のどの<親子集合ビュー>の<親子集合ビュー名>とも異ならなければなら

ない。 

(2) <親子集合ビュー名>Sをもつ<一時親子集合指定>は,次のような暗黙的な<親子集合名句>,<

親レコード句>及び<順序句>をもつ一時的な<親子集合型>を定義する。 

SET S OWNER SYSTEM ORDER LAST 

更に,主体<サブスキーマ>中で指定される各<レコードビュー名>Rに対して,次のような<子

レコード名句>,<組入れ句>及び<保存句>をもつ<子レコード句>を定義する。 

MEMBER R INSERTION MANUAL RETENTION OPTIONAL 

8.3.4 

一般規則 一般規則は,次による。 

(1) <一時親子集合指定>の<親子集合ビュー名>は,<一時親子集合指定>によって定義される一時<

親子集合型>を指す。 

8.4 

<手続> 

8.4.1 

機能 手続を定義する。 

8.4.2 

形式 形式は,次による。 

<手続> ::= 

PROCEDURE <手続名>[<パラメタ宣言>…] 

[<NDL文>…] 

<パラメタ宣言> ::= 

<パラメタ名><データ型>[<反復句>] 

|RECORD 

|STATUS 

|TEST 

<手続名> ::= <識別子> 

34 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

<パラメタ名> ::= <識別子> 

<NDL文> ::= 

<COMMIT文> 

|<CONNECT文> 

|<DISCONNECT文> 

|<ERASE文> 

|<FIND文> 

|<GET文> 

|<MODIFY文> 

|<NULLIFY文> 

|<READY文> 

|<RECONNECT文> 

|<ROLLBACK文> 

|<STORE文> 

|<テスト文> 

<テスト文> ::= 

<データベースキー等値テスト文> 

|<データベースキーナルテスト文> 

|<親子集合空テスト文> 

|<親子関係テスト文> 

8.4.3 

構文規則 構文規則は,次による。 

(1) <手続名>は,それを含む<モジュール>中の他のどの<手続>の<手続名>とも異ならなければな

らない。 

(2) <手続>中の各<パラメタ宣言>の<パラメタ名>は,その<手続>中の他のどの<パラメタ宣言>

の<パラメタ名>とも異ならなければならない。 

(3) <手続>中の<NDL文>に含まれるどの<パラメタ名>もその<手続>中で<パラメタ宣言>に指

定されなければならない。 

(4) <NDL文>中の<構成要素ビュー識別子>中の<構成要素ビュー名>が<手続>中で指定される<

パラメタ名>と同一ならば,<構成要素ビュー識別子>は<レコードビュー名>を含まなければなら

ない。 

(5) 各<NDL文>中の各<レコードビュー名>によって指される<レコード型>は,主体<サブスキーマ

>で定義されなければならない。 

(6) 各<NDL文>中の各<親子集合ビュー名>によって指される<親子集合型>は,主体<サブスキーマ

>又はその<手続>を含む<モジュール>の<一時親子集合指定群>で定義されなければならない。 

(7) <手続>は,高々一つのRECORD<パラメタ宣言>,高々一つのSTATUS<パラメタ宣言>及び高々

一つのTEST<パラメタ宣言>を含まなければならない。 

(8) <手続>は,高々一つの<テスト文>を含まなければならない。 

(9) <手続>が<テスト文>を含むならば,その<手続>は,一つのTEST<パラメタ宣言>を含まなけ

ればならない。<手続>が<テスト文>を含まないならば,それは,TEST<パラメタ宣言>を含んで

いてはならない。 

35 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

(10) <手続>は,高々一つの<NDL文>である<COMMIT文>又は<ROLLBACK文>を含まなければな

らない。<手続>がこのような<NDL文>を含むならば,それは,その<手続>中の最後の<NDL

文>でなければならない。 

(11) <手続>の妥当な呼出しは,n個のパラメタを与えなければならない。ここで,nは,その<手続>中

の<パラメタ宣言>の個数とする。 

(12) <パラメタ宣言>の指定は,次のとおりとする。 

(a) i番目の<パラメタ宣言>が<反復句>を含むならば,i番目のパラメタは,同じデータ項目実現値

数をもつ配列でなければならない。 

(b) i番目の<パラメタ宣言>がRECORD<パラメタ宣言>ならば,i番目のパラメタの型は,長さ18

の文字列の単一の実現値を定義しなければならない。 

(c) i番目の<パラメタ宣言>がSTATUS<パラメタ宣言>ならば,i番目のパラメタの型は,長さ5の

文字列の単一の実現値を定義しなければならない。 

(d) i番目の<パラメタ宣言>がTEST<パラメタ宣言>ならば,i番目のパラメタの型は,長さ1の文

字列の単一の実現値を定義しなければならない。 

(13) <手続>のi番目の<パラメタ>がそれぞれRECORD,STATUS又はTEST<パラメタ宣言>ならば,

その<手続>の呼出しで与えられるi番目のパラメタは,RECORDパラメタ,STATUSパラメタ又は

TESTパラメタとして参照される。 

(14) <手続>の主体<言語句>は,その<手続>を含む<モジュール>の<言語句>とする。 

(15) 主体<言語句>の指定によって,次のとおりとする。 

(15.1) 主体<言語句>がCOBOLを指定するならば,次のとおりとする。 

(15.1.1) <パラメタ宣言>中のどの<データ型>もCHARACTER又はNUMERICのいずれかを指定しな

ければならない。 

(15.1.2) i番目の<パラメタ宣言>がある<長さ>Lに対してCHARACTER Lである<データ型>を指定

するならば,i番目のパラメタの型は,Lの長さをもつCOBOLの英数字でなければならない。 

(15.1.3) i番目の<パラメタ宣言>がある<精度>P及び<位取り>Sに対してNUMERIC P Sである<デ

ータ型>を指定するならば,i番目のパラメタの型は,COBOLの用途がDISPLAYであり符号が

LEADING SEPARATEをもち,かつ,次のPICTUREでなければならない。 

(a) S>Pならば,1個の “S” ,1個の “V” ,S-P個の “P” ,P個の “9” が続くPICTURE 

(b) S=Pならば,1個の “S” ,1個の “V” ,P個の “9” が続くPICTURE 

(c) P>S>0ならば,1個の “S” ,P-S個の “9” ,1個の “V” ,S個の “9” が続くPICTURE 

(d) S=0ならば,1個の “S” ,P個の “9” ,1個の “V” が続くPICTURE (e) S<0ならば,1個の “S” ,

P個の “9” ,abs (S) 個の “P” が続くPICTURE 

(15.2) 主体<言語句>がFORTRANを指定するならば,次のとおりとする。 

(15.2.1) <パラメタ宣言>中のどの<データ型>もCHARACTER,INTEGER,REAL又はDOUBLE 

PRECISIONのいずれかを指定しなければならない。 

(15.2.2) i番目の<パラメタ宣言>がある<長さ>Lに対してCHARACTER Lである<データ型>を指定

するならば,i番目のパラメタの型は,Lの長さをもつFORTRANのCHARACTERでなければなら

ない。 

(15.2.3) i番目の<パラメタ宣言>がINTEGER,REAL又はDOUBLE PRECISIONの<データ型>を指定

するならば,i番目のパラメタの型は,それぞれ,FORTRANのINTEGER,REAL又はDOUBLE 

36 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

PRECISIONでなければならない。 

(15.3) 主体<言語句>がPASCALを指定するならば,次のとおりとする。 

(15.3.1) <パラメタ宣言>中のどの<データ型>もCHARACTER,INTEGER又はREALのいずれかを指

定しなければならない。 

(15.3.2) i番目の<パラメタ宣言>がある<長さ>Lに対してCHARACTER Lである<データ型>を指定

するならば,i番目のパラメタの型は,Lの長さをもつPascalの文字列でなければならない。 

(15.3.3) i番目の<パラメタ宣言>がINTEGER又はREALの<データ型>を指定するならば,i番目のパ

ラメタの型は,それぞれPascalのINTEGER又はREALでなければならない。 

(15.4) 主体<言語句>がPLIを指定するならば,次のとおりとする。 

(15.4.1) <パラメタ宣言>中のどの<データ型>もCHARACTER,FIXED又はFLOATのいずれかを指定

しなければならない。 

(15.4.2) i番目の<パラメタ宣言>がある<長さ>Lに対してCHARACTER Lである<データ型>を指定

するならば,i番目のパラメタの型は,Lの長さをもつPL/IのCHARACTERでなければならない。 

(15.4.3) i番目の<パラメタ宣言>がある<精度>P及び<位取り>Sに対してFIXED P Sである<データ

型>を指定するならば,i番目のパラメタの型はPL/IのFIXED REAL DECIMAL (P, S) でなければな

らない。 

(15.4.4) i番目の<パラメタ宣言>がある<精度>Pに対してFLOAT Pである<データ型>を指定するな

らば,i番目のパラメタの型は,PL/IのFLOAT REAL BINARY (P) でなければならない。 

8.4.4 

一般規則 一般規則は,次による。 

(1) <手続>は,処理系作成者の定義する方法によって呼び出される手続を定義する。 

(2) <手続>がプログラムによって呼び出されるとき, 

(2.1) トランザクションがそのプログラムに対して活動していないならばトランザクションを開始する。

そして,そのプログラムがそのトランザクションを終了させるまでこの呼出しと後続の呼出しとを

このトランザクションと結合する。これらの呼出しは,この呼出しで呼び出された手続を含む<モ

ジュール>に含まれるどの<手続>であってもよい。 

(2.2) <手続>が一つ以上の<NDL文>のリストを含むならば,そのリスト中の各<NDL文>を左から

右へ,各<NDL文>の一般規則に規定されるように実行する。 

(3) <手続>中の<パラメタ宣言>の<パラメタ名>は,<手続>中のその<パラメタ宣言>を指す。 

(4) <手続>中の任意の<NDL文>の実行がデッドロックのために完了できないならば,手続:デッドロ

ックが発生したの例外を発生させる。 

(5) <手続>中の<NDL文>の実行の結果は,次のとおりとする。 

(5.1) <手続>中のどの<NDL文>の実行の間にも例外が発生しなければ,次のとおりとする。 

(5.1.1) <手続>がSTATUS<パラメタ宣言>を含むならば,STATUSパラメタの値を“13.状態コード”中

の手続:正常に対して指定される値に設定する。 

(5.1.2) <手続>がRECORD<パラメタ宣言>を含むならば,次のとおりとする。 

(a) <セション位置指示子>の<データベースキー>がナルでなければ,RECORDパラメタの値をその

<データベースキー>によって参照されるレコードの<レコード型>を示す<レコードビュー名>

に設定する。 

(b) <セション位置指示子>の<データベースキー>がナルならば,RECORDパラメタの値をすべて空

白文字に設定する。 

37 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

(5.2) <手続>中の任意の<NDL文>の実行の間に例外が発生するならば,次のとおりとする。 

(5.2.1) <手続>の実行によりデータベースに対してなされたすべての変更を無効にする。 

(5.2.2) <手続>の実行により<セション状態>に対してなされたすべての変更を無効にする。 

(5.2.3) <手続>がSTATUS<パラメタ宣言>を含むならば,STATUSパラメタの値を,“12.状態コード”中

の例外に対して指定される値を設定する。 

(5.2.4) <手続>がTEST<パラメタ宣言>を含むならば,TESTパラメタの値を “0” に設定する。 

9. データ操作言語 

9.1 

<COMMIT文> 

9.1.1 

機能 コミットで現行トランザクションを終了させる。 

9.1.2 

形式 形式は,次による。 

<COMMIT文> ::= 

COMMIT [FINISH] 

9.1.3 

構文規則 構文規則は,次による。 

なし。 

9.1.4 

一般規則 一般規則は,次による。 

(1) 現行トランザクションを終了させる。 

(2) 現行トランザクションによってなされたすべてのデータベースの変更を,同時実行中のセションに利

用可能にする。 

(3) <一時親子集合群>中の各<一時親子集合>に対して,その親子集合の親子関係から各子レコードを

切り離す。 

(4) 主体<サブスキーマ>に対して,<位置指示子群>を初期<位置指示子群>に設定する。 

(5) FINISHを指定すると,<準備リスト>を空にする。 

9.2 

<CONNECT文> 

9.2.1 

機能 親子集合中にレコード実現値の親子関係を確立する。 

9.2.2 

形式 形式は,次による。 

<CONNECT文> ::= 

CONNECT<データベースキー識別子>TO<親子集合ビュー名> 

9.2.3 

構文規則 構文規則は,次による。 

(1) 適正な<レコード型>は,<親子集合ビュー名>で指される<親子集合型>の子<レコード型>とし

て定義され,更にその<親子集合型>で<組入れ句>にMANUALと指定しているか,<保存句>に

OPTIONALと指定している<レコード型>とする。 

(2) <データベースキー識別子>が<レコードビュー名>を指定するならば,その<レコードビュー名>

は,適正な<レコード型>を指さなければならない。 

9.2.4 

一般規則 一般規則は,次による。 

(1) 対象<データベースキー>は,<データベースキー識別子>によって参照される<データベースキー

>とする。その<データベースキー>がナルならば,CONNECT:データベースキーはナルであるの

例外を発生させる。 

対象<レコード型>は,対象<データベースキー>によって参照される<レコード型>とする。 

(2) 対象<レコード型>は,<レコードビュー名>が,UPDATEの<アクセス目的 (access intent)>をもつ

38 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

<準備リスト>中の<準備指定>を指さないならば,CONNECT:レコードは更新用として準備され

ていないの例外を発生させる。 

(3) 対象<レコード型>が適正な<レコード型>でないならば,CONNECT:不適正なレコード型である

の例外を発生させる。 

(4) <組入れ操作>は,次のとおりに実行する。対象<データベースキー>を<組入れレコード>とし,

<CONNECT文>の<親子集合ビュー名>を<組入れ親子集合型>とし,<CONNECT文>の<親子

集合ビュー名>によって指される<親子集合位置指示子>の<親レコード>の<データベースキー>

を<組入れ親子集合親レコード>とし,そして更新を<組入れ用位置指示子処置>とする。 

9.3 

<DISCONNECT文> 

9.3.1 

機能 指定される<親子集合型>の親子関係からレコードを切り離す。 

9.3.2 

形式 形式は,次による。 

<DISCONNECT文> ::= 

DISCONNECT <データベースキー識別子> FROM <親子集合ビュー名> 

9.3.3 

構文規則 構文規則は,次による。 

(1) 適正な<レコード型>は,<親子集合ビュー名>で指される<親子集合型>の子<レコード型>とし

て定義され,更にその<親子集合型>で<保存句>にOPTIONALと指定している<レコード型>とす

る。 

(2) <データベースキー識別子>が<レコードビュー名>を指定するならば,その<レコードビュー名>

は,適正な<レコード型>を指さなければならない。 

9.3.4 

一般規則 一般規則は,次による。 

(1) 対象<データベースキー>は,<データベースキー識別子>によって参照される<データベースキー

>とする。その<データベースキー>がナルならば,DISCONNECT:データベースキーはナルであ

るの例外を発生させる。 

対象<レコード型>は,対象<データベースキー>により参照される<レコード型>とする。 

(2) 対象<レコード型>の<レコードビュー名>がUPDATEの<アクセス目的>をもつ<準備リスト>

中の<準備指定>を指定しないならば,DISCONNECT:レコードは更新用として準備されていない

の例外を発生させる。 

(3) 対象<レコード型>が適正な<レコード型>でないならば,DISCONNECT:不適正なレコード型で

あるの例外を発生させる。 

(4) 対象<データベースキー>を<切離しレコード>とし,<DISCONNECT文>の<親子集合ビュー名

>を<切離し親子集合型>として,<切離し操作>を実行する。 

9.4 

<ERASE文> 

9.4.1 

機能 データベースから一つ以上のレコードを取り去る。 

9.4.2 

形式 形式は,次による。 

<ERASE文> ::= 

ERASE <データベースキー識別子> WITH <波及指定> 

<波及指定> ::= 

FULL CASCADE|PARTIAL CASCADE 

9.4.3 

構文規則 構文規則は,次による。 

なし。 

39 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

9.4.4 

一般規則 一般規則は,次による。 

(1) 対象<データベースキー>は,<データベースキー識別子>によって参照される<データベースキー

>とする。<データベースキー>がナルならば,ERASE:データベースキーがナルであるの例外を発

生させる。 

対象レコードは,対象<データベースキー>によって参照されるレコードとする。 

対象<レコード型>は,対象レコードの<レコード型>とする。 

(2) 対象<レコード型>の<レコードビュー名>がUPDATEの<アクセス目的>をもつ<準備リスト>

中の<準備指定>を指さないならば,ERASE:レコードは更新用として準備されていないの例外を発

生させる。 

(3) 対象レコードが現在,子レコードとなっている各<親子集合型>に対して,<切離しレコード>を対

象<データベースキー>とし,<切離し親子集合型>を<親子集合型>の<親子集合名>として,<

切離し操作>を実行する。 

(4) 影響を受ける親子集合は,対象レコードを親レコードとする親子集合とする。影響を受けるレコード

は,一つ以上の影響を受ける親子集合の子レコードとする。 

(5) <波及指定 (cascade specification)>の結果は,次のとおりとする。 

(5.1) <波及指定>がFULL CASCADEを指定するならば,すべての影響を受けるレコードを消去する。 

(5.2) <波及指定>がPARTIAL CASCADEを指定するならば,次のとおりとする。 

(a) 影響を受ける親子集合が準固定子レコードを含むならば,ERASE:親子集合が準固定子レコードを

もつの例外を発生させる。 

(b) 影響を受ける親子集合の固定子レコードを消去する。 

(c) 影響を受ける親子集合の任意子レコードに対し,影響を受けるレコードの<データベースキー>を

<切離しレコード>とし,影響を受ける親子集合の<親子集合型>の<親子集合名>を<切離し親

子集合型>として,<切離し操作>を実行する。 

(6) 対象レコードを消去する。処理系作成者の定義による順序基準のもとでは,他のレコード実現値の相

対順序は変わらない。 

(7) <セション位置指示子>の<データベースキー>が対象レコードの<データベースキー>に等しいな

らば,<セション位置指示子>をナルに設定する。 

<レコード位置指示子>の<データベースキー>が対象レコードの<データベースキー>に等しい

ならば,その<レコード位置指示子>の<データベースキー>をナルに設定する。 

対象レコードの<データベースキー>がいずれかの<親子集合位置指示子>の<親レコード>に等

しいならば,<親レコード>とその<親子集合位置指示子>の<位置>の両方をナルに設定する。 

(8) 各消去されるレコードに対し,あたかもそれが対象レコードであるかのように<ERASE文>の一般規

則(3)〜(8)を適用する。 

9.5 

<FIND文> 

9.5.1 

機能 データベース中のレコードを選択する。 

9.5.2 

形式 形式は,次による。 

<FIND文> ::= 

FIND 

<位置決め指定> 

[<位置決め目的>] 

40 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

[<位置決め用位置指示子処置>] 

<位置決め指定> ::= 

<データベースキー識別子> 

|<探索指定> 

<探索指定> ::= 

<探索方向> 

<域指定> 

[WHERE<条件>] 

<探索方向> ::= 

FIRST|LAST|NEXT|PRIOR| 

|{ABSOLUTE|RELATIVE}<符号付き整数> 

<域指定> ::= 

<レコード型域> 

|<親子集合域> 

|<サブスキーマ域> 

<レコード型域> ::= 

<レコードビュー名> 

<親子集合域> ::= 

[<レコードビュー名>] IN <親子集合ビュー名> 

<サブスキーマ域> ::= 

SUBSCHEMA RECORD 

<位置決め目的> ::= 

FOR {RETRIEVE|UPDATE} 

<位置決め用位置指示子> ::= 

RETAIN ALL 

|<位置決め処置> 

<位置決め処置> ::= 

[<子レコード扱い>] 

[<位置決め保存>] 

<子レコード扱い> ::= 

AS MEMBER<親子集合ビュー名>… 

<位置決め保存> ::= 

RETAIN RECORD 

|RETAIN SET<親子集合ビュー名>… 

|RETAIN RECORD SET<親子集合ビュー名>… 

9.5.3 

構文規則 構文規則は,次による。 

(1) <位置決め指定>が<探索指定>ならば,次のとおりとする。 

(1.1) <探索方向>が<符号付き整数>を含むならば,その<符号付き整数>は,0であってはならない。 

(1.2) <域指定>によって,次のとおりとする。 

(1.2.1) <域指定>が<レコード型域>ならば,<探索指定>の対象<レコード型>は,<域指定>に含ま

41 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

れる<レコードビュー名>によって指される<レコード型>とする。 

(1.2.2) <域指定>が<親子集合域>ならば,次のとおりとする。 

(a) <域指定>の対象<親子集合型>は,<親子集合ビュー名>によって指される<親子集合型>とす

る。 

(b) <探索指定>がWHERE<条件>を含み,対象<親子集合>が複数の子<レコード型>を含むなら

ば,<親子集合型域>は,<レコードビュー名>を指定しなければならない。 

<親子集合域>が<レコードビュー名>を指定するならば,<レコードビュー名>によって指さ

れる<レコード型>は,対象<親子集合型>の子<レコード型>でなければならない。その<レコ

ード型>は,<探索指定>の対象<レコード型>とする。 

<親子集合域>が<レコードビュー名>を指定しないならば,<探索指定>の対象<レコード型

>は,対象<親子集合型>の子<レコード型>であるすべてのサブスキーマ<レコード型>とする。 

(1.2.3) <域指定>が<サブスキーマ域>ならば,次のとおりとする。 

(a) <探索指定>の対象<レコード型>は,主体<サブスキーマ>の<レコードビュー>によって指定

される<レコード型>とする。 

(b) <探索指定>がWHERE<条件>を含むならば,主体<サブスキーマ>は,唯一の<レコードビュ

ー>を含まなければならない。 

(1.3) <探索指定>がWHERE<条件>を含むならば,<条件>中の各<構成要素ビュー識別子>の該当

<レコード型>は,対象<レコード型>とする。 

(2) <位置決め用位置指示子処置(find cursor disposition)>に含まれるいずれの<親子集合ビュー名>もそ

の<位置決め用位置指示子処置>内の他のいずれの<親子集合ビュー名>とも異ならなければならな

い。 

(3) <子レコード扱い(position member)>に含まれる<親子集合ビュー名>は,その親<レコード型>に等

しい子<レコード型>をもつ<親子集合型>を指さなければならない。 

(4) <位置決め目的>が省略されるならば,FOR RETRIEVALを想定する。 

9.5.4 

一般規則 一般規則は,次による。 

(1) <位置決め指定>によって,次のとおりに決定されるデータベース中の特定のレコード実現値を位置

決めする。 

(1.1) <位置決め指定>が<データベースキー識別子>ならば, 

(1.1.1) 対象<データベースキー>は,<データベースキー識別子>によって参照される<データベースキ

ー>とする。 

(1.1.2) 対象<データベースキー>がナルならば,FIND:データベースキーはナルであるの例外を発生させ

る。 

(1.1.3) 対象<データベースキー>によって参照されるレコードを選択する。 

(1.2) <位置決め指定>が<探索指定>ならば, 

(1.2.1) <域指定>によって,次のとおりとする。 

(1.2.1.1) <域指定>が<レコード型域>ならば,<探索指定>の域は,<探索指定>の対象<レコード型

>のすべてのレコード実現値からなる。域中でのレコード実現値の順序は,処理系作成者の定義に

よる。この順序は,トランザクション内再生可能要求に従うが,トランザクション間では異なって

もよい。<探索指定>の対象位置は,<レコードビュー名>によって指される<レコードビュー名

指示子>の<データベースキー>とする。 

42 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

(1.2.1.2) <域指定>が<親子集合域>ならば,次のとおりとする。 

(a) <親子集合域>の対象<親子集合位置指示子>は,<親子集合ビュー名>で指される<親子集合位

置指示子>とする。 

(b) 対象<親子集合型>が特異ならば,<親子集合域>の対象親子集合は,データベース中の対象<親

子集合型>の唯一の実現値とする。 

対象<親子集合型>が特異でないならば,<親子集合域>の対象親子集合は対象<親子集合位置

指示子>の<親レコード>の<データベースキー>によって参照される親子集合とする。その<デ

ータベースキー>がナルならば,FIND:データベースキーはナルであるの例外を発生させる。 

(c) <探索指定>の域は,対象親子集合の子レコードであるすべてのレコード実現値からなる。域中の

レコード実現値の順序は,対象<親子集合型>に対する順序基準によって決定される。 

(d) <探索指定>の対象位置は,対象<親子集合位置指示子>の<位置>とする。 

(1.2.1.3) <域指定>が<サブスキーマ域>ならば,<探索指定>の域は,対象<レコード型>のすべての

レコード実現値からなる。域中のレコード実現値の順序は,処理系作成者の定義による。この順序

は,トランザクション内では再生可能要求に従うが,トランザクション間では異なってもよい。 

<探索指定>の対象位置は,<セション位置指示子>の<データベースキー>とする。 

(1.2.2) <探索方向>が<符号付き整数>を含むとき,iをその<符号付き整数>の値とする。<探索方向>

がFIRST又はNEXTを指定するならば,iを+1とする。<探索方向>がLAST又はPRIORを指定

するならば,iを−1とする。 

(1.2.3) NEXT,PRIOR又はRELATIVEが指定され,iの値が正(負)ならば,次のとおりとする。 

(1.2.3.1) 対象位置がナルでない単一の<データベースキー>ならば,その<データベースキー>で参照さ

れるレコード,及びそのレコードの前(後)に位置するすべてのレコード実現値を域から除く。 

(1.2.3.2) 対象位置が対の<データベースキー>で,2番目(1番目)の<データベースキー>がナルでない

ならば,その<データベースキー>で参照されるレコードの前(後)に位置するすべてのレコード

実現値を域から除く。 

(1.2.3.3) 対象位置が対の<データベースキー>で,2番目(1番目)の<データベースキー>がナルならば,

すべてのレコード実現値を域から除く。 

(1.2.4) <レコードビュー名>を含む<親子集合域>が指定されるなら,対象<レコード型>以外のすべて

のレコード実現値を域から除く。 

(1.2.5) <探索指定>が<条件>を含むならば,域中の各レコード実現値に対して,次のとおりとする。 

(1.2.5.1) <条件>中の各<構成要素ビュー識別子>の該当<データベースキー>は,レコード実現値の<

データベースキー>とする。 

(1.2.5.2) レコード実現値に対して,その<条件>を評価する。 

(1.2.5.3) <条件>が偽ならば,レコード実現値を域から除く。 

(1.2.6) nを域中の残っているレコード実現値の数とする。iの値が正ならばjをiとする。そうでなければ

jをn+i+1とする。 

jが1以上n以下ならば,域のj番目のレコード実現値を選択する。そうでなければ,FIND:レ

コードが見つからなかったの例外を発生させる。 

(2) 選択されたレコードの<レコードビュー名>が<準備リスト>中の<準備指定>を指さないならば,

FIND:レコードが準備されていないの例外を発生させる。その<準備指定>の<アクセス目的>が

RETRIEVEで<位置決め目的>がUPDATEを指定するならば,FIND:レコードが更新用として準備

43 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

されていないの例外を発生させる。 

(3) <セション位置指示子>の<データベースキー>を選択させたレコードの<データベースキー>とす

る。 

(4) <位置決め用位置指示子処置>がALLもRECORDのいずれも指定しないならば,選択されたレコー

ドの<レコードビュー名>によって指される<レコード位置指示子>の<データベースキー>を選択

されたレコードの<データベースキー>とする。 

(5) <位置決め用位置指示子処置>がALLを指定しないならば,<位置決め用位置指示子処置>中の<位

置決め保存>に指定されていない<親子集合ビュー名>の各<親子集合位置指示子>に対して,次の

とおりとする。 

(5.1) 選択されたレコードの<レコード型>が<親子集合位置指示子>の<親子集合型>の親<レコード

型>であり,<親子集合位置指示子>を指す<親子集合ビュー名>が,<子レコード扱い>に指定

されないならば,その<親子集合位置指示子>の<親レコード>を選択されたレコードの<データ

ベースキー>に設定し,その<親子集合位置指示子>の<親子集合位置指示子>の<位置>をナル

に設定する。 

(5.2) <親子集合位置指示子>の<親子集合ビュー名>が<子レコード扱い>で指定され,選択されたレ

コードがその<親子集合ビュー名>によって指される<親子集合型>のどの親子集合実現値の子レ

コードでもないならば,FIND:レコードが見つからなかったの例外を発生させる。 

(5.3) 選択されたレコードが<親子集合位置指示子>の<親子集合ビュー名>によって指される<親子集

合型>の親子集合実現値の子レコードであるとき,選択されたレコードの<レコード型>が,その

<親子集合型>の親<レコード型>でないか,又は<親子集合位置指示子>の<親子集合ビュー名

>が<子レコード扱い>に指定されるかのどちらかならば,次のとおりとする。 

(5.3.1) <親子集合位置指示子>の<位置>を選択されたレコードの<データベースキー>に設定する。 

(5.3.2) その<親子集合型>が特異<親子集合型>でないならば,<親子集合位置指示子>の<親レコード

>を,その親子集合実現値の親レコード実現値の<データベースキー>に設定する。 

(5.4) そうでなければ,<親子集合位置指示子>を更新しない。 

9.6 

<GET文> 

9.6.1 

機能 パラメタの値を選択されるレコード実現値の構成要素の値に設定する。 

9.6.2 

形式 形式は,次による。 

<GET文> ::= 

GET <パラメタ転送> 

9.6.3 

構文規則 構文規則は,次による。 

なし。 

9.6.4 

一般規則 一般規則は,次による。 

(1) 対象レコードは,<パラメタ転送>の<レコードビュー名>によって指される<レコード位置指示子

>の<データベースキー>で参照されるレコードとする。その<データベースキー>がナルならば,

GET:レコード位置指示子はナルであるの例外を発生させる。 

(2) <パラメタ転送句>中の各<構成要素ビュー識別子>の該当<データベースキー>は,対象レコード

の<データベースキー>とする。 

(3) <パラメタ転送>中のすべての<オペランド>を評価する。 

(4) <パラメタ転送>中の各<パラメタ転送句>に対して,左から右へ,次のとおり実行する。 

44 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

(a) <パラメタ転送句>によって指定されるデータ転送を実行する。 

(b) <パラメタ転送句>に対してデータ転送を実行中に,例外が発生するならば,その<パラメタ転送

句>によって指されるパラメタに値を代入せず,<パラメタ転送>の後続するどの<パラメタ転送

句>も実行せず,実行されている前の<パラメタ転送句>の効果を保持する。 

(5) <セション位置指示子>の<データベースキー>を対象レコードの<データベースキー>に設定する。 

9.7 

<MODIFY文> 

9.7.1 

機能 レコード実現値中の一つ以上のデータ項目の内容を置き換える。 

9.7.2 

形式 形式は,次による。 

<MODIFY文> ::= 

MODIFY <データベース転送> 

9.7.3 

構文規則 構文規則は,次による。 

なし。 

9.7.4 

一般規則 一般規則は,次による。 

(1) 対象<レコードビュー名>は,<データベース転送>の<レコードビュー名>とする。対象<レコー

ド型>は,対象<レコードビュー名>によって指される<レコード型>とする。 

(2) 対象<レコードビュー名>がUPDATEの<アクセス目的>をもつ<準備リスト>中の<準備指定>

を指さないならば,MODIFY:レコードが更新用に準備されていないの例外を発生させる。 

(3) 対象レコードは,対象<レコードビュー名>で指される<レコード位置指示子>の<データベースキ

ー>によって参照されるレコードとする。その<データベースキー>がナルならば,MODIFY:レコ

ード位置指示子はナルであるの例外を発生させる。 

(4) 変更されるデータ項目は,<データベース転送>の目標識別子中の<構成要素ビュー識別子>によっ

て指される任意のデータ項目とする。 

(5) <データベース転送>中の各<構成要素ビュー識別子>の該当<データベースキー>は,対象レコー

ドの<データベースキー>とする。 

(6) <データベース転送>中のすべての<オペランド>を評価する。 

(7) <データベース転送>中の各<データベース転送句>に対して,<データベース転送>中の各<デー

タベース転送句>によって指定されるデータ転送を実行する。 

(8) 対象<レコード型>が子<レコード型>である各<親子集合型>に対して,対象<子レコード句>を

子<レコード型>が対象<レコード型>であるその<親子集合型>の<子レコード句>とする。対象

<子レコード句>の<組入れ句>がSTRUCTURALを指定し,かつ変更されるデータ項目が,その<

組入れ句>中の<子レコード構成要素識別子>として指定されている<構成要素識別子>によって参

照されるならば,次のとおりとする。 

(8.1) 対象レコードの<データベースキー>を<切離しレコード>とし,<親子集合型>の<親子集合ビ

ュー名>を<切離し親子集合型>として,<切離し操作>を実行する。 

(8.2) Dを<親子集合型>の親<レコードビュー名>によって指される<レコード型>の実現値のデータ

ベースキーとする。ここでこの<親子集合型>は,<組入れ句>の<構成要素識別子一致>の<親

レコード構成要素識別子>によって参照される各データ項目に対し対象レコード中のデータ項目の

値に等しい値をもつものとする。ここで,更にこの対象レコードは,<構成要素識別子一致>の<

子レコード構成要素識別子>によって参照されるものとする。そのようなレコード実現値が存在し

ないならば,MODIFY:親子集合組入れに際し構成要素一致が図れなかったの例外を発生させる。 

45 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

(8.3) 対象レコードの<データベースキー>を<組入れレコード>とし,<親子集合型>の<親子集合名

>を<組入れ親子集合型>とし,<データベースキー>Dを<組入れ親レコード>とし,保存を<

組入れ用位置指示子処置>として<組入れ操作>を実行する。 

(8.4) 対象<子レコード句>の<保存句>がFIXEDを指定し,対象レコードが組み入れられた親子集合実

現値が,対象レコードが切り離された親子集合実現値でないならば,MODIFY:保存が固定である

の例外を発生させる。 

(9) 対象レコードが,一般規則(8)が適用されない<親子集合型>の親子集合の子レコードに現在なってお

り,更に変更される構成要素が,<親子集合型>の<キー句>中の<構成要素識別子>によって指さ

れるならば,次のとおりとする。 

(9.1) 対象レコードの<データベースキー>を<切離しレコード>とし,<親子集合型>の<親子集合名

>を<切離し親子集合型>として<切離し操作>を実行する。 

(9.2) 対象レコードの<データベースキー>を<組入れレコード>とし,<親子集合型>の<親子集合名

>を<組入れ親子集合型>とし,保存を<組入れ用位置指示子処置>とし,かつ,次のとおりとす

る。 

(a) <親子集合型>が特異<親子集合型>ならば,ナルを<組入れ親レコード>として<組入れ操作>

を実行する。 

(b) <親子集合型>が特異<親子集合型>でないならば,対象レコードが切り離された親子集合の親レ

コードの<データベースキー>を<組入れ親レコード>として<組入れ操作>を実行する。 

(10) <MODIFY文>の実行が,<レコード一意性句>,<子レコード一意性句>,<キー句>又は<順序

句>に違反するならば,MODIFY:重複は禁止されているの例外を発生させる。それが<レコード検

査句>に違反するならば,MODIFY:子レコード検査に違反したの例外を発生させる。それが<子レ

コード検査句>に違反するならば,MODIFY:子レコード検査に違反したの例外を発生させる。 

9.8 

<NULLIFY文> 

9.8.1 

機能 参照される位置指示子をナルに設定する。 

9.8.2 

形式 形式は,次による。 

<NULLIFY文> ::= 

NULLIFY <データベースキー識別子> 

9.8.3 

構文規則 構文規則は,次による。 

なし。 

9.8.4 

一般規則 一般規則は,次による。 

(1) <データベースキー識別子>の指定は,次のとおりとする。 

(a) <データベースキー識別子>がSESSIONを指定するならば,<セション位置指示子>の<データ

ベースキー>をナルに設定する。 

(b) <データベースキー識別子>が<レコードビュー名>を指定するならば,<NULLIFY文>の<レコ

ードビュー名>によって指される<レコード位置指示子>の<データベースキー>をナルに設定す

る。 

(c) <データベースキー識別子>がOWNERを指定するならば,<親レコード>及び<NULLIFY文>

の<親子集合ビュー名>によって指される<親子集合位置指示子>の<位置>の両方をナルに設定

する。 

(d) <データベースキー識別子>がMEMBERを指定するならば,<NULLIFY文>の<親子集合ビュー

46 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

名>によって指される<親子集合位置指示子>の<位置>をナルに設定する。 

9.9 

<READY文> 

9.9.1 

機能 処理のために一つ以上の<レコード型>を準備する。 

9.9.2 

形式 形式は,次による。 

<READY文> ::= 

READY <準備指定>… 

<準備指定> ::= 

<レコードビュー名> 

<共用指定> 

<アクセス目的> 

<共用指定> ::= 

EXCLUSIVE|PROTECTED|SHARED 

<アクセス目的> ::= 

RETRIEVE|UPDATE 

9.9.3 

構文規則 構文規則は,次による。 

(1) <READY文>で,同じ<レコードビュー名>を複数個指定してはならない。 

9.9.4 

一般規則 一般規則は,次による。 

(1) <READY文>中の<レコードビュー名>が<準備リスト>中の<準備指定>を指すならば,

READY:レコードは既に準備されているの例外を発生させる。 

(2) 次のいずれかの条件が真ならば,READY:ロックが競合したの例外を発生させる。 

(a) <準備指定>がEXCLUSIVEである<共用指定>をもち,更に同時実行中の<セション状態>の<

準備リスト>に含まれている<レコードビュー名>をもつ。 

(b) いずれかの<レコードビュー名>が同時実行中の<セション状態>の<準備リスト>に含まれてい

て,しかもその<共用指定>がEXCLUSIVEである。 

(c) <準備指定>がSHAREDである<共用指定>とUPDATEである<アクセス目的>をもち,更に同

時実行中の<セション状態>の<準備リスト>に指定されていて,しかもその<共用指定>が

PROTECTEDである<レコードビュー名>をもつ。 

(d) <準備指定>がPROTECTEDである<共用指定>とUPDATEである<アクセス目的>をもち,更

に同時実行中の<セション状態>の<準備リスト>に指定されていて,しかもその<共用指定>が

PROTECTEDであるか,又はその<アクセス目的>がUPDATEである<レコードビュー名>をもつ。 

(e) <準備指定>がPROTECTEDである<共用指定>とRETRIEVEである<アクセス目的>をもち,

更に同時実行中の<セション状態>の<準備リスト>に指定されていて,しかもその<アクセス目

的>がUPDATEである<レコードビュー名>をもつ。 

(3) <準備指定>を<セション状態>の<準備リスト>に付け加える。 

(4) <準備指定>の<レコードビュー名>は,その<準備指定>を指す。 

9.10 <RECONNECT文> 

9.10.1 機能 <親子集合>中のレコード実現値の親子関係を変更する。 

9.10.2 形式 形式は,次による。 

<RECONNECT文> ::= 

RECONNECT <データベースキー識別子>IN<親子集合ビュー名> 

47 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

9.10.3 構文規則 構文規則は,次による。 

(1) 適正な<レコード型>は,<親子集合ビュー名>によって指される<親子集合型>中の子<レコード

型>として定義されている<レコード型>とする。 

(2) <データベースキー識別子>が<レコードビュー名>を指定するならば,その<レコードビュー名>

は,適正な<レコード型>を指さなければならない。 

9.10.4 一般規則 一般規則は,次による。 

(1) 対象<データベースキー>は,<データベースキー識別子>によって参照される<データベースキー

>とする。その<データベースキー>がナルならば,RECONNECT:データベースキーがナルである

の例外を発生させる。 

対象<レコード型>は,対象<データベースキー>によって参照される<レコード型>とする。 

(2) 対象<レコード型>の<レコードビュー名>がUPDATEである<アクセス目的>をもつ<準備リス

ト>中の<準備指定>を指さないならば,RECONNECT:レコードは更新用として準備されていない

の例外を発生させる。 

(3) 対象<レコード型>が適正な<レコード型>でないならば,RECONNECT:不適正なレコード型であ

るの例外を発生させる。 

(4) 対象<データベースキー>を<切離しレコード>とし,<RECONNECT文>の<親子集合ビュー名>

を<切離し親子集合型>として,<切離し操作>を実行する。 

(5) <組入れ操作>は,次のとおりに実行する。 

対象<データベースキー>を<組入れレコード>とし,<RECONNECT文>の<親子集合ビュー名

>を<組入れ親子集合型>とし,<RECONNECT文>の<親子集合ビュー名>で指される<親子集合

位置指示子>の中の<親レコード>の<データベースキー>を<組入れ親レコード>とし,そして更

新を<組入れ用位置指示子処置>とする。 

(6) 対象<レコード型>が,<親子集合ビュー名>によって指される<親子集合型>では<保存句>に

FIXEDを指定してあり,かつ,対象レコードを組み入れた親子集合が,その対象レコードが切り離さ

れた元の親子集合でないならば,RECONNECT:保存が固定であるの例外を発生させる。 

9.11 <ROLLBACK文> 

9.11.1 機能 ロールバックで現行トランザクションを終了させる。 

9.11.2 形式 形式は,次による。 

<ROLLBACK文> ::= 

ROLLBACK [FINISH] 

9.11.3 構文規則 構文規則は,次による。 

なし。 

9.11.4 一般規則 一般規則は,次による。 

(1) 現行トランザクションを終了させる。そのトランザクションの間,セションによって実行されたすべ

ての文のデータベースに対する影響を取り消す。 

(2) <位置指示子群>を主体<サブスキーマ>に対する初期<位置指示子群>に設定する。 

(3) <一時親子集合群>中の各<一時親子集合>に対して,その親子集合の親子集合関係から各子レコー

ドを取り去る。 

(4) FINISHを指定すると,<準備リスト>を空にする。 

9.12 <STORE文> 

48 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

9.12.1 機能 データベースにレコードを格納する。 

9.12.2 形式 形式は,次による。 

<STORE文> ::= 

STORE <データベース転送> [<格納保存>] 

<格納保存> ::= 

RETAIN ALL 

|RETAIN RECORD 

|RETAIN SET<親子集合ビュー名>… 

|RETAIN RECORD SET<親子集合ビュー名>… 

9.12.3 構文規則 構文規則は,次による。 

(1) 対象<レコードビュー名>は,<データベース転送>の<レコードビュー名>とする。対象<レコー

ド型>は,対象<レコードビュー名>によって指される<レコード型>とする。対象<レコードビュ

ー>は,対象<レコードビュー名>によって指される<レコードビュー>とする。 

(2) 対象<レコードビュー>中の<構成要素ビュー名>によって指されない対象<レコード型>中の各<

構成要素型>は,<既定句>を含まなければならない。 

(3) <データベース転送>中の相手<構成要素ビュー識別子>の<構成要素ビュー名>によって指されな

い対象<レコード型>の各<構成要素型>は,<既定句>を含まなければならない。 

(4) 対象<レコード型>が子<レコード型>と定義されている<親子集合型>のうち,その<組入れ句>

にAUTOMATICを指定している<親子集合型>に対応する<親子集合ビュー>は,主体<サブスキー

マ>に含まれていなければならない。 

(5) <格納保存>内に含まれるいずれの<親子集合ビュー名>も,その<格納保存>内の他のいずれの<

親子集合ビュー名>とも異ならなければならない。 

(6) <格納保存>中で指定された各<親子集合ビュー名>に対して,対象<レコード型>は,その<親子

集合ビュー名>によって参照される<親子集合型>の子<レコード型>又は親<レコード型>のいず

れかでなければならない。 

9.12.4 一般規則 一般規則は,次による。 

(1) 対象<レコードビュー名>が,UPDATEである<アクセス目的>をもつ<準備リスト>中の<準備指

定>を指さないならば,STORE:レコードは更新用として準備されていないの例外を発生させる。 

(2) データベースに対象<レコード型>のレコード実現値を生成する。新しいレコード実現値は,対象レ

コードとする。対象レコードは,他のレコード実現値に対し,処理系作成者の定義する位置を想定し,

他のレコード実現値の相対順序は,変わらない(4)。 

注(4) 新しいレコード実現値の構成は,“6.8<既定句>”の一般規則で規定する。 

(3) <データベース転送句>中の各<構成要素ビュー識別子>の該当<データベースキー>は,対象レコ

ードの<データベースキー>とする。 

(4) <データベース転送>中のすべての<オペランド>を評価する。 

(5) <データベース転送>中の各<データベース転送句>に対して,<データベース転送>中の各<デー

タベース転送句>によって指定されるデータ転送を実行する。 

(6) 対象<レコード型>が親<レコード型>である各<親子集合型>に対して,子レコードをもたない親

子集合の親レコードとして対象レコードを確立する。 

(7) 対象<レコード型>が子<レコード型>である各<親子集合型>に対して,次のとおりとする。 

49 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

(7.1) 対象<子レコード句>を子<レコード型>が対象<レコード型>である<親子集合型>の<子レコ

ード句>とする。 

(7.2) <格納保存>がALLを指定しているか,又は<親子集合型>が<格納保存>中の<親子集合ビュー

名>によって指されているならば,Cを保存とする。そうでなければ,Cを更新とする。 

(7.3) <組入れ操作>は,次のとおりとする。 

(7.3.1)対象<子レコード句>の<組入れ句>にAUTOMATICが指定されているならば,<組入れ操作>は,

次のとおり実行する。 

対象レコードの<データベースキー>を<組入れレコード>とし,<親子集合型>の<親子集合

名>を<組入れ親子集合型>とし,<親子集合型>を指している<親子集合ビュー>の<親子集合

位置指示子>の<親レコード>の<データベースキー>を<組入れ親レコード>とし,そして,C

を<組入れ用位置指示子処置>とする。 

(7.3.2) 対象<子レコード句>の<組入れ句>にSTRUCTURALが指定されているならば,次のとおりとす

る。 

(a) <親子集合型>の親<レコード型>の実現値のうち,<組入れ句>の<構成要素識別子一致>の<

親レコード構成要素識別子>によって参照される各データ項目の値が,格納しようとしているレコ

ードの中の<構成要素識別子一致>の<子レコード構成要素識別子>により参照されるデータ項目

の値に等しい実現値の<データベースキー>をDとする。そのような実現値が存在しなければ,

STORE:親子集合組入れに際し構成要素一致が図れなかったの例外を発生させる。 

(b) <組入れ操作>は,次のとおりに実行する。 

対象レコードの<データベースキー>を<組入れレコード>とし,<親子集合型>の<親子集合

名>を<組入れ親子集合型>とし,<データベースキー>Dを<組入れ親レコード>とし,そして

Cを<組入れ用位置指示子処置>とする。 

(7.3.3) 対象<子レコード句>の<組入れ句>にMANUALが指定されているならば,<親子集合型>の任

意の実現値に対象レコードを組み入れない。 

(8) <セション位置指示子>を対象レコードを参照するように設定する。 

(9) <格納保存>がALLもRECORDも指定しないならば,<レコードビュー名>によって指される<レ

コード位置指示子>を対象レコードを参照できるように設定する。<格納保存>がALLを指定しない

とき,対象<レコード型>が親<レコード型>である主体<サブスキーマ>中の<親子集合ビュー>

によって指される各<親子集合型>に対して,その<親子集合型>が<格納保存>中の<親子集合ビ

ュー名>によって指されていないならば,その<親子集合型>に対する<親子集合位置指示子>の<

親レコード>を対象レコードの<データベースキー>に設定し,その<親子集合位置指示子>の<位

置>をナルに設定する。 

(10) <STORE文>の実行が,<レコード一意性句>に違反するならば,STORE:重複は禁止されている

の例外を発生させる。それが,<レコード検査句>に違反するならば,STORE:レコード検査に違反

したの例外を発生させる。 

9.13 <データベースキー等価テスト文> 

9.13.1 機能 二つのデータベースキーが同じレコードを参照するかどうかを判定する。 

9.13.2 形式 形式は,次による。 

<データベースキー等価テスト文> ::= 

TEST<オペランド1>=<オペランド2> 

50 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

<オペランド1>::=<データベースキー識別子> 

<オペランド2>::=<データベースキー識別子> 

9.13.3 構文規則 構文規則は,次による。 

なし。 

9.13.4 一般規則 一般規則は,次による。 

(1) <オペランド1>又は<オペランド2>で参照される<データベースキー>がナルならば,テスト:デ

ータベースキーがナルであるの例外を発生する。 

(2) <オペランド1>によって参照される<データベースキー>と<オペランド2>によって参照される

<データベースキー>が同じレコード実現値を参照するならば,TESTパラメタの値を1に設定する。

そうでなければ,TESTパラメタの値を0に設定する。 

9.14 <データベースキーナルテスト文> 

9.14.1 機能 <データベースキー>がナルかどうかを判定する。 

9.14.2 形式 形式は,次による。 

<データベースキーナルテスト文> ::= 

TEST NULL <データベースキー識別子> 

9.14.3 構文規則 構文規則は,次による。 

なし。 

9.14.4 一般規則 一般規則は,次による。 

(1) <データベースキー識別子>によって参照される<データベースキー>がナルならば,TESTパラメ

タの値を1に設定する。そうでなければ,TESTパラメタの値を0に設定する。 

9.15 <親子集合空テスト文> 

9.15.1 機能 親子集合が任意の子レコードをもつかどうかを判定する。 

9.15.2 形式 形式は,次による。 

<親子集合空テスト文> ::= 

TEST SET EMPTY <親子集合ビュー名> 

9.15.3 構文規則 構文規則は,次による。 

(1) 対象<親子集合型>は,<親子集合ビュー名>によって指される<親子集合型>とする。対象<親子

集合位置指示子>は,<親子集合ビュー名>によって指される<親子集合位置指示子>とする。 

9.15.4 一般規則 一般規則は,次による。 

(1) 対象親子集合の判定は,次のとおりとする。 

(1.1) 対象<親子集合型>が特異<親子集合型>ならば,対象親子集合は,対象<親子集合型>の唯一の

実現値とする。 

(1.2) 対象<親子集合型>が特異<親子集合型>でないならば,次のとおりとする。 

(a) 対象<親子集合位置指示子>の<親レコード>がナルならば,テスト:親子集合位置指示子はナル

であるの例外を発生させる。 

(b) 対象<親子集合位置指示子>の<親レコード>がナルでないならば,対象親子集合は,対象<親子

集合位置指示子>によって参照される親子集合とする。 

(2) 対象親子集合が主体<サブスキーマ>中に含まれる<レコード型>の一つ以上の子レコードをもつな

らば,TESTパラメタの値を0に設定する。そうでなければ,TESTパラメタの値を1に設定する。 

9.16 <親子関係テスト文> 

51 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

9.16.1 機能 レコードが<親子集合型>のある実現値の子レコードかどうかを判定する。 

9.16.2 形式 形式は,次による。 

<親子関係テスト文> ::= 

TEST SET <親子集合ビュー名>CONTAINS<データベースキー識別子> 

9.16.3 構文規則 構文規則は,次による。 

なし。 

9.16.4 一般規則 一般規則は,次による。 

(1) 対象<データベースキー>は,<データベースキー識別子>によって参照される<データベースキー

>とする。対象<データベースキー>がナルならば,テスト:データベースキーはナルであるの例外

を発生させる。 

(2) 対象<データベースキー>によって参照されるレコードの<レコード型>が<親子集合ビュー名>で

指される<親子集合型>の子<レコード型>として定義されていないならば,テスト:不適正なレコ

ード型であるの例外を発生させる。 

(3) 対象<データベースキー>によって参照されるレコードが<親子集合ビュー名>で指される<親子集

合型>の実現値の子レコードならば,TESTパラメタの値を1に設定する。そうでなければ,TESTパ

ラメタの値を0に設定する。 

9.17 <データベースキー識別子> 

9.17.1 機能 <データベースキー>を参照する。 

9.17.2 形式 形式は,次による。 

<データベースキー識別子> ::= 

SESSION 

|<レコードビュー名> 

|{OWNER|MEMBER}<親子集合ビュー名> 

9.17.3 構文規則 構文規則は,次による。 

(1) <データベースキー識別子>がOWNERを指定するならば,<親子集合ビュー名>によって指される

<親子集合型>は,特異<親子集合型>であってはならない。 

9.17.4 一般規則 一般規則は,次による。 

(1) <データベースキー>の参照は,次のとおりとする。 

(1.1) SESSIONを指定するならば,<データベースキー識別子>は,<セション位置指示子>の<データ

ベースキー>を参照する。 

(1.2) <レコードビュー名>を指定するならば,<データベースキー識別子>は,<データベースキー識

別子>の<レコードビュー名>によって指される<レコード位置指示子>の<データベースキー>

を参照する。 

(1.3) OWNERを指定するならば,<データベースキー識別子>は,<データベースキー識別子>の<親

子集合ビュー名>によって指される<親子集合位置指示子>の<親レコード>の<データベースキ

ー>を参照する。 

(1.4) MEMBERを指定するならば,次のとおりとする。 

(a) 対象<位置>は,<データベースキー識別子>の<親子集合ビュー名>によって指される<親子集

合位置指示子>の<位置>とする。 

(b) 対象<位置>が単一の<データベースキー>ならば,<データベースキー識別子>は,その<デー

52 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

タベースキー>を参照する。対象<位置>が対の<データベースキー>であるならば,<データベ

ースキー識別子>は,ナルを参照する。 

9.18 <構成要素ビュー識別子> 

9.18.1 機能 構成要素又はデータ項目を参照する。 

9.18.2 形式 形式は,次による。 

<構成要素ビュー識別子> ::= 

<ドット形式構成要素ビュー識別子> 

|<OF形式構成要素ビュー識別子> 

<ドット形式構成要素ビュー識別子> ::= 

[<レコードビュー名>.]<構成要素ビュー名>[<添字>][CURSOR] 

<OF形式構成要素ビュー識別子> ::= 

<構成要素ビュー名>[<添字>] 

[OF<レコードビュー名>][CURSOR] 

9.18.3 構文規則 構文規則は,次による。 

(1) <構成要素ビュー識別子>の該当<レコード型>は,<構成要素ビュー識別子>を含む<NDL文>の

構文規則で規定する。 

(2) <構成要素ビュー識別子>の指定は,次のとおりとする。 

(a) <構成要素ビュー識別子>がCURSORを指定しないならば,<構成要素ビュー識別子>は,該当<

レコード型><構成要素型>と<レコードビュー名>を指さなければならない。指定されているな

らば,該当<レコード型>を指さなければならない。<構成要素ビュー識別子>の主体<レコード

型>は,該当<レコード型>とする。 

(b) <構成要素ビュー識別子>がCURSORを指定するならば,<レコードビュー名>を指定しなければ

ならず,主体<レコードビュー>は,その<レコードビュー名>によって指される<レコードビュ

ー>とする。 

(3) <構成要素ビュー名>は,主体<レコード型>の<構成要素型>を指さなければならない。その<構

成要素型>が主体<構成要素型>である。 

(4) <構成要素ビュー識別子>が<添字>を含むならば,次のとおりとする。 

(a) 主体<構成要素型>は,配列を定義しなければならない。 

(b) <添字>の該当<反復句>は,主体<構成要素型>に含まれる<反復句>とする。 

9.18.4 一般規則 一般規則は,次による。 

(1) <構成要素ビュー識別子>の該当<データベースキー>は,<構成要素ビュー識別子>を含む文の一

般規則で規定する。 

(2) <構成要素ビュー識別子>の指定により,次のとおりとする。 

(a) <構成要素ビュー識別子>がCURSORを指定するならば,主体<データベースキー>は,<レコー

ド位置指示子>の<データベースキー>とし,その<レコードビュー名>は,主体<レコード型>

を指すものとする。その<データベースキー>がナルならば,位置指示子参照:データベースキー

がナルであるの例外を発生させる。 

(b) <構成要素ビュー識別子>がCURSORを指定しないならば,主体<データベースキー>は該当<デ

ータベースキー>とする。 

(3) <構成要素ビュー識別子>は,主体<データベースキー>によって参照されるレコード中のデータ項

53 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

目又は配列を次のとおりに参照する。 

(a) <構成要素ビュー識別子>の主体<構成要素型>がデータ項目を定義するならば,<構成要素ビュ

ー識別子>はそのデータ項目を参照する。 

(b) <構成要素ビュー識別子>の主体<構成要素型>が配列を定義し,<構成要素ビュー識別子>が<

添字>を含まないならば,<構成要素ビュー識別子>はその配列を参照する。 

(c) <構成要素ビュー識別子>の主体<構成要素型>が配列を定義し,<構成要素ビュー識別子>が<

添字>を含むならば,<構成要素ビュー識別子>は配列中のi番目のデータ項目を参照する。ここ

で,iは<添字>の値とする。 

9.19 <パラメタ識別子> 

9.19.1 機能 パラメタ項目を参照する。 

9.19.2 形式 形式は,次による。 

<パラメタ識別子> ::= 

<パラメタ名> [<添字>] 

9.19.3 構文規則 構文規則は,次による。 

(1) <パラメタ識別子>の対象<パラメタ宣言>は,<パラメタ識別子>のくパラメタ名>によって指さ

れる<パラメタ宣言>とする。 

(2) 対象<パラメタ宣言>が<反復句>を含まないならば,<添字>を指定してはならない。 

対象<パラメタ宣言>が<反復句>を含み,<添字>が指定されているならば,その<反復句>は

<添字>の該当<反復句>とする。 

9.19.4 一般規則 一般規則は,次による。 

(1) 参照は,次のとおりとする。 

(a) <添字>を指定しないと,<パラメタ識別子>は,対象<パラメタ宣言>に対応するパラメタとし

て与えられるデータ項目又は配列を参照する。 

(b) <添字>を指定すると,<パラメタ識別子>は,対象<パラメタ宣言>に対応するパラメタとして

与えられる配列中のi番目のデータ項目を参照する。ここで,iは<添字>の値とする。 

9.20 <パラメタ転送>と<データベース転送> 

9.20.1 形式 形式は,次による。 

<パラメタ転送> ::= 

<レコードビュー名><パラメタ転送句>… 

<パラメタ転送句> ::= 

SET<パラメタ識別子>TO<オペランド> 

<データベース転送> ::= 

<レコードビュー名>[<データベース転送句>…] 

<データベース転送句> ::= 

SET<構成要素ビュー識別子>TO<オペランド> 

9.20.2 構文規則 構文規則は,次による。 

(1) <パラメタ転送>に対して,相手識別子 (target identifier) は<パラメタ識別子>とする。 

<データベース転送>に対して,相手識別子は<構成要素ビュー識別子>とする。 

(2) 転送を<パラメタ転送>又は<データベース転送>のいずれかとする。 

転送句を<パラメタ転送句>又は<データベース転送句>のいずれかとする。 

54 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

(3) 転送の対象<レコード型>及び転送中の各<構成要素ビュー識別子>の該当<レコード型>は,<レ

コードビュー名>によって指される<レコード型>とする。 

(4) 源 (source)<オペランド>の型は,次のとおりとする。 

(a) 転送句の相手識別子の型が文字列ならば,源<オペランド>の型は文字列でなければならない。 

(b) 転送句の相手識別子の型が真数ならば,源<オペランド>の型は真数でなければならない。 

(c) 転送句の相手識別子の型が概数ならば,源<オペランド>の型は概数又は真数でなければならない。 

(5) 転送句の<オペランド>は,次のとおりとする。 

(a) 転送句の相手識別子がデータ項目又は配列のデータ項目を参照するならば,その転送句の<オペラ

ンド>はデータ項目でなければならない。 

(b) 転送句の相手識別子が配列を参照するならば,その転送句の<オペランド>は配列でなければなら

ない。 

(6) 相手識別子であるどの<構成要素識別子>もCURSORを指定してはならない。相手識別子である<構

成要素識別子>が<レコードビュー名>を指定するならば,その<レコードビュー名>は,<データ

ベース転送>の<レコードビュー名>と同じでなければならない。 

(7) <データベース転送>の<オペランド>中に含まれる<構成要素ビュー識別子>は,CURSORを指定

しなければならない。 

9.20.3 一般規則 一般規則は,次による。 

(1) 相手項目は,相手識別子によって参照される項目とする。源値は,源<オペランド>の値とする。 

(2) 転送の結果は,次のとおりとする。 

(2.1) 相手項目の型が長さLの文字列ならば,次のとおりとする。 

(a) 源値の長さがLならば,相手項目には源値が設定される。 

(b) 源値の長さがMで,M>Lであり,かつ源値の最後(右)のM−L文字が空白文字ならば,相手項

目には源値の最初(左)のL文字が設定される。そうでなければ,データ転送:文字列が切り詰め

られたの例外を発生させる。 

(c) 源値の長さがMで,M<Lならば,相手項目の最初(左)のM文字には源値が設定され,相手項目

の最後(右)のL−M文字には空白文字が設定される。 

(2.2) 相手項目の型が真数であり,かつ源値が相手項目のデータ型の値として厳密に表現されているなら

ば,相手項目にはその値が設定される。そうでなければ,データ転送:数値が切り詰められたの例

外を発生させる。 

(2.3) 相手項目の型が概数ならば,相手項目に源値の概数値を設定する。 

10. 補助操作 

10.1 <組入れ操作> 

10.1.1 機能 レコード実現値を親子集合中に組み入れる。 

10.1.2 形式 形式は,次による。 

<組入れ操作> ::= 

<組入れレコード> 

<組入れ親子集合型> 

<組入れ親レコード> 

<組入れ用位置指示子処置> 

55 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

<組入れレコード> ::= 

<データベースキー> 

<組入れ親子集合型> ::= 

<親子集合名>|<親子集合ビュー名> 

<組入れ親レコード> ::= 

<データベースキー> 

<組入れ用位置指示子処置> ::= 

保存|更新 

10.1.3 構文規則 構文規則は,次による。 

なし。 

10.1.4 一般規則 一般規則は,次による。 

(1) 対象レコードは,<組入れレコード>の<データベースキー>によって参照されるレコードとする。

対象<レコード型>は,対象レコードの<レコード型>とする。対象<親子集合型>は,<組入れ親

子集合型>の<親子集合名>又は<親子集合ビュー名>によって指される<親子集合型>とする。対

象<親子集合位置指示子>は,あるとすればその<親子集合ビュー名>が対象<親子集合型>を指す

<親子集合位置指示子>とする。 

(2) 対象レコードが,既に対象<親子集合型>の実現値の子レコードならば,組入れ:レコードは既に子

レコードになっているの例外を発生させる。 

(3) 対象親子集合は,次のとおりとする。 

(3.1) 対象<親子集合型>が特異<親子集合型>ならば,対象親子集合は,対象<親子集合型>の唯一の

実現値とする。 

(3.2) 対象<親子集合型>が特異<親子集合型>でないならば,対象親子集合は,<組入れ親レコード>

の<データベースキー>によって参照されるレコード実現値を親とする対象<親子集合型>の実現

値とする。その<データベースキー>がナルならば,組入れ:親子集合位置指示子がナルであるの

例外を発生させる。 

対象<親子集合型>の<順序句>がNEXT又はPRIORを指定するならば, 

(a) 対象<親子集合位置指示子>がなければ,組入れ:親子集合がサブスキーマ中にないの例外を発生

させる。 

(b) 対象親子集合が対象<親子集合位置指示子>によって参照される親子集合実現値でないならば,組

入れ:レコードが親子集合の子レコードでないの例外を発生させる。 

(4) 対象<親子集合型>の<順序句>又は<キー句>によって指定される親子集合順序基準に従って,対

象レコードを対象親子集合の子レコードとして組み入れる。対象親子集合の他の子レコードの相対順

序は変わらない。 

(5) 対象<親子集合型>の<順序句>がNEXT (PRIOR) を指定するならば,次のとおりとする。 

(5.1) 対象<親子集合位置指示子>の<位置>がナルでない単一の<データベースキー>ならば,その<

データベースキー>によって参照される子レコードの直後(前)に対象親子集合中の子レコードと

して対象レコードを組み入れる。 

(5.2) 対象<親子集合位置指示子>の<位置>がナルである単一の<データベースキー>ならば,その<

親子集合位置指示子>によって参照される親子集合実現値中の最初(最後)の子レコードとして対

象レコードを組み入れる。 

56 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

(5.3) 対象<親子集合位置指示子>の<位置>が対の<データベースキー>であり,それらの<データベ

ースキー>の最初(2番目)がナルでなければ,最初(2番目)の<データベースキー>によって参

照される子レコードの直後(前)に対象レコードを組み入れる。 

(5.4) 対象<親子集合位置指示子>の<位置>が対の<データベースキー>であり,それらの<データベ

ースキー>の最初(2番目)がナルならば,その<親子集合位置指示子>によって参照される親子

集合実現値中の最初(最後)の子レコードとして対象レコードを組み入れる。 

(6) <組入れ操作>が対象<親子集合型>中の<子レコード一意性句>,<順序句>又は<キー句>に違

反するならば,組入れ:重複は禁止されているの例外を発生させる。それによって,<子レコード検

査句>又は<組入れ句>から引き起こされる<子レコード検査句>に違反するならば,組入れ:子レ

コード検査に違反したの例外を発生させる。 

(7) 対象<親子集合位置指示子>があれば,次のとおりとする。 

(7.1) <組入れ用位置指示子処置>が更新ならば,対象<親子集合位置指示子>の<位置>には対象レコ

ードの<データベースキー>を設定する。 

(7.2) <組入れ用位置指示子処置>が保存であり,次の条件が真ならば,対象<親子集合位置指示子>の

<位置>を対象レコードの<データベースキー>に設定する。 

条件:対象<親子集合位置指示子>の<位置>が対の<データベースキー>であって,その最初

の<データベースキー>が対象親子集合中の対象レコードの直前のレコードを参照してい

るか,又は2番目の<データベースキー>が対象親子集合中の対象レコードの直後のレコ

ードを参照している。 

10.2 <切離し操作> 

10.2.1 機能 レコード実現値を親子集合から切り離す。 

10.2.2 形式 形式は,次による。 

<切離し操作> ::= 

<切離しレコード> 

<切離し親子集合型> 

<切離しレコード> ::= 

<データベースキー> 

<切離し親子集合型> ::= 

<親子集合名>|<親子集合ビュー名> 

10.2.3 構文規則 構文規則は,次による。 

なし。 

10.2.4 一般規則 一般規則は,次による。 

(1) 対象レコードは,<切離しレコード>の<データベースキー>によって参照されるレコードとする。

対象<レコード型>は,対象レコードの<レコード型>とする。対象<親子集合型>は,<切離し親

子集合型>の<親子集合名>又は<親子集合ビュー名>によって指される<親子集合型>とする。 

(2) 対象親子集合は,対象レコードが子レコードとなっている対象<親子集合型>の実現値とする。対象

レコードが対象<親子集合型>のどの実現値の子レコードにも現在なっていないならば,切離し:レ

コードは親子集合の子レコードではないの例外を発生させる。 

(3) その<親子集合ビュー名>で対象<親子集合型>を指しているような<親子集合位置指示子>があれ

ば,次のとおりである。 

57 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

(3.1) その<親子集合位置指示子>の<位置>が単一の<データベースキー>であって,対象レコードを

参照しているならば, 

(a) 対象親子集合中にその親子集合の子レコードで対象レコードの直前のレコード実現値があれば,L

をそのレコード実現値の<データベースキー>とする。そうでなければ,Lをナルにする。 

(b) 対象親子集合中にその親子集合の子レコードで対象レコードの直後のレコード実現値があれば,R

をそのレコード実現値の<データベースキー>とする。そうでなければ,Rをナルにする。 

(c) その<親子集合位置指示子>の<位置>として,<データベースキー>の組LとRを,その順番に

設定する。 

(3.2) その<親子集合位置指示子>の<位置>が対の<データベースキー>であって,最初(2番目)の

<データベースキー>が対象レコードを参照しているならば, 

(a) 対象親子集合中にその親子集合の子レコードで対象レコードの直前(直後)にレコード実現値があ

るならば,L (R) をそのレコード実現値の<データベースキー>とする。そうでなければ,L (R) を

ナルにする。 

(b) その<親子集合位置指示子>の<位置>の最初(2番目)の<データベースキー>をL (R) で置き

換える。 

(3.3) そうでなければ,その<親子集合位置指示子>に対しては何もしない。 

(4) 対象親子集合中の親子関係から対象レコードを切り離す。対象親子集合の他の子レコードの相対順序

は変わらない。 

11. 解釈上の状態 

11.1 <セション状態> 

11.1.1 形式 形式は,次による。 

<セション状態> ::= 

<位置指示子群> 

<一時親子集合群> 

<準備リスト> 

11.1.2 一般規則 一般規則は,次による。 

(1) <モジュール>に対する初期<セション状態>は,その<モジュール>に対して初期<位置指示子群

>,<モジュール>の<一時親子集合指定群>に対する初期<一時親子集合群>及び初期<準備リス

ト>を含む。 

11.2 <位置指示子群> 

11.2.1 形式 形式は,次による。 

<位置指示子群> ::= 

<セション位置指示子> 

[<レコード位置指示子>…] 

[<親子集合位置指示子>…] 

<セション位置指示子> ::= 

<データベースキー> 

<レコード位置指示子> ::= 

<レコードビュー名> <データベースキー> 

58 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

<親子集合位置指示子> ::= 

<親子集合ビュー名> 

<親レコード> 

<位置> 

<親レコード> ::= <データベースキー> 

<位置> ::= 

<データベースキー> 

|<データベースキー> <データベースキー> 

<データベースキー> ::= 

一般規則11.2.2(1)参照。 

11.2.2 一般規則 一般規則は,次による。 

(1) <データベースキー>は,データベース中の唯一のレコードを識別するか,ナルであってどのレコー

ドも識別しないかのいずれかの処理系作成者の定義による値とする。 

(2) <レコード位置指示子>の<レコードビュー名>は,その<レコード位置指示子>を指す。<親子集

合位置指示子>の<親子集合ビュー名>は,その<親子集合位置指示子>を指す。 

(3) <モジュール>に対する初期<位置指示子群>は,次を含む。 

(a) 初期<セション位置指示子> 

(b) <モジュール>の主体<サブスキーマ>の各<レコードビュー>に対する初期<レコード位置指示

子> 

(c) <モジュール>の主体<サブスキーマ>中に含まれる各<親子集合ビュー>に対する初期<親子集

合位置指示子> 

(d) <モジュール>中に含まれる各<一時親子集合指定>に対する初期<親子集合位置指示子> 

(4) 初期<セション位置指示子>は,ナルの<データベースキー>を含む。 

(5) <レコードビュー>に対する初期<レコード位置指示子>は,次を含む。 

(a) <レコードビュー>中に含まれる<レコードビュー名>に等しい<レコードビュー名> 

(b) ナルの<データベースキー> 

(6) <親子集合ビュー>に対する初期<親子集合位置指示子>は,次を含む。 

(a) <親子集合ビュー>中に含まれる<親子集合ビュー名>に等しい<親子集合ビュー名> 

(b) ナルの<データベースキー>である<親レコード> 

(c) ナルの<データベースキー>である<位置> 

(7) <一時親子集合指定>に対する初期<親子集合位置指示子>は,次を含む。 

(a) <一時親子集合指定>中に含まれる<親子集合ビュー名>に等しい<親子集合ビュー名> 

(b) ナルの<データベースキー>である<親レコード> 

(c) ナルの<データベースキー>である<位置> 

(8) <セション位置指示子>は,<セション位置指示子>の<データベースキー>によって参照されるレ

コードを参照する。 

<レコード位置指示子>は,<レコード位置指示子>の<データベースキー>によって参照される

レコードを参照する。 

<親子集合位置指示子>の<親子集合ビュー名>が特異<親子集合型>でない<親子集合型>を指

すならば,<親子集合位置指示子>は,<親子集合位置指示子>の<親レコード>の<データベース

background image

59 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

キー>によって参照されるレコード実現値を親とする親子集合を参照する。 

<親子集合位置指示子>の<親子集合ビュー名>が特異<親子集合型>を指すならば,<親子集合

位置指示子>は,データベース又は<セション状態>中のその<親子集合型>の唯一の実現値を参照

する。 

11.3 <一時親子集合群> 

11.3.1 形式 形式は,次による。 

<一時親子集合群> ::= 

[<一時親子集合>…] 

<一時親子集合> ::= 

一般規則11.3.2(1) 参照。 

11.3.2 一般規則 一般規則は,次による。 

(1) <一時親子集合>は,一時<親子集合型>の実現値とする。 

(2) <一時親子集合指定群>に対する初期<一時親子集合群>は,<一時親子集合指定群>中に定義され

た各一時<親子集合型>の空の実現値を含む。 

11.4 <準備リスト> 

11.4.1 形式 形式は,次による。 

<準備リスト> ::= 

空|<準備指定>… 

11.4.2 一般規則 一般規則は,次による。 

(1) 初期<準備リスト>は,空の状態とする。 

12. 状態コード 次の表は,各条件に対しSTATUSパラメタに返される値を規定する。NDLに対して,現

在及び将来定められる状態コードの最初(左端)の数字は,“1”以外の値でなければならず,2番目の数

字は,“0”又は“1”でなければならない。“1××××”の形式,特に“10×××”及び“11×××”の形

式の状態コードは,処理系作成者のために予約する。 

値 

条件 

01610 

配列参照:添字が境界外である。 

01810 

CONNECT:レコードは既に子レコードになっている。 

01310 

CONNECT:データベースキーはナルである。 

01330 

CONNECT:不適正なレコード型である。 

01920 

CONNECT:レコードは更新用として準備されていない。 

01310 

位置指示子参照:データベースキーはナルである。 

01410 

データ転送:文字列が切り詰められた。 

01420 

データ転送:数値が切り詰められた。 

01310 

DISCONNECT:データベースキーはナルである。 

01330 

DISCONNECT:不適正なレコード型である。 

01920 

DISCONNECT:レコードは更新用として準備されていない。 

01310 

ERASE:データベースキーはナルである。 

01920 

ERASE:レコードは更新用として準備されていない。 

01720 

ERASE:親子集合が準固定子レコードをもつ。 

01310 

FIND:データベースキーはナルである。 

00100 

FIND:レコードが見つからなかった。 

01910 

FIND:レコードは準備されていない。 

01920 

FIND:レコードは更新用として準備されていない。 

background image

60 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

値 

条件 

01320 

GET:レコード位置指示子はナルである。 

01510 

組入れ:重複は禁止されている。 

01860 

組入れ:子レコード検査に違反した。 

01810 

組入れ:レコードは既に子レコードになっている。 

01830 

組入れ:レコードは親子集合の子レコードではない。 

01340 

組入れ:親子集合位置指示子はナルである。 

01610 

組入れ:親子集合はサブスキーマ中にない。 

01320 

MODIFY:レコード位置指示子はナルである。 

01840 

MODIFY:レコード検査に違反した。 

01510 

MODIFY:重複は禁止されている。 

01860 

MODIFY:子レコード検査に違反した。 

01230 

MODIFY:親子集合組入れに際し構成要素一致が図れなかった。 

01920 

MODIFY:レコードは更新用として準備されていない。 

01820 

MODIFY:保存が固定である。 

01110 

手続:デッドロックが発生した。 

00000 

手続:正常。 

01940 

READY:ロックが競合した。 

01950 

READY:レコードは既に準備されている。 

01310 

RECONNECT:データベースキーがナルである。 

01920 

RECONNECT:レコードは更新用として準備されていない。 

01330 

RECONNECT:不適正なレコード型である。 

01820 

RECONNECT:保存が固定である。 

01830 

切離し:レコードは親子集合の子レコードではない。 

01840 

STORE:レコード検査に違反した。 

01510 

STORE:重複は禁止されている。 

01230 

STORE:親子集合組入れに際し構成要素一致が図れなかった。 

01920 

STORE:レコードは更新用として準備されていない。 

01310 

テスト:データベースキーがナルである。 

01330 

テスト:不適正なレコード型である。 

01340 

テスト:親子集合位置指示子はナルである。 

13. 水準 この規格は,二つの水準を規定する。水準2は,完全NDLデータベース言語とする。 

水準1は,水準2の部分集合とし,次の付加的な規則に従う。 

(1) “6.3<レコード型>”及び“6.9<レコード検査句>”: 

<レコード型>は,<レコード検査句>を含んではならない。 

(2) “6.14<子レコード句>”及び“6.20<子レコード検査句>”: 

<子レコード句>は,<子レコード検査句>を含んではならない。 

(3) “9.5<FIND文>”: 

<FIND文>は,WHERE<条件>を含んではならない。 

(4) “8.<モジュール言語>“及び”8.3<一時親子集合指定群>”: 

<モジュール>は,<一時親子集合指定群>を含んではならない。 

(5) “<6.16組入れ句>”: 

<組入れ句>は,STRUCTURAL<構造指定>を含んではならない。 

(6) “6.15<子レコード名句>”: 

<親子集合型>の<子レコード名句>に含まれる<レコード名>は,その<親子集合型>の<親レ

コード句>に含まれる<レコード名>と同じであってはならない。 

61 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

参考 

1. 納入業者と部品の問題例 

この参考は,規格の一部ではない。 

以下は,“納入業者と部品”の問題に対する<スキーマ>,<サブスキーマ>,COBOLプログラムの主

要要素及び<モジュール>の例(1)である。 

注(1) この例は,C. J. Dateの“An Introduction to Database Systems (Third Edition) ”, Addison-Wesley 1981

の24章から26章によっている。 

1.1 

納入業者と部品の<スキーマ>の例 

SCHEMA SUPPLIERS̲AND̲PARTS 

RECORD S 

UNIQUE SNO 

ITEM SNO CHARACTER 5 

ITEM SNAME CHARACTER 20 

ITEM SSTATUS NUMERIC 3 

ITEM CITY CHARACTER 15 

RECORD P 

UNIQUE PNO 

ITEM PNO CHARACTER 6 

ITEM PNAME CHARACTER 20 

ITEM COLOR CHARACTER 6 

ITEM WEIGHT NUMERIC 3DEFAULT -1 

ITEM CITY CHARACTER 15 

RECORD SP 

UNIQUE SNO PNO 

ITEM SNO CHARACTER 5 

ITEM PNO CHARACTER 6 

ITEM QTY NUMERIC 5 

CHECK QTY>= 0 

SET S̲SP 

OWNER S 

ORDER SORTED DUPLICATES PROHIBITED 

MEMBER SP 

INSERTION STRUCTURAL SP. SNO=S. SNO 

RETENTION FIXED 

KEY ASCENDING PNO 

SET P̲SP 

OWNER P 

ORDER SORTED DUPLICATES PROHIBITED 

62 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

MEMBER SP 

INSERTION STRUCTURAL SP. PNO=P. PNO 

RETENTION FIXED 

KEY ASCENDING SNO 

1.2 

納入業者と部品の<サブスキーマ>の例 

SUBSCHEMA SUPPLIERS OF SUPPLIERS̲AND̲PARTS 

RECORD S 

ITEM SSTATUS 

ITEM CITY 

RECORD SP 

ALL 

SET S̲SP RENAMED SUPPLIES 

1.3 

納入業者と部品のプログラムの例 

COBOLプログラムの次の要素は,パリの各納入業者の状態値をパリの納入業者の最大の状態値に設定

する。 

01 DB-STATUS PIC X (5). 

01 S-STATUS PIC S9 (3) SIGN LEADING SEPARATE. 

01 S-CITY PIC X (15). 

01 M PIC S9 (3). 

01 NOTFOUND PIC XXX. 

01 LISTEMPTY PIC XXX. 

MAINLINE. 

CALL ʼbeginʼ USING DB-STATUS. 

PERFORM CHECK-FOR-DB-ERROR. 

MOVE ʼPARISʼ TO S-CITY 

MOVE ZERO TO M. 

MOVE ʼNOʼ TO NOTFOUND. 

CALL ʼfind-first-sʼ USING S-CITY DB-STATUS. 

IF DB-STATUS =ʼ00100ʼ 

DISPLAY ʼNo suppliers for Parisʼ 

STOP RUN. 

PERFORM CHECK-FOR-DB-ERROR. 

PERFORM UNTIL NOTFOUND =ʼYESʼ 

CALL ʼkeep-sʼ USING DB-STATUS. 

PERFORM CHECK-FOR-DB-ERROR. 

CALL ʼget-sʼ USING S-STATUS DB-STATUS. 

PERFORM CHECK-FOR-DB-ERROR. 

IF S-STATUS GREATER THAN M 

MOVE S-STATUS TO M. 

CALL ʼfind-next-sʼ USING S-CITY DB-STATUS. 

63 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

IF DB-STATUS =ʼ00100ʼ 

MOVE ʼYESʼ TO NOTFOUND. 

PERFORM CHECK-FOR-DB-ERROR. 

END-PERFORM 

MOVE ʼNOʼ TO LISTEMPTY. 

PERFORM UNTIL LISTEMPTY =ʼYESʼ 

CALL ʼfind-free-modifyʼ USING M DB-STATUS. 

IF DB-STATUS =ʼ00100ʼ 

MOVE ʼYESʼ TO LISTEMPTY. 

PERFORM CHECK-FOR-DB-ERROR. 

END-PERFORM 

CALL ʼcommit-finishʼ USING DB-STATUS. 

PERFORM CHECK-FOR-DB-ERROR. 

DISPLAY ʼProcessing completeʼ. 

STOP RUN. 

CHECK-FOR-DB-ERROR. 

IF DB-STATUS NOT EQUAL ʼ00000ʼ AND ʼ00100ʼ 

DISPLAY ʼDatabase errorʼ DB-STATUS 

STOP RUN. 

1.4 

納入業者と部品の<モジュール>の例 

MODULE 

LANGUAGE COBOL 

SUBSCHEMA SUPPLIERS OF SUPPLIERS̲AND̲PARTS 

SET LISTA 

PROCEDURE begin STATUS 

READY S SHARED UPDATE 

PROCEDURE ʼfind-first-sʼ 

S̲CITY CHARACTER 15 

STATUS 

FIND FIRST S WHERE CITY=S̲CITY 

PROCEDURE ʼfind-next-sʼ 

S̲CITY CHARACTER 15 

STATUS 

FIND NEXT S WHERE CITY=S̲CITY 

PROCEDURE ʼkeep-sʼ STATUS 

CONNECT S TO LISTA 

PROCEDURE ʼget-sʼ 

S̲STATUS NUMERIC 3 

STATUS 

GET S SET S̲STATUS TO SSTATUS 

64 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

PROCEDURE ʼfind-free-modifyʼ 

S̲STATUS NUMERIC 3 

STATUS 

FIND FIRST S IN LISTA FOR UPDATE 

DISCONNECT MEMBER LISTA FROM LISTA 

MODIFY S SET SSTATUS TO S̲STATUS 

PROCEDURE ʼcommit-finishʼ STATUS 

COMMIT FINISH 

2. 再帰親子集合の問題例 この参考は,規格の一部ではない。 

次は,“再帰親子集合”の問題に対する<スキーマ>,<サブスキーマ>,PL/Iプログラム及び<モジ

ュール>の例である(2)。 

注(2) PL/Iプログラム及び<モジュール>の<手続名>は,わかりやすさのために英小文字で表現し

ており,規格とは異なる。 

2.1 

再帰親子集合の<スキーマ>の例 

SCHEMA ORGANIZATION 

RECORD EMPLOYEE 

UNIQUE ID 

ITEM ID     CHARACTER 5 

ITEM NAME    CHARACTER 20 

ITEM MANAGERID CHARACTER 5 

SET ORGANIZATION̲STRUCTURE 

OWNER EMPLOYEE 

ORDER LAST 

MEMBER EMPLOYEE 

INSERTION STRUCTURAL MEMBER. MANAGERID=OWNER. ID 

RETENTION MANDATORY 

2.2 

再帰親子集合の<サブスキーマ>の例 

SUBSCHEMA CHART OF ORGANIZATION 

RECORD EMPLOYEE ALL 

SET ORGANIZATION̲STRUCTURE 

2.3 

再帰親子集合のプログラムの例 

次のPL/Iプログラムは,ORGANIZATION̲STRUCTURE親子集合型の特定の親子集合実現値を上から下,

左から右の順番に並べる。 

PRINT̲CHART : PROC ; 

DCL begin ENTRY (CHAR(5)) ; 

DCL find̲root̲emp ENTRY (CHAR(5), CHAR(5)) ; 

DCL get̲employee ENTRY (CHAR(20)) ; 

DCL find̲next̲as̲member ENTRY (CHAR(5)) ; 

DCL find̲member̲as̲owner ENTRY ; 

65 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

DCL find̲owner̲as̲member ENTRY ; 

DCL finish ENTRY (CHAR(5)) ; 

DCL DB̲STATUS CHARACTER (5) ; 

DCL E̲ID CHARACTER (5) ; 

DCL E̲NAME CHARACTER (20) ; 

CALL begin (DB̲STATUS) ; 

IF DB̲STATUS- =ʼ00000ʼ THEN GOTO DB̲ERROR ; 

GET LIST (E̲ID) ; 

CALL find̲root̲emp (E̲ID, DB̲STATUS) ; 

IF DB̲STATUS =ʼ00100ʼ 

THEN DO ; 

PUT LIST (ʼemployeeʼ || E̲ID || ʼnot foundʼ) ; 

RETURN ; 

END ; 

IF DB̲STATUS-=ʼ00000ʼ THEN GOTO DB̲ERROR ; 

CALL RECURSION ; 

CALL finish (DB̲STATUS) ; 

IF DB̲STATUS-=ʼ00000ʼ THEN GOTO DB̲ERROR ; 

PUT LIST (ʼProcessing completeʼ) ; 

RETURN ; 

DB̲ERROR ; 

PUT LIST (ʼdatabase errorʼ || DB̲STATUS) ; 

RETURN ; 

RECURSION : PROCEDURE RECURSIVE ; 

CALL get̲employee (E̲NAME) ; 

PUT LIST (E̲NAME) ; 

CALL find̲next̲as̲member (DB̲STATUS) ; 

DO WHILE DB̲STATUS =ʼ00000ʼ 

CALL find̲member̲as̲owner; 

CALL RECURSION ; 

CALL find̲owner̲as̲member ; 

CALL find̲next̲as̲member (DB̲STATUS) ; 

END ; 

END RECURSION ; 

END PRINT̲CHART ; 

2.4 

再帰親子集合の<モジュール>の例 

MODULE 

LANGUAGE PLI 

SUBSCHEMA CHART OF ORGANIZATION 

PROCEDURE begin STATUS 

66 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

READY EMPLOYEE SHARED RETRIEVE 

PROCEDURE find̲root̲emp 

E̲ID CHARACTER5 

STATUS 

FIND FIRST EMPLOYEE WHERE ID=E̲ID 

PROCEDURE get̲employee 

E̲NAME CHATACTER 20 

GET EMPLOYEE SET E̲NAME TO NAME 

PROCEDURE find̲next̲as̲member STATUS 

FIND NEXT EMPLOYEE IN ORGANIZATION̲STRUCTURE 

AS MEMBER ORGANIZATION̲STRUCTURE 

PROCEDURE find̲member̲as̲owner 

FIND MEMBER ORGANIZATION̲STRUCTURE 

PROCEDURE find̲owner̲as̲member 

FIND OWNER ORGANIZATION̲STRUCTURE 

AS MEMBER ORGANIZATION̲STRUCTURE 

PROCEDURE finish STATUS 

COMMIT FINISH 

3. 部品展開の問題例 

この参考は,規格の一部ではない。 

次は,“部品展開”の問題に対する<スキーマ>,<サブスキーマ>,FORTRANプログラム及び<モジ

ュール>の例である(3)。 

注(3) FORTRANプログラム及び<モジュール>の<手続名>は,わかりやすさのために英小文字で

表現しており,規格とは異なる。 

3.1 

部品展開の<スキーマ>の例 

SCHEMA PARTS 

RECORD PART 

UNIQUE ID 

ITEM ID   CHARACTER 5 

ITEM NAME   CHARACTER 20 

RECORD STRUCTURE 

UNIQUE PARENTID COMPONENTID 

ITEM PARENTID CHARACTER 5 

ITEM COMPONENTID CHARACTER 5 

ITEM QUANTITY INTEGER 

SET USES 

OWNER PART 

ORDER NEXT 

MEMBER STRUCTURE 

67 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

INSERTION STRUCTURAL 

STRUCTURE. PARENTID=PART. ID 

RETENTION MANDATORY 

SET WHERE̲USED 

OWNER PART 

ORDER NEXT 

MEMBER STRUCTURE 

INSERTION STRUCTURAL 

STRUCTURE. COMPONENTID=PART. ID 

RETENTION MANDATORY 

3.2 

部品展開の<サブスキーマ>の例 

SUBSCHEMA BILL̲OF̲MATERIALS OF PARTS 

RECORD PART ALL 

RECORD STRUCTURE ALL 

SET USES 

SET WHERE̲USED 

3.3 

部品展開のプログラムの例 

次の例で示すFORTRANプログラムは,“車軸”を作るのに必要なすべての組立部品,半組立部品,及

び部品を並べる。それは,統計を累積するのでもなく,十分な注文部品リストを作成するのでもない。 

SUBROUTINE BOMEXP (PRTID) 

EXTERNAL begin, fndprt, fndcn, fnddg, fndowu, test, finish 

CHARACTER*5 PRTID, PID, CID, DBSTAT 

CHARACTER*1 DBTST 

INTEGER QTY 

CALL begin (DBSTAT)  

CALL CHKSTS (DBSTAT) 

CALL fndprt (PRTID, DBSTAT) 

IF (DBSTAT . EQ . ʼ00100ʼ) THEN 

WRITE (*, 10) PRTID 

RETURN 

END IF 

10FORMAT (ʼPartʼ, A5, ʻnot foundʼ) 

CALL CHKSTS (DBSTAT) 

CALL GETCMP 

20CALL fnddg (PID, CID, QTY, DBSTAT) 

IF (DBSTAT .EQ. ʼ00100ʼ) GOTO 30 

CALL CHKSTS (DBSTAT) 

WRITE (*, 25) PID, QTY, CID 

25FORMAT (ʼEach partʼ, A5, ʼcontainsʼ, I3, ʼof partʼ, A5) 

CALL fndowu (DBSTAT) 

68 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

CALL CHKSTS (DBSTAT) 

CALL test (DBTST, DBSTAT) 

CALL CHKSTS (DBSTAT) 

IF (DBTST . EQ . ʼ0ʼ) THEN CALL GETCMP 

GOTO 20 

30CALL finish (DBSTAT)  

CALL CHKSTS (DBSTAT) 

WRITE (*, 35) 

35FORMAT (ʼProcessing completeʼ) 

RETURN 

SUBROUTINE GETCMP 

CHARACTER*5 DBSTAT 

50CALL fndcn (DBSTAT)  

IF (DBSTAT . EQ . ʼ00000ʼ) GOTO 50 

CALL CHKSTS (DBSTAT) 

RETURN 

END 

SUBROUTINE CHKSTS (DBSTAT) 

CHARACTER*5 DBSTAT 

IF (DBSTAT . EQ . ʼ00000ʼ ) RETURN 

40WRITE (*, 45) DBSTAT 

45FORMAT (ʼDatabase errorʼ, A5) 

STOP 

END 

END 

3.4 

部品展開の<モジュール>の例 

MODULE 

LANGUAGE FORTRAN 

SUBSCHEMA BILL̲OF̲MATERIALS OF PARTS 

SET STRUCTURE̲LIST 

PROCEDURE begin STATUS 

READY PART SHARED RETRIEVE 

READY STRUCTURE SHARED RETRIEVE 

PROCEDURE fndprt 

PART̲ID CHARACTER 5 

STATUS 

FIND FIRST PART WHERE ID =PART̲ID 

PROCEDURE fndcn STATUS 

FIND NEXT STRUCTURE IN USES 

CONNECT STRUCTURE TO STRUCTURE̲LIST 

69 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

PROCEDURE fnddg 

PARENT̲ID CHARACTER 5 

COMPONENT̲ID CHARACTER 5 

COMPONENT̲QTY INTEGER 

STATUS 

FIND FIRST IN STRUCTURE̲LIST 

DISCONNECT SESSION FROM STRUCTURE̲LIST 

GET STRUCTURE 

SET PARENT̲ID TO PARENTID 

SET COMPONENT̲ID TO COMPONENTID 

SET COMPONENT̲QTY TO QTY 

PROCEDURE fndowu STATUS 

FIND OWNER WHERE̲USED 

PROCEDURE test TEST STATUS 

TEST SET EMPTY USES 

PROCEDURE finish STATUS 

COMMIT FINISH 

70 

X 3004 - 1987  

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

データベース言語調査研究委員会メンバ(敬称略・順不同) 

氏名 

所属 

(委員長) 

穂 鷹 良 介 

筑波大学社会工学系 

(幹事) 

鈴 木 健 司 

日本電信電話株式会社情報通信処理研究所 

芝 野 耕 司 

日本アイ・ビー・エム株式会社東京基礎研究所 

(委員) 

井手下 忠 良 

日本電気株式会社基本ソフトウェア開発本部 

伊 藤 彰 一 

工業技術院標準部 

井 原   実 

株式会社東芝府中工場 

植 村 俊 亮 

工業技術院電子技術総合研究所 

大 島   功 

東京電力株式会社情報システム部 

小 澤   弘 

野村コンピュータシステム株式会社技術部 

片 岡 信 弘 

三菱電機株式会社計算機製作所 

黒 川 恒 雄 

日本銀行電算情報局 

鴻 池 光 夫 

富士通株式会社情報システム事業本部 

原     潔 

日本ユニバック株式会社プロダクト本部 

疋 田 定 幸 

沖電気工業株式会社コンピュータシステム開発本部 

横 井   豊 

経済企画庁長官官房 

横 山 一 郎 

株式会社日立製作所ソフトウェア工場 

(事務局) 

川 邊 昭 治 

財団法人日本規格協会 

データベース言語調査研究委員会NDL分科会メンバ(敬称略・順不同) 

氏名 

所属 

(主査) 

鈴 木 健 司 

日本電信電話株式会社情報通信処理研究所 

石 井 俊 次 

三菱電機株式会社計算機製作所 

井 上 浩 弓** 日本電気株式会社基本ソフトウェア開発本部 

高 橋 利 彦* 

日本電気株式会社基本ソフトウェア開発本部 

原     潔 

日本ユニバック株式会社プロダクト本部 

穂 鷹 良 介 

筑波大学社会工学系 

三 浦 孝 夫* 

三井造船株式会社電算センター 

横 井   豊 

経済企画庁長官官房 

横 山 一 郎** 株式会社日立製作所ソフトウェア工場 

米 田   茂* 

株式会社日立製作所システム開発研究所 

(事務局) 

川 邊 昭 治 

財団法人日本規格協会 

ここで,*は1985年度,**は1986年度の検討メンバである。オブザーバ参加は,次のとおりである。 

塚 崎 義 樹 

センチュリリサーチセンター株式会社カリネット部