2.4.1 TYPEDEF句
TYPEDEF句を使用したデータ型の指定について説明します。
- 〈この項の構成〉
(1) データ型の定義と参照
データ型は,TYPEDEF句を使用して定義します。型名を指定したTYPE句をデータ名に指定すれば,TYPEDEF句で定義した型を参照できます。
なお,TYPEDEF句で定義された型名を1か所で参照する場合,TYPE句指定によって暗黙的に展開されるデータ名は一意となりますが,TYPEDEF句で定義された型名を複数個所で参照する場合,TYPE句指定によって暗黙的に展開されるデータ名が一意とならない(同じデータ名が複数個所に存在する)ため,一意に参照するためにデータ名の修飾が必要です。
データ型の定義と参照の例を次に示します。
(2) 弱く型付けされた項目と強く型付けされた項目
データ型は,TYPEDEF句にSTRONG指定があるかどうかによって,次の二つに分類されます。
-
STRONG指定なし:弱く型付けされたデータ型
-
STRONG指定あり:強く型付けされたデータ型(集団項目のデータ型にだけ指定できます)
(a) 弱く型付けされた項目
弱く型付けされた項目とは,弱く型付けされたデータ型をTYPE句に指定することで定義されたデータ項目のことです。この項目は,指定された型名からそのデータ構造が決まること以外は,型付けされていない項目と同じように使用できます。
(b) 強く型付けされた項目
強く型付けされた項目とは,強く型付けされたデータ型をTYPE句に指定することで定義されたデータ項目のことです。この項目は,集団項目のデータ内容の妥当性を確保するための仕組みです。集団項目中の基本データ項目に格納する内容の整合性を損なうおそれがある操作は,すべて禁止されています。整合性を損なうおそれがある操作の手続き文を書いた場合,コンパイル時にエラーとなります。
- (整合性を損なうおそれがある操作の例)
-
-
型の異なる集団項目からの転記
-
VALUE句による初期化
-
再命名,再定義された一意名を使ったデータ項目の更新
-
部分参照による値の更新
-
また,USAGE句にOBJECT REFERENCE指定のある項目を集団項目の従属項目として定義する場合は,STRONG指定のあるデータ型の中で定義しなければなりません。
このシステムでは,強く型付けされた項目同士の比較を許していません。強く型付けされた項目を比較する場合,強く型付けされた項目に従属するすべての基本項目同士を比較してください。
強く型付けされた項目の詳細については,マニュアル「COBOL2002 言語 標準仕様編」 「4.4.3(2) 強く型付けされた集団項目」,「COBOL2002 言語 標準仕様編」 「9.16.83 TYPE句」,および「COBOL2002 言語 標準仕様編」 「9.16.84 TYPEDEF句」を参照してください。