X 3002:2011 (ISO/IEC 1989:2002)
(1)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
目 次
ページ
序文 ··································································································································· 1
1 適用範囲························································································································· 1
2 引用規格························································································································· 2
3 規格合致性 ······················································································································ 2
3.1 規格合致実装系 ············································································································· 2
3.1.1 規格言語要素の受入れ ·································································································· 2
3.1.2 非COBOL実行時モジュールとの間の動作 ······································································· 3
3.1.3 複数のCOBOL実装系の間での動作 ················································································ 3
3.1.4 実装者定義の言語要素 ·································································································· 3
3.1.5 処理系依存の言語要素 ·································································································· 3
3.1.6 予約語 ······················································································································· 4
3.1.7 規格内拡張 ················································································································· 4
3.1.8 規格外拡張 ················································································································· 4
3.1.9 代替又は追加の言語要素 ······························································································· 4
3.1.10 旧式言語要素 ············································································································· 4
3.1.11 廃要素 ······················································································································ 5
3.1.12 外部提供機能 ············································································································· 5
3.1.13 制限値 ······················································································································ 5
3.1.14 利用者向け文書化 ······································································································· 5
3.1.15 代替文字 ··················································································································· 5
3.2 規格合致翻訳群 ············································································································· 5
3.3 規格合致実行単位 ·········································································································· 5
3.4 規格合致翻訳群と規格合致実装系との関係 ·········································································· 6
3.5 規格合致実行単位と規格合致実装系との関係 ······································································· 6
4 用語及び定義 ··················································································································· 6
5 記述技法························································································································ 23
5.1 一般形式 ····················································································································· 23
5.1.1 キーワード ················································································································ 23
5.1.2 補助語 ······················································································································ 23
5.1.3 作用対象 ··················································································································· 24
5.1.4 レベル番号 ················································································································ 24
5.1.5 選択可能項目 ············································································································· 24
5.1.5.1 角括弧 ···················································································································· 24
5.1.5.2 波括弧 ···················································································································· 24
5.1.5.3 選択指示子 ·············································································································· 24
X 3002:2011 (ISO/IEC 1989:2002) 目次
(2)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ページ
5.1.6 省略記号 ··················································································································· 25
5.1.7 句読点 ······················································································································ 25
5.1.8 特殊文字 ··················································································································· 25
5.1.9 メタ用語 ··················································································································· 25
5.2 規則 ··························································································································· 25
5.2.1 構文規則 ··················································································································· 25
5.2.2 一般規則 ··················································································································· 25
5.2.3 引数の規則 ················································································································ 25
5.2.4 関数の返却値の規則 ···································································································· 26
5.3 算術式 ························································································································ 26
5.3.1 本文中での作用対象の下付き数字 ·················································································· 26
5.3.2 省略記号 ··················································································································· 26
5.4 整数作用対象 ··············································································································· 26
5.5 形式的でない記述 ········································································································· 26
5.6 本文中のハイフン ········································································································· 26
5.7 規定条項の文章の末尾 ··································································································· 26
6 正書法··························································································································· 27
6.1 標識 ··························································································································· 28
6.1.1 固定標識 ··················································································································· 28
6.1.2 浮動標識 ··················································································································· 28
6.2 固定形式正書法 ············································································································ 29
6.3 自由形式正書法 ············································································································ 31
6.4 論理的変換 ·················································································································· 32
7 翻訳指示機能 ·················································································································· 33
7.1 原文操作 ····················································································································· 34
7.1.1 原文操作要素 ············································································································· 35
7.1.1.1 翻訳指示文 ·············································································································· 35
7.1.1.2 ソース原文及び登録集原文 ························································································· 35
7.1.1.3 仮原文 ···················································································································· 35
7.1.1.4 原文語 ···················································································································· 35
7.1.2 COPY文 ··················································································································· 35
7.1.3 REPLACE文 ············································································································· 38
7.2 翻訳指示 ····················································································································· 41
7.2.4 条件翻訳 ··················································································································· 42
7.2.5 翻訳時算術式 ············································································································· 42
7.2.6 翻訳時ブール式 ·········································································································· 42
7.2.7 定数条件式 ················································································································ 43
7.2.7.3 定義済み条件 ··········································································································· 43
7.2.8 CALL-CONVENTION指示··························································································· 43
X 3002:2011 (ISO/IEC 1989:2002) 目次
(3)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ページ
7.2.9 DEFINE指示 ············································································································· 44
7.2.10 EVALUATE指示 ······································································································· 45
7.2.11 FLAG-85指示 ··········································································································· 47
7.2.12 FLAG-NATIVE-ARITHMETIC指示 ············································································· 48
7.2.13 IF指示 ···················································································································· 49
7.2.14 LEAP-SECOND指示 ································································································· 49
7.2.15 LISTING指示 ·········································································································· 50
7.2.16 PAGE指示 ··············································································································· 50
7.2.17 PROPAGATE指示····································································································· 51
7.2.18 SOURCE FORMAT指示 ····························································································· 51
7.2.19 TURN指示 ·············································································································· 52
8 言語の概念 ····················································································································· 53
8.1 文字集合 ····················································································································· 53
8.1.1 計算機符号化文字集合 ································································································· 53
8.1.2 COBOL文字レパートリ ······························································································· 54
8.1.3 符号系 ······················································································································ 57
8.1.4 文字照合順序 ············································································································· 57
8.2 現地特性 ····················································································································· 57
8.2.1 現地特性フィールド名 ································································································· 59
8.3 字句の要素 ·················································································································· 59
8.3.1 文字列 ······················································································································ 59
8.3.1.1 COBOLの語 ··········································································································· 59
8.3.1.2 定数 ······················································································································· 66
8.3.1.3 PICTURE文字列 ······································································································ 73
8.3.2 分離符 ······················································································································ 73
8.4 参照 ··························································································································· 74
8.4.1 一意参照 ··················································································································· 74
8.4.1.1 修飾 ······················································································································· 74
8.4.1.2 添字 ······················································································································· 76
8.4.2 いろいろな一意名 ······································································································· 77
8.4.2.1 一意名 ···················································································································· 77
8.4.2.2 関数一意名 ·············································································································· 79
8.4.2.3 部分参照 ················································································································· 81
8.4.2.4 文内メソッド呼出し ·································································································· 83
8.4.2.5 オブジェクトビュー ·································································································· 84
8.4.2.6 EXCEPTION-OBJECT ······························································································ 85
8.4.2.7 NULL····················································································································· 85
8.4.2.8 SELF及びSUPER ···································································································· 85
8.4.2.9 オブジェクトプロパティ ···························································································· 86
X 3002:2011 (ISO/IEC 1989:2002) 目次
(4)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ページ
8.4.2.10 既定義アドレス ······································································································ 87
8.4.2.11 データアドレス一意名 ······························································································ 87
8.4.2.12 プログラムアドレス一意名························································································ 88
8.4.2.13 行数カウンタ ········································································································· 89
8.4.2.14 報告書カウンタ ······································································································ 89
8.4.3 条件名 ······················································································································ 90
8.4.4 明示参照及び暗黙参照 ································································································· 90
8.4.5 名前の有効範囲 ·········································································································· 90
8.4.5.1 局所名及び大域名 ····································································································· 92
8.4.5.2 プログラム名の有効範囲 ···························································································· 93
8.4.5.3 クラス名及びインタフェース名の有効範囲 ···································································· 93
8.4.5.4 メソッド名の有効範囲 ······························································································· 94
8.4.5.5 関数原型名の有効範囲 ······························································································· 94
8.4.5.6 利用者関数名の有効範囲 ···························································································· 94
8.4.5.7 プログラム原型名の有効範囲 ······················································································ 94
8.4.5.8 翻訳変数名の有効範囲 ······························································································· 94
8.4.5.9 パラメタ名の有効範囲 ······························································································· 94
8.4.5.10 プロパティ名の有効範囲 ·························································································· 94
8.5 データ記述及び表現形式 ································································································ 94
8.5.1 機種によらないデータ記述 ··························································································· 94
8.5.1.1 ファイル及びレコード ······························································································· 95
8.5.1.2 レベル ···················································································································· 96
8.5.1.3 文字処理の制限 ········································································································ 96
8.5.1.4 算術符号 ················································································································· 96
8.5.1.5 記憶域内でのデータのけたよせ ··················································································· 96
8.5.1.5.1 英数字集団及び用途DISPLAYのデータ項目のけたよせ ················································· 96
8.5.1.5.2 用途NATIONALのデータ項目のけたよせ ·································································· 97
8.5.1.5.3 用途BITのデータ項目のけたよせ ············································································· 97
8.5.1.5.4 実行用コードの効率を高めるための項目のけたづめ ······················································ 97
8.5.1.5.5 強い型付けの集団項目のけたよせ ·············································································· 98
8.5.2 データ項目及び定数の字類及び項類 ··············································································· 98
8.5.3 型 ··························································································································· 101
8.5.3.1 弱い型付けの項目 ···································································································· 102
8.5.3.2 強い型付けの集団項目 ······························································································ 102
8.5.4 長さゼロの項目 ········································································································· 102
8.6 データの有効範囲及び生存期間······················································································· 102
8.6.1 大域名及び局所名 ······································································································ 102
8.6.2 外部項目及び内部項目 ································································································ 102
8.6.3 自動項目,初期化項目及び静的項目 ·············································································· 103
X 3002:2011 (ISO/IEC 1989:2002) 目次
(5)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ページ
8.6.4 基底付き記述項及び基底付きデータ項目 ········································································ 104
8.6.5 共通属性,初期化属性及び再帰属性 ·············································································· 104
8.6.6 データ項目の共用 ······································································································ 105
8.7 演算子 ······················································································································· 105
8.7.1 算術演算子 ··············································································································· 105
8.7.2 ブール演算子 ············································································································ 105
8.7.3 連結演算子 ··············································································································· 106
8.7.4 呼出し演算子 ············································································································ 106
8.7.5 比較演算子 ··············································································································· 106
8.7.6 論理演算子 ··············································································································· 106
8.8 いろいろな式 ·············································································································· 107
8.8.1 算術式 ····················································································································· 107
8.8.2 ブール式 ·················································································································· 110
8.8.3 連結式 ····················································································································· 112
8.8.4 条件式 ····················································································································· 112
8.9 予約語 ······················································································································· 123
8.10 文脈依存語 ················································································································ 126
8.11 組込み関数名 ············································································································· 128
8.12 翻訳指示語 ················································································································ 129
8.13 外部リポジトリ ·········································································································· 130
9 入出力,オブジェクト及び利用者定義関数 ·········································································· 130
9.1 ファイル ···················································································································· 130
9.1.1 物理ファイル及び論理ファイル ···················································································· 130
9.1.2 レコード領域 ············································································································ 131
9.1.3 ファイル結合子 ········································································································· 131
9.1.4 オープンモード ········································································································· 131
9.1.5 ファイル結合子の共用 ································································································ 132
9.1.6 ファイル固有属性 ······································································································ 132
9.1.7 編成 ························································································································ 132
9.1.7.1 順編成 ··················································································································· 132
9.1.7.2 相対編成 ················································································································ 132
9.1.7.3 索引編成 ················································································································ 133
9.1.8 呼出し法 ·················································································································· 133
9.1.8.1 順呼出し法 ············································································································· 133
9.1.8.2 乱呼出し法 ············································································································· 134
9.1.8.3 動的呼出し法 ·········································································································· 134
9.1.9 リール及びユニット ··································································································· 134
9.1.10 現在ボリュームポインタ ···························································································· 134
9.1.11 ファイル位置指示子 ·································································································· 134
X 3002:2011 (ISO/IEC 1989:2002) 目次
(6)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ページ
9.1.12 入出力状態 ·············································································································· 135
9.1.13 無効キー条件 ··········································································································· 139
9.1.14 共用モード ·············································································································· 140
9.1.15 レコード施錠 ··········································································································· 141
9.1.16 整列ファイル ··········································································································· 141
9.1.17 併合ファイル ··········································································································· 142
9.1.18 動的ファイル割当て ·································································································· 142
9.1.19 報告書ファイル ········································································································ 142
9.2 画面 ·························································································································· 142
9.2.1 端末画面 ·················································································································· 142
9.2.2 機能キー ·················································································································· 142
9.2.3 CRT状態 ················································································································· 143
9.2.4 カーソル ·················································································································· 143
9.2.5 カーソル位置指示子 ··································································································· 144
9.2.6 現在の画面項目 ········································································································· 144
9.2.7 色彩番号 ·················································································································· 144
9.3 オブジェクト ·············································································································· 145
9.3.1 オブジェクト及びクラス ····························································································· 145
9.3.2 オブジェクト参照 ······································································································ 145
9.3.3 既定義オブジェクト参照 ····························································································· 145
9.3.4 メソッド ·················································································································· 145
9.3.5 メソッド呼出し ········································································································· 145
9.3.6 メソッド原型 ············································································································ 146
9.3.7 適合及びインタフェース ····························································································· 146
9.3.8 多態性 ····················································································································· 149
9.3.9 クラス継承 ··············································································································· 149
9.3.10 インタフェース継承 ·································································································· 150
9.3.11 インタフェース実装 ·································································································· 150
9.3.12 パラメタ付きクラス ·································································································· 150
9.3.13 パラメタ付きインタフェース ······················································································ 151
9.3.14 オブジェクトの生存期間 ···························································································· 151
9.4 利用者定義関数 ··········································································································· 152
10 構造化翻訳群 ··············································································································· 152
10.1 翻訳単位及び実行時モジュール ····················································································· 152
10.2 ソース単位 ················································································································ 152
10.3 ソース単位の包含関係 ································································································· 153
10.4 ソース要素及び実行時要素 ··························································································· 153
10.5 COBOL翻訳群 ·········································································································· 154
10.6 終了標 ······················································································································ 157
X 3002:2011 (ISO/IEC 1989:2002) 目次
(7)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ページ
11 見出し部 ····················································································································· 157
11.1 見出し部の構造 ·········································································································· 157
11.2 クラス名段落 ············································································································· 158
11.3 ファクトリ段落 ·········································································································· 159
11.4 関数名段落 ················································································································ 160
11.5 インタフェース名段落 ································································································· 160
11.6 メソッド名段落 ·········································································································· 161
11.7 オブジェクト段落 ······································································································· 162
11.8 選択肢段落 ················································································································ 162
11.8.4 ARITHMETIC句 ····································································································· 163
11.8.5 ENTRY-CONVENTION句 ························································································· 163
11.9 プログラム名段落 ······································································································· 163
12 環境部 ························································································································ 164
12.1 環境部の構造 ············································································································· 165
12.2 構成節 ······················································································································ 165
12.2.4 翻訳用計算機段落 ····································································································· 165
12.2.5 実行用計算機段落 ····································································································· 166
12.2.6 特殊名段落 ·············································································································· 168
12.2.7 リポジトリ段落 ········································································································ 176
12.3 入出力節 ··················································································································· 180
12.3.3 ファイル管理段落 ····································································································· 181
12.3.4 ファイル管理記述項 ·································································································· 181
12.3.4.4 ACCESS MODE句 ································································································· 185
12.3.4.5 ALTERNATE RECORD KEY句 ················································································ 185
12.3.4.6 COLLATING SEQUENCE句···················································································· 186
12.3.4.7 FILE STATUS句 ···································································································· 187
12.3.4.8 LOCK MODE句 ···································································································· 188
12.3.4.9 ORGANIZATION句 ······························································································· 189
12.3.4.10 PADDING CHARACTER句 ···················································································· 189
12.3.4.11 RECORD DELIMITER句 ······················································································ 190
12.3.4.12 RECORD KEY句 ································································································· 190
12.3.4.13 RELATIVE KEY句······························································································· 191
12.3.4.14 RESERVE句 ······································································································· 191
12.3.4.15 SHARING句 ······································································································· 192
12.3.5 入出力管理段落 ········································································································ 192
12.3.6 SAME句 ················································································································ 192
13 データ部 ····················································································································· 194
13.1 データ部の構造 ·········································································································· 194
13.2 明示属性及び暗黙属性 ································································································· 194
X 3002:2011 (ISO/IEC 1989:2002) 目次
(8)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ページ
13.3 ファイル節 ················································································································ 194
13.3.4 ファイル記述項 ········································································································ 195
13.3.5 整列併合用ファイル記述項 ························································································· 197
13.4 作業場所節 ················································································································ 198
13.5 局所記憶節 ················································································································ 198
13.6 連絡節 ······················································································································ 199
13.7 報告書節 ··················································································································· 200
13.7.3 報告書記述項 ··········································································································· 200
13.7.4 報告集団記述項 ········································································································ 201
13.7.5 報告書の細分 ··········································································································· 201
13.8 画面節 ······················································································································ 202
13.9 定数記述項 ················································································································ 202
13.10 レコード記述項 ········································································································ 203
13.11 77レベル記述項 ········································································································ 203
13.12 報告書記述項 ··········································································································· 203
13.13 報告集団記述項 ········································································································ 204
13.14 データ記述項 ··········································································································· 206
13.15 画面記述項 ·············································································································· 209
13.16 データ部の句 ··········································································································· 212
13.16.1 ALIGNED句 ········································································································· 212
13.16.2 ANY LENGTH句 ··································································································· 213
13.16.3 AUTO句 ··············································································································· 213
13.16.4 BACKGROUND-COLOR句······················································································ 214
13.16.5 BASED句 ············································································································· 214
13.16.6 BELL句 ··············································································································· 214
13.16.7 BLANK句 ············································································································· 215
13.16.8 BLANK WHEN ZERO句 ························································································· 215
13.16.9 BLINK句 ·············································································································· 215
13.16.10 BLOCK CONTAINS句 ··························································································· 216
13.16.11 CLASS句 ············································································································ 216
13.16.12 CODE句 ············································································································· 217
13.16.13 CODE-SET句 ······································································································· 217
13.16.14 COLUMN句 ········································································································ 218
13.16.15 CONTROL句 ······································································································· 221
13.16.16 DEFAULT句 ········································································································ 222
13.16.17 DESTINATION句 ································································································· 223
13.16.18 項目名句 ·············································································································· 224
13.16.19 ERASE句 ············································································································ 224
13.16.20 EXTERNAL句 ····································································································· 225
X 3002:2011 (ISO/IEC 1989:2002) 目次
(9)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ページ
13.16.21 FOREGROUND-COLOR句 ···················································································· 226
13.16.22 FORMAT句 ········································································································· 226
13.16.23 FROM句 ············································································································· 228
13.16.24 FULL句 ·············································································································· 228
13.16.25 GLOBAL句 ········································································································· 229
13.16.26 GROUP INDICATE句 ···························································································· 229
13.16.27 GROUP-USAGE句 ································································································ 230
13.16.28 HIGHLIGHT句 ···································································································· 231
13.16.29 INVALID句 ········································································································· 231
13.16.30 JUSTIFIED句 ······································································································ 231
13.16.31 レベル番号 ··········································································································· 232
13.16.32 LINAGE句 ·········································································································· 232
13.16.33 LINE句··············································································································· 234
13.16.34 LOWLIGHT句 ····································································································· 238
13.16.35 NEXT GROUP句 ·································································································· 238
13.16.36 OCCURS句 ········································································································· 240
13.16.37 PAGE句 ·············································································································· 244
13.16.38 PICTURE句 ········································································································ 246
13.16.39 PRESENT WHEN句 ······························································································ 258
13.16.40 PROPERTY句······································································································ 259
13.16.41 RECORD句 ········································································································· 262
13.16.42 REDEFINES句 ····································································································· 264
13.16.43 RENAMES句 ······································································································· 265
13.16.44 REPORT句·········································································································· 266
13.16.45 REQUIRED句 ······································································································ 267
13.16.46 REVERSE-VIDEO句 ····························································································· 267
13.16.47 SAME AS句 ········································································································· 267
13.16.48 SECURE句 ·········································································································· 269
13.16.49 SELECT WHEN句 ································································································ 269
13.16.50 SIGN句··············································································································· 270
13.16.51 SOURCE句 ········································································································· 271
13.16.52 SUM句 ··············································································································· 272
13.16.53 SYNCHRONIZED句 ····························································································· 274
13.16.54 TO句 ·················································································································· 275
13.16.55 TYPE句 ·············································································································· 276
13.16.56 TYPEDEF句 ········································································································ 279
13.16.57 UNDERLINE句 ···································································································· 280
13.16.58 USAGE句············································································································ 280
13.16.59 USING句 ············································································································ 285
X 3002:2011 (ISO/IEC 1989:2002) 目次
(10)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ページ
13.16.60 VALIDATE-STATUS句··························································································· 285
13.16.61 VALUE句 ············································································································ 287
13.16.62 VARYING句 ········································································································ 292
14 手続き部 ····················································································································· 293
14.1 手続き部の構造 ·········································································································· 294
14.2 宣言部分 ··················································································································· 297
14.3 手続き部分 ················································································································ 297
14.3.1 節·························································································································· 297
14.3.2 段落······················································································································· 297
14.4 手続き文及び手続き完結文 ··························································································· 297
14.4.1 条件指定 ················································································································· 299
14.4.2 文の範囲 ················································································································· 299
14.5 実行 ························································································································· 300
14.5.1 実行単位の構成 ········································································································ 300
14.5.2 関数・メソッド・オブジェクト・プログラムの状態 ························································ 300
14.5.3 制御の明示移行及び暗黙移行 ······················································································ 302
14.5.4 項目識別 ················································································································· 303
14.5.5 実行時要素の実行の結果 ···························································································· 303
14.5.6 現地特性識別 ··········································································································· 303
14.5.7 送出し側作用対象及び受取り側作用対象 ······································································· 304
14.5.8 データ項目内でのデータのけたよせ ············································································· 304
14.5.9 作用対象の重なり ····································································································· 305
14.5.10 実行単位の正常終了 ································································································ 305
14.5.11 実行単位の異常終了 ································································································ 306
14.5.12 条件操作 ··············································································································· 306
14.6 文に共通な指定及び規則 ······························································································ 313
14.6.1 ファイル終了条件 ····································································································· 313
14.6.2 無効キー条件 ··········································································································· 313
14.6.3 ROUNDED指定 ······································································································· 313
14.6.4 SIZE ERROR指定及びけたあふれ条件 ········································································· 313
14.6.5 CORRESPONDING指定 ··························································································· 314
14.6.6 算術文 ···················································································································· 315
14.6.7 THROUGH指定 ······································································································ 316
14.6.8 RETRY指定············································································································ 317
14.7 パラメタ及び返却項目の適合 ························································································ 317
14.7.1 パラメタ ················································································································· 318
14.7.2 返却項目 ················································································································· 321
14.8 文 ···························································································································· 322
14.8.1 ACCEPT文············································································································· 322
X 3002:2011 (ISO/IEC 1989:2002) 目次
(11)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ページ
14.8.2 ADD文 ·················································································································· 327
14.8.3 ALLOCATE文 ········································································································ 328
14.8.4 CALL文················································································································· 330
14.8.5 CANCEL文 ············································································································ 334
14.8.6 CLOSE文 ··············································································································· 335
14.8.7 COMPUTE文 ·········································································································· 338
14.8.8 CONTINUE文 ········································································································· 338
14.8.9 DELETE文 ············································································································· 339
14.8.10 DISPLAY文··········································································································· 340
14.8.11 DIVIDE文 ············································································································· 342
14.8.12 EVALUATE文 ······································································································· 344
14.8.13 EXIT文 ················································································································ 348
14.8.14 FREE文 ··············································································································· 351
14.8.15 GENERATE文 ······································································································· 351
14.8.16 GO TO文 ·············································································································· 353
14.8.17 GOBACK文 ·········································································································· 353
14.8.18 IF文 ···················································································································· 354
14.8.19 INITIALIZE文 ······································································································ 355
14.8.20 INITIATE文 ·········································································································· 357
14.8.21 INSPECT文 ·········································································································· 358
14.8.22 INVOKE文 ··········································································································· 363
14.8.23 MERGE文 ············································································································ 366
14.8.24 MOVE文 ·············································································································· 371
14.8.25 MULTIPLY文 ········································································································ 375
14.8.26 OPEN文 ··············································································································· 376
14.8.27 PERFORM文 ········································································································ 380
14.8.28 RAISE文 ·············································································································· 384
14.8.29 READ文 ··············································································································· 385
14.8.30 RELEASE文 ········································································································· 391
14.8.31 RESUME文 ··········································································································· 392
14.8.32 RETURN文 ··········································································································· 393
14.8.33 REWRITE文 ········································································································· 394
14.8.34 SEARCH文 ··········································································································· 398
14.8.35 SET文 ·················································································································· 402
14.8.36 SORT文 ··············································································································· 408
14.8.37 START文 ·············································································································· 415
14.8.38 STOP文 ················································································································ 418
14.8.39 STRING文 ············································································································ 418
14.8.40 SUBTRACT文 ······································································································· 420
X 3002:2011 (ISO/IEC 1989:2002) 目次
(12)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ページ
14.8.41 SUPPRESS文 ········································································································ 422
14.8.42 TERMINATE文 ····································································································· 423
14.8.43 UNLOCK文 ·········································································································· 423
14.8.44 UNSTRING文 ········································································································ 424
14.8.45 USE文·················································································································· 427
14.8.46 VALIDATE文 ········································································································ 430
14.8.47 WRITE文 ············································································································· 433
15 組込み関数 ·················································································································· 440
15.1 関数の型 ··················································································································· 440
15.2 引数 ························································································································· 441
15.3 関数の返却値 ············································································································· 442
15.3.1 数字関数及び整数関数 ······························································································· 442
15.4 日付変換関数 ············································································································· 443
15.5 関数の要約 ················································································································ 443
15.6 ABS関数 ·················································································································· 447
15.7 ACOS関数 ················································································································ 448
15.8 ANNUITY関数 ·········································································································· 448
15.9 ASIN関数 ················································································································· 448
15.10 ATAN関数··············································································································· 449
15.11 BOOLEAN-OF-INTEGER関数 ···················································································· 449
15.12 BYTE-LENGTH関数 ································································································· 449
15.13 CHAR関数 ·············································································································· 450
15.14 CHAR-NATIONAL関数 ····························································································· 450
15.15 COS関数 ················································································································ 450
15.16 CURRENT-DATE関数 ······························································································· 451
15.17 DATE-OF-INTEGER関数 ··························································································· 451
15.18 DATE-TO-YYYYMMDD関数 ······················································································ 452
15.19 DAY-OF-INTEGER関数 ····························································································· 452
15.20 DAY-TO-YYYYDDD関数 ··························································································· 453
15.21 DISPLAY-OF関数 ····································································································· 453
15.22 E関数 ····················································································································· 454
15.23 EXCEPTION-FILE関数 ····························································································· 454
15.24 EXCEPTION-FILE-N関数 ·························································································· 454
15.25 EXCEPTION-LOCATION関数 ···················································································· 454
15.26 EXCEPTION-LOCATION-N関数 ················································································· 455
15.27 EXCEPTION-STATEMENT関数 ·················································································· 456
15.28 EXCEPTION-STATUS関数 ························································································· 456
15.29 EXP関数 ················································································································· 457
15.30 EXP10関数 ·············································································································· 457
X 3002:2011 (ISO/IEC 1989:2002) 目次
(13)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ページ
15.31 FACTORIAL関数 ····································································································· 457
15.32 FRACTION-PART関数 ······························································································ 457
15.33 HIGHEST-ALGEBRAIC関数 ······················································································ 458
15.34 INTEGER関数 ········································································································· 458
15.35 INTEGER-OF-BOOLEAN関数 ···················································································· 458
15.36 INTEGER-OF-DATE関数 ··························································································· 459
15.37 INTEGER-OF-DAY関数····························································································· 459
15.38 INTEGER-PART関数 ································································································ 460
15.39 LENGTH関数 ·········································································································· 460
15.40 LOCALE-COMPARE関数 ·························································································· 461
15.41 LOCALE-DATE関数 ································································································· 461
15.42 LOCALE-TIME関数 ································································································· 462
15.43 LOG関数 ················································································································ 462
15.44 LOG10関数 ············································································································· 463
15.45 LOWER-CASE関数 ·································································································· 463
15.46 LOWEST-ALGEBRAIC関数 ······················································································· 463
15.47 MAX関数 ··············································································································· 464
15.48 MEAN関数 ············································································································· 465
15.49 MEDIAN関数 ·········································································································· 465
15.50 MIDRANGE関数 ······································································································ 465
15.51 MIN関数 ················································································································ 466
15.52 MOD関数 ··············································································································· 466
15.53 NATIONAL-OF関数 ·································································································· 467
15.54 NUMVAL関数·········································································································· 467
15.55 NUMVAL-C関数 ······································································································ 468
15.56 NUMVAL-F関数 ······································································································· 470
15.57 ORD関数 ················································································································ 470
15.58 ORD-MAX関数 ········································································································ 471
15.59 ORD-MIN関数 ········································································································· 471
15.60 PI関数 ···················································································································· 471
15.61 PRESENT-VALUE関数 ······························································································ 471
15.62 RANDOM関数 ········································································································· 472
15.63 RANGE関数 ············································································································ 472
15.64 REM関数 ················································································································ 473
15.65 REVERSE関数 ········································································································ 473
15.66 SIGN関数 ··············································································································· 474
15.67 SIN関数 ·················································································································· 474
15.68 SQRT関数··············································································································· 474
15.69 STANDARD-COMPARE関数 ······················································································ 475
X 3002:2011 (ISO/IEC 1989:2002) 目次
(14)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ページ
15.70 STANDARD-DEVIATION関数 ···················································································· 475
15.71 SUM関数 ················································································································ 476
15.72 TAN関数 ················································································································ 476
15.73 TEST-DATE-YYYYMMDD関数 ··················································································· 476
15.74 TEST-DAY-YYYYDDD関数 ························································································ 477
15.75 TEST-NUMVAL関数 ································································································· 477
15.76 TEST-NUMVAL-C関数 ······························································································ 478
15.77 TEST-NUMVAL-F関数 ······························································································ 479
15.78 UPPER-CASE関数 ···································································································· 479
15.79 VARIANCE関数 ······································································································· 480
15.80 WHEN-COMPILED関数 ···························································································· 480
15.81 YEAR-TO-YYYY関数 ······························································································· 481
16 標準クラス ·················································································································· 482
16.1 BASEクラス ············································································································· 482
16.1.1 Newメソッド ·········································································································· 483
16.1.2 FactoryObjectメソッド ····························································································· 483
附属書A (規定) 通信機能 ································································································ 484
A.1 データ部 ···················································································································· 485
A.2 手続き部 ···················································································································· 495
A.2.1 ACCEPT MESSAGE COUNT文 ··················································································· 495
A.2.2 DISABLE文············································································································· 495
A.2.3 ENABLE文 ············································································································· 496
A.2.4 PURGE文 ··············································································································· 497
A.2.5 RECEIVE文 ············································································································ 497
A.2.6 SEND文 ·················································································································· 499
附属書B (規定) 言語要素一覧 ·························································································· 503
B.1 実装者定義の言語要素一覧 ···························································································· 503
B.2 規定されない言語要素一覧 ···························································································· 515
B.3 処理系依存の言語要素一覧 ···························································································· 520
附属書C (規定) 利用者定義語に使用できる文字 ·································································· 523
C.1 記法 ·························································································································· 523
C.2 利用者定義語に使用できる文字のレパートリ ···································································· 523
附属書D (規定) 大文字から小文字への対応 ········································································ 526
D.1 記法 ·························································································································· 526
D.2 大文字・小文字の対応一覧 ····························································································· 526
附属書E (参考) 概念 ······································································································ 530
E.1 ファイル ···················································································································· 530
E.2 表操作 ······················································································································· 539
E.3 主記憶領域の共用 ········································································································ 545
X 3002:2011 (ISO/IEC 1989:2002) 目次
(15)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ページ
E.4 翻訳群及び実行単位の構成及び連絡 ················································································ 546
E.5 通信機能 ···················································································································· 559
E.6 組込み関数機能 ··········································································································· 565
E.7 デバッグ ···················································································································· 566
E.8 型 ····························································································································· 567
E.9 アドレス及びポインタ ·································································································· 569
E.10 ブール機能及びビット操作 ·························································································· 571
E.11 文字集合··················································································································· 574
E.12 文字照合順序 ············································································································ 577
E.13 文化圏特定,文化圏適応及び多言語対応の応用プログラム ················································· 580
E.14 外部スイッチ ············································································································ 585
E.15 共通例外処理 ············································································································ 586
E.16 標準算術 ·················································································································· 587
E.17 オブジェクト指向の概念 ····························································································· 592
E.18 報告書作成機能 ········································································································· 611
E.19 検証機能 ·················································································································· 619
E.20 条件式 ····················································································································· 622
E.21 INSPECT文の実行の例 ······························································································· 626
E.22 PERFORM文の実行の例 ····························································································· 628
E.23 自由形式正書法の例 ··································································································· 631
E.24 条件翻訳 ·················································································································· 632
E.25 CALL-CONVENTION指示 ·························································································· 633
E.26 ENTRY-CONVENTION句 ··························································································· 633
附属書F (参考) 実質的な変更点一覧 ·················································································· 634
F.1 既存プログラムに影響を及ぼす可能性のある変更点 ···························································· 634
F.2 既存プログラムに影響を及ぼさない変更点········································································ 645
F.3 既存のプログラムに影響を及ぼす可能性のある相違点(ISO 1989:1985,追補2:1994による相違点)
······································································································································· 655
F.4 既存プログラムに影響しない相違点(ISO 1989:1985,追補2:1994による相違点) ··················· 664
附属書G (参考) 旧式言語要素及び廃要素 ··········································································· 665
G.1 旧式言語要素 ·············································································································· 665
G.2 廃要素 ······················································································································· 666
附属書H (参考) 規格中の既知の誤り ················································································· 667
H.1 理論的根拠················································································································· 667
H.2 誤りの一覧················································································································· 667
附属書I (参考)参考文献 ··································································································· 668
X 3002:2011 (ISO/IEC 1989:2002) 目次
(16)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
まえがき
この規格は,工業標準化法第14条によって準用する第12条第1項の規定に基づき,一般社団法人情報
処理学会(IPSJ)及び財団法人日本規格協会(JSA)から,工業標準原案を具して日本工業規格を改正す
べきとの申出があり,日本工業標準調査会の審議を経て,経済産業大臣が改正した日本工業規格である。
これによって,JIS X 3002:1992は改正され,この規格に置き換えられた。
この規格は,著作権法で保護対象となっている著作物である。
この規格の一部が,特許権,出願公開後の特許出願又は実用新案権に抵触する可能性があることに注意
を喚起する。経済産業大臣及び日本工業標準調査会は,このような特許権,出願公開後の特許出願及び実
用新案権に関わる確認について,責任はもたない。
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
日本工業規格 JIS
X 3002:2011
(ISO/IEC 1989:2002)
電子計算機プログラム言語COBOL
Information technology-Programming languages-COBOL
序文
この規格は,2002年に第1版として発行されたISO/IEC 1989及びTechnical Corrigendum 1(2006)を基
に,技術的内容及び対応国際規格の構成を変更することなく作成した日本工業規格である。ただし,技術
に関する正誤票(Technical Corrigendum)については,編集し,一体化した。
なお,この規格で側線又は点線の下線を施してある参考事項は,対応国際規格にはない事項である。
1
適用範囲
この規格はCOBOLの構文及びその意味について規定する。この規格の目的は,COBOLプログラムを
各種のデータ処理システム上で使用できるように,プログラムの高度な機種独立性を促進することにある。
この規格は,次の事項について規定する。
− COBOLで書いた翻訳群の形式
− 翻訳群を翻訳する効果
− 実行単位を実行する効果
− 規格合致実装系による規定が必要となる言語要素
− 意味が明示的に規定されないままである言語要素
− 処理系の機能に依存する言語要素
この規格は,次の事項については規定しない。
− COBOLで書いた翻訳群を翻訳して処理系で実行可能なコードにする手段
− 活性化する側の文に,メソッド,関数又はプログラムの実行時モジュールが連係する時点,又は束縛
される時点。ただし,該当するプログラム又はメソッドが翻訳時に認識されない場合は,必然的に実
行時束縛となる
− パラメタ付きクラス及びパラメタ付きインタフェースが展開される時点
− 現地特性が処理系上で規定され使用可能になる機構
− 誤り・フラグ立て・警告のメッセージの書式及び内容
− 翻訳時にリストを印字出力する場合その書式及び内容
− この規格に合致している製品の実装者が生成する文書化の形態
− ファイル以外の資源を実行単位の間で共用する方法
注記1 通貨記号を,国際規格は字形"$"で表示しているが,日本工業規格(以下,JISという。)で
は字形"¥"で表示している。
注記2 この規格の対応国際規格及びその対応の程度を表す記号を,次に示す。
ISO/IEC 1989:2002,Information technology−Programming languages−COBOL(IDT)
2
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
なお,対応の程度を表す記号“IDT”は,ISO/IEC Guide 21-1に基づき,“一致している”
ことを示す。
2
引用規格
次に掲げる規格は,この規格に引用されることによって,この規格の規定の一部を構成する。これらの
引用規格のうちで,西暦年を付記してあるものは,記載の年の版を適用し,その後の改正版(追補を含む。)
は適用しない。西暦年の付記がない引用規格は,その最新版(追補を含む。)を適用する。
JIS X 0221 国際符号化文字集合(UCS)
注記 対応国際規格:ISO/IEC 10646,Information technology−Universal Multiple-Octet Coded
Character Set (UCS)(IDT)
JIS X 0301 情報交換のためのデータ要素及び交換形式−日付及び時刻の表記
注記 対応国際規格:ISO 8601:2000,Data elements and interchange formats−Information interchange
−Representation of dates and times(MOD)
JIS X 0601 情報交換用磁気テープのラベル及びファイル構成
注記 対応国際規格:ISO 1001:1986,Information processing−File structure and labelling of magnetic
tapes for information interchange(MOD)
JIS Z 8301 規格票の様式及び作成方法
ISO/IEC 646,Information technology−ISO 7-bit coded character set for information interchange
注記 対応日本工業規格:JIS X 0201 7ビット及び8ビットの情報交換用符号化文字集合(MOD)
ISO/IEC 9945:2009,Information technology−Portable Operating System Interface (POSIX®) Base
Specifications, Issue 7
ISO/IEC TR 10176:2001,Information technology−Guidelines for the preparation of programming language
standards
ISO/IEC 14651:2001,Information technology−International string ordering and comparison−Method for
comparing character strings and description of the common template tailorable ordering (including AMD1)
3
規格合致性
この箇条では,実装系がこの規格に合致するために満足しなければならない要求事項を規定し,翻訳群
又は実行単位が規格の機能を使用する場合に規格に合致する条件を定義する。
3.1
規格合致実装系
この規格に合致するために,規格COBOLの実装系は箇条6〜箇条16が規定する規定要素を提供しなけ
ればならない。
実装系は,附属書A(通信機能)が規定する要素を提供してもよい。
3.1.1
規格言語要素の受入れ
実装系は,この規格が要求する全ての規格言語要素,及び選択機能又は処理系依存の言語要素のうち実
装系が実装・提供を主張する言語要素に対して,構文を受け入れ,かつ,機能を提供しなければならない。
実装系は,利用者が翻訳時に呼び出せる警告機構を提供し,規格COBOLの一般形式及び明示的な構文
規則の違反を指摘しなければならない。この警告機構には,適合規則の違反に対する検査を選択又は抑止
するための選択可能指定が提供されていなければならない。ここで,適合規則は14.7(パラメタ及び返却
項目の適合)及び9.3.7.1.2(インタフェース間の適合)による。
3
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
規格COBOLには,一般規則とも構文規則ともみなされない規則であるが,構文から識別可能な項目を
規定するものもある。この警告機構は,このような規則の違反も指摘しなければならない。一般形式にも
明示的な構文規則にも規定のない言語要素については,構文から識別可能なものとは何かの決定は,実装
者の判断に任せる。
規格COBOLには,構文規則と分類してもよさそうな一般規則もある。これらの規則を一般規則と分類
した目的は,構文解析を回避するためであって,規格COBOLの誤りというわけではない。実装系はこの
ような規則の違反にフラグ立てを行ってもよいが,必ずしも行う必要はない。
3.1.2
非COBOL実行時モジュールとの間の動作
この仕様書には,COBOL実行時モジュールと非COBOL実行時モジュールとの間での,制御の移行又
は外部項目の共用を可能にする機能が用意されている。この言語間の機能を提供することは実装系に対す
る要求事項ではないが,提供する場合,実装者は,言語間機能の相手となる言語と実装系とを文書に明記
しなければならない。
3.1.3
複数のCOBOL実装系の間での動作
この仕様書には,異なる実装系上で翻訳されたCOBOL実行時モジュールの間で,制御の移行及び外部
項目の共用を拡張する機能が用意されている。この実装系間の機能を提供することは実装系に対する要求
事項ではないが,提供する場合,実装者は,実装系間機能の相手となる実装系を文書に明記しなければな
らない。
3.1.4
実装者定義の言語要素
言語要素のうち構文規則又は一般規則の仕様を完全にするため実装者定義を必要とするものを,B.1(実
装者定義の言語要素一覧)に列挙する。規格COBOLの要件を満足するには,少なくとも,必須と認識さ
れる実装者定義の言語要素だけは,実装者が規定しなければならない。各々の実装者定義の言語要素は,
利用者向け文書化が必要と認識されるとき,それに対する実装者定義の内容を,文書に明記しなければな
らない。
実装系には,実装者定義の言語要素を定義する一部として,規格内にない言語要素を翻訳群に取り込む
ことを必要とする事項があってはならない。
3.1.5
処理系依存の言語要素
処理系とは,ハードウェア及びソフトウェアから構成され,翻訳群の翻訳及び実行単位の実行に用いら
れる計算機システムの全体を指す。言語要素のうちで特定の装置に依存するか,又は特定の処理系の能力,
機能,アーキテクチャに依存するものを,B.3(処理系依存の言語要素一覧)に示す。規格COBOLの要件
を満足するために,実装者は,実装系が実装・提供を主張する処理系依存の言語要素を文書に明記しなけ
ればならない。実装・提供を主張しない処理系依存の言語要素に関連する言語要素は,実装する必要はな
い。どの処理系依存の言語要素を実装・提供を主張するかは,実装者の裁量で決定する。決定のために考
慮する要因の中には,ハードウェアの能力,ソフトウェアの能力,その処理系の市場での位置付けが含ま
れる。
規格に合致した実装・提供を主張する処理系依存の言語要素に対しては,その言語要素に対して必要な
構文及び機能の全部を実装しなければならない。一方,構文又は機能の一部だけ実装する場合,その部分
的な実装が“規格内拡張”であると,実装者の利用者向け文書中で識別できなければならない。処理系依
存の言語要素の幾つかが実装系から欠落している場合,その旨を実装者の利用者向け文書に規定しなけれ
ばならない。
実装系は,翻訳時の機構として,実装・提供しない処理系依存の言語要素のうちで構文から検出が可能
4
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
な要素の使用を指摘する警告機構を提供しなければならない。この警告機構は,実装・提供しない処理系
依存の言語要素を識別する必要があるが,実装・提供しない構文内での構文誤りまで診断する必要はない。
実装者は,実装・提供しない処理系依存の言語要素が用いられた場合に,実行可能コードを生成する必要
はない。
3.1.6
予約語
実装系は,8.9(予約語)に示すCOBOLの予約語の全てを予約語と認識し,8.10(文脈依存語)に示す
文脈依存語の全てを文脈中で予約語と認識し,8.12(翻訳指示語)に示す翻訳指示の予約語の全てを翻訳
指示中で認識しなければならない。
3.1.7
規格内拡張
実装者は,選択可能な要素又は処理系依存の要素について,構文及び関連機能の全体の実装・提供を主
張してもよいし,一部の実装・提供を主張してもよい。実装者がその構文の一部の実装・提供を主張し,
その関連機能がこの規格に規定された機能であるとき,その構文は規格内拡張である。異なる機能が提供
されるとき,その構文は規格外拡張である。
3.1.8
規格外拡張
規格外拡張とは,実装系に含まれる言語要素又は機能のうち,次のいずれかである。
1) この規格に規定されていない,文書化された言語要素。
2) この規格に合致するための要件ではない言語要素のうち,この規格の規定とは異なる機能が実装・提
供されている言語要素であり,実装者が規格どおりの実装・提供を主張していない要素。
3) この規格に合致するための要件である言語要素のうち,この規格の規定とは異なる機能が実装されて
いる言語要素であり,規格合致の動作も実装されていて,規格外の動作は実装者定義の機構で選択す
る要素。
実装系に規格外拡張として予約語を追加した結果,規格合致の幾つかの翻訳群の翻訳が妨げられたとし
ても,その実装系が規格に合致することが否定されるわけではない。
実装系の文書では,実装・提供を主張する規格外拡張が識別できなければならず,規格外拡張のために
追加した全ての予約語を規定しなければならない。
実装系には,翻訳群内部にある規格外拡張の使用有無を指摘するために,利用者が翻訳時に呼出しでき
る警告機構が提供されていなければならない。この警告機構がフラグを立てなければならないのは,構文
から識別可能な拡張だけとする。
3.1.9
代替又は追加の言語要素
実装系には,規格言語要素に対して規定された機能を遂行するために,代替又は拡張の言語要素を翻訳
群に取り込むことを必要とする事項があってはならない。
3.1.10 旧式言語要素
旧式言語要素は,G.1(旧式言語要素)に明示する。よりよいプログラムの書き方があるので,旧式言語
要素を新規の翻訳群内では使用しないほうがよい。旧式言語要素は広範に使用されているので,現在のと
ころは規格COBOLから削除される予定はない。しかし,これが規格COBOLの将来の改正版において再
評価される可能性はある。
実装系は,実装・提供を主張する旧式言語要素の機能を実装・提供しなければならない。実装系の文書
では,実装されている旧式言語要素が識別できなければならない。
実装系は,翻訳群中で旧式要素を使用していることを指摘するために,利用者が翻訳時に選択的に呼び
出せる警告機構を提供しなければならない。
5
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
3.1.11 廃要素
廃要素は,G.2(廃要素)に明示する。廃要素は,規格COBOLの次回改正版から削除される予定である。
この規格中で廃要素と明示していない言語要素は,規格COBOLの次回改正版から削除されることはな
い。
実装系は,実装・提供を主張する廃要素の機能を提供しなければならない。実装系の文書では,実装さ
れている全ての廃要素が識別できなければならない。
実装系は,翻訳時に利用者が選択的に呼び出せる警告機構を提供し,翻訳群内部の廃要素の使用有無を
指摘しなければならない。
3.1.12 外部提供機能
実装系は,翻訳群に指定された機能を実現するために操作環境とのインタフェースをとるとき,その翻
訳群には含まれない仕様を必要とすることがある。
注記 実装系は,環境変数などCOBOL実装系の外部にあるOS仕様を要求してもよい。
実装系は,COBOL実装系以外に,操作環境上の実行時モジュール又は製品の存在を要求することで,
翻訳群に指定された構文又は機能を実現してもよい。
注記 プリコンパイラ,ファイルシステム,ソート製品など,COBOL実装系の外部にある構成要素
を実装系が要求することを許している。
3.1.13 制限値
一般に,規格COBOLは,翻訳群内の文の個数,ある文に書ける作用対象の個数などの事項に関して上
限値を規定してはいない。規格合致実装系はこのような制限値を設けてもよい。これらの制限値は規格
COBOLの実装系によって変化し,ある規格合致実装系では規格COBOLの要件を満足する翻訳群の幾つ
かが正しく翻訳できなくなることもある,と承認されている。
3.1.14 利用者向け文書化
実装系は少なくとも一つの文書化の形態を用いて,3.1.2,3.1.3,3.1.4,3.1.5,3.1.8,3.1.10及び3.1.11
に規定した利用者向け文書化の要求を満足しなければならない。この形態には,ハードコピーマニュアル,
オンライン文書,ユーザヘルプ画面などが含まれるが,これだけとは限らない。
利用者向け文書化の要求を満足する方法が,別な文書への参照であってもよく,これには操作環境及び
別なCOBOL実装系の文書も含まれる。
3.1.15 代替文字
8.1.2(COBOL文字レパートリ)に示すCOBOL文字レパートリの定義は,規格COBOLのCOBOL文字
レパートリの全体を示している。COBOL文字レパートリの基本文字に,実装系が提供しない図形表現が
ある場合,表現されない文字に代わる実装者定義の代替図形があってもよい。
3.2
規格合致翻訳群
規格合致翻訳群(conforming compilation group)とは,明示的に記述された規格COBOLの条項及び仕様
に違反していないものをいう。翻訳群が規格COBOLに合致するためには,この規格に指定のないどのよ
うな言語要素も含まれていてはならない。この規格中の選択機能,処理系依存の言語要素又は実装者定義
の言語要素を用いている翻訳群は,その言語要素のせいで正常に翻訳されない実装系においても,規格合
致翻訳群とする。
規格合致翻訳群に包含された翻訳単位は,規格合致翻訳単位とする。
3.3
規格合致実行単位
規格合致実行単位(conforming run unit)とは,次のいずれの条件をも満足するものをいう。
6
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) 1個以上の実行時モジュールから構成されており,その各々は,規格合致翻訳単位の翻訳が成功して
生じたものである。
2) 実行単位の実行時の動作という点で,明示的に記述された規格COBOLの条項及び仕様に従っている。
注記 非COBOL構成要素が実行単位に含まれていても実行単位の合致に影響はない。
規格合致実行単位の処理は,規格COBOLに定義された範囲内だけで予測可能である。規格COBOLの
書き方又は規則に違反した結果は,この規格の中で特に別の規定がない限り,規定されない。
ある文を実行した結果が規定されない又は予測できない状況を,B.2(規定されない言語要素一覧)に明
示する。これらの状況が起こり得るCOBOL実行単位は,実行結果が規格COBOLでは定義されないだけ
であって,規格合致実行単位ではある。
3.4
規格合致翻訳群と規格合致実装系との関係
規格合致翻訳群を規格合致実装系で翻訳した結果は,規格COBOLが定義する範囲内でだけ規定される。
規格合致翻訳群でも翻訳が成功しないことがあり得る。翻訳群が規格合致でないこと以外の要因によって,
翻訳が不成功となってもよい。
注記 翻訳が不成功となる原因には,選択機能,処理系依存の言語要素,又は実装者定義の言語要素
の使用,及び実装系の制限値がある。
3.5
規格合致実行単位と規格合致実装系との関係
規格合致翻訳単位を翻訳してできる実行時モジュール群からなる実行単位の実行結果は,規格COBOL
の定義する範囲内でだけ規定される。ただし,規格合致実行単位が正常に実行されないこともあり得る。
規格合致不全とは別の要因によって,実行単位が正常に実行されなくてもよい。
注記 実行が不成功となる原因には,翻訳単位の論理的な誤り,実行単位が処理するデータの誤り,
及び実装系のもつ制限値がある。
4
用語及び定義
この規格で用いる主な用語及び定義は,次による。
4.1
絶対項目(absolute item)
報告書中の項目であって,ページ上に固定位置をもつもの。
4.2
活性化される側の実行時要素(activated runtime element)
活性状態におかれる関数・メソッド・プログラム。
4.3
活性化文(activating statement)
関数・メソッド・プログラムの実行を引き起こす文。
4.4
活性化する側の実行時要素(activating runtime element)
活性化文を実行する関数・メソッド・プログラム。
4.5
活性状態(active state)
関数・メソッド・プログラムの状態の一つであって,活性化されており,まだ活性化した側の実行時要
素に制御が戻っていない状態。
7
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4.6
(COBOL文字レパートリの)英字[alphabetic character (in the COBOL character repertoire)]
基本文字又は空白。
4.7
英数字(alphanumeric character)
英数字符号化文字集合の符号化文字のいずれか。符号化文字に対して図形記号が割り当てられているか
否かには関係しない。
4.8
英数字文字位置(alphanumeric character position)
英数字文字集合の1文字を格納するのに必要な物理的記憶域の大きさ,又はそれを印字若しくは表示す
るのに必要な表示スペースの大きさ。
4.9
英数字文字集合(alphanumeric character set; alphanumeric coded character set)
英数字符号化文字集合を参照。
4.10
英数字符号化文字集合(alphanumeric coded character set; alphanumeric character set)
用途DISPLAYのデータ項目及び英数字定数のために実装者が選定した符号化文字集合。
4.11
英数字集団項目(alphanumeric group item)
次を除いた,あらゆる集団項目。
− 強い型付けの集団項目
− ビット集団項目
− 各国文字集団項目
4.12
引数(argument)
活性化文の中に指定された作用対象であって,受け渡すデータを指定するもの。
4.13
想定小数点(assumed decimal point)
データ項目中の小数点位置が,実際の文字を用いないで指定されたもの。想定小数点は,論理的な意味
をもつが物理的に表現される実体はもたない。
4.14
基底付きデータ項目(based data item)
基底付き記述項を実データ項目又は割当て記憶域と関連付けることで確定するデータ項目。
4.15
基底付き記述項(based entry)
データ項目又は割当て記憶域と動的に関連付けられるひな型(テンプレート)の役目を果たすデータ記
述項。
4.16
基本文字(basic letters)
COBOL文字レパートリ中の大文字A〜Z又は小文字a〜zのいずれか。
8
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4.17
ビット(bit)
二者択一の状態を表現可能な,計算機記憶構造の最小単位。
4.18
ビットデータ項目(bit data item)
項類がブールであり用途がBITである基本データ項目又はビット集団項目。
4.19
ブロック(block; physical record)
通常,幾つかの論理レコードからなる,データの物理的単位。
4.20
ブール文字(boolean character)
0又は1の値で構成される情報の単位。各々のブール文字の記憶域中での表現形式は,ビット,英数字
又は各国文字のいずれでもよい。
4.21
ブールデータ項目(boolean data item)
ブール値をもつことができるデータ項目。
4.22
ブール式(boolean expression)
ブール演算子で区切られた,一つ以上のブール作用対象。
4.23
ブール位置(boolean position)
一つのブール文字を格納するのに必要な物理的記憶域の大きさ,又はそれを印字若しくは表示するのに
必要な表示スペースの大きさ。
4.24
ブール値(boolean value)
一つ以上のブール文字からなる値。
4.25
バイト(byte)
計算機の記憶内で番地付け可能な最小文字単位を表現するビットの並び。
4.26
(符号化文字集合の)文字[character (in a coded character set)]
基本文字,拡張文字,数字,記号,制御機能,そのほかデータの構成・制御・表現に用いる要素の,符
号化表現を成すコード値。
注記 COBOLでは,符号化文字集合の各コード値を1文字とみなして処理する。
4.27
(画面項目中の)文字[character (in a screen item)]
図形文字。
4.28
(COBOL文字レパートリの)文字[character (in COBOL character repertoire); COBOL character]
基本文字,拡張文字,数字又は特殊文字であって,符号化表現には依存せず,COBOLの語又は分離符
9
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
の形成に用いられるもの。
4.29
(計算機記憶中の)文字[characters (in computer storage)]
符号化文字集合の一つのコード値。
4.30
文字境界(character boundary)
計算機の記憶域の番地付け境界の最左端ビット。
4.31
文字位置(character position)
(英数字又は各国文字の)単一文字を格納するのに必要な物理的記憶域の大きさ,又はそれを印字若し
くは表示するのに必要な表示スペースの大きさ。符号化文字集合に属する単一要素は文字位置一つを占め
る。
注記 例えば,国際符号化文字集合の結合コード列の要素は,それぞれが文字位置一つを占める。
UTF-16でいう区点要素の対,すなわちサロゲート値(surrogate value)では,左サロゲート(left
surrogate)が文字位置一つを占め,右サロゲート(right surrogate)が文字位置一つを占める。
4.32
文字列(character-string)
COBOLの語,定数又はPICTURE文字列を形成する,一連の文字の並び。
4.33
(オブジェクト指向の)クラス[class (in object orientation)]
0個以上のオブジェクトの共通な振る舞い及び実装を定義する実体。
4.34
(データ項目の)字類[class (of data item)]
データ項目の集合に対する総称方法の一つで,共通の属性又は共通する値の範囲をもつもの。これは,
データ記述項のUSAGE句,PICTURE句若しくはこれら二つの句の組合せから定まるか,又は既定義一意
名の規定若しくは組込み関数の規定から定まる。
4.35
(データ値の)字類[class (of data value)]
データ項目の内容としてもつことのできるデータ値の集合の指す名称。
4.36
(オブジェクト指向の)クラス定義[class definition (in object orientation)]
オブジェクトのクラスを定義する翻訳単位。
4.37
句(clause)
記述項の属性を指定するための,連続したCOBOL文字列の順序付き集合。
4.38
COBOL文字[COBOL character; character (in COBOL character repertoire)]
(COBOL文字レパートリの)文字参照。
4.39
COBOL文字レパートリ(COBOL character repertoire)
10
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
注記と,16進形式でない英数字定数及び各国文字定数の内容とを除いた,COBOL翻訳群の構文を表記
するために用いられる文字レパートリ。
注記 JIS X 0221の用語定義4.37(レパートリ)では,次のように規定されている。
レパートリ(repertoire) 符号化文字集合で表現する文字の指定された文字集合。
4.40
符号化文字集合(coded character set)
文字集合を定め,その集合の文字と符号化表現との間の関係を定める,曖昧さのない規則の集合(JIS X
0221参照)。
注記 この定義は,JIS X 0221の用語定義4.10(符号化文字集合)に相当する。
4.41
結合文字(combining character)
国際符号化文字集合の構成単位であって,先行する非結合文字(基底文字)と組み合わせることを意図
したもの,又は基底文字の後に結合文字の列が続いた形のものと組み合わせることを意図したもの。
注記 この定義は,JIS X 0221の用語定義4.13(結合文字)に相当する。
4.42
共通プログラム(common program)
別のプログラムの中に直接含まれているにもかかわらず,その別のプログラムに直接又は間接に含まれ
るどのプログラムからでも呼び出してもよいプログラム。
4.43
翻訳群(compilation group)
一緒に翻訳に出される幾つかの翻訳単位の並び。
4.44
翻訳単位(compilation unit)
ソース単位のうちで他のソース単位の内に入れ子になっていないもの。
4.45
合成列(composite sequence)
基底文字とそれに続く幾つかの結合文字とからなる図形文字の列。
注記 この定義は,JIS X 0221の用語定義4.15(合成列)に相当する。
4.46
条件文(conditional statement)
指定された条件の真理値が評価され,それ以降の制御の流れを決定するのに用いられる文。
4.47
(オブジェクト指向の)適合[conformance (for object orientation)]
オブジェクトが属するクラスのインタフェースとは異なるインタフェースに従った使用法を許すような,
単方向の関係。
4.48
(パラメタの)適合[conformance (for parameters)]
活性化する側とされる側との実行時要素において,引数と仮パラメタとの間及び返却項目どうしの間の
関係についての必要事項。
4.49
11
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
制御機能(control function)
データの記録,処理,伝送又は解釈に影響を及ぼす動作であって,一つ以上のバイトからなる符号化表
現をもつもの。
注記1 規格COBOLでは用語“オクテット”を用いていないので“オクテット”を“バイト”と置
換したことを除けば,この定義はJIS X 0221と同じである。
注記2 この定義は,JIS X 0221の用語定義4.16(制御機能)に相当する。
4.50
文化的要素(cultural element)
言語,地理的な領域,又は他の文化的環境に依存して変化してもよい,計算機利用のためのデータの要
素。
4.51
通貨記号(currency sign)
COBOL文字の"¥"。これは,PICTURE文字列中で既定解釈の通貨編集用記号として用いられ,データ項
目の編集形式中で既定解釈の通貨文字列としても用いられる。
注記1 これ以外に通貨文字列及び通貨編集用記号を選択するための機能も存在する。
注記2 通貨記号を,国際規格は字形"$"で表示しているが,JISでは字形"¥"で表示している。
4.52
通貨文字列(currency string)
数字編集項目がPICTURE文字列の中に通貨編集用記号を含んでいる場合に,編集操作の結果として,
その項目の中に設定される文字の組。
4.53
通貨編集用記号(currency symbol)
PICTURE文字列中で通貨文字列の存在を表すために用いられる文字。
4.54
現在レコード(current record)
ファイルに関連するレコード領域中で使用可能になっているレコード。
4.55
現在ボリュームポインタ(current volume pointer)
順ファイルの現在のボリュームを指す概念上の実体。
4.56
データ項目(data item)
データ記述項又は一意名の評価結果によって定義されるデータの単位。
4.57
デバッグ行(debugging line)
デバッグモードスイッチの設定によって,翻訳されたりされなかったりするソース行。
4.58
小数点(decimal point; decimal separator)
小数点を表現するために用いる文字。COBOLの既定解釈は文字の終止符である。
4.59
小数点文字(decimal separator; decimal point)
12
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4.58(小数点)参照。
4.60
宣言文(declarative statement)
USE文であって,後続の手続きがどのような条件下で実行されるのかを定義するもの。
4.61
逆編集(de-editing)
数字編集データ項目から,その項目の編集しない数値を求めるために,全ての編集文字を論理的に除去
する処理。
4.62
範囲明示文(delimited scope statement)
明示範囲終了子で終わる文。
4.63
けた位置(digit position)
1けたの数字を収めるのに必要な物理的記憶域の大きさ,又はそれを印字若しくは表示するのに必要な
表示スペース。
4.64
動的呼出し(dynamic access)
大容量記憶ファイルにおいて,特定の論理レコードを,順序に関係なく取り出したり書き出したりして
もよく,順序どおりにファイルから取り出してもよい呼出し法。
4.65
動的記憶域(dynamic storage)
実行時の要求によって割り付けられ解放される記憶域。
4.66
終了標(end marker)
ソース単位の終わりの印。
4.67
項,記述項(entry)
一連の句の組からなる記述を分離符の終止符で止めたもの。
4.68
入口規約(entry convention)
関数・メソッド・プログラムが正常にやり取りするために必要な情報。
4.69
例外状態(exception condition)
実行時に検出される状態であって,正常な処理に対する誤り又は例外が起こったことを示す。
4.70
例外オブジェクト(exception object)
例外状態として振る舞うオブジェクト。
4.71
例外状態指示子(exception status indicator)
各例外名に対して存在する概念的な実体。
13
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4.72
EXIT FUNCTION文(EXIT FUNCTION statement)
“EXIT文でFUNCTION指定があるもの”の縮約形。
4.73
EXIT METHOD文(EXIT METHOD statement)
“EXIT文でMETHOD指定があるもの”の縮約形。
4.74
EXIT PARAGRAPH文(EXIT PARAGRAPH statement)
“EXIT文でPARAGRAPH指定があるもの”の縮約形。
4.75
EXIT PERFORM文(EXIT PERFORM statement)
“EXIT文でPERFORM指定があるもの”の縮約形。
4.76
EXIT PROGRAM文(EXIT PROGRAM statement)
“EXIT文でPROGRAM指定があるもの”の縮約形。
4.77
EXIT SECTION文(EXIT SECTION statement)
“EXIT文でSECTION指定があるもの”の縮約形。
4.78
明示範囲終了子(explicit scope terminator)
文の範囲を終了させる語。文の種類によって語は異なる。
4.79
拡張モード(extend mode)
ファイル処理のモードの一つ。このモードでは,順ファイルの最後にレコードを追加してもよいが,レ
コードの削除,読み込み,及び更新はできない。
4.80
拡張文字(extended letter)
COBOL文字レパートリとして定義された文字集合の中で,基本文字(basic letter)でない文字(letter)。
4.81
外部データ(external data)
実行単位に属するデータであって,これを記述しているいずれの実行時要素もアクセスしてもよいもの。
4.82
外部媒体形式(external media format)
表現又は印字に適したデータの形式の一つであって,読解可能なテキストとして表現するために必要な
あらゆる制御機能をも含んでいるもの。
4.83
外部スイッチ(external switch)
二者択一の状態のいずれかであることを示すために用いられるハードウェア又はソフトウェアの装置で,
実装者によって命名され定義されるもの。
4.84
14
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ファクトリオブジェクト(factory object)
クラスに関連する唯一のオブジェクトであって,そのクラスのファクトリ定義によって定義されるもの。
主に,そのクラスに属するインスタンスオブジェクトを生成するために用いられる。
4.85
ファイル(file)
論理レコードの集まりを表す論理的な実体。一つのファイル結合子に関連する論理ファイルは一つであ
るが,一つの物理ファイルに関連する論理ファイルが複数あってもよい。
4.86
ファイル結合子(file connector)
ファイルについての情報を含んでいる記憶領域であって,ファイル名と物理ファイルとの間の連絡,及
びファイル名とそれに関連するレコード領域との間の連絡に使用されるもの。
4.87
ファイル編成(file organization)
ファイルを生成した時点で確定する永続的な論理的ファイル構造。
4.88
ファイル位置指示子(file position indicator)
概念上の実体であって,次に呼び出すレコードを正確に指定する便宜上用いられるもの,又はそのよう
な参照が確定できない理由を示しているもの。
4.89
ファイル共用(file sharing)
同一物理ファイルへの同時呼出しを制御する共同環境。
4.90
ファイル固有属性(fixed file attribute)
物理ファイルの属性のうち,その物理ファイルの生成時に確定され,その物理ファイルが存在する間は
決して変更されないもの。
4.91
仮パラメタ(formal parameter)
手続き部見出しのUSING指定に書いたデータ名であって,ある引数に対し,関数・メソッド・プログ
ラム中で用いられる名前を付与したもの。
4.92
関数(function)
プログラム言語に組み込まれているか,又は利用者が定義する手続き実体であって,引数に基づいた値
を返すもの。
4.93
関数原型定義(function prototype definition)
特定の関数の評価のために必要とされる引数,関数の評価の結果を返すデータ項目,そのほか関数の評
価に対して必要とされる全ての要求を統括する規則を指定する定義。
4.94
図形文字(graphic character)
制御機能以外の文字であって,通常は手書き,印字又は表示の可視化表現をもつもの。
15
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
注記 この定義は,JIS X 0221の用語定義4.22(図形文字)に相当する。
4.95
図形記号(graphic symbol)
図形文字又はその合成列の可視化表現。
注記 この定義は,JIS X 0221の用語定義4.23(図形記号)に相当する。
4.96
(現地特性編集の)けたまとめ[grouping (in locale editing)]
数値及び金額の表記形式において,けたを区切って幾つかの組にする処理。
4.97
けたまとめ文字(grouping separator)
数値が読みやすくなるよう数字けたを区切るために用いられる文字。COBOLの既定解釈は文字のコン
マである。
4.98
最左端(high-order end)
文字列又はビット列の最左端位置。
4.99
入出力両用モード(i-o mode)
ファイル処理のモードの一つ。このモードでは,レコードの読込み,更新,追加,及び削除ができる。
4.100
入出力状態(i-o status)
一つのファイルに対して一つ存在する概念上の実体であって,そのファイルに対する入出力操作の実行
結果を表す値をもつ。
4.101
無条件文(imperative statement)
無条件動作を指示する文と,範囲明示文とのいずれか。
4.102
指標(index)
記憶領域又はレジスタであって,内容が表中の特定の要素を指すもの。
4.103
索引編成(indexed organization)
各レコードが,レコード中の幾つかのキーの値によって識別されるような,永続的な論理ファイル構造。
4.104
(クラスの)継承[inheritance (for classes)]
幾つかのクラスのインタフェース及び実装を用いて,別のクラスの基礎とする仕組み。
4.105
(インタフェースの)継承[inheritance (for interfaces)]
幾つかのインタフェースの仕様を用いて,別のインタフェースの基礎とする仕組み。
4.106
初期化プログラム(initial program)
呼び出された時点ではいつも初期状態に設定されるプログラム。
16
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4.107
初期状態(initial state)
実行単位中で最初に活性化された時点での関数・メソッド・プログラムの状態。
4.108
入力モード(input mode)
ファイル処理のモードの一つ。このモードでは,レコードの読込みだけができる。
4.109
インスタンスオブジェクト(instance object)
オブジェクトの単一のインスタンス。クラスによって定義され,ファクトリオブジェクトによって生成
される。
4.110
(オブジェクトの)インタフェース[interface (of an object)]
オブジェクトに対して定義された全てのメソッド群(継承されたメソッド群も含める)の名前。各メソ
ッドについては次による。
− 仮パラメタの順序付きの並び,各パラメタの記述,及び各パラメタの引渡し方法
− 指定があるときは返却値及びその記述
− 引き起こし得る例外状態の組
4.111
(言語構成)インタフェース[interface (the language construct)]
メソッド原型の集まり。
4.112
内部データ(internal data)
あるソース単位中で記述されたデータのうちで,外部データ項目及び外部ファイル結合子を除いた全て。
4.113
呼出し(invocation; method invocation)
4.123(メソッド呼出し)参照。
4.114
参照キー(key of reference)
索引ファイル中のレコードを呼び出すため現在使われている主レコードキー又は副レコードキー。
4.115
文字(letter)
基本文字(basic letter)又は拡張文字(extended letter)。
4.116
現地特性(locale)
利用者情報技術環境での機能であって,言語及び文化的規約を規定するもの。
4.117
施錠モード(lock mode)
レコード施錠が有効なファイルの状態であって,レコード施錠が手動か自動かを示している。
4.118
最右端(low-order end)
17
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
文字列又はビット列の最右端位置。
4.119
MCS(MCS; message control system)
4.120(通信管理システム)参照。
4.120
通信管理システム(message control system; MCS)
通信の処理を実現する通信制御システム。
4.121
メソッド(method)
あるクラスに属するオブジェクトに対して許される操作として,メソッド定義によって定義される手続
き実体。そのメソッド定義は,そのクラス定義の中にあるか,又は継承されたものである。
4.122
メソッドデータ(method data)
メソッド定義中で宣言されたデータ。
4.123
メソッド呼出し(method invocation; invocation)
名前付きメソッドをオブジェクトに対して実行するようにとの要求。
4.124
メソッド原型(method prototype)
メソッド呼出し及び適合検査に必要な情報を定義しているソース要素。
4.125
各国文字(national character)
各国文字集合の文字。
4.126
各国文字位置(national character position)
各国文字の単一文字を格納するのに必要な物理的記憶域の大きさ,又はそれを印字若しくは表示するの
に必要な表示スペースの大きさ。
4.127
各国文字集合(national character set; national coded character set)
4.128(各国文字符号化文字集合)参照。
4.128
各国文字符号化文字集合(national coded character set; national character set)
用途NATIONALと記述されたデータ項目及び各国文字定数を表現するために実装者が選定した文字集
合。
4.129
各国文字データ項目(national data item)
字類が各国文字である基本データ項目又は各国文字集団項目。
4.130
固有英数字文字集合(native alphanumeric character set)
計算機の英数字符号化文字集合。
18
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4.131
固有算術(native arithmetic)
実装者指定の技法を算術の扱いに用いる算術モード。
4.132
固有文字集合(native character set)
実装者定義の英数字,各国文字,又はその両方の文字集合であって,COBOL実行時モジュールの内部
処理に用いられるもの。固有文字集合は,特殊名段落のキーワードNATIVEで参照される。
4.133
固有文字照合順序(native collating sequence)
実行時モジュールが実行される計算機に関連する,実装者定義の文字照合順序であって,英数字照合順
序又は各国文字照合順序のいずれか。
4.134
固有各国文字符号化文字集合(native national coded character set)
計算機の各国文字符号化文字集合。
4.135
次のレコード(next record)
ファイルの現在レコードに論理上後続するレコード。
4.136
ナル(null)
ポインタがアドレスを保持していないことを示すポインタの状態,又はオブジェクト参照が参照を保持
していないことを示すオブジェクト参照の状態。
4.137
(COBOLの規則中での)数字[numeric character (in the rules of COBOL)]
次の数字集合に属する文字。0,1,2,3,4,5,6,7,8,9。
4.138
オブジェクト(object)
データ及びそのデータに対して作用するメソッドで構成される単位。
4.139
オブジェクトデータ(object data)
次のいずれかにおいて定義されたデータ。
− ファクトリ定義中。ただし,そのメソッド中で記述されたデータを除く。
− インスタンス定義中。ただし,そのメソッド中で記述されたデータを除く。
4.140
オブジェクトプロパティ(object property; property)
オブジェクトから値を得たり,値をオブジェクトに渡したりするために,オブジェクト参照の修飾語と
して用いてもよい名前。
4.141
オブジェクト参照(object reference)
オブジェクトへの参照を内容として含む,明示的又は暗黙に定義されたデータ項目。
4.142
19
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
オープンモード(open mode)
ファイル結合子の状態であって,関連するファイルに行ってもよい入出力動作の種類を示すもの。
4.143
不定ファイル(optional file)
実行時モジュールが実行されるとき必ずしも存在しなくてもよいように宣言されたファイル。
4.144
最も外側のプログラム(outermost program)
プログラムのうち,それに内包されるプログラムを包括し,他のいかなるプログラムにも内包されない
もの。
4.145
出力ファイル(output file)
出力モード又は拡張モードで開かれたファイル。
4.146
出力モード(output mode)
ファイル処理のモードの一つ。このモードでは,ファイルを作成し,そのファイルにレコードを追加す
ることだけができる。
4.147
物理ファイル(physical file)
物理レコードの物理的な集まり。
4.148
物理レコード(physical record; block)
4.19(ブロック)参照。
4.149
直前のレコード(previous record)
ファイルの現在レコードに論理上先行するレコード。
4.150
手続き(procedure)
手続き部内の連続した一つ以上の段落又は節の集まり。
4.151
手続き分岐文(procedure branching statement)
書いた順に従わず,次に実行可能な文ではない他の文へ明示的な制御の移行を起こす文。
4.152
処理系(processor)
ハードウェア及びソフトウェアの両者を包括した計算機システムであって,ソースコードの翻訳,実行
単位の実行,又はその両方に用いられるもの。
4.153
プログラム原型定義(program prototype definition)
副プログラムが受け取ることを期待しているパラメタの字類,及びその副プログラムへ制御を移し,そ
こから制御を受け取り,情報を引き取るために必要とされる,その他の全ての要求を,統括する規則を示
す定義。
20
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4.154
プロパティ(property; object property)
4.140(オブジェクトプロパティ)参照。
4.155
乱呼出し(random access)
相対ファイル又は索引ファイルに対して読込み・削除・書込みを行う論理レコードを,キーデータ項目
の値によって識別する呼出し法。
4.156
レコードキー(record key)
索引ファイル中のレコードを識別するために用いる,レコード中のデータ項目。
4.157
レコード錠(record lock)
共用される物理ファイル中の特定レコードへの同時呼出しを制御するために用いる,概念上の実体。
4.158
レコード施錠(record locking)
共用される物理ファイル中のレコードへの同時呼出しを制御するための機能。
4.159
相対項目(relative item)
報告書中の項目であってその位置が直前の項目からの相対位置で指定されるもの。
4.160
相対キー(relative key)
相対レコード番号を内容としてもつデータ項目。
4.161
相対編成(relative organization)
各々のレコードの論理的な位置が相対レコード番号によって一意に識別される,永続的な論理ファイル
構造。
4.162
相対レコード番号(relative record number)
相対編成のファイル中のレコードの順序番号。
4.163
報告書(report)
報告書節で記述され,そのデータ記述から生成される印字出力。
4.164
報告書作成機能(report writer)
一連の処理段階を通してではなく,一般的な体裁に従って記述されたような印字レイアウトを可能にす
る,データ句及び文の包括的な集合。
4.165
制限付きポインタ(restricted pointer)
特定の型のデータ項目,又は指定されたプログラムと同じ呼出し情報をもつプログラムに,指す対象が
制限されているポインタデータ項目。
21
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4.166
実行単位(run unit)
問題解決を提供する一つの実体として,実行時に相互に作用しながら機能する,一つ以上の実行時モジ
ュール。
4.167
実行時要素(runtime element)
ソース要素を翻訳した結果として生成された実行可能単位。
4.168
実行時モジュール(runtime module)
翻訳単位(compilation unit)を翻訳した結果。
4.169
順呼出し(sequential access)
呼出し法の一つ。この呼出し法では論理レコードが,レコードを書き出す文の実行の順序でファイル中
へと書き出され,書き出された順序でレコードが読み込まれる。
4.170
順編成(sequential organization)
ファイルにレコードを書き出した時点で確定する前後関係によってレコードが識別される,永続的な論
理ファイル構造。
4.171
共用モード(sharing mode)
ファイルの状態であって,ファイル共用のモードを示すもの。
4.172
ソース要素(source element)
ソース単位から内部に含まれるソース単位を除いたもの。
4.173
ソース単位(source unit)
見出し部から始まり,終了標又は翻訳群の終わりで終わる一連の文の並び。その内部にある,あらゆる
入れ子のソース単位も包含する。
4.174
標準算術(standard arithmetic)
算術式,算術文,SUM句並びに特定の整数関数及び数字関数を扱うのに用いられる技法を,規格が規定
している算術のモード。
4.175
標準中間データ項目(standard intermediate data item)
標準算術が有効であるとき,算術作用対象を保持するのに用いられる,一時的な抽象的10進浮動小数点
データ項目。
4.176
静的データ(static data)
ソース要素に再入した時点で直前使用状態をもつデータ。
4.177
22
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
下位クラス(subclass)
別のクラスを継承するクラス。継承関係にある二つのクラスを考える場合に,下位クラスは継承者つま
り継承する側のクラスであり,上位クラスは被継承者つまり継承される側のクラスである。
注記 技術文献中では,下位クラスという用語の代わりに“派生クラス(derived class)”という用語
もよく用いられる。これらの用語は同義である。
4.178
記述項の左辺(subject of the entry)
データ記述項によって定義されるデータ項目。
4.179
添字(subscript)
表の特定の要素を指すために用いられる番号。添字ALLの場合,表の全ての要素を指す。
4.180
上位クラス(superclass)
他のクラスに継承されるクラス。
4.181
サロゲートペア(surrogate pair)
国際符号化文字集合の単一抽象文字に対する,2オクテット値二つの並びからなるUTF-16形式の符号化
文字表現。この一対の,一つ目の値が上サロゲート(high-surrogate)であり,二つ目の値が下サロゲート
(low-surrogate)である。
注記 国際符号化文字集合を規定しているJIS X 0221では,サロゲートペア,上サロゲート,下サロ
ゲートとはいわずに,区点要素の対,上半分の領域の区点要素,下半分の領域の区点要素とい
っている。
4.182
(型宣言の)型[type (for type declaration)]
データ項目及びその従属項目の全ての性質をもつひな型。
4.183
UCS(UCS; Universal Multiple-Octet Coded Character Set)
4.184(国際符号化文字集合)参照。
4.184
国際符号化文字集合(Universal Multiple-Octet Coded Character Set; UCS)
JIS X 0221によって定義される符号化文字集合。この符号化文字集合が包含する文字群は,現代世界中
で記述に用いられるほぼ全ての言語を網羅している。
4.185
非限定オブジェクト参照(universal object reference)
オブジェクト参照であって,特定クラス又は特定インタフェースへの制限はないもの。
4.186
実行不成功(unsuccessful execution)
実行を試みた結果として,文に指定された全ての操作を実行しなかった文。文の実行不成功は,その文
で参照されるデータに影響を及ぼさないが,状態指示子に影響を及ぼすことがある。
4.187
23
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
可変反復データ項目(variable-occurrence data item)
可変回数反復する表要素。
4.188
長さゼロの項目(zero-length item)
取り得る長さの最小値がゼロであり,実行時に長さがゼロになる項目。
5
記述技法
規格COBOLを記述するのに用いられる技法には,次のものがある。
− 一般形式
− 規則
− 算術式
− 形式的でない記述
5.1
一般形式
一般形式(general format)は,規格COBOLの要素の構文及び要素の並べ方を規定する。
個々の一般形式の中にある語(word),指定(phrase),句(clause),句読点,及び作用対象は,その一
般形式の規則で特に断らない限り,翻訳群中において,一般形式に示された順序で書かなければならない。
特定の言語構成に対して並べ方が複数種類ある場合,一般形式は,番号と名前とを付けた複数の形式に
分けて示される。
注記 この個々の形式をCOBOLのJISでは“書き方”と呼ぶ。
一般形式を書き表すのに用いられる要素には,次のものがある。
− キーワード
keyword
− 補助語
optional word
− 作用対象
operand
− レベル番号
level number
− 選択可能項目
option
− 角括弧 [ ]
(square) brackets
− 波括弧 { }
(curly) braces
− 選択指示子 | |
choice indicators
− 省略記号
ellipses
− 句読点
punctuation
− 特殊文字
special character
− メタ用語
meta-term
5.1.1
キーワード
キーワード(keyword)は,予約語又は文脈依存語である。これらを一般形式中では,下線のある大文字
で示す。キーワードに関連する機能を選択するには,これらを必ず指定しなければならず,また5.1.5(選
択可能項目)に規定する規約,及び一般形式に対する構文規則に従わなければならない。
5.1.2
補助語
補助語(optional word)は,予約語又は文脈依存語である。これらは一般形式中では,下線のない大文
字で示される。補助語が定義されている句又は指定をソース単位の中に書く場合,補助語を書いて意味を
明確にしてもよい。
24
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
5.1.3
作用対象
作用対象(operand)は,式,定数,データの参照又は例外状態の参照である。作用対象は日本語で示さ
れ,ソース単位を書くときにプログラマが与える項目,条件又は対象の,値又は識別を表すものである。
次に示す用語はいずれも,対応する言語要素の出現を指す。これは“記述箇所”欄に記された参照段落
の規定による。そのような用語は日本語で表記され,一意参照のため各々に接尾辞の数字が附加される。
作用対象の種類
記述箇所
用語(n=1,2,3,…)
引数
15.2(引数)
引数n
式
8.8(いろいろな式)
算術式n
ブール式n
条件式n
整数
5.4(整数作用対象)
整数n
定数
8.3.1.2(定数)
定数n
参照
8.4(参照)
a) 利用者定義語,
必要に応じて修飾及
び添字付けも含める
8.3.1.1.1(利用者定義語)
8.4.1.1(修飾)
8.4.1.2(添字)
8.3.1.1.1に挙げた種類のいずれか
に接尾語の数字を附加したもの
b) 一意名
8.4.2(いろいろな一意名)
一意名n
c) 例外名
14.5.12.1.5(例外名及び
例外状態)
例外名n
5.1.4
レベル番号
一般形式中に特定のレベル番号がある場合は,その書き方をソース単位中に書くときに必ずそのレベル
番号を指定しなければならない。レベル番号の書き方1,2,…,9はそれぞれ01,02,…,09と2けたで
書いてもよい。
5.1.5
選択可能項目
選択可能項目(option)は,一般形式中において角括弧,波括弧又は選択指示子の内部に取り得る選択
肢を縦に並べて書くことで示す。選択可能項目の一つを選択するには,取り得る選択肢の組のうち1種類
を指定するか,角括弧,波括弧又は選択指示子の並びから一意な選択肢の組合せを指定する。
5.1.5.1
角括弧
角括弧(brackets,[ ])で一般形式の一部を囲んである場合は,その角括弧の内部にある構文要素又
は選択肢の一つを明示的に指定してもよいし,一般形式のその部分を省略してもよい。省略された要素の
代わりに想定される既定解釈はない。
5.1.5.2
波括弧
波括弧(braces,{ })で一般形式の一部を囲んである場合,その波括弧の内部にある構文要素又は選
択肢の一つを明示的に指定するか,暗黙に選択するかしなければならない。選択肢の一つが補助語だけか
らなるときは,その選択肢が既定解釈であって,別な選択肢を明示的に指定しない限りその選択肢を暗黙
に選択したことになる。
5.1.5.3
選択指示子
選択指示子(choice indicators)とは,波括弧又は角括弧で囲まれた一対の縦棒( | | )であって,一般形
式の一部を囲んでいるものである。波括弧で囲んだ場合,その選択指示子の内部にある選択肢は一つ以上
25
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
を指定しなければならないが,同じ選択肢の指定は一度だけでなければならない。角括弧で囲んだ場合,
その選択指示子の内部にある選択肢は,省略するか又は一つ以上を指定しなければならないが,同じ選択
肢は一度だけ指定してもよい。選択肢の指定の順序は任意である。
5.1.6
省略記号
省略記号(ellipses,…)は,一般形式中において書き方の一部を利用者が繰り返し選択する箇所を表す。
書き方のうち繰り返してもよい部分の決定方法は次による。書き方の中に省略記号がある場合,右から左
へと読み進めて,省略記号の直前にある右角括弧又は右波括弧の区切り記号を決定する。さらに,右から
左へ読み進めて,それと論理的に対応する左角括弧又は左波括弧の区切り記号を決定する。書き方のうち
決定された区切り記号の一対で囲まれた部分に省略記号が適用される。
注記 一般形式以外の本文中での省略記号は,省略しても理解が損なわれない場合に限って,語句又
は語句の並びが省略されていることを表す。これが,省略記号の本来の意味であり,その用途
は文脈中で明確になる。
5.1.7
句読点
分離符のコンマ及びセミコロンは,一般形式及びその他の構文規定の中で分離符の空白を用いる箇所で
あればどこで用いてもよい。翻訳群中で,これらの分離符は交換可能とする。
一般形式中に規定された分離符の終止符は,その書き方を使用する場合は必須である。
5.1.8
特殊文字
書き方の中に現れる特殊文字の語及び分離符には下線はないが,その書き方の,その部分を用いる場合
には,必ず指定しなければならない。
5.1.9
メタ用語
メタ用語は,一般形式中では小文字又は日本語で示され,一般形式の部分の名前を表す。Xをメタ用語
とすると,この部分は書き方の主部の下に“Xは,次による。”と指定される。
5.2
規則
組込み関数以外に対しては,規則は大別して構文規則と一般規則とに分類される。組込み関数に対して
は,代わりに引数の規則及び関数の返却値の規則とがある。
5.2.1
構文規則
構文規則(syntax rule)は,一般規則を補完したり,等価な語を認定したり,更に大きな要素である指定,
句,文などを形成するために語又は要素を書いてもよい順序を規定又は明確化したりする。さらに,個々
の語又は要素に制限を課したり,語又は要素による暗黙の制限を緩和したり,その他の構文規則中で用い
てもよい用語を定義したりもする。
PICTURE句の規則のうち,13.16.38.5(順序規則)の規定は構文規則である。
構文規則が,ある語を別な語(又は語列)とは同義,略記,又は等価であると規定している場合,両者
は書き方の上で交換可能であって同じ意味をもつ。
5.2.2
一般規則
一般規則(general rule)は,ある要素の意味又は要素間の意味の相互関連を規定又は明確化する。一般
規則は,文の意味及び実行時又は翻訳時における効果を規定又は明確化するために用いられ,後に続く一
般規則で用いる用語を定義することもある。
PICTURE句の規則のうち,13.16.38.4(編集規則)の規定は一般規則である。
5.2.3
引数の規則
引数の規則は,組込み関数への引数に関連する要求事項,制約事項又は既定解釈を規定する。
26
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
5.2.4
関数の返却値の規則
関数の返却値の規則は,組込み関数の意味を規定する。
5.3
算術式
規則の中には,COBOL構文の結果の一部又は全部を規定する算術式が含まれたものもある。算術式の
表記の中では,次に示す特別な記法又は意味の異なる記法を用いる。
5.3.1
本文中での作用対象の下付き数字
作用対象に本文中“作用対象jn”のような下付き数字がある場合,用語“作用対象j”が特定の作用対象
を示し,“n”が“作用対象j”のn番目の位置又は実体を示している。
注記 例えば,15.61(PRESENT-VALUE関数)の関数の返却値の規則に現れる。
5.3.2
省略記号
省略記号は,項又は演算子の個数が可変であることを表す。
5.4
整数作用対象
1) 用語“整数n”(n=1,2,…)は,一般形式又は関連規則中で用いた場合,固定小数点整数定数を指
す。関連規則中に別の指定がない限り,符号なしのゼロでない整数でなければならない。
2) 用語“整数”を構文規則中で制約条件に使用した場合は,次による。
a) その作用対象が定数のとき,整数定数でなければならない(8.3.1.2.2.1参照)。
b) その作用対象がデータ名又は一意名のとき,次のいずれかでなければならない。
1. 整数型の組込み関数
2. 組込み関数以外の固定小数点数字データ項目で,小数点の右側にけた位置のない記述をもつもの。
3) 用語“整数”を一般規則中で制約条件に使用した場合,その作用対象は実行時に次のとおり評価され
なければならない。
a) 固有算術が有効であるとき,どのような場合に作用対象が整数になるかは,実装者定義とする。
b) 標準算術が有効であるとき作用対象は,特異な値のゼロをもつか,10進固定小数点表現が小数点の
右側にゼロだけをもつ,標準中間データ項目と等しくなければならない。
注記1 指数の値が31を超えるとき,その標準中間データ項目の値は整数である。
注記2 指数の値が1未満であるとき,その標準中間データ項目の値は整数ではない。
c) 固有算術が有効であるとき,算術式が整数になる条件は,実装者定義とする。
5.5
形式的でない記述
COBOL仕様書の相当な部分は,言葉,表,及び一般形式以外の図で,形式的でなく記述される。これ
らの部分は,通常は5.2.2(一般規則)で示した,意味を規定するものであるが,5.1(一般形式)及び5.2.1
(構文規則)で示した事項に附加する構文上の要求事項が含まれることもある。意味が振る舞いを規定す
るのに対して,構文上の要求事項はソースコードの書き方を規定する。
5.6
本文中のハイフン
本文の行末に現れるハイフンは,それが区切る文字列又は語の一部とする。複数の行にまたがる文字列
又は語を行末で分割するためにハイフンを用いることはない。
注記 この規定は,COBOLの国際対応規格での英文行末ハイフンについての言及であり,日本語で
書かれたCOBOLのJISでは該当しない。
5.7
規定条項の文章の末尾
この規格の規格本文中では決まった文章の末尾を用いて,規格合致のため要求事項,選択の自由が認め
られる条項,及び推奨事項の相違を区別している。これらの文章の末尾は,JIS Z 8301の附属書H(規定
27
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
を表す言葉の表現形式)による。
この規格中で用いる規定の文章の末尾及び代替表現を,次の表1に要約して示す。
表1−文章の末尾
意味の区別
文章の末尾
国際規格での対応英語
実装系又はプログラムに関す
る要求事項であり,規格への合
致のために厳密に従わなけれ
ばならない。
…(し)なければならない。
… とする。
… による。
…(し)てはならない。
…(し)ない。
shall
(要求規定)
同類: is required to
is
is to
shall not (禁止規定)
同類: is not permitted
is not allowed
規格の表現する許容事項。
…(し)てもよい。
…差し支えない。
…しなくてもよい。
…する必要はない。
may
(許容規定)
同類: is permitted
is allowed
need not (不要規定)
同類: is not required to
規格の表現する推奨事項。
従わなくてもよい。
…することが望ましい。
…するほうがよい。
…しないほうがよい。
should
同類: it is recommended that
is recommended
should not
同類: is not recommended
利用者に公開された
規格の能力又は可能性。
…できる。
…できない。
can
同類: is able to
it is possible to
is possible
cannot
6
正書法
正書法は,COBOLのソース原文及び登録集原文を記述するための規約である。COBOLには,自由形式
正書法及び固定形式正書法の2種類の正書法が用意されている。この2種類の正書法は,ソース原文及び
登録集原文の中又は間で混在してもよく,そのためにSOURCE FORMAT翻訳指示が用いられる。翻訳群
の正書法の既定解釈は,固定形式とする。
次の規則が,指定された正書法に適用される。
1) 自由形式及び固定形式
a) 正書法は,入出力媒体上の行上の文字位置の観点で記述される。
b) COBOLコンパイラは,正書法に従って書いたソース原文及び登録集原文を受け付けなければなら
ない。
c) 行及び文字位置の意味は,実装者定義とする。
注記 以前の規格では,どの種類の文字が用いられるのか明確でなかったが,一般的には均一な
幅をもつ英数字の列と想定されていた。
28
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
d) 翻訳群の原文の解析上,翻訳群の最初の文字列には先行する分離符の空白があるとみなし,翻訳群
の最後の文字列には後続する分離符の空白があるとみなす。
2) 固定形式
a) COBOLコンパイラは,固定形式正書法の行を処理して,その行を固定形式から自由形式に論理的
に変換しなければならない[6.4(論理的変換)参照]。
b) 論理的変換の後は,自由形式に変換された行が,自由形式正書法の要求を満たさなければならない。
ただし,行の長さは延びてもよいが,英数字定数及び各国文字定数の中では計算機文字集合の全て
の文字がそのまま保持されなければならない[規則3) b) 参照]。
3) 自由形式
a) 1行上の文字位置の数は行ごとに変わってもよく,その範囲は最小値0から最大値255までとする。
b) 自由形式の行の終端を示す制御文字は,実装者定義とする。そのような制御文字が,注記,英数字
定数及び各国文字定数の中に記述できるかどうかは,実装者定義とする。
6.1
標識
標識(indicators)とは,コンパイラへ正書法の解釈を指示するものである。標識は固定標識と浮動標識
とに分類される。
6.1.1
固定標識
固定標識(fixed indicators)は,固定形式正書法の標識領域に指定してもよい[6.2(固定形式正書法)参
照]。固定標識を次に示す。
文字
標識の名前
その意味
*
注記標識
注記行
/
注記標識
注記行で改ページを伴うもの
D
デバッグ標識
デバッグ行
d
デバッグ標識
デバッグ行
‒(ハイフン)
継続標識
後の行
空白
ソース標識
注記行・デバッグ行・後の行以外のあらゆる
行
固定標識の文字は,COBOL文字レパートリ中の文字ではなく,固定形式正書法に用いるために実装者
が定義した符号化文字集合の文字とする。
注記 ここで重要なことは,固定標識については,英数字と各国文字との等価性が要求もされないし,
排除もされないという点である。その意図は,以前の規格COBOLとの上位互換を許すためで
ある。以前の規格では文字に英数字及び各国文字という分類が存在しなかった。
6.1.2
浮動標識
浮動標識(floating indicators)は,固定形式正書法で用いても,自由形式正書法で用いてもよい。浮動標
識は,次に示すCOBOL文字列とする。
文字列
標識の名前
その意味
*>
注記標識
1) 注記行(プログラム原文領域中で先頭文字列として指
定した場合)。
2) 行内注記(プログラム原文領域中で一つ以上の文字列
の後に指定した場合)。
なお,6.1.2.1(構文規則)にも従わなければならない。
29
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
>>
翻訳指示標識
翻訳指示行(空白を挟むか否かにかかわらず,次に翻訳指
示語が続く場合)。
なお,7.2(翻訳指示)の規則にも従わなければならない。
"‒
'‒
定数継続標識
定数の継続(未完結の定数で,開始区切りに用いたのと同
じ引用記号を指定した場合)。
なお,6.1.2.1(構文規則)にも従わなければならない。
>>D
デバッグ標識
デバッグ行(直後に1個以上の空白文字が続く場合)。
6.1.2.1
構文規則
1) 翻訳群の原文の解析上,浮動注記標識の直後には空白1個を書いたものとみなす。
2) 行内注記の浮動注記標識は,直前に分離符の空白がなければならない。これは,分離符の空白を書い
てもよいところならどこに書いてもよいが,次に示す例外がある。
− 浮動注記標識の直前におく分離符の空白の代わりとしては,書いてはならない。
− 浮動定数継続標識の直後に書いてはならない。
3) 複数文字の浮動標識を形成する文字は,全体を同じ行の中に書かなければならない。
4) 浮動定数継続標識は,英数字定数・ブール定数・各国文字定数に対してだけ書いてもよい。一つの定
数を継続するために継続の書き方を2種類以上混ぜて用いてはならない。
5) 浮動定数継続標識を,固定定数継続標識のある行に書いてはならない。
6) 複数行にわたって継続する英数字定数・ブール定数・各国文字定数に対しては,各々の後の行の最初
の非空白文字は,その定数の開始区切り記号に用いた引用記号でなければならない。
7) 浮動デバッグ標識と同じ行の中に,先行して書いてもよいものは空白文字だけとする。
8) 浮動デバッグ標識を,固定デバッグ標識又は固定継続標識のある行に書いてはならない。
注記 デバッグ標識及びデバッグ機能は,廃要素であって,規格COBOLの次の版からは削除される
予定である。
6.2
固定形式正書法
固定形式正書法の行の書き方は,次による(図1参照)。
境界
境界
境界
境界
L
C
A
R
1
2
3
4
5
6
7
8
9
10 11 12 13
・・・
一連番号領域
標識領域
プログラム原文領域
図1−固定形式正書法
境界Lは,行の最左端文字位置のすぐ左とする。
境界Cは,行の6番目と7番目の文字位置の間とする。
境界Aは,行の7番目と8番目の文字位置の間とする。
境界Rは,プログラム原文領域の最右端文字位置のすぐ右とする。最右端文字位置は固定で,実装者定
義とする。
一連番号領域は,6個の文字位置(1〜6)を占め,境界Lと境界Cとの間とする。
標識領域は,行の7番目の文字位置とする。
プログラム原文領域は,文字位置8から始まり,境界Rのすぐ左の文字位置で終わる。
30
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
6.2.1
一連番号領域
一連番号領域を利用して,ソース原文及び登録集原文の行を識別してもよい。一連番号領域の内容は,
利用者によって定義され,計算機文字集合中の任意の文字で構成される。一連番号領域の内容は,特定の
順序でなくてもよいし,一意でなくてもよい。
6.2.2
標識領域
標識領域は,6.1.1(固定標識)に規定された標識に従ってソース行の種類を識別する。
6.2.3
プログラム原文領域
プログラム原文領域の内容は,次に示すいずれかであってもよい。
1) 標識領域の内容が注記標識である場合,注記行の注記原文。
2) 標識領域の内容がデバッグ標識,継続標識,又はソース標識である場合,次に示すいずれか又はその
組合せで,更に構文の規定に従うもの。
− 文字列(COBOLの語)
− 分離符
− 注記
− 浮動標識
3) 全て空白。
6.2.4
行の継続
ある記述項,完結文,文,句,指定又は仮原文が複数の文字列からなるとき,2番目以降のCOBOLの
語,定数又はPICTURE文字列は,後に続く行のプログラム原文領域に書いてもよい。
一つのCOBOLの語,定数又はPICTURE文字列を分けて,その一部を後に続く幾つかの行にわたって
書いてもよい。後続する行を後の行(continuation line)と呼び,先行する行を前の行(continued line)と呼
ぶ。COBOLの語,PICTURE文字列,又は英数字・ブール・各国文字以外の定数が継続中であることは,
固定継続標識を後の行に書くことで示す。
注記 COBOLの語の継続は旧式要素であり,使用しないほうがよい。しかしながら以前の規格COBOL
との互換性のため,固定形式正書法では用いてもよい。
英数字定数・ブール定数・各国文字定数を継続することは,次のいずれかで示す。
1) 英数字定数又はブール定数の途中に,終了区切り記号なしの行末があって,その次にくる注記行でも
空白行でもない行に固定継続標識がある。
2) 英数字定数・ブール定数・各国文字定数の途中に,浮動定数継続標識付きの行末がある。
継続が固定継続標識による場合,その継続対象である固定形式行の末尾の空白は全て,その定数の一部
となる。
継続が固定継続標識による場合も浮動定数継続標識による場合も,その次にくる注記行でも空白行でも
ない行が,後の行である。後の行のプログラム原文領域内にある最初の非空白文字は,開始区切り記号に
用いた引用記号に釣り合う引用記号でなければならない。継続が始まる箇所は,後の行のこの引用記号の
直後の文字位置である。
各国文字定数は,浮動定数継続標識によってだけ継続してもよい。
複数文字からなる分離符,又は標識を構成する文字は,全てを同一の行に記述しなければならない。呼
出し演算子"::"を構成する文字は,全てを同一の行に記述しなければならない。
一つの定数を分かち書きした幾つかの行の間に,注記行及び空白行が挟まってもよい。
ある行に固定継続標識がないとき,翻訳群の原文の解析上,その行の最初の非空白文字の前に空白1個
31
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
を書いたものとみなす。
6.2.5
空白行
空白行とは,境界Cから境界Rまでの内容が空白文字だけである行をいう。空白行は,翻訳群のどの行
として書いてもよい。
6.2.6
注記
注記は,注記標識とそれに後続する注記原文とからなる。注記原文中には,翻訳時の計算機文字集合の
いかなる文字の組合せを書いてもよい。
注記はただの注釈として扱われ,翻訳群の意味上の効果はない。
注記は,注記行であることも行内注記であることもある。
6.2.6.1
注記行
注記行は,固定注記標識又は浮動注記標識で示される。注記標識の直後から境界Rまでの全ての文字が
注記原文である。注記行は,翻訳群のどの行として書いてもよい。
印字出力が生成される場合,固定注記標識の斜線 "/" によって示される注記行は,その注記行の印字に
先立って改ページを引き起こし,固定注記標識の星印 "*" によって示される注記行は,印字出力の,次に
出力可能な位置に印字される。
6.2.6.2
行内注記
浮動注記標識の前のプログラム原文領域内に一つ以上の文字列があると,その浮動注記標識は行内注記
を示す。その浮動注記標識の直後から境界Rまでの全ての文字が注記原文である。行内注記は,浮動定数
継続標識のある行を除けば,翻訳群のどの行に書いてもよい。
6.2.7
デバッグ行
デバッグ行は,固定デバッグ標識又は浮動デバッグ標識で示される。境界Aから境界Rまでが空白だけ
で構成されるデバッグ行は,空白行と同じとみなされる。デバッグ行は連続して指定してもよい。
デバッグ行は,翻訳用計算機段落の後であれば,翻訳単位中のどこに書いてもよい。
全てのCOPY文及びREPLACE文が処理された後,翻訳用計算機段落にWITH DEBUGGING MODE句
がない場合は,デバッグ行は注記行の特性をもつ。
注記 デバッグ行はこの規格の廃要素であり,規格COBOLの次の版からは削除される予定である。
6.3
自由形式正書法
自由形式正書法では,ソース原文及び登録集原文を,行の中のどの文字位置に書いてもよい。ただし,
注記,デバッグ行及び継続に対しては特別な規則がある。
6.1.2(浮動標識)に規定された標識が,翻訳群の特定要素を識別する。自由形式の行は,その全体がそ
の行のプログラム原文領域を構成する。
6.3.1
行の継続
一つ以上の文字列からなるあらゆる記述項,完結文,文,句,指定又は仮原文は,それを構成する文字
列及び分離符の幾つかを後に続く行に書くことで,行を継続してもよい。
英数字定数・ブール定数・各国文字定数は,行をまたいで続いてもよい。続けられる行を前の行と呼び,
後続する行を後の行と呼ぶ。このような定数が行末で完結しない場合は,定数の未完結の部分が浮動継続
標識で終わらなければならない[6.1.2(浮動標識)参照]。浮動継続標識の直後に,分離符の空白が一つ
以上あってもよい。後の行に現れる最初の非空白文字は,開始区切り記号に用いた左引用記号に釣り合う
引用記号でなければならず,その引用記号の後に現れる最初の文字が,定数の継続の最初の文字となる。
定数の内容中,前の行及び後の行にはそれぞれ,英数字,各国文字又は16進数字を少なくとも一つ記述し
32
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
なければならない。
複数文字からなる分離符又は標識を構成する文字は,全てを同一の行に記述しなければならない。定数
内で引用記号1個を表す連続した引用記号2個は,同一の行に記述しなければならない。
一つの定数を分かち書きした幾つかの行の間に,注記行及び空白行が挟まってもよい。
6.3.2
空白行
空白行とは,空白文字以外を含まない行,又は文字位置が一つもない行である。空白行は翻訳群のどこ
にあってもよい。
6.3.3
注記
注記は,注記標識とそれに後続する注記原文とからなる。注記標識の直後から行末までの全ての文字が
注記原文である。
注記原文中には,箇条6(正書法)の規則3) b) に示した文字を除き,翻訳時の計算機文字集合のどのよ
うな文字の組合せを書いてもよい。
注記は,ただの注釈として扱われ,翻訳群の意味上の効果はない。
注記は,注記行であることも行内注記であることもある。
6.3.3.1
注記行
注記行は,行の先頭文字列として指定した浮動注記標識によって示される。注記行は,翻訳群のどの行
として書いてもよい。
6.3.3.2
行内注記
浮動注記標識の前の行中に一つ以上の文字列があると,その浮動注記標識は行内注記を示す。行内注記
は,浮動定数継続標識のある行を除けば,翻訳群のどの行に書いてもよい。
6.3.4
デバッグ行
デバッグ行は,一つのデバッグ標識,デバッグ標識に先行して置いてもよい一つ以上の空白文字,及び
デバッグ標識に続く行中の全ての文字位置からなる。デバッグ行の終わりは行末とする。
デバッグ行は,翻訳用計算機段落の後であれば,翻訳単位中のどこに書いてもよい。
全てのCOPY文及びREPLACE文が処理された後,翻訳用計算機段落にWITH DEBUGGING MODE句
がない場合は,デバッグ行は注記行の特性をもつ。
注記 デバッグ行はこの規格の廃要素であり,規格COBOLの次の版からは削除される予定である。
6.4
論理的変換
固定形式正書法のソース原文及び登録集原文は,置換及び条件翻訳の動作が適用される前に,自由形式
正書法へ論理的に変換される。固定形式及び自由形式での前の行及び後の行は連結されて継続標識は除去
され,注記行及び空白行は両方の形式から除去される。論理的変換の結果として生じる自由形式原文の,
行の長さの最大値に関する制限はない。
注記 固定形式正書法が翻訳中に自由形式正書法へと論理的に変換される理由は,その他の言語規則,
例えばCOPY文のREPLACING指定及びREPLACE文の理解を容易にするためである。
実装者は,効果が同じでありさえすれば,実際に変換を行わなくともよい。正書法及び原文
操作の規則は,実際の変換の有無に関係なく適用される。
論理的変換の規則は,コンパイラがソース原文及び登録集原文の行を入力する順序で,翻訳群の個々の
行に適用される。これらの行は,翻訳群の先頭行から終わりに達するまで順に調べられる。結果としての
論理的変換済みの翻訳群は,自由形式正書法であり,次のとおりに生成される。
1) SOURCE FORMAT指示の行の場合,正書法の種類が決定され その後SOURCE FORMAT指示の行は
33
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
論理的には捨てられる。
2) 注記行又は空白行の場合,その行は論理的には捨てられる。
3) 行内注記がある場合,その行内注記は空白で置換され その行の処理が続く。
4) 固定形式又は自由形式の行に浮動定数継続標識がある場合,プログラム原文領域の末尾は継続標識の
直前の文字の直後にあるものとされる。継続標識それ自体及び後続するあらゆる文字列は論理的には
捨てられ,その行の処理が続く。
5) 固定形式の行に固定デバッグ標識がある場合,結果の翻訳群の中に自由形式の行が生成され,その構
成は浮動デバッグ標識と後続する空白,その後に固定形式でのプログラム原文領域の内容となる。
6) 固定形式の行にソース標識があり後の行ではない場合,その行のプログラム原文領域が結果の翻訳群
へと複写される。
7) 固定形式の行に固定継続標識がある場合は,次による。
a) 継続対象文字列が英数字定数又はブール定数であれば,プログラム原文領域の内容の最初の引用記
号の後の最初の文字から始まる部分が,結果の翻訳群の最新論理行の中の最後の文字のすぐ右へと
附加される。
b) さもなければ,プログラム原文領域の内容の最初の非空白文字から始まる部分が,結果の翻訳群の
最新論理行の中の最後の文字のすぐ右へと附加される。
8) 自由形式の行であり後の行ではない場合,その行が結果の翻訳群へと複写される。
9) 固定形式又は自由形式の行が直前の浮動定数継続標識による後の行である場合,プログラム原文領域
の内容のうち最初の引用記号の後の最初の文字から始まる部分が,結果の翻訳群の最新論理行の中の
最後の文字のすぐ右へと附加される。
10) その次の行が入力されて処理は1) から繰り返される。
翻訳群の終わりに達すると,結果としての論理的変換済み翻訳群を用いて処理が続く。ソース印字出力
を生成する実装のとき,ソース印字に対する論理的変換の影響は,実装者定義とする。
7
翻訳指示機能
翻訳指示機能は,原文操作のための翻訳指示文,原文操作のための翻訳指示及び翻訳オプションを指定
するための翻訳指示からなる。
翻訳群処理には,翻訳指示文及び翻訳指示の動作が起きる段階が2種類ある,すなわち原文操作段階と
翻訳段階とである。
原文操作段階(text manipulation stage)では,元の翻訳群を受け取り,COPY文,REPLACE文,及び条
件翻訳の指示に指定された修正を実行し,定数記述項の翻訳変数を置き換える。成果物は,翻訳段階で処
理する構造化翻訳群である。
翻訳段階(compilation stage)では,その構造化翻訳群を利用しての翻訳処理を完成する。
翻訳指示文及びこれらの動作が起きる段階を,次に示す。
翻訳指示文
段階
COPY文
原文操作
SUPPRESS指定
実装者定義
REPLACE文
原文操作
さらに,翻訳指示及びこれらの動作が起きる段階を,次に示す。
翻訳指示
段階
34
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
CALL-CONVENTION 翻訳
DEFINE
原文操作
EVALUATE
原文操作
FLAG-85
翻訳
IF
原文操作
LEAP-SECOND
翻訳
LISTING
実装者定義
PAGE
実装者定義
PROPAGATE
翻訳
SOURCE FORMAT
原文操作
TURN
翻訳
印字出力(もし指定があれば)に関連する動作が起きる段階は,実装者定義とする。
翻訳変数値から定数記述項への代替が起きるのは原文操作段階である。デバッグ行は,翻訳段階で取り
込まれるか又は取り除かれる。パラメタ付きクラス及びパラメタ付きインタフェースを展開する方法及び
展開する時点は,原文操作段階より後で展開されることを除いて,実装者定義とする。
7.1
原文操作
翻訳群処理の原文操作段階ではソース原文及び登録集原文からソース行を受け入れて,条件翻訳を通し
てソース行を選択的に取り込み,原文を修正して構造化翻訳群を生成する。
次に示す要素群とこれらの識別に必要な分離符とは,元々のソース原文及び登録集原文の中で,構文的
に正しいものでなければならない。
− COPY文
− 翻訳指示
− 英数字定数,ブール定数及び各国文字定数
− 固定標識及び浮動標識
− 定数記述項でFROM指定のあるもの
REPLACE文は,COPY文のREPLACING指定の動作の後に,構文的に正しいものでなければならない。
これ以外の標識,言語要素及び分離符は,原文操作段階が完了するまでは構文的に正しいものでなくて
もよい。
原文操作は,ソース原文及び登録集原文の行に作用する幾つかの処理からなり,これらの処理は特定の
順序で有効になる。最終結果が同じになりさえすれば,実装者は実際の処理順序及び相互作用をあらゆる
方法で最適化してもよい。次に示す処理をこの順序で適用する。
1) 展開形の翻訳群(expanded compilation group)を,論理的に自由形式正書法で生成する−すなわち,入
力した行を順に受け入れ,6.4(論理的変換)の規定に従って自由形式正書法へ論理的に変換して,展
開形の翻訳群中に書き出す。COPY文で識別される登録集原文を取り込むが,置換動作は2) の段階ま
で遅延する。COPY文及びそれで取り込む原文は,展開形の翻訳群中において識別可能でなければな
らない。その目的は,これ以降に論理的にREPLACING指定に関連する処理があったときの識別のた
めである。
IF指示又はEVALUATE指示の 条件が偽の場合の経路に現れた行が,COPY文で識別される原文を
も含め,展開形の翻訳群から省略されることがある。SOURCE FORMAT指示は,入力行を正しく解釈
するために,条件が偽の場合の経路に現れても処理されなければならない。
35
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
注記 論理的変換の段階で条件が真又は偽の経路を認識することは,要求も禁止もされない。
その処理結果の行が,展開形の翻訳群を構成する。
2) 条件処理済みの翻訳群(conditionally-processed compilation group)を生成する−すなわち展開形の翻訳
群を読み込んで,次に示すものを現れた順に処理する。
a) DEFINE指示,IF指示及びEVALUATE指示
b) 翻訳変数値から定数記述項への代替
c) 全てのCOPY文の置換動作
その処理結果の行が,条件処理済みの翻訳群を構成する。
3) 構造化翻訳群(structured compilation group)を生成する−すなわち条件処理済みの翻訳群を読み込ん
で,REPLACE文の置換動作を順に適用する。
その処理結果の行が,構造化翻訳群を構成する。
原文操作処理の後では,翻訳群とは構造化翻訳群を指し,次の翻訳段階では,この構造化翻訳群に含ま
れる行が用いられる。
7.1.1
原文操作要素
箇条7(翻訳指示機能)で参照されたが定義はされない言語要素群の意味は,箇条8(言語の概念)によ
る。
7.1.1.1
翻訳指示文
翻訳指示文は,COPY文及びREPLACE文とする。
7.1.1.2
ソース原文及び登録集原文
ソース原文は,単一翻訳群に対するコンパイラへの主入力である。登録集原文は,COPY文の処理の結
果としてコンパイラへの副入力となる。
原文操作によって処理されるソース原文及び登録集原文は,標識,文字列,注記及び分離符からなる。
文字列は,原文語又は語"COPY"のいずれかとする。
7.1.1.3
仮原文
仮原文(pseudo-text)とは,REPLACE文中及びCOPY文のREPLACING指定中にある作用対象である。
仮原文は,仮原文区切り記号で挟んで,0個以上の原文語,注記,及び分離符の空白をいかなる順序で構
成してもよい。ただし,区切り記号自体は仮原文に含まれない。
開始の仮原文区切り記号及び終了の仮原文区切り記号は,2個連続したCOBOL文字“==”からなる。
7.1.1.4
原文語
原文語(text-word)は,COBOLソース原文又は登録集原文中の,1文字又は連続した文字の並びであっ
て,次のような構成となる。
1) 分離符,ただし,次のもの以外:空白,仮原文区切り記号,及び英数字定数・ブール定数・各国文字
定数を囲む両端の区切り記号。原文語を形成する文字の並びを決定するとき,英数字定数・各国文字
定数の内部を除くあらゆる文脈において,コロン及び左右の丸括弧は分離符として扱われる。
2) 定数を囲む両端の区切り記号までを含めた,英数字定数・ブール定数・各国文字定数。
3) これ以外の,分離符で囲んだ連続COBOL文字の並び全て。ただし,注記及び語"COPY"は除く。
7.1.2
COPY文
COPY(複写)文は,COBOL翻訳群の中に,登録集原文を複写する。
7.1.2.1
一般形式
36
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
COPY
定数1
原文名1
OF
IN
定数2
登録集名1 [SUPPRESS PRINTING]
REPLACING
==仮原文1==
原文1
定数3
語1
BY
==仮原文2==
原文2
定数4
語2
LEADING
TRAILING ==部分語1== BY ==部分語2==
….
7.1.2.2
構文規則
1) COPY文は,ソース原文中又は登録集原文中で,文字列を書いてもよいところ,又は定数の右側の区
切り記号を除く分離符を書いてもよいところには,どこに書いてもよい。ただし,COPY文の中に
COPY文を書いてはならない。
2) COPY文は,翻訳群の最初の文であるときを除き,空白に後続しなければならない。
3) 一つのCOBOL登録集の中では,各原文名は一意でなければならない。
4) 連結式又は表意定数を,定数1,定数2,定数3又は定数4として指定してはならない。
5) 定数1及び定数2は,英数字定数でなければならない。定数1及び定数2として使用できる値は,実
装者定義とする。
6) 仮原文1は,原文語を一つ以上含まなければならず,そのうちの少なくとも一つは分離符のコンマで
もセミコロンでもないものでなければならない。
7) 仮原文2は,原文語を含まなくても,一つ以上含んでもよい。
8) 仮原文1及び仮原文2中の文字列は,正書法の規則に従って継続してもよい。
9) 原文1及び原文2は,一意名の書き方のうち,関数一意名,添字修飾付きデータ名,部分参照,修飾
付き行数カウンタ又は修飾付き報告書カウンタのいずれかでなければならない。
注記 原文1及び原文2は旧式の書き方であり,使用しないほうがよい。
添字付けがある場合は,単一の定数,単一の一意名,又は一意名±整数以外の算術式を添字として
含んでいてはならない。添字列,部分参照子又は関数の引数列の中に指定する一意名の書き方は,関
数一意名,添字修飾付きデータ名,部分参照,修飾付き行数カウンタ又は修飾付き報告書カウンタで
なければならない。原文1又は原文2の中に関数一意名を書く場合,組込み関数の引用だけでなけれ
ばならない。
10) 語1又は語2は,語"COPY",翻訳指示標識,浮動デバッグ標識又は注記標識を除き,単一のCOBOL
の語なら何であってもよい。
11) 仮原文中及び登録集原文中の原文語の長さは,1〜322文字でなければならない。
12) 仮原文1及び仮原文2にはデバッグ行が含まれてもよい。デバッグ行が“仮原文内に指定されている”
とは,そのデバッグ行の開始位置が,開始仮原文区切り記号から対応する終了仮原文区切り記号まで
の間にある場合のことである。
13) 仮原文1,仮原文2,部分語1又は部分語2の中に,翻訳指示行があってはならない。
14) 部分語1は,単一の原文語でなければならない。
15) 部分語2は,単一の原文語か又は空でなければならない。
16) 英数字定数・ブール定数・各国文字定数を,部分語1又は部分語2として書いてはならない。
7.1.2.3
一般規則
37
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) 原文名1又は定数1は,COPY文で処理される登録集原文を識別する。
2) 登録集名1の命名する資源は,コンパイラで使用可能でなければならず,原文名1の指す登録集原文
へのアクセスを提供するものでなければならない。
3) 原文名1又は定数1で参照される登録集原文への位置付け規則は,実装者定義とする。登録集名1も
定数2も指定がない場合は,既定解釈のCOBOL登録集が用いられる。既定解釈のCOBOL登録集を
識別する機構は,実装者定義とする。
4) SUPPRESS指定を書いたとき,COPY文の処理の結果として取り込まれる登録集原文は印字出力に現
れない。印字出力を生成するとき,COPY文それ自体が印字出力に現れる。
5) 登録集原文を翻訳群中へと複写する処理が完了すると,その登録集原文中にLISTING指示があっても
それには関係なく,COPY文それ自体に対して有効なLISTING指示が有効であるとみなされる。
6) COPY文の処理は,原文名1又は定数1の値で関連付けられた登録集原文が,予約語COPYに始まり
終止符で終わるCOPY文全体(終止符も含む)を論理的に置き換えながら,翻訳群中に複写する。
7) REPLACING指定がないとき,登録集原文はそのまま結果の原文中に取り込まれる。
8) REPLACING指定があると,7.1(原文操作)で規定する構造化翻訳群生成時に登録集原文が修正され
る。仮原文1・原文1・語1・定数3・部分語1に一致するものが登録集原文中にあれば,それぞれ対
応する仮原文2・原文2・語2・定数4・部分語2で置換される。これは,以降のCOPY文の規則によ
る。
9) 照合処理上,原文1,語1及び定数3は,それぞれ原文1,語1又は定数3だけを含む仮原文であると
みなされる。
10) 原文の置換を決定する比較の操作は,次の方法で起きる。
a) 分離符のコンマ又はセミコロン以外の最も左端の登録集原文語が,比較で用いられる最初の原文語
である。この原文語に先行する原文語及び空白は結果の原文中に複写される。比較のための最初の
原文語と,REPLACING指定の最初の仮原文1・原文1・語1・定数3・部分語1とから始めて,予
約語BYの前にあるREPLACING指定の作用対象全体が,それと同数の連続した登録集原文語と比
較される。
b) 仮原文1・原文1・語1・定数3が登録集原文と一致するのは,前者を形成している原文語の並び順
が登録集原文語の並び順と文字単位で等しいときだけとする。LEADING指定がある場合,部分語1
が登録集原文と一致するのは,部分語1を形成している連続文字群の並びが登録集原文語の最左端
文字位置から始まる同数の連続文字群と,文字単位で等しいときだけとする。TRAILING指定があ
る場合,部分語1が登録集原文と一致するのは,部分語1を形成している連続文字群の並びが登録
集原文語の最右端文字位置で終わる同数の連続文字群と,文字単位で等しいときだけとする。
c) 照合処理上では,次の規則を適用する。
1. 仮原文1又は登録集原文の中の分離符のコンマ・セミコロン・空白は,それぞれ単一の空白とみ
なされる。幾つかの空白分離符の並びは単一の空白とみなされる。
2. 連結式の作用対象及び演算子は,それぞれが別々の原文語とする。
3. 16進形式でない英数字定数又は各国文字定数の中に書いた場合を除いて,各々の英数字は対応す
る各国文字と等しく,各々の小文字は対応する大文字と等しい[8.1.2(COBOL文字レパートリ)
参照]。
4. 英数字定数・ブール定数・各国文字定数では,次による。
a. 定数の両端の区切り記号に指定する場合,引用記号の2種類の表現は一致する。
38
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
注記 両端の区切り記号は,表現方法が同じでなければならない。
b. 開始区切り記号で引用記号として用いた文字が,定数の内容に2個連続して現れると,それは
その文字が1個現れたものとみなされる。
5. 翻訳指示行が現れると,それぞれ単一の空白とみなされる。
6. デバッグ標識は,書かなかったかのように扱う。デバッグ行の原文語は比較の対象とする。
7. 注記があれば,単一の空白とみなされる。
注記 論理的変換後のソース原文に,注記は存在しないはずである。
d) 一致しなければ,REPLACING指定中にある次の仮原文1・原文1・語1・定数3・部分語1を用い
た比較が行われ,一致が起きるまで,又は次のREPLACING作用対象がなくなるまで,この処理が
繰り返される。
e) 全てのREPLACING指定の作用対象が比較され,どれも一致しなかったときは,最左端の登録集原
文語が結果の原文中に複写される。そして次の登録集原文語が最左端の登録集原文語とみなされ,
REPLACING指定中の仮原文1・原文1・語1・定数3・部分語1のうち最初のものを用いて比較の
繰返しが再び開始する。
f)
仮原文1・原文1・語1・定数3と登録集原文との間で一致が発生すると,対応する仮原文2・原文
2・語2・定数4が結果の原文中に置かれる。部分語1と登録集原文語との間で一致が発生すると,
登録集原文語は,一致した文字が部分語2で置換されて(部分語2が空である場合は削除されて)
結果の原文中に現れる。そして,照合対象となった最右端の原文語の直後の登録集原文語が最左端
の原文語とみなされ,REPLACING指定中にある仮原文1・原文1・語1・定数3・部分語1のうち
最初のものを用いて比較の繰返しが再開始する。
g) この比較操作は,登録集原文中の最右端の原文語が一致するまで,又は最左端の登録集原文とみな
されて比較の周期が完了するまで,続けられる。
11) REPLACING指定がある場合は,登録集原文中にCOPY文があってならない。
12) 置換処理の後の結果のソース原文は,論理的には自由形式正書法である。原文語を結果のソース原文
中に複写する場合,既に空白が存在するか又は空白が想定される原文語の間にだけ,附加的な空白が
導入されることがある。
注記 ソース行の最後には,一つの空白が想定される。
13) COPY文の処理の結果として行が追加されるとき,COPY文がデバッグ行から始まるか,又は追加さ
れる原文語が登録集原文のデバッグ行に現れる場合は,追加される各原文語はデバッグ行上に現れる。
BY指定内にある原文語が取り込まれるとき,その原文語が,置換される最初の登録集原文語がデバ
ッグ行上にある場合は,デバッグ行上に現れる。以上の場合を除き,仮原文2内のデバッグ行上にあ
る原文語だけが,その結果のソース原文中のデバッグ行上に現れる。
14) REPLACING指定がない場合は,登録集原文中にREPLACING指定のないCOPY文があってもよい。
実装系は,最初のCOPY文も含めて,少なくとも5層の入れ子構造を実装・提供しなければならない。
複写された登録集原文は,直接又は間接に自体を複写するCOPY文の処理を引き起こしてはならない。
15) COPY文の置換動作が,COPY文,SOURCE FORMAT指示,注記又は空白行を生じさせてはならない。
7.1.3
REPLACE文
REPLACE(置換)文は,翻訳群中の原文を修正する。
7.1.3.1
一般形式
書き方1(replacing)
39
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
REPLACE [ALSO]
==仮原文1== BY ==仮原文2==
LEADING
TRAILING ==部分語1== BY ==部分語2== … .
書き方2(off)
REPLACE [LAST] OFF.
7.1.3.2
構文規則
1) REPLACE文は,ソース原文中又は登録集原文中で,文字列を書いてもよいところ,又は定数の右側
の区切り記号を除く分離符を書いてもよいところには,どこに書いてもよい。
2) REPLACE文は,翻訳群の最初の文である場合を除き,直前が空白でなければならない。
3) 仮原文1は原文語を一つ以上含まなければならず,そのうちの少なくとも一つは分離符のコンマでも
セミコロンでもないものでなければならない。
4) 仮原文2は原文語を含まなくても,一つ以上含んでもよい。
5) 部分語1は,単一の原文語でなければならない。
6) 部分語2は,単一の原文語又は空でなければならない。
7) 英数字定数・ブール定数・各国文字定数を,部分語1又は部分語2として書いてはならない。
8) 仮原文1及び仮原文2中の文字列は,正書法の規則に従って継続してもよい。
9) 仮原文中の原文語の長さは,1〜322文字でなければならない。
10) 仮原文1及び仮原文2は,デバッグ行を含んでもよい。
11) 仮原文1,仮原文2,部分語1又は部分語2の中に,翻訳指示行があってはならない。
7.1.3.3
一般規則
1) REPLACE文に関する以降の一般規則において,“ソース原文”とは“条件処理済みの翻訳群”を指す
[7.1(原文操作)参照]。
2) 仮原文1は,仮原文2によって置換される原文を指定する。
3) 部分語1は,部分語2によって置換される原文を指定する。
4) いったん現れると,書き方1のREPLACE文は次の3種類の状態のいずれかになる。
a) 活性(状態)。 その意味はこの文を,翻訳群に対する現時点での置換処理に用いることを表す。
b) 不活性(状態)。その意味はこの文を,現時点では置換処理に用いないが,後入れ先出しの待ち行列
中に保持しておき,翻訳群中にこれ以降に現れるREPLACE文の規則に従って,待ち行列から取り
出して,活性状態にするか,又は取消し状態にする可能性があることを表す。
c) 取消し(状態)。その意味はこの文を,翻訳群の残りに対する置換処理に用いる可能性を取り除く,
又は不活性のとき,翻訳群の残りに対する不活性な文の待ち行列から取り除くことを表す。
5) 活性状態となったREPLACE文の効力が持続するのは,不活性状態になるか,取り消されるか,又は
翻訳群の終わりに達するか,いずれかが最初に起きる箇所までとする。
6) 活性状態のREPLACE文がない場合は,次による。
a) 書き方1のREPLACE文は,翻訳群中にそれが現れた箇所から,活性状態となる。ALSO指定は,
あっても効果をもたない。
b) 書き方2のREPLACE文は,効果をもたない。
7) 活性状態のREPLACE文がある場合は,次による。
a) 書き方1のREPLACE文でALSO指定のあるものは,次の結果をもたらす。
1. この活性状態のREPLACE文を不活性化して,不活性な文の待ち行列へ押し込む。
40
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
2. 現在のREPLACE文を展開して単一のREPLACE文とし,ALSO指定は書かずに,現在の文の全
作用対象を指定した後に続けて,不活性な文の待ち行列へ最も新しく押し込まれた文の作用対象
を指定する。この展開REPLACE文が活性状態となる。
b) 書き方1のREPLACE文でALSO指定のないものは,この活性状態のREPLACE文を取り消す。不
活性な文の待ち行列中にREPLACE文があれば,これも取り消す。そして,現在の文が活性状態と
なる。
c) 書き方2のREPLACE文でLAST指定のあるものは,この活性状態のREPLACE文を取り消す。不
活性な文の待ち行列中に押し込まれた文があるとき,最も新しい文が取り出されて,その取り出さ
れた文が活性状態となる。
d) 書き方2のREPLACE文でLAST指定のないものは,この活性状態のREPLACE文を取り消す。不
活性な文の待ち行列中にREPLACE文があれば,これも取り消す。
8) 原文の置換を決定する比較操作が,REPLACE文の直後の原文から,次の方法で行われる。
a) 最左端のソース原文の原文語と,最初の仮原文1又は部分語1とから始めて,仮原文1又は部分語
1を,それと等しい語数の一連のソース原文の原文語と比較する。
b) 仮原文1がソース原文と一致するのは,前者を形成している原文語の並び順がソース原文語の並び
順と文字単位で等しいときだけとする。LEADING指定がある場合,部分語1がソース原文語と一
致するのは,部分語1を形成している連続文字群の並びがソース原文語の最左端文字位置から始ま
る同数の連続文字群と,文字単位で等しいときだけとする。TRAILING指定がある場合に,部分語
1がソース原文語と一致するのは,部分語1を形成している連続文字群の並びがソース原文語の最
右端文字位置で終わる同数の連続文字群と,文字単位で等しいときだけとする。
c) 次の規則を照合処理上に適用する。
1. 仮原文1又はソース原文の中の分離符のコンマ・セミコロン・空白は,それぞれ単一の空白とみ
なされる。一つ以上の空白分離符の並びは,単一の空白とみなされる。
2. 連結式の作用対象及び演算子は,それぞれが別々の原文語とする。
3. 16進形式でない英数字定数又は各国文字定数の中に書いた場合を除いて,各々の英数字は対応す
る各国文字と等しく,各々の小文字は対応する大文字と等しい[8.1.2(COBOL文字レパートリ)
参照]。
4. 英数字定数・ブール定数・各国文字定数では,次による。
a. 定数の両端の区切りに指定する場合,引用記号の2種類の表現は一致する。
注記 両端の区切り記号は,表現方法が同じでなければならない。
b. 開始区切り記号で引用記号として用いた文字が,定数の内容に2個連続して現れると,それは
その文字が1個現れたものとみなされる。
5. 翻訳指示行が現れると,それぞれ単一の空白とみなされる。
6. デバッグ標識は,書かなかったかのように扱う。デバッグ行の原文語は比較の対象とする。
7. 注記がもしあれば,単一の空白とみなされる。
注記 論理的変換後のソース原文に,注記は存在しないはずである。
d) 一致しなければ,次の仮原文1又は部分語1を用いての比較が行われ,一致が起きるまで,又は次
の仮原文1又は部分語1がなくなるまで,この処理が繰り返される。
e) 全ての仮原文1又は部分語1の実体が比較され,どれも一致しなかったときは,次のソース原文語
が最左端のソース原文語とみなされ,仮原文1又は部分語1のうち最初のものを用いて比較の繰返
41
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
しが再開始する。
f)
仮原文1とソース原文との間で一致が発生すると,対応する仮原文2がソース原文中の一致した原
文を置換する。部分語1とソース原文語との間で一致が発生すると,ソース原文語は,一致した文
字が部分語2で置換されて(部分語2が空である場合は削除されて)ソース原文中に現れる。そし
て,照合対象となった最右端の原文語の直後のソース原文語が最左端の原文語とみなされ,原文1
又は部分語1のうち最初のものを用いて比較の繰返しが再開始する。
g) この比較操作は,REPLACE文の有効範囲内にあるソース原文中の最右端の原文語が一致するまで,
又は最左端の登録集原文とみなされて比較の周期が完了するまで,続けられる。
9) REPLACE文の処理の結果として生じる原文中にCOPY文,REPLACE文,SOURCE FORMAT指示,
注記又は空白行が含まれてはならない。
10) REPLACE文の処理の結果の原文は,論理的には自由形式正書法である。REPLACE文の処理の結果の
原文に挿入される原文語は,自由形式正書法の規則に従って配置される。仮原文2の原文語を結果の
原文に挿入する場合,既に空白が存在するか又は空白が想定される原文語の間にだけ,附加的な空白
が挿入されることがある。
注記 ソース行の最後には,一つの空白が想定される。
11) 置換される原文がデバッグ行上から始まる場合,その結果の原文はデバッグ行上に現れる。
7.2
翻訳指示
翻訳指示(compiler directive)は,コンパイラが使用する選択機能を指定したり,翻訳変数を定義したり,
条件翻訳を制御したりする。
7.2.1
一般形式
>> 翻訳命令
7.2.2
構文規則
1) 翻訳指示は,単一行に指定しなければならない。ただし,EVALUATE指示及びIF指示は例外で特別
な規則が規定されている。
2) 翻訳指示の前には,0個以上の空白文字だけがあってもよい。
3) 正書法が固定形式の場合,翻訳指示はプログラム原文領域内に書かなければならず,その後に書いて
もよいのは空白文字及び行内注記だけとする。
4) 正書法が自由形式の場合,翻訳指示の後に書いてもよいのは空白文字及び行内注記だけとする。
5) 翻訳指示の構成は,翻訳指示標識と,それに後続するCOBOL文字の空白(書く書かないは自由)及
び翻訳命令とする。翻訳指示標識に後続する空白がなくても空白があるのと同様に取り扱われる。
6) 翻訳命令は,各々の翻訳指示の構文の規定どおり,翻訳指示語,システム名及び利用者定義語からな
る。翻訳指示語は,8.12(翻訳指示語)による。
7) 翻訳指示語は,それが指定される翻訳指示の文脈内では予約語の扱いとなる。
8) 翻訳指示は,次の箇所を除けば,翻訳群内すなわちソース原文中又は登録集原文中のどこに書いても
よい。
a) 個々の翻訳指示に対する規則で制限されている箇所
b) ソース原文操作文
c) 行をまたいで継続する文字列を書いた2行の間
d) デバッグ行
9) 翻訳指示語IMPは,実装者による使用に備えて予約されている。実装者がIMP指示を定義するとき,
42
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
その指示に対する構文規則は,実装者定義とする。
注記 ">>IMP" は,現在及び将来の実装者定義のあらゆる翻訳指示に構文を提供する。実装者は,
一つ以上の実装者定義の翻訳指示の開始を,">>IMP" を使って示すことができる。
10) 翻訳指示中の定数は,連結式,表意定数又は浮動小数点数字定数であってはならない。
7.2.3
一般規則
1) 翻訳指示行は,COPY文又はREPLACE文の置換動作の影響を受けない。
2) 翻訳指示は,原文操作段階又は翻訳段階で処理される[7.1(原文操作)参照]。原文操作段階での処
理の順序は7.1(原文操作)による。翻訳段階では翻訳指示が,構造化翻訳群の中に現れた順に処理さ
れる。
3) 実装者がIMP指示を定義するとき,その指示に対する一般規則は,実装者定義とする。
4) 翻訳指示は,後続するソース原文及び登録集原文の全てに適用されるのであって,実行の流れには依
存しない。
7.2.4
条件翻訳
特定の翻訳指示を用いると,ソースコードの選択された行を,取り込むか又は取り除く手段となる。こ
れを,条件翻訳(conditional compilation)と呼ぶ。条件翻訳のために用いる翻訳指示は,DEFINE指示,
EVALUATE指示及びIF指示である。DEFINE指示は翻訳変数を定義するために用いる。定義された翻訳
変数をEVALUATE指示及びIF指示の中で参照して,翻訳する行又は取り除く行を選択してもよい。翻訳
変数は,定数記述項の中で参照してもよい[13.9(定数記述項)参照]。
7.2.5
翻訳時算術式
翻訳時算術式は,DEFINE指示,EVALUATE指示,定数条件式及び定数記述項の中に指定してもよい。
7.2.5.1
構文規則
1) 翻訳時算術式は,次の点を除けば,8.8.1(算術式)に従って形成しなければならない。
a) べき乗演算子を指定してはならない。
b) 全ての作用対象は,固定小数点数字定数,又は全ての作用対象が固定小数点数字定数である算術式
でなければならない。
c) 算術式は,ゼロ除算が起きないように,かつ,各々の演算後に標準中間データ項目の値が許容範囲
内に収まるように,指定しなければならない[8.8.1.3.1.1(精度及び許容値の大きさ)参照]。
7.2.5.2
一般規則
1) 翻訳時算術式の優先順序及び評価規則は,8.8.1(算術式)による。算術演算に対しては全て標準算術
が用いられる。
2) 算術式の最終結果は,値の整数部へと切り捨てられる[15.38(INTEGER-PART関数)参照]。結果の
値は整数定数とみなされる。
7.2.6
翻訳時ブール式
翻訳時ブール式は,EVALUATE指示の中及び定数条件式の中に指定してもよい。
7.2.6.1
構文規則
1) 翻訳時ブール式は,8.8.2(ブール式)に従って形成しなければならない。全ての作用対象はブール定
数又はブール式でなければならず,そのブール式も全ての作用対象がブール定数でなければならない。
7.2.6.2
一般規則
1) 翻訳時ブール式の優先順序と評価規則は,8.8.2(ブール式)による。
43
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
7.2.7
定数条件式
定数条件式(constant conditional expression)は,作用対象が定義済み条件,定数,定数項だけを含む算
術式,又は定数項だけを含むブール式のいずれかである条件式とする。定義済み条件は,翻訳変数が定義
済みの値をもつか否かを調べる。
7.2.7.1
構文規則
1) 定数条件式は,次のいずれかでなければならない。
a) 比較対象が両方とも定数,定数項だけを含む算術式,又は定数項だけを含むブール式のいずれかで
ある比較条件。その条件は,8.8.4.1.1(比較条件)の規則に従って書かなければならない。次の規則
も適用される。
1. 作用対象は,両方とも項類が同じでなければならない。算術式の項類は数字である。ブール式の
項類はブールである。
2. 定数の指定があってそれが数字定数ではないとき,比較演算子は"IS [NOT] EQUAL TO"又は"IS
[NOT] ="でなければならない。
b) 全ての作用対象がブール定数であるブール条件[8.8.4.1.2(ブール条件)参照]。
c) 定義済み条件。
d) 細則a)〜c) の単純条件を組み合わせた複合条件[8.8.4.2(複合条件)参照]。ただし,略記組合せ
比較条件は指定できない。
2) 定数条件式の中の算術式の書き方は,7.2.5(翻訳時算術式)による。
3) 定数条件式の中のブール式の書き方は,7.2.6(翻訳時ブール式)による。
7.2.7.2
一般規則
1) 複合条件の評価は,8.8.4.2(複合条件)の規則による。
2) 比較対象が数字でもブールでもない単純比較条件に対しては,比較に文字照合順序は用いられない。
文字の等価性を一つずつ,各々の符号化2進値に基づいて比較する方法が用いられる。定数どうしの
長さが等しくなければ比較結果は等しくない。
注記 この意味では,大文字と小文字とは等価ではない。
7.2.7.3
定義済み条件
定義済み条件(defined condition)は,翻訳変数が定義済みか否かを調べるものである。
7.2.7.3.1
一般形式
翻訳変数名1 IS [NOT] DEFINED
7.2.7.3.2
構文規則
1) 翻訳変数名1が,翻訳指示の予約語と同じであってはならない。
7.2.7.3.3
一般規則
1) IS DEFINED 構文を用いた定義済み条件の評価が真となるのは,その時点で翻訳変数名1が定義済み
であるときとする。
2) IS NOT DEFINED構文を用いた定義済み条件の評価が真となるのは,その時点で翻訳変数名1が未定
義であるときとする。
7.2.8
CALL-CONVENTION指示
CALL-CONVENTION(呼出し規約)指示は,プログラム名又はメソッド名への参照をどのように扱うか
をコンパイラに指示する。また,関数・メソッド・プログラムとの相互作用に対する詳細を決めるために
用いられることもある。
44
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
7.2.8.1
一般形式
>> CALL-CONVENTION
COBOL
呼出し規約名1
7.2.8.2
一般規則
1) CALL-CONVENTION指示に対する既定解釈は,>>CALL-CONVENTION COBOL とする。
2) CALL-CONVENTION指示は,この後に現れるINVOKE文,文内メソッド呼出し,CALL文,CANCEL
文及びプログラムアドレス一意名に指定したプログラム名及びメソッド名を,コンパイラがどのよう
に処理するかを決定する。この指示を適用するのは,プログラム名又はメソッド名への参照が前述の
言語構造においてなされた場合とする。
a) COBOLを指定した場合には,プログラム名又はメソッド名をCOBOLの語とみなして,それぞれ呼
出し対象のメソッド又は呼出し・取消し・参照する対象のプログラムの外部公開名へと対応付けを行
う。この場合,AS指定のないメソッド名又はプログラム名に対するのと同じ,実装者定義の対応
付け規則を適用する。
b) 呼出し規約名1を指定した場合には,プログラム名又はメソッド名を定数とみなして,それぞれ呼
出し対象のメソッド又は呼出し・取消し・参照する対象のプログラムの外部公開名へと対応付けを行
う。その方法は実装者定義とする。
3) CALL-CONVENTION指示は,関数・メソッド・プログラムとの相互作用に必要とされる,これ以外
の詳細を,実装者が解決するために用いてもよい。
7.2.9
DEFINE指示
DEFINE(定義)指示は,ある特定の定数値に対して,翻訳変数(compilation variable)と呼ぶ記号名を
指定する。この名前をその後,定数条件式中,EVALUATE指示中又は定数記述項中で用いてもよい。翻訳
変数には,コンパイラが操作環境から取得した値を設定できる。
7.2.9.1
一般形式
>> DEFINE 翻訳変数名1 AS
定数1
算術式1
PARAMETER
[OVERRIDE]
OFF
7.2.9.2
構文規則
1) 翻訳変数名1が,翻訳指示の予約語と同じであってはならない。
2) DEFINE指示にOFF指定もOVERRIDE指定もない場合,次のいずれかでなければならない。
− 翻訳変数名1がそれ以前に同一翻訳群内で宣言されてはいない。
− 翻訳変数名1を指す直前のDEFINE指示にはOFF指定がある。
− 翻訳変数名1を指す直前のDEFINE指示に同じ値の指定がある。
3) 算術式1の書き方は,7.2.5(翻訳時算術式)による。
7.2.9.3
一般規則
1) 翻訳変数名1を指定してOFF指定のないDEFINE指示の後に続く原文中では,翻訳群内の次のいずれ
かの箇所で翻訳変数名1を用いてもよい。
− その名前に関連する項類の定数を書いてもよい任意の翻訳指示。
− 定義済み条件。
45
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
− FROM指定のある定数記述項中。
2) OFF指定のあるDEFINE指示の後,翻訳変数名1は,それ以降のDEFINE指示で再定義しない限り,
定義済み条件中以外で用いてはならない。
3) OVERRIDE指定がある場合,翻訳変数名1は無条件で,新しく指定された作用対象の値を指すように
設定される。
4) PARAMETER指定がある場合,翻訳変数名1の指す値は,DEFINE指示が処理されるときに実装者定
義の方法によって操作環境から取得される。操作環境から取得されて使用可能になる値が全くない場
合は,翻訳変数名1が定義されない。
5) DEFINE指示の作用対象が単一の数字定数であるとき,作用対象は算術式ではなく定数とみなされる。
注記 整数部への切捨ては行われない。
6) 算術式1の指定がある場合,その算術式1は7.2.5(翻訳時算術式)に従って評価され,翻訳変数名1
はその結果の値を指す。
7) 定数1の指定がある場合,翻訳変数名1はその定数1を指す。
7.2.10 EVALUATE指示
EVALUATE(評価)指示は,多方向分岐の条件翻訳のために提供される。
7.2.10.1 一般形式
書き方1
>> EVALUATE
定数1
算術式1
ブール式1
>> WHEN
定数2
算術式2
ブール式2
THROUGH
THRU
定数3
算術式3 [原文1] …
[>> WHEN OTHER [原文2]]
>> END-EVALUATE
書き方2
>> EVALUATE TRUE
{>> WHEN 定数条件式1 [原文1] } …
[>> WHEN OTHER [原文2] ]
>> END-EVALUATE
7.2.10.2 構文規則
全ての書き方
1) これ以降の構文規則の記述で,作用対象1は,書き方1の定数1・算術式1・ブール式1及び書き方2
のキーワードTRUEを指す。また作用対象2は,書き方1の定数2・算術式2・ブール式2及び書き
方2の定数条件式1を指す。さらに,作用対象3は,書き方1の定数3又は算術式3を指す。
2) >>EVALUATE 作用対象1 は,新しい行から書き始めて,全部をその行に書かなければならない。
3) >>WHEN 作用対象2 [THROUGH 作用対象3] は,新しい行から書き始めて,全部をその行に書かな
ければならない。
4) 原文1は,新しい行から書き始めなければならない。
5) >>WHEN OTHER は,新しい行から書き始めて,全部をその行に書かなければならない。
46
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
6) 原文2は,新しい行から書き始めなければならない。
7) >>END-EVALUATE は,新しい行から書き始め,全部をその行に書かなければならない。
8) 原文1及び原文2は,翻訳指示も含めたいかなる種類のソース行であってもよい。原文1及び原文2
は,複数行からなってもよい。
9) ある一つのEVALUATE指示に属するWHEN指定及びEND-EVALUATE指定は,その全てを同一の登
録集原文中に指定するか,又は全てをソース原文中に指定するか,いずれかでなければならない。こ
の規則上は,原文1及び原文2をEVALUATE指示に属する指定とみなさない。原文1又は原文2中
に入れ子のEVALUATE指示があれば,新たな別のEVALUATE指示であるとみなす。
書き方1
10) 定数1,算術式1及びブール式1が選択主体(selection subject)であり,WHEN指定に書いた作用対
象が選択対象(selection object)である。
11) 一つのEVALUATE指示の全ての作用対象は,項類が同じでなければならない。この規則に対しては,
算術式は項類が数字であり,ブール式は項類がブールとする。
12) THROUGH指定がある場合,選択主体と選択対象は全て項類が数字でなければならない。
13) 語THROUGHと語THRUとは,等価とする。
14) 算術式1,算術式2及び算術式3の書き方は,7.2.5(翻訳時算術式)による。
15) ブール式1及びブール式2の書き方は,7.2.6(翻訳時ブール式)による。
書き方2
16) 定数条件式1の書き方は,7.2.7(定数条件式)による。
7.2.10.3 一般規則
全ての書き方
1) 原文1及び原文2は,EVALUATE翻訳指示行の一部ではない。これらの原文に含まれる,翻訳指示行
を形成しないあらゆる原文語は,COPY文及びREPLACE文の突合せ及び置換の処理対象になる。
書き方1
2) EVALUATE指示の作用対象が単一数字定数であるとき,作用対象は算術式ではなく定数とみなされ
る。
注記 整数部への切捨ては行われない。
3) ブール式1及びブール式2の評価は,7.2.6(翻訳時ブール式)による。
4) 選択主体は,各々のWHEN指定中にある値と,順番に,次のとおり比較される。
a) THROUGH指定がないとき,TRUEの結果を返すのは選択主体が定数2,算術式2又はブール式2
に等しい場合である。
b) THROUGH指定があるとき,TRUEの結果を返すのは選択主体が定数2又は算術式2と定数3又は
算術式3とによって決まる(両端も含めた)範囲内にある場合である。
あるWHEN指定の評価がTRUEであるときは,そのWHEN指定に関連する原文1の行が全て,結
果の原文中に取り込まれる。そのEVALUATE指示に属するその他のWHEN指定に関連する原文1の
行の全て及びWHEN OTHER指定に関連する原文2の行の全ては,結果の原文から省かれる。
5) どのWHEN指定の評価もTRUEでないときは,WHEN OTHER指定があるならそれに関連する原文2
の行が全て,結果の原文中に取り込まれる。その他のWHEN指定に関連する原文1の行は全て,結果
の原文から省かれる。
6) END-EVALUATE指定に達して,どのWHEN指定もTRUEと評価されず,WHEN OTHER指定もない
47
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
とき,全てのWHEN指定に関連する原文1の行が全て,結果の原文から省かれる。
7) 定数1が英数字定数又は各国文字定数であるとき,文字の等価性を一つずつ,各々の符号化2進値に
基づいて比較する方法が用いられる。定数どうしの長さが等しくなければ比較結果は等しくない。
書き方2
8) 各々のWHEN指定に対して順番に行われる定数条件式の評価は,7.2.7(定数条件式)による。
あるWHEN指定の評価がTRUEであるときは,そのWHEN指定に関連する原文1の行が全て,結果の
原文中に取り込まれる。そのEVALUATE指示に属するその他のWHEN指定に関連する原文1の行の全て
及びWHEN OTHER指定に関連する原文2の行の全ては,結果の原文から省かれる。
9) どのWHEN指定の評価もTRUEでないときは,WHEN OTHER指定があるならそれに関連する原文2
の行が全て,結果の原文中に取り込まれる。その他のWHEN指定に関連する原文1の行は全て,結果
の原文から省かれる。
10) END-EVALUATE指定に達して,どのWHEN指定もTRUEと評価されず,WHEN OTHER指定もない
とき,全てのWHEN指定に関連する原文1の行が全て,結果の原文から省かれる。
7.2.11 FLAG-85指示
FLAG-85指示は,以前のCOBOL規格と現行のCOBOL規格との間で互換性を欠く可能性がある特定の
構文に対してフラグを立てる選択種目を指定する。
7.2.11.1 一般形式
>> FLAG-85
LENGTH
-
ZERO
2
-
STANDARD
1
-
STANDARD
SET
NUMVAL
MOVE
ARGUMENT
-
FUNCTION
DIVIDE
EDITING
-
DE
ING
CORRESPOND
ALL
ON
OFF
7.2.11.2 構文規則
1) FLAG-85指示を書いてもよい箇所は,手続き部以外の部では句と句との間だけとし,手続き部では文
と文との間だけとする。
7.2.11.3 一般規則
1) 実装者は,既存プログラムに影響する可能性のある非互換性のうち選択された種目に対してフラグを
立てる警告機構を提供しなければならない。ここでいう非互換性とは,ISO 1989:1985(以前のCOBOL
規格)にISO 1989:1985/Amd.1:1992(組込み関数機能単位)を含めた規格仕様と,現行の規格仕様と
の間の非互換性である。
注記1 既存プログラムに影響を及ぼす可能性のある変更点の一覧は,F.1に示す。
注記2 対応国際規格ではISO 1989:1985/Amd.2:1994(正誤表及び明確化)も非互換性の基準に含
めている。しかし,JIS X 3002:1992には反映されていなかったため,この規格では
ISO 1989:1985/Amd.2:1994によって導入された非互換性を,F.3に追加して示す。
48
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
2) ある選択種目に対してONが指定又は想定された場合,警告機構は指定された選択種目について有効
となり,翻訳群の終わりに達するまで,又は全ての選択種目をオフにするFLAG-85指示が現れるか若
しくはこの選択種目をオフにするFLAG-85指示が現れるまで,後続する全ての原文に対して有効性が
持続する。
3) OFFが指定された場合,選択された種目(の組)に対するフラグ立ては無効になる。
4) FLAG-85に続く語又は語の並びは,構文を次のとおり診断することを示す。
a) ALL:全ての選択種目が適用される。
b) CORRESPONDING:CORRESPONDING指定付きのADD文,MOVE文又はSUBTRACT文で,作
用対象のいずれかに定数以外の添字付けがある場合,その文にフラグを立てる。
c) DE-EDITING:逆編集のMOVE文にフラグを立てる。
d) DIVIDE:REMAINDER指定付きのDIVIDE文で,商のデータ項目の記述が符号なし(PICTURE句
にSなし)であり,除数又は被除数のいずれかの記述が符号付きである場合,そのDIVIDE文にフ
ラグを立てる。
e) FUNCTION-ARGUMENT:組込み関数RANDOMの直後に括弧で囲まれた算術式が続く場合で,か
つ,そのRANDOM関数が,引数並びに複数の算術式をとる組込み関数の引数として指定されてい
る場合,そのRANDOM関数にフラグを立てる。
f)
MOVE:英数字の定数又はデータ項目が数字データ項目へ転記され,送出し側項目が31文字より大
きい場合,そのMOVE文にフラグを立てる。
g) NUMVAL:組込み関数のNUMVAL及びNUMVAL-Cにフラグを立てる。
h) SET:条件設定の書き方のSET文が可変長集団項目を参照している場合,そのSET文にフラグを立
てる。
i)
STANDARD-1:特殊名段落中のALPHABET句にSTANDARD-1の指定がある場合,そのALPHABET
句にフラグを立てる。
j)
STANDARD-2:特殊名段落中のALPHABET句にSTANDARD-2の指定がある場合,そのALPHABET
句にフラグを立てる。
k) ZERO-LENGTH:長さゼロの項目を返す可能性のあるREAD文に,又は長さゼロの項目となる可能
性のあるデータ項目を参照する文にフラグを立てる。
5) FLAG-85指示の指定がない場合,全ての選択種目の既定解釈はOFFとする。
7.2.12 FLAG-NATIVE-ARITHMETIC指示
FLAG-NATIVE-ARITHMETIC(固有算術表示)指示は,ソース単位に対して明示的又は暗黙に標準算術
を指定したとき,固有算術を使用する算術演算に対してフラグを立てることを指定する[8.8.1.3(標準算
術)参照]。
7.2.12.1 一般形式
>> FLAG-NATIVE-ARITHMETIC
ON
OFF
7.2.12.2 構文規則
1) FLAG-NATIVE-ARITHMETIC指示を書いてよい箇所は,手続き部以外の部では句と句との間だけと
し,手続き部では文と文との間だけとする。
7.2.12.3 一般規則
1) 実装者は,ソース単位に対して標準算術を明示的又は暗黙に指定したとき固有算術を使用する箇所に
49
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
対してフラグを立てる警告機構を提供しなければならない。
2) ソース単位に対して標準算術を明示的又は暗黙に指定し,ONの指定又は想定がある場合,固有算術
を用いているか又は用いる可能性のある,あらゆる算術演算に対してフラグ立てが有効となる。
3) OFFの指定がある場合,固有算術に対するフラグ立ては行われない。
4) 固有算術が有効な場合,固有算術に対するフラグ立ては行われない。
5) FLAG-NATIVE-ARITHMETIC指示の指定がない場合,既定解釈はOFFとする。
7.2.13 IF指示
IF(判断)指示は,単方向又は双方向分岐の条件翻訳に対して準備される。
7.2.13.1 一般形式
>> IF 定数条件式1 [原文1]
[>> ELSE [原文2] ]
>> END-IF
7.2.13.2 構文規則
1) >>IF 定数条件式1 は,新しい行から書き始めて,全部をその行に書かなければならない。
2) 原文1は,新しい行から書き始めなければならない。
3) >>ELSE は,新しい行から書き始めて,全部をその行に書かなければならない。
4) 原文2は,新しい行から書き始めなければならない。
5) >>END-IF は,新しい行から書き始めて,全部をその行に書かなければならない。
6) 原文1及び原文2は,翻訳指示も含めたいかなる種類のソース行であってもよい。原文1及び原文2
は,複数行からなってもよい。
7) ある一つのIF指示に属するELSE指定及びEND-IF指定は,その全てを同一の登録集原文中に指定す
るか,又は全てをソース原文中に指定するかの,いずれかでなければならない。この規則上は,原文
1及び原文2をIF指示に属する指定とはみなさない。原文1又は原文2の中に入れ子のIF指示があ
れば,新たな別のIF指示であるとみなす。
7.2.13.3 一般規則
1) 原文1及び原文2は,IF翻訳指示行の一部ではない。これらの原文に含まれる,翻訳指示行を形成し
ないあらゆる原文語は,COPY文及びREPLACE文の突合せ及び置換の処理対象になる。
2) 定数条件式1の評価がTRUEであるときは,原文1の行が全て結果の原文中に取り込まれ,原文2の
行は全て結果の原文から省かれる。
3) 定数条件式1の評価がFALSEであるときは,原文2の行が全て結果の原文中に取り込まれ,原文1
の行は全て結果の原文から省かれる。
7.2.14 LEAP-SECOND指示
LEAP-SECOND(うるう秒)指示は,TIME指定付きのACCEPT文,CURRENT-DATE組込み関数及び
WHEN-COMPILED組込み関数によって返却される値の中で,秒を表す位置に59より大きい値が返却され
ることがあるか否かを指定する。
7.2.14.1 一般形式
>> LEAP-SECOND
ON
OFF
7.2.14.2 構文規則
1) LEAP-SECOND指示は,翻訳単位の内部に指定してはならない。
50
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
7.2.14.3 一般規則
1) LEAP-SECOND指示の指定がない場合には,その翻訳群の先頭にある翻訳単位の前にOFF指定付きの
LEAP-SECOND指示を書いたものとみなす。
2) ONが明示的又は暗黙に指定された場合,次に示す動作からの返却値のうち,秒を表す位置に59より
大きい値が返されることがあるか否かは,実装者定義とする。
− TIME指定付きのACCEPT文
− CURRENT-DATE組込み関数
− WHEN-COMPILED組込み関数
3) OFFが明示的又は暗黙に指定された場合,次に示す動作からの返却値のうち,秒を表す位置に59よ
り大きい値が返されることがあってはならない。
− TIME指定付きのACCEPT文
− CURRENT-DATE組込み関数
− WHEN-COMPILED組込み関数
7.2.15 LISTING指示
LISTING(印字出力)指示は,コンパイラに,ソース印字出力(もしあるなら)を行うか否かの切換え
を指示する。
注記 この規格では印字出力の内容又は体裁を規定しない。実装者は,元々の翻訳群の印字出力と,
選択機能として,原文操作を適用した結果の印字出力とを,提供することが望ましい。
7.2.15.1 一般形式
>> LISTING
ON
OFF
7.2.15.2 一般規則
1) コンパイラがソース印字出力を生成するか否かは,実装者定義とする。コンパイラがソース印字出力
を生成しない場合,LISTING指示は無視される。さもなければ,次の一般規則を適用する。
2) 既定解釈のLISTING指示は,>>LISTING ON とする。
3) LISTING指示がソース印字出力を抑止していても,各LISTING指示は印字出力される。
4) OFFが指定された場合,ONが明示的又は暗黙に指定されたLISTING指示が現れるまで,ソース行は
印字出力されない。ただし例外として,別なLISTING OFF指示は印字出力される。
5) ONが明示的又は暗黙に指定された場合,LISTING OFF指示が現れるまで,又は翻訳群の最後に到達
するまで,ソース原文行は印字出力される。
7.2.16 PAGE指示
PAGE(改ページ)指示は,強制的な改ページを指定し,ソース印字出力に対する文書化を提供する。
7.2.16.1 一般形式
>> PAGE [ 注記原文1 ]
7.2.16.2 構文規則
1) 注記原文1には,箇条6(正書法)の規則3) b) に規定された制御文字を除く,翻訳時の計算機文字集
合のどの文字が含まれてもよい。
2) 注記原文1は,構文解析されない。
7.2.16.3 一般規則
1) 注記原文1は,文書化にだけ使う。
51
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
2) ソース印字出力が生成される場合,PAGE指示は,その指示が印字出力される前に強制的な改ページ
を引き起こす。
3) ソース印字出力が生成されない場合,PAGE指示は効果をもたない。
7.2.17 PROPAGATE指示
PROPAGATE[伝ぱ(播)]指示は,活性化する側の実行時要素へ例外状態を伝ぱ(播)させるために用
いる。
7.2.17.1 一般形式
>> PROPAGATE
ON
OFF
7.2.17.2 構文規則
1) PROPAGATE指示を翻訳単位の内部に指定してはならない。
7.2.17.3 一般規則
1) ON指定の明示的な又は暗黙の指定がある場合,翻訳群中でそれに後続する関数・メソッド・プログ
ラムに対して,例外状態の自動的な伝ぱ(播)が有効となる。自動的な伝ぱ(播)は,OFF指定のあ
るPROPAGATE指示が現れるか又は翻訳群の終わりまで,有効のままとする。
2) 例外状態の自動的な伝ぱ(播)が有効な実行時要素の実行中に,例外状態が発生して,その実行時要
素中の例外指定でも宣言手続きでも操作されなければ,該当する宣言手続き中でGOBACK RAISING
LAST文を実行したかのように,その例外状態が呼出し元の要素へ伝ぱ(播)する。
3) OFF指定がある場合,例外状態の自動的な伝ぱ(播)は無効となり,ON指定のあるPROPAGATE指
示が現れるまで,翻訳群中で後続する関数・メソッド・プログラムに対して無効のままとする。
4) 翻訳群に対する既定解釈は,>>PROPAGATE OFF とする。
7.2.18 SOURCE FORMAT指示
SOURCE FORMAT(ソース書式)指示は,後続するソース原文又は登録集原文の正書法を,固定形式又
は自由形式のいずれとするかを指定する。
7.2.18.1 一般形式
>> SOURCE FORMAT IS
FIXED
FREE
7.2.18.2 一般規則
1) SOURCE FORMAT指示は,その指示の直後からこれ以降にSOURCE FORMAT指示が現れるまでの,
ソース原文又は登録集原文の取扱いをFIXED指定がある場合は固定形式とするし,FREE指定がある
場合は自由形式とすることを示す[6.2(固定形式正書法)及び6.3(自由形式正書法)参照]。
2) 翻訳群の正書法の既定解釈は,固定形式とする。
3) 登録集原文の正書法の既定解釈は,この登録集原文の処理を引き起こしたCOPY文に対して有効な正
書法とする。
4) 翻訳群又は登録集原文の最初の行であるSOURCE FORMAT指示は,固定形式と自由形式のいずれで
あってもよい。
5) 登録集原文中にSOURCE FORMAT指示を指定すると,指定された正書法は,SOURCE FORMAT指示
がもう一つ現れるまで,又は登録集原文の終わりに達するまで,有効性が持続する。その登録集原文
の処理が完了すると正書法は,その登録集原文の処理を引き起こしたCOPY文に対して有効な正書法
に戻る。
52
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
7.2.19 TURN指示
TURN(切換え)指示は,特定の例外状態に対する検査を行うか否かの切換えに使用する。
7.2.19.1 一般形式
>> TURN {例外名1 [ファイル名1]… }… CHECKING
ON [WITH LOCATION]
OFF
7.2.19.2 構文規則
1) 利用者定義語を指定して,それがCOBOL文字列 "EC-" で始まっているとき,ファイル名1ではなく
例外名1と解釈される。利用者定義語を指定して,それが翻訳指示語と重複しているとき,ファイル
名1ではなく翻訳指示語と解釈される。
2) 例外名1は,14.5.12.1(例外状態)に挙げた例外名のどれかでなければならない。TURN指示に指定
した利用者定義の例外名又はファイル名をTURN指示の有効範囲内で実際に用いるか否かは検証しな
い。
注記 例外オブジェクトは,常に有効になる。
3) 一つのTURN指示内には,どの例外名も1度しか指定してはならない。
4) 一つの例外状態に対しては,どのファイル名も1度しか指定してはならない。
5) ファイル名1を指定するとき,例外名1はCOBOL文字列 "EC-I-O" で始まらなければならない。
7.2.19.3 一般規則
1) 既定解釈のTURN指示は,>>TURN EC-ALL CHECKING OFF とする。
2) 例外名EC-ALLを指定すると,その効果は,全ての例外名を含んだTURN指示を指定したのと同じと
する。
3) 例外名がレベル2例外名のいずれかである場合,その効果は,そのレベル2例外名に従属する全ての
例外名を含んだTURN指示を指定したのと同じとする。ファイル名1の指定がある場合,これらの例
外名の各々に対してファイル名1を指定したのと同じとする。
4) ONの明示的な又は暗黙の指定があるとき,例外名1に関連する例外状態に対しての検査が,後続す
る翻訳群中の手続き部の文及び手続き部見出しに対して有効となる。ファイル名1の指定がある場合
には,そのファイル名に関連する例外状態に対してだけ,検査が有効となる。文の途中に指定すると,
TURN指示はその文自体には適用されない。この検査は,後続する翻訳群中において該当する手続き
部の文及び手続き部見出しの全てに対して有効なままであり,OFF指定付きのTURN指示によって無
効化されるまで効果が持続する。
5) LOCATION指定があるとき,EXCEPTION-LOCATION関数,EXCEPTION-LOCATION-N関数及び
EXCEPTION-STATEMENT関数に対するソース原文の識別に必要な全ての情報が,実行単位で使用可
能になる。LOCATION指定がないとき,この情報の使用可否は,実装者定義とする。
6) OFF指定があるとき,例外名1に関連する例外状態に対しての検査が,後続する翻訳群中の全ての手
続き部の文及び手続き部見出しに対して無効となる。この検査は,例外名1に対して別のTURN指示
がON指定付きで現れるまで無効なままとする。ファイル名1の指定がある場合,そのファイル名に
関連する例外状態に対してだけ検査が無効となる。文の途中に指定すると,その文に対して検査は無
効にならない。
53
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
8
言語の概念
8.1
文字集合
COBOLにおける文字集合の概念は,計算機符号化文字集合,COBOL文字レパートリ,符号系の3種類
とする。
計算機符号化文字集合は,COBOLの内部処理で用いられる文字集合である。
COBOL文字レパートリとは,言語構文を定義するために用いる文字のレパートリとする。これは符号
化表現に依存しない文字の組であるという点において,一種の抽象的な文字集合とされる。COBOL文字
レパートリに規定される言語の要素は,8.1.2(COBOL文字レパートリ)による。
符号系とは,外部媒体上でデータを表現する符号化文字集合を識別したり,文字照合順序を識別したり,
又はその両方を識別したりするものである。プログラマは,特殊名段落中で符号系を定義したり,特殊名
段落中で識別された既定義の符号系を参照したりできる。
CODE-SET句をファイル記述項で使用し,特殊名段落で定義した符号系をそこで参照することによって,
外部媒体上のレコードの代替符号化表現を記述してもよい。入出力操作の間に,CODE-SET句付きで宣言
したファイルのレコードに対して,その外部媒体上の符号化表現と計算機符号化文字集合の符号化表現と
の間で,変換を行う。
8.1.1
計算機符号化文字集合
計算機符号化文字集合(computerʼs coded character set)とは,COBOL実行時要素の翻訳時に又は実行時
に計算機記憶中で用いられる文字の集合とする。
ソースコード中で,英数字定数及び各国文字定数の内容は,16進形式の場合を除き,ソースコードを書
くのに用いられる計算機符号化文字集合のどの文字であってもよい。ただし,その定数の字類に対して実
装者が許している文字に矛盾しない限り,という条件はある。翻訳時に用いられる符号化文字集合は,結
果として生成された実行時要素群の実行時に用いられる符号化文字集合と,同じであっても異なってもよ
い。
ソースコード中で注記は,ソースコードの記述に用いられる符号化文字集合のあらゆる文字を含んでい
てもよい。これは,箇条6(正書法)の規則による。
実行時の計算機符号化文字集合を構成する部分には,用途がDISPLAYと記述されたデータを表現する
のに用いる符号化文字集合と,用途がNATIONALと記述されたデータを表現するのに用いる符号化文字
集合とがあって,これらをそれぞれ計算機英数字符号化文字集合及び計算機各国文字符号化文字集合と呼
ぶ。英数字符号化文字集合と各国文字符号化文字集合とは,二つの別個な符号化文字集合の組であっても
よいし,又は同一の符号化文字集合であって,部分集合の一つを英数字に指名し別な一つか全体集合を各
国文字に指名してあってもよい。いずれの場合も,英数字又は各国文字と特に断らない限りは,計算機符
号化文字集合という用語は,英数字と各国文字との両方を指す。英数字符号化文字集合の文字群と各国文
字符号化文字集合の文字群とに,共通する要素は皆無であってもよいが,そうでなくてもよい。
注記1 一般に,このCOBOL規格仕様では,各国文字集合が英数字文字集合を内包していると想定
しており,例えば,これら二つの文字集合間で変換を行うための組込み関数を定義している。
英数字文字集合の典型はISO/IEC 646などのラテン文字符号化文字集合であるが,どのよう
な符号化文字集合であってもよい。各国文字集合はそれより大規模な符号化文字集合,例え
ばJIS X 0221が規定する国際符号化文字集合(UCS)などを意図しているが,どのような符
号化文字集合であってもよい。
注記2 一つの符号化文字集合で英数字と各国文字との両方を表している例には,このUCSのUTF-16
54
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
がある。そこでは各国文字符号化文字集合がJIS X 0221符号化文字集合の全体から成り,英
数字符号化文字集合がこのUCSの部分集合からなる。英数字及び各国文字の符号化文字集合
が,両方ともUCS符号化文字集合の全体からなってもよい。
実行時に実装系は,計算機英数字文字集合の文字と計算機各国文字集合の文字との組合せを,英数字項
類のデータ項目の内容で認識してもよい。この組合せを,英数字と各国文字との混在データ(mixed
alphanumeric and national data)と呼ぶ。この組合せを許す場合,適用される一般規則は,実装者定義とす
る。
COBOLの仕様は,計算機符号化文字集合を表現するのに用いられる符号化表現には依存しないが,次
に示す事項は例外とする。
1) 計算機記憶の中で英数字符号化文字集合の文字を表現するために用いられるバイト数は,その符号化
文字集合中の全ての文字に対して,同じでなければならない。このバイト数は翻訳時に決まる。
2) 計算機記憶の中で各国文字符号化文字集合の文字を表現するのに用いられるバイト数は,その符号化
文字集合中の全ての文字に対して,同じでなければならない。このバイト数は翻訳時に決まる。
3) 各国文字符号化文字集合の1文字を表すのに用いられるバイト数は,英数字符号化文字集合の1文字
を表すのに用いられるバイト数と等しいかより多いかでなければならない。
ソースコードの規則は,8.1.2(COBOL文字レパートリ)による。
実装系が動作するそれぞれの計算機における1バイト当たりのビット数は,実装者定義とする。
計算機英数字符号化文字集合及び計算機各国文字符号化文字集合のそれぞれについて,含まれる文字の
集合及び符号化表現は,実装者定義とする。これらを同一の符号化文字集合として実現する場合,計算機
英数字符号化文字集合に対応付けられる文字群,及び計算機各国文字符号化文字集合に対応付けられる文
字群は,実装者定義とする。計算機文字集合の中で2種類以上の符号化表現が使える実装系では,符号化
表現を実行時に選択する機構は,実装者定義とする。
実行時の計算機文字集合が翻訳時に分かっていた計算機文字集合と異なる場合は,英数字定数及び各国
文字定数を,実行時の使用に先立って,その定数の字類に対して適宜に,実行時の計算機符号化文字集合
へと変換しなければならないが,例外として16進英数字形式及び16進各国文字形式の定数を変換しては
ならない。翻訳時の符号化文字集合中の文字と,実行時の計算機符号化文字集合中の関連する文字との対
応付けは,実装者定義とする。実行時の文字集合が翻訳時に分かっている場合,この変換が起きる時点は,
翻訳時であることも実行時であることもある。実行時の文字集合が翻訳時に分からない場合,変換が起き
るのは実行時である。実行時の変換の起きる時点は,実装者定義とする。
8.1.2
COBOL文字レパートリ
COBOL文字レパートリ(COBOL character repertoire)は,言語の構文を指定するのに用いられる。COBOL
の語,分離符,PICTURE記号,数字定数,通貨記号,浮動形式の標識,ブール定数及び16進定数の内容
は,COBOL文字レパートリで定義される。COBOL文字レパートリからソースコード記述に用いるための
一つ以上の符号化文字集合への対応付けは,実装者定義とする。
COBOL文字レパートリは,基本文字,基本数字,基本特殊文字及び拡張文字からなる[表2(COBOL
文字レパートリ)参照]。拡張文字は,英語に加えて多くの言語で利用者定義語を書くことを可能にする。
55
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表2−COBOL文字レパートリ
記述
文字
意味
基本文字
A,B,…,Z
a,b,…,z
ISO/IEC 646又はJIS X 0221の基本ラテン大文字
ISO/IEC 646又はJIS X 0221の基本ラテン小文字
基本数字
0,1,…,9
数字
基本特殊文字
+
‒
*
/
=
空白
正符号
負符号(ハイフン)
星印(アスタリスク)
斜線(スラント,スラッシュ,ソリダス)
等号
¥
,
;
.
通貨記号
コンマ
セミコロン
ピリオド
"
'
引用符
アポストロフィ
(
)
>
<
&
:
左括弧
右括弧
大なり記号
小なり記号
アンパサンド
コロン
̲
下線文字(アンダスコア)
拡張文字
JIS X 0221の文字レパートリに由来する,利用者定義語の
形成に用いるための追加の文字群
(注記 漢字などを含む。)
8.1.2.1
一般規則
1) COBOL文字レパートリの基本文字,基本数字,基本特殊文字及び拡張文字から一つ以上の符号化文
字集合への対応付けは,実装者定義とする。COBOL文字レパートリは,実装者が選択したどのよう
な符号化表現方式で表現されてもよい。その選択肢には,(i)この文字レパートリの全ての文字を包
含した一つの符号化文字集合,及び(ii)二つの別個な符号化文字集合の組であって一つの英数字と
一つの各国文字との混合,が含まれるが,これらだけとは限らない。二つの別個な符号化文字集合の
組を用いる場合,英数字符号化文字集合と各国文字符号化文字集合との間での,基本文字,基本数字
及び基本特殊文字の対応関係は,実装者定義とする。
注記1 “英数字”及び“各国文字”の概念はデータの符号化表現に適用されるが,“基本文字”
及び“拡張文字”の概念はソースコードに適用されて,符号化表現ではなく記号名それ自
体を指定する。翻訳群中に現れる基本文字は,英数字符号化文字集合と各国文字符号化文
字集合のいずれで書いてもよいが,いずれの場合も同じ文字とする。例えば,翻訳群中に
ISO/IEC 646で書いた基本文字"A"がCOBOLの語の中でもつ意味は,JIS X 0221で書いた
基本文字"A"と同じである。これはちょうど,大文字の"A"の意味が小文字の"a"と同じであ
るのと同様である。
注記2 COBOL文字レパートリを表現するために用いてよい符号化文字集合の例としては,JIS X
56
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
0221のUCS-4,UTF-8又はUTF-16がある。また,実装者定義の符号化文字集合として二
つの別個な符号化文字集合(一つが英数字で,一つが各国文字)の混在がある。このほか
にも実装者定義のCOBOL文字レパートリとして可能な符号化表現がある。
2) COBOL文字レパートリが対応付けられている文字集合が,英数字と各国文字との混在符号化文字集
合であるとき,英数字を各国文字から区別するための制御機能又はその他の機構は,実装者定義とす
る。単一の翻訳群の中で2種類以上の符号化表現が使用できるとき,符号化表現の間での区別を行う
ために用いる制御機能又はその他の方法は,実装者定義とする。符号化文字集合間の切換えに用いる
制御機能は翻訳処理で利用され,実装者定義の規定がない限り,翻訳群の構文の一部ではない。
3) 翻訳群内では,次の規則を適用する。
a) 16進形式でない英数字定数及び各国文字定数の中で用いる場合を除き,個々のCOBOL基本大文字
は,対応するCOBOL基本小文字があれば,それと等価である。
b) 英数字文字集合中にある基本文字,基本数字,基本特殊文字及び拡張文字は,それぞれ各国文字集
合中にある,対応する基本文字,基本数字,基本特殊文字及び拡張文字と等価とする。
基本文字の大文字と小文字との等価性は,大文字を小文字に同一視して達成する。これは,附属
書Dに規定する大文字と小文字との対応表による。
4) 拡張文字の集合は,附属書C(利用者定義語に使用できる文字)が規定するレパートリのうち,COBOL
文字レパートリ中で基本文字,基本数字又は基本特殊文字と定義された文字を除外した文字群で構成
する。利用者定義語において拡張文字は次に示す規則による。
a) 附属書Cのある文字が拡張文字の集合に包含されるのは,実装者定義の翻訳時符号化文字集合中に
その文字が存在する場合とする。
b) 附属書Cで特殊文字だと識別する文字を,利用者定義語の先頭又は末尾の文字としてはならない。
ISO/IEC TR 10176の附属書Aが結合文字だと識別する文字を,利用者定義語の先頭又は末尾の文
字としてはならない。
c) 拡張文字の大文字は,対応する拡張文字の小文字と同一のものとして扱う。これは,附属書Dに規
定する大文字・小文字の対応表による。
d) ISO/IEC TR 10176の附属書Aが結合文字だと識別する文字が拡張文字の集合に含まれる場合,基
底文字と各々の結合文字とは,利用者定義語の長さを決めるのに当たり,別々の文字として扱う。
注記1 ソースコードを移植可能とするためには,プログラマは利用者定義語を書くときCOBOL
文字レパートリの基本文字,基本数字,下線文字及びハイフンを用いる必要がある。
注記2 ISO/IEC TR 10176は,プログラム言語の識別子(COBOLの利用者定義語に相当)に用
いるために推奨する文字群を識別するものである。ISO/IEC TR 10176の文字群には,句
読文字,一般に単語のつづりの中では用いない記号及びプログラム言語の識別子にふさ
わしくないと思われる記号は含まれていない。ISO/IEC TR 10176の文字群の中には,
COBOLが規定する基本特殊文字に似た外見をもつ文字もあり,ある言語の話者にとっ
ては見慣れないが特定の言語を書き表すには必要な文字もある。そのような文字を
COBOLが許しているのは,これらの文字が不可欠となっている言語に堪能なプログラ
マが書いた利用者定義語は,混乱が生じないという想定に基づいている。
注記3 ISO/IEC TR 10176が識別子(COBOLの利用者定義語に相当)のために推奨する文字の
一覧は,JIS X 0221の実装水準2の結合列を包含しているが,実装水準3の結合列は包
含しない。この一覧は"é"のような合成文字の代替表現を形成する結合列を包含しない。
57
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
注記4 拡張文字は,大文字と小文字との等価性を決める場合に小文字に同一視される。
5) COBOL文字レパートリに,実装系が図形表現を備えていない文字がある場合,表現されない文字を
置換する実装者定義の代替図形表現があってもよい。
8.1.3
符号系
COBOLにおいて符号系(alphabet)とは,符号化文字集合,文字照合順序,又はその両方の指定に名前
を付与したものである。特殊名段落は,符号系を命名し,利用者定義の符号化文字集合及び文字照合順序
を指定する手段を提供する。符号化文字集合又は文字照合順序を用いるには,それを作用対象として参照
するCOBOLの文又は記述項の中で,符号系名を指定すればよい。
8.1.4
文字照合順序
文字照合順序(collating sequence)とは,整列処理,併合処理,データの比較,及び索引編成のファイル
処理のために,符号化文字集合又はCOBOL符号系の中での,文字群の順序を規定するものである。論理
的には二つの文字照合順序,すなわち英数字照合順序と各国文字照合順序とが存在する。英数字照合順序
は,用途がDISPLAYと記述されたデータ項目又はレコードキーに関連する順序を規定するものであり,
各国文字照合順序は,用途がNATIONALと記述されたデータ項目又はレコードキーに関連する順序を規
定するものである。これら二つの論理的な文字照合順序の定義及び実装は,別々であっても,一緒であっ
てもよい。後者の場合,論理的には英数字照合順序に対応する文字群と,論理的には各国文字照合順序に
対応する文字群とが,一つに合成された文字照合順序である。
これらの文字照合順序に関連する既定解釈の順序付けは,実装者定義とする。次の処理では特定の順序
付けを選択してもよい。
− プログラム文字照合順序としては,実行用計算機段落のPROGRAM COLLATING SEQUENCE句に指
定した符号系又は現地特性による。
− SORT文又はMERGE文に対しては,各々の文に指定した符号系又は現地特性による。
− 索引ファイルに対しては,ファイル管理記述項のCOLLATING SEQUENCE句に指定した符号系又は
現地特性による。
− 特定の比較に対しては,LOCALE-COMPARE組込み関数又はSTANDARD-COMPARE組込み関数の使
用による。
現地特性の指定があるとき,関連する順序付けは実行時に決まる。
8.2
現地特性
現地特性(ロケール,locale)とは,実行時に用いられるいろいろな文化的要素の仕様を用意したもので
ある。いろいろな文化的要素は,名前付きの現地特性カテゴリへとまとめられて,次に示すように,実行
時の振る舞いの特定の解釈方法を制御する。
現地特性カテゴリ
影響のある振る舞い
LC̲COLLATE
文字照合順序
LC̲CTYPE
文字の字類分けと大文字・小文字の変換規則
LC̲MESSAGES
通報・診断メッセージと対話応答の形式
LC̲MONETARY
金額の表示形式
LC̲NUMERIC
数値の表示形式
LC̲TIME
日付と時間の表示形式
LC̲ALL
現地特性カテゴリのうちLC̲COLLATE,LC̲CTYPE,LC̲MESSAGES,
LC̲MONETARY,LC̲TIME,LC̲NUMERICそのほか現地特性に含まれる
58
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
あらゆるカテゴリ
現地特性カテゴリの名前,現地特性カテゴリの詳細,及び現地特性のフィールド名は,ISO/IEC 9945に
よる。現地特性の格納形式及び実装方法は,論理的に同等な機能が実現される限りISO/IEC 9945と異な
っていてもよい。
ソース単位に対して,現地特性からの文化的要素を使用するよう指定した場合,その現地特性カテゴリ
に関連する特有の値,形式又はアルゴリズムは,実行時に決まる。
操作環境によってはシステム全体で使用する現地特性が備わっており,これを,システム既定解釈現地
特性(system-default locale)と呼ぶ。そのような環境には,実行単位内で使用する現地特性を選択する手
段もまた備わっていることがあり,それを,利用者既定解釈現地特性(user-default locale)と呼ぶ。
実行単位が活性化される時点で,実行時の現在有効現地特性には利用者既定解釈現地特性が設定され,
その実行単位に対しては,別の実行時現地特性が確定するまでその仕様が有効となる。SET文によって,
任意の現地特性を実行時の現在有効現地特性として確定したり任意の現地特性を利用者既定解釈現地特性
に設定したりする機能も提供されている。ただし,実行単位全体に対しては常に一つの現在有効現地特性
が存在するので,これが有効になるのは現地特性を指す言語機能を使用する翻訳単位に対してだけとなる。
送出し側にUSER-DEFAULT を指定したSET文を実行すると,指定されたカテゴリに対する実行時の現
在有効現地特性に,利用者既定解釈現地特性が設定される。実装者は,利用者既定解釈現地特性を定義す
るための手法を規定し,更に,利用者既定解釈現地特性を備えていない計算機環境での使用のため最低で
も1種類の利用者既定解釈現地特性を提供しなければならない。
送出し側にSYSTEM-DEFAULTを指定したSET文を実行すると,指定されたカテゴリに対する実行時の
現在有効現地特性に,システム既定解釈現地特性が設定される。実装者は,システム既定解釈現地特性を
定義するための手法を規定し,システム既定解釈現地特性を備えていない計算機環境での使用のため最低
でも1種類のシステム既定解釈現地特性を提供しなければならない。
送出し側に現地特性名を指定したSET文を実行すると,実行時の現在有効現地特性のうちの指定された
カテゴリに対して,特殊名段落のLOCALE句でその現地特性名に関連付けられた現地特性が設定される。
SET文を用いて現在有効現地特性の情報を退避しておき,その後に別なSET文で特定の現地特性を有効に
することができる。
利用者既定解釈現地特性又はシステム既定解釈現地特性を切り換えたのが非COBOL実行時モジュール
であるとき,新たな利用者既定解釈現地特性又はシステム既定解釈現地特性は,実行時の現在有効現地特
性にするSET文を実行しない限りは,COBOLでは使用可能にならない。現地特性カテゴリのいずれかに
対して,活性化される側のCOBOL実行時モジュールが行った現地特性の切換えは,制御の復帰とともに,
活性化した側のCOBOL実行時モジュールで用いられる。非COBOL実行時モジュールによる現在有効現
地特性の切換えが,COBOLで用いられるか,及びどのカテゴリに対して用いられるかは,実装者定義と
する。
注記 システム既定解釈現地特性をCOBOL内部から設定する機能は,提供されない。
現在有効現地特性が何かを識別する方法は,14.5.6(現地特性識別)による。
現地特性を必要とする操作の間に現地特性が見つからないと,EC-LOCALE-MISSING例外状態になって
演算は不成功になる。現地特性を使用する操作の間に現地特性の内容が妥当でないか又は完全でないと,
EC-LOCALE-INVALID例外状態になってその演算は不成功になる。
現地特性がLC̲COLLATE中に英数字照合順序と各国文字照合順序との両方を規定してはいない場合,
その現地特性には各国文字照合順序が定義されていなければならず,用途がDISPLAYのデータ項目中で
59
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
使用できる文字との対応が付く各国文字が,その文字照合順序の中に包含されていなければならない。現
地特性に基づいて比較条件を評価する場合に英数字から各国文字への変換を行うには,この対応付けが用
いられる。
現地特性カテゴリLC̲MESSAGES及びLC̲NUMERICをCOBOLが直接に用いることはない。しかし,
これらのカテゴリの設定及び問合せの機能は提供するので,応用プログラムはその機能を用いてよい。
LC̲ALLを構成する文化的要素の集合の中に,COBOLが使用することのないカテゴリ及び文化的要素
が含まれていてもよい。
8.2.1
現地特性フィールド名
現地特性フィールド名の幾つかは,処理内容を明確化するためにCOBOL仕様書から参照されている。
これら及びそのほかの関連フィールド名は,ISO/IEC 9945の規定による。明示的に参照される現地特性フ
ィールド名を次に示す。
カテゴリ
フィールド名
説明
LC̲MONETARY
int̲curr̲symbol
国際通貨記号
currency̲symbol
現地通貨記号
mon̲decimal̲point
小数点文字
mon̲thousands̲sep
小数点の左側のけたまとめに用いる文字列
mon̲grouping
各々の組のけた数
positive̲sign
非負の値をもつ量を表すのに用いる文字列
negative̲sign
負の値をもつ量を表すのに用いる文字列
int̲frac̲digits
小数点の右側のけた数
frac̲digits
小数点の右側のけた数
p̲cs̲precedes
非負の量に対し,通貨記号が数値の前か後かを表す標識
n̲cs̲precedes
負の量に対し,通貨記号が数値の前か後かを表す標識
LC̲TIME
d̲fmt
日付の表現形式
t̲fmt
時刻の表現形式
8.3
字句の要素
字句の要素は,文字列及び分離符である。
8.3.1
文字列
文字列(character-string)とは,1文字又は一連の文字の並びであって,COBOLの語,定数又はPICTURE
文字列を形成する。文字列は,分離符で区切られる。
8.3.1.1
COBOLの語
COBOLの語(COBOL word)は,31文字以内の文字列であって,翻訳指示語,文脈依存語,組込み関
数名,予約語,システム名又は利用者定義語を形成する。特殊文字語でないCOBOLの語の各文字は,基
本文字,基本数字,拡張文字,基本特殊文字のハイフン及び基本特殊文字の下線文字から選ばなければな
らない。ハイフン又は下線文字を,語の最初又は最後の文字としてはならない。
翻訳群の内部では,翻訳変数名が,その他の種類の利用者定義語,システム名,文脈依存語及び組込み
関数名と要素を共用する集合群を形成する。つまり同一のCOBOLの語を,翻訳変数名に用いると同時に
これら他の種類の語に用いてもよい。
60
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ソース要素中では,次を適用する。
1) 予約語は,これを利用者定義語又はシステム名に用いてはならない。
2) 翻訳指示語は,予約語でもあるものを除き,これを利用者定義語及びシステム名に用いてもよい。
3) 文脈依存語は,規定された言語構造以外の文脈で,これを利用者定義語及びシステム名に用いてもよ
い。ある語が利用者定義か又は文脈依存かの解釈に,特別な規則を適用することもある。
4) ある特定の語を,システム名に用いるのと同時に利用者定義語に用いてもよい。その場合は,8.3.1.1.1
(利用者定義語)及び8.3.1.1.2(システム名)の規則による。
5) 組込み関数名を,利用者定義語及びシステム名に用いてもよい。ただし,次のものを除く。
− 組込み関数名のLENGTH,RANDOM,SIGN,SUM(これらは予約語でもある。)
− 組込み関数名のうち,リポジトリ段落中の関数指定子で識別されるもの
8.3.1.1.1
利用者定義語
利用者定義語(user-defined word)は,COBOLの語であって,句又は文の書き方を満足するように利用
者が定義する。
利用者定義語の種類は,次による。
− 符号系名
alphabet-name
− 通信記述名(廃要素)
cd-name
− クラス名(オブジェクト指向用)
class-name (for object orientation)
− 字類名(真理値命題用)
class-name (for truth value proposition)
− 翻訳変数名
compilation-variable-name
− 条件名
condition-name
− 定数名
constant-name
− データ名
data-name
− ファイル名
file-name
− 関数原型名
function-prototype-name
− 指標名
index-name
− インタフェース名
interface-name
− レベル番号
level-number
− 現地特性名
locale-name
− メソッド名
method-name
− 呼び名
mnemonic-name
− 順序付け名
ordering-name
− 段落名
paragraph-name
− パラメタ名
parameter-name
− プログラム名
program-name
− プログラム原型名
program-prototype-name
− プロパティ名
property-name
− レコードキー名
record-key-name
− レコード名
record-name
− 報告書名
report-name
− 画面名
screen-name
61
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
− 節名
section-name
− 記号文字
symbolic-character
− 型名
type-name
− 利用者関数名
user-function-name
一つのソース要素中で,利用者定義語を用いてよい用途は,ここに示した利用者定義語の種類のうちの
一つだけに限られる,ただし,次に示す例外がある。
1) 翻訳変数名は,これ以外のあらゆる種類の利用者定義語と同じであってもよい。
2) レベル番号は,段落名又は節名と同じであってもよい。
3) 次に示すいずれかの種類の利用者定義語として同じ名前を用いてもよい。
− 定数名
− データ名
− プロパティ名
− レコードキー名
− レコード名
一意性に関するこれ以上の規則は,8.4.1(一意参照)による。
節名,段落名及びレベル番号を除き,各々の利用者定義語は,少なくとも一つの基本文字又は拡張文字
を含まなければならない。レベル番号は一意でなくてもよい。レベル番号の指定は他のレベル番号と同一
であってもよい。
次に示す利用者定義語は,操作環境へと外部公開(externalize)される。
1) 最も外側のプログラム名,クラス名,関数原型名,インタフェース名,メソッド名,プログラム原型
名,プロパティ名及び利用者関数名。
2) EXTERNAL属性付きで記述した項目の,データ名,ファイル名及びレコード名。
操作環境へ外部公開される利用者定義語に拡張文字を指定してもよいか否かは,実装者定義とする。
外部公開される利用者定義語のうちAS指定があるものに対しては,AS指定中に書いた定数の内容が,
操作環境に外部公開される名前である。これらの名前の形成及び対応付けの規則は,実装者定義とする。
注記 AS指定は,大文字と小文字との区別を意識した名前又はCOBOLの語として正しくない名前を
指定するための手段を提供する。別のプログラム言語又はシステム構成要素は,そのような名
前を要求してもよい。
外部公開される利用者定義語のうちAS指定がないものに対しては,利用者定義語と,操作環境へ外部
公開される対応する名前との間の,対応付けの規則は,実装者定義とする。
一つの実行単位内では,操作環境へ外部公開されたある特定の名前は,全てが同一の種類の実体又は対
象を識別するものでなければならない。メソッド名とプロパティ名とを除いて,複数個のソース要素が,
外部公開された同一の名前によって何かを識別する場合,それらは同一の実体を参照する。
外部公開名を参照する箇所は,ソース要素中で次の箇所だけとする。
1) REPOSITORY段落の記述項の AS指定中
2) EXTERNAL句の AS指定中
3) CALL文中のプログラム名
4) CANCEL文中のプログラム名
5) プログラムアドレス一意名のプログラム名
6) INVOKE文中又は文内メソッド呼出しのメソッド名
62
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
これら以外では,外部参照になってもよい名前の参照箇所でも,外部公開名ではなく利用者定義語を用
いて名前を指定しなければならない。
AS指定中では外部公開名だけを参照しなければならない。CALL文,CANCEL文,INVOKE文,文内
メソッド呼出し及びプログラムアドレス一意名では,外部公開名と利用者定義語とのいずれを参照しても
よく,その相違は,ここ以降の条件による。
INVOKE文又は文内メソッド呼出しが,あるメソッド名を参照するために,非限定オブジェクト参照を
用いている場合は,次による。
1) CALL-CONVENTION翻訳指示に呼出し規約COBOLの暗黙又は明示的な指定がある場合,メソッド
名はCOBOLの語として扱われ,呼出し対象メソッドの外部公開名に対応付けられる。その場合は,
AS指定のないメソッド名に対するのと同じ,実装者定義の対応付け規則を適用する。
2) CALL-CONVENTION翻訳指示に呼出し規約名1の指定がある場合,メソッド名が定数として扱われ,
呼出し対象メソッドの外部公開名に対応付けられる。その方式は実装者定義とする。
INVOKE文又は文内メソッド呼出しが,あるメソッド名を参照するために,非限定でないオブジェクト
参照を用いている場合,メソッド名の命名規約及びメソッド名に用いられる対応付け規則は,そのメソッ
ドを包含するクラス又はインタフェースの入口規約によって決まる。
注記 呼出し対象メソッドの参照に非限定オブジェクト参照を用いたとき,そのメソッドを包含する
クラス又はインタフェースの定義にENTRY-CONVENTIONがあっても無視する。
CALL文,CANCEL文又はプログラムアドレス一意名が,翻訳単位を命名するプログラム名を参照して
いる場合は,次による。
1) CALL文,CANCEL文又はプログラムアドレス一意名が,プログラム原型名を指定している場合は,
プログラム名に対する命名規約と用いられる対応付け規則は,呼出し対象プログラムの記述に示され
た入口規約によって決まる[12.2.7(リポジトリ段落)の一般規則10) 参照]。
2) さもなければ,次による。
a) CALL-CONVENTION翻訳指示中に呼出し規約COBOLの暗黙の指定又は明示的な指定がある場合,
プログラム名はCOBOLの語として扱われ,プログラムの外部公開名に対応付けられる。その場合
は,AS指定のないプログラム名に対するのと同じ,実装者定義の対応付け規則を適用する。
b) CALL-CONVENTION翻訳指示中に呼出し規約名1の指定がある場合,プログラム名は定数として
扱われ,プログラムの外部公開名へと対応付けられる。その方式は実装者定義とする。
8.3.1.1.1.1
符号系名
符号系名(alphabet-name)は,特定の文字集合,文字照合順序,又はその両方を識別する。この関係は,
特殊名段落で確定する。
8.3.1.1.1.2
通信記述名
通信記述名(cd-name)は,データ部の通信節の通信記述項に記述された,通信管理システム連絡領域を
識別する。
8.3.1.1.1.3
クラス名
クラス名(class-name)は,クラス,すなわち0個以上のオブジェクトに対する共通の振る舞い及び実装
を定義した実体を識別する。
8.3.1.1.1.4
字類名
字類名(class-name)は,あるデータ項目の内容がその字類名の定義に列挙した文字だけから構成されて
いるか否かで,真理値の決まる命題を識別する。
63
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
8.3.1.1.1.5
翻訳変数名
翻訳変数名(compilation-variable-name)は,DEFINE翻訳指示で定義した翻訳変数を識別する。
8.3.1.1.1.6
条件名
条件名(condition-name)は,データ部で定義された値,値の集合,又は値の範囲を識別する。又は,特
殊名段落で定義されたオン(on)又はオフ(off)の状態を識別する。
8.3.1.1.1.7
定数名
定数名(constant-name)は,名前付き定数を識別する。定数名はデータ部の定数記述項で定義する。
8.3.1.1.1.8
データ名
データ名(data-name)は,データ記述項で記述されるデータ項目を,又はレコード記述項で記述される
レコードを識別する。
8.3.1.1.1.9
ファイル名
ファイル名(file-name)は,データ部のファイル節におけるファイル記述項(FD)又は整列併合用ファ
イル記述項(SD)で記述されるファイル結合子を識別する。
8.3.1.1.1.10 関数原型名
関数原型名(function-prototype-name)は,関数原型を識別する。
8.3.1.1.1.11 指標名
指標名(index-name)は,特定の表に関連する指標を識別する。
8.3.1.1.1.12 インタフェース名
インタフェース名(interface-name)は,インタフェース,つまりメソッド原型の集まりを識別する。
8.3.1.1.1.13 レベル番号
レベル番号(level-number)は,1けた又は2けたの数字で表現され,データ項目の階層中の位置を示す
か,又はデータ記述項が特別な性質をもつことを示す。
8.3.1.1.1.14 現地特性名
現地特性名(locale-name)は,文化的要素の集合を規定する現地特性を識別する。現地特性名は特殊名
段落中で定義する。
8.3.1.1.1.15 メソッド名
メソッド名(method-name)は,メソッドを識別する。
8.3.1.1.1.16 呼び名
呼び名(mnemonic-name)は,実装者が命名する装置名,機能名,又はスイッチ名を識別する。この関
係は特殊名段落で確定する。
8.3.1.1.1.17 順序付け名
順序付け名(ordering-name)は,STANDARD-COMPARE組込み関数の実行のために用いる,ISO/IEC
14651:2001に合致した順序付け表を識別する。
8.3.1.1.1.18 段落名
段落名(paragraph-name)は,手続き部の段落を識別する。段落名が等しいとみなされるのは,同じ個数
のCOBOL文字を同じ順序で並べて構成した場合とする。
注記 段落名の "00123" と "123" とは異なる段落名である。
8.3.1.1.1.19 パラメタ名
パラメタ名(parameter-name)は,パラメタ付きクラス又はパラメタ付きインタフェースの,仮パラメタ
を識別する。
64
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
8.3.1.1.1.20 プログラム名
プログラム名(program-name)は,プログラムを識別する。プログラム名とは,COBOLプログラムで
は,そのプログラムの見出し部のプログラム名段落に指定した名前とする。COBOL以外のプログラムで
は,プログラム名の形成に対する規則は実装者定義とする。
8.3.1.1.1.21 プログラム原型名
プログラム原型名(program-prototype-name)は,プログラム原型を識別する。
8.3.1.1.1.22 プロパティ名
プロパティ名(property-name)は,オブジェクトの情報を出し入れするための一つの手段を識別する。
8.3.1.1.1.23 レコードキー名
レコードキー名(record-key-name)は,索引ファイルに関連付けられたキーを識別する。
8.3.1.1.1.24 レコード名
レコード名(record-name)は,レコード記述項で記述されるレコードを識別する。レコード名は,書き
方の規則が禁止しない限り,データ名を指定してもよい箇所に指定してもよい。
8.3.1.1.1.25 報告書名
報告書名(report-name)は,データ部の報告書節の報告書記述項で記述される報告書を識別する。
8.3.1.1.1.26 画面名
画面名(screen-name)は,画面節の画面記述項を識別する。
8.3.1.1.1.27 節名
節名(section-name)は,手続き部中の節を識別する。
8.3.1.1.1.28 記号文字
記号文字(symbolic-character)は,特殊名段落中で指定された値を表す,利用者定義の表意定数とする。
8.3.1.1.1.29 型名
型名(type-name)は,データ記述項で指定される型宣言(type declaration)を識別する。
8.3.1.1.1.30 利用者関数名
利用者関数名(user-function-name)は,関数を識別する。
8.3.1.1.2
システム名
システム名(system-name)は,操作環境との連絡のために用いられる。COBOLの語の形成規則に制約
を加えるようなシステム名の形成規則を,実装者は定義してもよい。
システム名の種類は,次による。
− 呼出し規約名
call-convention-name
− 符号名
code-name
− 計算機名
computer-name
− 装置名
device-name
− 入口規約名
entry-convention-name
− 外部現地特性名
external-locale-name
− 機能名
feature-name
− 登録集名
library-name
− スイッチ名
switch-name
− 原文名
text-name
一つの実装系の内部で,あるシステム名が,装置名,機能名及びスイッチ名のうち2種類以上に属して
65
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
はならない。
8.3.1.1.2.1
呼出し規約名
呼出し規約名(call-convention-name)は,メソッド名又はプログラム名からその外部公開名への対応付
けに関する実装者定義の規約を識別する。また,関数・メソッド・プログラムとの相互作用に用いられる
連絡機構の属性を識別することもある。
8.3.1.1.2.2
符号名
符号名(code-name)は,符号化文字集合及び文字照合順序を識別する。
8.3.1.1.2.3
計算機名
計算機名(computer-name)は,翻訳単位を翻訳する又は実行時モジュールを実行する計算機を識別する
ことがある。
8.3.1.1.2.4
装置名
装置名(device-name)は,入出力装置を識別する。
8.3.1.1.2.5
入口規約名
入口規約名(entry-convention-name)は,関数・メソッド・プログラムが制御を受け取るために用いる連
絡機構の属性を識別する。
8.3.1.1.2.6
外部現地特性名
外部現地特性名(external-locale-name)は,文化的要素の集合を規定している現地特性を識別する。この
現地特性は操作環境が提供するものである。
8.3.1.1.2.7
機能名
機能名(feature-name)は,入出力装置の機能を識別する。
8.3.1.1.2.8
登録集名
登録集名(library-name)は,COPY登録集を識別する。
8.3.1.1.2.9
スイッチ名
スイッチ名(switch-name)は,実装者定義の外部スイッチを識別する。
8.3.1.1.2.10 原文名
原文名(text-name)は,登録集原文を識別する。
8.3.1.1.3
予約語
COBOL語のうち8.9(予約語)に示したものは,言語構造中でキーワード,補助語又は特殊文字語とし
ての用途が予約されている。予約語(reserved word)を,システム名又は利用者定義語に用いてはならな
い。
予約語と利用者定義語との間で衝突が起きないよう,この規格では予約語の形成に次の規則を適用する。
注記 これらの規則は,将来の版にも適用されることを意図している。実装者は拡張仕様を定義する
に当たって,これらの規則を遵守するのが望ましい。
1) 予約語の先頭は,数字の0,…,9,文字X,Y,又はZではない。ただし,語ZERO,ZEROES,ZEROS
はこの限りでない。
2) 予約語は,少なくとも二つの基本文字を含む。ただし,特殊文字語はこの限りでない。
3) 予約語の先頭は,一つ又は二つの基本文字にハイフンが続くものではない。ただし,語I-O及び
I-O-CONTROLはこの限りでなく,"B‒"で始まる語もこの限りでない。
4) 予約語は,二つ以上連続するハイフンを含まない。
予約語の種類は,次による。
66
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
− 必須語
required words
− 補助語
optional words
8.3.1.1.3.1
必須語
必須語(required word)は,その語が現れる書き方を用いるとき,必要とされる語とする。
必須語は,次の2種類とする。
1) キーワード(必要語,key word)。各々の書き方の中で,下線のある大文字の語。
2) 特殊文字語(special character word)。次による。
語
意味
+
算術演算子 … 単項の+又は加算
‒
算術演算子 … 単項の−又は減算
*
算術演算子 … 乗算
/
算術演算子 … 除算
**
算術演算子 … べき乗
&
連結演算子
>
比較演算子 … 大きい
<
比較演算子 … 小さい
=
比較演算子 … 等しい,及びCOMPUTE文の代入演算子
==
COPY文中及びREPLACE文中の仮原文区切り記号
>=
比較演算子 … 以上
<=
比較演算子 … 以下
*>
注記標識
>>
翻訳指示標識
::
メソッド呼出し演算子
8.3.1.1.3.2
補助語
それぞれ書き方の中にある,下線のない大文字の語を,補助語(optional word)と呼ぶ。これを指定す
るかしないかは利用者の自由であって,書き方の意味には影響を及ぼさない。
8.3.1.1.4
文脈依存語
文脈依存語(context-sensitive word)は,その語が指定された一般形式中でだけ予約語となるCOBOLの
語とする。文脈依存語及びそれが予約語になる文脈は,8.10(文脈依存語)に示す。
8.3.1.1.5
組込み関数名
組込み関数名(intrinsic-function-name)は,特定の組込み関数を識別するCOBOLの語とする。組込み関
数名の一覧は,8.11(組込み関数名)に示す。
8.3.1.1.6
例外名
例外名(exception-name)は,例外状態を識別するCOBOLの語とする。例外名の一覧は,14.5.12.1(例
外状態)に示す。
8.3.1.2
定数
定数(literal)とは,表意定数を指す予約語か,又はデータの値を表す文字列であってその値はその定数
を構成する順序付きの文字の集まりから導き出されるものである。各々の定数は字類及び項類をもち,そ
の種類は英数字,ブール,各国文字又は数字のいずれかとする。
英数字定数,ブール定数,及び各国文字定数の両端の区切り記号に用いる一対の引用記号(quotation
67
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
symbol)は,アポストロフィと引用符のいずれでもよい。一つのソース単位中で両方の書き方を用いても
よい。
16進英数字形式,16進ブール形式及び16進各国文字形式の定数では,定数の値を指定するために16
進数字(hexadecimal digit)を用いる。16進数字は,基本数字の0〜9及び基本英数字のA〜Fとする。
8.3.1.2.1
英数字定数
英数字定数(alphanumeric literal)の字類及び項類は,英数字とする。
8.3.1.2.1.1
一般形式
書き方1(英数字)
"{文字1}…"
'{文字1}…'
書き方2(16進英数字)
X"{16進文字並び1}…"
X'{16進文字並び1}…'
8.3.1.2.1.2
構文規則
全ての書き方
1) 英数字定数の,区切り分離符を除いた長さは,英数字文字位置で1〜160個でなければならない。
書き方1
2) 文字1は,実装者がソースコード表現用に選択した符号化文字集合中にあり,かつ,翻訳時の英数字
符号化文字集合中の文字に指名した文字集合中にある,いずれの文字であってもよい。
注記 したがって,英数字定数中の文字をソースコード中では各国文字符号化文字集合で表現して
もよい。ただし,そうする必要はない。これによって,例えば "ABC" という書き方の定数
をソースコード中ではUTF-16で表現しておき,格納する場合はISO/IEC 646としてもよい。
ソースコードを全て各国文字符号化文字集合で表現することを許すために,これが不可欠で
あることは,UTF-16の場合に限ったことではない。
書き方1の英数字定数の中におけるUTF-8又は英数字と各国文字との混在した文字列を認識する機
能は,実装者への要求でも禁止でもない。許す場合は,その機能は利用者が任意に使用でき,その実
装系が通常認識する文字群に制限を加えない方式によらなければならない。適用される構文規則は,
実装者定義とする。
3) 開始区切り記号に用いた引用記号に釣り合う引用記号が2文字連続して現れると,これは定数の内容
としての引用記号1文字を表す。
4) 引用記号1文字を表すために用いる2個連続した引用記号は,開始引用記号と同じ符号化文字集合で
表現しなければならない。
書き方2
5) 16進文字並び1は,16進数字で構成されなければならない。
6) 各々の16進文字並び1は,実装者が英数字の1文字に対応する16進文字の個数と規定した個数の16
進文字でなければならない。
8.3.1.2.1.3
一般規則
全ての書き方
1) 英数字定数を区切る分離符は,この英数字定数の値の一部ではない。
2) 英数字定数の字類及び項類は,英数字とする。
68
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
書き方1
3) 翻訳時の定数の値は,用途DISPLAYに対して実装者が規定する翻訳時の計算機符号化文字集合に含
まれる文字1の出現の列とする。
定数の実行時の値は,同じ定数の翻訳時の値を等価な実行時の値へと変換した結果としての英数字
の文字列である。その変換は,8.1.1(計算機符号化文字集合)の規定による。
注記 この規則は,用途のDISPLAYをUCSなどの大規模文字集合で実装している場合は,英数字
定数を各国文字表現で格納することを可能にしている。
書き方1の英数字定数の内容に,UTF-8又は英数字と各国文字との混在が選択できる実装系では,
それらを選択したときに適用される一般規則は,実装者定義とする。
書き方2
4) 定数の実行時の値は英数字の文字列であって,各々の文字がもつビット構成は16進文字並び1の一つ
で指定される。
符号化文字集合中に対応文字が存在しない16進文字並び1が指定された結果は,実装者定義とする。
文字の占めるビット数が4の倍数でない場合の,各々の16進文字並び1から文字への対応付けもまた,
実装者定義とする。
8.3.1.2.2
数字定数
数字定数(numeric literal)の字類及び項類は,数字とする。
8.3.1.2.2.1
固定小数点数字定数
固定小数点(fixed-point)数字定数は,0〜9の数字,正号,負号及び小数点から選んだ文字の文字列と
する。実装者は1〜31けたの固定小数点数字定数を許さなければならない。固定小数点数字定数の形成規
則及び値の規則は,次による。
1) 数字を少なくとも1けた含まなければならない。
2) 符号文字が複数あってはならない。符号を用いるとき,定数の最左端文字に書かなければならない。
符号なしのとき,その定数は負ではない。
3) 小数点が複数あってはならない。小数点は,想定小数点として扱われ,定数の中で最右端文字以外の
どこに書いてもよい。
4) 固定小数点数字定数の値は,文字列で表現される代数的な数値とする。固定小数点数字定数の大きさ
は,定数の文字列中の数字のけた数に等しい。
整数定数(integer literal)は,小数点を含まない固定小数点数字定数とする。
8.3.1.2.2.2
浮動小数点数字定数
浮動小数点(floating-point)数字定数の形成規則及び値の規則は,次による。
1) 浮動小数点数字定数は,二つの固定小数点数字定数を,間に空白を挟むことなく,文字"E"でつないで
形成する。
2) "E"の左側の定数は,仮数部(significand)を表す。これは符号付きでも符号なしでもよいが,小数点
をもたなければならない。仮数部は1〜31けたでなければならない。仮数部が符号付きのとき,この
浮動小数点数字定数は符号付きとみなされる。仮数部が符号なしのとき,この浮動小数点数字定数は
正値とみなされる。
3) "E"の右側の定数は,指数部(exponent)を表す。これは符号付きでも符号なしでもよいが,3けたを
超えてはならず,小数点を含んでいてはならない。指数部の最大許容値及び最小許容値は,実装者定
義とする。
69
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4) 仮数部の数字が全て0のときは,指数の数字も0でなければならず,仮数部と指数部のいずれにも負
号があってはならない。
5) 浮動小数点数字定数の値は,仮数部の値と10の指数べき乗との代数的な積である。
8.3.1.2.3
ブール定数
ブール定数(boolean literal)の字類及び項類は,ブールとする。
8.3.1.2.3.1
一般形式
書き方1(ブール)
B"{ブール文字1}…"
B'{ブール文字1}…'
書き方2(16進ブール)
BX"{16進数字1}…"
BX'{16進数字1}…'
8.3.1.2.3.2
構文規則
全ての書き方
1) ブール定数の,区切り分離符を除いた長さは,ブール文字位置で1〜160個でなければならない。
書き方1
2) ブール文字1は,計算機文字集合のブール文字,つまり "0"又は"1"でなければならない。
書き方2
3) 16進数字1は,16進数字でなければならない。
8.3.1.2.3.3
一般規則
全ての書き方
1) ブール定数を区切る分離符は,このブール定数の値の一部ではない。
2) ブール定数の字類及び項類は,ブールとする。
書き方1
3) ブール定数の値は,繰り返し出現するブール文字1の並びの値とする。
書き方2
4) それぞれの16進数字1は,次の値と等価とする:"0"はB"0000","1"はB"0001","2"はB"0010",
"3"はB"0011","4"はB"0100","5"はB"0101","6"はB"0110","7"はB"0111","8"はB"1000",
"9"はB"1001","A"はB"1010","B"はB"1011","C"はB"1100","D"はB"1101","E"はB"1110",
"F"はB"1111"。
5) 定数の実行時の値は,16進数字をそれぞれ等価なブール値で置換して,先頭の分離符BX"をB"で置
換して形成した,等価なブール定数の値とする。
8.3.1.2.4
各国文字定数
各国文字定数(national literal)の字類及び項類は,各国文字とする。
8.3.1.2.4.1
一般形式
書き方1(各国文字)
N"{文字1}…"
N'{文字1}…'
書き方2(16進各国文字)
70
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
NX"{16進文字並び1}…"
NX'{16進文字並び1}…'
8.3.1.2.4.2
構文規則
全ての書き方
1) 各国文字定数の,区切り分離符を除いた長さは,各国文字位置で1〜160個でなければならない。
2) 文字1は,次のいずれかであれば,いかなる文字であってもよい。
− 実装者がソースコード表現用と指名した各国文字符号化文字集合中にある文字。
− 実装者がソースコード表現用と指名した英数字符号化文字集合中にある文字であって,
その英数字と,ある各国文字との間に対応が付くもの。
注記 実装者は,ソースコードを各国文字符号化文字集合だけで表現するか,英数字と各国文
字との混在した符号化文字集合で表現するかを選択できる。各国文字定数は,いずれの
表現で書いても,内容を各国文字表現で格納できる。例えば,N"ABC"という書き方の定
数は,1バイト文字で表現して,UTF-16として格納できる。これは,ソースコードを
UTF-8のような符号化文字集合で表現することを許すには不可欠であるが,UTF-8に限
ったことではない。
書き方1
3) 開始区切り記号に用いた引用記号に釣り合う引用記号が2文字連続して現れると,これは定数の内容
としての引用記号1文字を表す。この2個連続した引用記号は,開始引用記号と同じ符号化文字集合
で表現しなければならない。
書き方2
4) 16進文字並び1は,16進数字で構成されなければならない。
5) 各々の16進文字並び1は,実装者が各国文字の1文字に対応する16進文字の個数と規定した個数の
16進文字でなければならない。
8.3.1.2.4.3
一般規則
全ての書き方
1) 各国文字定数を区切る分離符は,この各国文字定数の値の一部ではない。
2) 各国文字定数の字類及び項類は,各国文字とする。
書き方1
3) 翻訳時の定数の値は,用途NATIONALに対して実装者が規定する翻訳時の計算機符号化文字集合に
含まれる文字1の出現の列とする。文字集合の符号化表現を切り換える制御機能があっても,それは
定数の値の一部ではない。
定数の実行時の値は,同じ定数の翻訳時の値を等価な実行時の値へと変換した結果としての各国文
字の文字列である。その変換は,8.1.1(計算機符号化文字集合)の規定による。
書き方2
4) 定数の実行時の値は,各国文字の文字列であって,各々の文字がもつビット構成は16進文字並び1
の一つで指定される。
符号化文字集合中に対応文字が存在しない16進文字並び1が指定された結果は,実装者定義とする。
文字の占めるビット数が4の倍数でない場合の,各々の16進文字並び1から文字への対応付けもまた,
実装者定義とする。
71
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
8.3.1.2.5
表意定数の値
表意定数の値は,コンパイラが生成するものであり,次に示す予約語を用いて参照する。
8.3.1.2.5.1
一般形式
書き方1(zero)
ALL
ZERO
ZEROS
ZEROES
書き方2(space)
ALL
SPACE
SPACES
書き方3(high-value)
ALL
HIGH-VALUE
HIGH-VALUES
書き方4(low-value)
ALL
LOW-VALUE
LOW-VALUES
書き方5(quote)
ALL
QUOTE
QUOTES
書き方6(all 定数)
ALL 定数1
書き方7(記号文字)
ALL 記号文字1
8.3.1.2.5.2
構文規則
全ての書き方
1) 表意定数を用いてもよいのは,書き方の中に“定数”がある場合,又は許可する規則がある場合とす
る。ただし,次に示す制限がある。
a) 定数が数字定数に制限されるとき,表意定数はALL指定のないZERO(ZEROS, ZEROES)だけと
する。
b) 構文規則が禁止している箇所で,表意定数を指定してはならない。
書き方6
2) 定数1は,英数字定数・ブール定数・各国文字定数でなければならない。そのうちいずれかは連結式
であってもよい。定数1が表意定数であってはならない。
3) 定数1の長さが2以上であるとき,これを数字項目又は数字編集項目に関連付けてはならない。
書き方7
4) 記号文字1は,特殊名段落のSYMBOLIC CHARACTERS句で指定しなければならない。
8.3.1.2.5.3
一般規則
全ての書き方
1) 各国文字を指定する必要がある文脈で表意定数を用いる場合,その表意定数が表現する値は各国文字
とする。そうでなく,表意定数の表す値が1文字であるとき,その表意定数が表現する値は英数字と
72
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
する。いずれの場合も表意定数ZERO(ZEROS, ZEROES),SPACE(SPACES)及びQUOTE(QUOTES)
の文字の値は,それぞれ実行時の計算機文字集合で表現した文字 "0",空白,及び引用符の値とする。
計算機の英数字符号化文字集合及び各国文字符号化文字集合において,ZERO,SPACE及びQUOTE
の一意な表現は,実装者定義とする。
2) 表意定数が何けたかの文字列を表している場合,その文字列の長さは,次の規則をこの順に適用して
文脈から決まる。
a) 表意定数を連結式に指定した場合,文字列の長さは1文字とする。
b) 表意定数をVALUE句に指定した場合,並びにデータ項目,定数又は中間結果に関連付けた場合,
文字列が1文字ずつ右側へと反復され,できあがった文字列の長さが,関連するデータ項目,定数
又は中間結果の中の文字位置の個数以上になる。次に,できあがった文字列を右側から切り捨てて,
残っている文字位置の個数を,関連するデータ項目,定数又は中間結果の中の文字位置の個数と1
のいずれか大きいほうと等しくする。この処理は,データ項目にJUSTIFIED句があっても,その適
用よりも優先して独立に行われる。
注記 表意定数をデータ項目又は定数に関連付けた場合とは,例えば,表意定数をそこへと転記
する場合,それと比較する場合,二項演算でそれと対にする場合などである。
c) 表意定数が“ALL 定数1”以外である場合,文字列の長さは1文字とする。
注記 例えば,表意定数をDISPLAY文,STOP文,STRING文又はUNSTRING文で用いる場合,
文字列の長さは1文字とする。
d) 表意定数が“ALL 定数1”である場合,文字列の長さは定数1の長さとする。
書き方1
3) ZERO用の書き方は,数値のゼロ,何けたかのブール文字 "0",実行時の計算機文字集合の何けたか
の文字 "0",のいずれかを表す。どれを表すのかは文脈によって異なる。
書き方2
4) SPACE用の書き方は,実行時の計算機文字集合中の何けたかの空白を表す。
書き方3
5) 翻訳時,及び特殊名段落中で参照する場合,HIGH-VALUE用の書き方は,翻訳時の文字照合順序で最
高の順序位置を占める文字又はその複数個の組を表す。
実行時,特殊名段落以外で参照する場合,HIGH-VALUE用の書き方は,実行時の文字照合順序で最
高の順序位置を占める文字又はその複数個の組を表す。
プログラム文字照合順序に対して現地特性カテゴリLC̲COLLATEが有効である場合,
HIGH-VALUEは,その有効な現地特性が規定する文字照合順序で最高の順序位置を占める文字又はそ
の複数個の組を表す。
表意定数の文脈で各国文字の指定が必要であるとき,各国文字のプログラム文字照合順序が用いら
れ,さもなければ英数字のプログラム文字照合順序が用いられる。
書き方4
6) 翻訳時,及び特殊名段落中で参照する場合,LOW-VALUE用の書き方は,翻訳時の文字照合順序で最
低の順序位置を占める文字又はその複数個の組を表す。
実行時,特殊名段落以外で参照する場合,LOW-VALUE用の書き方は,実行時の文字照合順序で最
低の順序位置を占める文字又はその複数個の組を表す。
プログラム文字照合順序に対して現地特性カテゴリLC̲COLLATEが有効である場合,LOW-VALUE
73
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
は,その有効な現地特性が規定する文字照合順序で最低の順序位置を占める文字又はその複数個の組
を表す。
表意定数の文脈で各国文字の指定が必要であるとき,各国文字のプログラム文字照合順序が用いら
れ,さもなければ英数字のプログラム文字照合順序が用いられる。
書き方5
7) QUOTE用の書き方は,実行時の計算機文字集合中の引用符の文字(")を表す。QUOTE又はQUOTES
を,定数の両端を囲む引用記号の代わりに用いてはならない。
書き方6
8) ALL定数用の書き方は,定数1を構成する文字列を何回か続けて連結して生成した文字列の全部又は
一部を表す。
書き方7
9) 記号文字用の書き方は,特殊名段落中のSYMBOLIC CHARACTERS句において記号文字1の値とし
て規定した文字の何けたかを表す。
8.3.1.3
PICTURE文字列
PICTURE文字列は,通貨編集用記号を構成する記号群,及びCOBOL文字レパートリ中の文字の特定の
組合せからなる。PICTURE文字列の説明及びその使用方法に関する規則は,13.16.38(PICTURE句)によ
る。
8.3.2
分離符
分離符(separator)は,次のいずれかとする,ただし,定数又はPICTURE文字列中に現れた場合は,こ
の限りでない。
1) COBOL文字の空白は,分離符とする。分離符の一つ又は分離符の一部として用いる場合,空白を二
つ以上続けて書いてもよい。分離符であるコンマ・セミコロン・終止符の直後に続いた空白は全て,
その分離符の一部とみなされ,分離符の空白とはみなされない。
2) COBOL文字のコンマ又はセミコロンの直後に空白が続いたものは,分離符とする。これらは,分離
符の空白を用いてよい箇所であればどこで用いてもよい。これらを用いると読みやすくできる。
3) COBOL文字の終止符は,直後に空白が続いた場合,分離符とする。分離符の終止符は完結文の終わ
りを示す場合,又は一般形式に示された場合にだけ書かなければならない。
4) COBOL文字の左括弧及び右括弧は,分離符とする。仮原文の内部を除けば,括弧を用いる場合は左
右を一対とし,用いてよい使途は,添字,関数の引数並び,メソッドの引数並び,部分参照子,算術
式,ブール式又は条件式を区切るためだけとする。
5) 定数の開始区切り記号及び終了区切り記号は,分離符とする。両端の区切り記号では引用記号として,
アポストロフィ(')と引用符(")のいずれを用いてもよい。
開始区切り記号は,次による。
− 引用記号
− 連続した2文字のB",B',N",N',X",X'
− 連続した3文字のBX",BX',NX",NX'
終了区切り記号は,次による。
− 開始区切り記号に引用符を用いたときは,引用符
− 開始区切り記号にアポストロフィを用いたときは,アポストロフィ
開始区切り記号の直前は,空白,左括弧,開始仮原文区切り記号のいずれかでなければならない。
74
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
終了区切り記号の直後は,分離符の空白・コンマ・セミコロン・終止符,右括弧,終了仮原文区切り
記号のいずれかでなければならない。開始区切り記号の直前にある分離符は,その開始区切り記号の
一部ではない。終了区切り記号の直後にある分離符は,その終了区切り記号の一部ではない。
6) 仮原文区切り記号は,分離符とする。開始仮原文区切り記号の直前は,空白でなければならない。終
了仮原文区切りの記号の直後は,分離符の空白・コンマ・セミコロン・終止符でなければならない。
仮原文区切り記号を用いる場合は左右を一対とし,用いてよい使途は仮原文を区切るためだけとする。
7) COBOL文字のコロンは,呼出し演算子の一部である場合を除き,分離符とする。一般形式に示され
た場合には,必ず書かなければならない。
8) あらゆる分離符の直前には,分離符の空白があってもなくてもよい。ただし,次の場合を除く。
a) 正書法の規則で規定する場合[箇条6(正書法)参照]。
b) 定数の終了区切り記号の直前。この場合,先行する空白は定数の一部であって,分離符ではないと
みなされる。
c) 開始仮原文区切り記号の直前。この場合,分離符の空白を必ず書かなければならない。
9) あらゆる分離符の直後には,分離符の空白があってもなくてもよい。ただし,定数の開始区切り記号
の直後は除く。定数の開始区切り記号の直後にある空白は,定数の一部であって,分離符ではない。
8.4
参照
参照(reference)とは,ソース単位の翻訳時及び実行単位の実行時に,参照される要素を識別するもの
である。8.3(字句の要素)で規定した予約語及び何種類かの名前は,参照の形式である。さらに,一意名
及び条件名という参照の形式がある。
8.4.1
一意参照
ソース要素中の全ての利用者定義名は,データ処理上の問題解決に用いられる資源を命名するために,
利用者が割り当てる[8.3.1.1.1(利用者定義語)参照]。資源を使用するには,その資源を一意に識別する
参照を,文に指定しなければならない。一意参照(uniqueness of reference)を確実にするため,利用者定義
名には,これ以降に示すとおり,修飾,添字付け又は部分参照を施してもよい。
ある種類の資源に対して同じ名前を別々のソース要素中で2回以上割り当てている場合,更に,これら
のソース要素のいずれかの中で同一の名前をもつ二つの資源を修飾だけでは区別して参照し得ない場合,
名前の有効範囲の限界を規定する幾つかの規約を適用する。これらの規約によって,識別される資源は,
参照を書いたソース要素中で記述した資源であることが明確になる[8.4.5(名前の有効範囲)参照]。
8.4.1.1
修飾
修飾(qualification)は,利用者名の一意な参照を許可するために用いられる。
明示的に参照される全ての利用者定義名は,次に示す状況のいずれかによって,参照が一意に決まらな
ければならない。
1) 同一のつづりをもつ名前がほかにはない。
2) REDEFINES句の文脈中において一意である。
3) VARYING句の文脈中において一意である。
4) その名前に関連するデータ記述項がTYPEDEF句に従属し,そのTYPEDEF句が定義する型名を参照
しているTYPE句が一つもない。
注記 13.16.56.3(TYPEDEF句)の一般規則1) 参照。
5) その名前はデータ記述項の句において参照されたデータ名であり,その記述項の左辺はそのデータ名
と同じ集団項目に従属している。この場合に,そのデータ名と記述項の左辺との両方が従属している
75
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
集団項目の名前が,この参照に対する暗黙の修飾語として,その集団内で一意にするため必要な明示
的な修飾語とともに用いられる。
6) 上位にある幾つかの名前を付け加えると参照を一意にできるような階層系列中にある名前,又はその
ような階層系列中にあるデータ定義記述項に関連付けられた名前である。
これらの上位の名前を修飾語(qualifier)と呼び,一意にするこの手順を修飾(qualification)と呼ぶ。
一つのソース要素中に同一の利用者定義名が複数現れてもよいが,このとき規則2)〜5) の規定を除け
ば,明示的に参照される利用者定義名のそれぞれを修飾によって一意にしなければならない。一意に
なるのであれば,指定可能な修飾語を全部指定する必要はない。LINAGE-COUNTER又は報告書カウ
ンタ一意名が一つのソース単位中に二つ以上生成されるときは,一意参照のために修飾しなければな
らない。
7) ソース要素が他のソース要素を内包している又は他のソース要素に内包されている[8.4.5(名前の有
効範囲)参照]。
これらの規定とは別に,ある外部レコードの名前と,同じ実行単位中で記述された他の外部データ項目
の名前とに,同じデータ名を用いてはならない。大域属性をもつデータ項目の名前と,そのデータ項目を
記述しているソース要素中で記述された他のデータ項目の名前とに,同じデータ名を用いてはならない。
8.4.1.1.1
一般形式
書き方1(修飾付きデータ名)
データ名1 [データ修飾語]… [fd-cd-rd修飾語]
書き方2(修飾付き条件名)
条件名1 [データ修飾語]… [fd-cd-rd修飾語]
書き方3(修飾付き指標名)
指標名1 [データ修飾語]… [fd-cd-rd修飾語]
書き方4(修飾付き手続き名)
段落名1
IN
OF 節名1
書き方5(修飾付き画面名)
画面名1
IN
OF 画面名2…
書き方6(修飾付きレコードキー名)
レコードキー名1
IN
OF ファイル名2
書き方7(修飾付き行数カウンタ)
LINAGE-COUNTER
IN
OF ファイル名3
書き方8(修飾付き報告書カウンタ)
PAGE-COUNTER
LINE-COUNTER
IN
OF 報告書名2
ここで,データ修飾語は,次による。
IN
OF データ名2
76
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
fd-cd-rd修飾語は,次による。
IN
OF
ファイル名1
通信記述名1
報告書名1
8.4.1.1.2
構文規則
1) 明示的に参照される一意ではない利用者定義名の各々に対しては,一連の修飾語によって一意にして,
参照の曖昧さを排除しなければならない。
2) 修飾する必要のない名前を修飾してもよい。一意にする修飾語の組合せが幾つもあるとき,どれを用
いてもよい。
3) 語INと語OFとは,同義とする。
4) 各々のデータ名2は,修飾対象の項目が従属しているレベル番号に関連する名前でなければならない。
修飾語は,順に階層系列中のより上位のレベルになるように指定する。条件名の階層は,関連する条
件変数の属する階層とする。
5) 明示的に参照されているとき,段落名が一つの節の中で重複してはならない。段落名を同じ節の中で
参照する場合には修飾する必要はない。
6) LINAGE句を書いたファイル記述項が一つのソース要素中に二つ以上指定されているとき,
LINAGE-COUNTERは修飾しなければならない。
7) 報告書記述項が一つのソース要素中に二つ以上指定されているとき,手続き部中でLINE-COUNTER
を参照するたびに修飾しなければならない。修飾されていないLINE-COUNTERを報告書節中で参照
すると,その報告書名で暗黙に修飾される。別の報告書のLINE-COUNTERを参照する場合は,
LINE-COUNTERをその別の報告書名で明示的に修飾しなければならない。
8) 報告書記述項が一つのソース要素中に二つ以上指定されているとき,手続き部中でPAGE-COUNTER
を参照するたびに修飾しなければならない。報告書節中で,修飾されていないPAGE-COUNTERを参
照すると,その報告書名で暗黙に修飾される。別の報告書のPAGE-COUNTERを参照する場合は,
PAGE-COUNTERをその別の報告書名で明示的に修飾しなければならない。
8.4.1.2
添字
添字(subscript)は,同種の要素を集めた表の中の個々の要素を参照するときに使用する。
8.4.1.2.1
一般形式
書き方1(添字修飾付きデータ名)
修飾付きデータ名1 [ (添字 … ) ]
書き方2(添字修飾付き条件名)
修飾付き条件名1 [ (添字 … ) ]
ここで,添字は,次による。
ALL
算術式1
指標名1
+
‒ 整数1
注記 修飾付きデータ名1及び修飾付き条件名1は文脈を示しており,添字の一部ではない。
8.4.1.2.2
構文規則
1) 修飾付きデータ名1及び修飾付き条件名1は,8.4.1.1(修飾)による。
77
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
2) 添字を指定したとき,修飾付きデータ名1又は修飾付き条件名1に関連する条件変数を記述している
データ記述項は,OCCURS句のある記述項であるか,そのような記述項に従属しているかのいずれか
でなければならない。
3) 構文規則5) に示した場合を除いて,ある表要素を参照する場合,添字の個数は,参照の対象の表要
素の記述中にあるOCCURS句の個数に等しくなければならない。つまり,最高で7個の添字を指定で
きる。二つ以上の添字が必要なとき,添字は,その表のより上位の次元から順に指定する。
4) 指標名1は,参照の対象の表の階層系列中における,その指標名を書いたINDEXED BY指定のある
データ記述項に対応していなければならない。
5) 次に示す場合を除いて,各々の表要素を参照する場合は,添字付けしなければならない。
a) SEARCH文の主体に書く場合
b) REDEFINES句に書く場合
c) OCCURS句のKEY IS指定に書く場合
d) 表を参照するSORT文に書く場合
e) OCCURS句のある画面記述項のFROM句・TO句・USING句に書く場合
表を参照するSORT文中では,最右端の添字を語ALLとする添字付けを指定してもよい。
6) 添字のALLを用いてよいのは,添字付き一意名を組込み関数の引数として用いる場合,又は表形式の
SORT文中で表を識別するために用いる場合だけとする。
7) 修飾付き条件名1の指定がある場合,添字ALLは使用できない。
8) 報告書節中では,合計カウンタも,LINE-COUNTER及びPAGE-COUNTERの一意名も,添字として
用いてはならない。
8.4.1.2.3
一般規則
1) 添字は,次のとおり決まる。
a) ALLを指定した場合,添字ALLを指定してもよい関数の規則で規定するように,その添字は,そ
の表に対して添字が取り得る値の全てとする。
b) 算術式1を指定した場合,添字は算術式1の評価の結果である。算術式1の評価の結果が整数にな
らない場合,EC-BOUND-SUBSCRIPT例外状態になる。
c) 指標名1を指定した場合,添字は,指標名1の指標の値が表す出現番号であり,整数1があれば,
それによる修正を加えた値である。指標名1の指標の値から出現番号への対応付けは,実装者定義
とする。整数1がある場合,添字は,指標を整数1の値だけ増加(演算子 + を用いるとき)又は
減少(演算子 ‒ を用いるとき)させて導き出した出現番号である。
2) 添字の値は,正の整数でなければならない。添字によって表される最小の出現番号は1であって,こ
れは表のどの次元でも最初の要素を指す。表のその次元中での引き続く要素は,それぞれ出現番号2,
3,… で表される。その表のどの次元も,最大の出現番号は,関連するOCCURS句で指定された,項
目の反復回数の最大値とする。添字の値が正の整数でないか,1より小さいか,又は最大出現番号よ
り大きい場合は,EC-BOUND-SUBSCRIPT例外状態になる。
8.4.2
いろいろな一意名
8.4.2.1
一意名
一意名(identifier)は,データ項目を一意に参照するため使用する,文字列及び分離符の並びである。
8.4.2.1.1
一般形式
書き方1(関数一意名)
78
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
関数一意名1
書き方2(添字修飾付きデータ名)
添字修飾付きデータ名1
書き方3(部分参照)
一意名1 部分参照子1
書き方4(文内メソッド呼出し)
文内呼出し1
書き方5(オブジェクトビュー)
一意名2 オブジェクトビュー1
書き方6(既定義オブジェクト)
EXCEPTION-OBJECT
NULL
SELF
[クラス名1 OF ] SUPER
書き方7(オブジェクトプロパティ)
プロパティ名1 OF 一意名3
書き方8(既定義アドレス)
NULL
書き方9(アドレス一意名)
データアドレス一意名1
プログラムアドレス一意名1
書き方10(修飾付き行数カウンタ)
LINAGE-COUNTER
IN
OF ファイル名1
書き方11(修飾付き報告書カウンタ)
PAGE-COUNTER
LINE-COUNTER
IN
OF 報告書名1
8.4.2.1.2
構文規則
全ての書き方
1) 一意名は,再帰的に定義される。一意名の書き方の中に別な一意名を書いてもよい場合,その“別な
一意名”は,いずれの種類の書き方であってもよい。各々の書き方の規則に従う限り,包含する側と
される側とが同じ種類の書き方であってもよい。
書き方1
2) 関数一意名1は,8.4.2.2(関数一意名)による。
書き方2
3) 添字修飾付きデータ名1は,8.4.1.1(修飾)による。
書き方3
4) 部分参照子1は,8.4.2.3(部分参照)による。
書き方4
5) 文内呼出し1は,8.4.2.4(文内メソッド呼出し)による。
79
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
書き方5
6) オブジェクトビュー1は,8.4.2.5(オブジェクトビュー)による。
書き方6
7) 既定義オブジェクト参照は,8.4.2.6(EXCEPTION-OBJECT),8.4.2.7(NULL),8.4.2.8(SELF及びSUPER)
による。
書き方7
8) オブジェクトプロパティは,8.4.2.9(オブジェクトプロパティ)による。
書き方8
9) 既定義アドレスNULLは,8.4.2.10(既定義アドレス)による。
書き方9
10) アドレス一意名は,8.4.2.11(データアドレス一意名)及び8.4.2.12(プログラムアドレス一意名)に
よる。
書き方10
11) 一意名LINAGE-COUNTERは,8.4.2.13(行数カウンタ)による。
書き方11
12) 一意名PAGE-COUNTER及びLINE-COUNTERは,8.4.2.14(報告書カウンタ)による。
8.4.2.1.3
一般規則
1) 一意名の様々な構成要素は,次に示す順序で適用される。
a) 添字修飾付きデータ名,既定義オブジェクト参照,引数なし関数一意名,修飾付き報告書カウンタ,
又は修飾付き行数カウンタ
b) アドレス一意名を右側にある一意名に適用する。
c) オブジェクトビューを左側にある一意名に適用する。
d) オブジェクトプロパティ用のOFは,左側のプロパティ名を右側にある一意名に適用する。
e) 文内メソッド呼出し演算子は,右側にある定数のメソッド名を,括弧で囲んだ引数の指定(もしあ
れば)と一緒に,左にある一意名に適用する。
f)
パラメタ付き関数一意名は,左側にある関数名を,右側にある括弧で囲んだ引数の並びに適用する。
g) 部分参照子を左側にある一意名に適用する。
8.4.2.2
関数一意名
関数一意名(function-identifier)は,関数の評価結果であるデータ項目を一意に参照する。
8.4.2.2.1
一般形式
[FUNCTION]
関数原型名1
組込み関数名1
(
引数1
OMITTED … )
8.4.2.2.2
構文規則
1) 関数一意名を受取り側作用対象に指定してはならない。
2) リポジトリ段落に組込み関数名1又はALLの指定があるとき,又は関数原型名1の指定があるとき,
語FUNCTIONは省略してもよい。さもなければ,語FUNCTIONは必須とする。
3) 関数原型名1は,この関数一意名を含んでいる関数定義の利用者関数名,又はリポジトリ段落に指定
された関数原型でなければならない。
4) 関数の定義が引数を書くことを許すような関数原型名1又は組込み関数名1の直後に左括弧があると
き,その左括弧は常にその関数の引数の左括弧として扱われる。
80
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
注記 RANDOM関数のように,引数なしで参照しても引数付きで参照してもよい関数に対して,
正しい解釈を保証するにはコーディングに注意が必要となる。例えば次では,AはRANDOM
関数の引数であるとみなされる。
FUNCTION MAX (FUNCTION RANDOM (A) B)
そうでなくAをMAX関数の第2引数にするには,これとは異なり,次のいずれかのコー
ディングが必要になる。
FUNCTION MAX ((FUNCTION RANDOM) (A) B)
又は
FUNCTION MAX (FUNCTION RANDOM() A B)
又は
FUNCTION MAX (FUNCTION RANDOM A B)
5) 組込み関数名1の指定があるとき,語OMITTEDを書いてはならない。
6) 引数1は,一意名,定数,ブール式又は算術式でなければならない。引数1の個数,字類,項類及び
型に適用される規則は,組込み関数については箇条15(組込み関数)によるが,利用者関数について
は14.7(パラメタ及び返却項目の適合)による。
7) 語OMITTEDを指定するとき,対応する仮パラメタにOPTIONAL指定がなければならない。
8) 関数原型名1が指定され,かつ,引数1に対応する仮パラメタがBY VALUE指定付きであるとき,引
数1は字類が数字,オブジェクト又はポインタでなければならない。
9) 整数作用対象が必要な箇所で数字関数を引用してはならない。たとえ,そのときの関数引用が整数値
をとる場合であっても引用してはならない。
10) 整数型ABS関数以外の整数関数は,符号なし整数が必要な箇所に指定してはならない。
11) 関数原型名1があるとき,14.7(パラメタ及び返却項目の適合)に規定した適合規則を適用する。
12) 関数原型名1の指定があり,引数1に対応する仮パラメタが手続き部見出しのUSING指定中におい
てBY REFERENCE指定付きであり,引数1がビットデータ項目である場合,引数1は次のとおりで
なければならない。
a) 引数1の添字付け及び部分参照は,固定小数点数字定数又は算術式だけからなる。その算術式は,
全ての作用対象が固定小数点数字定数であって,べき乗演算子の指定はない。
b) バイト境界にけたよせされている。
8.4.2.2.3
一般規則
1) 関数一意名は,一時的データ項目を参照するものであり,実行時にその関数を参照すると値が決まる。
組込み関数名1を指定したとき,一時的データ項目は基本データ項目であり,その記述及び字類は
箇条15(組込み関数)による。
関数原型名1を指定したとき,一時的データ項目の記述,字類,及び項類は,関数原型名1で識別
される関数原型の手続き部見出しのRETURNING指定に書いた項目の連絡節中での記述による。
2) 関数への参照が行われる時点で引数は個々に,引数並びに指定した順に,左から右へと評価される。
評価される引数は,それ自体が関数一意名であってもよいし,関数一意名を含む式であってもよい。
引数の評価中に参照する関数は,その引数が指定された関数と同じであってもよい。これ以上の規則
は,組込み関数に対しては箇条15(組込み関数)によるが,利用者定義関数に対しては14.1.3(手続
き部の構造の一般規則)及び14.7(パラメタ及び返却項目の適合)による。
3) 関数原型名1があるとき,活性化対象の関数は12.2.7(リポジトリ段落)の規則に従って関数原型名1
81
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
によって識別され,関数原型名1は活性化される関数の特性を決定するのに用いられる。
4) 関数原型名1があるとき,各々の引数の受渡し方法は,次のとおり決まる。
a) BY REFERENCEとして受け渡されるのは,対応する仮パラメタにBY REFERENCEが明示的又は暗
黙に指定され,かつ,引数1が受取り側作用対象として指定できる一意名で,オブジェクトプロパ
ティ又はオブジェクトデータ項目以外の一意名のとき。
b) BY CONTENTとして受け渡されるのは,対応する仮パラメタにBY REFERENCEが明示的又は暗黙
に指定され,かつ,引数1が定数,算術式,ブール式,オブジェクトプロパティ,オブジェクトデ
ータ項目,又は受取り側対象として指定できない一意名であるとき。
c) BY VALUEとして受け渡されるのは,対応する仮パラメタにBY VALUE指定があるとき。
5) 関数の評価は,次のとおりに進む。
a) 各々の引数1は,関数一意名の評価開始時点で評価する。例外が成立すると関数は活性化されず,
細則f) の規定に従って実行が進む。例外状態が成立しないと,活性化される関数に制御が移った時
点で,引数1の値が関数で使用可能になる。
b) 実行時システムは,活性化対象の関数を位置付けようとする。関数原型名1があるとき,規則は8.4.5
(名前の有効範囲)及び8.4.5.5(関数原型名の有効範囲)による。12.2.7(リポジトリ段落)の規則
も適用する。関数が見つからないとき,EC-PROGRAM-NOT-FOUND例外状態になり,その関数は
活性化されず,細則f) の規定に従って実行が続く。
c) 関数は位置付けされたが,関数を実行するのに必要な資源が使用可能ではない場合,
EC-PROGRAM-RESOURCES例外状態になり,関数は活性化されず,細則f) の規定に従って実行が
続く。関数の実行可否を決めるために調べる実行時資源は,実装者定義とする。
d) 関数一意名で示される関数が実行可能になり,活性化される関数へと制御が移る。制御の移行は,
その関数に対して指定された入口規約に整合する方法で行われる。関数原型名1が指定され,活性
化対象の関数がCOBOL関数である場合,その実行は14.1.3(手続き部の構造の一般規則)で記述
されている。組込み関数名1が指定された場合,その実行は箇条15(組込み関数)による。関数原
型名1が指定されて,活性化対象の関数がCOBOL関数ではない場合,その実行は実装者定義とす
る。
e) 活性化された関数から制御が戻った後に,活性化された関数から例外状態が伝ぱ(播)された場合,
細則f) の規定に従って実行が続く。
f)
例外状態が成立した場合,その例外状態に関連する宣言手続きがあればそれが実行される。その後,
例外状態と宣言手続きに対する規定に従って実行が進む。
6) 語OMITTEDを指定するか,又は引数並びの途中から後ろ全部を省略した場合,そのパラメタに対し
ての引数省略条件が,活性化された関数の中で真と評価される[8.8.4.1.7(引数省略条件)参照]。
7) 引数省略条件が真になるようなパラメタを,活性化された関数の中で参照した場合,引数としての参
照又は引数省略条件中での参照を除いて,EC-PROGRAM-ARG-OMITTED例外状態になり,その文の
実行の結果は規定されない。
8.4.2.3
部分参照
部分参照(reference modification)は,一意名と最左端位置と長さとを指定することで,一意なデータ項
目を定義する。
8.4.2.3.1
一般形式
一意名1 ( 最左端位置:[長さ] )
82
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
8.4.2.3.2
構文規則
1) 一意名1によって参照されるデータ項目は,次のいずれかでなければならない。
− ブールデータ項目
− 各国文字データ項目
− 項類が英数字の基本データ項目又は英数字集団項目
− 英字データ項目
− 強い型付けの集団項目に従属してはいない数字編集データ項目
− 強い型付けの集団項目に従属してはいない英数字編集データ項目
− 強い型付けの集団項目に従属してはいない各国文字編集データ項目
− 強い型付けの集団項目に従属していなくて,用途がDISPLAY又はNATIONALの数字データ項目
− 強い型付けではない集団項目
部分参照の規定上,ビット集団項目及び各国文字集団項目は基本データ項目と扱われる。
2) 一意名1が関数一意名である場合,それは英数字,ブール又は各国文字の関数でなければならない。
3) 一意名1が部分参照形式の一意名であってはならない。
4) 最左端位置及び長さは,算術式でなければならない。
5) 特に指定がない限り,部分参照は,字類が英数字,ブール又は各国文字のデータ項目を参照する一意
名を書いてよい箇所ならどこに書いてもよい。
8.4.2.3.3
一般規則
1) 一意名1がブールデータ項目,英数字データ項目又は各国文字データ項目を参照するとき,最左端位
置は,それぞれブール位置,英数字文字位置又は各国文字位置を表す。
2) 一意名1のデータ項目が明示的又は暗黙に用途がDISPLAYと記述されて,その項類が英数字以外で
ある場合,そのデータ項目には,部分参照の処理上,字類及び項類が英数字であって同じ大きさをも
つデータ項目として再定義したかのように作用する。
3) 一意名1のデータ項目が明示的又は暗黙に用途がNATIONALと記述されて,その項類が各国文字以
外である場合,そのデータ項目には,部分参照の処理上,字類及び項類が各国文字であって,同じ大
きさをもつデータ項目として再定義したかのように作用する。
4) 一意名1のデータ項目の各々の位置には,最左端位置から最右端に向かって1ずつ増加する順序番号
を割り当てる。最左端位置に割り当てる順序番号は1とする。一意名1に対するデータ記述項中にSIGN
IS SEPARATE句があるとき,データ項目中の順序番号はその符号の位置にも割り当てる。
5) 部分参照は,一意名1のデータ項目の部分集合である,一意なデータ項目を新たに定義する。ここで
“一意なデータ項目”の定義は,次による。
a) 一意名1の用途がBITであるとき,評価にビット位置を用いる。さもなければ,評価に文字位置を
用いる。
b) 最左端位置の評価は,“一意なデータ項目”の最左端ビット位置又は最左端文字位置を,一意名1
のデータ項目中の最左端ビット又は最左端文字からの相対順序位置で指定する。最左端位置の評価
の結果は,ゼロでない正の整数でなければならず,一意名1のデータ項目中の位置の個数を超えて
はならない。
c) 長さの評価は,データ項目のうちで操作に用いられる部分のビット位置又は文字位置の個数を示す。
長さの評価の結果はゼロでない正の整数にならなければならない。最左端位置に長さを加えて1を
引いた値が,一意名1のデータ項目中の位置の個数を超えてはならない。長さの指定がなければ,
83
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
一意なデータ項目は,最左端位置で識別される位置から一意名1のデータ項目の最右端位置まで広
がる。
最左端位置又は長さの評価の結果が,整数でない値になるか,又は一意名1の領域外の位置を指す
値になる場合,EC-BOUND-REF-MOD例外状態になる。
注記 実行時符号化文字集合がUCSのUTF-16形式である場合,COBOLシステムは,サロゲート
ペアを2分割する部分参照を検出しない。
6) 部分参照によって定義される一意なデータ項目は,JUSTIFIED句なしの基本データ項目とみなされる。
その“一意なデータ項目”の字類,項類及び用途は,一意名1に対して定義されたものと同じになる。
ただし,
a) 英数字編集項類は,字類及び項類を英数字とみなす。
b) 各国文字編集項類は,字類及び項類を各国文字とみなす。
c) 数字項類及び数字編集項類は,用途がNATIONALのとき,字類及び項類を各国文字とみなし,さ
もなければ,字類及び項類を英数字とみなす。
d) 英数字集団項目は,用途がDISPLAYであるとみなす。
8.4.2.4
文内メソッド呼出し
文内メソッド呼出し(inline method invocation)は,あるメソッド呼出しから返却される一時的データ項
目を参照する。
8.4.2.4.1
一般形式
クラス名1
一意名1
:: 定数1 (
算術式1
ブール式1
一意名2
定数2
OMITTED
… )
8.4.2.4.2
構文規則
1) 文内メソッド呼出しを,受取り側作用対象として指定してはならない。
2) 一意名1は,字類がオブジェクトでなければならない。ただし,既定義オブジェクト参照NULL及び
非限定オブジェクト参照を指定してはならない。
3) 一般規則1) に示すINVOKE文のいずれかが,14.8.22(INVOKE文)の構文規則に従って妥当でなけ
ればならない。
4) 呼び出されるメソッドの手続き部見出しのRETURNING指定中に書いたデータ項目は,記述にANY
LENGTH句があってはならない。
8.4.2.4.3
一般規則
1) 文内メソッド呼出しは一時的データ項目を参照するものであり,その字類,項類及び内容は次のうち
該当するINVOKE文を実行して返される“一時的な一意名”と同じである。
INVOKE 一意名1 定数1 USING 引数 RETURNING 一時的な一意名
INVOKE 一意名1 定数1 RETURNING 一時的な一意名
INVOKE クラス名1 定数1 USING 引数 RETURNING 一時的な一意名
INVOKE クラス名1 定数1 RETURNING 一時的な一意名
ここで,
a) “引数”は,この文内呼出しの括弧(もしあれば)内に指定した作用対象とする。
84
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
b) “一時的な一意名”の記述,字類及び項類は,一意名1又はクラス名1のいずれかと,定数1とで
決まるメソッドの,対応するRETURNING項目と同じである。
c) “一時的な一意名”は,ほかならぬこの方法での文内呼出しのためにだけ存在する。
2) この書き方を含んでいる文の実行中に例外が起きた場合,再開点は,次に実行可能な文とする。
8.4.2.5
オブジェクトビュー
オブジェクトビュー(object view)は,オブジェクト参照を指定どおりの記述をもつかのように扱うよ
うにする。実行時には,オブジェクトに関してこの記述に対する適合検査を行う。
8.4.2.5.1
一般形式
一意名1 AS
[FACTORY OF] クラス名1 [ONLY]
インタフェース名1
UNIVERSAL
8.4.2.5.2
構文規則
1) 一意名1は,字類がオブジェクトでなければならない。ただし,既定義オブジェクト参照SUPER及
びNULLを指定してはならない。
2) オブジェクトビューは,受取り側作用対象に指定してはならない。
8.4.2.5.3
一般規則
1) 一意名1の参照は,翻訳時にAS指定のとおりに記述されたかのように扱われる。
2) クラス名1を指定してFACTORY OFもONLYも指定しないとき,一意名1は
USAGE IS OBJECT REFERENCE クラス名1
と記述された扱いとなる。一意名1の指すオブジェクトがクラス名1に属するオブジェクト又はその
下位クラスに属するオブジェクトではない場合,EC-OO-CONFORMANCE例外状態になる。
3) FACTORY指定がありONLY指定がないとき,一意名1は
USAGE OBJECT REFERENCE FACTORY OFクラス名1
と記述された扱いとなる。一意名1の指すオブジェクトがクラス名1のファクトリオブジェクト又は
その下位クラスのファクトリオブジェクトでない場合,EC-OO-CONFORMANCE例外状態になる。
4) ONLY指定がありFACTORY指定がないとき,一意名1は次のとおり記述した扱いとする。
USAGE OBJECT REFERENCE クラス名1 ONLY
一意名1の指すオブジェクトが,クラス名1のインスタンスオブジェクトでない場合,
EC-OO-CONFORMANCE例外状態になる。
5) FACTORY指定と ONLY指定の両方があるとき,一意名1は次のとおり記述した扱いとする。
USAGE OBJECT REFERENCE FACTORY OFクラス名1 ONLY
一意名1の指すオブジェクトが,クラス名1のファクトリオブジェクトでない場合,
EC-OO-CONFORMANCE例外状態になる。
6) インタフェース名1を指定するとき,一意名1は次のとおり記述した扱いとする。
USAGE IS OBJECT REFERENCEインタフェース名1
一意名1の指すオブジェクトが,インタフェース名1を実装していない場合,EC-OO-CONFORMANCE
例外状態になる。
7) UNIVERSALを指定するとき,一意名1は次のとおり選択可能指定なしで記述した扱いとする。
USAGE IS OBJECT REFERENCE
EC-OO-CONFORMANCE例外状態になることはない。
85
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
8.4.2.6
EXCEPTION-OBJECT
EXCEPTION-OBJECTは,既定義オブジェクト参照であって,宣言手続き内において現時点の例外オブ
ジェクトを指すのに用いられる。
8.4.2.6.1
一般形式
EXCEPTION-OBJECT
8.4.2.6.2
構文規則
1) EXCEPTION-OBJECTは,受取り側作用対象として指定されてはならない。
2) EXCEPTION-OBJECTの暗黙の記述は,字類がオブジェクト,項類がオブジェクト参照であり,外部
データ項目で,非限定オブジェクト参照とする。
8.4.2.6.3
一般規則
1) EXCEPTION-OBJECTは,現在の例外オブジェクトを指す。例外オブジェクトが現在の例外と関連し
ていないとき,EXCEPTION-OBJECTはナルに設定される。
2) ある実行単位中に存在するEXCEPTION-OBJECTの実体は,一つとする。
8.4.2.7
NULL
NULLは,既定義オブジェクト参照であって,その内容はオブジェクト参照値のナルとする。
8.4.2.7.1
一般形式
NULL
8.4.2.7.2
構文規則
1) NULLは,受取り側作用対象として指定してはならない。
2) NULLの暗黙の記述は,字類がオブジェクト,項類がオブジェクト参照である。非限定オブジェクト
参照ではない。
8.4.2.7.3
一般規則
1) 既定義オブジェクト参照NULLの内容は,オブジェクト参照値のナルとする。ナルは,実装者定義の
特異な値であり,いかなるオブジェクトを指すものでもないことが保証されている。
8.4.2.8
SELF及びSUPER
SELF及びSUPERは,既定義オブジェクト参照であり,あるオブジェクトを対象として現在のメソッド
が実行中である場合に,その当該オブジェクトを指す。
8.4.2.8.1
一般形式
SELF
[クラス名1 OF ] SUPER
8.4.2.8.2
構文規則
1) この一意名の書き方は,メソッド定義の中にだけ指定してもよい。
2) この一意名の書き方は,受取り側作用対象として指定してはならない。
3) SUPERは,オブジェクトプロパティ一意名の中のオブジェクトとして,又はINVOKE文若しくは文
内メソッド呼出しでメソッドを呼び出すためのオブジェクトとしてだけ,指定してもよい。
4) クラス名1は,この一意名の書き方を含んでいるクラス定義のINHERITS句に指定したクラスの名前
でなければならない。
5) この一意名の書き方を含むクラス定義のINHERITS句にクラス名を二つ以上指定しているとき,クラ
ス名1を必ず指定しなければならない。
6) この一意名の書き方を含むクラス定義のINHERITS句にクラス名を一つだけ指定しているとき,クラ
86
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ス名1を指定してもしなくてもよい。
7) SELF及びSUPERはいずれも,暗黙の記述は字類がオブジェクトで項類がオブジェクト参照であって,
これらは非限定オブジェクト参照ではない。
8.4.2.8.3
一般規則
1) SELF及びSUPERはいずれも,このSELF又はSUPERが内部に指定されたメソッドを呼び出すため
に用いられたオブジェクトを指す。
2) SELFをメソッド呼出しのために指定した場合,メソッドの解決は,実行時にSELFで参照されるオブ
ジェクトの属するクラスに対して定義されたメソッド群に基づいて行われる。
注記 メソッドの解決は,メソッド呼出しを含んでいるクラスに対して定義されているメソッド群
に制限されるわけではない。実行時にSELFで参照されるオブジェクトは,メソッド呼出し
を含んでいるクラスの,下位クラスに属しているかもしれない。ゆえに既定義オブジェクト
参照SELFを介してのメソッド呼出しには,その他のオブジェクト一意名と同様に,実行時
のオブジェクトが属しているクラスに基づくメソッド束縛の機構が用いられる。
3) SUPERをメソッド呼出しのために指定した場合,メソッドの解決では,メソッド呼出しを含んでいる
クラス及びそのあらゆる下位クラスにおいて定義されているメソッド群の全てを無視する。
注記 呼び出されるメソッドは,上位クラス中で定義されたものとなる。
4) クラス名1の指定がある場合,メソッドの探索は,クラス名1に対して定義されたメソッドだけを包
まなければならない。
8.4.2.9
オブジェクトプロパティ
オブジェクトプロパティ(object property)は,情報をオブジェクトに出し入れする特殊構文を提供する。
オブジェクトプロパティを参照するための機構は,GETプロパティメソッド及びSETプロパティメソッド
である。GETプロパティメソッドは,メソッド名段落のGET PROPERTY指定によって明白に定義される
メソッドか又はPROPERTY句付きで記述したデータ記述項に対して暗黙に生成されるメソッドとする。
SETプロパティメソッドは,メソッド名段落のSET PROPERTY指定によって明白に定義されるメソッド
か又はPROPERTY句付きで記述したデータ記述項に対して暗黙に生成されるメソッドとする。
8.4.2.9.1
一般形式
プロパティ名1 OF
クラス名1
一意名1
8.4.2.9.2
構文規則
1) プロパティ名1は,リポジトリ段落中に指定されているオブジェクトプロパティでなければならない。
2) 一意名1は,オブジェクト参照でなければならない。非限定オブジェクト参照も既定義オブジェクト
参照NULLも指定してはならない。
3) オブジェクトプロパティを送出し側項目に使用するとき,プロパティ名1に対するGETプロパティメ
ソッドが,一意名1の指すオブジェクト中に,又はクラス名1のクラスのファクトリオブジェクト中
に,存在しなければならない。
4) オブジェクトプロパティを受取り側項目に使用するとき,プロパティ名1に対するSETプロパティメ
ソッドが,一意名1の指すオブジェクト中に,又はクラス名1のクラスのファクトリオブジェクト中
に,存在しなければならない。
5) 送出し側項目に使用するオブジェクトプロパティの記述は,そのGETプロパティメソッドの返却項目
の記述と同じとする。このオブジェクトプロパティは,その記述をもつデータ項目を送出し側項目と
87
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
して指定して正しい箇所であれば,どこに指定してもよい。
6) 受取り側項目に使用するオブジェクトプロパティの記述は,そのSETプロパティメソッドのUSING
パラメタの記述と同じとする。このオブジェクトプロパティは,その記述をもつデータ項目を受取り
側項目として指定して正しい箇所であれば,どこに指定してもよい。
7) GETプロパティメソッドのRETURNING指定に書いた項目のデータ記述は,SETプロパティメソッド
のUSINGパラメタに指定した項目のデータ記述と同じでなければならない。
8.4.2.9.3
一般規則
1) オブジェクトプロパティが送出し側項目としてだけ用いられる場合,一時的仮想データ項目temp-1が
代わりに用いられる。このプロパティの値は,関連するGETプロパティメソッドをINVOKE文の規
則に従って呼び出してその返却値をtemp-1に入れたかのようにして決定される。temp-1のデータ記述
は,GETプロパティメソッドのRETURNING指定に書いた項目のデータ記述と同じとする。
2) オブジェクトプロパティが受取り側項目としてだけ用いられる場合,一時的仮想データ項目temp-2が
代わりに用いられる。このプロパティの値は,関連するSETプロパティメソッドをINVOKE文の規
則に従って呼び出すときに引数としてtemp-2を渡したかのようにして設定される。temp-2のデータ記
述は,SETプロパティメソッドのUSINGパラメタに指定した項目のデータ記述と同じとする。
3) オブジェクトプロパティが送出し側項目及び受取り側項目の両方として用いられる場合,一時的仮想
データ項目temp-1及びtemp-2が代わりに用いられる。temp-1及びtemp-2は同じデータ項目であって
temp-2がtemp-1を再定義する。送出し動作では,一般規則1) の送出し側項目に対する動作と同じ方
法で,プロパティの値が決まる。受取り動作では,一般規則2) の受取り側項目に対する動作と同じ
方法で,プロパティの値が設定される。temp-1及びtemp-2のデータ記述は,GETプロパティメソッ
ドのRETURNING指定に書いた項目のデータ記述項と同じとする。
8.4.2.10 既定義アドレス
NULLは,字類がポインタの既定義アドレスである。
8.4.2.10.1 一般形式
NULL
8.4.2.10.2 構文規則
1) この書き方は,INITIALIZE文若しくはSET文中の送出し側作用対象として,プログラム原型形式の
CALL文,関数原型形式の関数一意名若しくはメソッド呼出しの引数として,又はデータポインタ若
しくはプログラムポインタの比較条件の中でだけ用いてもよい。
8.4.2.10.3 一般規則
1) データポインタに関連している場合,既定義アドレスNULLは,字類がデータポインタであってその
内容がアドレス値ナルであるデータ項目を指す。データアドレス値ナルは,いかなるデータ項目のア
ドレスを表すものでもないことが保証された実装者定義の値である。
2) プログラムポインタに関連している場合,既定義アドレスのNULLは,字類がプログラムポインタで
あってその内容がアドレス値ナルであるデータ項目を指す。プログラムアドレス値ナルは,いかなる
プログラムのアドレスを表すものでもないことが保証された実装者定義の値である。
8.4.2.11 データアドレス一意名
データアドレス一意名は,データ項目のアドレスを含んでいる一意なデータ項目を指す。
8.4.2.11.1 一般形式
ADDRESS OF 一意名1
88
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
8.4.2.11.2 構文規則
1) 一意名1は,ファイル節,作業場所節,局所記憶節又は連絡節中で定義されたデータ項目でなければ
ならない。一意名1が,オブジェクト又はファクトリオブジェクトの,作業場所節又はファイル節中
で定義されたものであってはならない。
2) 一意名1が,オブジェクト参照又は強い型付けの集団項目に従属する基本項目であってはならない。
3) 一意名1がビットデータ項目であるとき,一意名1の記述は次のとおりでなければならない。
a) 一意名1の添字付け及び部分参照は,固定小数点数字定数,又は全ての作用対象が固定小数点数字
定数でべき乗演算子の指定のない算術式。
b) バイト境界にけたよせされている。
4) 一意名1が強い型付けの集団項目であるとき,一意名1は,STRONG指定付きで記述された型宣言を
参照するTYPE句によって定義されていなければならない。
5) この一意名の書き方を,受取り側作用対象として指定してはならない。
8.4.2.11.3 一般規則
1) データアドレス一意名は一意なデータ項目を生成する。その字類はポインタ,項類はデータポインタ,
その内容は一意名1のアドレスになる。
2) 一意名1が強い型付けの集団項目であるか又は制限付きデータポインタであるとき,データアドレス
一意名は,一意名1の型に制限されたデータポインタとなる。
8.4.2.12 プログラムアドレス一意名
プログラムアドレス一意名は,プログラムのアドレスを含んでいる一意なデータ項目を指す。
8.4.2.12.1 一般形式
ADDRESS OF PROGRAM
一意名1
定数1
プログラム原型名1
8.4.2.12.2 構文規則
1) 一意名1は,字類が英数字又は各国文字でなければならない。
2) 定数1は,英数字定数又は各国文字定数でなければならない。
3) プログラム原型名1は,リポジトリ段落中に指定したプログラム原型でなければならない。
4) この一意名の書き方を,受取り側作用対象として指定してはならない。
8.4.2.12.3 一般規則
1) プログラムアドレス一意名は一意なデータ項目を生成する。その字類はポインタ,項類はプログラム
ポインタ,内容は次のいずれかで識別されるプログラムのアドレスになる。
a) 一意名1のデータ項目の内容
b) 定数1の値
c) プログラム原型名1
一意名1又は定数1の指定があるときに,この値を用いて参照されるプログラムを識別する方法は,
8.3.1.1.1(利用者定義語)による。
2) プログラムは,COBOLで書いたものでもよく,実装者が可能であると宣言している他の言語で書い
たものでもよい。COBOLプログラムでは,プログラム名段落中の外部公開名で識別される,最も外
側のプログラムのアドレスとする。非COBOLプログラムでは,アドレスとそれに関連するプログラ
ムとの関係は実装者定義とする。
89
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
3) プログラム原型名1の指定がある場合,プログラムアドレス一意名は,プログラム原型名1に制限さ
れたプログラムポインタ特性をもつ。
4) 実行時システムがプログラムを位置付けできないとき,EC-PROGRAM-NOT-FOUND例外状態になり,
このアドレス一意名の値は既定義アドレスのNULLになる。
8.4.2.13 行数カウンタ
一意名LINAGE-COUNTERは,ファイル記述項にLINAGE句があると生成される。
8.4.2.13.1 一般形式
LINAGE-COUNTER
IN
OF ファイル名1
8.4.2.13.2 構文規則
1) LINAGE-COUNTERは,手続き部の文の中でだけ参照してもよい。
2) 一意名LINAGE-COUNTERは,受取り側作用対象として参照してはならない。
3) LINAGE-COUNTERの修飾に関する要件は,8.4.1.1(修飾)による。
8.4.2.13.3 一般規則
1) LINAGE-COUNTERは,一時的な符号なし整数データ項目を参照するものであり,その字類及び項類
は数字であり,その大きさはLINAGE句に指定したページの大きさと等しい。
2) 一意名LINAGE-COUNTERの意味は,13.16.32(LINAGE句)の一般規則7) による。
8.4.2.14 報告書カウンタ
一意名PAGE-COUNTER及びLINE-COUNTERは,各々の報告書に対して自動的に生成され報告書ごと
に独立して存在する。
8.4.2.14.1 一般形式
PAGE-COUNTER
LINE-COUNTER
IN
OF 報告書名1
8.4.2.14.2 構文規則
1) 報告書節の中で,PAGE-COUNTER及びLINE-COUNTERは,SOURCE句だけで参照してもよい。手
続き部の中で,PAGE-COUNTER及びLINE-COUNTERは,整数データ項目を書いてもよい文脈であ
ればどこでもよい。
2) PAGE-COUNTER及びLINE-COUNTERに対する修飾の要件は,8.4.1.1(修飾)による。
注記 PAGE-COUNTER及びLINE-COUNTERは報告書ごとに別々に保守されるため,ページ番号
に正しい値を割り当てること,及び報告集団がページ限界中に正しく印字されることを保証
するのは,プログラマの責任である。
3) LINE-COUNTERは,受取り側作用対象として参照してはならない。
8.4.2.14.3 一般規則
1) PAGE-COUNTER及びLINE-COUNTERは,一時的な符号なし整数データ項目を参照するものであり,
その字類及び項類は数字である。これらは報告書ごとに維持される。
2) INITIATE文を実行すると,対応する報告書のPAGE-COUNTERの初期値に1が設定され,その値はペ
ージ送りのたびに1ずつ加算される。RESET指定付きのNEXT GROUP句のある報告集団が印字され
るとき,その値は1に戻される。
3) INITIATE文を実行すると,対応する報告書のLINE-COUNTERの初期値に0が設定され,その値はペ
ージ送りのたびに0に戻される。
90
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4) 報告書の各行が印字される時点のLINE-COUNTERの値は,その行が印字されたページ上の行位置を
指す。報告集団を印字した後のLINE-COUNTERの値は,最後の行が印字された行位置と同じになる
が,ただし,その報告集団にNEXT GROUP句の指定があれば,その場合のLINE-COUNTERの最終
値は,NEXT GROUP句の一般規則によって規定される。
5) PAGE-COUNTER及びLINE-COUNTERの値は,印字項目をもたない報告集団の処理及びSUPPRESS
文で印刷の抑制された報告集団の処理によって,影響を受けることはない。
8.4.3
条件名
条件名(condition-name)は2種類とする。一つは,関連するデータ項目がもってもよい値の集合を明ら
かにするために用いる。もう一つは,実装者定義のスイッチのオン(on)状態又はオフ(off)状態に関連
付けられる。
レベル番号88は,条件名と,特定の値,値の集合又は値の範囲とを結び付ける。この条件名は,それが
関連付けられているデータ項目に従属し,そのデータ項目を,条件変数(conditional variable)と呼ぶ。条
件の中でこの条件名を参照すると,8.8.4.1.4(条件名条件)の規定のとおり,関連する条件変数の値が,
条件名で識別される値の集合のいずれかに等しいことを判定する条件式の略記法となる。この種の条件名
は13.14(データ記述項)で規定する。この種の条件名をSET文で用いて,その条件名が真又は偽のいず
れかになるような値を,関連する条件変数へと転記することもできる。
特殊名段落中では,条件名は実装者定義のスイッチのオン(on)状態又はオフ(off)状態を識別する。
ある条件中でこの条件名を参照すると,8.8.4.1.5(スイッチ状態条件)の規定のとおり,関連するスイッ
チが,条件名に関連する“オン”状態又は“オフ”状態であることを断定する。この条件名をSET文で用
いて,関連するスイッチを“オン”状態又は“オフ”状態に設定することもできる。
8.4.3.1
一般形式
書き方1(スイッチ状態条件名)
条件名1
書き方2(添字修飾付き条件名)
添字修飾付き条件名1
8.4.3.2
構文規則
書き方1
1) 条件名1は,特殊名段落においてスイッチ名に関連付けられていなければならない。
書き方2
2) 添字修飾付き条件名1は,8.4.1.1(修飾)による。
8.4.4
明示参照及び暗黙参照
ソース要素は,手続き部の文でデータ項目を明示的に参照しても暗黙に参照してもよい。明示参照
(explicit reference)となるのは,参照される項目の名前を手続き部の文に書いた場合とする。暗黙参照
(implicit reference)となるのは,参照される項目の名前を文には書いていないのに手続き部の文がその項
目を参照する場合とする。暗黙参照は,PERFORM文の実行中にVARYING指定,AFTER指定又はUNTIL
指定中に書いた一意名又は指標名の指す指標又はデータ項目を,そのPERFORM文に関連する制御機構が
初期化したり変更したり評価したりする場合にも起きる。このように暗黙参照が起きるのは,そのデータ
項目がその文の実行に参与する場合だけとする。
8.4.5
名前の有効範囲
ソース要素が別のソース要素の内部に直接又は間接に含まれている場合に,各々のソース要素は対象を
91
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
命名するために同じ利用者定義語を用いてもよく,これはその利用者定義語が他のソース要素で用いられ
たか否かには依存しない[8.3.1.1.1(利用者定義語)参照]。同じ名前をもつ対象が二つ以上ある場合,そ
のような名前をあるソース要素中で参照すると,利用者定義語の種類がたとえ異なっていても,参照され
る対象はそのソース要素中で記述されたものであり,同じ名前をもつが別なソース要素中で記述されたも
のではない。
プログラム名とメソッド名とを除き,あるソース要素からそれに含まれるソース要素の中で宣言された
名前を参照してはならない。
次の種類の利用者定義語は,翻訳群全体を通じて参照してもよい。
− 登録集名
library-name
− 原文名
text-name
次の種類の利用者定義語は,宣言されたソース要素中の文でだけ参照してもよい。
注記 つまり,これらは常に局所名である。
− 段落名
paragraph-name
− 節名
section-name
次の種類の利用者定義語は,構成節で宣言された場合,その節を含んでいるソース要素又はそれに含ま
れるソース要素中の,文及び記述項でだけ参照してもよい。
注記 つまり,これらは常に大域名である。
− 符号系名
alphabet-name
− 字類名
class-name (for truth value proposition)
− 条件名(構成節で宣言) condition-name (declared in a configuration section)
− 現地特性名
locale-name
− 呼び名
mnemonic-name
− 順序付け名
ordering-name
− 記号文字
symbolic-character
次の種類の利用者定義語に適用する,宣言及び参照に対する特別な規約は,8.4.5.1(局所名及び大域名)
〜8.4.5.10(プロパティ名の有効範囲)による。
− クラス名
class-name (for object orientation)
− 翻訳変数名
compilation-variable-name
− 条件名(データ部で宣言)condition-name (not declared in a configuration section)
− 定数名
constant-name
− データ名
data-name
− ファイル名
file-name
− 関数原型名
function-prototype-name
− 指標名
index-name
− インタフェース名
interface-name
− メソッド名
method-name
− パラメタ名
parameter-name
− プログラム名
program-name
− プログラム原型名
program-prototype-name
− プロパティ名
property-name
92
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
− レコードキー名
record-key-name
− レコード名
record-name
− 報告書名
report-name
− 画面名
screen-name
− 型名
type-name
− 利用者関数名
user-function-name
通信記述名(廃要素)は,それが宣言された通信節を含んでいるソース要素中の文又は記述項でだけ参
照してもよい。
注記 つまり,これらは常に局所名である。
8.4.5.1
局所名及び大域名
局所名は,それが宣言されたソース要素の中でだけ参照してもよい。
大域名は,それが宣言されたソース要素及びそれに直接又は間接に含まれているソース要素の中で参照
してもよい。
あるソース要素(ソース要素B)が別のソース要素(ソース要素A)中に直接に含まれている場合,両
方のソース要素が同じ利用者定義語を用いて名前を定義していてもよい。さらに,ソース要素Aが別のソ
ース要素中に含まれていてもよいし,その別のソース要素が同じ利用者定義語を用いて名前を定義してい
てもよい。そのように重複した名前をソース要素Bの中で参照した場合,参照される対象は次の規則を用
いて決まる。
1) 参照される対象の決定に用いられる名前の集合は,ソース要素Bの中で定義された全ての名前,ソー
ス要素Aの中で定義された全ての大域名,及びソース要素Aを直接又は間接に含むソース要素の中で
定義された全ての大域名からなる。この名前の集合を用いて,通常の修飾の規則及びその他の一意参
照の規則を,一つ以上の対象が識別されるまで適用する。
2) 識別された対象が唯一のとき,それが参照される対象である。
3) 識別された対象が二つ以上のとき,ソース要素Bに局所的な名前をもつ対象が二つ以上あってはなら
ない。ソース要素Bに局所的な名前をもつ対象がないとき又は一つあるとき,次の規則を適用する。
a) その名前がソース要素Bで宣言されているとき,ソース要素Bの対象が参照される対象である。
b) そうではなく,ソース要素Aが別のソース要素に含まれているとき,参照される対象は次のとおり
とする。
1. その名前がソース要素Aで宣言されているとき,ソース要素Aの対象。
2. その名前がソース要素Aでは宣言されず,かつ,ソース要素Aを含むソース要素で宣言されてい
るとき,ソース要素Aを含むソース要素中の対象。この規則は,唯一の有効な名前が見つかるま
で,更にそのソース要素を含むソース要素に適用される。
8.4.5.1.1
条件名,定数名,データ名,ファイル名,レコード名,報告書名,画面名及び型名の有効範囲
定数名,ファイル名,レコード名,報告書名,画面名又は型名を,GLOBAL句付きで記述すれば,それ
は大域名とする。定数名,データ名又はファイル名を,ファクトリであれインスタンスであれ,オブジェ
クト定義のソース要素中で記述すれば,それは大域名とする。大域名に従属するデータ名及び画面名は,
全て大域名とする。大域名に関連する条件名は,全て大域名とする。
条件名,定数名,データ名,ファイル名,レコード名,報告書名,画面名又は型名が大域名でない場合,
それは局所名とする。
条件名,定数名,データ名,ファイル名,レコード名,報告書名,画面名及び型名に対して単一ソース
93
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
要素が割り当てる名前の一意性を管理する規則は,この規格の他の箇所で規定する[8.3.1.1.1(利用者定
義語)参照]。
8.4.5.1.2
指標名の有効範囲
大域属性をもつデータ項目に指標名付きで記述された表が含まれているとき,その指標名も大域属性を
もつ。したがって,指標名の有効範囲は,その指標名付きで記述した表を命名しているデータ名の有効範
囲と同一である。
8.4.5.1.3
レコードキー名の有効範囲
索引ファイル用のファイル管理記述項のALTERNATE RECORD KEY句又はRECORD KEY句の
SOURCE指定によって定義されるレコードキー名は,そのファイル用のファイル記述項にGLOBAL句の
指定があれば大域名であり,さもなければレコードキー名は局所名である。
8.4.5.1.4
PAGE-COUNTER及びLINE-COUNTERの有効範囲
PAGE-COUNTER及びLINE-COUNTERは,関連する報告書の報告書記述(RD)項にGLOBAL句の指
定があれば大域名であり,さもなければ局所名である。
8.4.5.1.5
LINAGE-COUNTERの有効範囲
LINAGE-COUNTERは,関連するファイルのファイル記述項にGLOBAL句の指定があれば大域名であ
り,さもなければ局所名である。
8.4.5.2
プログラム名の有効範囲
プログラムのプログラム名は,そのプログラムの見出し部のプログラム名段落中で宣言される。プログ
ラム名を参照してもよい箇所は,CALL文,CANCEL文,プログラムアドレス一意名,及びプログラム終
了標だけとする。同一の最も外側のプログラムの内部に直接又は間接に含まれている複数個のプログラム
に割り当てられるプログラム名は,最も外側のプログラムの内部で一意でなければならない。
次の規則は,CALL文,CANCEL文及びプログラムアドレス一意名に対してプログラム名の有効範囲を
規定する。
1) プログラムAが共通属性をもたず,別のプログラムBに直接に含まれるとき,プログラムAの名前
を参照する文を指定してもよい箇所は,プログラムB,及び再帰属性をもつ場合のプログラムA自体
の中だけである。
2) プログラムAが共通属性をもって,別のプログラムBに直接に含まれるとき,プログラムAの名前
を参照する文を指定してもよい箇所は,プログラムB及びそれに直接又は間接に含まれるプログラム
の中だけである。ただし,プログラムAが再帰属性をもつ場合に限り,プログラムA及びそれに含ま
れるプログラムの中でも参照してもよい。
3) プログラムAが最も外側のプログラムであるとき,その名前は実行単位のあらゆるソース要素中の文
から参照してもよい。
8.4.5.3
クラス名及びインタフェース名の有効範囲
ソース要素中で参照されるクラスのクラス名は,それを含んでいるクラス定義の名前であるか,又はそ
のソース要素若しくはそれを含んでいるソース要素のリポジトリ段落中で宣言されているか,いずれかで
なければならない。
翻訳群内のクラス定義は,一意なクラス名をもたなければならない。
ソース要素の中で参照されるインタフェースのインタフェース名は,それを含んでいるインタフェース
定義の名前であるか,又はそのソース要素若しくはそれを含んでいるソース要素のリポジトリ段落中で宣
言されているかのいずれかでなければならない。
94
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
翻訳群内のインタフェース定義は,一意なインタフェース名をもたなければならない。
ソース要素のリポジトリ段落中で宣言されたクラス名又はインタフェース名は,そのソース要素の中,
及びそれに含まれているあらゆるソース要素の中で用いてよい。
8.4.5.4
メソッド名の有効範囲
メソッドのメソッド名は,メソッド名段落中で宣言される。メソッド名は,INVOKE文,文内呼出し及
びメソッド終了標でだけ参照してもよい。
クラス定義中で宣言されたメソッドのメソッド名は,そのクラス定義の中で一意でなければならない。
下位クラス中で宣言されたメソッドは,上位クラス中のメソッドと,名前が同じであってもよくて,これ
は11.6(メソッド名段落)の条件による。
インタフェース定義中で宣言されたメソッドのメソッド名は,そのインタフェース定義の中で一意でな
ければならない。継承する側のインタフェース中で宣言されたメソッドは,継承される側のインタフェー
ス中のメソッドと,名前が同じであってもよくて,これは11.6(メソッド名段落)の条件による。
8.4.5.5
関数原型名の有効範囲
ソース要素中で参照される関数原型名は,それを含んでいる関数定義の利用者関数名であるか又はリポ
ジトリ段落中で宣言された関数原型名であるか,いずれかでなければならない。
8.4.5.6
利用者関数名の有効範囲
利用者関数名を参照してもよい箇所は,同じ翻訳群内でその関数定義に後続するソース要素のリポジト
リ段落中とする。また,外部リポジトリが更新される場合,それ以降に翻訳されるソース単位のうち,そ
の利用者関数名を関数原型名としてリポジトリ段落中に指定した,あらゆるソース単位中で参照してもよ
い。
8.4.5.7
プログラム原型名の有効範囲
ソース要素の中で参照されるプログラム原型名は,それを含んでいるプログラム定義のプログラム名で
あるか又はリポジトリ段落中で宣言されたプログラム原型名であるか,いずれかでなければならない。
8.4.5.8
翻訳変数名の有効範囲
翻訳変数名の有効範囲は,その定義の地点から,翻訳群の終わりまでである。翻訳変数名は,翻訳指示
中及び定数記述項中で参照してもよい。
8.4.5.9
パラメタ名の有効範囲
パラメタ名を参照してもよい箇所は,USING指定中にそのパラメタ名を指定しているクラス定義又はイ
ンタフェース定義内だけとする。これは,11.2(クラス名段落)又は11.5(インタフェース名段落)の規
則による。
8.4.5.10 プロパティ名の有効範囲
あるソース要素中で参照されるプロパティのプロパティ名は,そのソース要素の又はそれを含んでいる
ソース要素のリポジトリ段落中で宣言されていなければならない。
8.5
データ記述及び表現形式
8.5.1
機種によらないデータ記述
データをできるだけ機種によらないものにするため,データの特性又は性質をデータ部において記述す
るのに用いられる形式は,計算機内部又は特定外部媒体上でのデータの格納方法から十分に独立したもの
となっている。実装系の用意しているデータの格納方法が複数種類ある場合は,データ記述項に書いた句
によって記憶域内でのデータの表現形式が決まる。実装者は,COBOLを実装した計算機上で使用可能な
表現形式の完全な仕様を準備しておく。
95
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
16進形式である場合を除き,定数の内容は翻訳時に分かっている計算機符号化文字集合で記述される。
実行時に計算機上で別な符号化文字集合が有効になる場合,定数の内容が実行時の計算機符号化文字集合
へと変換される[8.1.1(計算機符号化文字集合)参照]。16進定数形式は,実行時に用いられるビットパ
ターンを指定する。
8.5.1.1
ファイル及びレコード
COBOLには,ファイルの物理的な側面を記述するための言語要素が幾つかある。論理ファイルを物理
ファイルに関連付けるのに用いられる外部名,及びファイル媒体の物理的な制限に沿った論理レコードの
ブロック化指定などである。
大部分の箇所でCOBOLが取り扱うのは,論理ファイルである。COBOLの入出力文は,論理レコード
を参照する。それぞれの論理レコードは,あるレコードの特性を記述する一組のデータ記述項からなる。
それぞれのデータ記述項は,レベル番号に,必要なときに指定するデータ名が続き,必要に応じた一連の
独立な句が続く。
作業場所節,局所記憶節又は連絡節中に記述したデータ項目群もまた,レコード記述項を用いて,論理
レコードへと集団化することができる。
ファイルに関しては,物理的な側面,物理ファイルと論理ファイルとの関係,及び論理ファイルの特性
も含めて,9.1(ファイル)において規定する。
8.5.1.2
レベル
レベルの概念は,レコードの構造の中に本質的に備わっている。この概念は,データを参照するために
レコードを細分する必要から生じる。いったん細分してから,もっと詳細なデータ参照を許すようにする
ため,更に細分してもよい。
レコードの最も基本的な細分,つまりそれ以上は細分できない部分を,基本項目と呼ぶ。したがって,
レコードは基本項目の並びから構成されているといえる。また,レコードそれ自体が基本項目であること
もある。
一群の基本項目を参照するために,これらの基本項目は集団へとまとめられる。それぞれの集団は,複
数の基本項目からなる並びに名前を付けたものである。幾つかの集団を更にまとめて複数の集団からなる
集団を作ってもよい。ある基本項目は,集団の階層の中で複数の集団に属していてもよい。
8.5.1.2.1
レベル番号
レベル番号の体系は,基本項目及び集団項目の構成を示すものである。レコードは最も包括的なデータ
項目であるから,レコードのレベル番号は1から始まる。データ項目の包括度が低くなるのに従い,デー
タ項目に割り当てられるレベル番号は大きくなる(連続番号とは限らない)が,49より大きくはならない。
特別なレベル番号として66,77及び88があり,これらに前述の規則は当てはまらない。
ある集団項目は,それ以下のレベル番号が現れるまでの,全ての集団項目及び基本項目を包括する。集
団項目に直接に従属する項目の記述に用いるレベル番号は,全て数値の等しいレベル番号であって,その
集団項目の記述に用いたレベル番号より大でなければならない。
レベルの概念が実際には適用されない記述項があり,それは次の3種類とする。
1) RENAMES句によって導入される基本項目又は集団項目を指定する記述項。
2) 作業場所節,局所記憶節,及び連絡節の独立データ項目を指定する記述項。
3) 条件名を指定する記述項。
データ項目を再編成するために,RENAMES句によって項目を記述している記述項には,特別なレベル
番号66が割り当てられる。
96
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
独立データ項目であって,他の項目の細分ではなく,それ自体が細分されもしない項目を指定している
記述項には,特別なレベル番号77が割り当てられる。
条件変数の特定な値に関連付けられた条件名を指定している記述項には,特別なレベル番号88が割り当
てられる。
8.5.1.3
文字処理の制限
実装系で使える文字集合の各符号化文字は,実行中に1個の文字位置として処理される。計算機文字集
合としてJIS X 0221が選定された場合は,次に示す処理上の制限が適用される。
1) JIS X 0221に規定される合成列の基底文字及び後続する結合文字は,それぞれが単一の文字位置とし
て扱われる。
2) JIS X 0221のUTF-16形式に規定される4オクテット列のRオクテット(前半の2オクテット)及び
Cオクテット(後半の2オクテット)は,それぞれが単一の文字位置として扱われる。
注記 JIS X 0221のUTF-16形式は符号化文字集合の一つであって,そこでは各コード要素(つま
り“コード値”)が2オクテットからなる。基本文字,拡張文字及び記号のうち,全てではな
いが多くの部分は1個のコード要素で表現される。2オクテットの符号化文字集合で定義で
きる実体群よりも多数の実体群を収容するため,JIS X 0221では,次に示す技法を用いてい
る。
− 抽象文字又はテキスト実体の幾つかを,複数個のコード要素の“結合列”として定義す
る。これは,一つの2オクテット基底文字と幾つかの2オクテット結合文字とで一つの
完全な実体を形成するものであり,まとめて“合成列”と呼ぶ。
− 抽象文字又はテキスト実体の幾つかを,コード要素2個からなる“サロゲートペア”と
して定義する。これは,抽象文字又はテキスト実体の前半と後半を形成するものである。
これらの技法は,固定幅2オクテットのコード要素群であるデータの処理効率を高める一
方で,不適正に操作するとデータが破壊される危険性を含んでいる。更に理解を深めるには,
JIS X 0221を参照する。
COBOLはUTF-16を,JIS X 0221が規定する“UCS-2の実装 (U)”として実装・提供する。
つまり,COBOLはサロゲートペアを操作したり認識したりする特殊な方法を提供しないし,
合成列を認識する方法も提供しない。UTF-16の2オクテットコード要素の各々は,COBOL
では,それ自体が1個の文字であるかのように取り扱われる。それによって発生する切捨て
又は置換が,応用プログラムの要請に整合していることを保証するのは,利用者の責任であ
る。
8.5.1.4
算術符号
算術符号(algebraic sign)は,二つの部類に分かれる。一つは演算符号(operational sign)であって,こ
れは符号付き数字データ項目及び符号付き数字定数に関連付けられ,その代数的な特性を示す。もう一つ
は編集用符号(editing sign)であって,編集データ項目中で項目の符号を表示する。
SIGN句を用いてプログラマは明示的に演算符号の位置を記述してもよい。この句は書いても書かなく
てもよいが,SIGN句を書かないときの演算符号の表現は,実装者定義とする。
編集用符号は,PICTURE句の符号編集用記号を用いて,データ項目に挿入される。
8.5.1.5
記憶域内でのデータのけたよせ
8.5.1.5.1
英数字集団及び用途DISPLAYのデータ項目のけたよせ
英数字集団及び用途DISPLAYのデータ項目は,自然な英数字文字境界にけたよせされる。これは処理
97
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
系のアーキテクチャにおいてバイト境界に一致する。
英数字集団項目の先頭のけたよせと,その集団内の先頭項目との相対位置関係は,実装者定義とする。
ただし例外として,先頭項目が各国文字データ項目である場合か,字類がブール,オブジェクト又はポイ
ンタのデータ項目である場合は,集団のけたよせがその先頭項目と一致する。
8.5.1.5.2
用途NATIONALのデータ項目のけたよせ
用途NATIONALのデータ項目は,自然な各国文字境界にけたよせされる。
集団項目の先頭のけたよせ及びその集団内の先頭項目のけたよせは,先頭項目の用途がNATIONALの
場合,記憶域中での同じ位置となる。
8.5.1.5.3
用途BITのデータ項目のけたよせ
基本ビットデータ項目及びビット集団項目のレコード内でのけたよせは,SYNCHRONIZED句も
ALIGNED句も指定がない場合,次に示す項目については,記憶域中の次のビット位置となる。
− 同じレベルの基本ビットデータ項目又はビット集団項目の直後にある基本ビットデータ項目
− 同じレベルの基本ビットデータ項目又はビット集団項目の直後にあるビット集団項目
これ以外の全てのビットデータ項目についてはレコード内でのけたよせは,SYNCHRONIZED句の指定
がない場合,使用可能な先頭バイトの先頭ビット位置となる。
レベル1又はレベル77の基本ビットデータ項目及びレベル1のビット集団項目のけたよせは,バイトの
先頭ビット位置となる。
暗黙のFILLERビット位置が,次の場合に生成される。
− SYNCHRONIZED句付きで記述したビットデータ項目に対しての実装者定義とする場合。FILLERビ
ット位置に関する位置付け規則は,実装者定義とする。
− 英数字集団項目の中,強い型付けの集団項目の中,又はビット集団項目の中で,ビットデータ項目の
後に,その集団内の次の項目に要求される自然境界まで,先に進めてけたよせする必要がある場合。
このFILLERビット位置の暗黙の記述は,無名の基本ビットデータ項目で,必要なビット数をもち,
その集団内の次の項目と同じレベルをもつものである。
− 英数字集団項目又は強い型付けの集団項目であるレコード内の最終データ項目であるビットデータ項
目より後,その文字数を整数倍にするためにビット数を増やす必要がある場合。このFILLERビット
位置の暗黙の記述は,無名の基本ビットデータ項目で,必要なビット数をもち,そのレベル番号は最
終項目が従属するビットデータ項目の階層系列中での最高レベルである。そのような上位項目がない
とき,レコード中の最終データ項目と同じレベルである。
注記 レコードの全体がビット集団である場合の末尾,レベル77項目の末尾,それにレベル1の基
本項目の末尾には,FILLERが生成されない。
集団項目の先頭のけたよせ及びその集団項目内の先頭項目のけたよせは,先頭項目がビットデータ項目
である場合,記憶域中での同じ位置となる。
8.5.1.5.4
実行用コードの効率を高めるための項目のけたづめ
計算機の記憶装置には,語境界,半語境界,バイト境界のように,自然な番地付け境界が記憶装置中に
ある構成のものがある。データの格納方法は,実行時モジュールが決定し,記憶装置中の自然な番地付け
境界に合わせる必要はない。
しかしながら,データが自然な番地付け境界に合わせて格納されていると,算術演算,添字付けなどで
データを用いるときの助けになる場合がある。特に,二つ以上のデータ項目の部分が隣接する二つの自然
境界の間に現れたり,一つのデータ項目が自然境界をまたいでいたりすると,実行時のデータのアクセス
98
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
及び格納に余分な機械命令が必要になることがある。
余分な機械命令の実行を回避するように,これらの自然境界に合わせてデータ項目を配置することを,
けたづめ(synchronization)と呼ぶ。
けたづめは,次の二つの方法で行うことができる。
1) SYNCHRONIZED句を使用する。
2) SYNCHRONIZED句を使用せず,適切な自然境界を認識して,それに合わせてデータを並べる。
特殊なけたよせ方法を用意している実装者は,解釈の仕方を厳密に規定しなければならない。そのよう
な項目が集団項目の中にある場合,その集団項目を作用対象に用いている文の結果に影響することがある。
特殊なけたよせ方法を用意している実装者は,暗黙のFILLERの効果及びこれらの集団項目を参照してい
る文の意味を記述しなければならない。
8.5.1.5.5
強い型付けの集団項目のけたよせ
強い型付けの集団項目は,自然な英数字文字境界にけたよせされる。これは処理系のアーキテクチャに
おいてバイト境界に一致する。
強い型付けの集団項目の先頭の,その集団内の先頭の項目に対する相対的なけたよせは実装者定義とす
るが,次の例外がある。
− 先頭項目が各国文字集団項目であるか,先頭項目の字類がブール,オブジェクト又はポインタの場合,
集団のけたよせは先頭項目と一致しなければならない。
− 集団内部に含まれる基本項目のけたよせは,8.5.3(型)が規定する本質的な特徴を損なわないもので
なければならない。
8.5.2
データ項目及び定数の字類及び項類
データ項目及び定数は,それぞれ字類及び項類をもつ。
強い型付けの集団項目の字類及び項類は両方とも,その集団項目のデータ記述にあるTYPE句に指定し
た型名とする。強い型付けでない集団項目の字類及び項類は,次による。
− 英数字集団項目のもつ字類及び項類は,英数字(alphanumeric)である。
− ビット集団項目のもつ字類及び項類は,ブール(boolean)である。
− 各国文字集団項目のもつ字類及び項類は,各国文字(national)である。
英数字集団項目は,用途がDISPLAYであるかのように扱われる。
基本データ項目の項類は,その記述に依存して異なる。基本データ項目の字類は,その項類に関係する
[表3(データ項目に対する字類及び項類の関係)参照]。
99
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表3−データ項目に対する字類及び項類の関係
字類 (Class)
項類 (Category)
英字
(Alphabetic)
英字
(Alphabetic)
英数字
(Alphanumeric)
英数字
(Alphanumeric)
英数字編集
(Alphanumeric-edited)
数字編集
(Numeric-edited)(用途がDISPLAYの場合)
ブール
(Boolean)
ブール
(Boolean)
指標
(Index)
指標
(Index)
各国文字
(National)
各国文字
(National)
各国文字編集
(National-edited)
数字編集
(Numeric-edited)(用途がNATIONALの場
合)
数字
(Numeric)
数字
(Numeric)
オブジェクト (Object)
オブジェクト参照
(Object-reference)
ポインタ
(Pointer)
データポインタ
(Data-pointer)
プログラムポインタ (Program-pointer)
定数の字類及び項類は,8.3.1.2(定数)で規定する。
データの字類又はデータの項類の名前がCOBOLの規則中に現れた場合,字類であると特に断らない限
り,その名前は項類を指す。
8.5.2.1
英字項類
基本データ項目の記述に英字を規定するPICTURE文字列があるとき,項類は英字(alphabetic)である。
このような項目を,英字データ項目と呼ぶ。
英字データ項目は,作用対象として英数字データ項目を指定してもよい箇所には,どこに指定してもよ
い。明示的に英字データ項目の指定が許されていない箇所でも,英字データ項目は英数字データ項目であ
るかのように取り扱われる。
8.5.2.2
英数字項類
次のいずれかであるとき,項類は英数字(alphanumeric)である。
1) 基本データ項目の記述に,英数字を規定するPICTURE文字列がある。
2) 基本データ項目の記述に,英数字定数を指定したVALUE句がありPICTURE句がない。
3) 英数字集団項目である。
4) 英数字関数である。
このような項目を,英数字データ項目と呼ぶ。
8.5.2.3
英数字編集項類
基本データ項目の記述に英数字編集を規定するPICTURE文字列があるとき,その項類は英数字編集
(alphanumeric-edited)である。
このような項目を,英数字編集データ項目と呼ぶ。
8.5.2.4
ブール項類
次のいずれかであるとき,項類はブール(boolean)である。
1) 基本データ項目の記述に,ブールを規定するPICTURE文字列がある。
2) 基本データ項目の記述に,ブール定数を指定したVALUE句がありPICTURE句がない。
3) 集団項目の記述に,明示的な又は暗黙のGROUP-USAGE IS BIT句がある。
100
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4) ブール関数である。
このような項目を,ブールデータ項目と呼ぶ。
8.5.2.5
データポインタ項類
基本データ項目の記述が明示的又は暗黙に用途がデータポインタと定めているとき,その項類はデータ
ポインタ(data-pointer)である。
このような項目を,データポインタデータ項目と呼び,単にデータポインタとも呼ぶ。
8.5.2.6
指標項類
次のいずれかであるとき,項類は指標(index)である。
1) 基本データ項目の記述が,明示的又は暗黙に用途は指標と定めている。
2) 指標関数である。
このような項目を,指標データ項目と呼ぶ。
8.5.2.7
各国文字項類
次のいずれかであるとき,項類は各国文字(national)である。
1) 基本データ項目の記述に,各国文字を規定するPICTURE文字列がある。
2) 基本データ項目の記述に,各国文字定数を指定したVALUE句がありPICTURE句がない。
3) 基本データ項目の記述が,明示的又は暗黙に用途は各国文字と定めている。
4) 集団項目の記述に明示的な又は暗黙のGROUP-USAGE IS NATIONAL句がある。
5) 各国文字関数である。
このような項目を,各国文字データ項目と呼ぶ。
8.5.2.8
各国文字編集項類
基本データ項目の記述に,各国文字編集を定めるPICTURE文字列があるとき,その項類は各国文字編
集(national-edited)である。
このような項目を,各国文字編集データ項目と呼ぶ。
8.5.2.9
数字項類
次のいずれかであるとき,項類は数字(numeric)である。
1) 基本データ項目の記述中に,数字を規定するPICTURE句があり,BLANK WHEN ZERO句がない。
2) 基本データ項目の記述中に,次の用途の指定がある: 2進文字(binary-char),2進短精度(binary-short),
2進長精度(binary-long),2進倍精度(binary-double),浮動短精度(float-short),浮動長精度(float-long)
又は浮動拡張精度(float-extended)。
3) LINE-COUNTERである。
4) LINAGE-COUNTERである。
5) PAGE-COUNTERである。
6) 数字関数である。
7) 整数関数である。
このような項目を,数字データ項目と呼ぶ。
8.5.2.10 数字編集項類
次のいずれかであるとき,項類は数字編集(numeric-edited)である。
1) 基本データ項目の記述に,数字編集を規定するPICTURE文字列がある。
2) 基本データ項目の記述に,数字を規定するPICTURE文字列とBLANK WHEN ZERO句がある。
このような項目を,数字編集データ項目と呼ぶ。
101
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
8.5.2.11 オブジェクト参照項類
基本データ項目の記述が,明示的又は暗黙に用途はオブジェクト参照と定めているとき,その項類は,
オブジェクト参照(object-reference)である。
このような項目を,オブジェクト参照と呼ぶ。
8.5.2.12 プログラムポインタ項類
基本データ項目の記述が,明示的又は暗黙に用途はプログラムポインタと定めているとき,その項類は
プログラムポインタ(program-pointer)である。
このような項目を,プログラムポインタデータ項目と呼ぶ。単にプログラムポインタとも呼ぶ。
8.5.3
型
型(type)とは,あるデータ項目及びその従属項目の特徴を全て内包しているひな型である。型の宣言
及び命名は,TYPEDEF句を指定することでなされる。ある型の参照は,データ記述項にTYPE句を指定
することでなされる。型名によって識別される,型の本質的な特徴は,型宣言中で定義された基本項目群
の相対位置及び長さ,並びにこれらの基本項目のそれぞれに対して指定されたBLANK WHEN ZERO句,
JUSTIFIED句,PICTURE句,SIGN句,SYNCHRONIZED句及びUSAGE句である。
型の参照は,データ記述項にTYPE句を指定することでなされる。この指定方法によって定義される型
付き項目には,参照された型の特徴が全て備わる。
集団項目は,強い型付けにも弱い型付けにもできる。次に示す場合はいずれも型付き集団項目は強い型
付けになる。
− STRONG指定のある型宣言を参照しているTYPE句付きで記述されている。
− STRONG指定のある型宣言を参照しているTYPE句付きで記述された集団項目に従属している。
基本項目は,強い型付けになることができない。
二つの型付き項目が“同じ型である”のは,次に示すいずれかの場合とする。
− 等価な型宣言を参照しているTYPE句付きで記述されている。
− 等価な型宣言の中の従属項目であり,開始の相対バイト位置及びバイト長が同じである。
二つの型宣言が等価(equivalent)とみなされるのは,型名が同じであり,一方の型宣言の中にある各々
の基本項目に対して他方の型宣言の中にも対応する基本項目があって,開始の相対バイト位置及びバイト
長が同じである場合とする。対応し合う基本項目の各々の対に指定されたBLANK WHEN ZERO句,
JUSTIFIED句,PICTURE句,SIGN句,SYNCHRONIZED句及びUSAGE句は全て同じでなければならな
いが,次の点は例外とする。
1) 通貨編集用記号どうしが一致するのは,対応し合う通貨文字列が同じである場合であり,かつ,その
場合だけとする。
2) PICTURE記号のピリオドどうしが一致するのは,DECIMAL-POINT IS COMMA句がこれらの型宣言
の両方で有効又は両方で無効な場合であり,かつ,その場合だけとする。PICTURE記号のコンマどう
しが一致するのは,DECIMAL-POINT IS COMMA句がこれらの型宣言の両方で有効又は両方で無効な
場合であり,かつ,その場合だけとする。
さらに,PICTURE句のLOCALE指定が一致するのは,次の両方が成立する場合,かつ,その場合だけ
とする。
− 両方ともPICTURE句のLOCALE指定のSIZEに同じ指定をしている。
− 両方ともLOCALE指定の現地特性名を省略しているか,又は両方ともLOCALE指定に同じ外部識別
102
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
を指定している。ここでいう外部識別とは,特殊名段落のLOCALE句において現地特性名と関連付け
られた外部現地特性名又は定数値のことである。
注記 二つの型付き項目が同一のソース要素内で定義されている場合,これらの規則は,両方の項
目が同じTYPE句付きで記述されているか,又は両方の項目が同じ型宣言中の同じ従属項目
として記述されているかの,いずれかであることを意味している。
8.5.3.1
弱い型付けの項目
弱い型付けの項目は,対応する型宣言の特徴をもつ。これらの特徴を,この型付き項目の従属している
集団に関する指定によって上書きすることはできない。
弱い型付けの項目は,型付けされていない項目と同じように使用することができる。
注記 型宣言は,一つ以上のデータ記述項を“短縮記述”したものとみなし得る。
8.5.3.2
強い型付けの集団項目
弱い型付けの項目と同様に,強い型付けの集団項目は,それに対応する型宣言の特徴をもつ。さらに,
強い型付けの集団項目の使用は,データの整合性を保護するための制限に従う。
強い型付けにできる項目の種類は,集団項目だけとする。
8.5.4
長さゼロの項目
長さゼロの項目(zero-length item)とは,長さの最小値がゼロであり実行時の長さがゼロの項目である。
長さゼロの項目は,次に示すいずれかとする。
1) 集団データ項目であって,中身は可変反復データ項目だけでありその反復回数はゼロであるもの。
2) 集団データ項目であって,中身は長さゼロの従属項目だけであるもの。
3) ANY LENGTH句付きで定義されたデータ項目であって,対応する引数又は返却項目が長さゼロの項
目であるもの。
4) 論理レコードであって,可変長形式か又は“固定長又は可変長”形式のRECORD句を用いて規定さ
れ,文字位置の個数はゼロであるもの。
5) 長さゼロの値を返す組込み関数。
8.6
データの有効範囲及び生存期間
ソース単位は,別のソース単位を内包してもよく,内側のソース単位は,その外側のソース単位の資源
の幾つかを参照してもよい[構造の完全な詳細は,10.5(COBOL翻訳群)参照]。
8.6.1
大域名及び局所名
大域名及び局所名の有効範囲は,8.4.5(名前の有効範囲)による。
8.6.2
外部項目及び内部項目
アクセス可能なデータ項目には,データの何らかの表現が格納されていなければならない。ファイル結
合子には,ファイルに関する何らかの情報が格納されていなければならない。データ項目又はファイル結
合子に関連する記憶域は,外部又は内部のいずれかとする。
作業場所節中に記述されるレコードには,そのデータ記述項にEXTERNAL句を書くことで外部属性が
与えられる。外部レコードを記述する記述項に従属しているデータ記述項によって記述されるデータ項目
もまた,外部属性をもつ。レコード又はデータ項目は,外部属性をもたない場合,内部データとする。
ファイル結合子には,関連するファイル記述項にEXTERNAL句を書くことで外部属性が与えられる。
ファイル結合子は,外部属性をもたない場合,内部とする。
EXTERNAL句のないファイル記述項に又は整列併合用ファイル記述項に従属して記述されるレコード
は,このようなレコードに対するデータ記述項に従属して記述されるデータ項目と同様に,常に内部とす
103
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
る。ファイル記述項にEXTERNAL句を書くと,そのレコード群及びこれらに従属するデータ項目は外部
属性をもつ。
局所記憶節,連絡節,通信節,報告書節及び画面節中に記述されたレコード,従属データ項目及び種々
の関連する制御情報は,常に内部とする。連絡節中に記述されたデータに対しては特別な配慮がなされ,
それによって,記述されたレコードと,他の実行時要素がアクセス可能な他のデータ項目との間で,関連
付けを行う。
外部又は内部であるデータ項目又はファイル結合子の名前は,大域名又は局所名のいずれかとする。
データ項目又はファイル結合子が外部(external)であるとき,この項目に関連する記憶域は,その実行
単位中の特定の実行時要素とではなく,その実行単位と関連している。外部項目は,それを記述している
実行単位中の,任意の実行時要素からアクセスされてもよい。データ項目又はファイル結合子を別々に記
述している異なる実行時要素から外部項目を参照すると,常に同一項目への参照となる。実行単位中で一
つの外部項目を表すものは一つしかない。
データ項目又はファイル結合子が内部(internal)であるとき,この項目に関連する記憶域は,それを記
述している実行時モジュールにだけ関連している。内部項目は,8.6.3(自動項目,初期化項目及び静的項
目)による。
8.6.3
自動項目,初期化項目及び静的項目
内部項目のそれぞれは,永続性に関して,自動(automatic),初期化(initial),静的(static)の3属性の
いずれか一つをもつ。自動項目,初期化項目及び静的項目の意味付けは,実行単位の実行中での,それら
の項目の永続性とそれらの内容の永続性に関係している。
データ項目,ファイル結合子及び画面項目の属性には,初期(initial)状態,及び直前使用(last-used)
状態の2種類の状態がある。データ項目の初期状態は,データ記述項のVALUE句の有無に依存するほか,
データ項目が記述された節及びデータ項目の記述それ自体にも依存する。ファイル結合子の初期状態は,
入力・出力・入出力両用・拡張のいずれでもない。画面項目属性の初期状態は,その画面項目の記述に依
存する。
直前使用状態(last-used state)とは,データ項目,ファイル結合子又は画面項目属性の内容が,直前に
変更された時点のままであることを意味する。
局所記憶節中で定義されたデータ項目は,自動項目である。これらは,実行時要素が活性化されるたび
に記憶域が割り付けられ初期状態に設定される。実行時要素の活性化で生じる個体(instance)は,それぞ
れが自分専用の自動項目の複製をもち,実行時要素のその個体が活性状態の間中,その複製は存続する。
初期化プログラムのファイル節,作業場所節又は通信節中で定義されたデータ項目及びファイル結合子
は,初期化項目である。また,初期化プログラム中の画面項目属性も初期化項目と扱われる。これらは,
初期化プログラムが活性化されるたびに,初期状態に設定される。プログラムが活性状態の間中,初期化
項目は存続する。初期化プログラムの活性化のたびに自分専用の初期化項目の複製が生じるのか否かは,
規定されない。
初期化プログラムでないソース要素のファイル節,作業場所節又は通信節中で定義されたデータ項目及
びファイル結合子は,静的項目である。また,初期化プログラムでないソース要素中の画面項目属性も,
静的項目と扱われる。これらは,実行時要素又はオブジェクトが初期状態になるたびに,初期状態に設定
される[14.5.2.1.2.1(初期状態)及び14.5.2.2(オブジェクトデータの初期状態)参照]。これらは,遅く
とも初期化処理の直前には割り付けられ,次に示すいずれかが最初に起きるまで存続する。
− 実行単位の終了
104
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
− 静的項目を直接又は間接に内包するプログラムに対してのCANCEL文の実行
− オブジェクトデータの場合はオブジェクトの生存期間の終了
オブジェクトデータでない静的項目に対しては,実行単位中に唯一の実体が存在する。
オブジェクトデータである静的項目に対しては,
− あるクラスのファクトリオブジェクト中には,そのクラスのファクトリ定義によって記述又は継承さ
れる静的項目の実体が,それぞれ一つずつ存在する。
− あるクラスの各インスタンスオブジェクト中には,そのクラスのインスタンス定義によって記述又は
継承される静的項目の実体が,それぞれ一つずつ存在する。
これ以上の詳細は,9.3.1(オブジェクト及びクラス),9.3.9(クラス継承),9.3.14(オブジェクトの生存
期間)による。
連絡節中で記述されたデータ項目は,活性化される側のソース要素中の仮パラメタ又は返却項目として
指定された場合,永続性に関して,活性化する側のソース要素中での対応する引数又は対応する返却項目
と同じ属性をもつ。これらは,実行時要素が活性化されたときに直前使用状態であって,引数が存続して
その定義を内包するソース要素が活性状態である間中,存続する。
表の指標は,関連する表が静的であるとき,静的項目として扱い,関連する表が自動であるとき,自動
項目として扱う。
8.6.4
基底付き記述項及び基底付きデータ項目
基底付き記述項(based entry)とは,作業場所節,局所記憶節又は連絡節中のデータ記述項のうちBASED
句を用いて記述したものである。基底付き記述項は最初は実データ項目との関連付けがない。基底付き記
述項を実データに連結する関連付けが確立するのは,その記述項の暗黙のデータアドレスポインタに,既
存データ項目のアドレスが代入された時点又はALLOCATE文で獲得された記憶域のアドレスが代入され
た時点である。この関連付けが,基底付きデータ項目(based data item)を確立する。この関連付けは暗黙
のデータアドレスポインタで維持されるが,そのポインタを参照するのにはADDRESS OF データ名とい
う形式の一意名を用いればよく,ここでいうデータ名とはその基底付き記述項の名前である。
この関連付けは,打ち切られることがある。原因としては,実データが存在しなくなる場合[8.6.3(自
動項目,初期化項目及び静的項目)及び14.8.3(ALLOCATE文)参照]と,暗黙のデータアドレスポイン
タが実データを参照しなくなる場合とがある。
この関連付けが終わるのは,次の場合である。
− 暗黙のデータアドレスポインタが今までと異なる値に設定された場合。
− 基底付き記述項の定義箇所が作業場所節中又は局所記憶節中の場合,その節で定義されたデータ項目
の生存期間の終わり。
− 基底付き記述項の定義箇所が連絡節中にある場合,実行時要素の実行の終わり。
8.6.5
共通属性,初期化属性及び再帰属性
プログラムを記述する場合,その初期状態に影響を及ぼす属性又は呼び出され方を規定する属性をもた
せることができる。
共通プログラムは,別のプログラムに直接含まれているが,その“別のプログラム”に直接又は間接に
含まれている全てのプログラムから,呼び出してもよいプログラムである[8.4.5.2(プログラム名の有効
範囲)参照]。共通属性は,プログラムの見出し部にCOMMON句を指定することによって得られる。
COMMON句を指定しない場合に,別のプログラムに含まれる非再帰プログラムを呼び出してもよいのは,
それを直接に含んでいるプログラムだけである。COMMON句は,あるプログラム中に含まれる全てのプ
105
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ログラムから使用できる副プログラムを書くための手段を提供する。
初期化プログラムは,呼び出された時点でプログラムの状態が初期化されるプログラムである。初期化
プログラムでは初期化処理中に,プログラムの内部データが初期化される[14.5.2(関数・メソッド・オ
ブジェクト・プログラムの状態)参照]。初期化属性は,プログラムの見出し部にINITIAL句を指定する
ことによって得られる。
再帰プログラムは,自分自身を直接又は間接に呼び出してもよい。プログラムの内部データは初期化さ
れる[14.5.2(関数・メソッド・オブジェクト・プログラムの状態)参照]。再帰属性は,プログラムの見
出し部にRECURSIVE句を指定することによって得られる。
関数及びメソッドは常に再帰的である。これらのデータは,再帰プログラムと同じ方法で初期化される。
プログラムの見出し部にINITIAL句もRECURSIVE句も指定しないとき,プログラムのデータは,その
プログラムが最初に初期化された時点以外では,全て直前使用状態になる[14.5.2(関数・メソッド・オ
ブジェクト・プログラムの状態)参照]。プログラムは,RECURSIVEの指定がない限り,それが活性状態
である間に再帰的に活性化されることはできない。
8.6.6
データ項目の共用
実行単位中の二つの実行時要素では,次の環境において共通なデータを参照してもよい。
1) 外部データレコードのデータの内容は,そのレコードを記述している実行時要素であれば,どの実行
時要素から参照されてもよい。
2) プログラムが別のプログラム中に含まれているとき,外側のプログラム中又はそれを直接又は間接に
含むプログラム中で宣言された,大域属性をもつデータを,両方のプログラムから参照してもよい。
3) 活性化する側の実行時要素から活性化される側の実行時要素へ,引数の値が参照渡し(passed by
reference)される機構によって,共通なデータ項目が確立される。活性化される側の要素と活性化す
る側の要素とが,その共通データ項目を参照するために,異なる名前を用いていてもよい。
8.7
演算子
8.7.1
算術演算子
算術式中で用いてもよい算術演算子(arithmetic operator)は,5種類の二項演算子(binary operator)及
び2種類の単項演算子(unary operator)とする。これらは特定のCOBOL文字によって表され,その前後
には空白を書かなければならない。ただし例外として,左括弧と単項演算子との間又は単項演算子と左括
弧との間には空白がなくてもよい。算術演算子を次に示す。
二項演算子
意味
+
加算
‒
減算
*
乗算
/
除算
**
べき乗
単項演算子
意味
+
数字定数の +1を乗じることと同じ
‒
数字定数の ‒1を乗じることと同じ
8.7.2
ブール演算子
ブール演算子(boolean operator)は,単項演算子又は二項演算子によって,それぞれ一つ又は二つの作
用対象に作用するブール演算の種類を指定する。
106
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
二項演算子
意味
B-AND
AND演算(ブール積)
B-OR
OR演算(ブール和)
B-XOR
排他的OR演算(ブール排他的和)
単項演算子
意味
B-NOT
否定演算
8.7.3
連結演算子
連結演算子(concatenation operator)は,COBOL文字の "&" とする。この前後には分離符の空白を書か
なければならない。
8.7.4
呼出し演算子
呼出し演算子(invocation operator)は,2個連続したCOBOL文字の "::" とする。この前後には分離符
の空白を書かなければならない。呼出し演算子の使用方法は,8.4.2.4(文内メソッド呼出し)で規定する。
8.7.5
比較演算子
比較演算子(relation operator)は,比較条件中で行われる比較の種類を示す。
8.7.5.1
一般形式
書き方1(単純比較演算子)
IS [NOT] GREATER THAN
IS [NOT] >
IS [NOT] LESS THAN
IS [NOT] <
IS [NOT] EQUAL TO
IS [NOT] =
書き方2(拡張比較演算子)
IS GREATER THAN OR EQUAL TO
IS >=
IS LESS THAN OR EQUAL TO
IS <=
8.7.5.2
構文規則
1) NOTを指定すると,NOTを含めて一つの比較演算子となり,真理値を求めるための比較方法を定義す
る。
2) 書き方1は,単純比較演算子を指定する。
3) 書き方2は,拡張比較演算子を指定する。
4) > は,GREATER THANの略記である。
5) < は,LESS THANの略記である。
6) = は,EQUAL TOの略記である。
7) >= は,GREATER THAN OR EQUAL TOの略記である。
8) <= は,LESS THAN OR EQUAL TOの略記である。
8.7.6
論理演算子
論理演算子(logical operator)は,語AND,NOT及びORである。論理演算子の使用方法は,8.8.4.2(複
合条件)で規定する。
107
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
8.8
いろいろな式
8.8.1
算術式
算術式(arithmetic expression)は,次のいずれかとする。
− 数字データ項目を指す一意名
− 数字定数,表意定数のZERO(ZEROS,ZEROES)
− 数字基本データ項目の一意名,表意定数及び定数を算術演算子でつないだもの
− 二つの算術式を算術演算子でつないだもの
− 算術式を括弧で囲んだもの
算術式の前には単項演算子が付いてもよい。算術式中に書いてもよい一意名,数字定数,算術式及び括
弧の組合せを表4に示す。
算術式の評価の規則は,有効な算術モードが固有か標準かに依存する。
8.8.1.1
固有算術及び標準算術
次の規則は,有効な算術モードがいずれであるかに関係なく適用される。
1) 算術式中で括弧を用いて,算術演算の順序を指定してもよい。括弧の中の演算が,その括弧で囲まれ
た式を対象とする演算よりも先に実行され,その結果は以降の演算において単一の作用対象とみなさ
れる。括弧が入れ子で指定されているときは,最も内側の括弧の中の算術式を先に評価し,順次外側
を評価する。
2) 同じ入れ子の水準に複数個の作用対象がある場合,実行の順序は次に示す順位のとおりとする。
1番目:単項演算子 +及び-
2番目:べき乗 **
3番目:乗算 * 及び除算 /
4番目:加算 + 及び減算 -
3) 括弧による実行順序の指定なしに同じ順位の演算が連続している場合,これらの演算は左から右への
順序で実行される。
注記 括弧を使用する理由は,同じ順位の演算が連続している場合の論理的な曖昧さを排除するた
め,通常の実行の順序から逸脱する必要がある場合に式の中で通常の実行の順位を修正する
ため,又は通常の順序を強調して明白にするためである。
4) 算術式中に書いてもよい一意名,定数,演算子及び括弧の組合せを,表4(算術式中の記号の組合せ)
に要約して示す。
表4−算術式中の記号の組合せ
後続記号
先行記号
一意名又は定数
+ ‒ * / **
単項の + ‒
(
)
一意名又は定数
−
○
−
−
○
+ ‒ * / **
○
−
○
○
−
単項の + ‒
○
−
−
○
−
(
○
−
○
○
−
)
−
○
−
−
○
○は,記号の組合せが指定できることを表す。
−は,その組合せが誤っていることを表す。
108
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
5) 算術式は,"(","+","-",一意名,定数のいずれかで始まり,")",一意名,定数のいずれかで終わ
る。ある算術式中の左括弧と右括弧とは1対1に対応し,左括弧は対応する右括弧より左になければ
ならない。算術式中の最初の演算子が単項演算子で,その算術式が一意名又は他の算術式の直後に続
くとき,その単項演算子の直前は左括弧でなければならない。
注記 例えば,"1"と"+ 2"を用いて2次元の表Aに対する添字とする場合,算術式"+ 2"は括弧で
囲んで,A (1 (+ 2)) とする必要がある。
6) 算術式中のべき乗の評価には,次の規則を適用する。
a) べき乗の底の値がゼロであるとき,その指数はゼロより大きい値でなければならない。さもなけれ
ば,EC-SIZE-EXPONENTIATION例外状態になり,けたあふれ条件が発生する。
b) べき乗の評価の結果,正と負との両方の実数が生じたとき,結果として返される値はその正の数の
ほうとする。
c) べき乗の底がゼロより小さい値のとき,指数の評価の結果は整数でなければならない。さもなけれ
ば,EC-SIZE-EXPONENTIATION例外状態になり,けたあふれ条件が発生する。
7) 算術式によって利用者は,作用対象及び受取り側データ項目の合成に関する制限を受けずに算術演算
を組み合わせることができる。
8.8.1.2
固有算術
固有算術(native arithmetic)は,算術式,算術文,SUM句並びに全ての整数関数及び数字関数を評価す
る場合の実装者定義の方法である。固有算術が有効になるのは,選択肢段落に ARITHMETIC IS NATIVE
句の指定があるか又はARITHMETIC句の指定がない場合である。ARITHMETIC IS STANDARD句の指定
がある場合でも,特定のデータ項目を使用する演算では,固有算術が有効になる[8.8.1.3(標準算術)参
照]。固有算術に対して用いられる技法は,実装者定義とする。
8.8.1.3
標準算術
標準算術(standard arithmetic)は,算術式,算術文,SUM句並びに特定の整数関数及び数字関数を評価
する場合の標準的な方法である[15.3.1(数字関数及び整数関数)参照]。標準算術の規則は,8.8.1.3.1〜
8.8.1.3.8による。標準算術が有効になるのは,選択肢段落中にARITHMETIC IS STANDARD句がある場合
とする。ただし,算術式,算術文,SUM句又は特定の整数関数及び数字関数の作用対象のいずれかがデー
タ項目で,その記述に,用途が2進文字(binary-char),2進短精度(binary-short),2進長精度(binary-long),
2進倍精度(binary-double),浮動短精度(float-short),浮動長精度(float-long)又は浮動拡張精度
(float-extended)のいずれかの指定がある場合,用いられる算術演算の技法は,固有算術に対して規定さ
れた技法とする。
ソース単位に対して標準算術が明示的又は暗黙に指定され,FLAG-NATIVE-ARITHMETIC指示が有効で
ある場合,固有算術を使用するあらゆる算術演算に対してフラグが立つ。
8.8.1.3.1
標準中間データ項目
標準中間データ項目(standard intermediate data item)の字類及び項類は,数字とする。これは特異な値
のゼロであるか,又は抽象的な符号付き正規化10進浮動小数点形式の一時データ項目である。その内部表
現形式は,実装者定義とする。実装者は,標準中間データ項目の規則に結果が合致する限り,どのような
処理方法を用いてもよい。
注記 標準中間データ項目の内部表現形式は変更しても差し支えないので,実装者は状況に応じて最
も効果的な実装方法を選択できる。
標準算術が有効であるとき,次の規則を適用する。
109
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) 算術式中の作用対象に標準中間データ項目に格納済みではないものがあれば,全て標準中間データ項
目に変換される。
注記 この規則は,算術式中にある作用対象が唯一で演算子がない場合なども包含している。例え
ば,IF (A = 1) 又は COMPUTE A = Bのような場合である。
2) 値が大きすぎて又は小さすぎて標準中間データ項目に納まらないとき,けたあふれ条件が発生して,
EC-SIZE-OVERFLOW例外状態又はEC-SIZE-UNDERFLOW例外状態になる[14.6.4(SIZE ERROR指
定及びけたあふれ条件)参照]。
注記 下位けたあふれは,丸められてゼロになるのではなくSIZE ERRORとして扱われる。
8.8.1.3.1.1
精度及び許容値の大きさ
標準中間データ項目の取り得る値は,特異な値のゼロであるか,又は大きさ(magnitude)が
10‒999 (1.000 000 000 000 000 000 000 000 000 000 0 E‒999)
から
101000 ‒ 10968 (9.999 999 999 999 999 999 999 999 999 999 9 E+999)
までの,両端を含めた範囲内にある,精度が10進32けたの値とする。中間標準データ項目に切捨て又
は四捨五入が行われ32けた未満になるのは,明示的に指定された場合だけである。
8.8.1.3.1.2
正規化値
標準中間データ項目の値がゼロでない場合,その仮数部は,小数点の左にゼロ以外の数字を1けただけ
もつ。
8.8.1.3.1.3
四捨五入の規則
標準中間データ項目は,次の状況では31けたへと四捨五入されなければならず,その四捨五入は
ROUNDED指定に対する記述のとおりに行われる。
1) 標準中間データ項目を比較する場合。ただし,一つの組込み関数の引数並びの間で比較を行う場合は
例外で,その場合は四捨五入されない32けた全てが用いられる。
注記 例えば,組込み関数のMAX,MIN,RANGE,MIDRANGE,ORD-MAX,ORD-MINなどが,
例外の場合に該当する。
2) 標準中間データ項目が関数の引数であり,その関数の結果に対する等価な算術式の規定がない場合。
ただし,関数の規則中に別な指定が特にある場合又は1) の状況では,この限りでない。
3) 標準中間データ項目を,ROUNDED指定のない結果の一意名へ転記する場合。標準中間データ項目の
四捨五入は,けたあふれ条件を引き起こすかEC-SIZE-OVERFLOW例外状態にすることもある。
注記 これらの規則は,必要以上に四捨五入が起こることを排除するほか,入れ子になった算術式
の評価では最後に一度だけ四捨五入が起こることを保証する。
標準中間データ項目がROUNDED指定のある結果一意名へと転記される場合,四捨五入されるけた数は
14.6.3(ROUNDED指定)による。
8.8.1.3.2
加算
加算に対しての作用対象及び演算子は,作用対象1 + 作用対象2 とする。その結果は,厳密な和を32
けたに四捨五入し,正規化し,標準中間データ項目に格納したものになる。
8.8.1.3.3
減算
減算に対しての作用対象及び演算子は,作用対象1 ‒ 作用対象2 とする。その結果は,次の算術式の
評価と等価とする。
(作用対象1 + ( ‒ 作用対象2))
110
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
8.8.1.3.4
乗算
乗算に対しての作用対象及び演算子は,作用対象1 * 作用対象2 とする。その結果は,厳密な積を32
けたに四捨五入し,正規化し,標準中間データ項目に格納したものになる。
8.8.1.3.5
除算
除算に対しての作用対象及び演算子は,作用対象1 / 作用対象2 とする。その結果は,厳密な商を32
けたに四捨五入し,正規化し,標準中間データ項目に格納したものになる。
8.8.1.3.6
べき乗
べき乗に対しての作用対象及び演算子は,作用対象1 ** 作用対象2 とする。
1) 作用対象2がゼロで作用対象1がゼロ以外である場合,その結果は,次の算術式の評価と等価になる。
(1)
2) 作用対象2がゼロより大きい場合,その結果は次のとおり決まる。
a) 作用対象2が整数で,条件 (作用対象2 = 1) が真の場合,等価な算術式は,次のとおりとする。
(作用対象1)
b) 作用対象2が整数で,条件 (作用対象2 = 2) が真の場合,等価な算術式は,次のとおりとする。
(作用対象1 * 作用対象1)
c) 作用対象2が整数で,条件 (作用対象2 = 3) が真の場合,等価な算術式は,次のとおりとする。
((作用対象1 * 作用対象1) * 作用対象1)
d) 作用対象2が整数で,条件 (作用対象2 = 4) が真の場合,等価な算術式は,次のとおりとする。
((作用対象1 * 作用対象1) * (作用対象1 * 作用対象1))
e) さもなければ,実装者定義の値を正規化して標準中間データ項目に格納したものを結果の値とする。
3) 作用対象2がゼロより小さい場合,その結果は次の算術式の評価と等価とする。
(1 / (作用対象1 ** FUNCTION ABS(作用対象2)))
4) 作用対象1と作用対象2との両方がゼロに等しい場合,EC-SIZE-EXPONENTIATION例外状態になる。
8.8.1.3.7
単項の+
単項演算子 + に対しての作用対象及び演算子は,+ 作用対象 とする。その結果は,次の算術式の評価
と等価とする。
(作用対象)
8.8.1.3.8
単項の−
単項演算子 ‒ に対しての作用対象及び演算子は,‒ 作用対象 とする。その結果は,次の算術式の評価
と等価とする。
(‒1 * 作用対象)
8.8.2
ブール式
ブール式(boolean expression)は,次のいずれかとする。
− ブールデータ項目を指す一意名
− ブール定数,表意定数のZERO(ZEROS,ZEROES),表意定数のALLブール定数
− ブール式の前に単項ブール演算子が付いたもの
− 二つのブール式を二項ブール演算子でつないだもの
− ブール式を括弧で囲んだもの
ブール式の書き方及び評価の規則は,次による。
1) ブール式は,次のいずれかで始まる。
111
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
− 記号“(”
− ブールデータ項目を指す一意名
− ブール定数
− 単項演算子のB-NOT
2) ブール式は,次のいずれかで終わる。
− 記号“)”
− ブールデータ項目を指す一意名
− ブール定数
3) 左と右の括弧は1対1に対応し,かつ,左括弧は対応する右括弧より左になければならない。
4) 二項ブール演算の二つの作用対象が両方とも表意定数のALL 定数であってはならない。
5) ブール式中に書いてもよい作用対象,演算子及び括弧の組合せを,表5(ブール式中の記号の組合せ)
に示す。
表5−ブール式中の記号の組合せ
後続記号
先行記号
一意名又は定数
B-AND,B-OR,B-XOR
B-NOT
(
)
一意名又は定数
−
○
−
−
○
B-AND,B-OR,B-XOR
○
−
○
○
−
B-NOT
○
−
−
○
−
(
○
−
○
○
−
)
−
○
−
−
○
○は,指定してもよい組合せを表す。
−は,無効な組合せを表す。
6) ブール式の評価は,次のとおりに進む。
a) 括弧の中のブール式が,その括弧で囲まれた式を演算対象とするブール式よりも先に評価される。
括弧が入れ子で指定されているときは,最も内側の括弧の中のブール式を先に評価し,順次外側を
評価する。
b) 同じ入れ子の水準に複数個のブール式がある場合,演算の優先順位は次に示すとおりとする。
1番目:論理否定(B-NOT)
2番目:論理積(B-AND)
3番目:排他的論理和(B-XOR)
4番目:包括的論理和(B-OR)
c) 括弧による評価順序の指定がない場合,同じ順位の演算の評価は左から右へ進む。
注記 括弧を使用する理由は,同じ順位の演算が連続している場合の論理を明確化するため,又
は通常の順序から逸脱する必要がある場合に優先順位を修正するためである。
7) 二項ブール演算の実行は,作用対象の用途には無関係とする。二つの作用対象の長さが等しい場合,
指定された論理積,包括的論理和,又は排他的論理和の演算は,最左端ブール位置から始まり最右端
ブール位置までの,対応し合うブール位置の中のブール値を演算しながら進む。作用対象の長さが等
しくない場合は,作用対象の長さを等しくするために十分な個数のブール値のゼロによって短いほう
の作用対象の右側を拡張したのと同様にして,演算が進む。
112
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
注記 長さの確定は,単項演算も含めたブール演算の各々に対して,演算評価の順に行われる。
8) 各々のブール演算を評価した結果はブール値であって,その長さは,その演算中で参照される大きい
ほうの項目のブール位置の個数と同じになる。
8.8.3
連結式
連結式(concatenation expression)は,二つの作用対象を連結演算子でつないだものからなる。
8.8.3.1
一般形式
定数1
連結式1 & 定数2
8.8.3.2
構文規則
1) 両方の作用対象の字類は同じで,英数字,ブール又は各国文字のいずれかでなければならない。ただ
し,片方又は両方の作用対象に表意定数を指定してもよい。定数1と定数2のいずれも,語ALLで始
まる表意定数であってはならない。
2) 字類が英数字の作用対象では,連結した結果の値の長さが英数字160文字位置を超えてはならない。
3) 字類がブールの作用対象では,連結した結果の値の長さがブール160文字位置を超えてはならない。
4) 字類が各国文字の作用対象では,連結した結果の値の長さが各国文字160文字位置を超えてはならな
い。
8.8.3.3
一般規則
1) 連結演算の結果の連結式の字類は,次による。
a) 一方の作用対象が表意定数である場合,この連結演算式を構成するもう一方の作用対象である定数
又は連結式の字類。
b) 両方の作用対象が表意定数である場合,字類は英数字。
c) さもなければ,両作用対象と同じ字類。
2) 連結式の値は,この連結式を構成する定数,表意定数及び連結式の値の連結したものになる。
3) 連結式は,字類及び値が同じである定数と等価であり,その字類の定数を用いてよい箇所であればど
こで用いてもよい。
8.8.4
条件式
条件式(condition expression)は,条件を指すものであり,その条件を検査してその真理値によって複数
の処理の選択肢のうち一つを選択することができる。条件式のもつ真理値(truth value)は,真又は偽を表
す。条件式に関連する条件には,単純条件と複合条件の2種類がある。これらはいずれも,幾つかの対を
なす左括弧と右括弧で囲んでもよい。括弧を付けても条件の種類は変わらない。
8.8.4.1
単純条件
単純条件(simple condition)には,比較条件,ブール条件,字類条件,条件名条件,スイッチ状態条件,
正負条件及び引数省略条件がある。単純条件は“真(true)”又は“偽(false)”のいずれかの真理値をとる。
単純条件に括弧を付けてもその真理値は変わらない。
8.8.4.1.1
比較条件
比較条件(relation condition)は,二つの作用対象の比較を示す。比較の種類は,二つの作用対象を連結
する比較演算子で表される。比較条件は,二つの作用対象の間の比較が成立する場合に真理値が“真”と
なり,成立しない場合に真理値が“偽”となる。
字類がブールの作用対象に関する比較条件はブール比較条件,字類がポインタ又はオブジェクトの作用
対象に関する比較条件はポインタ又はオブジェクト参照の比較条件,それ以外は一般比較条件とする。
113
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
比較は,次の組合せに対して定義される。
1) 二つの作用対象の字類が数字である場合
2) 二つの作用対象の字類が英字である場合
3) 二つの作用対象の字類が英数字である場合
4) 二つの作用対象の字類がブールである場合
5) 二つの作用対象の字類が各国文字である場合
6) 二つの作用対象の一方が整数で,もう一方の字類が英数字又は各国文字である場合
7) 二つの作用対象の字類が異なり,それぞれ英数字,英字,各国文字のいずれかである場合
8) 指標又は指標データ項目に関する比較
9) 二つの作用対象の字類がオブジェクトである場合
10) 二つの作用対象の字類がポインタであり項類が同じである場合
11) 二つの強い型付けの作用対象の型が同じである場合
比較の処理上,英数字集団項目は基本英数字データ項目として扱う。字類が英字の作用対象は,字類が
英数字の作用対象として扱う。各国文字集団項目又はビット集団項目は,それぞれを基本各国文字データ
項目又は基本ビットデータ項目として扱う。
先行する作用対象を条件の左辺(subject)と呼び,後続する作用対象を条件の右辺(object)と呼ぶ。比
較条件中は,定数ではない作用対象を指す参照を少なくとも一つ含まなければならない。
8.8.4.1.1.1
一般形式
書き方1(一般比較)
一意名1
定数1
算術式1
指標名1
IS [NOT] GREATER THAN
IS [NOT] >
IS [NOT] LESS THAN
IS [NOT] <
IS [NOT] EQUAL TO
IS [NOT] =
IS GREATER THAN OR EQUAL TO
IS >=
IS LESS THAN OR EQUAL TO
IS <=
一意名2
定数2
算術式2
指標名2
書き方2(ブール比較)
ブール式1
IS [NOT] EQUAL TO
IS [NOT] =
ブール式2
書き方3(ポインタ又はオブジェクト参照)
一意名3
IS [NOT] EQUAL TO
IS [NOT] =
一意名4
8.8.4.1.1.2
構文規則
書き方1
1) 一意名1又は一意名2の一方が強い型付けの集団である場合,作用対象は両方とも同じ型でなければ
ならない。
2) 全ての一意名は,字類が英字,英数字,各国文字,数字のいずれかでなければならない,又は強い型
付けの集団項目でなければならない。
3) 全ての定数は,字類が英数字,各国文字,数字のいずれかでなければならない。
114
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4) 字類がブール,ポインタ,オブジェクトのいずれかである基本項目を含む強い型付けの集団項目の比
較は,等しいか否かだけとする。
書き方3
5) 一意名3及び一意名4は,字類がポインタ又はオブジェクトのデータ項目でなければならず,両方と
も項類が同じでなければならない。
8.8.4.1.1.3
数字作用対象どうしの比較
両方の作用対象の項類が数字である場合に,比較は代数的な値に基づいて行われるのであり,これらの
用途の記述には影響を受けない。定数又は算術式である作用対象の長さをけた数で表したものは,あまり
意味がない。ゼロは,符号の有無によらず,特異な値とみなされる。ゼロ値をもつ作用対象は,ゼロ値を
もつどの作用対象と比較しても,正符号付き,負符号付き又は符号なしに関係なく等しい。作用対象の一
方又は両方が固有算術の適用対象である場合,有効な算術モードには関係なく,固有算術の規則に従って
比較を行う。標準算術を用いるとき,用いられる標準中間データのけた数及び四捨五入が起きるか否かの
判定は,標準算術に対する8.8.1.3.1.3(四捨五入の規則)の規定による。
8.8.4.1.1.4
整数作用対象と字類が英数字又は各国文字の作用対象との比較
整数作用対象は,整数定数であるか,用途がDISPLAY又はNATIONALの整数データ項目でなければな
らない。他方の作用対象は,字類が英数字又は各国文字である定数又はデータ項目であってもよい。
整数は,MOVE文の規則に従って,その整数のけた数と長さが等しく字類及び用途が他方の比較対象と
等しい基本データ項目に転記したものとみなす。そして,他方の比較対象と等しい字類をもつ二つの作用
対象の比較の規則に従って比較を行う。
8.8.4.1.1.5
英数字作用対象と各国文字作用対象との比較
二つの作用対象のうち,一方の字類が英数字で他方の字類が各国文字であるとき,これらを比較しても
よい。英数字作用対象は,MOVE文の規則に従って,文字位置の個数で表した長さがその作用対象と等し
く字類が各国文字である基本データ項目に変換,転記したものとみなす。そして,字類が各国文字である
二つの作用対象の比較の規則に従って比較を行う。
8.8.4.1.1.6
英数字作用対象どうしの比較
字類が英数字である作用対象と比較してもよいのは,字類が英数字である作用対象,又は比較では字類
が英数字であるとみなす作用対象とする。この比較は,現在の英数字プログラム照合順序に基づいて行う。
作用対象の長さは,その作用対象中の英数字文字位置の個数とする。
2種類の比較,つまり標準の比較と現地特性に基づく比較とを定義する。現地特性に基づく比較が用い
られるのは,有効な英数字プログラム照合順序が現地特性に基づく場合であり,さもなければ標準の比較
が用いられる。
8.8.4.1.1.6.1 標準の比較
比較には,作用対象の長さが等しい場合と異なる場合の二通りが考えられる。
1) 作用対象の長さが等しい場合。対応し合う英数字文字位置にある文字を最左端から一組ずつ比較しな
がら,等しくない文字の組が現れるか,又は最右端に達するまで,比較を行う。対応し合う英数字文
字の組が全て等しいとき,これら二つの作用対象は等しい。長さがゼロである二つの作用対象は等し
い。
等しくない文字の組のうち最初に現れた組を比較して,英数字照合順序での上下関係を判定する。
英数字照合順序中で,より上位の文字をもつほうを,より大きい作用対象とする。
2) 作用対象の長さが異なる場合。作用対象の長さを等しくするのに十分な個数の英数字の空白によって
115
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
短いほうの作用対象の右側が拡張されたかのように,比較を行う。このとき前述の,作用対象の長さ
が等しい場合の規則を適用する。
8.8.4.1.1.6.2 現地特性に基づく比較
比較の処理上,末尾にある空白列は比較対象から切り捨てる。ただし,空白列だけからなる作用対象の
切捨ての結果は,単一の空白とする。
注記 現地特性に基づく比較は,必ずしも文字単位の比較とは限らない。現地特性に基づかない比較
に対するのと同様に,短いほうの作用対象に空白列で拡張を施すと,文化的に期待される結果
とは変わってしまう可能性がある。
現地特性に英数字のプログラム文字照合順序が明確に規定されていなければ,字類が英数字又は英字の
作用対象は,比較の処理上,各国文字の文字集合中の対応する表現へと対応付けされる。この英数字と各
国文字との間の対応付けは,実装者定義とする。
そして,現在有効現地特性のLC̲COLLATEカテゴリ中で定義された文字照合順序に関連するアルゴリ
ズムによって,比較を行う。これは,文化的条件を意識した比較になることがあり,必ずしも文字単位に
行われるとは限らない。比較条件が成立するか否かの決定は,現地特性の指定内容に基づく。長さがゼロ
である二つの作用対象は等しい。
現地特性に,作用対象の全ての文字に対する文字照合順序が定義されているわけではない場合,
EC-LOCALE-INCOMPATIBLE例外状態になる。
8.8.4.1.1.7
ブール作用対象どうしの比較
字類がブールの作用対象は,字類がブールの別な作用対象と比較してもよい。字類がブールである作用
対象の比較は,ブール値に基づいた比較とし,これらの用途の記述には影響を受けない。作用対象の長さ
とは,その作用対象中のブール位置の個数とする。比較には,作用対象の長さが等しい場合と異なる場合
の二通りが考えられる。
1) 作用対象の長さが等しい場合。対応し合うブール位置にあるブール値を最左端から一組ずつ比較しな
がら,等しくないブール値の組が現れるか,又は最右端に達するまで,比較を行う。対応し合うブー
ル値の組が全て等しいとき,これら二つの作用対象は等しい。長さがゼロである二つの作用対象は等
しい。
2) 作用対象の長さが異なる場合。作用対象の長さを等しくするのに十分な数のブールのゼロ値によって
短いほうの作用対象の右側が拡張されたかのように,比較を行う。このとき前述の,作用対象の長さ
が等しい場合の規則を適用する。
8.8.4.1.1.8
各国文字作用対象どうしの比較
字類が各国文字である作用対象は,字類が各国文字である別な作用対象と比較してもよい。この比較は,
現在の各国文字プログラム照合順序に基づいて行う。作用対象の長さは,作用対象中の各国文字位置の個
数とする。
2種類の比較,つまり標準の比較と現地特性に基づく比較とを定義する。現地特性に基づく比較が用い
られるのは,有効な各国文字プログラム照合順序が現地特性に基づく場合であり,さもなければ標準の比
較が用いられる。
注記 英数字の項目と各国文字の項目とを比較してもよい。英数字と各国文字の作用対象の比較の規
則では,英数字作用対象を各国文字に変換する。そして二つの各国文字項目どうしの比較の規
則に従って比較を行うと規定している。
116
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
8.8.4.1.1.8.1 標準の比較
比較には,作用対象の長さが等しい場合と異なる場合の二通りが考えられる。
1) 作用対象の長さが等しい場合。対応し合う各国文字位置にある文字を最左端から一組ずつ比較しなが
ら,等しくない文字の組が現れるか,又は最右端に達するまで,比較を行う。対応し合う各国文字の
組が全て等しいときは,これら二つの作用対象は等しい。長さがゼロである二つの作用対象は等しい。
等しくない文字の組のうち最初に現れた組を比較して,各国文字照合順序中での上下関係を判定す
る。各国文字照合順序中で,より上位の文字をもつほうを,より大きい作用対象とする。
2) 作用対象の長さが異なる場合。作用対象の長さを等しくするために十分な個数の各国文字の空白によ
って短いほうの作用対象の右側が拡張されたかのように,比較を行う。このとき前述の,作用対象の
長さが等しい場合の規則を適用する。
8.8.4.1.1.8.2 現地特性に基づく比較
比較の処理上,末尾にある空白列は比較対象から切り捨てる。ただし,空白列だけからなる作用対象の
切捨ての結果は,単一の空白とする。
注記 現地特性に基づく比較は,必ずしも文字単位の比較とは限らない。現地特性に基づかない比較
に対するのと同様に,短いほうの作用対象に空白列で拡張を施すと,文化的に期待される結果
とは変わってしまう可能性がある。
そして,現在有効現地特性のLC̲COLLATEカテゴリ中で定義された文字照合順序に関連するアルゴリ
ズムによって,比較を行う。これは,文化的条件を意識した比較になることがあり,必ずしも文字単位に
行われるとは限らない。比較条件が成立するか否かの決定は,現地特性の指定内容に基づく。長さがゼロ
である二つの作用対象は等しい。
現地特性に,作用対象の全ての文字に対する文字照合順序が定義されているわけではない場合,
EC-LOCALE-INCOMPATIBLE例外状態になる。
8.8.4.1.1.9
強い型付けの集団項目どうしの比較
強い型付けの集団項目二つを比較する場合,第一作用対象に属する基本項目はそれぞれ,第二作用対象
に属する対応する基本項目と比較される。このとき基本項目比較の規則に従う。比較を行う順序は,強い
型付けの集団項目中に基本項目を指定した順序とする。
この比較を,ある基本項目の組が等しくないか又は基本項目の最後の組を比較し終えるまで反復する。
対応する基本項目よりも大きい基本項目を含んでいるほうの作用対象を,より大きい作用対象とする。
8.8.4.1.1.10 指標名又は指標データ項目に関する比較
次に示す組合せに限って比較検査してもよい。
1) 二つの指標名の間。その結果は,対応する出現番号どうしの比較と同等とする。
2) 指標名と,数字データ項目又は数字定数との間。指標名の値に対応する出現番号が,データ項目又は
定数と比較される。
3) 指標データ項目と,指標名又は別な指標データ項目との間。実際の値が変換なしに比較される。
8.8.4.1.1.11 字類がオブジェクトの作用対象どうしの比較
字類がオブジェクトの作用対象は,字類がオブジェクトである別の作用対象と比較してもよい。
注記 あまり意味はないが,既定義オブジェクト参照どうしで比較してもよい。
“一意名3 = 一意名4”という関係が真になるのは,一意名3の指すオブジェクトと,一意名4の指す
オブジェクトとが同じ場合とする。さもなければ,この関係は偽とする。
117
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
8.8.4.1.1.12 ポインタ作用対象どうしの比較
二つの作用対象は,同一のアドレスを指していれば等しい。
8.8.4.1.2
ブール条件
ブール条件(boolean condition)は,ブール式が真か偽かを判定する。
8.8.4.1.2.1
一般形式
[NOT] ブール式1
8.8.4.1.2.2
構文規則
1) ブール式1は,長さが1のブール項目だけでなければならない。
8.8.4.1.2.3
一般規則
1) ブール式1の結果が1であるとき,式の評価は真になり,0であるとき,偽になる。
2) NOTブール式1の評価は,ブール式1の真理値の逆になる。
8.8.4.1.3
字類条件
字類条件(class condition)は,作用対象が数字,英字,小文字,大文字,ブールであるか否か,又は環
境部の特殊名段落のALPHABET句若しくはCLASS句で指定された文字集合に属する文字だけを含むか否
かを判定する。
8.8.4.1.3.1
一般形式
一意名1 IS [NOT]
NUMERIC
ALPHABETIC
ALPHABETIC-LOWER
ALPHABETIC-UPPER
BOOLEAN
符号系名1
字類名1
8.8.4.1.3.2
構文規則
1) 一意名1は,字類が指標,オブジェクト又はポインタのデータ項目であってはならない。
2) NUMERIC指定があるとき,一意名1はデータ項目で,用途がDISPLAY又はNATIONALであるか,
又は項類が数字でなければならない。
3) NUMERIC指定がないとき,一意名1はデータ項目で,用途がDISPLAY又はNATIONALでなければ
ならない。一意名1が関数一意名のとき,英数字関数又は各国文字関数でなければならない。
4) BOOLEANを,一意名1のデータ項目の項類が数字又は数字編集であるとき,指定してはならない。
5) ALPHABETIC,ALPHABETIC-LOWER,ALPHABETIC-UPPER,又は字類名1を,一意名1のデータ
項目の項類がブール,数字又は数字編集であるとき,指定してはならない。
6) 符号系名1が,現地特性に関連する符号系であってはならない。
8.8.4.1.3.3
一般規則
1) 一意名1のデータ項目が長さゼロの項目である場合,語NOTがない字類条件の真理値は偽とする。
2) 一意名1のデータ項目が長さゼロの項目でない場合,語NOTがない字類条件の真理値は,次のとお
り判定される。
a) NUMERICを指定した場合,
1. 一意名1のデータ項目の項類が数字である場合,
a. 一意名1のデータ項目の用途が暗黙又は明示的にDISPLAY又はNATIONALであるとき,この
条件が真になるのは,演算符号の有無が一意名1のデータ項目の内容とデータ記述とで合致し,
118
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
演算符号を除いた内容が全て文字0,1,2,3,…,9から構成されているときとする。正しい
演算符号が何であるかは,13.16.50(SIGN句)で規定する。
b. 一意名1のデータ項目の用途がDISPLAYでもNATIONALでもないとき,この条件が真になる
のは,一意名1のデータ項目の内容が全てその用途に対する正しい表現で構成され,PICTURE
句(もしあれば)から想定される値の範囲内にその数値が収まるときとする。
2. 一意名1のデータ項目の項類が数字でない場合,この条件が真になるのは,一意名1の内容が全
て文字0,1,2,3,…,9から構成されているときとする。
b) ALPHABETICを指定した場合,この条件は次の状況で真になる。
1. ある現地特性が字類分けに対して有効であるとき,この条件が真になるのは,一意名1の指すデ
ータ項目の内容が,現在有効現地特性のカテゴリLC̲CTYPE中で英字だと識別される文字だけか
ら構成されているときとする。
2. どの現地特性も字類分けに対して有効でないとき,この条件が真になるのは,一意名1の指すデ
ータ項目の内容が,大文字のA,B,C,…,Zと空白との組合せ,小文字のa,b,c,…,zと空
白との組合せ,又は大文字と小文字と空白との組合せだけから構成されているときとする。
c) ALPHABETIC‒LOWERを指定した場合,この条件は次の状況で真になる。
1. ある現地特性が字類分けに対して有効であるとき,この条件が真になるのは,一意名1の指すデ
ータ項目の内容が,現在有効現地特性のカテゴリLC̲CTYPEで小文字だと識別される文字だけか
ら構成されているときとする。
2. どの現地特性も字類分けに対して有効でないとき,この条件が真になるのは,一意名1の指すデ
ータ項目の内容が,小文字のa,b,c,…,zと空白との組合せだけから構成されているときとす
る。
d) ALPHABETIC‒UPPERを指定した場合,この条件は次の状況で真になる。
1. ある現地特性が字類分けに対して有効であるとき,この条件が真になるのは,一意名1の指すデ
ータ項目の内容が,現在有効現地特性のカテゴリLC̲CTYPEで大文字だと識別される文字だけか
ら構成されているときである。
2. どの現地特性も字類分けに対して有効でないとき,この条件が真になるのは,一意名1の指すデ
ータ項目の内容が,大文字のA,B,C,…,Zと空白との組合せだけから構成されているときと
する。
e) BOOLEANを指定した場合,この条件が真になるのは,一意名1の指すデータ項目の内容が全てブ
ール値の"0"と"1"から構成されているときとする。
f)
符号系名1を指定した場合,この条件が真になるのは,一意名1の指すデータ項目の内容が全て特
殊名段落中の符号系名1で識別される符号化文字集合の文字から構成されているときとする。
g) 字類名1を指定した場合,この条件が真になるのは,一意名1の指すデータ項目の内容が全て特殊
名段落中の字類名1の定義に列挙した文字から構成されているときとする。
3) 語NOTを指定した場合,真理値は逆転する。
8.8.4.1.4
条件名条件(条件変数)
条件名条件(condition-name condition)では,条件変数が検査され,条件名1に関連付けられた値のいず
れかと条件変数の値が等しいか否かが判定される。条件件数は,8.4.3(条件名)による。
8.8.4.1.4.1
一般形式
条件名1
119
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
8.8.4.1.4.2
規則
1) 条件名1が値の範囲又は範囲の組に関連付けられているとき,条件変数の検査は,両端も含めたこれ
らの範囲内にあるか否かが判定される。
2) 条件変数を条件名の値と比較する規則は,比較条件に対して規定された規則と同じとする。
3) 検査の結果が真になるのは,条件名1に対応する値のいずれかが,関連する条件変数と等しいときと
する。
8.8.4.1.5
スイッチ状態条件
スイッチ状態条件は,実装者定義の外部スイッチのオン状態又はオフ状態を判定する。この条件に関連
するスイッチのオン/オフ状態は,環境部の特殊名段落で命名しておかなければならない。
8.8.4.1.5.1
一般形式
条件名1
8.8.4.1.5.2
規則
検査の結果が真になるのは,スイッチが条件名1に対応する位置に設定されているときとする。
8.8.4.1.6
正負条件
正負条件は,算術式の代数値がゼロより大きいか小さいか又は等しいかを判定する。
8.8.4.1.6.1
一般形式
算術式1 IS [NOT]
POSITIVE
NEGATIVE
ZERO
8.8.4.1.6.2
規則
1) NOTを使うとき,NOT及び次のキーワードで一つの正負条件となり,真理値を求めるために実行さ
れる代数的な検査を規定する。作用対象は,値がゼロより大のとき正(positive)とし,値がゼロより
小のとき負(negative)とし,値がゼロに等しいときゼロ(zero)とする。
注記 NOT ZEROは,ゼロでない(正又は負の)値に対する真理値検査である。
8.8.4.1.7
引数省略条件
引数省略条件(omitted-argument condition)は,関数・メソッド・プログラムへの引数が提供されたか否
かを判定する。
8.8.4.1.7.1
一般形式
データ名1 IS [NOT] OMITTED
8.8.4.1.7.2
構文規則
1) データ名1は仮パラメタで,この条件の指定されたソース要素中で定義されなければならない。
8.8.4.1.7.3
一般規則
1) OMITTED検査の結果が真になるのは,次のときである。
a) このプログラム,関数又はメソッドを活性化した文において,データ名1に対応する引数として,
一意名でも定数でもなくOMITTED指定を書いたとき。
b) データ名1に対応する引数は,引数並びの中の後のほうにある引数であり,活性化する側の文では
省略されていたとき。
c) データ名1に対応する引数それ自体が,活性化する側の文においても引数省略条件を成立させるで
あろう仮パラメタだったとき。
2) NOTを使うとき,NOT及び次のキーワードOMITTEDで一つの条件となり,真理値を求めるために
120
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
実行される。
8.8.4.2
複合条件
複合条件(complex condition)は,複数の単純条件及び/又は複合条件を論理連結語(論理演算子AND
又はOR)で結合して形成するか,又はこれらの条件に論理否定(論理演算子NOT)を付けて否定して形
成する。複合条件の真理値は,括弧の有無には関係なく,構成成分である幾つかの条件に前述の論理演算
子を相互作用させた結果できあがる真理値とする。
論理演算子及びその意味は,次による。
論理演算子
意味
AND
論理積。その真理値が真になるのは左右の条件の両方が真のとき,
偽になるのは左右の条件の一方又は両方が偽のときとする。
OR
論理和。その真理値が真になるのは左右の条件の一方又は両方が真
のとき,偽になるのは左右の条件の両方が偽のときとする。
NOT
論理否定。その真理値が真になるのはNOTの後の条件が偽のとき,
偽になるのはその条件が真のときとする。
8.8.4.2.1
否定条件
否定条件(negated condition)は,条件の真理値を逆転させる論理演算子NOTを用いて条件を否定する。
否定条件に括弧に入れても,その真理値は変わらない。
注記 否定条件の真理値は,否定される条件の真理値が偽のとき真となり,否定される条件の真理値
が真のとき偽となる。
8.8.4.2.1.1
一般形式
NOT 条件1
8.8.4.2.2
組合せ条件
組合せ条件(combined condition)は,論理演算子AND又はORで幾つかの条件を組み合わせてできる。
8.8.4.2.2.1
一般形式
条件1
AND
OR
条件2 …
8.8.4.2.3
論理演算子の優先順位及び括弧の用法
論理演算子の優先順位は,論理演算子の適用対象となる条件を決定する。ただし,明示的な括弧で優先
順位が変われば,この限りでない。論理演算子の優先順位は,NOT,AND,ORの順とする。複合条件中
に明示的な括弧があると,条件の評価順序が変わる[8.8.4.3(条件の評価順序)参照]。
注記 “条件1 OR NOT 条件2 AND 条件3”の意味は,“条件1 OR ( (NOT 条件2) AND 条件3)”と
する。括弧を用いた意味の変更もできる。例えば“(条件1 OR (NOT 条件2) ) AND 条件3”は
“条件1 OR NOT 条件2 AND 条件3”とは違った評価になる。
表6(条件,論理演算子及び括弧の組合せ)は,条件と論理演算子について,使用してもよい組合せ及
び括弧付けの方法を示す。左括弧と右括弧とは1対1に対応し,左括弧は対応する右括弧より左になけれ
ばならない。
121
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表6−条件,論理演算子及び括弧の組合せ
次の要素を
指定したとき
条件式中の
要素を左から右へ並べた中で,左欄の要素の
先頭に可
末尾に可
直前にあってもよい要素
先頭は除く
直後にあってもよい要素
末尾は除く
単純条件
○
○
OR,NOT,AND,(
OR,AND,)
OR又はAND
−
−
単純条件,)
単純条件,NOT,(
NOT
○
−
OR,AND,(
単純条件,(
(
○
−
OR,NOT,AND,(
単純条件,NOT,(
)
−
○
単純条件,)
OR,AND,)
注記 “OR NOT”の組合せは使用してもよいが“NOT OR”の組合せは使用してはならない。また,
“NOT (”の組合せは使用してもよいが“NOT NOT”の組合せは使用してはならない。
8.8.4.2.4
略記組合せ比較条件
単純比較条件又は否定単純比較条件を幾つか論理結合子で組み合わせて一続きに並べて書く場合,先頭
以外の比較条件は,略記(abbreviate)してもよい。つまり,後続比較条件の左辺又は左辺と比較演算子の
対が先行比較条件と共通しており,そのような条件の並びの中では括弧を用いていないとき,次のとおり
略記してもよい。
1) 比較条件の左辺を省略可能
2) 比較条件の左辺と比較演算子との対を省略可能
一連の比較条件の中で両方の略記法を併せて用いてもよい。
8.8.4.2.4.1
一般形式
比較条件1
AND
OR
NOT
[NOT] 単純比較演算子
拡張比較演算子
右辺1 …
ここで,“単純比較演算子”及び“拡張比較演算子”は,8.7.5(比較演算子)による。
8.8.4.2.4.2
構文規則
1) 比較条件1がブール比較条件であってはならない。
2) 暗黙に挿入がなされた結果は,表6(条件,論理演算子及び括弧の組合せ)の規則に従う。
3) 語NOTが別の語NOT又は語列IS NOTの直後に続いてはならない。
8.8.4.2.4.3
一般規則
1) 略記を用いた場合の効果は,省略された左辺の位置に直前の左辺が挿入され,省略された比較演算子
の位置に直前の比較演算子が挿入されるのと同じとする。省略された左辺及び/又は比較演算子の挿
入は,複合条件中で完全な単純条件が見つかると直ちに終わる。
2) 略記組合せ比較条件の中で語NOTを使用した場合の解釈は,次による。
a) 語NOTの直後に拡張比較演算子が続くとき,NOTは論理演算子と解釈される。
b) 語NOTの直後に単純比較演算子が続くとき,NOTはその比較条件の一部となる。
c) これ以外のNOTは論理演算子として解釈される。したがって,左辺又は論理演算子が暗黙に挿入
された結果は否定比較条件になる。
注記 NOTを用いると,往々にして直観とは異なる結果が導かれるので,用いないことが望まし
い。そのような使用方法の例を幾つか,展開形とともに次に示す。
122
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
略記組合せ比較条件
展開された等価な比較条件
a > b AND NOT < c OR d
((a > b) AND (a NOT < c)) OR (a NOT < d)
a NOT EQUAL b OR c
(a NOT EQUAL b) OR (a NOT EQUAL c)
NOT a = b OR c
(NOT (a = b)) OR (a = c)
NOT (a GREATER b OR < c)
NOT ((a GREATER b) OR (a < c))
NOT (a NOT > b AND c AND NOT d) NOT (((a NOT > b) AND (a NOT > c)) AND (NOT (a NOT > d)))
8.8.4.3
条件の評価順序
明示的な括弧及び暗黙の括弧は,複合条件中の入れ子の水準を表す。同じ入れ子の水準にある複数個の
条件を論理演算子ANDだけで又は論理演算子ORだけで連結したものは,複合条件中での一つの階層を
なす。複合条件全体は,その複合条件全体自体を最も外側の階層とする階層の入れ子構造と考えることが
できる。これに関連して,複合条件全体中での条件の評価は,その複合条件全体の左から比較を始め,次
の規則に従って必要なだけ繰り返し続けられる。
1) ある階層中での連結された各条件は左から右へと順に評価され,その階層の評価は真理値が決まると
すぐに終了して,その階層中での連結された条件の全てが評価済みか否かには関係しない。
2) 算術式及び関数の値は,それらを含んでいる条件が評価されるときに確定する。同様に否定条件は,
それが表す複合条件の評価に必要なときに評価される[8.8.1(算術式)参照]。
123
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
8.9
予約語
予約語の一覧は,次による。
ACCEPT
ACCESS
ACTIVE-CLASS
ADD
ADDRESS
ADVANCING
AFTER
ALIGNED
ALL
ALLOCATE
ALPHABET
ALPHABETIC
ALPHABETIC-LOWER
ALPHABETIC-UPPER
ALPHANUMERIC
ALPHANUMERIC-EDITED
ALSO
ALTERNATE
AND
ANY
ANYCASE
ARE
AREA
AREAS
AS
ASCENDING
ASSIGN
AT
B-AND
B-NOT
B-OR
B-XOR
BASED
BEFORE
BINARY
BINARY-CHAR
BINARY-DOUBLE
BINARY-LONG
BINARY-SHORT
BIT
BLANK
BLOCK
BOOLEAN
BOTTOM
BY
CALL
CANCEL
CD
CF
CH
CHARACTER
CHARACTERS
CLASS
CLASS-ID
CLOSE
CODE
CODE-SET
COL
COLLATING
COLS
COLUMN
COLUMNS
COMMA
COMMON
COMMUNICATION
COMP
COMPUTATIONAL
COMPUTE
CONDITION
CONFIGURATION
CONSTANT
CONTAINS
CONTENT
CONTINUE
CONTROL
CONTROLS
CONVERTING
COPY
CORR
CORRESPONDING
COUNT
CRT
CURRENCY
CURSOR
DATA
DATA-POINTER
DATE
DAY
DAY-OF-WEEK
DE
DEBUGGING
DECIMAL-POINT
DECLARATIVES
DEFAULT
DELETE
DELIMITED
DELIMITER
DEPENDING
DESCENDING
DESTINATION
DETAIL
DISABLE
DISPLAY
DIVIDE
DIVISION
DOWN
DUPLICATES
DYNAMIC
EC
EGI
ELSE
EMI
ENABLE
END
END-ACCEPT
END-ADD
END-CALL
END-COMPUTE
END-DELETE
END-DISPLAY
END-DIVIDE
END-EVALUATE
END-IF
END-MULTIPLY
END-OF-PAGE
END-PERFORM
END-READ
END-RECEIVE
END-RETURN
END-REWRITE
END-SEARCH
END-START
END-STRING
END-SUBTRACT
END-UNSTRING
END-WRITE
ENVIRONMENT
EO
EOP
EQUAL
ERROR
ESI
EVALUATE
124
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
EXCEPTION
EXCEPTION-OBJECT
EXIT
EXTEND
EXTERNAL
FACTORY
FALSE
FD
FILE
FILE-CONTROL
FILLER
FINAL
FIRST
FLOAT-EXTENDED
FLOAT-LONG
FLOAT-SHORT
FOOTING
FOR
FORMAT
FREE
FROM
FUNCTION
FUNCTION-ID
GENERATE
GET
GIVING
GLOBAL
GO
GOBACK
GREATER
GROUP
GROUP-USAGE
HEADING
HIGH-VALUE
HIGH-VALUES
I-O
I-O-CONTROL
IDENTIFICATION
IF
IN
INDEX
INDEXED
INDICATE
INHERITS
INITIAL
INITIALIZE
INITIATE
INPUT
INPUT-OUTPUT
INSPECT
INTERFACE
INTERFACE-ID
INTO
INVALID
INVOKE
IS
JUST
JUSTIFIED
KEY
LAST
LEADING
LEFT
LENGTH
LESS
LIMIT
LIMITS
LINAGE
LINAGE-COUNTER
LINE
LINE-COUNTER
LINES
LINKAGE
LOCAL-STORAGE
LOCALE
LOCK
LOW-VALUE
LOW-VALUES
MERGE
MESSAGE
METHOD
METHOD-ID
MINUS
MODE
MOVE
MULTIPLY
NATIONAL
NATIONAL-EDITED
NATIVE
NEGATIVE
NESTED
NEXT
NO
NOT
NULL
NUMBER
NUMERIC
NUMERIC-EDITED
OBJECT
OBJECT-COMPUTER
OBJECT-REFERENCE
OCCURS
OF
OFF
OMITTED
ON
OPEN
OPTIONAL
OPTIONS
OR
ORDER
ORGANIZATION
OTHER
OUTPUT
OVERFLOW
OVERRIDE
PACKED-DECIMAL
PADDING
PAGE
PAGE-COUNTER
PERFORM
PF
PH
PIC
PICTURE
PLUS
POINTER
POSITION
POSITIVE
PRESENT
PRINTING
PROCEDURE
PROGRAM
PROGRAM-ID
PROGRAM-POINTER
PROPERTY
PROTOTYPE
PURGE
QUEUE
QUOTE
QUOTES
RAISE
RAISING
RANDOM
125
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
RD
READ
RECEIVE
RECORD
RECORDS
REDEFINES
REEL
REFERENCE
RELATIVE
RELEASE
REMAINDER
REMOVAL
RENAMES
REPLACE
REPLACING
REPORT
REPORTING
REPORTS
REPOSITORY
RESERVE
RESET
RESUME
RETRY
RETURN
RETURNING
REWIND
REWRITE
RF
RH
RIGHT
ROUNDED
RUN
SAME
SCREEN
SD
SEARCH
SECTION
SEGMENT
SELECT
SELF
SEND
SENTENCE
SEPARATE
SEQUENCE
SEQUENTIAL
SET
SHARING
SIGN
SIZE
SORT
SORT-MERGE
SOURCE
SOURCE-COMPUTER
SOURCES
SPACE
SPACES
SPECIAL-NAMES
STANDARD
STANDARD-1
STANDARD-2
START
STATUS
STOP
STRING
SUB-QUEUE-1
SUB-QUEUE-2
SUB-QUEUE-3
SUBTRACT
SUM
SUPER
SUPPRESS
SYMBOLIC
SYNC
SYNCHRONIZED
SYSTEM-DEFAULT
TABLE
TALLYING
TERMINAL
TERMINATE
TEST
TEXT
THAN
THEN
THROUGH
THRU
TIME
TIMES
TO
TOP
TRAILING
TRUE
TYPE
TYPEDEF
UNIT
UNIVERSAL
UNLOCK
UNSTRING
UNTIL
UP
UPON
USAGE
USE
USER-DEFAULT
USING
VAL-STATUS
VALID
VALIDATE
VALIDATE-STATUS
VALUE
VALUES
VARYING
WHEN
WITH
WORKING-STORAGE
WRITE
ZERO
ZEROES
ZEROS
+
‒
*
/
**
>
<
=
>=
<=
&
*>
::
>>
126
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
8.10 文脈依存語
文脈依存語は,次による。これらは,特定の構文構造,すなわち文脈の中で予約されている。一般形式
で文脈依存語を書いてもよいとしている箇所にその文脈依存語が使われるとき,その語はキーワードとし
て扱われる。さもなければ,その語は利用者定義語とみなされる。
文脈依存語
構文構造又は文脈
ARITHMETIC
OPTIONS段落
ATTRIBUTE
SET文
AUTO
画面記述項
AUTOMATIC
LOCK MODE句
BACKGROUND-COLOR
画面記述項
BELL
画面記述項及びSET属性文
BLINK
画面記述項及びSET属性文
BYTE-LENGTH
定数記述項
CENTER
COLUMN句
CLASSIFICATION
実行用計算機段落
CYCLE
EXIT文
ENTRY-CONVENTION
選択肢段落
EOL
画面記述項のERASE句
EOS
画面記述項のERASE句
ERASE
画面記述項
EXPANDS
リポジトリ段落のクラス指定子及びインタフェース指定子
FOREGROUND-COLOR
画面記述項
FOREVER
RETRY指定
FULL
画面記述項
HIGHLIGHT
画面記述項及びSET属性文
IGNORING
READ文
IMPLEMENTS
ファクトリ段落及びオブジェクト段落
INITIALIZED
ALLOCATE文
INTRINSIC
リポジトリ段落の関数記述項
LC̲ALL
SET文
LC̲COLLATE
SET文
LC̲CTYPE
SET文
LC̲MESSAGES
SET文
LC̲MONETARY
SET文
LC̲NUMERIC
SET文
LC̲TIME
SET文
LOWLIGHT
画面記述項及びSET属性文
127
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
文脈依存語
構文構造又は文脈
MANUAL
LOCK MODE句
MULTIPLE
LOCK ON指定
NONE
DEFAULT句
NORMAL
STOP文
NUMBERS
COLUMN句及びLINE句
ONLY
SHARING句,SHARING指定,オブジェクトビュー及び
USAGE句
PARAGRAPH
EXIT文
PREVIOUS
READ文
RECURSIVE
プログラム名段落
RELATION
ERROR句
REQUIRED
画面記述項
REVERSE-VIDEO
画面記述項及びSET属性文
SECONDS
RETRY指定
SECURE
画面記述項
SIGNED
USAGE句
STATEMENT
RESUME文
STEP
OCCURS句
STRONG
TYPEDEF句
SYMBOL
CURRENCY句
UCS-4
ALPHABET句
UNDERLINE
画面記述項及びSET属性文
UNSIGNED
USAGE句
UTF-8
ALPHABET句
UTF-16
ALPHABET句
YYYYDDD
ACCEPT文
YYYYMMDD
ACCEPT文
全ての例外名は,文脈依存語とする。例外名が現れてよい箇所は,RAISE文,GOBACK文及びEXIT文
のRAISING指定,USE EXCEPTION文並びにTURN翻訳指示の直後に限られるからである。例外名の一
覧は,14.5.12.1(例外状態)による。
128
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
8.11 組込み関数名
組込み関数名は,次による。
ABS
ACOS
ANNUITY
ASIN
ATAN
BOOLEAN-OF-INTEGER
BYTE-LENGTH
CHAR
CHAR-NATIONAL
COS
CURRENT-DATE
DATE-OF-INTEGER
DATE-TO-YYYYMMDD
DAY-OF-INTEGER
DAY-TO-YYYYDDD
DISPLAY-OF
E
EXCEPTION-FILE
EXCEPTION-FILE-N
EXCEPTION-LOCATION
EXCEPTION-LOCATION-
N
EXCEPTION-STATEMENT
EXCEPTION-STATUS
EXP
EXP10
FACTORIAL
FRACTION-PART
HIGHEST-ALGEBRAIC
INTEGER
INTEGER-OF-BOOLEAN
INTEGER-OF-DATE
INTEGER-OF-DAY
INTEGER-PART
LENGTH
LOCALE-COMPARE
LOCALE-DATE
LOCALE-TIME
LOG
LOG10
LOWER-CASE
LOWEST-ALGEBRAIC
MAX
MEAN
MEDIAN
MIDRANGE
MIN
MOD
NATIONAL-OF
NUMVAL
NUMVAL-C
NUMVAL-F
ORD
ORD-MAX
ORD-MIN
PI
PRESENT-VALUE
RANDOM
RANGE
REM
REVERSE
SIGN
SIN
SQRT
STANDARD-COMPARE
STANDARD-DEVIATION
SUM
TAN
TEST-DATE-YYYYMMDD
TEST-DAY-YYYYDDD
TEST-NUMVAL
TEST-NUMVAL-C
TEST-NUMVAL-F
UPPER-CASE
VARIANCE
WHEN-COMPILED
YEAR-TO-YYYY
129
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
8.12 翻訳指示語
次に示す語を,翻訳指示の中では予約語とする。
ALL
AND
AS
B-AND
B-NOT
B-OR
B-XOR
CALL-CONVENTION
CHECKING
COBOL
CORRESPONDING
DE-EDITING
DEFINE
DEFINED
DIVIDE
ELSE
END-IF
END-EVALUATE
EQUAL
EVALUATE
FIXED
FLAG-85
FLAG-NATIVE-ARITHMETIC
FORMAT
FREE
FUNCTION-ARGUMENT
GREATER
IF
IMP
IS
LEAP-SECOND
LESS
LISTING
LOCATION
MOVE
NOT
NUMVAL
OFF
ON
OR
OTHER
OVERRIDE
PAGE
PARAMETER
PROPAGATE
SET
SIZE
SOURCE
STANDARD-1
STANDARD-2
THAN
THROUGH
THRU
TO
TRUE
TURN
WHEN
WITH
ZERO-LENGTH
+
‒
*
/
<=
>=
<
>
=
(
)
これらに加えて,14.5.12.1(例外状態)に規定する全ての例外名も,翻訳指示の予約語とする。
130
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
8.13 外部リポジトリ
外部リポジトリ(external repository)は,プログラム原型,関数原型,プログラム定義,関数定義,ク
ラス定義及びインタフェース定義の中で規定された情報を保管する機構とする。
これらのソース単位に由来して保管される情報は,プログラム,関数,又はメソッドの活性化,及び適
合検査のために必要となる全ての情報からなる。この情報には,次のものが含まれる。
− ソース単位の外部公開名。
− ソース単位の種類(プログラム,関数,クラス,インタフェースのいずれか)。
− ソース単位にパラメタの指定があるとき,パラメタの記述,渡しかた(参照渡し又は値渡し)及び省
略の可否。
− ソース単位に返却項目の指定があるとき,返却項目の記述。
− 実行時要素が引き起こしてもよい例外の指定があるとき,その例外。
− ソース単位に入口規約の指定があるとき,その入口規約。
− ソース単位にオブジェクトプロパティの指定があるとき,そのプロパティ。
− ソース単位にメソッドが含まれるとき,そのメソッド,並びにその外部公開名,パラメタ,返却項目
及び入口規約の詳細。
− パラメタ及び返却項目の記述用に必要な型宣言。
− ソース単位でのDECIMAL-POINT IS COMMA句の指定の有無。
− ソース単位中に定義された通貨編集用記号とそれに対応する通貨文字列。
− ソース単位の仮パラメタ又は返却項目に関連する現地特性の外部識別。
− そのほか実装者が必要とするあらゆる情報。
ソース単位に関するこれらの情報(外部公開名以外)を,呼出し情報(signature)と呼ぶ。情報が原型
と定義のいずれに由来するものであっても,プログラム又は関数の呼出し情報に関して外部リポジトリに
保管される情報は同じである。
実装系には,翻訳単位を翻訳する場合に外部リポジトリを更新するか否かの指定を利用者に許可する機
構が提供されていなければならない。
実装系には,翻訳群中の原型及び定義と外部リポジトリ中の情報との相違に対してフラグを立てるか否
かの指定を利用者に許可する機構が提供されていなければならない。
ソース単位の名前と外部リポジトリ中の情報との関連付けについては,12.2.7(リポジトリ段落)におい
て詳細を規定する。
9
入出力,オブジェクト及び利用者定義関数
9.1
ファイル
9.1.1
物理ファイル及び論理ファイル
ファイルの物理的事項は,入出力媒体上の表現に合わせてデータを記述するものであり,次に示す仕様
を含んでいる。
1) ファイル媒体の物理的制限に合わせた論理レコードのブロック化。
2) ファイルを識別する方法。
ファイルの概念的つまり論理的な特性は,ファイル自体の中の論理的実体をそれぞれ定義することで明
らかになる。COBOLの入出力文は,1回に一つの論理レコードを参照する。
物理レコードと論理レコードの区別は重要である。COBOLの論理レコードは,関連ある情報の集まり
131
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
であり,一意に識別可能であり,単位として扱われる。
物理レコードは,出力装置へ転送され記録される情報又は入力装置から転送される情報の物理的な単位
である。物理レコードの大きさはハードウェアに依存するものであり,装置上にある情報ファイルの大き
さと直接の関係はない。
一つの論理レコードが単一の物理的単位に収まることもあり,複数の論理レコードが単一の物理的単位
に収まることもあり,一つの論理レコードを収めるのに複数の物理的単位が必要なこともある。原始言語
には,論理レコードと物理的単位との関係を記述するために幾つかの書き方がある。この関係が確立した
場合,物理的単位に関連付けられた論理レコードの呼出し方法の制御は,実行時モジュールが処理系と相
互に作用して行う。この規格においては,特に“物理レコード”という用語を用いない限り,単にレコー
ドといえば論理レコードを指す。また,同様に“物理ファイル”を用いない限り,単にファイルといえば
ファイルの論理的な特性を指す。各々のファイル結合子には関連する論理ファイルが一つ存在して,その
ファイル結合子を指すファイル名によって参照される。一つの物理ファイルに関連する論理ファイルが複
数あってもよい。
論理レコードと物理的単位との間で転記を行う場合,CODE-SET句又はFORMAT句を指定することに
よって必要となる変換を行う。必要に応じて埋め草文字が追加又は削除される。
9.1.2
レコード領域
レコード領域(record area)とは,ファイルに関連付けられた記憶領域であって,その内部においてファ
イルの論理レコードを実行時要素が呼出し可能となる。レコード領域を実行時要素が呼出し可能になるの
はOPEN文が成功完了してからである。入力ファイルでは,READ文の実行が成功してから論理レコード
がレコード領域内で使用可能となる。出力ファイル又は拡張ファイルでは,WRITE文又はREWRITE文の
実行が成功するまで論理レコードが使用可能とする。入出力両用ファイルでは,READ文の実行が成功し
てから別のREAD文を実行するまで又はREWRITE文の実行が成功するまで,論理レコードは使用可能と
する。
9.1.3
ファイル結合子
ファイル結合子は,ファイル名で参照され,利用者には参照不能な記憶領域であり,実行単位が入出力
操作の状態及び物理ファイルとの連絡状態を確定するために使用する情報をもつ。
ファイル結合子は幾つかの属性をもち,関連するファイル名に対するファイル記述項及びファイル管理
記述項に句及び指定を書くことによって,及び入出力文を実行することによって指定される。属性には,
ファイル編成(順・索引・相対),呼出し法(順・乱・動的),施錠モード(自動・手動・なし),施錠処理
モード(単一レコード施錠・複数レコード施錠・なし),オープンモード(入力・出力・入出力両用・拡張),
共用モード(排他的・読取り専用・他全てと共用・実装者定義・共用なし),及び報告書ファイル結合子か
否かがある。さらに,ファイル位置指示子,参照キー,入出力状態の値,現在ボリュームポインタ,ファ
イル錠,及びレコード錠の情報もある。
ファイル結合子は,内部又は外部のいずれかである[8.6.2(外部項目及び内部項目)参照]。内部ファイ
ル結合子では,各々のファイル記述項に一つずつファイル結合子が関連付けられる。外部ファイル結合子
では,同じファイル名を記述するファイル記述項がどれだけあろうと,実行単位に関連付けられるファイ
ル結合子は唯一となる。
9.1.4
オープンモード
ファイル結合子が開いているとは,そのオープンモードが入力・出力・入出力両用・拡張のいずれかで
ある時点をいう。ファイル結合子が開いている場合,それは論理ファイルと物理ファイルの間を連結する
132
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
機構となる。
ファイル結合子のオープンモードは,関連ファイル名を参照しているOPEN文の実行が成功することに
よって,設定される。OPEN文は,ファイル結合子を物理ファイルと関連付ける処理も行う。関連ファイ
ル名をCLOSE文が参照していると,ファイル結合子はそれ以上は物理ファイルと関連付けられた状態で
も開かれた状態でもなくなる。次の場合,COBOL実行時システムは,開かれた状態のファイル結合子に
対して,選択可能指定のない暗黙のCLOSE文を実行する。
− 実行単位が終了したとき。
− プログラム中に記述された初期化ファイル結合子に対しては,呼び出される側のプログラム中で
GOBACK文又はEXIT PROGRAM文が実行されたとき。
− プログラム中のファイル結合子に対しては,そのプログラム又はその外側のプログラムに対して
CANCEL文が実行されたとき。
− オブジェクト中のファイル結合子に対しては,そのオブジェクトが削除されたとき。
9.1.5
ファイル結合子の共用
実行単位中の二つの実行時要素は,次の環境において共通なファイル結合子を参照してもよい。
1) 外部ファイル結合子は,そのファイル結合子を記述しているあらゆる実行時要素から参照してもよい。
2) プログラムが別のプログラムに内包されている場合,両方のプログラムは,外側のプログラム中,又
はその外側のプログラムを直接又は間接に内包するプログラム中の大域ファイル名の参照によって,
共通のファイル結合子を参照してもよい。
9.1.6
ファイル固有属性
物理ファイルには,ファイルの作成時に適用され,ファイルの生存期間を通じて変えられない様々な属
性がある。主な属性はファイル編成(organization)であり,ファイルの論理構造を記述するものである。
編成には,順編成,相対編成,及び索引編成の3種類がある。COBOLを通して提供される,これ以外の
ファイル固有属性には,主レコードキー,副レコードキー,符号系,論理レコードのバイト長の最小値及
び最大値,レコード形式(固定長又は可変長),索引ファイルのキーの文字照合順序,物理レコードのバイ
ト長の最小値及び最大値,埋め草文字,並びにレコード区切り記号がある。物理ファイルを共用する機能
がファイル固有属性か否かは,実装者定義とする。
9.1.7
編成
ファイル編成には,順編成,相対編成,及び索引編成の3種類がある。
9.1.7.1
順編成
順ファイルは,最後以外の各レコードに対してその直後のレコードが一意に決まり,先頭以外の各レコ
ードに対してその直前のレコードが一意に決まるように編成される。レコードの前後関係は,物理ファイ
ルを生成するときのWRITE文の実行の順序によって確定する。いったん確定した前後関係は,物理ファ
イルの最後にレコードを追加する場合以外に変わることはない。
大容量記憶装置上の順編成の物理ファイルは,どのような順次媒体上の物理ファイルとも同じ論理構造
をもつ。ただし,大容量記憶装置上の順編成の物理ファイルの物理レコードに対応する論理レコードは,
その位置で更新してもよい。この場合,置換される各物理レコードは,元の物理レコードと同じ大きさで
なければならない。
9.1.7.2
相対編成
相対ファイルは,レコードの相対レコード番号の値を与えることによって各レコードの格納又は取出し
をするように編成されている。相対ファイルは,大容量記憶装置上にある相対編成の物理ファイルに関連
133
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
付けられなければならない。
相対編成のファイルは,論理レコードを保持し得る領域の列と考えられる。これらの領域にはそれぞれ
相対レコード番号が割り振られ,相対ファイル中の各論理レコードは,その記憶領域の相対レコード番号
によって識別される。
注記 例えば,10番目のレコードは相対レコード番号10で番地付けされるものであり,1番目から9
番目のレコード領域にレコードが書かれているかいないかに関係なく,10番目のレコード領域
に存在する。
相対ファイル中のレコードをより効果的に呼び出すためには,特定の論理レコードを格納するため大容
量記憶装置上の物理レコード中に確保されるバイト数と,データ部中でのそのレコード記述のバイト数と
が,異なっていてもよい。
9.1.7.3
索引編成
索引ファイルは,レコード中の特定キーの値を与えることによって各レコードの格納,取出し又は削除
をするように編成されている。索引ファイルは,大容量記憶装置上にある索引編成の物理ファイルに関連
付けられなければならない。ファイルのレコードに対して定義された各々のキーデータ項目に対して,一
つの索引(index)が設けられる。このような索引はそれぞれ,各レコード中にある対応するキーデータ項
目の値の集まりを表す。各々の索引は,そのファイル中のレコードを呼び出す手段を提供する一つの技法
となる。
各々の索引ファイルには主索引があり,そのファイル中の各レコードの主レコードキーを表す。各レコ
ードは主レコードキーの値に基づいてだけ,ファイルに挿入され,変更され,ファイルから削除される。
ファイル中の各レコードの主レコードキーは一意でなければならず,その値をレコードの更新時に変更し
てはならない。主レコードキーは,そのファイルのファイル管理記述項のRECORD KEY句で宣言される。
副レコードキーは,ファイル中のレコードを取り出すための代替手段を提供する。副レコードキーは,
ファイル管理記述項のALTERNATE RECORD KEY句で命名される。ALTERNATE RECORD KEY句に
DUPLICATES指定を書いた場合,特定の副レコードキーの値がファイル中で一意である必要はない。
主レコードキー及びあらゆる副レコードキーは,そのファイルに関連するレコード領域の,一つ以上の
部分から構成する。各々のキーに対する,構成要素の個数,長さ,及びそのレコード領域内での相対位置
はファイル固有属性であり,いったん物理ファイルを作成したら変えてはならない。
9.1.8
呼出し法
ファイル記述項のACCESS MODE句によって,実行時要素は,ファイル中のレコードを操作する方法を
指定する。呼出し法には,順呼出し,乱呼出し,及び動的呼出しがある。
相対編成又は索引編成のファイルでは,その物理ファイルを作成するのに用いた呼出し法に関係なく,
ファイルを呼び出すために3種類の呼出し法のどれを用いてもよい。順編成のファイルでは,用いてよい
呼出し法は順呼出し法だけとする。
9.1.8.1
順呼出し法
順編成での順呼出しの順序は,READ文にNEXTを明示的又は暗黙に指定した場合,元々のレコードを
書き出した順序とする。READ文にPREVIOUSを指定した場合の順序は,元々のレコードを書き出した順
序の逆順とする。START文を用いると,それ以降の検索のためにファイルを始端又は終端に位置付けるこ
とができる。
相対編成での順呼出しの順序は,READ文にNEXTを明示的又は暗黙に指定した場合,相対レコード番
号の値に基づいた昇順とする。READ文にPREVIOUSを指定した場合の順序は,相対レコード番号の値に
134
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
基づいた降順とする。START文を用いると,それ以降の一連の,前方向へ又は逆方向への順検索のための
開始点を設定することができる。
索引編成での順呼出しの順序は,READ文にNEXTを明示的又は暗黙に指定した場合,物理ファイルの
文字照合順序に従って,参照キーの値に基づいた昇順とする。ファイルに関連するキーは,ファイルの処
理中にいずれを参照キーとして設定してもよい。参照キーの値が重複しているレコードの組がある場合,
これらのレコードは書き出された順序で検索される。READ文にPREVIOUSを指定した場合の順序は,物
理ファイルの文字照合順序に従って,参照キーの値に基づいた降順とする。参照キーの値が重複している
レコードの組がある場合,これらのレコードは書き出されたのとは逆の順序で検索される。START文を用
いると,それ以降の一連の,前方向へ又は逆方向への順検索の開始点を設定することができる。
9.1.8.2
乱呼出し法
乱呼出し法でファイルを検索する場合,入出力文を用いると,プログラマが指定した順序でレコードを
呼び出す。乱呼出し法は,相対編成又は索引編成のファイルにだけ用いてよい。
相対編成のファイルでは,プログラマは,必要なレコードを指定するために,相対レコード番号を相対
キーデータ項目に入れる。索引編成のファイルでは,プログラマは,必要なレコードを指定するために,
そのレコードキーのうちいずれかの値を,主レコードキー又は副レコードキーのデータ項目に入れる。
9.1.8.3
動的呼出し法
動的呼出し法では,プログラマは,入出力文の該当する書き方を用いて,順呼出しと乱呼出しとを随意
に切り換えることができる。動的呼出し法は,相対編成又は索引編成のファイルにだけ用いてよい。
9.1.9
リール及びユニット
“リール”と“ユニット”は,同義語である。これらを適用するファイルは順編成であって,関連する
物理ファイルが複数個の物理装置上にわたって存在する可能性のあるものだけとする。このようなファイ
ルの取扱いは,単一の物理装置上に全体が含まれている物理ファイルに関連付けられた順ファイルの取扱
いと論理的に等価とする。
注記 複数個の物理装置上にわたって存在する物理ファイルの例としては,複数巻の磁気テープ上に
格納された物理ファイルがある。もう一つの例として,複数巻の取外し可能なディスクパック
上に格納されたものなどもある。
9.1.10 現在ボリュームポインタ
現在ボリュームポインタ(current volume pointer)は,順ファイルの現在での物理ボリュームを正確に指
定する便宜上この規格の中で使用する概念上の実体である。現在ボリュームポインタの状態に影響を及ぼ
す文は,CLOSE文,OPEN文,READ文及びWRITE文だけとする。
9.1.11 ファイル位置指示子
ファイル位置指示子(file position indicator)とは,入出力両用モードで又は入力モードで開かれる各々
のファイル結合子に対して存在する概念上の実体であり,一連の入出力操作の間に呼び出すレコードを正
確に指定する便宜のため用いられる。ファイル位置指示子の設定に影響を及ぼす文は,CLOSE文,OPEN
文,READ文及びSTART文だけとする。
ファイル位置指示子は,索引ファイルでは現在の参照キーの値をもち,順ファイルでは現在レコードの
レコード番号をもち,相対ファイルでは現在レコードの相対レコード番号をもつ。又は,ファイル結合子
に対する次のいずれかの状態を示す。
− 有効なレコード位置が確定していない。
− 不定ファイルが存在しない。
135
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
− その次の又はその直前のレコードが存在しない。
9.1.12 入出力状態
入出力状態(I-O status)とは,2文字からなり,入出力動作の状態を示す値が設定される概念上の実体
とする。その値が設定される時点は,CLOSE文,DELETE文,OPEN文,READ文,REWRITE文,START
文,UNLOCK文又はWRITE文の実行中であり,かつ,その入出力文に関連する無条件文を実行する前,
又は該当するUSE EXCEPTION手続きを実行する前とする。入出力状態の値を使用可能にするには,その
ファイルに対するファイル管理記述項のFILE STATUS句を用いるか,EXCEPTION-FILE関数又は
EXCEPTION-FILE-N関数を用いる。
入出力状態はまた,該当するUSE EXCEPTION手続きが実行されるか否かをも決定する。9.1.12.1(成功
完了)に挙げた以外の条件のいずれかが起きると,その手続きの実行は別の箇所に規定された規則による。
9.1.12.1(成功完了)に挙げた条件のいずれかが起きると,その手続きは実行されない。
入出力状態の値の幾つかの部類は,致命的例外状態を示す。これらは3又は4のけたで始まる値,及び
実装者が致命的であると定義した9のけたで始まる値とする。入出力操作に対する入出力状態の値が致命
的例外状態を示すとき,該当するUSE EXCEPTION手続きの実行後,又は該当手続きがないときは標準の
入出力管理システム誤り処理の完了後にとる動作は,実装者が決定する。実装者は,実行単位の実行を継
続させても終了させてもよい。実装者が実行単位の実行継続を選択した場合,致命的例外状態を引き起こ
した文の規則に別の振る舞いの規定がない限り,その文の終わりに制御が移る。その入出力文に対する
NOT AT END指定又はNOT INVALID KEY指定は,あっても無視される。
不成功完了に関連する入出力状態には,例外状態が関連付けられる。例外状態が引き起こされるか否か
は,その例外状態に対する検査が有効か否かによって異なる。例外名とそれに対応する入出力状態の値の
先頭けたは,次による。
EC-I-O-AT-END
"1"
EC-I-O-INVALID-KEY
"2"
EC-I-O-PERMANENT-ERROR
"3"
EC-I-O-LOGIC-ERROR
"4"
EC-I-O-RECORD-OPERATION
"5"
EC-I-O-FILE-SHARING
"6"
EC-I-O-IMP
"9"
入出力状態値の結果の先頭文字がこれらの値の一つである場合,関連する例外状態になる。例外状態が
EC-I-O-AT-END又はEC-I-O-INVALID-KEYであって,その例外状態を引き起こした入出力文にAT END指
定又はINVALID KEY指定があるとき,USE手続きが実行されてはならない。それ以外の場合,成立する
例外状態は,該当するUSE手続きを実行しなければならないか否かを14.8.45(USE文)の規則に従って
決定する。
入出力状態は,入出力動作が完了した後に,次の条件のうちの一つを表す。
1) 成功完了。 入出力文の実行が成功した。
2) 実装者定義の成功完了。 実装者が規定する条件が発生し,入出力文の実行が成功した。
3) ファイル終了(at end)。 ファイル終了条件の結果,順呼出しREAD文の実行が不成功となった。
4) 無効キー(invalid key)。 無効キー条件の結果,入出力文の実行が不成功となった。
5) 永続誤り(permanent error)。 ファイルの処理の続行を妨げる誤りの結果,入出力文の実行が不成功
となった。例外手続きの指定があれば,それが実行される。永続誤り条件を回復するために実装者定
136
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
義の技法が起動されない限り,この永続誤り条件はそのファイルに対してそれ以降に行われる全ての
入出力操作に影響し続ける。
6) 論理誤り(logical error)。 ファイルに対して不適切な順序で入出力操作を行った結果,又は利用者定
義の境界を越えた結果,入出力文の実行が不成功となった。
7) レコード操作不整合(record operation conflict)。 レコードを別なファイル結合子が施錠していた結果,
入出力文の実行が不成功となった。
8) ファイル共用不整合(file sharing conflict)。 ファイルを別なファイル結合子が施錠していた結果,
入出力文の実行が不成功となった。
9) 実装者定義の不成功完了。 実装者が規定する条件の結果,入出力文の実行が不成功となった。
入出力操作の実行の結果として生じるこれらの条件に対して入出力状態に設定される値は,9.1.12.1〜
9.1.12.9に規定する。二つ以上の値が該当する場合,それらのうちで入出力状態に設定される値は,実装
者定義とする。
9.1.12.1 成功完了
1) 入出力状態=00。 入出力文の実行は成功した。入出力操作に関してこれ以上の情報はない。
2) 入出力状態=02。 入出力文の実行は成功したが,重複キーが検出された。
a) READ文であってNEXTを明示的又は暗黙に指定したものでは,現在の参照キーに対するキーの値
が,物理ファイル中にあるその次のレコード中の,同じキーの値と等しい。
b) READ文であってPREVIOUSを指定したものでは,現在の参照キーに対するキーの値が,物理ファ
イル中にあるその前のレコード中の,同じキーの値と等しい。
c) REWRITE文又はWRITE文で,重複してもよい副レコードキーのいずれかに対して,書き出したレ
コードが重複キー値を生じた。
3) 入出力状態=04。 READ文の実行は成功したが,処理したレコードの長さがそのファイルのファイル
固有属性に整合していない。
4) 入出力状態=05。 OPEN文の実行は成功したが,そのファイルは不定ファイルと記述されており,
OPEN文の実行時点ではその物理ファイルが存在しない。オープンモードが入出力両用又は拡張のと
き,物理ファイルは生成される。
5) 入出力状態=07。 入出力文の実行は成功したが,NO REWIND指定,REEL / UNIT指定,若しくは
FOR REMOVAL指定のあるCLOSE文,又はNO REWIND指定のあるOPEN文が,非リール/ユニッ
ト媒体上に存在する物理ファイルを参照している。
9.1.12.2 実装者定義の成功完了
1) 入出力状態=0x。 実装者定義の条件が成立する。xの値は,実装者定義とし,大文字の"A"〜"M"又は
小文字の"a"〜"m"のいずれであってもよい。ここで,文字の範囲は,ISO/IEC 646の文字の並びの定
義による。この条件は,入出力状態の値9x又は00〜61までに対して指定されたいずれの条件とも重
複してはならない。
9.1.12.3 ファイル終了条件による不成功完了
1) 入出力状態=10。 順呼出しREAD文を実行しようとしたが,その次又はその前の論理レコードが物
理ファイル中に存在しない。次のいずれかの理由による。
a) NEXTが明示的又は暗黙に指定されており,物理ファイルの終わりに達した。
b) PREVIOUSが指定されており,物理ファイルの先頭に達した。
c) 不定ファイルと記述され物理ファイルは存在しないファイルに対して順呼出しREAD文を初めて実
137
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
行しようとした。
2) 入出力状態=14。 相対ファイルに対して順呼出しのREAD文を実行しようとしたが,相対レコード
番号の有効けた数が,そのファイルの相対キーデータ項目の大きさより大きい。
9.1.12.4 無効キー条件による不成功完了
1) 入出力状態=21。 索引ファイルの順呼出しで,順序誤りがあった。あるファイルに対し同じファイル
結合子を介したREAD文の実行成功から次のREWRITE文の実行までの間に,主レコードキーの値が
実行時要素によって変更された。又は連続するレコードキー値が昇順でなければならないという要件
に違反した[14.8.47(WRITE文)参照]。
2) 入出力状態=22。 次のいずれかである。
a) 相対物理ファイルに,キー値の重複を生じるレコードを書き出そうとした。
b) 索引物理ファイルに,主レコードキー値の重複を生じるレコードを書き出そうとした。
c) 索引物理ファイルに,副レコードキー値の重複を生じるレコードを書き出そう又は書き換えようと
した。さらに,このキーに対してはDUPLICATES指定がない。
3) 入出力状態=23。 次のいずれかである。
a) 物理ファイル中に存在しないレコードを乱呼出ししようとした。
b) 不定ファイルと記述され物理ファイルは存在しないファイルに対してSTART文又は乱呼出しの
READ文を実行しようとした。
c) START文を実行しようとしたが,キーの長さの指定が正しくない。
d) 順ファイルにSTART文を実行しようとしたが,そのファイルにはレコードがない。又は,その順呼
出しファイルは,指定されたレコードに位置付けできない。
4) 入出力状態=24。 相対編成又は索引編成の物理ファイルに対して,COBOLの外部で定義された区域
を越えて書き出そうとした。この区域の定義方法は,実装者定義とする。又は,相対ファイルに対し
て順呼出しのWRITE文を実行しようとしたが,相対レコード番号の有効けた数が,そのファイルに
対する相対キーデータ項目の大きさよりも大きい。
9.1.12.5 永続誤り条件による不成功完了
1) 入出力状態=30。 永続誤りが存在する。入出力操作に関してこれ以上の情報はない。
2) 入出力状態=31。 永続誤りが存在する。OPEN文の実行中に,ファイル管理記述項のUSING指定の
データ名のデータ項目の内容が,そのファイル管理記述項のASSIGN句の装置名又は定数の指定と整
合していない。
3) 入出力状態=34。 区域侵害による永続誤りが存在する。順編成の物理ファイルに対して,COBOLの
外部で定義された区域を越えて書き出そうとした。この区域の定義方法は,実装者定義とする。
4) 入出力状態=35。 永続誤りが存在する。記述が不定ファイルではなく物理ファイルが存在しないファ
イルに対して,INPUT,I-O,又はEXTENDの指定をもつOPEN文を実行しようとした。
5) 入出力状態=37。 永続誤りが存在する。あるファイルにOPEN文を実行しようとしたが,OPEN文に
指定したオープンモードはそのファイルには使えない。次のいずれかである。
a) EXTEND指定又はOUTPUT指定を書いたが,そのファイルでは書込み操作ができない。
b) I-O指定を書いたが,出力両用モードで開いたときにそのファイルの編成で行ってもよい入出力操
作が,そのファイルでは行えない。
c) INPUT指定を書いたが,そのファイルでは読取り操作ができない。
6) 入出力状態=38。 永続誤りが存在する。それ以前に施錠して閉じてあるファイル結合子に対して
138
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
OPEN文を実行しようとした。
7) 入出力状態=39。 ファイル固有属性と,そのファイルに対してソース単位が指定した属性との間に不
整合が検出されたため,OPEN文が不成功に終わった。
9.1.12.6 論理誤り条件による不成功完了
1) 入出力状態=41。 開かれているファイル結合子に対して,OPEN文を実行しようとした。
2) 入出力状態=42。 開かれていないファイル結合子に対して,CLOSE文又はUNLOCK文を実行しよ
うとした。
3) 入出力状態=43。 順呼出し法の大容量記憶ファイルに対して,あるファイル結合子を介して
REWRITE文又はDELETE文を実行する前に,同じファイル結合子を介して関連ファイルに対して実
行された最後の入力文が,成功完了したREAD文ではない。
4) 入出力状態=44。 区域侵害が発生した。次のいずれかの理由による。
a) 関連するファイル名のRECORD IS VARYING句で指定された最大レコードより大きいか,又は最小
レコードより小さいレコードを,書出し又は書換えしようとした。
b) 順ファイルに対してレコードを書き換えようとしたが,そのレコードが書き換えられるレコードと
同じ大きさでない。
c) RECORD句の書き方3(固定長又は可変長)に対して実装者が規定するレコード形式が可変長であ
る場合に,固定長又は可変長形式のRECORD句で指定された最大レコードより大きいか,又は最
小レコードより小さいレコードを書き出そう又は書き換えようとした。
5) 入出力状態=45。 レコード識別の失敗。FORMAT句又はCODE-SET句で処理するレコード記述項が
選択されなかったため,入出力文が不成功に終わった。
6) 入出力状態=46。 入力モード又は入出力両用モードで開かれたファイル結合子に順呼出しのREAD
文を実行しようとしたが,有効な次のレコードが確定しない。次のいずれかである。
a) そのファイル結合子を参照する先行するSTART文が不成功だった。
b) そのファイル結合子を参照する先行するREADが不成功だった。
7) 入出力状態=47。 入力モード又は入出力両用モードで開いていないファイル結合子に対して,READ
文又はSTART文を実行しようとした。
8) 入出力状態=48。 次に示すとおり,正しいオープンモードで開いていないファイル結合子に対して,
WRITE文を実行しようとした。
a) 順呼出し法の場合,ファイル結合子が拡張モード又は出力モードで開かれていない。
b) 動的呼出し法又は乱呼出し法の場合,ファイル結合子が入出力両用モード又は出力モードで開かれ
ていない。
9) 入出力状態=49。 入出力両用モードで開いていないファイル結合子に対して,REWRITE文又は
DELETE文を実行しようとした。
9.1.12.7 レコード操作不整合条件による不成功完了
1) 入出力状態=51。 入出力文が,別のファイル結合子によって現在施錠されているレコードを呼出しし
ようとしたため,不成功に終わった。
2) 入出力状態=52。 入出力文が,デッドロックのため不成功に終わった。デッドロックが検出される条
件は,実装者定義とする。
3) 入出力状態=53。 入出力文がレコード錠を要求したが,実装系が許す最大限の錠を実行単位が保持し
ているため,不成功に終わった。
139
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4) 入出力状態=54。 入出力文がレコード錠を要求したが,実装系が許す最大限の錠をファイル結合子が
保持しているため,不成功に終わった。
9.1.12.8 ファイル共用不整合条件による不成功完了
1) 入出力状態=61。 ファイル共用不整合条件が成立する。ある物理ファイルに対してOPEN文を実行
しようとしたが,その物理ファイルは別のファイル結合子によって,この要求と整合しない方法で既
に開かれている。起こり得る状況は,次による。
a) 物理ファイルを開こうとしたが,その物理ファイルは現在,別のファイル結合子によって“排他”
の共用モードで既に開かれている。
b) 物理ファイルを“排他”の共用モードで開こうとしたが,その物理ファイルは現在,別のファイル
結合子によって既に開かれている。
c) 物理ファイルを入出力両用モード又は拡張モードで開こうとしたが,その物理ファイルは現在,別
のファイル結合子によって“読取り専用”の共用モードで既に開かれている。
d) 物理ファイルを“読取り専用”の共用モードで開こうとしたが,その物理ファイルは現在,入出力
両用モード又は拡張モードで別のファイル結合子によって既に開かれている。
e) 物理ファイルを出力モードで開こうとしたが,その物理ファイルは現在,別のファイル結合子によ
って既に開かれている。
9.1.12.9 実装者定義条件による不成功完了
1) 入出力状態=9x。 実装者定義条件が成立する。この条件は入出力状態値00〜61によって指定された
どの条件とも重複しない。xの値は,実装者定義とする。
9.1.13 無効キー条件
無効キー(invalid key)条件は,DELETE文,READ文,REWRITE文,START文又はWRITE文の実行
の結果として起きることがある。無効キー条件が起きると入出力文の実行は不成功に終わり,ファイルは
何も影響を受けない。
入出力文に指定した入出力操作の実行後に無効キー条件が成立する場合,次の動作がここに示す順序で
行われる。
1) 入出力文に関連するファイル結合子の入出力状態に,無効キー条件を示す値が設定される。
2) 入出力文にINVALID KEY指定があると,ファイル結合子に関連するUSE EXCEPTIONファイル手続
き又はUSE EXCEPTION EC-I-O-INVALID-KEY手続きは,その例外状態が起きても実行されず,
INVALID KEY指定中の無条件文に制御が移る。その後,無条件文中の各文の規則に従って実行が続
く。明示的に制御の移行を引き起こす手続き分岐文又は条件文が実行されれば,その文の規則に従っ
て制御が移る。さもなければ,INVALID KEY指定中の無条件文の実行が完了した後,入出力文の終
わりに制御が移る。このとき,NOT INVALID KEY指定はあっても無視される。
3) 入出力文にINVALID KEY指定がなくて,入出力文に関連するファイル結合子に関連付けられたUSE
AFTER EXCEPTION手続きがあると,そのUSE AFTER EXCEPTION手続きが実行され,USE文の規
則に従って制御が移る。NOT INVALID KEY指定はあっても無視される。
4) 入出力文にINVALID KEY指定がなくて,入出力文に関連するファイル結合子に関連付けられたUSE
AFTER EXCEPTION手続きがないと,その入出力文の終わりに制御が移る。このとき,NOT INVALID
KEY指定はあっても無視される。
入出力文に指定した入出力操作の実行後に無効キー条件が成立しない場合,INVALID KEY指定があっ
ても無視される。この文に関連するファイル結合子の入出力状態は更新され,次の動作が起こる。
140
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) 入出力状態が無効キー条件でない不成功完了を示している場合,ファイル結合子に関連するUSE
AFTER EXCEPTIONファイル手続きの規則,又は発生したEC-I-O例外状態に関連するUSE AFTER
EXCEPTION例外名手続きの規則に従って,制御が移る。
2) 入出力状態が成功完了を示している場合,制御が移る先は,入出力文の終わりか,又はNOT INVALID
KEY指定があるときはそこに指定された無条件文とする。後者の場合,無条件文中の各文の規則に従
って実行が続く。明示的に制御の移行を引き起こす手続き分岐文又は条件文が実行されれば,その文
の規則に従って制御が移る。さもなければ,NOT INVALID KEY指定中の無条件文の実行が完了した
後,その入出力文の終わりに制御が移る。
9.1.14 共用モード
共用モード(sharing mode)は,あるファイルがファイル共用及びレコード施錠に関与する対象か否かを
表し,そのファイルに対して行ってもよいファイル共用(又は非共用)の度合いを規定する。共用モード
は,共用される物理ファイルに対し,そのOPENの期間中に,別のファイル結合子から実行されてもよい
操作の種類を規定する。
共用モードの確立に当たっては,OPEN文のSHARING指定のほうがファイル管理記述項のSHARING
句よりも優先する。OPEN文にSHARING指定がなければ,ファイル管理記述項のSHARING句によって
共用モードは完全に決定する。いずれにも指定がない場合,ファイルを開く共用モードは,実装者定義と
する。この実装者定義の共用モードは,この規格が規定するいずれかのモードであってもよいし,完全に
実装者定義のモードであってもよい。指定される場所がOPEN文でも,ファイル管理段落でも,実装者定
義の既定解釈でも,規格の共用モードに対する規則は同じとする。
COBOLとは別な機能によって,ある程度のファイル共用を指定してもよい。ただし,COBOLのファイ
ル共用との相互関係は,実装者定義とする。
注記 これらの機能には,ジョブ制御言語又は他のプログラム言語が含まれる。実装者は多言語環境
でのファイル錠及びレコード錠を尊重することが望ましい。その他の言語で書かれたプログラ
ムがファイル共用及びレコード施錠の機能を利用できる場合,実装者はその方法を文書化する
ことが望ましい。
共用される物理ファイルは,そのファイルへの同時呼出しを行ってもよい装置上に存在しなければなら
ない。物理ファイルへの同時呼出しを行ってもよい装置の種類は,実装者定義とする。
共用される物理ファイルへの呼出しがOPEN文によってできるようになる以前に,共用モードとオープ
ンモードとの組合せを,その物理ファイルに現在関連している別のファイル結合子の全てが許していなけ
ればならない。さらに,そのOPEN文に指定する共用モードは,その物理ファイルに現在関連している他
の全てのファイル結合子の,全ての共用モード及びオープンモードを許さなければならない[9.1.12(入
出力状態),14.8.26(OPEN文),表20(現在開かれている共用ファイルに対するOPENの可否)参照]。
ファイル共用モードは,物理ファイルに対する呼出しを次のとおり制御する。
1) 排他(with no other)共用モードは,物理ファイルへの排他的呼出しを指定する。この物理ファイルが,
現時点で別のファイル結合子を介して開かれているとき,このファイル結合子とこの物理ファイルと
の関連付けは不成功となる。OPEN文が成功した場合,それ以降このファイル結合子が閉じられるま
で,別のファイル結合子を介してこの物理ファイルを開く要求は不成功となる。レコード錠は無視さ
れる。
2) 読取り専用(with read only)共用モードは,これと別のファイル結合子を介しての物理ファイルへの
同時呼出しを,入力モードだけに制限する。この物理ファイルが別のファイル結合子に関連付けられ
141
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
そのオープンモードが入力以外であるとき,このファイル結合子とこの物理ファイルとの関連付けは
不成功となる。OPEN文が成功した場合,それ以降このファイル結合子が閉じられるまで,別のファ
イル結合子を介してこの物理ファイルを入力モード以外で開く要求は不成功となる。レコード錠は有
効である。
3) 他の全てと(with all other)の共用モードは,入力モード,入出力両用モード,又は拡張モードを指定
した別のファイル結合子に対し,このほかにある該当制限事項による限りにおいて,物理ファイルへ
の同時呼出しを許可する。レコード錠は有効である。
複数の呼出し経路が,同じ実行時要素内に存在しても,別々の入れ子の実行時要素に存在しても,同じ
実行単位内の別々の実行時要素に存在しても,異なる実行単位内の実行時要素内に存在してもよい。
ファイル錠の設定は,入出力文のアトミック(不可分)な動作の部分である。
ファイル錠は,そのファイル結合子に対して明示的な又は暗黙のCLOSE文が実行されると,解除され
る。
9.1.15 レコード施錠
レコード施錠は,ある共用ファイル中の論理レコードへの同時呼出しを制御する機能を提供する。二つ
の施錠モード,すなわち,自動(automatic)及び手動(manual)が使用可能である。単一レコード施錠又
は複数レコード施錠は,自動及び手動の両方の施錠で使用可能である。
自動の単一レコード施錠では,錠の設定と解除を実行時システムが制御する。自動の複数レコード施錠
では,錠の設定は実行時システムが制御するが,錠の解除は明示的UNLOCK文の実行によって応用プロ
グラムが制御する。
手動の単一レコード施錠及び手動の複数レコード施錠では,錠の設定も解除も,入出力文中のLOCK指
定及びUNLOCK文を用いて応用プログラムが制御する。
ファイル結合子があるレコードを施錠している間は,同じ実行単位中であれ別の実行単位からであれ,
別のファイル結合子からそのレコードを呼び出すことはできない。ただし,READ文をIGNORING LOCK
指定付きで実行した場合は例外とする。施錠されたレコードは,その錠を保持している同一のファイル結
合子からなら再び呼び出してもよい。
いずれの場合も,あるファイルに対して確立されたレコード錠は,そのファイルに対する明示的な又は
暗黙のCLOSE文の実行によって全て解除される。
実装者は,論理レコードが施錠された場合以外に,レコードが施錠された状態となる状況を規定しても
よい。
注記 このような状況の例としては,索引再編中のレコード群の施錠,及び施錠された論理レコード
を含んでいる物理ブロックの施錠がある。物理レコード一つ当たりに含まれる論理レコードが
一つになるよう物理ファイルを定義しておけば,施錠されたレコードと同じブロック中にある,
別のレコードが施錠された状態になる状況を避けることができる。
9.1.16 整列ファイル
整列ファイル(sort file)とは,SORT文によって整列されるレコードの集まりである。ブロック化及び
内部領域の割付けに関する規則は,SORT文に特有のものである。RELEASE文及びRETURN文は,バッ
ファ領域,ブロック又はリールに関して何も意味をもたない。したがって整列ファイルは,入力ファイル
から生成され(RELEASE文),処理され(SORT文),出力ファイルで使用可能になる(RETURN文)内
部ファイルとみなすことができる。
整列ファイルはファイル管理記述項で命名され,整列併合用ファイル記述項で記述される。整列ファイ
142
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ルを参照してもよい文は,RELEASE文,RETURN文及びSORT文だけである。
9.1.17 併合ファイル
併合ファイル(merge file)とは,MERGE文によって併合されるレコードの集まりとする。ブロック化
及び内部領域の割付けに関する規則は,MERGE文特有とする。RETURN文は,バッファ領域,ブロック
又はリールに関して何も意味をもたない。したがって併合ファイルは,入力ファイル群を組み合わせて生
成され(MERGE文),出力ファイルで使用可能となる(RETURN文)内部ファイルとみなすことができる。
併合ファイルはファイル管理記述項で命名され,整列併合用ファイル記述項で記述される。併合ファイ
ルを参照してもよい文は,RETURN文及びMERGE文だけである。
9.1.18 動的ファイル割当て
動的ファイル割当て(dynamic file assignment)によって利用者は,ファイル結合子と物理的なファイル
との間の関連付けを実行時まで遅延させることができる。この機能はまた,実行単位の実行中に一つのフ
ァイル結合子に幾つかの異なる物理ファイルを関連付けるために用いてもよい。これはファイル管理記述
項のASSIGN句のUSING指定によって指定される。USING指定は英数字データ項目を指し,その内容は,
そのファイルに対するOPEN文,SORT文又はMERGE文を実行する時点で,呼出し対象の特定の物理フ
ァイルを一意に識別する。
9.1.19 報告書ファイル
報告書ファイル(report file)は,ファイル記述項にREPORT句のある順編成の出力ファイルとする。
9.2
画面
9.2.1
端末画面
端末は,画面とキーボードを介した入出力機能を提供する。画面を行及び列の格子とみなし,一つの列
の幅は固定幅の英数字文字位置一つとする。列と,計算機英数字符号化文字集合の文字との間の対応は,1
対1とする。列と,計算機各国文字符号化文字集合の文字との間の固定の対応は,実装者が規定する。
注記1 この規格では,文字によって幅の異なる字体を用いて画面上にデータを表示する方式は,規
定しない。
個々の入出力操作では,画面に一つ以上のフィールドが含まれる。フィールドの大きさは,1文字から,
その画面に指定できる最大文字数までの範囲を取り得る。各フィールドは,基本画面項目を表している。
単一又は複数のフィールドを論理的にまとめて集団画面項目にしてもよい。このようなフィールドは,連
続していなくてもよい。集団画面項目に別の集団画面項目が含まれてもよい。集団画面項目内のフィール
ド群には,端末からの入力中に,フィールドが処理される前後関係を決めるための,順序が付けられる。
フィールドの順序は,画面記述項中の画面項目の宣言の順序によって決まる。
注記2 集団画面項目は,集団データ項目とは異なり,特定の項類の一続きの文字列として扱われる
ことはない。
画面には,各々の表示位置に関連付けられた,目に見える属性がある。
9.2.2
機能キー
機能キー(function key)には機能キー番号が関連付けられていて,機能キーが押下された場合に機能キ
ー番号が実行単位へ返される。
特定の文脈中で特定の機能を行うための文脈依存の機能キーを実装者定義してもよい。文脈依存の機能
キーを定義したとき,各々の文脈依存の機能キーに対して返される機能番号は,実装者が規定しなければ
ならない。
機能キー及び文脈依存の機能キーを有効化したり無効化したりする方法があるとき,その方法は実装者
143
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
定義とする。
9.2.3
CRT状態
CRT状態(CRT status)とは4文字からなる概念上の実体であって,そこには端末入出力動作の状態を
示す値が設定される。その値の設定が行われるのはACCEPT画面文の実行中であって,そのACCEPT文
にON EXCEPTION指定又はNOT ON EXCEPTION指定があればそれに関連する無条件文の実行の前とな
る。CRT状態の値は,特殊名段落のCRT STATUS句を使用することによって,使用可能になる。
CRT状態は,入力操作が完了した後に,次の条件のうち一つを表す。
1) 正常終了による成功完了。 入力文の実行が成功した。
2) 機能キー押下での終了による成功完了。 入力文の実行が成功した。
3) 不成功完了。 入力文の実行が不成功となった。これ以降の端末入出力文は妨げられない。
4) 実装者定義の不成功完了。
入力操作の実行の結果生じる条件に対してCRT状態に設定される値を,次に示す。
1) 正常終了による成功完了。
CRT状態=0000。入力文の実行が成功した。この終了は,操作員が送信キーを押下したことによる
か,又はAUTO句の指定があり論理的に次のフィールドがない画面項目に対して最後の文字が入力さ
れたことによる。
2) 機能キー押下での終了による成功完了。
a) CRT状態=1xxx。入力文の実行が成功した。この終了は,操作員が機能キーを押下したことによる。
xxxの数値は,押下された機能キーの番号である。
b) CRT状態=2xxx。入力文の実行が成功した。この終了は,操作員が文脈依存の機能キーを押下した
ことによる。xxxの数値は,押下された機能キーの番号である。
3) この規格が定義する条件による不成功完了。
a) CRT状態=8000。正しい画面位置に配置される入力画面項目がないためACCEPT画面文が不成功と
なった。
b) CRT状態=8001。不適合データが画面項目に入力され,そこに残ったため,ACCEPT画面文が不成
功となった。
注記 実装系によっては,実行を続行する前に操作員にデータを修正させ,そのためこのような
状態が起こらないものもある。
4) 実装者定義条件による不成功完了。
CRT状態=9xxx。 実装者定義条件が成立している。xxxの数値は実装者定義とする。
9.2.4
カーソル
文字位置指定可能な端末では,カーソル(cursor)の概念を用いて,キーボード操作が表示される画面上
の位置を示す。一般にこれは,目に見えるカーソル記号の位置によって示される。
DISPLAY画面文の実行中,カーソルの位置と目に見えるか否かは,規定されない。
ACCEPT画面文の実行中,カーソルの位置と目に見えるか否かは,操作員の入力と同期の取れる形態で
キーボードを使える期間中だけ規定される。カーソルは目に見えなければならず,キーボード入力が表示
される画面上の位置を示さなければならない。
ACCEPT画面文の実行中,カーソルは最初,画面記述項中でTO指定又はUSING指定のある最初の基本
画面項目に位置付けられる。ただし,特殊名段落中にCURSOR句の指定がある場合は別で,そのCURSOR
句で指定されたとおりにカーソルが位置付けられる。
144
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
一度キーボードが操作員の入力に使えるようになれば,操作員はTO指定又はUSING指定のある基本画
面項目へとカーソルを動かしてもよい。項目に対する画面記述項によっては,操作員が表示項目内の文字
へとカーソルを動かしてもよい。
カーソルの位置を変更する全てのキー及びそのキーによるカーソルの動きは,実装者定義とする。
9.2.5
カーソル位置指示子
カーソル位置指示子(cursor locator)は,6文字からなる概念上の実体である。そこには,ACCEPT画面
文の実行中,キーボードが同期している時点での,目に見えるカーソルの表示画面上の位置を示す値が,
実行時要素によって設定される。この位置は,画面の左上の角からの相対位置である。
ACCEPT画面文の実行が成功すると,カーソル位置指示子は,操作員が終了キーか又は機能キーを押下
した時点の,目に見えるカーソルの位置を示すように設定される。ACCEPT文の実行が不成功であれば,
カーソル位置指示子の値は規定されない。
カーソル位置指示子は,特殊名段落のCURSOR句を使用することによって,実行時要素で使用可能にな
る。先頭3文字は行番号を3けたの数で表し,最上段の行は001となる。次の3文字は列番号を3けたの
数で表し,最左端列は001となる。目に見えるカーソルの位置の行番号又は列番号が999を超えていると
き,カーソル位置指示子の値は規定されない。
9.2.6
現在の画面項目
ACCEPT文の実行中に,一つ以上の基本入力画面項目を端末画面上に表示することができる。操作員は
文脈依存のカーソル位置付けキーを用いて,画面項目間でカーソルを動かすことができる。画面項目が満
杯になったり画面項目の最後の文字が打けん(鍵)されたりした場合,カーソルは,ある画面項目から別
の画面項目へ,自動的に移動することもある。カーソルが位置付けられている画面項目が,現在の画面項
目(current screen item)である。操作員が打けん(鍵)したデータは現在の画面項目へ設定され,現在の
画面項目の表示が書き換わることもある。
9.2.7
色彩番号
色は,画面項目に対して指定される属性の一つである。白黒端末では,色の属性は実装者によって別の
属性に対応付けられる。
ある色を選択するには,その色を表す整数を指定する。色の種類及びそれに関連付けられる色彩番号を
次に示す。
黒
0
青
1
緑
2
水色
3
赤
4
紫
5
茶色/黄色
6
白
7
注記 これらの色は大体の目安である。実際の色は,端末の能力に依存するほか,HIGHLIGHT属性
などの他の理由にも影響を受けることがある。例えば,6は茶色のはずがHIGHLIGHTと一緒
なら黄色に見えることがある。0は黒のはずがHIGHLIGHTと一緒なら灰色に見えることがあ
る。
145
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
9.3
オブジェクト
9.3.1
オブジェクト及びクラス
オブジェクト(object)とは,データ及びメソッドからなる情報処理単位とする。メソッド(method)と
は,オブジェクト中のデータに対して作用するように設計されたコードの単位である。各々のオブジェク
トは,データ及びファイル結合子の個別のインスタンスはそれ自体で保有して,そのオブジェクトに対し
て定義されたメソッドは同じクラスに属するその他のオブジェクトと共有する。
クラス(class)とは,オブジェクトを作成するときのひな型である。このひな型を定義するソース単位
がクラス定義であって,オブジェクトのデータの特徴及びメソッド群を規定するものである。一つのクラ
スにはファクトリオブジェクトとインスタンスオブジェクトとを記述してもよい。あるクラスのファクト
リオブジェクトのインスタンスは,実行時に実行単位中で高々一つとする。インスタンスオブジェクトの
実行時インスタンスは,実行単位中で任意の時点に何個存在してもよい。
9.3.2
オブジェクト参照
オブジェクト参照とは,暗黙又は明示的に定義されたデータ項目であって,その内容は,あるオブジェ
クトを,そのオブジェクトの生存期間中,一意に識別するオブジェクト参照値である。暗黙に定義される
オブジェクト参照としては既定義オブジェクト参照があるほか,オブジェクトプロパティ,オブジェクト
ビュー,文内メソッド呼出し及び関数が返すオブジェクト参照がある。明示的に定義されるオブジェクト
参照とは,USAGE OBJECT REFERENCE句を指定したデータ記述項で定義されるデータ項目とする。
明らかに異なる二つのオブジェクトが同一のオブジェクト参照の値をもつことはなく,また,全てのオ
ブジェクトには少なくとも一つのオブジェクト参照がある。
9.3.3
既定義オブジェクト参照
既定義オブジェクト参照(predefined object reference)とは,暗黙に生成されるデータ項目であって,一
意名EXCEPTION-OBJECT,NULL,SELF及びSUPERのいずれかで参照されるものである。各々の既定
義オブジェクト参照に特定の意味がある[8.4.2(いろいろな一意名)参照]。
9.3.4
メソッド
オブジェクトの手続きコードはメソッド内に書かれる。メソッドはそれぞれ固有のメソッド名をもち,
固有のデータ部及び手続き部をもつ。メソッドを呼び出すと,そのメソッドに含まれている手続きコード
が実行される。メソッドの呼出しには,オブジェクトを参照する一意名と,そのメソッドの名前とを指定
する。メソッドにはパラメタ及び返却項目を指定してもよい。メソッドは常に再帰属性をもち,自分自身
を呼び出してもよい。
9.3.5
メソッド呼出し
メソッド中の手続きコードは,INVOKE文,文内メソッド呼出し,又はオブジェクトプロパティへの参
照で,そのメソッドを呼び出すことで実行される。その呼出しに束縛されるメソッド実装は,実行時に,
メソッドの呼出し対象となったオブジェクトの属するクラスに依存する。さらに,そのクラスはオブジェ
クト参照の定義で静的に指定されたクラスである必要はなく,実行時に実際に参照されているオブジェク
トの属するクラスが,特定のメソッド実装へのメソッド呼出しの解決に用いられる。
メソッド呼出しが,オブジェクト参照を用いてオブジェクトを指定しているとき,その解決結果は,次
のとおりとする。
1) 識別されるオブジェクトがファクトリオブジェクトであれば,ファクトリメソッドとする。
2) そうでなければ,解決結果はインスタンスメソッドとする。
さらに,メソッド呼出しがSUPERを用いてオブジェクトを指定しているとき,この呼出しは範囲制限
146
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
の探索方法を用いて解決される[8.4.2.8(SELF及びSUPER)参照]。
メソッド呼出しが,あるクラス名を用いてオブジェクトを指定しているとき,その指定されたクラスの
ファクトリオブジェクトが呼出し対象オブジェクトに用いられ,メソッド呼出しの解決結果はファクトリ
メソッドとなる。
メソッド解決は,次のとおりに進む。
1) その呼出しに指定されているメソッド名をもつメソッドが,そのオブジェクトの属するクラスで定義
されていれば,そのメソッドが束縛される。
2) さもなければ,継承の階層の上位から継承されたクラスがそれぞれ,INHERITS句中に書いた順序で
左から右へ検索される。その呼出しに指定されているメソッド名をもつメソッドが,検索したクラス
中に定義されているか,又は継承されたクラスの全てを検索しつくして該当するメソッドが見つから
ないか,いずれかが判明するまで検索が続けて行われる。メソッドが見つかれば,そのメソッドが束
縛される。メソッドが見つからなければ,EC-OO-METHOD例外状態になる。
9.3.6
メソッド原型
インタフェース定義内でのメソッド定義は,メソッド原型(method prototype)を定義する。メソッド原
型は手続き文を指定するものではなく,メソッドとの接続に必要な詳細情報を指定したりメソッドの適合
を調べたりするものである。
9.3.7
適合及びインタフェース
オブジェクト指向の文脈において用語“適合(conformance)”は,オブジェクトのインタフェース間の
関係を記述するために使用され,継承,インタフェース定義,適合検査などの基本的な機能の基礎となっ
ている。
注記1 対応国際規格では,用語“conformance”は,“規格合致”の意味でも用いられる[箇条3(規
格合致性)参照]。
注記2 適合検査が行われるのは一般に翻訳時であるが,例外として,オブジェクトビュー又は非限
定オブジェクト参照を用いたメソッドでは実行時に適合検査を行う。
9.3.7.1
オブジェクト指向での適合
適合によって,オブジェクトは,そのオブジェクトが属するクラスのインタフェースとは異なるインタ
フェースに従って使用することができる。適合は,単方向の関係であり,インタフェースが別のインタフ
ェースに適合する関係と,オブジェクトがインタフェースに適合する関係とがある。
9.3.7.1.1
インタフェース
どのオブジェクトも,それぞれのインタフェースをもつ。それは,継承されたメソッドも含め,オブジ
ェクトが提供している個々のメソッドの名前とパラメタ指定とからなる。各クラスは二つのインタフェー
ス,つまり,ファクトリオブジェクト用のインタフェースとインスタンスオブジェクト用のインタフェー
スとを定義する。
インタフェース定義中にメソッド原型を指定することによって特定クラスに依存しないインタフェース
を定義してもよい。
9.3.7.1.2
インタフェース間の適合
インタフェース(インタフェース1)が別のインタフェース(インタフェース2)と同じインタフェース
であるとき,これらは相互に適合する。インタフェース1とインタフェース2とが異なるインタフェース
であるとき,インタフェース1がインタフェース2に適合するのは,次に示す条件を満たす場合であり,
かつ,その場合だけとする。
147
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) インタフェース2の各メソッドに対し,同名のメソッドがインタフェース1にも存在して,同数の仮
パラメタをとり,BY REFERENCE及びBY VALUEの指定も整合している。
2) インタフェース2の,あるメソッドの,ある仮パラメタがオブジェクト参照であるとき,それに対応
するインタフェース1中のパラメタは,次の規則に従ったオブジェクト参照である。
a) インタフェース2中のパラメタが非限定オブジェクト参照であるとき,対応するインタフェース1
中のパラメタも非限定オブジェクト参照である。
b) インタフェース2中のパラメタの記述にインタフェース名があるとき,対応するインタフェース1
中のパラメタの記述にも同じインタフェース名がある。
c) インタフェース2中のパラメタの記述にクラス名の指定があるとき,対応するインタフェース1中
のパラメタの記述にも同じクラス名の指定があり,かつ,FACTORY指定及びONLY指定の有無も
両インタフェース中で同じである。
d) インタフェース2中のパラメタ記述にACTIVE-CLASS指定があるとき,対応するインタフェース1
中のパラメタ記述にもACTIVE-CLASS指定があり,かつ,FACTORY指定及びONLY指定の有無
も両インタフェース中で同じである。
3) インタフェース2の,あるメソッドの,ある仮パラメタがオブジェクト参照ではないとき,それに対
応するインタフェース1中の仮パラメタは,同一のANY LENGTH句,BLANK WHEN ZERO句,
JUSTIFIED句,PICTURE句,SIGN句及びUSAGE句をもつ。ただし,次は例外とする。
a) 通貨編集用記号どうしが一致するのは,対応し合う通貨文字列が同じである場合であり,かつ,そ
の場合だけとする。
b) PICTURE記号のピリオドどうしが一致するのは,DECIMAL-POINT IS COMMA句がこれら二つの
インタフェースの両方で有効又は両方で無効な場合であり,かつ,その場合だけとする。PICTURE
記号のコンマどうしが一致するのは,DECIMAL-POINT IS COMMA句がこれらのインタフェースの
両方で有効又は両方で無効な場合であり,かつ,その場合だけとする。
さらに,PICTURE句の現地特性指定が一致するのは次の場合であり,かつ,その場合だけとする。
− 両方ともPICTURE句のLOCALE指定のSIZE指定に同じ指定をしていて,かつ,
− 両方ともLOCALE指定の現地特性名を省略している,又は両方ともLOCALE指定に同じ外
部識別を指定している。ここでいう外部識別とは,特殊名段落のLOCALE句において現地特
性名と関連付けられた外部現地特性名又は定数値のことである。
4) 手続き部見出しのRETURNING指定の有無が,対応するメソッド間で同じである。
5) インタフェース2の,あるメソッドの返却項目がオブジェクト参照であるとき,それに対応するイン
タフェース1中の返却項目は,次の規則に従ったオブジェクト参照である。
a) インタフェース2中の返却項目が非限定オブジェクト参照であるとき,対応するインタフェース1
中の返却項目は,オブジェクト参照である。
b) インタフェース2中の返却項目の記述に,インタフェースint-rを参照するインタフェース名がある
とき,対応するインタフェース1中の返却項目はオブジェクト参照で,更に次の規則に従う。
1. 記述中にインタフェース名があって,それがインタフェースint-rを指しているか,又は定義に
INHERITS int-r句のあるインタフェースを指している。
2. 記述中にクラス名があって,更に次の規則に従う。
a. 記述中にFACTORY指定があるときは,指定クラスのファクトリオブジェクトの記述中に,int-r
を参照するIMPLEMENTS句がなければならない。
148
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
b. 記述中にFACTORY指定がないときは,指定クラスのインスタンスオブジェクトの記述に,int-r
を参照するIMPLEMENTS句がなければならない。
c) インタフェース2中の返却項目の記述に,クラス名があるとき,対応するインタフェース1中の返
却項目はオブジェクト参照で,更に次の規則に従う。
1. インタフェース2中の返却項目がONLY指定付きのとき,インタフェース1中の返却項目は,記
述中にONLY指定及び同じクラス名がなければならない。
2. インタフェース2中の返却項目がONLY指定なしのとき,インタフェース1中の返却項目は,記
述中に同じクラス名か又はその下位クラスの名前がなければならない。
3. FACTORY指定の有無が同じでなければならない。
d) インタフェース2中の返却項目の記述にACTIVE-CLASS指定があるとき,対応するインタフェー
ス1中の返却項目も記述にACTIVE-CLASS指定があり,FACTORY指定の有無も同じである。
インタフェース1中のメソッドの返却項目の記述が直接又は間接にインタフェース2を参照してい
るとき,インタフェース2中の対応するメソッドの返却項目の記述が直接又は間接にインタフェース
1を参照していてはならない。
6) インタフェース2の,あるメソッドの返却項目がオブジェクト参照でないとき,対応するインタフェ
ース1中の返却項目は,同一のANY LENGTH句,BLANK WHEN ZERO句,JUSTIFIED句,PICTURE
句,SIGN句及びUSAGE句をもつ。ただし,次は例外とする。
a) 通貨編集用記号どうしが一致するのは,対応し合う通貨文字列が同じである場合であり,かつ,そ
の場合だけとする。
b) PICTURE記号のピリオドどうしが一致するのは,DECIMAL-POINT IS COMMA句がこれら二つの
インタフェースの両方で有効又は両方で無効な場合であり,かつ,その場合だけとする。PICTURE
記号のコンマどうしが一致するのは,DECIMAL-POINT IS COMMA句がこれらのインタフェースの
両方で有効又は両方で無効な場合であり,かつ,その場合だけとする。
さらに,PICTURE句のLOCALE指定が一致するのは,次の両方が成立する場合,かつ,その場
合だけとする。
− 両方ともPICTURE句のLOCALE指定のSIZE指定に同じ指定をしていて,かつ,
− 両方ともLOCALE指定の現地特性名を省いているか,又は両方ともLOCALE指定に同じ外部
識別を指定している。ここでいう外部識別とは,特殊名段落のLOCALE句において現地特性名
と関連付けられた外部現地特性名又は定数値のことである。
7) インタフェース1又はインタフェース2中の,対応し合う仮パラメタ又は返却項目が,強い型付けの
集団項目であるとき,両方とも同じ型である。
8) 対応し合う仮パラメタに対して,OPTIONAL指定の有無は同じである。
9) インタフェース1中のメソッドの手続き部見出しにRAISING指定があるとき,対応するインタフェ
ース2中のメソッドの手続き部見出しに,次の規則に従ったRAISING指定がある。
a) インタフェース1のRAISING指定中に例外名がある場合,対応するインタフェース2のRAISING
指定中にも同じ例外名の指定がなければならない。
b) インタフェース1のRAISING指定中にクラス名がある場合,対応するインタフェース2のRAISING
指定中には次のいずれかが指定されていなければならない。
− 同じクラス名かその上位クラスの名前。FACTORY指定がつくのはインタフェース1のほうの
RAISING指定にFACTORY指定がある場合であり,かつ,その場合だけとする。
149
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
− そのクラスのファクトリオブジェクトによって実装されるインタフェースの名前,
ただし,インタフェース1のほうのRAISING指定にFACTORY指定がある場合。
− そのクラスのインスタンスオブジェクトによって実装されるインタフェースの名前,
ただし,インタフェース1のほうのRAISING指定にFACTORY指定がない場合。
c) インタフェース1のRAISING指定中にインタフェース名の指定がある場合は,対応するインタフ
ェース2のRAISING指定中には同じインタフェース名又はそのインタフェースに継承されている
インタフェースの名前がある。
10) インタフェース1とインタフェース2に対する入口規約は同じである。
注記 明示的に規定した入口規約名COBOLは,暗黙の入口規約名COBOLに適合する。
英数字集団項目が強い型付けでない場合,適合検査上は,同じ長さをもつ英数字基本項目と等価である
ものとみなされる。
9.3.7.1.3
パラメタ付きクラス及びパラメタ付きインタフェースの適合
パラメタ付きクラス又はパラメタ付きインタフェースを使用する場合,クラス定義又はインタフェース
定義の全体にわたって,仮パラメタを,実パラメタであるクラス又はインタフェースで置換したかのよう
に扱う。
9.3.8
多態性
多態性(polymorphism)は,同じ文で異なる処理をすることを許す機能である。COBOLでは,オブジェ
クト参照が異なるクラスのオブジェクトへの参照を内容としてもてるので,オブジェクト参照に対してメ
ソッドを呼び出すと,可能性のある幾つものメソッドのうちの一つに束縛される。束縛されるメソッドは,
実行の前に識別できることもあるが,一般には,実行時まで識別できない。
データ項目は,あるクラス又はその下位クラスに属するオブジェクトへの参照を内容としてもつように
宣言できる。また,あるインタフェースを実装するオブジェクトへの参照を内容としてもつようにも宣言
できる。宣言にインタフェースを用いる場合,参照されるオブジェクトの属するクラス群は,そのインタ
フェースを実装している限り,互いに全く無関係であってもよい。
9.3.9
クラス継承
クラス継承(class inheritance)は,幾つかのクラスのインタフェースと実装を用いて,別なクラスの基
礎とする機構である。継承する側のクラスを下位クラスと呼び,継承される側のクラスを上位クラスと呼
ぶ。下位クラスは,継承される側のクラス定義又は定義群に対して定義されているメソッド群を全てもつ
ことになるが,そこには,継承される側のクラス定義又は定義群が継承してきたメソッド群も全て含まれ
ている。下位クラスは,継承される側のクラス又はクラス群に対して定義されているデータ定義を全ても
つことになるが,そこには,継承される側のクラス又はクラス群が継承してきた全てのデータ定義も含ま
れている。
注記 これは,データを記述する実ソースコードにアクセス可能であるとか,そのソースコードが記
述するデータ項目を直接に下位クラス中で参照できるとかの意味ではない。この意味は,下位
クラスはそのソースコード中に上位クラス定義の複製があるように扱われる,つまり,継承さ
れたデータ項目は下位クラス中で定義されたものとみなされる,ということである。
継承されたデータ定義は,下位クラスの各インスタンスオブジェクト及びそのファクトリオブジェクト
に対してデータを定義する。インスタンスオブジェクトはそれぞれが,継承されたデータの自分専用の複
製をもつが,これは,継承される側のクラスのインスタンスオブジェクトに属する複製とは全く別の物で
ある。ファクトリオブジェクトはそれぞれが,継承されたデータの自分専用の複製をもつが,これもまた,
150
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
継承される側のクラスのファクトリオブジェクトに属する複製とは全く別の物である。継承されたデータ
項目の名前及び属性は,継承する側のクラス中からは参照不能とする。継承されたオブジェクトデータは
オブジェクトが生成される時点で初期化される。継承されたファクトリデータは,継承される側のクラス
及びクラス群のファクトリデータからは独立した割付けがなされ,下位クラスのファクトリが生成される
時点で初期化される。継承されたファクトリデータへの参照は,これらのデータを記述しているクラスの
ファクトリ定義内に指定したメソッド及びプロパティを介してだけ可能とする。継承されたオブジェクト
データへの参照は,これらのデータを記述しているクラスのオブジェクト定義内に指定したメソッド及び
プロパティを介してだけ可能とする。下位クラスは,全てのファイル定義も,データ定義と同様の方式で
データ定義と同じ要件に従って継承する。下位クラスでは,継承されたメソッドに加えて又は代えてメソ
ッドを定義してもよいし,継承されたデータ定義及びファイル定義に加えて(代えて,は不可)データ定
義又はファイル定義を指定してもよい。
下位クラスは,継承されるクラスのメソッドの幾つかを上書きして異なった実装を提供してもよいが,
下位クラスのインタフェースは,常に継承されるクラス群のインタフェースに適合しなければならない。
あるクラスがFINAL句付きで定義されたとき,そのクラスを上位クラスに用いてはならない。あるメソ
ッドがFINAL句付きで定義されたとき,そのメソッドを下位クラスにおいて上書きしてはならない。
継承されるクラス中の利用者定義語は,下位クラスからは参照不能とする。そのような語を下位クラス
定義中では,任意の種類の利用者定義語として用いてもよい。
9.3.10 インタフェース継承
インタフェース継承(interface inheritance)とは,幾つかのクラスのインタフェース定義を用いて,別な
インタフェースの基礎とする機構である。継承する側のインタフェースは継承される側のインタフェース
定義又は定義群に対して定義されているメソッド指定を全てもつことになるが,そこには,継承される側
のインタフェース定義又は定義群が継承してきたメソッド指定も全て含まれている。継承する側のインタ
フェースでは,継承されたメソッド指定の集合に加えて,新たなメソッドを定義してもよい。継承する側
のインタフェースは常に,継承される側の各インタフェースに適合しなければならない。
9.3.11 インタフェース実装
インタフェース実装(interface implementation)は,幾つかのインタフェース定義を用いて,あるクラス
の基礎とする機構である。実装する側のクラスは,実装される側のインタフェース定義又は定義群に対し
て定義されたメソッド指定を全て実装しなければならない。そこには,実装される側のインタフェース定
義又は定義群が継承してきたメソッド指定も全て含まれている。実装する側のクラスのファクトリオブジ
ェクトのインタフェースは,そのファクトリオブジェクトが実装するように指定されたインタフェースに
適合しなければならず,実装する側のクラスのインスタンスオブジェクトのインタフェースは,そのイン
スタンスオブジェクトが実装するように指定されたインタフェースに適合しなければならない。
9.3.12 パラメタ付きクラス
パラメタ付きクラス(parameterized class)とは,総称的なクラス(generic class)又は骨組みのクラス
(skeleton class)であって,幾つかの仮パラメタをもち,その仮パラメタがクラス名又はインタフェース
名で置換されるものである。実パラメタとして特定のクラス名又はインタフェース名を代入してパラメタ
付きクラスを展開するとき,パラメタ付きでないクラスとして機能する一つのクラスが生成される。
パラメタ付きクラスの展開は,全ての視点において,そのクラスがパラメタ付きでないクラスであるの
と同様に扱われる。
あるクラスがリポジトリ段落のEXPANDS指定中にパラメタ付きクラスとして書かれたとき,新しいク
151
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ラス(パラメタ付きクラスのインスタンス)が,パラメタ付きクラスの指定に基づいて生成される。この
クラスはそれ自体固有のファクトリオブジェクトをもち,同じパラメタ付きクラスから生じる他のインス
タンスからも完全に独立している。
実行単位内で二つのクラスが,同一の外部公開クラス名をもち,同一の実パラメタ群を指定した同一の
パラメタ付きクラスを展開して生成したものであるとき,これらは同一のクラス実体である。二つのクラ
スが,異なる実パラメタ群を指定して同一のパラメタ付きクラスを展開したものであるとき,これらは同
一のクラス実体ではなく,これらに同一の外部公開クラス名を割り当ててはならない。
9.3.13 パラメタ付きインタフェース
パラメタ付きインタフェース(parameterized interface)とは,総称的なインタフェース(generic interface)
又は骨組みのインタフェース(skeleton interface)であって,幾つかの仮パラメタをもち,その仮パラメタ
がクラス名又はインタフェース名で置換されるものである。実パラメタとして特定のクラス名又はインタ
フェース名を代入してパラメタ付きインタフェースを展開するとき,パラメタ付きでないインタフェース
として機能する一つのインタフェースが生成される。
パラメタ付きインタフェースの展開は,全ての視点において,そのインタフェースがパラメタ付きでな
いインタフェースであるのと同様に扱われる。
あるインタフェースがリポジトリ段落のEXPANDS指定中にパラメタ付きインタフェースとして書かれ
たとき,新しいインタフェース(パラメタ付きインタフェースのインスタンス)が,パラメタ付きインタ
フェースの指定に基づいて生成される。
実行単位内で二つのインタフェースが,同一の外部公開インタフェース名をもち,同一の実パラメタ群
を指定した同一のパラメタ付きインタフェースを展開して生成したものであるとき,これらは同一のイン
タフェース実体である。二つのインタフェースが,異なる実パラメタ群を指定して同一のパラメタ付きイ
ンタフェースを展開したものであるとき,これらは同一のインタフェース実体ではなく,これらに同一の
外部公開インタフェース名を割り当ててはならない。
9.3.14 オブジェクトの生存期間
オブジェクトの生存期間は,その生成の時点で始まり,削除の時点で終わる。
9.3.14.1 ファクトリオブジェクトの生存期間
ファクトリオブジェクトは,実行単位によって最初に参照される前に生成される。
ファクトリオブジェクトは,実行単位によって最後に参照された後で削除される。
9.3.14.2 インスタンスオブジェクトの生存期間
インスタンスオブジェクトは,ファクトリオブジェクトを対象としてNEWメソッドを呼び出した結果
として生成される。
インスタンスオブジェクトは,次のうち最初に起こったほうによって削除される。
− そのオブジェクトが,実行単位のその後の実行に関与し得ないと判断されたとき。
− 実行単位が終了したとき。
インスタンスオブジェクトが実行単位のその後の実行に関与し得るか否かを判断する機構のタイミング
とアルゴリズムは,実装者定義とする。
注記 インスタンスオブジェクトが実行単位のその後の実行に関与し得るか否かを判断したうえで,
そのオブジェクトが独占していた資源を再生利用する処理を,一般に“ガーベジコレクション”
(garbage collection,廃品回収)と呼ぶ。
152
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
9.4
利用者定義関数
利用者定義関数(user-defined function)とは,プログラム名段落ではなく関数名段落を指定して利用者
が定義する実体である。利用者定義関数に関する規則及び動作はプログラムの場合と同様であるが,ただ
し,利用者定義関数は値を一つ返却する(手続き部見出しのRETURNING指定参照)。また,利用者定義
関数の引数及び返却値では添字として語ALLを使用できない。さらに,利用者定義関数は常に再帰属性を
もち,自分自身を呼び出してもよい。利用者定義関数を呼び出すには,関数一意名を指定する[8.4.2.2(関
数一意名)参照]。
10 構造化翻訳群
構造化翻訳群(structured compilation group)は,原文操作で処理済みの0個以上の翻訳単位から構成さ
れる。構造化翻訳群は,翻訳処理又はソース印字出力に影響する翻訳指示を含んでもよい[箇条7(翻訳
指示機能)参照]。構造化翻訳群中に,論理的には,原文操作の翻訳指示が現れてもよいが,翻訳処理には
効果をもたない。
10.1 翻訳単位及び実行時モジュール
翻訳単位(compilation unit)とは,次のいずれかである。
− プログラム原型定義
− 関数原型定義
− プログラム定義(最も外側のプログラムの)
− クラス定義
− インタフェース定義
− 関数定義
各々の翻訳単位の翻訳が成功すると,プログラム定義,関数定義又はクラス定義に対して実行可能コー
ドが生成される。これが実行単位に取り込まれた時点で,実行時モジュール(runtime module)になる。
一つの翻訳単位には,定義の種類にもよるが,一つ以上のソース単位が含まれてもよい。
一つの翻訳群をなす幾つかの翻訳単位は,一つの実行単位の全体であっても一部であってもよく,互い
に無関係な翻訳単位であってもよい。
10.2 ソース単位
ソース単位(source unit)は見出し部で始まり,終了標(end marker)又は翻訳群の末尾で終わる。ソー
ス単位には,それが内含するソース単位も含める。ソース単位とは,次のとおりである。
− 最も外側のプログラム定義,その内包するプログラム定義群をも含めて
− 内側のプログラム定義,その内包するプログラム定義群をも含めて
− プログラム原型定義
− 関数定義
− 関数原型定義
− クラス定義,そのファクトリ定義とインスタンス定義をも含めて
− ファクトリ定義,そのメソッド定義群をも含めて
− インスタンス定義,そのメソッド定義群をも含めて
− メソッド定義
− インタフェース定義,そのメソッド原型群をも含めて
一つのソース単位には一つ以上の部(division)が含まれ得る。部は次の順序で並べる。
153
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) 見出し部
(identification division)
2) 環境部
(environment division)
3) データ部
(data division)
4) 手続き部
(procedure division)
部の始まりはその部の見出しによって示される。ただし,見出し部の見出しを省略した場合は,見出し
部に書いてよい段落見出しの一つによって示される。
部の終わりは,次の部の始まり,そのソース単位に対する終了標,又は翻訳群の終わりで示される。
10.3 ソース単位の包含関係
ソース単位は,別のソース単位中に直接又は間接に含まれることがある。
クラス定義中で,ファクトリ定義とインスタンス定義は,クラス定義内に直接に含まれる。ファクトリ
定義中又はインスタンス定義中で,メソッドは,ファクトリ定義内又はインスタンス定義内に,それぞれ
直接に含まれる。
プログラム定義は,別のプログラム定義に直接又は間接に含まれることがある。あるプログラム定義が
別のプログラム定義を“直接に含んでいる”とは,後者がじかに前者の入れ子になっている場合を指す。
あるプログラム定義が別のプログラム定義を“間接に含んでいる”とは,これら二つの間に1レベル以上
の入れ子が存在する場合を指す。
あるソース単位群が別のソース単位群の内部に含まれている場合,含んでいる側のソース単位中で記述
された資源の名前を,含まれる側のソース単位中で参照してもよい。これは,8.4.5(名前の有効範囲)の
規則による。
含まれる側のソース単位を翻訳した結果として生成される実行可能コードは,含んでいる側のソース単
位を翻訳した結果の実行可能コードからは分割できないものとみなされる。
10.4 ソース要素及び実行時要素
ソース要素(source element)は,ソース単位から内含するソース単位を除いた部分である。
注記 次に一例を示す。
PROGRAM-ID. A.
…
PROGRAM-ID. B.
…
PROGRAM-ID. C.
…
END PROGRAM C.
END PROGRAM B.
END PROGRAM A.
プログラムBはプログラムAに直接に含まれており,プログラムCはプログラムBに直接
に含まれており,かつ,プログラムCはプログラムAに間接に含まれている。プログラムC
はソース要素であり,プログラムBからプログラムCを除いたものはソース要素であり,かつ,
プログラムAからプログラムBとCとを除いたものはソース要素である。
実行時要素(runtime element)とは,手続き部を含んでいる関数・メソッド・プログラムの翻訳が成功
した結果であって,実行単位に取り込まれる実行可能コードから構成されている。
154
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
10.5 COBOL翻訳群
10.5.1 一般形式
プログラム原型
関数原型
プログラム定義
関数定義
クラス定義
インタフェース定義
…
ここで,プログラム原型は,次による。
[IDENTIFICATION DIVISION.]
PROGRAM-ID. プログラム原型名1 [AS 定数1] IS PROTOTYPE.
[選択肢段落]
[環境部]
[データ部]
[手続き部]
END PROGRAM プログラム原型名1.
ここで,関数原型は,次による。
[IDENTIFICATION DIVISION.]
FUNCTION-ID. 関数原型名1 [AS 定数1] IS PROTOTYPE.
[選択肢段落]
[環境部]
[データ部]
[手続き部]
END FUNCTION 関数原型名1.
ここで,プログラム定義は,次による。
[IDENTIFICATION DIVISION.]
PROGRAM-ID. プログラム名1 [AS 定数1]
IS
COMMON
INITIAL
RECURSIVE
PROGRAM.
[選択肢段落]
[環境部]
[データ部]
[手続き部]
END PROGRAM プログラム名1.
ここで,関数定義は,次による。
[IDENTIFICATION DIVISION.]
FUNCTION-ID. 利用者関数名1 [AS 定数1].
[選択肢段落]
[環境部]
[データ部]
155
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
[手続き部]
END FUNCTION 利用者関数名1.
ここで,クラス定義は,次による。
[IDENTIFICATION DIVISION.]
CLASS-ID. クラス名1 [AS 定数1] [IS FINAL]
[INHERITS FROM {クラス名2}… ]
[USING {パラメタ名1}… ].
[選択肢段落]
[環境部]
[ファクトリ定義]
[インスタンス定義]
END CLASS クラス名1.
ここで,ファクトリ定義は,次による。
[IDENTIFICATION DIVISION.]
FACTORY. [IMPLEMENTS {インタフェース名1}… .]
[選択肢段落]
[環境部]
[データ部]
[手続き部]
END FACTORY.
ここで,インスタンス定義は,次による。
[IDENTIFICATION DIVISION.]
OBJECT. [IMPLEMENTS {インタフェース名2}… .]
[選択肢段落]
[環境部]
[データ部]
[手続き部]
END OBJECT.
ここで,インタフェース定義は,次による。
[IDENTIFICATION DIVISION.]
INTERFACE-ID. インタフェース名1 [AS 定数1]
[INHERITS FROM {インタフェース名2}… ]
[USING {パラメタ名1}… ].
[選択肢段落]
[環境部]
[手続き部]
END INTERFACE インタフェース名1.
ここで,メソッド定義は,次による。
[IDENTIFICATION DIVISION.]
156
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
METHOD-ID.
メソッド名1 [AS 定数1]
GET
SET PROPERTY プロパティ名1 [OVERRIDE] [IS FINAL].
[選択肢段落]
[環境部]
[データ部]
[手続き部]
END METHOD [メソッド名1].
注記 メソッド定義をここに含めたのは,それがソース要素の一種であり,完全を期すためである。
メソッド定義を参照している箇所は,14.1.1(手続き部の構造の一般形式)である。クラス定義
中のメソッド定義はメソッドを定義する。インタフェース定義中のメソッド定義はメソッド原
型を定義する。
ここで,次の用語については,指示された箇条及び細分箇条による。
用語
箇条及び細分箇条
選択肢段落
11.8(選択肢段落)
環境部
12(環境部)
データ部
13(データ部)
手続き部
14(手続き部)
10.5.2 構文規則
1) ある翻訳群中で,関数原型及びプログラム原型は,その他全ての種類のソース単位よりも先行しなけ
ればならない。
2) ある翻訳群中に,同一の外部公開名をもつプログラム定義とプログラム原型定義との両方が含まれて
いるとき,これら二つの翻訳単位は呼出し情報が同じでなければならない。
3) ある翻訳群中に,同一の外部公開名をもつ関数定義と関数原型定義とが両方とも含まれているとき,
これら二つの翻訳単位は呼出し情報が同じでなければならない。
4) クラス定義中ではメソッドのデータ部の内容に通信節があってはならない。
5) プログラム原型,関数原型及びメソッド原型には次に示す制約を適用する。
a) 見出し部に,ARITHMETIC句があってはならない。
b) 環境部に,実行用計算機段落があってはならない。
c) 特殊名段落に指定してもよい句は,LOCALE句,CURRENCY句,及びDECIMAL-POINT句だけと
する。
d) 環境部に,入出力節があってはならない。
e) データ部には,連絡節だけがあってもよい。
f)
手続き部は,手続き部の見出しだけでなければならない。
6) 構造化翻訳群中には,翻訳指示が現れてもよい[7.2(翻訳指示)参照]。
10.5.3 一般規則
1) プログラム原型定義又は関数原型定義を翻訳すると,外部リポジトリが必要とする情報が生成される
[8.13(外部リポジトリ)参照]。
157
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
10.6 終了標
終了標(end marker)は,定義の終わりを示す。
10.6.1 一般形式
END
PROGRAM プログラム原型名1
PROGRAM プログラム名1
CLASS クラス名1
FACTORY
FUNCTION 関数原型名1
FUNCTION 利用者関数名1
OBJECT
METHOD [メソッド名1]
INTERFACE インタフェース名1
.
10.6.2 構文規則
1) 終了標は,別のソース単位を含むか,別のソース単位内に含まれるか,又は別のソース単位に先行す
る,全てのソース単位中になければならない。
2) プログラム名1は,先行するプログラム名段落で宣言されたプログラム名と同一でなければならない。
3) プログラム名1に対するプログラム名段落と,プログラム終了標との間に,別のプログラム名を宣言
しているプログラム名段落が記述されている場合,そのプログラム名を参照しているプログラム終了
標は,プログラム名1を参照するプログラム終了標の前になければならない。
4) クラス名1は,対応するクラス名段落中で宣言されたクラス名と同一でなければならない。
5) メソッド名1は,対応するメソッド名段落中で宣言されたメソッド名と同一でなければならない。
そのメソッド名段落中にPROPERTY句があるときは,メソッド名1を省略しなければならない。
6) インタフェース名1は,対応するインタフェース名段落中で宣言されたインタフェース名と同一でな
ければならない。
7) 利用者関数名1は,対応する関数名段落中で宣言された利用者関数名と同一でなければならない。
8) プログラム原型名1は,対応するプログラム名段落中で宣言されたプログラム原型名と同一でなけれ
ばならない。
9) 関数原型名1は,対応する関数名段落中で宣言された関数原型名と同一でなければならない。
10.6.3 一般規則
1) 終了標は,指定されたソース単位の終わりを表す。
11 見出し部
見出し部は,プログラム,関数,クラス,ファクトリオブジェクト,オブジェクト,メソッド又はイン
タフェースを識別する。
段落の見出しは,その段落に含まれる情報の種類を識別する。
11.1 見出し部の構造
11.1.1 一般形式
[IDENTIFICATION DIVISION.]
158
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
プログラム名段落
関数名段落
クラス名段落
ファクトリ段落
オブジェクト段落
メソッド名段落
インタフェース名段落
[選択肢段落]
ここで,次の用語については,指示された細分箇条による。
用語
細分箇条
クラス名段落
11.2(クラス名段落)
ファクトリ段落
11.3(ファクトリ段落)
関数名段落
11.4(関数名段落)
インタフェース名段落 11.5(インタフェース名段落)
メソッド名段落
11.6(メソッド名段落)
オブジェクト段落
11.7(オブジェクト段落)
選択肢段落
11.8(選択肢段落)
プログラム名段落
11.9(プログラム名段落)
11.2 クラス名段落
クラス名段落は,この見出し部がクラス定義の始まりであることを示し,クラスを識別する名前を指定
し,クラス属性をそのクラスに割り当てる。
11.2.1 一般形式
CLASS-ID. クラス名1 [AS 定数1] [IS FINAL]
[INHERITS FROM {クラス名2}… ]
[USING {パラメタ名1}… ].
11.2.2 構文規則
1) 定数1は,英数字定数又は各国文字定数でなければならず,表意定数であってはならない。
2) クラス名2は,このソース要素のリポジトリ段落中に書いたクラスの名前でなければならない。
3) クラス名2は,このクラス定義で宣言されるクラスの名前であってはならない。
4) クラス名2は,直接にも間接にも,クラス名1を継承してはならない。
5) クラス名2は,FINAL句付きで定義されたクラスの名前であってはならない。
6) 同じ名前をもつ二つ以上の異なるメソッドが継承されている場合,それらのうちいずれにもFINAL句
の指定があってはならない。一つの上位クラスから同じメソッドが,二つ以上の中間上位クラスを介
して継承されている場合は,FINAL句の指定があってもよい。
7) 二つ以上のクラスから同一のメソッド名を継承している場合で,仮に継承する側のクラス中でこれら
のメソッド原型のいずれかと同じインタフェースをもつメソッドを定義したとすると,継承する側の
クラスが継承される側のどのクラスにも適合しなくなってしまうときは,同じメソッド名をもつメソ
ッドを,継承する側のクラスの中で宣言しなければならない。このメソッドは,11.6(メソッド名段
落)の構文規則9) を満足しなければならない。
注記 クラスAがメソッドMを二つのクラスBとCとから継承していて,Mのメソッドインタフ
159
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ェースがクラスBとCとでは同一でない場合(例えば,B中のMはクラスXのオブジェク
トを返し,C中のMは関係のないクラスYのオブジェクトを返す場合),この状況では,こ
の継承は不当である。ただし,メソッドインタフェースの適合の問題が解決されるようにク
ラスA中で上書きメソッドMを正しく定義すれば,この限りではない。それは常に可能な
わけではない(このとき継承は不当)が,可能な場合もある。この例では,クラスXとYと
を継承するクラスZが定義できる可能性があり,その場合にはクラスZのオブジェクトを返
すような上書きメソッドMをクラスA中で定義できる。
8) 同一のクラス名が2回以上INHERITS句に現れてはならない。
9) パラメタ名1は,このクラス定義のリポジトリ段落中の,クラス指定子又はインタフェース指定子に
指定した名前でなければならない。
11.2.3 一般規則
1) クラス名1を,このクラス定義で宣言されるクラスの名前とする。しかし,定数1を指定した場合は
それを,操作環境に外部公開されるクラスの名前とする。
2) INHERITS(継承)句は,クラス名1に継承される別のクラスの名前を指定する[9.3.9(クラス継承)
参照]。
3) FINAL句の指定がある場合,このクラスは他のクラスの上位クラスであってはならない。
4) 同一クラスが2回以上継承される場合,そのクラスのデータのコピーのうち一つだけが,クラス名1
に付け加えられる。
注記 同一のクラスを2回以上“直接に”継承することはできないが,間接的であれば,一つのク
ラスを2回以上継承してもよい。例えば,クラスDがクラスBとCとを継承し,クラスB
とCとの両方がクラスAを継承しているとしよう。この例で,クラスDはクラスAを,1
回はBの上位クラスとして,もう1回はCの上位クラスとして,合計2回,間接に継承して
いる。
5) USING句は,このクラスがパラメタ付きクラスであることを指定する。パラメタ名1は,仮パラメタ
に付与した名前とする。パラメタ付きクラスの振る舞いの詳細は,9.3.12(パラメタ付きクラス)によ
る。
6) このクラス定義内でパラメタ名1を書いてよい箇所は,クラス名又はインタフェース名を書いてよい
箇所だけとする。
11.3 ファクトリ段落
ファクトリ段落は,この見出し部がファクトリ定義の始まりであることを示す。
11.3.1 一般形式
FACTORY. [IMPLEMENTS {インタフェース名1} … .]
11.3.2 構文規則
1) インタフェース名1は,このファクトリ定義を含んでいるクラス定義のリポジトリ段落中で指定され
たインタフェースの名前でなければならない。
2) 実装される各インタフェース中の各メソッド原型は,このクラスのファクトリ用インタフェースが,
全ての実装されるインタフェースに適合している,という条件に従っていなければならない。
11.3.3 一般規則
1) IMPLEMENTS(実装)句は,この定義を含んでいるクラスのファクトリオブジェクトが実装している
インタフェース群の名前を指定する[9.3.11(インタフェース実装)参照]。
160
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
2) ファクトリオブジェクトがインタフェースint-1を“実装している”とは,次の場合を指す。
a) そのファクトリオブジェクトの定義に,int-1を参照するIMPLEMENTS句がある。
b) そのファクトリオブジェクトが,int-1を継承しているインタフェースを実装している。
c) そのファクトリオブジェクトを内包しているクラスが継承している上位クラスの一つの
ファクトリオブジェクトが,int-1を実装している。
11.4 関数名段落
関数名段落は,関数が識別される名前を指定し,選択される属性をその関数に割り当てる。
11.4.1 一般形式
書き方1(定義)
FUNCTION-ID. 利用者関数名1 [AS 定数1].
書き方2(原型)
FUNCTION-ID. 関数原型名1 [AS 定数1] IS PROTOTYPE.
11.4.2 構文規則
1) 定数1は,英数字定数又は各国文字定数でなければならず,表意定数であってはならない。
11.4.3 一般規則
書き方1
1) 利用者関数名1を,この関数定義によって宣言される関数の名前とする。しかし,定数1を指定した
場合はそれを,操作環境に外部公開される関数の名前とする。
書き方2
2) 関数原型名1を,この定義によって宣言される関数原型の名前とする。しかし,定数1を指定した場
合はそれを,操作環境に外部公開される関数原型の名前とする。
11.5 インタフェース名段落
インタフェース名段落は,この見出し部がインタフェース定義を導くことを示し,インタフェースを識
別する名前を指定し,インタフェース属性をインタフェースに割り当てる。
11.5.1 一般形式
INTERFACE-ID. インタフェース名1 [AS 定数1]
[INHERITS FROM {インタフェース名2} … ]
[USING {パラメタ名1} … ].
11.5.2 構文規則
1) 定数1は,英数字定数又は各国文字定数でなければならず,表意定数であってはならない。
2) インタフェース名2は,このソース要素のリポジトリ段落で指定されるインタフェース名でなければ
ならない。
3) インタフェース名2は直接にも間接にも,インタフェース名1を継承してはならない。
4) パラメタ名1は,このインタフェース定義のリポジトリ段落中の,クラス指定子又はインタフェース
指定子に指定した名前でなければならない。
5) 二つ以上のインタフェースから同一のメソッド名を継承している場合,継承される各インタフェース
におけるメソッド原型は,継承する側のインタフェースが全ての継承される側のインタフェースに適
合している,という条件に従っていなければならない。
11.5.3 一般規則
1) インタフェース名1を,このインタフェース定義で宣言されるインタフェースの名前とする。しかし,
161
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
定数1を指定した場合はそれを,操作環境に外部公開されるインタフェースの名前とする。
2) INHERITS(継承)句は,インタフェース名1に継承される別のインタフェースの名前を指定する[9.3.10
(インタフェース継承)参照]。
3) USING句はこれがパラメタ付きインタフェースであることを指定する。パラメタ名1は,仮パラメタ
に付与した名前とする。
4) このインタフェース定義内でパラメタ名1を書いてよい箇所は,クラス名又はインタフェース名を書
いてよい箇所だけとする。
11.6 メソッド名段落
メソッド名段落は,この見出し部がメソッド定義の始まりであることを示し,メソッド又はメソッド原
型を識別する名前を指定し,メソッド属性をそのメソッドに割り当てる。
11.6.1 一般形式
METHOD-ID.
メソッド名1 [AS 定数1]
GET
SET PROPERTY プロパティ名1 [OVERRIDE] [IS FINAL].
11.6.2 構文規則
1) 定数1は,英数字定数又は各国文字定数でなければならず,表意定数であってはならない。
2) OVERRIDE指定をメソッド原型に指定してはならない。
3) OVERRIDE指定がある場合,このメソッド定義で宣言されるメソッドと同じ名前をもつメソッドが,
ある上位クラスに定義されていなければならない。その上位クラス中のメソッドは,FINAL句付きで
定義されていてはならない。
4) OVERRIDE指定がない場合,
a) このメソッド定義がクラス定義中にあるとき,ここで宣言されるメソッドと同じ名前を,継承され
るメソッドがもっていてはならない。
b) このメソッド定義がインタフェース定義中にあるとき,ここで宣言されるメソッド原型と同じ名前
を,継承されるメソッド原型がもっていてはならない。
5) プロパティ名1が,この定義を含んでいるオブジェクト定義の作業場所節中のデータ名として指定さ
れている場合に,そのデータ名のデータ記述項にPROPERTY句が指定されていてはならない。
6) GET指定がある場合,このメソッドの手続き部見出しには,USING指定パラメタがあってはならず,
単一のRETURNING指定がなければならない。
7) SET指定がある場合,このメソッドの手続き部見出しには,単一のUSINGパラメタがなければなら
ず,RETURNING指定があってはならない。
8) FINAL句をメソッド原型に指定してはならない。
9) メソッド名1又は定数1が,この定義を内包する定義によって継承又は実装されたメソッド名と同じ
である場合,手続き部見出しのパラメタ宣言,返却項目,及び引き起こし得る例外状態が,適合規則
に従っていなければならない[9.3.7.1.2(インタフェース間の適合)参照]。その結果,このメソッド
定義を内包するファクトリ定義又はインスタンス定義によって記述されるインタフェースが,継承又
は実装されるメソッド定義を内包するファクトリ定義又はインスタンス定義が記述するインタフェー
スに,適合しなければならない。
11.6.3 一般規則
1) このメソッド定義で宣言されるメソッドの名前は,次のとおりに決まる。
162
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
a) PROPERTY句を指定した場合,名前は実装者定義になる。
b) さもなければ,名前はメソッド名1とする。しかし,定数1を指定した場合はそれを,操作環境に
外部公開されるメソッドの名前とする。
2) OVERRIDE指定は,このメソッドが継承メソッドを上書きすることを示す。
3) FINAL句は,いかなる下位クラスもこのメソッドを上書きしてはならないことを示す。
4) このメソッドの名前は,このメソッドが定義されたクラスのオブジェクトに対するメソッドの呼出し
において参照してもよい。
5) ある利用者定義語が,このメソッド定義のデータ部と,これを含んでいるオブジェクト定義のデータ
部との,両方で定義されている場合,このメソッド中でその語を使用すると,このメソッド中の宣言
が参照される。そのメソッドから外側のオブジェクト定義中の宣言を参照することはできない。
6) GET指定がある場合,このメソッドはプロパティ名1のGETプロパティメソッドとする。
7) SET指定がある場合,このメソッドはプロパティ名1のSETプロパティメソッドとする。
11.7 オブジェクト段落
オブジェクト段落は,この見出し部がインスタンス定義の始まりであることを示す。
11.7.1 一般形式
OBJECT. [IMPLEMENTS {インタフェース名1} … .]
11.7.2 構文規則
1) インタフェース名1は,このインスタンス定義を含んでいるクラス定義のリポジトリ段落中で指定さ
れたインタフェースの名前でなければならない。
2) 実装される各インタフェース中の各メソッド原型は,このクラスのインスタンス用インタフェースが,
全ての実装されるインタフェースに適合している,という条件に従っていなければならない。
11.7.3 一般規則
1) IMPLEMENTS(実装)句は,この定義を含んでいるクラスのインスタンスオブジェクトによって実装
されるインタフェース群の名前を指定する[9.3.11(インタフェース実装)参照]。
2) インスタンスオブジェクトがインタフェースint-1を“実装している”とは,次の場合を指す。
a) そのインスタンスオブジェクトの定義に,int-1を参照するIMPLEMENTS句がある。
b) そのインスタンスオブジェクトが,int-1を継承しているインタフェースを実装している。
c) そのインスタンスオブジェクトを内包しているクラスが継承している上位クラスの一つの
インスタンスオブジェクトが,int-1を実装している。
11.8 選択肢段落
選択肢段落は,ソース単位に対する実行可能コードを生成するときコンパイラによって用いられる情報
を指定する。
11.8.1 一般形式
OPTIONS.
[arithmetic句]
[entry-convention句].
11.8.2 構文規則
1) 選択肢段落に句が一つもない場合,一般形式中の終止符の一つは省略してもよい。
11.8.3 一般規則
1) 選択肢段落の句は,それが指定されたソース要素及びそのソース要素内に含まれる全てのソース要素
163
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
に適用される。ただし,内部に含まれるソース要素の選択肢段落の句によって上書きされる場合はこ
の限りでない。
11.8.4 ARITHMETIC句
ARITHMETIC(算術)句は,中間結果を展開するときに用いる技法を指定する。
11.8.4.1 一般形式
ARITHMETIC IS
NATIVE
STANDARD
11.8.4.2 一般規則
1) NATIVE指定がある場合,算術式及び組込み関数の処理に用いる技法は,実装者定義とする。算術文
及びSUM句の処理に用いる技法は,固有算術の技法であり8.8.1.2(固有算術)による。
2) STANDARD指定がある場合,算術式,算術文,SUM句,特定の整数関数及び数字関数を扱うときに
用いる技法は,標準算術の技法であり8.8.1.3(標準算術)による。
3) ARITHMETIC句の指定がこのソース要素中にはなく,これを含んでいるソース要素中にもない場合,
ARITHMETIC句をNATIVE指定付きで書いたのと同じになる。
11.8.5 ENTRY-CONVENTION句
ENTRY-CONVENTION(入口規約)句は,実行時要素を活性化するのに用いる情報を指定する。
11.8.5.1 一般形式
ENTRY-CONVENTION IS 入口規約名1
11.8.5.2 構文規則
1) ENTRY-CONVENTION句を指定してもよい箇所は,クラス定義,関数定義,関数原型定義,インタフ
ェース定義,プログラム原型定義,又は別のプログラム内に含まれていないプログラム定義の中だけ
とする。
11.8.5.3 一般規則
1) ENTRY-CONVENTION句は,この句を指定したソース要素に対応する実行時要素を活性化するために
使用する規約を指定する。
2) 入口規約名1で指定される入口規約の意味は,実装者定義とする。
注記 この入口規約の関連付けを介して,実行時要素と相互作用するために必要な全ての情報が,
コンパイラに使用可能になるようにするのがよい。これには,名前の大文字・小文字の区別,
引数の引渡し方法,スタック管理などが含まれる。
この句の指定がない場合に用いる入口規約は,実装者定義とする。ただし,メソッド名及びプログ
ラム名に対する命名規約及び対応付けは,8.3.1.1.1(利用者定義語)による。
11.9 プログラム名段落
プログラム名段落は,プログラムを識別する名前を指定する。さらに,選択されたプログラム属性をそ
のプログラムに割り当てる。
プログラム名段落は,プログラム原型を識別する名前を指定する。
11.9.1 一般形式
書き方1(定義)
PROGRAM-ID. プログラム名1 [AS 定数1]
IS
COMMON
INITIAL
RECURSIVE
PROGRAM.
164
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
書き方2(原型)
PROGRAM-ID. プログラム原型名1 [AS 定数1] IS PROTOTYPE.
11.9.2 構文規則
全ての書き方
1) 定数1は,英数字定数又は各国文字定数でなければならず,表意定数であってはならない。
書き方1
2) 定数1は,他のプログラムに含まれるプログラムに指定してはならない。
3) 他のプログラムに含まれるプログラムには,そのプログラムを含んでいる最も外側のプログラムに含
まれる,他のいかなるプログラムとも同じ名前を割り当ててはならない。
注記 翻訳単位のプログラム内で,プログラム名は一意でなければならない。
4) COMMON(共通)句を指定してもよいのは,そのプログラムが他のプログラムに内含されている場
合だけとする。
5) このプログラムを直接又は間接に含んでいるプログラムが再帰プログラムである場合には,INITIAL
(初期化)句を指定してはならない。
6) このプログラムを直接又は間接に含んでいるプログラムが初期化プログラムである場合,
RECURSIVE(再帰)句を指定してはならない。
11.9.3 一般規則
書き方1
1) プログラム名1を,このプログラム定義によって宣言されるプログラムの名前とする。しかし,定数
1を指定した場合はそれを,操作環境に外部公開されるプログラムの名前とする。
2) COMMON(共通)句は,プログラムが共通属性をもつことを指定する。共通プログラムは,別のプ
ログラムの内部に含まれているが,含んでいるプログラム以外のプログラムが共通プログラムを呼び
出してもよい[8.4.5(名前の有効範囲)を参照]。
3) INITIAL(初期化)句は,プログラムが初期化属性をもつことを指定する。初期化プログラムが活性
化されるとき,そのプログラム及びその内部に含まれているあらゆるプログラム中に含まれているデ
ータ項目及びファイル結合子は,初期状態に設定される。
4) RECURSIVE(再帰)句は,そのプログラム及びその内部に含まれているあらゆるプログラムが再帰
であることを指定する。そのプログラムは,活性状態中に呼び出されてもよく,自分自身を呼び出し
てもよい。RECURSIVE句がプログラムに指定又は想定されていない場合,プログラムは活性状態中
に呼び出してはならない。
5) 初期化プログラム及び再帰プログラムに関する追加の規則は,8.6.5(共通属性,初期化属性及び再帰
属性)による。
書き方2
6) プログラム原型名1は,プログラム原型を識別する。しかし,定数1を指定した場合はそれを,操作
環境に外部公開されるプログラム原型の名前とする。
12 環境部
環境部は,データ処理の問題において特定の計算機の物理的特性に依存する事項を指定する。この部は,
翻訳用計算機及び実行用計算機の構成を指定できる。また,入出力制御,特殊なハードウェアの性質及び
制御技法に関する情報を与えることができる。
165
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
12.1 環境部の構造
12.1.1 一般形式
ENVIRONMENT DIVISION.
[構成節]
[入出力節]
12.2 構成節
構成節では,特定のシステムに依存するデータ処理システムの事項,特殊な制御技法,局所的な名前を
外部の資源に関連付ける手段を指定する。この節は,次の段落に分けられる。
− 翻訳用計算機段落では,ソース要素を翻訳する計算機の構成を記述する。
− 実行用計算機段落では,コンパイラによって作成された実行時モジュールを実行する計算機の構成を
記述する。
− 特殊名段落では,通貨編集用記号を指定し,小数点を選択し,記号文字を指定し,システム名を利用
者指定の呼び名に関連付け,符号系名を文字集合又は文字照合順序に関連付け,字類名を文字集合に
関連付けるための手段を与える。
− リポジトリ段落は,局所的な名前を外部の資源に関連付けたり,特定の組込み関数名をこのソース単
位用に予約語化したりするための手段を与える。
12.2.1 一般形式
CONFIGURATION SECTION.
[翻訳用計算機段落]
[実行用計算機段落]
[特殊名段落]
[リポジトリ段落]
12.2.2 構文規則
1) 構成節を,別のプログラム内に含まれるプログラム中で指定してはならない。
2) 構成節を,メソッド定義中に指定してはならない。
3) 翻訳用計算機段落,実行用計算機段落及びリポジトリ段落を,ファクトリ定義又はインスタンス定義
中に指定してはならない。
12.2.3 一般規則
1) 別のソース単位を含んでいるソース単位の構成節の中で明示的又は暗黙に指定された記述項は,その
内部に直接又は間接に含まれているソース単位の各々にも適用される。
12.2.4 翻訳用計算機段落
翻訳用計算機段落は,翻訳単位を翻訳する計算機を記述する手段を与える。
12.2.4.1 一般形式
SOURCE-COMPUTER. [計算機名1] [WITH DEBUGGING MODE].
12.2.4.2 構文規則
1) 計算機名1とDEBUGGING MODE句のいずれもないとき,一般形式中の第二の終止符は省略しても
よい。
12.2.4.3 一般規則
1) 翻訳用計算機段落の中の全ての句は,それらが明示的又は暗黙に指定されたソース単位,及びそのソ
ース単位中に含まれているあらゆるソース単位に適用される。
166
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
2) ソース単位に翻訳用計算機段落の指定がなく,翻訳用計算機段落のある別のソース単位中に含まれて
いない場合,ソース単位を翻訳している計算機を翻訳用計算機とする。
3) ソース単位に翻訳用計算機段落の指定はあるが計算機名1の指定がない場合,ソース単位を翻訳して
いる計算機を翻訳用計算機とする。
4) ソース単位にDEBUGGING MODE(デバッグ状態)句の指定がある場合,デバッグ行は全て,そのデ
バッグ標識が空白3文字で置き換えられたかのように翻訳される。
注記 DEBUGGING MODE句はこの規格の廃要素であり,規格COBOLの次の改正からは削除され
る予定である。
5) ソース単位にDEBUGGING MODE句の指定がなく,そのソース単位がDEBUGGING MODE句のある
別のソース単位中に含まれていない場合,デバッグ行は全て注記行であるかのように翻訳される。
12.2.5 実行用計算機段落
実行用計算機段落は,コンパイラの生成した実行時モジュールを実行する計算機を記述するための手段
を与える。
12.2.5.1 一般形式
OBJECT-COMPUTER. [計算機名1]
2
IS
NATIONAL
FOR
1
IS
IC
ALPHANUMER
FOR
]
2
[
1
IS
SEQUENCE
COLLATING
PROGRAM
2
IS
NATIONAL
FOR
1
IS
IC
ALPHANUMER
FOR
]
2
[
1
IS
TION
CLASSIFICA
CHARACTER
符号系名
符号系名
符号系名
符号系名
現地特性指定
現地特性指定
現地特性指定
現地特性指定
.
ここで,現地特性指定1は,次による。
現地特性名1
LOCALE
SYSTEM-DEFAULT
USER-DEFAULT
現地特性指定2は,次による。
現地特性名2
LOCALE
SYSTEM-DEFAULT
USER-DEFAULT
12.2.5.2 構文規則
1) 符号系名1は,英数字照合順序を定義する符号系でなければならない。
2) 符号系名2は,各国文字照合順序を定義する符号系でなければならない。
3) 現地特性名1及び現地特性名2は,特殊名段落で定義された現地特性名でなければならない。
4) 計算機名1もその他の選択可能な句のいずれもないとき,一般形式中の第二の終止符は省略してもよ
い。
12.2.5.3 一般規則
1) 実行用計算機段落の中の全ての句は,それらが明示的又は暗黙に指定されたソース単位,及びそのソ
167
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ース単位中に含まれているあらゆるソース単位に適用される。
2) 計算機名1に,周辺機器構成を識別する手段が備わっていてもよい。その場合,計算機名1とそれが
意味する機器構成は,実装者が規定する。
3) 実行用計算機段落の指定はあるが計算機名1の指定がない場合,実行用計算機は実装者定義とする。
4) 実行用計算機段落の指定がないソース単位が,実行用計算機段落のあるソース単位に含まれていない
場合,実行用計算機は実装者定義とする。
5) CHARACTER CLASSIFICATION(字類分け)句の指定がある場合,字類分けの初期設定は次のとおり
となる。
a) 現地特性名1の指定があるとき,英数字の字類分けの初期設定は,現地特性名1に関連する字類分
けとなる。
b) 現地特性指定1としてLOCALE指定があるとき,英数字の字類分けの初期設定は,現在有効現地特
性に関連する字類分けとなる。
c) 現地特性指定1としてSYSTEM-DEFAULT指定があるとき,英数字の字類分けの初期設定は,シス
テム既定解釈現地特性に関連する字類分けとなる。
d) 現地特性指定1としてUSER-DEFAULTの指定があるとき,英数字の字類分けの初期設定は,利用
者既定解釈現地特性に関連する字類分けとなる。
e) 現地特性指定1がないとき,英数字の字類分けの初期設定は,実行時に英数字文字に対して有効な
計算機符号化文字集合に関連する字類分けとなる。
f)
現地特性名2の指定があるとき,各国文字の字類分けの初期設定は,現地特性名2に関連する字類
分けとなる。
g) 現地特性指定2としてLOCALE指定があるとき,各国文字の字類分けの初期設定は,現在有効現地
特性に関連する字類分けとなる。
h) 現地特性指定2としてSYSTEM-DEFAULT指定があるとき,各国文字の字類分けの初期設定は,シ
ステム既定解釈現地特性に関連する字類分けとなる。
i)
現地特性指定2としてUSER-DEFAULTの指定があるとき,各国文字の字類分けの初期設定は,利
用者既定解釈現地特性に関連する字類分けとなる。
j)
現地特性指定2がないとき,各国文字の字類分けの初期設定は,実行時に各国文字に対して有効な
計算機符号化文字集合に関連する字類分けとなる。
6) CHARACTER CLASSIFICATION句の指定がなくて,このソース単位を内包する別のソース単位中に
CHARACTER CLASSIFICATION句があるわけでもない場合,字類分けの初期設定は,実行時に英数
字及び各国文字に対して有効な計算機符号化文字集合に関連する字類分けとなる。
7) CHARACTER CLASSIFICATION句がある場合,指定した現地特性に由来する文化的規約の規定
LC̲CTYPEが,次に示す処理に用いられる。
a) UPPER-CASE及びLOWER-CASE組込み関数で適用する大文字・小文字の対応付け。
b) 字類検査で,ALPHABETIC,ALPHABETIC-LOWER,及びALPHABETIC-UPPERを指定した場合,
並びに特殊名段落中で現地特性に関連付けた符号系名を指定した場合に適用する字類分け。
8) 実行用計算機段落によって明示的又は暗黙に定まる字類分けが有効になるのは,適用対象である実行
時モジュールが初期状態となったときとする。現地特性名1又は現地特性名2の指定があるとき,関
連する字類分けはその現地特性名のLC̲CTYPEカテゴリによって規定される。
9) PROGRAM COLLATING SEQUENCE句の指定がある場合,プログラム英数字照合順序の初期値は,
168
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
符号系名1に関連する文字照合順序となり,プログラム各国文字照合順序の初期値は,符号系名2に
関連する文字照合順序となる。符号系名1がない場合,プログラム英数字照合順序の初期値は,固有
英数字照合順序になる。符号系名2がない場合,プログラム各国文字照合順序の初期値は,固有各国
文字照合順序になる。
10) PROGRAM COLLATING SEQUENCE句の指定がなく,そのソース単位が,PROGRAM COLLATING
SEQUENCE句のある別のソース単位中に含まれていない場合,プログラム文字照合順序の初期値は,
英数字も各国文字も,共に固有文字照合順序になる。
11) プログラム英数字照合順序とプログラム各国文字照合順序とは,それぞれ,あらゆる英数字比較及び
各国文字比較つまり次の比較において,真理値を決定するために用いられる。
a) 比較条件によって明示的に指定される比較。
b) 条件名条件によって明示的に指定される比較。
c) 報告書記述項にCONTROL句があるとき,それによって暗黙に指定される比較。
符号系名1若しくは符号系名2,又はその両方が,現地特性に関連するものである場合,これらの
比較を行うには現地特性のカテゴリLC̲COLLATEが用いられる。
12) 実行用計算機段落によって明示的又は暗黙に確立された,プログラム英数字照合順序とプログラム各
国文字照合順序とは,これらの適用対象であるプログラムの初期状態に対して有効になる。符号系名
1又は符号系名2が現地特性を指しているとき,関連する文字照合順序の定義は,その符号系名に関
連する特定現地特性の,カテゴリLC̲COLLATEによる。該当する現地特性がなければ,実行時のそ
の文字照合順序を使用する時点の現在有効現地特性の,カテゴリLC̲COLLATEによる。
13) プログラム英数字照合順序とプログラム各国文字照合順序とは,英数字又は各国文字の整列キー及び
併合キーにそれぞれ適用される。ただし,SET文を実行して,又はCOLLATING SEQUENCE指定を
各々のSORT文若しくはMERGE文に書いて,整列併合用の文字照合順序を変更した場合はこの限り
でない。
12.2.6 特殊名段落
特殊名段落は,次の手段を提供する。
− 通貨記号と通貨編集用記号とを指定する。
− 小数点を選択する。
− 記号文字を指定する。
− システム名を,利用者指定の呼び名に関連付ける。
− 現地特性名を,現地特性の外部識別に関連付ける。
− 符号系名を,文字集合,文字照合順序,又はその両方に関連付ける。
− 字類名を,文字集合に関連付ける。
− 順序付け名を,規格の順序付け表に関連付ける。
− データ項目を,文字位置指定可能端末のカーソル位置に関連付ける。
− データ項目を,端末入出力操作の状態に関連付ける。
12.2.6.1 一般形式
SPECIAL-NAMES.
169
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
スイッチ名1
IS 呼び名1
ON STATUS IS 条件名1
OFF STATUS IS 条件名2
ON STATUS IS 条件名1
OFF STATUS IS 条件名2
機能名1 IS 呼び名2
装置名1 IS 呼び名3
…
[符号系名句] …
SYMBOLIC CHARACTERS
FOR
ALPHANUMERIC
NATIONAL
{記号文字1}…
IS
ARE {整数1}… … [IN 文字種名3]
…
LOCALE 現地特性名1 IS
外部現地特性名1
定数4
…
[ORDER TABLE 順序付け名1 IS 定数9]
CLASS 字類名1
FOR
ALPHANUMERIC
NATIONAL
IS
定数5
THROUGH
THRU
定数6 … [IN 文字種名4]
…
[CURRENCY SIGN IS 定数7 [WITH PICTURE SYMBOL 定数8]] …
[DECIMAL-POINT IS COMMA]
[CURSOR IS データ名1]
[CRT STATUS IS データ名2].
ここで,符号系名句は,次による。
ALPHABET
符号系名1 [FOR ALPHANUMERIC] IS
LOCALE [現地特性名2]
NATIVE
STANDARD-1
STANDARD-2
符号名1
{定数指定} …
符号系名2 [FOR NATIONAL] IS
LOCALE [現地特性名2]
NATIVE
UCS-4
UTF-8
UTF-16
符号名2
{定数指定} …
定数指定は,次による。
定数1
THROUGH
THRU
定数2
{ALSO 定数3} …
12.2.6.2 構文規則
1) クラス定義の外側レベルでは,CURSOR句及びCRT STATUS句を指定してはならない。
170
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
2) ファクトリ定義中又はインスタンス定義中に指定してもよい句は,CURSOR及びCRT STATUSだけと
する。
3) インタフェース定義中に指定してもよい句は,ALPHABET,CURRENCY,DECIMAL-POINT,LOCALE
だけとする。
4) プログラム定義中に一つ以上の別なプログラム定義が含まれているとき,CURSOR句のデータ名1及
びCRT STATUS句のデータ名2は,GLOBAL句付きで記述されていなければならない。
5) 呼び名1を指定してもよい箇所は,SET文の中だけとする。
6) 呼び名2を指定してもよい箇所は,SEND文及びWRITE文の中だけとする。特定の機能名を参照す
る呼び名の使用に関するこのほかの制限事項を,実装者は規定してもよい。
7) 呼び名3を指定してもよい箇所は,ACCEPT文及びDISPLAY文の中だけとする。特定の装置名を参
照する呼び名の使用に関するこのほかの制限事項を,実装者は規定してもよい。
8) スイッチ名1,機能名1,及び装置名1に指定できる名前は,実装者定義とする。
9) 順序付け名1を指定してもよい箇所は,STANDARD-COMPARE組込み関数の中だけとする。
10) 定数4及び定数9は,英数字定数又は各国文字定数でなければならない。
11) 定数1,定数2,定数3,定数4,定数5,定数6及び定数9が記号文字表意定数であってはならない。
12) THRUとTHROUGHは,同義語とする。
13) ALPHABET句があってALPHANUMERIC指定もNATIONAL指定もない場合,ALPHANUMERICが
あるものとみなす。
14) ALPHABET句があって定数指定がある場合,
a) そのALPHABET句の中に,同じ文字を2回以上書いてはならない。
b) ALPHANUMERICが明示的又は暗黙に指定されているとき,
1. 各数字定数は符号なし整数でなければならず,その値は1から,固有英数字文字集合中の文字の
最大番号までの範囲内になければならない。
2. 整数でない各定数は,英数字定数でなければならない。
3. 各英数字定数は,THROUGH指定又はALSO指定がある場合,長さが1文字でなければならない。
4. 指定される文字数が,固有英数字文字集合中の文字数を超えてはならない。
c) NATIONALが指定されているとき,
1. 数字定数のそれぞれは符号なし整数でなければならず,その値は1から,固有各国文字集合中の
文字の最大番号までの範囲内になければならない。
2. 整数でない各定数は,各国文字定数でなければならない。
3. 各国文字定数のそれぞれは,THROUGH指定又はALSO指定がある場合,長さが1文字でなけれ
ばならない。
4. 指定される文字数が,固有各国文字集合中の文字数を超えてはならない。
15) ALPHABET句中の符号名1及び符号名2に書ける名前がある場合,その名前は実装者定義とする。
16) SYMBOLIC CHARACTERS(記号文字)句の指定がある場合,
a) この特殊名段落のSYMBOLIC CHARACTERS句に,同じ記号文字1は1回だけ書いてもよい。
b) 各々の記号文字1とそれに対応する整数1との関連付けは,SYMBOLIC CHARACTERS句の中での
位置による。つまり,第1の記号文字1は第1の整数1と対になり,第2の記号文字1は第2の整
数1と対になり,以下同様とする。
c) 繰り返し出現する記号文字1と繰り返し出現する整数1との間には,1対1の対応がなければなら
171
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ない。
d) ALPHANUMERIC指定もNATIONAL指定もないとき,ALPHANUMERICがあるものとみなす。
e) ALPHANUMERICが明示的又は暗黙に指定された場合,
1. IN指定があるとき,符号系名3は,英数字文字集合を定義する符号系を指しており,その文字集
合中に,整数1によって指定される順序位置が存在しなければならない。
2. IN指定がないときは,整数1によって指定される順序位置が,固有英数字文字集合中に存在しな
ければならない。
f)
NATIONALが指定された場合,
1. IN指定があるとき,符号系名3は各国文字集合を定義する符号系を指しており,その文字集合中
に,整数1によって指定される順序位置が存在しなければならない。
2. IN指定がないときは,整数1によって指定される順序位置が,固有各国文字集合中に存在しなけ
ればならない。
g) 符号系名3は,LOCALE指定付きで規定された符号系であってはならない。
17) CLASS(字類)句の指定がある場合,
a) ALPHANUMERIC指定もNATIONAL指定もないとき,ALPHANUMERICがあるものとみなす。
b) ALPHANUMERICが明示的又は暗黙に指定されたとき,
1. IN指定があるとき,符号系名4は,英数字文字集合を定義する符号系でなければならない。
2. 定数5が数字定数のとき,定数5は符号なし整数でなければならず,その値は,1から固有英数
字文字集合の最大文字数までの範囲か,又は(IN指定がある場合)1から符号系名4の文字集合
の最大文字数までの範囲になければならない。
3. 整数でない各定数は,英数字定数でなければならない。
4. 各英数字定数は,THROUGH指定がある場合,長さが1文字でなければならない。
5. 指定される文字数が,固有英数字文字集合中の文字数を超えてはならない。また,IN指定がある
場合は符号系名4の文字集合中の文字数を超えてはならない。
c) NATIONALが指定されたとき,
1. IN指定があるとき,符号系名4は,各国文字集合を定義する符号系でなければならない。
2. 定数5が数字定数のとき,定数5は符号なし整数でなければならず,その値は,1から固有各国
文字集合の文字数までの範囲か,又は(IN指定がある場合)1から符号系名4の文字集合の文字
数までの範囲になければならない。
3. 整数でない定数のそれぞれは,各国文字定数でなければならない。
4. 各国文字定数のそれぞれは,THROUGH指定がある場合,長さが1文字でなければならない。
5. 指定される文字数は,固有各国文字集合中の文字数を超えてはならない。また,IN指定がある場
合は符号系名4の文字集合中の文字数を超えてはならない。
d) 符号系名4は,LOCALE指定付きで規定された符号系であってはならない。
18) 定数7は,英数字定数又は各国文字定数でなければならず,表意定数であってはならない。
19) PICTURE SYMBOL指定がない場合,定数7は,次に示す以外の,単一の文字でなければならない。
a) 数字の0〜9
b) 英字のA,B,C,D,E,N,P,R,S,V,X,Z,これらに等価な小文字,又は空白
c) 特殊文字の "+","-",",",".","*","/",";","(",")",""","="
20) PICTURE SYMBOL指定がある場合,定数7は,その長さに制限がなく,更に
172
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
a) 少なくとも一つの非空白文字が含まれていなければならない。
b) 計算機文字集合に由来するいかなる文字であってもよいが,ただし,数字の0〜9及び特殊文字の
"-",",",".","*","+" は除く。
21) 現地特性名2は,LOCALE句で定義された現地特性名でなければならない。
22) 定数8は,単一文字からなる英数字定数でなければならない。それは,表意定数であってはならない。
同じ値を指定する定数8が2回現れてはならない。
23) 定数8は,次に示す以外の,計算機文字集合のいかなる文字であってもよい。
a) 数字の0〜9
b) 英字のA,B,C,D,E,N,P,R,S,V,X,Z,これらに等価な小文字,又は空白
c) 特殊文字の "+","-",",",".","*","/",";","(",")",""","="
24) 定数7の字類が英数字の場合,関連する通貨編集用記号は,用途がDISPLAYである数字編集項目の
定義にだけ用いてよい。定数7の字類が各国文字の場合,関連する通貨編集用記号は,用途が
NATIONALである数字編集項目の定義にだけ用いてよい。
25) CURSOR(カーソル)句のデータ名1は,作業場所節又は局所記憶節中で記述された,6けたの符号
なし基本整数項目で用途が暗黙又は明示的にDISPLAYであるものか,3けたの符号なし基本整数項目
二つからなる英数字集団項目で用途が暗黙又は明示的にDISPLAYであるものかの,いずれかでなけ
ればならない。
26) CRT STATUS(CRT状態)句のデータ名2は,作業場所節又は局所記憶節中で記述された英数字デー
タ項目であって長さが4文字でなければならない。
27) 特殊名段落中に指定する句がなければ,一般形式中の分離符の終止符の一方は省略してもよい。
12.2.6.3 一般規則
1) ソース単位の特殊名段落中に指定した句は全て,その内部に直接又は間接に含まれるソース単位の
各々にも適用される。含む側のソース単位の特殊名段落中で指定した,条件名,呼び名,現地特性名,
字類名,通貨記号と通貨編集用記号,符号系名,及び記号文字は,その内部に直接又は間接に含まれ
るどのソース単位から参照してもよい。
2) スイッチ名1は,実装者定義の外部スイッチを識別する。外部スイッチのオン状態及びオフ状態を,
それぞれ条件名と関連付けてもよい。スイッチの状態は,この条件名を参照して調べることができる
[8.8.4.1.5(スイッチ状態条件)参照]。
3) 外部スイッチの状態は,そのスイッチに関連付けられた呼び名を作用対象としてもつSET 呼び名文の
実行によって変更してもよい。SET文で参照してもよい外部スイッチは,実装者定義とする。
4) 各々の外部スイッチの有効範囲(プログラム,実行単位など)と,外部スイッチの状態を変更するの
に用いてよいCOBOL外部の機能は,実装者定義とする。
注記 外部スイッチの有効範囲が実行単位であるとき,そのような外部スイッチの各スイッチ名が
指すスイッチは唯一であって,その実行単位中で機能する各々の実行時要素中においてはそ
の唯一のスイッチの状態が使用可能になる。
5) LOCALE(現地特性)句の指定がある場合,現地特性名1は,外部現地特性名1で又は定数4の値で
識別される現地特性を指す。指定可能な外部現地特性名及び指定可能な定数4の内容は,実装者定義
とする。
6) 固有英数字符号化文字集合と固有各国文字符号化文字集合に含まれる文字の順序は,実装者定義とす
る。各文字には文字集合中の順序位置が関連付けられる。
173
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
7) ALPHABET句は,符号化文字集合,文字照合順序,又はその両方に名前を関連付ける手段を提供する。
注記 符号系名の参照箇所が,実行用計算機段落のPROGRAM COLLATING SEQUENCE句である
場合,又はSORT文若しくはMERGE文のCOLLATING SEQUENCE指定である場合,その
符号系名は文字照合順序を指す。符号系名の参照箇所が,字類条件,データ部のCLASS句,
SYMBOLIC CHARACTERS句,又はファイル記述項のCODE-SET句中である場合,その符
号系名は符号化文字集合を指す。
表7(符号系名と符号化文字集合及び文字照合順序との関係)に,ALPHABET句の各作用対象につ
いて,符号系名が符号化文字集合,文字照合順序,又はその両方を指すのか否かを示す。
表7−符号系名と符号化文字集合及び文字照合順序との関係
ALPHABET句の作用対象
符号化文字集合
文字照合順序
LOCALE
○
NATIVE
○
○
STANDARD-1
○
○
STANDARD-2
○
○
UCS-4
○
○
UTF-8
○
UTF-16
○
符号名1
○
○
符号名2
○
○
定数指定
○
○
凡例
○が“符号化文字集合”欄にあるとき,符号系が符号化文字集合を
指すことを表す。空欄は,そうでないことを表す。
○が“文字照合順序”欄にあるとき,符号系が文字照合順序を指す
ことを表す。空欄は,そうでないことを表す。
ALPHABET句の指定がある場合,次のとおりになる。
a) ALPHANUMERICが明示的又は暗黙に指定されたとき,符号系名1の指す符号化文字集合が英数字
の符号化文字集合となり,符号系名1の指す文字照合順序が英数字照合順序となる。
b) NATIONALが指定されたとき,符号系名2の指す符号化文字集合が各国文字符号化文字集合となり,
符号系名2の指す文字照合順序が各国文字照合順序となる。
c) STANDARD-1指定を書いたとき,これが指す符号化文字集合は,ISO/IEC 646の国際基準版で定義
される。STANDARD-2指定を書いたとき,これが指す符号化文字集合は,ISO/IEC 646で定義され
る。ただし,国際基準版又は各国版のどちらが参照されるか,及び選択する各国版を決める環境は,
実装者定義とする。STANDARD-1指定とSTANDARD-2指定との両方が指す文字照合順序の定義は,
ISO/IEC 646中に文字が出現する順序による。標準(standard)文字集合の各々の文字は,固有英数
字文字集合中の対応する文字と関連付けられる。標準文字集合の文字と固有文字集合の文字との間
の対応付けは,実装者定義とする。
d) NATIVE指定を書いたとき,
1. ALPHANUMERICを明示的又は暗黙に指定したとき,参照されるのは固有英数字符号化文字集合
及び固有英数字照合順序とする。
174
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
2. NATIONALを指定したとき,参照されるのは,固有各国文字符号化文字集合及び固有各国文字照
合順序とする。
e) LOCALE指定を書いたとき,識別される文字照合順序の定義は,現地特性名2の指定があれば,そ
れが指す現地特性による。さもなければ,その文字照合順序を実行時に用いる時点の現在有効現地
特性による。LOCALEをALPHANUMERIC指定中に書いたとき識別されるのは英数字照合順序,
NATIONAL指定に書いたとき識別されるのは各国文字照合順序とする。
f)
UCS-4指定を書いたとき,これが指す符号化文字集合は,JIS X 0221でUCS-4と規定された。UCS-4
の各文字は,固有各国文字集合中の対応する文字と関連付けられる。UCS-4の文字と固有各国文字
集合の文字との間の対応付けは,実装者定義とする。UCS-4指定が指す文字照合順序の定義は,JIS
X 0221に文字が出現する順序による。
g) UTF-8 指定を書いたとき,これが指す符号化文字集合は,JIS X 0221でUTF-8と規定された。UTF-8
の各文字は,固有各国文字集合中の対応する文字と関連付けられる。この関連付けは,UTF-8の文
字の変換元であるUCS-4文字に対する関連付けと同様とする。
h) UTF-16指定を書いたとき,これが指す符号化文字集合は,JIS X 0221でUTF-16と規定された。
UTF-16の各文字は,固有各国文字集合中の対応する文字と関連付けられる。UTF-16の文字と固有
各国文字集合の文字との間の対応は,実装者定義とする。
i)
符号名1を指定したとき,それが指す英数字の符号化文字集合及び文字照合順序は,実装者定義と
する。符号名1が符号化文字集合を指す場合に使用する各文字の順序番号,及び符号名1が文字照
合順序を指す場合に使用する各文字の照合順序での位置は,実装者定義とする。符号名1が指す英
数字符号化文字集合の文字と固有英数字符号化文字集合の文字との間の対応付けも,実装者定義と
する。
符号名1の指す符号化文字集合は,静的に定義される。
j)
符号名2を指定したとき,それが指す各国文字の符号化文字集合及び文字照合順序は,実装者定義
とする。符号名2が符号化文字集合を指す場合に使用する各文字の順序番号,及び符号名2が文字
照合順序を指す場合に使用する各文字の照合順序での位置は,実装者定義とする。符号名2が指す
各国文字符号化文字集合の文字と固有各国文字符号化文字集合の文字との間の対応付けも,実装者
定義とする。
符号名2の指す符号化文字集合は,静的に定義される。
k) 定数指定を書いたとき,符号化文字集合及び文字照合順序の定義は,次による。ここで“固有符号
化文字集合”は,定義する符号化文字集合又は文字照合順序の種類で,英数字と各国文字のいずれ
かとする。
1. 各定数の値は,次のものを規定する。
a. 定数が数字であるときは,固有文字集合内での文字の順序番号。この値が固有文字集合中にあ
る文字の個数を表す値を超えてはならない。
b. 定数が数字でないときは,固有文字集合内の実際の文字。定数の値に複数個の文字が含まれて
いれば,この定数中の各文字には,規定する文字照合順序において,左端の文字から始まる昇
順の位置が連続的に割り当てられる。
2. ALPHABET句に定数が出現する順序は,規定する文字照合順序における,文字の順序番号を昇順
に規定する。
3. 固有文字照合順序の文字のうち,この定数指定中に指定しなかった文字には,指定したどの文字
175
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
よりも上位にある文字照合順序中の位置を想定する。これら指定しなかった文字群の相対的な順
序は,固有文字照合順序中と変わらない。
4. 固有な文字集合の文字のうち,この定数指定中に指定しなかった各々の文字に対しての,規定す
る符号化文字集合における順序番号は,実装者定義とする。
5. THROUGH指定を書くと,定数1の値が指す文字から定数2の値が指す文字までの,固有文字集
合中の連続した文字の組に,規定する文字照合順序中の連続した位置が昇順に割り当てられる。
ここで,THROUGH指定で連続した文字の組を決める方法は,固有文字集合中の文字を昇順に指
定する方法でも降順に指定する方法でもよい。
6. ALSO指定を書くと,定数1及び定数3の値が指す固有文字集合の文字には,規定する文字照合
順序中で又はデータ表現に用いる符号化文字集合中で,同じ順序位置が割り当てられる。その同
じ順序位置に割り当てられた複数個の文字の並びは定数1を先頭とする。符号系名1を
SYMBOLIC CHARACTERS句で参照している場合,固有文字集合中の文字を表すために用いられ
るのは定数1だけとする。
8) プログラム文字照合順序において最高の順序位置をもつ文字が,表意定数HIGH-VALUEに関連付け
られる。ただし,この表意定数を特殊名段落の定数に指定する場合は,この限りでない。プログラム
文字照合順序において最高の順序位置をもつ文字が二つ以上あるときは,最後に指定した文字が表意
定数HIGH-VALUEに関連付けられる。
9) プログラム文字照合順序において最低の順序位置をもつ文字が,表意定数LOW-VALUEに関連付けら
れる。ただし,この表意定数を特殊名段落の定数に指定する場合は,この限りでない。プログラム文
字照合順序において最低の順序位置をもつ文字が二つ以上あるときは,最初に指定した文字が表意定
数LOW-VALUEに関連付けられる。
10) 特殊名段落中での定数として指定する場合,表意定数のHIGH-VALUEとLOW-VALUEとはそれぞれ,
最上位の文字と最下位の文字とに関連付けられる。ここで最上位と最下位とは,NATIONAL指定があ
るとき固有各国文字照合順序における最上位と最下位とを意味し,そうでないとき固有英数字照合順
序における最上位と最下位とを意味する。
11) SYMBOLIC CHARACTERS(記号文字)句の指定がある場合,次による。
a) 記号文字1は,表意定数を定義する。
b) ALPHANUMERICが明示的又は暗黙に指定されているとき,表意定数である記号文字1の値は,固
有英数字文字集合中での,また,IN指定がある場合は符号系名3が指す文字集合中での,整数1で
表される順序位置にある符号化文字表現とする。
c) NATIONALが指定されているとき,表意定数である記号文字1の値は,固有各国文字集合中での,
また,IN指定がある場合は符号系名3が指す文字集合中での,整数1で表される順序位置にある文
字の内部表現とする。
12) CLASS(字類)句は,この句に列挙された文字の組に名前を関連付ける手段を提供する。この句の定
数の値で指定した文字群は,字類名1を構成する文字の排他的な組を定義する。
各定数の値は,次のものを規定する。
a) 定数が数字であるとき,関連する固有文字集合内で,又はIN指定がある場合は符号系名4が指す
文字集合内での,文字の順序番号。
b) 定数が数字でないとき,関連する固有文字集合内で,又はIN指定がある場合は符号系名4が指す
文字集合内での,実際の文字。定数5の値に複数個の文字が含まれていれば,その定数中の各文字
176
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
が,字類名1で識別される文字の組に包含される。
THROUGH指定を書くと,定数5の値が指す文字から定数6の値が指す文字までの,固有文字集合
中の連続した文字の組が,字類名1で識別される文字の組に包含される。ここで,THROUGH指定で
連続した文字の組を決める方法は,固有文字集合中の文字を昇順に指定する方法でも降順に指定する
方法でもよい。
13) CURRENCY SIGN(通貨記号)句は,通貨文字列を指定する。通貨文字列は,受取り項目として使わ
れている数字編集データ項目中に挿入され,数字項目又は数字編集項目が受取り項目のときの送出し
項目として使われている数字編集項目から逆編集される。さらに,この句は,基本仕様形式のPICTURE
句の文字列の中で,この通貨文字列の存在を表すために用いなければならない記号を決定する。この
記号を,通貨編集用記号(currency symbol)と呼ぶ。
定数7は,通貨文字列の値を表す。
CURRENCY SIGN句にPICTURE SYMBOL指定があるなら通貨編集用記号には定数8を用いる。
CURRENCY SIGN句にPICTURE SYMBOL指定がないなら通貨編集用記号には定数7を用いる。
通貨編集用記号が小文字のとき,等価な大文字の取扱いになる。
14) DECIMAL-POINT IS COMMA句を指定すると,小数点文字を表す文字と,けたまとめ文字を表す文字
との機能が入れ替わる。その規則は次による。
a) 小数点文字を表すために数字定数中に書く文字は,コンマとする。
b) 基本仕様形式のPICTURE句では,小数点文字を表すために文字列中に書き数字編集項目での挿入
にも用いる文字は,コンマとする。
注記1 現地特性形式のPICTURE句では,小数点文字を表すために文字列中に書く文字は常に
ピリオドとする。挿入に用いる文字は,現在有効現地特性から決まる。
けたまとめ文字を表すために文字列中に書き数字編集項目での挿入にも用いる文字は,ピリオド
とする。
DECIMAL-POINT IS COMMA句は,現地特性形式のPICTURE句付きで記述されたデータ項目の編
集及び逆編集に関しては,効力をもたない。
注記2 DECIMAL-POINT IS COMMA句は,翻訳時に原文操作段階の後まで処理されないので,翻
訳指示,COPY文及びREPLACE文中に書いた定数には影響を及ぼさない。
15) CURSOR(カーソル)句に書いたデータ名1のデータ項目の内容は,ACCEPT画面文の実行開始時点
のカーソル位置を指定する。この内容は,ACCEPT画面文の実行が成功したとき,目に見えるカーソ
ルの終了時の位置を示すように更新される[9.2.5(カーソル位置指示子)参照]。
16) CRT STATUS(CRT状態)句のデータ名2は,ACCEPT画面文の実行中に更新される[9.2.3(CRT状
態)参照]。
17) ORDER TABLE(順序表)句の指定がある場合,順序付け名1は,ISO/IEC 14651:2001に従って構築
され,定数9で識別される順序付け表を指す。指定可能な定数9の内容は実装者定義とする。
12.2.7 リポジトリ段落
リポジトリ段落では,この環境部の有効範囲で用いてよいプログラム原型名,関数原型名,プロパティ
名,クラス名,及びインタフェース名を指定してもよい。また,語FUNCTIONを指定せずに用いてよい
組込み関数名を宣言してもよい。
12.2.7.1 一般形式
REPOSITORY.
177
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
クラス指定子
インタフェース指定子
関数指定子
プログラム指定子
プロパティ指定子
… .
ここで,クラス指定子は,次による。
CLASS クラス名1 [AS 定数1]
EXPANDS クラス名2 USING
クラス名3
インタフェース名1 …
インタフェース指定子は,次による。
INTERFACE インタフェース名2 [AS 定数2]
EXPANDS インタフェース名3 USING
クラス名4
インタフェース名4 …
関数指定子は,次による。
書き方1(利用者定義)
FUNCTION 関数原型名1 [AS 定数3]
書き方2(組込み)
FUNCTION
{組込み関数名1}…
ALL
INTRINSIC
プログラム指定子は,次による。
PROGRAM プログラム原型名1 [AS 定数4]
プロパティ指定子は,次による。
PROPERTY プロパティ名1 [AS 定数5]
12.2.7.2 構文規則
全ての書き方
1) クラス名1,インタフェース名2,プログラム原型名1,関数原型名1,組込み関数名1又はプロパテ
ィ名1が,リポジトリ段落中で2回以上指定されている場合,その名前に対する指定は全て同じでな
ければならない。
2) 定数1,定数2,定数3,定数4及び定数5は,英数字定数又は各国文字定数でなければならず,表意
定数であってはならない。
3) クラス名段落中にUSING指定を含んでいるクラス定義のリポジトリ段落にEXPANDS指定を書いて
はならない。インタフェース名段落中にUSING指定を含んでいるインタフェース定義のリポジトリ
段落にEXPANDS指定を書いてはならない。
クラス指定子
4) クラス名2,クラス名3及びインタフェース名1は,クラス名1が定義されたのと同じリポジトリ段
落において定義されていなければならない。
5) 指定されたクラス名1が,このリポジトリ段落を含んでいるクラス定義の名前と同じである場合に,
クラス名1への参照はそのクラス定義を指すものとし,このクラス指定子は無視される。
6) CLASS指定をEXPANDS指定なしで書いた場合,
a) 定数1の指定があるとき,定数1のクラスに関する情報が,外部リポジトリ中に存在しなければな
178
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
らない。
b) 定数1の指定がないとき,クラス名1のクラスに関する情報が,外部リポジトリ中に存在しなけれ
ばならない。
インタフェース指定子
7) クラス名4,インタフェース名3及びインタフェース名4は,インタフェース名2が定義されたのと
同じリポジトリ段落において定義されていなければならない。
8) 指定されたインタフェース名2が,このリポジトリ段落を含んでいるインタフェース定義の名前と同
じである場合,インタフェース名2への参照はそのインタフェース定義を指すものとし,このインタ
フェース指定子は無視される。
9) INTERFACE指定をEXPANDS指定なしで書いた場合,
a) 定数2の指定があるとき,定数2のインタフェースに関する情報が,外部リポジトリ中に存在しな
ければならない。
b) 定数2の指定がないとき,インタフェース名2のインタフェースに関する情報が,外部リポジトリ
中に存在しなければならない。
関数指定子
10) 定数3の指定があるときの定数3,又は定数3の指定がないときの関数原型名1は,次のいずれかで
なければならない。
− この翻訳群中に指定された関数原型の名前
− この翻訳群中に既に指定された関数定義の名前
− 外部リポジトリ中に関連情報のある関数の名前
11) 指定された関数原型名1が,このリポジトリ段落を含んでいる関数定義の名前と同じである場合には,
関数原型名1への参照はその関数定義を指すものとし,この関数指定子は無視される。
12) 組込み関数名1は,このリポジトリ段落の有効範囲内で利用者定義語として指定されてはならない。
13) 関数指定子の組込み関数用の書き方でALLを指定する場合,このリポジトリ段落の有効範囲内では,
どの組込み関数名も利用者定義語として指定できない。
プログラム指定子
14) 定数4の指定があるときの定数4,又は定数4がないときのプログラム原型名1は,次のいずれかで
なければならない。
− この翻訳群中に指定されたプログラム原型の名前
− この翻訳群中に既に指定されたプログラム定義の名前
− 外部リポジトリ中に関連情報のあるプログラムの名前
15) 指定されたプログラム原型名1が,このリポジトリ段落を含んでいるプログラム定義の名前と同じで
ある場合,プログラム原型名1への参照はそのプログラム定義を指すものとし,このプログラム指定
子は無視される。
プロパティ指定子
16) PROPERTY指定を書いた場合,
a) 定数5の指定があるとき,このリポジトリ段落中に宣言されたクラス及びインタフェースの一部で
ある,定数5のプロパティに関する情報が,外部リポジトリ中になければならない。
b) 定数5の指定がないとき,このリポジトリ段落中に宣言されたクラス及びインタフェースの一部で
ある,プロパティ名1のプロパティに関する情報が,外部リポジトリ中になければならない。
179
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
12.2.7.3 一般規則
1) クラス名1はクラスの名前であって,これを含んでいる環境部の有効範囲の全域にわたって用いてよ
い。
クラス名1のクラス記述子にUSING指定があるとき,クラス名1を指定してもよい箇所はリポジ
トリ段落中だけとする。
2) AS指定があるとき,定数1,定数2,定数3又は定数4はそれぞれ,クラス,インタフェース,関数
又はプログラムに対しての,操作環境へと通知された外部公開名とする。定数5は,その名前をもつ
プロパティを実装するメソッドに対しての,操作環境へと通知された外部公開名とする。どのような
場合にAS指定が必要となるかは,実装者定義とする。
3) クラス名3及びインタフェース名1は,クラス名2で参照されるパラメタ付きクラスの,実パラメタ
とする。
4) クラス名4及びインタフェース名4は,インタフェース名3で参照されるパラメタ付きインタフェー
スの,実パラメタとする。
5) クラス指定子にEXPANDS指定がある場合,クラス名1のクラスはパラメタ付きクラス名2から生成
される。クラス指定子のEXPANDS指定のUSING指定中のパラメタの個数は,クラス名2のクラス
名段落のUSING指定中のパラメタの個数と同じでなければならない。クラス指定子に指定したパラ
メタでクラス名2のパラメタを置換した後のクラス名2のインタフェースが,クラス名1のインタフ
ェースとなる。
クラス名1のクラスはパラメタ付きクラス名2から生成され,仮パラメタの指定をそれぞれ対応す
る実パラメタで置換したものになる。
6) コンパイラは,使用するクラスの詳細を確定するために,クラス名1に指定された情報を外部リポジ
トリとともに用いなければならない。使用するクラスを確定するために,クラス指定子及び外部リポ
ジトリの情報を利用する方法は,実装者定義とする。
7) インタフェース名2はインタフェースの名前であって,これを含んでいる環境部の有効範囲の全域に
わたって用いてもよい。
インタフェース名1のインタフェース記述子にUSING指定があるとき,インタフェース名1を指
定してもよい箇所はリポジトリ段落中だけとする。
8) インタフェース指定子にEXPANDS指定がある場合,インタフェース名2のインタフェースはパラメ
タ付きインタフェース名3から生成される。インタフェース指定子のEXPANDS指定のUSING指定
中のパラメタの個数は,インタフェース名3のインタフェース名段落のUSING指定中のパラメタの
個数と同じでなければならない。インタフェース指定子に指定したパラメタでインタフェース名3の
パラメタを置換した後のインタフェース名3のインタフェースが,インタフェース名2のインタフェ
ースとなる。
インタフェース名2のインタフェースはパラメタ付きインタフェース名3から生成されて,仮パラ
メタの指定をそれぞれ対応する実パラメタで置換したものになる。
9) コンパイラは,使用するインタフェースの詳細を確定するために,インタフェース名2に指定された
情報を外部リポジトリとともに用いなければならない。使用するインタフェースを確定するために,
インタフェース指定子及び外部リポジトリの情報を利用する方法は,実装者定義とする。
10) プログラム原型名1はプログラム原型の名前であって,これを含んでいる環境部の有効範囲の全域に
わたって用いてよい。このプログラム原型を介したプログラムの呼出しに対する詳細情報は,次のと
180
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
おりにして得る。
a) プログラム原型の外部公開名が,同じ翻訳群中に既に現れたプログラム定義の外部公開名であると
き,詳細情報はそのプログラム定義から得られ,そのプログラムが呼び出されることになり,外部
リポジトリ中の詳細情報は無視される。
注記 定数4の指定があるとき定数4がプログラム原型の外部公開名であり,さもなければ,外
部公開名とはプログラム原型名1である。
b) プログラム原型の外部公開名が,同じ翻訳群中に現れたプログラム原型の外部公開名であるとき,
詳細情報はそのプログラム原型から得られ,外部リポジトリ中の詳細情報は無視される。呼び出さ
れることになるプログラムは,プログラム原型と同じ外部公開名をもつものである。
c) さもなければ外部リポジトリから,プログラム原型の外部公開名と同じ名前をもつプログラムの詳
細情報が取り出される。そのプログラムが呼び出されることになる。
11) 関数原型名1は関数原型の名前であって,これを含んでいる環境部の有効範囲の全域にわたって用い
てよい。この関数原型を介した関数の活性化に対する詳細情報は,次のとおりにして得る。
a) 関数原型の外部公開名が,同じ翻訳群中に既に現れた関数定義の外部公開名であるとき,詳細情報
はその関数定義から得られ,その関数が活性化されることになり,外部リポジトリ中の詳細情報は
無視される。
注記 定数3の指定があるときは定数3が関数原型の外部公開名であり,さもなければ,外部公
開名とは関数原型名1である。
b) 関数原型の外部公開名が,同じ翻訳群中に指定した関数原型の外部公開名であるとき,詳細情報は
その関数原型から得られ,外部リポジトリ中の詳細情報は無視される。活性化されることになる関
数は,その関数原型と同じ外部公開名をもつものである。
c) さもなければ外部リポジトリから,関数原型の外部公開名と同じ名前をもつ関数の詳細情報が取り
出される。その関数が活性化されることになる。
12) これを含んでいる環境部の有効範囲内では,関数原型名1への参照は利用者定義関数を指す。同名の
組込み関数を指すことはない。
13) これを含んでいる環境部の有効範囲内では,組込み関数名1を関数一意名に指定する場合,語
FUNCTIONが前になくてもよい。
14) 関数指定子の組込みの形式においてALLを指定した場合,組込み関数名のそれぞれを指定したのと同
じ扱いとする[8.11(組込み関数名)参照]。
15) プロパティ名1はオブジェクトプロパティの名前であり,これを含んでいる環境部の有効範囲の全域
にわたって用いてよい。
12.3 入出力節
入出力節では,外部媒体と実行時要素との間での,データ転送及びデータ操作を制御するために必要な
情報を扱う。
12.3.1 一般形式
INPUT-OUTPUT SECTION.
[ファイル管理段落]
[入出力管理段落]
12.3.2 構文規則
1) 入出力節はプログラム定義又は関数定義に指定してもよい。クラス定義内では入出力節をファクトリ
181
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
定義又はインスタンス定義にだけ指定してもよいが,メソッド定義に指定してはならない。入出力節
をインタフェース定義内に指定してはならない。
12.3.3 ファイル管理段落
ファイル管理段落では,ファイルに関係する情報を指定する。
12.3.3.1 一般形式
FILE-CONTROL. [ファイル管理記述項] …
12.3.4 ファイル管理記述項
ファイル管理記述項は,ファイルに関係する物理属性を宣言する。
12.3.4.1 一般形式
書き方1(索引)
SELECT [OPTIONAL] ファイル名1
ASSIGN
TO
装置名1
定数1
… [USING データ名1]
USING データ名1
ACCESS MODE IS
DYNAMIC
RANDOM
SEQUENTIAL
ALTERNATE RECORD KEY IS
データ名2
レコードキー名1 SOURCE IS {データ名3} …
[WITH DUPLICATES]
…
[collating-sequence句] …
[FILE STATUS IS データ名4]
LOCK MODE IS
MANUAL
AUTOMATIC
WITH LOCK ON [MULTIPLE]
RECORD
RECORDS
[ORGANIZATION IS] INDEXED
RECORD KEY IS
データ名5
レコードキー名2 SOURCE IS {データ名6} …
RESERVE 整数1
AREA
AREAS
SHARING WITH
ALL OTHER
NO OTHER
READ ONLY
.
ここで,collating-sequence句は,12.3.4.6(COLLATING SEQUENCE句)による。
書き方2(相対)
SELECT [OPTIONAL] ファイル名1
ASSIGN
TO
装置名1
定数1
… [USING データ名1]
USING データ名1
182
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ACCESS MODE IS
DYNAMIC
RANDOM
SEQUENTIAL
[FILE STATUS IS データ名4]
LOCK MODE IS
MANUAL
AUTOMATIC
WITH LOCK ON [MULTIPLE]
RECORD
RECORDS
[ORGANIZATION IS] RELATIVE
[RELATIVE KEY IS データ名7]
RESERVE 整数1
AREA
AREAS
SHARING WITH
ALL OTHER
NO OTHER
READ ONLY
.
書き方3(順)
SELECT [OPTIONAL] ファイル名1
ASSIGN
TO
装置名1
定数1
… [USING データ名1]
USING データ名1
[ACCESS MODE IS SEQUENTIAL ]
[FILE STATUS IS データ名4]
LOCK MODE IS
MANUAL
AUTOMATIC
WITH LOCK ON
RECORD
RECORDS
[[ORGANIZATION IS] SEQUENTIAL]
PADDING CHARACTER IS
データ名8
定数2
RECORD DELIMITER IS
STANDARD-1
機能名1
RESERVE 整数1
AREA
AREAS
SHARING WITH
ALL OTHER
NO OTHER
READ ONLY
.
書き方4(整列併合)
SELECT [OPTIONAL] ファイル名1
ASSIGN
TO
装置名1
定数1
… [USING データ名1]
USING データ名1
[[ORGANIZATION IS] SEQUENTIAL].
12.3.4.2 構文規則
全ての書き方
183
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) SELECT(選択)句は,ファイル管理記述項の最初に書かなければならない。SELECT句に続く句は,
どのような順序で指定してもよい。
2) 一つのファイル名を指定してもよいのは,ファクトリ,関数,オブジェクト又はプログラム内で,一
つのSELECT句にだけとする。
3) SELECT句に指定した各ファイル名に対して,その句を書いたのと同じファクトリ,関数,オブジェ
クト又はプログラムのファイル節中に,ファイル記述項又は整列併合用ファイル記述項を必ず書かな
ければならない。
4) 定数1は英数字定数でなければならず,表意定数であってはならない。
5) 装置名1に書くことができる指定及び定数1の値の,意味及び規則は,実装者定義とする。
6) 装置名1とデータ名1との,及び定数1とデータ名1との,構文上正しい組合せ及び必要な組合せは,
実装者定義とする。
7) データ名1は,英数字データ項目でなければならず,ファイル名1のファイル記述項に従属していて
はならない。
8) データ名1は,修飾してもよい。
書き方1
9) 書き方1は,索引ファイルに対してだけ指定しなければならない。関連するファイル記述項が,整列
併合用ファイル記述項であってはならない。
書き方2
10) 書き方2は,相対ファイルに対してだけ指定しなければならない。関連するファイル記述項が,整列
併合用ファイル記述項であってはならない。
11) RELATIVE句は,ACCESS句にDYNAMIC指定又はRANDOM指定がある場合,必ず指定しなければ
ならない。
書き方3
12) 書き方3は,順ファイル又は報告書ファイルに対してだけ指定しなければならない。関連するファイ
ル記述項が,整列併合用ファイル記述項であってはならない。
書き方4
13) 書き方4は,整列併合用ファイルに対してだけ指定しなければならない。関連するファイル記述項は,
整列併合用ファイル記述項でなければならない。
12.3.4.3 一般規則
全ての書き方
1) ファイル名1のファイル結合子が外部ファイル結合子である場合[13.16.20(EXTERNAL句)参照],
このファイル結合子を参照している実行単位中のファイル管理記述項は全て,次に示す規則に従わな
ければならない。
a) OPTIONAL指定に対して同一の指定をする。
b) ASSIGN句のデータ名1・装置名1・定数1に対して整合のとれた指定をする。データ名1・装置名
1・定数1に対する整合規則は,実装者定義とする。
c) RECORD DELIMITER句にSTANDARD-1を指定するか,又は機能名1に対して整合のとれた指定
をする。機能名1に対する整合規則は,実装者定義とする。
d) RESERVE句の整数1に対して同じ値を指定する。
e) 同じ編成(organization)を指定する。
184
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
f)
同じ呼出し法(access mode)を指定する。
g) COLLATING SEQUENCE句の組を同一の指定にする。
h) PADDING CHARACTER句に対して同一の指定をする。データ名8を指定する場合は,外部データ
項目でなければならない。
i)
RELATIVE KEY指定に対して同一の指定をする。データ名7は,外部データ項目でなければならな
い。
j)
データ名5と各々のデータ名6とに対して,データ記述項を同じにする。関連レコード内での相対
位置も同じにする。
k) データ名2と各々のデータ名3とに対して,データ記述項を同じにする。関連レコード内での相対
位置も,副レコードキーの個数も,DUPLICATESの指定も同じにする。
l)
同じ共用(sharing)モードを指定する。
m) 同じ施錠モード(lock mode)を指定する。単一レコード施錠か複数レコード施錠かの選択も同じに
する。
2) OPTIONAL指定は,入力モード,入出力両用モード又は拡張モードで開く物理ファイルにだけ適用さ
れる。この指定は,実行時要素の実行時点で必ずしも存在しない物理ファイルに対して必要となる。
3) ASSIGN(割当て)句は,ファイル名1の指すファイル結合子を,装置名1,定数1,又はデータ名1
のデータ項目の内容で識別される物理ファイルに関連付けることを指定する。この関連付けはファイ
ル名1を参照するOPEN文,SORT文又はMERGE文の実行時点で行われ,次の規則による。
a) ASSIGN句にTO指定がありUSING指定がない場合,OPEN文,SORT文又はMERGE文を書いた
ソース単位では,装置名1の指定又は定数1の値で識別される物理ファイルにファイル名1の指す
ファイル結合子が関連付けられる。
b) ASSIGN句にUSING指定がある場合,OPEN文,SORT文又はMERGE文を書いたソース単位では,
データ名1のデータ項目の内容で識別される物理ファイルにファイル名1の指すファイル結合子が
関連付けられる。
データ名1のデータ項目の内容が,装置名1又は定数1の指定と整合せず,そのため関連付けがで
きない場合には,OPEN文,SORT文又はMERGE文は不成功となる。
4) USING指定がある場合,データ名1のデータ項目がもってもよい内容の意味と規則は,実装者定義と
する。データ名1のデータ項目の内容と,装置名1の指定又は定数1の値との間に適用される整合規
則がある場合,それは実装者定義とする。
書き方1
5) 書き方1は,索引ファイルのファイル結合子を定義する。
6) COLLATING SEQUENCE句の指定がないとき,
a) 主と副とを問わず,英数字レコードキーに対する文字照合順序は,固有英数字照合順序となる。
b) 主と副とを問わず,各国文字レコードキーに対する文字照合順序は,固有各国文字照合順序となる。
書き方2
7) 書き方2は,相対ファイルのファイル結合子を定義する。
書き方3
8) 書き方3は,順ファイルのファイル結合子を定義する。
書き方4
9) 書き方4は,整列併合用ファイルのファイル結合子を定義する。
185
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
12.3.4.4 ACCESS MODE句
ACCESS MODE(呼出し法)句は,ファイル中でレコードが呼出しされる順序を指定する。
12.3.4.4.1 一般形式
ACCESS MODE IS
SEQUENTIAL
RANDOM
DYNAMIC
12.3.4.4.2 構文規則
1) SORT文又はMERGE文のUSING指定又はGIVING指定中に書いたファイル名に対して,RANDOM
指定を書いてはならない。
2) 順ファイルに対しては,DYNAMIC指定及びRANDOM指定を指定してはならない。
12.3.4.4.3 一般規則
1) ACCESS MODE句の指定がない場合,順呼出しが想定される。
2) 呼出し法が順呼出し(sequential)であるとき,ファイル中のレコードが呼出しされる順序は,ファイ
ル編成による。
a) 順ファイルでは,この順序は,物理ファイルを生成又は拡張するときWRITE文の実行によって確
定した,レコードの前後関係によって規定される。
b) 相対ファイルでは,この順序は,物理ファイル中での既存レコードの相対レコード番号の昇順とす
る。
c) 索引ファイルでは,この順序は,当該キーの文字照合順序に従った,所定の参照キーの昇順とする。
3) 呼出し法が乱呼出し(random)であるとき,次による。
a) 相対ファイルでは,相対キーデータ項目の値が,呼出しされるレコードを示す。
b) 索引ファイルでは,レコードキーデータ項目の値が,呼出しされるレコードを示す。
4) 呼出し法が動的呼出し(dynamic)であるとき,ファイル中のレコードは,順呼出しでも,乱呼出しで
も,又はその両方で呼び出してもよい。
12.3.4.5 ALTERNATE RECORD KEY句
ALTERNATE RECORD KEY(副レコードキー)句は,索引ファイル中にあるレコードを副レコードキー
によって呼び出す経路を指定する。
12.3.4.5.1 一般形式
ALTERNATE RECORD KEY IS
データ名1
レコードキー名1 SOURCE IS {データ名2} …
[WITH DUPLICATES]
12.3.4.5.2 構文規則
1) データ名1及びデータ名2は,修飾してもよい。
2) データ名1及びデータ名2は,ALTERNATE RECORD KEY句が従属しているファイル名に関連する
レコード記述項内で定義された,項類が英数字又は各国文字のデータ項目でなければならない。デー
タ名2を複数書いた場合,その項類は全て同じでなければならない。
3) データ名1及びデータ名2は,可変長データ項目であってはならない。
4) データ名1は,主レコードキー又は別の副レコードキーと左端のバイト位置が一致するような項目で
あってはならない。この制限は,キーのいずれかを書くために SOURCE指定を用いた場合には適用
されない。
186
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
5) 索引ファイルに可変長レコードが含まれているとき,データ名1及びデータ名2の各々は,レコード
の先頭xバイト以内に含まれていなければならない。ここで,xはそのファイルの最小レコードの大
きさに等しい値とする[13.16.41(RECORD句)参照]。
6) レコードキー名1は,データ名2と同一の字類及び項類をもつ。
12.3.4.5.3 一般規則
1) ALTERNATE RECORD KEY句は,この句に関連するファイルに対して副レコードキーを指定する。
2) レコードキー名1は,指定したデータ名2の全てを指定した順に連結してでき上がるレコードキーを
定義する。
3) データ名1又はデータ名2の,データ記述及びレコード中での相対位置は,物理ファイルを生成した
ときのものと同じでなければならない。ファイルに対する副レコードキーの個数も,物理ファイルを
生成したときのものと同じでなければならない。
4) DUPLICATES指定は,関連する副レコードキーの値が,物理ファイル中にある別なレコードの同じ副
レコードキーの値と等しくてもよいことを指定する。DUPLICATES指定がない場合,関連する副レコ
ードキーの値は,物理ファイル中にある別なレコードの同じ副レコードキーの値と等しいものであっ
てはならない。等しいか否かの判定は,ファイルに対して用いられる文字照合順序に基づき比較条件
の規則による。
5) レコード記述項のいずれか一つにおいて,データ名1又はデータ名2によって参照されるバイト位置
は,そのファイルに属するその他全てのレコード記述項でも,同じバイト位置が暗黙にキーとして参
照される。
12.3.4.6 COLLATING SEQUENCE句
COLLATING SEQUENCE(文字照合順序)句は,索引ファイルのレコードキー及び副レコードキーの順
序付けに用いる文字照合順序を指定する。複数種類の文字照合順序を用いて,主レコードキー及び特定の
副レコードキーに一つずつ特有な文字照合順序を指定することができる。
12.3.4.6.1 一般形式
書き方1(ファイルレベル)
COLLATING SEQUENCE
IS 符号系名1 [符号系名2]
FOR ALPHANUMERIC IS 符号系名1
FOR NATIONAL IS 符号系名2
書き方2(キーのレベル)
COLLATING SEQUENCE OF
データ名1
レコードキー名1 … IS 符号系名3
12.3.4.6.2 構文規則
書き方1
1) 符号系名1は,英数字照合順序を定義する符号系でなければならない。
2) 符号系名2は,各国文字照合順序を定義する符号系でなければならない。
3) 一つのファイル管理記述項中に指定してもよいファイルレベル形式のCOLLATING SEQUENCE句は,
1個だけとする。
書き方2
4) データ名1は,このファイル管理記述項中で,ALTERNATE RECORD KEY句のデータ名又はRECORD
KEY句のデータ名として指定された名前でなければならない。
187
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
5) レコードキー名1は,このファイル管理記述項で,ALTERNATE RECORD KEY句のレコードキー名
又はRECORD KEY句のレコードキー名として指定された名前でなければならない。
6) データ名1又はレコードキー名1の字類が各国文字であるとき,符号系名3は,各国文字照合順序を
定義する符号系を参照しなければならない。さもなければ,符号系名3は,英数字照合順序を定義す
る符号系を参照しなければならない。
7) データ名1もレコードキー名1も,二つ以上のCOLLATING SEQUENCE句に指定してはならない。
12.3.4.6.3 一般規則
全ての書き方
1) 各々の文字照合順序はファイル固有属性であり,この文字照合順序は物理ファイルを生成するOPEN
文の実行が成功したとき設定される。用いられる文字照合順序は,これ以降の一般規則に従って適用
される。
書き方1
2) 符号系名1の英数字照合順序は,字類が英数字のあらゆるレコードキーに対して,主と副とを問わず
適用される。ただし,そのファイル管理記述項でキーレベル形式の別なCOLLATING SEQUENCE句
に書かれたキーは除外される。
3) 符号系名2の各国文字照合順序は,字類が各国文字のあらゆるレコードキーに対して,主と副とを問
わず適用される。ただし,そのファイル管理記述項でキーレベル形式の別なCOLLATING SEQUENCE
句に書かれたキーは除外される。
4) ファイル管理記述項に符号系名1の指定がないとき,固有英数字照合順序が,字類が英数字のあらゆ
るレコードキーに対して,主と副とを問わず適用される。ただし,そのファイル管理記述項でキーレ
ベル形式の別なCOLLATING SEQUENCE句に書かれたキーは除外される。
5) ファイル管理記述項に符号系名2の指定がないとき,固有各国文字照合順序が,字類が各国文字のあ
らゆるレコードキーに対して,主と副とを問わず適用される。ただし,そのファイル管理記述項でキ
ーレベル形式の別なCOLLATING SEQUENCE句に書かれたキーは除外される。
書き方2
6) 符号系名3が,データ名1又はレコードキー名1の識別するレコードキーに適用される。
12.3.4.7 FILE STATUS句
FILE STATUS(ファイル状態)句は,入出力操作の状態を含むデータ項目を指定する。
12.3.4.7.1 一般形式
FILE STATUS IS データ名1
12.3.4.7.2 構文規則
1) データ名1は,修飾してもよい。
2) データ名1は,2文字からなり,項類が英数字であるデータ項目であって,作業場所節,局所記憶節
又は連絡節中で定義されていなければならない。
12.3.4.7.3 一般規則
1) FILE STATUS句があるとき,入出力文の結果,記述項の左辺のファイル結合子に関連する入出力状態
が更新されるたびに,データ名1のデータ項目が,そのファイル結合子に対する入出力状態の値にな
るように更新される。
注記 ファイル名が大域名であってデータ名1がそうでない場合,含まれるプログラム中でファイ
ル名が参照されると,データ名1は局所名であるにもかかわらずデータ名1が更新される。
188
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
12.3.4.8 LOCK MODE句
LOCK MODE(施錠モード)句は,共用ファイルに対するレコード施錠の種類を示す。
12.3.4.8.1 一般形式
LOCK MODE IS
MANUAL
AUTOMATIC
WITH LOCK ON [MULTIPLE]
RECORD
RECORDS
12.3.4.8.2 構文規則
1) 順編成又は順呼出し法と記述されたファイルに対しては,MULTIPLE指定を書いてはならない。
12.3.4.8.3 一般規則
1) LOCK MODE句がファイル管理記述項で省略されている場合,
a) そのファイル管理記述項にSHARING句があるとき,関連するファイル結合子を介した入出力文の
実行によってレコード錠が設定されることはない。
b) そのファイル管理記述項にSHARING句がないとき,
1. 関連するファイル結合子に対するOPEN文にSHARING指定があるとき,そうして開かれたファ
イル結合子に関連する入出力文の実行によってレコード錠が設定されることはない。
2. 関連するファイル結合子に対するOPEN文にSHARING指定がないとき,そうして開かれたファ
イル結合子に関連する共用ファイルのレコード施錠の種類は実装者定義とする。実装者はその既
定解釈を,規格のLOCK MODE句の構文表現で定義してもよく,別な種類のレコード施錠と規定
してもよく,レコード施錠なしと規定してもよい。既定解釈を規格のLOCK MODE句の構文を用
いて規定する場合,その意味はその句をファイル管理記述項に指定した場合と同様でなければな
らない。
2) 処理系がレコード施錠を実装・提供していないとき,関連するファイル結合子に対してレコード施錠
は効果をもたない。
3) 物理ファイルが排他的(with no other)共用モードで開かれている場合,LOCK MODE句は効果をもた
ない。さもなければ,LOCK MODE句は,これ以降の一般規則に記述した効果をもつ。
4) AUTOMATIC指定があるとき施錠モードは自動とする。レコードは,READ文を実行した場合に施錠
される。
5) MANUAL指定があるとき施錠モードは手動とする。レコードは,入出力文にLOCK指定が明示的に
書かれている場合に施錠される。
6) 単一レコード施錠が明示的に指定されるのは,LOCK ON指定にMULTIPLE指定がないときであり,
暗黙に指定されるのは,LOCK MODE句が指定されLOCK ON指定がないときである。単一レコード
施錠の場合,ある時点に単一のファイル結合子を通して施錠されるのは,ファイル中で一つのレコー
ドだけとする。入出力文(START文を除く。)を実行するとき,そのファイル結合子に対してそれ以
前に施錠されていた,ファイル中のあらゆるレコードが解放される。レコード施錠の詳細は,9.1.15
(レコード施錠)による。
7) LOCK ON指定にMULTIPLE指定があると複数レコード施錠を指定したことになり,一つのファイル
結合子は施錠されたレコードを一つ以上保持してもよい。あるファイルに対して複数レコード施錠を
指定しているファイル結合子は,そのファイルに対するレコード錠を幾つか同時に保持してもよい。
これは,別なファイル結合子が,施錠されたレコードの組のいずれかを呼び出すのを防止するが,施
錠されないレコードを呼び出すことは拒否しない。一つのファイル結合子が保持するレコード錠の最
大数及び実行単位が保持するレコード錠の最大数は,実装者定義とする。これらの最大数は両方とも
189
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1以上でなければならない。いずれかの制限を超えてレコード錠を獲得しようとするあらゆる入出力
文は不成功に終わり,その状態を示す入出力状態を受け取る。レコード施錠の詳細は,9.1.15(レコー
ド施錠)による。
8) レコード錠の設定は,入出力文のアトミック(不可分)な動作の部分とする。
12.3.4.9 ORGANIZATION句
ORGANIZATION(編成)句は,ファイルの論理的構成を指定する。
12.3.4.9.1 一般形式
[ORGANIZATION IS]
SEQUENTIAL
RELATIVE
INDEXED
12.3.4.9.2 一般規則
1) ORGANIZATION句は,ファイルの論理的構成を指定する。ファイル編成は,物理ファイルを生成す
る時点で確定するものであり,それ以降には変更できない。
2) SEQUENTIAL指定は,ファイル編成が順編成であることを指定する。順編成は永続的な論理ファイル
構造であり,各レコードは,ファイルに書き出されるときに確定する前後関係によって識別される。
3) RELATIVE指定は,ファイル編成が相対編成であることを指定する。相対編成は永続的な論理ファイ
ル構造であり,各レコードは,ファイル中のレコードの論理的な順序位置を表す,1以上の整数値に
よって一意に識別される。
4) INDEXED指定は,ファイル編成が索引編成であることを指定する。索引編成は永続的な論理ファイ
ル構造であり,各レコードは,そのレコード中にある一つ以上のキーの値で識別される。
5) ORGANIZATION句の指定がない場合は,順編成を指定したものとみなす。
12.3.4.10 PADDING CHARACTER句
PADDING CHARACTER(埋め草文字)句は,順ファイルでブロックの埋め草に用いる文字を指定する。
注記 PADDING CHARACTER句はこの規格の廃要素であり,規格COBOLの次期改正版からは削除
される予定である。
12.3.4.10.1 一般形式
PADDING CHARACTER IS
データ名1
定数1
12.3.4.10.2 構文規則
1) 定数1は,1文字の英数字定数でなければならない。
2) データ名1は,修飾してもよい。
3) データ名1は,1文字からなり,項類が英数字であるデータ項目であって,作業場所節,局所記憶節,
又は連絡節中で定義されていなければならない。
12.3.4.10.3 一般規則
1) PADDING CHARACTER句は,順ファイルでブロックの埋め草に用いる文字を指定する。入力操作の
間,ブロックの中で最後の論理レコードを越えて存在する,埋め草文字だけからなる部分は無視され
る。入力操作の間,埋め草文字だけからなる論理レコードも無視される。出力操作の間,ブロックの
中で最後の論理レコードを越えて存在する部分は,全て埋め草文字で埋められる。
2) PADDING CHARACTER句を,このファイルが割り当てられた装置の種類には適用不能である場合,
埋め草文字の生成又は認識は行われない。
190
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
3) ファイルを生成するOPEN文を実行する時点での,定数1又はデータ名1のデータ項目の値が埋め草
文字の値として用いられる。
4) ファイルに対してCODE-SET句の指定がある場合,定数1又はデータ名1の内容によって指定される
埋め草文字の変換は,そのファイルを開く時点でファイルに対して確定する。
5) PADDING CHARACTER句の指定がない場合,埋め草文字に用いる値は,実装者定義とする。
12.3.4.11 RECORD DELIMITER句
RECORD DELIMITER(レコードの区切り)句は,外部媒体上にある可変長レコードの長さを決める方
法を表す。
12.3.4.11.1 一般形式
RECORD DELIMITER IS
STANDARD-1
機能名1
12.3.4.11.2 構文規則
1) RECORD DELIMITER句を指定してもよいのは,可変長レコードに対してだけとする。
注記 可変長レコードを指定するには,次の3通りの方法がある。
a) RECORD句の指定がなく,この場合,実装者定義によって可変長レコードを得る。
b) RECORD IS VARYING句の指定がある。
c) 書き方3のRECORD CONTAINS句の指定があり,この場合,実装者定義によって可変
長レコードを得る。
2) 機能名1に用いてよい名前は,実装者定義とする。
12.3.4.11.3 一般規則
1) RECORD DELIMITER句は,外部媒体上にある可変長レコードの長さを決める方法を表す。いずれの
方法を用いても,関数・メソッド・プログラム中で用いられるレコード領域及びレコードの大きさに,
影響を及ばすことはない。
2) STANDARD-1を指定したとき,外部媒体は磁気テープファイルでなければならない。
3) STANDARD-1を指定したとき,可変長レコードの長さを決めるために用いられる方法は,JIS X 0601
の7.2(レコード)が規定する方法とする。
4) 機能名1を指定したとき,可変長レコードの長さを決めるために用いられる方法は,実装者が規定し
て機能名1に関連付けた方法とする。
5) RECORD DELIMITER句の指定がない場合,可変長レコードの長さを決めるために用いられる方法は,
実装者定義とする。
6) OPEN文の実行が成功した時点で,レコードの区切り記号は,そのOPEN文に指定したファイル名に
関連するファイル管理記述項のRECORD DELIMITER句で指定したものとなる。
12.3.4.12 RECORD KEY句
RECORD KEY(レコードキー)句は,索引ファイル中にあるレコードを主レコードキーによって呼び出
す経路を指定する。
12.3.4.12.1 一般形式
RECORD KEY IS
データ名1
レコードキー名1 SOURCE IS {データ名2} …
12.3.4.12.2 構文規則
1) データ名1及びデータ名2は,修飾してもよい。
191
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
2) データ名1及びデータ名2は,このファイル管理記述項のファイル名に関連するレコード記述項内で
定義された,項類が英数字又は各国文字のデータ項目でなければならない。データ名2を複数書いた
場合,その項類は全て同じでなければならない。
3) データ名1及びデータ名2は,可変長データ項目であってはならない。
4) 索引ファイルに可変長レコードが含まれているとき,データ名1及びデータ名2の各々は,レコード
の先頭nバイト以内に含まれていなければならない。ここで,nはそのファイルの最小レコードの大
きさに等しい値とする[13.16.41(RECORD句)を参照]。
5) レコードキー名1は,データ名2と同一の字類及び項類をもつ。
12.3.4.12.3 一般規則
1) RECORD KEY句は,この記述項の左辺であるファイルに対して主レコードキーを指定する。関連す
るレコードキーの値は,ファイル中の別なレコードの同じレコードキーの値と等しい値であってはな
らない。等しいか否かの判定は,ファイルに対して用いられる文字照合順序に基づき比較条件の規則
による。
2) レコードキー名1は,指定したデータ名2の全てを指定した順に連結してでき上がるレコードキーを
定義する。
3) データ名1又はデータ名2の,データ記述及びレコード中での相対位置は,物理ファイルを生成した
ときのものと同じでなければならない。
4) ファイルに二つ以上のレコード記述項があるとき,データ名1又はデータ名2は,これらのレコード
記述項の一つにだけ記述する必要がある。レコード記述項のいずれか一つにおいて,データ名1又は
データ名2によって参照されるバイト位置は,そのファイルに属するその他全てのレコード記述項で
も,同じバイト位置が暗黙にキーとして参照される。
12.3.4.13 RELATIVE KEY句
RELATIVE KEY(相対キー)句は,相対ファイルを呼び出すための,相対レコード番号を含むデータ項
目を指定する。
12.3.4.13.1 一般形式
RELATIVE KEY ISデータ名1
12.3.4.13.2 構文規則
1) データ名1は,修飾してもよい。
2) データ名1は,符号なし整数データ項目であって,その記述中にPICTURE記号"P"が含まれないもの
でなければならない。
3) データ名1は,関連するファイル名に従属するレコード記述項で定義されてはならない。
12.3.4.13.3 一般規則
1) 相対ファイルに格納されている全てのレコードは,相対レコード番号によって一意に識別される。あ
るレコードの相対レコード番号は,ファイル中でそのレコードが論理的に何番目の位置にあるのかを
指定する。最初の論理レコードは相対レコード番号が1であり,その後に続く論理レコードは相対レ
コード番号が2,3,4,…となる。
2) 入出力文の実行に関連する相対キーデータ項目は,データ名1が指すデータ項目とする。データ名1
は,利用者と大容量記憶管理システム(MSCS)との間で相対レコード番号を連絡するのに用いられ
る。
12.3.4.14 RESERVE句
192
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
RESERVE(確保)句によって利用者は,割り当てられる入出力領域の個数を指定できる。
12.3.4.14.1 一般形式
RESERVE 整数1
AREA
AREAS
12.3.4.14.2 一般規則
1) RESERVE句の指定があると,割り当てられる入出力領域の個数は整数1の値に等しい。
RESERVE句の指定がないと,割り当てられる入出力領域の個数は実装者定義とする。
12.3.4.15 SHARING句
SHARING(ファイル共用)句は,このファイルがファイル共用及びレコード施錠に関与する対象である
ことを表す。この句は,ファイルに対して行ってもよいファイル共用(又は非共用)の度合い,及びレコ
ード錠の効果の有無を規定する。
12.3.4.15.1 一般形式
SHARING WITH
ALL OTHER
NO OTHER
READ ONLY
12.3.4.15.2 一般規則
1) SHARING句は,ファイルに対して使用される共用モードを指定する。OPEN文のSHARING指定によ
って上書きされない限りこの共用モードが使用される。この句は,レコード錠の効果の有無も指定す
る。これ以上の詳細は,9.1.14(共用モード)による。
12.3.5 入出力管理段落
入出力管理段落は,ファイル処理,レコード処理,又は整列併合処理の間,異なるファイルに関連する
記憶領域が共用されることを指定する。
12.3.5.1 一般形式
I-O-CONTROL. [[{same句} … ] . ]
ここで,same句は次による。
12.3.6 SAME句
SAME(領域共用)句は,ファイル処理,レコード処理,又は整列併合処理の間,記憶領域が共用され
るファイルを指定する。
12.3.6.1 一般形式
書き方1(ファイル領域)
SAME AREA FOR ファイル名1 {ファイル名2} …
書き方2(レコード領域)
SAME RECORD AREA FOR ファイル名1 {ファイル名2} …
書き方3(整列併合領域)
SAME
SORT
SORT-MERGE AREA FOR ファイル名1 {ファイル名2} …
12.3.6.2 構文規則
1) SORTとSORT-MERGEは,等価とする。
2) ファイル名1及びファイル名2は,このSAME句を含むソース要素のファイル管理段落で指定されな
ければならない。
193
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
3) ファイル名1及びファイル名2は,外部ファイル結合子であってはならない。
4) あるSAME句に指定したファイル群の編成又は呼出し法が,全て同じである必要はない。
5) 報告書ファイルを表すファイル名を,ファイル領域形式のSAME句の一つに書いてもよいが,しかし
レコード領域形式又は整列併合領域形式のSAME句に書いてはならない。
6) 整列併合用ファイルを表すファイル名を,レコード領域形式のSAME句の一つ又は整列併合領域形式
のSAME句の一つには書いてもよいが,ファイル領域形式のSAME句に書いてはならない。
7) 報告書ファイルでも整列併合用ファイルでもないファイルを表すファイル名は,ファイル領域形式の
SAME句の一つ,レコード領域形式のSAME句の一つ及び整列併合領域形式のSAME句の幾つかに
書いてもよい。
8) 整列併合領域形式のSAME句に指定したファイル名のうち,少なくとも一つは整列併合用ファイルを
表すものでなければならない。
9) あるファイル領域形式のSAME句に書いた一つ以上のファイル名が,レコード領域形式のSAME句
の一つにも書いてあるとき,ファイル領域形式のSAME句のほうに書いたファイル名の全てをレコー
ド領域形式のSAME句にも書かなければならない。ただし,ファイル領域形式のSAME句には書か
ないファイル名を,レコード領域形式のSAME句に書いてもよい。
10) 整列併合用ファイル以外のファイルを表すファイル名をファイル領域形式のSAME句の一つと整列
併合領域形式のSAME句の一つ以上とに書いたとき,ファイル領域形式のSAME句のほうに書いた
ファイル名の全てをこれらの整列併合領域形式のSAME句にも書かなければならない。
12.3.6.3 一般規則
1) ファイル領域形式のSAME句は,ファイル名1及びファイル名2の二つ以上のファイルが,処理中に
同じ記憶領域を使用することを指定する。共用される領域には,ファイル名1及びファイル名2のフ
ァイルに割り当てられる全ての記憶領域が含まれる。これらのファイルのうち二つ以上を同時に開い
た状態にしてはならない。
2) レコード領域形式のSAME句は,ファイル名1及びファイル名2の二つ以上のファイルが,現在の論
理レコードを処理するための記憶領域を共用することを指定する。これらのファイルの全ては,同時
に開いた状態にしてもよいが,ファイル領域形式のSAME句にも書いたファイルのうちその時点で開
いていてよいものは一つだけとする。共用された記憶領域での論理レコードは,出力モードで開かれ
ている各ファイルの論理レコードであり,入力モードで開かれているファイルの最近読み出された論
理レコードでもある。これは,最左端のバイト位置をそろえてレコード領域を暗黙に再定義したのと
同じことになる。レコード領域が実行時要素にとって使用可能であるのは,ファイル名1か又はファ
イル名2,… のファイル結合子のどれかが開いた状態である期間とする。ファイル結合子が一つも開
いた状態にない場合,レコード領域は実行時要素にとって使用可能ではない。
3) 整列併合領域形式のSAME句は,記憶領域の共用を,次のとおり指定する。
a) 整列併合領域形式のSAME句に指定した,ある整列併合用ファイルの整列操作又は併合操作のため
に割り付けられた記憶領域はどれも,同じ整列併合領域形式のSAME句に指定した別の整列併合用
ファイルの整列操作又は併合操作のために,再利用できる。
b) 整列併合領域形式のSAME句に指定した,整列併合用ファイルではないファイルに割り当てられる
記憶領域は,その整列併合領域形式のSAME句に指名された整列併合用ファイルの整列又は併合に
必要なだけ割り付けられてもよい。このような割付けの程度は,実装者定義とする。
c) 整列併合領域形式のSAME句に指定した,整列併合用ファイル以外のファイルに割り当てられる記
194
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
憶領域は,相互に同じ記憶領域を共用しない。
4) 整列併合領域形式のSAME句に指名された整列併合用ファイルを参照しているSORT文又はMERGE
文の処理の間,その同じ句に指定したファイル名に関連している,整列併合用ファイル以外のファイ
ルは,いずれも開いた状態であってはならない。
13 データ部
データ部は,実行時モジュールが入力として受け取ったり,操作したり,生成したり,出力として作成
したりするデータを記述する。データ部は,書いても書かなくてもよい。
次にデータ部における各節の一般形式を示し,ソース要素中での節の出現順序を定義する。
13.1 データ部の構造
13.1.1 一般形式
DATA DIVISION.
FILE SECTION.
ファイル記述項
定数記述項
レコード記述項 …
整列併合ファイル記述項
定数記述項
レコード記述項 …
…
WORKING-STORAGE SECTION.
77レベル記述項
定数記述項
レコード記述項
…
LOCAL-STORAGE SECTION.
77レベル記述項
定数記述項
レコード記述項
…
LINKAGE SECTION.
77レベル記述項
定数記述項
レコード記述項
…
COMMUNICATION SECTION.
通信記述項
定数記述項
レコード記述項 … …
REPORT SECTION.
報告書記述項
定数記述項
報告集団記述項 … …
SCREEN SECTION.
定数記述項
画面記述項 …
13.2 明示属性及び暗黙属性
属性は,暗黙に指定しても,明示的に指定してもよい。明示的に指定された属性を,明示属性と呼ぶ。
ある属性について明示的な指定がない場合,その属性は既定解釈となる。このような属性を,暗黙属性と
呼び,その属性を明示指定したのと同様に取り扱う。
13.3 ファイル節
ファイル節では,データファイル,整列用ファイル及び併合用ファイルの構造を定義する。
13.3.1 一般形式
FILE SECTION.
195
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ファイル記述項
定数記述項
レコード記述項 …
整列併合ファイル記述項
定数記述項
レコード記述項 …
…
ここで,次の用語については,指示された細分箇条による。
用語
細分箇条
定数記述項
13.9(定数記述項)
レコード記述項
13.10(レコード記述項)
13.3.2 構文規則
1) ファイル節をプログラム定義又は関数定義に指定してもよい。クラス定義内ではファイル節をファク
トリ定義又はインスタンス定義に指定してもよいが,メソッド定義に指定してはならない。ファイル
節をインタフェース定義内に指定してはならない。
13.3.3 一般規則
1) ファイル節中に指定したデータ項目形式又は表形式のVALUE句は,INITIALIZE文の実行中を除いて,
無視される。ファイル節のデータ項目の初期値は,規定されない。
13.3.4 ファイル記述項
ファイル記述項(file description entry,FD entry)が,ファイル節中の構成の最高レベルを表す。
ファイル記述項は,ファイル結合子,関連するレコード,及び関連するデータ項目の,物理的な構造,
識別,及び内部か外部かの属性に関する情報を与える。また,ファイル記述項は,ファイル名が局所名か
大域名かも決定する。さらに,ファイル記述項は,報告書ファイルの物理的な構造,識別,及び報告書名
に関する情報を与える。
13.3.4.1 一般形式
書き方1(順ファイル)
FD ファイル名1
[IS EXTERNAL [AS 定数1]]
[IS GLOBAL]
FORMAT
BIT
CHARACTER
NUMERIC
DATA
BLOCK CONTAINS [整数1 TO] 整数2
CHARACTERS
RECORDS
[record句]
LINAGE IS
データ名2
整数8
LINES
WITH FOOTING AT
データ名3
整数9
LINES AT TOP
データ名4
整数10
LINES AT BOTTOM
データ名5
整数11
CODE-SET
IS 符号系名1 [符号系名2]
FOR ALPHANUMERIC IS 符号系名1
FOR NATIONAL IS 符号系名2
.
196
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
書き方2(相対-索引ファイル)
FD ファイル名1
[IS EXTERNAL [AS 定数1]]
[IS GLOBAL]
BLOCK CONTAINS [整数1 TO] 整数2
CHARACTERS
RECORDS
[record句] .
書き方3(報告書ファイル)
FD ファイル名1
[IS EXTERNAL [AS 定数1]]
[IS GLOBAL]
BLOCK CONTAINS [整数1 TO] 整数2
CHARACTERS
RECORDS
[record句]
CODE-SET
IS 符号系名1 [符号系名2]
FOR ALPHANUMERIC IS 符号系名1
FOR NATIONAL IS 符号系名2
REPORT IS
REPORTS ARE {報告書名1}… .
ここで,record句は,13.16.41(RECORD句)による。
13.3.4.2 構文規則
全ての書き方
1) ファイル名1は,ファイル管理記述項に指定されていなければならない。
2) ファイル名1の後に書く句は,任意の順序で現れてよい。
書き方1,書き方2
3) レコード記述項の指定がないとき,
a) RECORD句を,ファイル記述項に必ず指定しなければならない。
b) ファイルに関連する全てのWRITE文及びREWRITE文に,ファイル名1のあるFILE指定とFROM
指定とを書かなければならない。
c) ファイルに関連するREAD文には全て,INTO指定を書かなければならない。
書き方1
4) 書き方1は,順ファイル用のファイル記述項とする。
5) FORMAT句を指定する場合,ファイルには可変長レコードを指定しなければならない。
書き方2
6) 書き方2は,相対ファイル用又は索引ファイル用のファイル記述項である。索引ファイルでは,一つ
以上のレコード記述項がファイル記述項に関連付けられなければならない。
書き方3
7) 書き方3は,報告書ファイル用のファイル記述項とする。レコード記述項又は定数記述項を,報告書
ファイル用のファイル記述項に関連付けてはならない。
8) REPORT句を指定したファイル記述項の左辺を手続き部の中で参照してもよい箇所は,USE文,
197
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
CLOSE文,又はOUTPUT指定若しくはEXTEND指定のあるOPEN文だけとする。
13.3.4.3 一般規則
全ての書き方
1) ファイル記述項は,ファイル名1をファイル結合子に関連付ける。
2) EXTERNAL句の指定がある場合,同じファイル結合子を参照している実行単位中のファイル管理記
述項は全て,次に示す規則を守らなければならない。
a) BLOCK CONTAINS句のあるファイル記述項が一つでもあるとき,全てのファイル記述項にBLOCK
CONTAINS句があって,物理レコードの大きさの最小値及び最大値の指定が同じでなければならな
い。
b) CODE-SET句のあるファイル記述項が一つでもあるとき,全てのファイル記述項にCODE-SET句が
あって,文字集合の指定が同じでなければならない。
c) LINAGE句のあるファイル記述項が一つでもあるとき,全てのファイル記述項にLINAGE句があっ
て,次に示す指定が同じでなければならない。
1. 定数の指定に対応して同じ値を指定する。
2. データ名の指定には,対応する同じ外部データ項目を指定する。
d) 全てのファイル記述項で,レコード長の最小値及び最大値の指定が同じでなければならない。
e) REPORT句のあるファイル記述項が一つでもあるとき,全てのファイル記述項にREPORT句がなけ
ればならない。
書き方1
3) 順ファイル用のファイル記述項にLINAGE句とEXTERNAL句とがある場合,LINAGE-COUNTERは
外部データ項目とする。順ファイル用のファイル記述項にLINAGE句とGLOBAL句とがある場合,
LINAGE-COUNTERは大域名とする。
書き方3
4) ファイル名1に関連するファイルの報告書用の論理レコードの構造は,実装者定義とする。
13.3.5 整列併合用ファイル記述項
整列併合用ファイル記述項(sort-merge file description entry,SD entry)は,ファイル節中の最高レベルを
表す。整列併合用ファイル記述項は,整列用又は併合用ファイルの物理的な構造に関する情報を与える。
整列併合用ファイル記述項の句は,整列用ファイル又は併合用ファイルに関連するレコードの名前と大き
さを指定する。このファイルのレコードの組は,外部媒体上にあっても処理系の内部記憶域中にあっても
よい。このファイルに関連する記憶域割付け及びレコード管理は,SORT/MERGEの実装方法の制御下に
ある。
13.3.5.1 一般形式
SD ファイル名1
RECORD
CONTAINS 整数1 CHARACTERS
IS VARYING IN SIZE [[FROM 整数2] [TO 整数3] CHARACTERS]
[DEPENDING ON データ名1]
CONTAINS 整数4 TO 整数5 CHARACTERS
.
13.3.5.2 構文規則
1) ファイル名1は,ファイル管理記述項に指定されていなければならない。
2) 整列併合用ファイル記述項に,一つ以上のレコード記述項を関連付けなければならない。
198
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
3) ファイル名1を,入出力文中に指定してはならない。
4) ファイル名1に関連するレコード記述項を,語FROM又は語INTOの直後に書く以外には,入出力文
中に指定してはならない。
13.3.5.3 一般規則
1) 文字数は,バイトの個数で表現される。
13.4 作業場所節
作業場所節は,ファイルの一部ではないレコード及びその従属データ項目を記述する。作業場所節中で
記述されるデータは静的データ又は初期化データとする。
13.4.1 一般形式
WORKING-STORAGE SECTION.
77レベル記述項
定数記述項
レコード記述項
…
ここで,次の用語については,指示された細分箇条による。
用語
細分箇条
77レベル記述項
13.11(77レベル記述項)
定数記述項
13.9(定数記述項)
レコード記述項
13.10(レコード記述項)
13.4.2 構文規則
1) 作業場所節を関数定義又はプログラム定義に指定してもよい。クラス定義内では作業場所節をファク
トリ定義又はインスタンス定義に指定してもよいが,メソッド定義に指定してはならない。作業場所
節をインタフェース定義内に指定してはならない。
13.4.3 一般規則
1) 作業場所節中のデータ項目群は,初期化属性のないプログラムの中,関数の中,ファクトリの中又は
オブジェクトの中では,静的データとする。
2) 作業場所節中のデータ項目群は,初期化属性のあるプログラムの中では,初期化データとする。
3) 作業場所節中のデータ項目群は,13.16.61(VALUE句)の規則に従って初期化される。
13.5 局所記憶節
局所記憶節は自動データを記述する。
13.5.1 一般形式
LOCAL-STORAGE SECTION.
77レベル記述項
定数記述項
レコード記述項
…
ここで,次の用語については,指示された細分箇条による。
用語
細分箇条
77レベル記述項
13.11(77レベル記述項)
定数記述項
13.9(定数記述項)
レコード記述項
13.10(レコード記述項)
199
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
13.5.2 構文規則
1) 局所記憶節をプログラム定義又は関数定義に指定してもよい。クラス定義内ではメソッド定義に指定
してもよい。
13.5.3 一般規則
1) 局所記憶節中のデータ項目群は,自動データとする。
2) 局所記憶節中のデータ項目群は,13.16.61(VALUE句)の規則に従って初期化される。
13.6 連絡節
連絡節は,仮パラメタ及び返却項目を記述する。
ソース要素の連絡節に記述した仮パラメタ及び返却項目は,そのソース要素が活性化された場合,その
要素と活性化する側のソース要素との両方によって参照される。
13.6.1 一般形式
LINKAGE SECTION.
77レベル記述項
定数記述項
レコード記述項
…
ここで,次の用語については,指示された細分箇条による。
用語
細分箇条
77レベル記述項
13.11(77レベル記述項)
定数記述項
13.9(定数記述項)
レコード記述項
13.10(レコード記述項)
13.6.2 構文規則
1) 連絡節を指定してもよいのは,プログラム定義,関数定義,メソッド定義,プログラム原型定義,又
は関数原型定義の中とする。
2) 関数原型又はプログラム原型の連絡節に現れる仮パラメタ及び返却項目の記述は,それぞれ対応する
関数定義又はプログラム定義中の仮パラメタ及び返却項目の記述と,一致しなければならない。
3) 連絡節に現れるパラメタ及び返却項目の記述は,14.7(パラメタ及び返却項目の適合)の規則に従わ
なければならない。
4) 基底付きデータ項目は,13.16.5(BASED句)に従って参照してもよい。それ以外の場合,ソース要
素の連絡節中に定義されたデータ項目を,そのソース要素の手続き部の中で参照してもよいのは,次
の条件のいずれかを満たす場合,かつ,その場合だけとする。
a) 手続き部見出しのUSING指定又はRETURNING指定の作用対象である。
b) 手続き部見出しのUSING指定又はRETURNING指定の作用対象に従属している。
c) REDEFINES句付き又はRENAMES句付きで定義され,その対象がa) 又はb) の条件を満たす。
d) 細則c) の条件を満たす項目に従属している。
e) 細則a)〜d) の条件のいずれかを満たすデータ項目に関連する,条件名又は指標名である。
5) 関数の仮パラメタは,受取り側項目として用いてはならない。
13.6.3 一般規則
1) 基底付きデータ項目へのアクセスは,13.16.5(BASED句)による。
2) 連絡節中で記述した仮パラメタ及び返却項目と,活性化する側の要素で記述したデータ項目との間に
確立される対応付けの機構は14.1.3(手続き部の構造の一般規則)による。指標名の場合は,このよ
200
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
うな対応は確立されず,活性化する側と活性化される側のソース要素中の指標名は常に別の指標を指
す。
3) プログラム定義中で仮パラメタ及び返却項目へのアクセスが保証されるのは,プログラムがCALL文
の制御下で実行されてCALL文にUSING指定がある場合,かつ,その場合だけとする。仮パラメタ
又は返却項目が,呼び出される側のプログラムでないプログラム(例えば,オペレーティングシステ
ムによって活性化されたプログラムなど)の中でアクセスされた場合,その結果は規定されない。プ
ログラムが非COBOL実行時要素によって活性化される場合,仮パラメタ及び返却項目へのアクセス
が保証されるか否かは,実装者定義とする。
4) 関数定義中及びメソッド定義中では,仮パラメタ及び返却項目へのアクセスは常に保証される。
5) 連絡節中に指定した,データ項目形式又は表形式のVALUE句は,明示的な又は暗黙のINITIALIZE
文の実行中を除き,無視される。この連絡節を内包する実行時要素を活性化したのがCOBOL実行時
要素であるとき,連絡節中のデータ項目の初期値は,活性化する側の実行時要素中の対応する仮パラ
メタの値によって決まる[14.1.3(手続き部の構造の一般規則)参照]。この連絡節を内包する実行時
要素を活性化したのがオペレーティングシステムであるとき,連絡節中のデータ項目の初期値は規定
されない。この連絡節を内包する実行時要素を活性化したのが非COBOL実行時要素であるとき,連
絡節中のデータ項目の初期値は実装者定義とする。
13.7 報告書節
報告書節は,報告書ファイルに書き出される報告書を記述する。各報告書の記述は報告書記述(RD)項
で始まり,その後に一つ以上の報告集団記述項が続く。
13.7.1 一般形式
REPORT SECTION.
報告書記述項
定数記述項
報告集団記述項 … …
ここで,次の用語については,指示された細分箇条による。
用語
細分箇条
定数記述項
13.9(定数記述項)
報告書記述項
13.12(報告書記述項)
報告集団記述項
13.13(報告集団記述項)
13.7.2 構文規則
1) 報告書節を,関数定義又はプログラム定義に指定してもよい。クラス定義内では報告書節を,ファク
トリ定義又はインスタンス定義に指定してもよいが,メソッド定義に指定してはならない。報告書節
を,インタフェース定義内に指定してはならない。
13.7.3 報告書記述項
報告書記述(RD)項は,報告書に名前を付けて,その物理的な細分と論理的な細分とを定義する[13.7.5.1
(報告書の物理的な細分)参照]。
RD項の後には,一つ以上の報告集団記述項を続けて書かなければならない。そのRD項と,後続の報
告集団記述項とで,一つの報告書の完全な記述となる。報告書は,そのRD項を参照するINITIATE文の
実行成功から,そのRD項を参照するTERMINATE文の実行成功までの間,活性状態になる。それ以外の
時点では,不活性状態とする。
201
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
13.7.4 報告集団記述項
報告集団(report group)とは,0個以上の報告行のまとまりであり,これが論理的にも視覚的にも一つ
の単位として扱われる。各々の報告集団記述項は,1個のレベル01記述項と,後続する0個以上の従属記
述項とで構成し,その報告集団の縦横の体裁,及びそれに属する印字データ項目群(印字可能項目と呼ぶ)
の内容又は出所を記述しておかなければならない。
報告書に関連する報告集団は,報告書記述項の後に続けて指定する。複数の報告集団を指定する場合,
その定義の順序に特別の意味はない。各報告集団の記述の最初の記述項には,レベル番号1及びTYPE句
を記述する。データ名も指定すると,後に報告集団を識別するためにこのデータ名を使用してもよい。そ
の報告集団を更に細かく記述するために,従属する集団記述項及び基本記述項を指定してもよい。
13.7.5 報告書の細分
報告書には物理的な細分と論理的な細分とがあって,ページ上に印字する内容を決定するため相互に作
用し合う。
13.7.5.1 報告書の物理的な細分
13.7.5.1.1 ページ
各々の報告書を構成するものは,PAGE句で定義される均一な大きさのページの集まり,又は大きさが
不定な単一のページである。各々のページ頭書き,本体集団(明細,制御頭書き,又は制御脚書き),及び
ページ脚書きは,ページを細分した別々の領域に現れる。報告書頭書き及び報告書脚書きは,ページ上の
どの位置に現れてもよい。新たなページへのページ送りは,本体集団に対して自動的に行われ,ページ脚
書き及びページ頭書きの印字も一緒に行われる。
13.7.5.1.2 行
各々の報告集団を縦方向に分割すると0個以上の行(line)になる。行又は複数行の組は各々,報告集団
記述中のLINE句で表現される。NEXT GROUP句を指定すると,報告集団の直後の行送りが指定される。
13.7.5.1.3 報告書項目
報告集団の各々の行を横方向に分割すると0個以上の印字可能項目(printable item)になる。印字可能
項目又は隣接した印字可能項目の組は,各々報告集団記述中のCOLUMN句のある基本記述項で定義され
る。印字可能項目に設定される値は,そのデータ記述項のSOURCE句,SUM句又はVALUE句だけによ
って決まる。さらに,印字不能項目を指定してもよい。印字不能項目は,記述項にCOLUMN句もLINE
句も含まないが,その項目から印字可能項目を派生させてもよい。
報告書項目は,次に示す場合を除いて,データ部の報告書節以外の節の句からも,及び手続き部の文か
らも,アクセス又は参照してはならない。
1) 合計カウンタを,手続き部の中で検査又は変更してもよい。
2) 型がDETAIL(明細)である報告集団を,GENERATE文で参照する。
関数一意名又は文内メソッド呼出しから参照する報告書項目は,基本報告書項目でなければならない。
13.7.5.2 報告書の論理的な細分
型がDETAIL(明細)の報告集団は,入れ子になった制御集団の組という構造になっていてもよい。各々
の制御集団には,始めに制御頭書きがあり,終わりに制御脚書きがあってもよい。
制御切れ(control break)が発生するのは,GENERATE文の実行中に制御データ項目内で値の変化が検
出された時点とする。制御データ項目の階層構造は,このような値の変更の自動的な検査に用いられる。
制御切れが検出されると,同じGENERATE文によって,定義済みの制御脚書きがそれぞれ階層とは逆の
順序で印字され,定義済みの制御頭書きがそれぞれ階層と同じ順序で印字される。
202
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
13.8 画面節
画面節は,端末入出力の操作中に表示される画面について記述する。画面節では,画面レコードと従属
画面項目とを記述する。
13.8.1 一般形式
SCREEN SECTION.
定数記述項
画面記述項 …
ここで,次の用語については,指示された細分箇条による。
用語
細分箇条
定数記述項
13.9(定数記述項)
画面記述項
13.15(画面記述項)
13.8.2 構文規則
1) 画面節を,関数定義又はプログラム定義に指定してもよい。クラス定義内では画面節を,ファクトリ
定義又はインスタンス定義には指定してもよいが,メソッド定義に指定してはならない。画面節を,
インタフェース定義内に指定してはならない。
13.9 定数記述項
定数記述項(constant entry)は,名前付き定数を定義する。名前付き定数は,定数の代わりに用いても
よい。
13.9.1 一般形式
1
01 定数名1 CONSTANT [IS GLOBAL]
AS
算術式1
定数1
BYTE-LENGTH OF データ名1
LENGTH OF データ名2
FROM 翻訳変数名1
.
13.9.2 構文規則
1) 定数記述項の作用対象が単一数字定数であるとき,作用対象は算術式ではなく定数とみなされる。
注記 整数部への切捨ては行われない。
2) 定数名1は,一般形式に定数名1と同一の字類及び項類の定数がある箇所であればどこで用いてもよ
い。定数名1が整数のときは,PICTURE文字列中で記号の反復回数を指定するために用いてもよい
[13.16.38(PICTURE句)参照]。
3) データ名1及びデータ名2は,修飾してもよい。
4) データ名1又はデータ名2の長さは,直接又は間接に,定数名1の値によって変化する量であっては
ならない。
5) 定数1の値及び算術式1中の定数の値はいずれも,直接又は間接に,定数名1の値によって変化する
量であってはならない。
6) 定数1及び算術式1中の定数はいずれも,表意定数であってはならない。
7) 算術式1の書き方は,7.2.5(翻訳時算術式)によらなければならない。ただし,作用対象は全て定数
でなければならず,翻訳変数名であってはならない。
8) 翻訳変数名1は,その時点で定義済み条件が真であるような翻訳変数名でなければならない。
9) 定数名1が別の定数名と重複する場合,算術式1,定数1,データ名1,データ名2又は翻訳変数名1
203
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
の指定は,もう一方の定数名に指定したものと同一でなければならない。
10) データ名1及びデータ名2は,記述にANY LENGTH句があってはならない。
11) データ名1及びデータ名2は,報告書節で定義されているとき,基本報告書項目でなければならない。
13.9.3 一般規則
1) 定数1又は翻訳変数名1を指定したとき,この記述項の中以外の箇所に定数名1を書く効果は,定数
名1を書いた箇所に,定数1又は翻訳変数名1が表す原文を書いたのと同じである。
2) 定数1又は翻訳変数名1を指定したとき,定数名1の字類及び項類は,定数1又は翻訳変数名1が表
す定数と同じになる。
3) 算術式1,データ名1又はデータ名2を指定したとき,この記述項の中以外の箇所に定数名1を書く
効果は,定数名1を書いた箇所に整定数を書いたのと同じである。この整定数の値は,次の一般規則
で規定されるとおりとする。
4) 算術式1を指定したとき,これを7.2.5(翻訳時算術式)に従って評価して,定数名1の値が決まる。
定数名1の字類及び項類は数字とする。定数名1は整数になる。
5) BYTE-LENGTH指定を書いたとき,定数名1の字類及び項類は数字とし,定数名1は整数とする。定
数名1の値はBYTE-LENGTH組込み関数の規則に従って決まる。ただし,データ名1が可変長データ
項目であるときは,そのデータ項目の最大の大きさが用いられる。
6) LENGTH指定を書いたとき,定数名1の字類及び項類は数字とし,定数名1は整数とする。定数名1
の値はLENGTH組込み関数の規定に従って決まる。ただし,データ名2が可変長データ項目であると
きは,そのデータ項目の最大の大きさが用いられる。
13.10 レコード記述項
レコード記述項(record description entry)は,特定のレコードの性質を記述するデータ記述項の組から
構成される。その先頭はレベル番号が1でなければならない。記述のレベル番号が1であるデータ項目は,
レコードとする。
レコード記述は,階層構造をもっていてもよい。レコード記述の構造と,レコード記述項中に書いても
よい要素群とについては,8.5.1.2(レベル)及び13.14(データ記述項)による。
基本データのうちで他のいかなるデータ項目とも階層関係をもたないものは,単一基本項目であるレコ
ードとして記述してもよい。その他の選択肢として,そのような基本データを作業場所節,局所記憶節又
は連絡節の中で定義する場合には,レベル番号77をもつデータ記述項として別々に記述してもよい[13.11
(77レベル記述項)参照]。
13.11 77レベル記述項
連絡節,局所記憶節,及び作業場所節で,他のデータ項目と階層関係をもたない項目は,それ以上の細
分化を必要としないとき,集団化してレコードにする必要はない。その代わりに,これらは独立基本デー
タ項目として分類され定義される。これらの各々の項目は,特殊なレベル番号77で始まる別々のデータ記
述項で定義する。
13.12 報告書記述項
報告書記述項(report description entry,RD entry)は,報告書に名前を付けて,その全般的な物理構造と
論理構造とを記述する。
13.12.1 一般形式
RD 報告書名1
[IS GLOBAL]
204
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
CODE IS
定数1
一意名1
CONTROL IS
CONTROLS ARE
{データ名1} …
FINAL [データ名1] …
PAGE
LIMIT IS
LIMITS ARE
整数1
整数1
LINE
LINES
整数2
COLS
COLUMNS
[HEADING IS 整数3]
FIRST
DETAIL
DE
IS 整数4
LAST
CONTROL HEADING
CH
IS 整数5
LAST
DETAIL
DE
IS 整数6 [FOOTING IS 整数7]
.
13.12.2 構文規則
1) 報告書名1を指定した唯一のREPORT句が,ファイル記述項中に存在しなければならない。
2) 報告書名1の後の句は,任意の順序で現れてよい。
13.12.3 一般規則
1) GLOBAL句の指定がある場合,報告書名1及びそれを構成している全ての報告集団,報告書名1に属
するPAGE-COUNTER及びLINE-COUNTER,並びに報告書名1の中で定義される合計カウンタは,
大域とする。
13.13 報告集団記述項
報告集団記述項(report group description entry)は,報告集団及びその報告集団内の各項目の性質を指定
する。
13.13.1 一般形式
レベル番号 [項目名句]
[type句]
[next-group句]
[line句]
[picture句]
[USAGE IS]
DISPLAY
NATIONAL
[sign句]
[justified句]
[column句]
[BLANK WHEN ZERO]
source句
sum句
value句
[PRESENT WHEN 条件1]
[GROUP INDICATE]
[OCCURS [整数1 TO] 整数2 TIMES [DEPENDING ON データ名1] [STEP 整数3]]
205
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
[varying句] .
ここで,次の用語については,指示された細分箇条による。
用語
細分箇条
column句
13.16.14(COLUMN句)
項目名句
13.16.18(項目名句)
justified句
13.16.30(JUSTIFIED句)
line句
13.16.33(LINE句)
next-group句
13.16.35(NEXT GROUP句)
picture句
13.16.38(PICTURE句)
sign句
13.16.50(SIGN句)
source句
13.16.51(SOURCE句)
sum句
13.16.52(SUM句)
type句
13.16.55(TYPE句)(報告集団の形式)
value句
13.16.61(VALUE句)(報告書節の形式)
varying句
13.16.62(VARYING句)
13.13.2 構文規則
1) 報告集団記述項は,報告書節中にだけ書いてもよい。
2) 項目名句を指定する場合,データ名形式又はFILLER形式を指定しなければならない。項目名句はレ
ベル番号の直後に続いて書かなければならない。その他の句は,どのような順序で指定してもよい。
3) レベル番号は,1〜49までの整数のいずれかでなければならない。
4) 報告書記述項の後に指定する最初の記述項は,レベル1記述項でなければならない。
5) TYPE句は,レベル1項目にだけ指定してもよく,レベル1項目には必ず指定しなければならない。
6) NEXT GROUP句は,レベル1記述項にだけ指定してもよい。
7) データ名形式の項目名句の指定が必要となるのは,そのデータ名をGENERATE文又はUSE BEFORE
REPORTING文の中で参照する場合,合計カウンタの修飾語として参照する場合,SUM句のUPON指
定で参照する場合,SUM句の作用対象として参照する場合,のいずれかとする。その他の方法でその
データ名を参照してはならない。
8) LINE句のある報告集団記述項は,LINE句のある他の記述項に従属していてはならない。
9) 基本記述項であってCOLUMN句はあるがLINE句のないものは,LINE句のある記述項に従属してい
なければならない。
10) 基本記述項であってCOLUMN句のあるものには,SOURCE句,VALUE句又はSUM句のいずれかを
も書かなければならない。
11) PICTURE句,COLUMN句,SOURCE句,VALUE句,SUM句及びGROUP INDICATE句は,基本記
述項にだけ書いてもよい。
12) SOURCE句又はSUM句のある基本記述項には,PICTURE句を必ず指定しなければならない。
13) VALUE句のある基本記述項には,COLUMN句を必ず指定しなければならない。
14) 基本項目に対するPICTURE句は,VALUE句に英数字定数・ブール定数・各国文字定数を指定した場
合,省略してもよい。次のPICTURE句を書いたものとみなす。
a) 定数が英数字のとき “PICTURE X(長さ)”
b) 定数がブールのとき “PICTURE 1(長さ)”
206
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
c) 定数が各国文字のとき “PICTURE N(長さ)”
ここで“長さ”とは定数の長さである[8.3.1.2(定数)参照]。
15) BLANK WHEN ZERO又はJUSTIFIEDの指定がある場合,COLUMN句も指定しなければならない。
16) 条件1が,合計カウンタ,LINE-COUNTER,PAGE-COUNTER,又はその他の報告書節のデータ項目
を参照する条件であってはならない。
17) GROUP INDICATE句を,PRESENT WHEN句の指定のある記述項に指定してはならない。
13.13.3 一般規則
1) レベル1の各記述項は,報告集団を指定する。一つの報告集団は,この記述項とこれに従属する全て
の記述項とによって定義される。
2) 構文規則中で規定した追加の制限を除いて,USAGE句,PICTURE句,BLANK WHEN ZERO句及び
JUSTIFIED句は,データ記述項の一般形式で記述したものと同じとする。各々の句に対する構文規則
及び一般形式に従わなければならない[13.16(データ部の句)参照]。
3) OCCURS句のある記述項,又は複数個の作用対象をもつLINE句若しくはCOLUMN句のある記述項
を,繰返し記述項(repeating entry)と呼ぶ。その反復回数は,OCCURS句の整数2又はLINE句若し
くはCOLUMN句の作用対象の個数の,いずれか該当するほうと同じと定義する。繰返し記述項でな
い記述項の反復回数は1と定義する。繰返し記述項又はその従属記述項によって定義された報告書項
目は,繰返し項目である。
13.14 データ記述項
データ記述項(data description entry)は,特定のデータ項目の性質を指定する。ファイル節,作業場所
節,局所記憶節又は連絡節中のレベル1のデータ記述項は,レコード及びその従属データ項目が局所名を
もつか大域名をもつかを決定する。
作業場所節におけるレベル1のデータ記述項は,レコード及びその従属データ項目が内部属性か外部属
性かを決定する。
13.14.1 一般形式
書き方1(データ記述)
レベル番号 [項目名句]
[REDEFINES データ名1]
[IS TYPEDEF [STRONG]]
[IS EXTERNAL [AS 定数1]]
[IS GLOBAL]
[picture句]
[usage句]
[SIGN IS]
LEADING
TRAILING [SEPARATE CHARACTER]
[occurs句]
SYNCHRONIZED
SYNC
RIGHT
LEFT
JUSTIFIED
JUST
RIGHT
[BLANK WHEN ZERO]
207
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
[ANY LENGTH]
[BASED]
PROPERTY
WITH NO
GET
SET [IS FINAL]
[SAME AS データ名3]
[select-when句]
[TYPE 型名1]
[検証句群]
[value句]
[ALIGNED]
GROUP-USAGE IS
BIT
NATIONAL .
ここで,検証句群は,次による。
[class句]
[default句]
[DESTINATION IS {一意名2} … ]
[{INVALID WHEN 条件2} … ]
[PRESENT WHEN 条件3]
[VARYING {データ名6 [FROM 算術式1] [BY 算術式2] } … ]
[validate-status句] …
ここで,次の用語については,指示された細分箇条による。
用語
細分箇条
class句
13.16.11(CLASS句)
default句
13.16.16(DEFAULT句)
項目名句
13.16.18(項目名句)
occurs句
13.16.36(OCCURS句)(固定の表と可変表の形式)
picture句
13.16.38(PICTURE句)
select-when句
13.16.49(SELECT WHEN句)
usage句
13.16.58(USAGE句)
validate-status句
13.16.60(VALIDATE-STATUS句)
value句
13.16.61(VALUE句)(データ項目と表の形式)
書き方2(再命名)
66 データ名1 RENAMES データ名4
THROUGH
THRU
データ名5 .
書き方3(条件名)
88 条件名1 value句.
ここで,value句は,13.16.61(VALUE句)(条件名の形式)による。
書き方4(検証)
88 [条件名2] value句.
ここで,value句は,13.16.61(VALUE句)(内容検証項の形式)による。
208
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
13.14.2 構文規則
書き方1
1) レベル番号は,77又は1〜49とする。
2) レベル番号が77のとき,データ名形式の項目名句を指定しなければならない。
3) REDEFINES句を,TYPEDEF句又はBASED句と同じデータ記述項に指定してはならない。
4) 項目名句を指定する場合,データ名形式又はFILLER形式を指定してもよいが,その項目名句はレベ
ル番号の直後に続かなければならない。項目名句の指定がなければ,FILLER形式の項目名句の指定
がある場合と同様とする。REDEFINES句を指定する場合,項目名句があればその直後に続かなけれ
ばならず,項目名句がなければREDEFINES句はレベル番号の直後に続かなければならない。
TYPEDEF句を指定する場合,データ名形式の項目名句も指定しなければならず,TYPEDEF句は項目
名句の直後に続かなければならない。残りの句は,どのような順序で書いてもよい。
5) EXTERNAL句を,REDEFINES句,TYPEDEF句又はBASED句と同じデータ記述項に指定してはな
らない。
6) GLOBAL句は,レベル番号が1のデータ記述項にだけ指定してもよい。
7) GLOBAL句又はEXTERNAL句があるデータ記述項には,データ名形式の項目名句を指定しなければ
ならない。GLOBAL句又はEXTERNAL句があるファイル記述項に関連するレコード記述に対しても,
データ名形式の項目名句を指定しなければならない。
8) RENAMES句の左辺には,PICTURE句を指定してはならない。さらに,用途が2進文字(binary-char),
2進短精度(binary-short),2進長精度(binary-long),2進倍精度(binary-double),浮動短精度(float-short),
浮動長精度(float-long),浮動拡張精度(float-extended),指標(index),オブジェクト参照(object reference),
ポインタ(pointer),又はプログラムポインタ(program-pointer)のいずれかである項目にも,PICTURE
句を指定してはならない。その他のあらゆる基本項目の記述項には,構文規則9) に示す場合を除い
て,PICTURE句を必ず指定しなければならない。
9) 基本項目に対するPICTURE句は,データ項目形式のVALUE句に英数字定数・ブール定数・各国文字
定数を指定した場合,省略してもよい。次のPICTURE句を書いたものとみなす。
a) 定数が英数字のとき “PICTURE X(長さ)”
b) 定数がブールのとき “PICTURE 1(長さ)”
c) 定数が各国文字のとき “PICTURE N(長さ)”
ここで“長さ”とは定数の長さである[8.3.1.2(定数)参照]。
10) VALUE句を,字類が指標,オブジェクト又はポインタであるデータ項目に指定してはならない。
11) SYNCHRONIZED句,PICTURE句,JUSTIFIED句及びBLANK WHEN ZERO句は,基本データ項目
にだけ指定してもよい。
12) SAME AS句を指定したデータ記述項に,次に挙げる以外の句があってはならない:レベル番号,項目
名,EXTERNAL,GLOBAL及びOCCURS。
13) TYPE句を指定したデータ記述項に,次に挙げる以外の句があってはならない:レベル番号,項目名,
BASED,CLASS,DEFAULT,DESTINATION,EXTERNAL,GLOBAL,INVALID,OCCURS,PRESENT
WHEN,PROPERTY,TYPEDEF,VALIDATE-STATUS,VALUE及びVARYING。
14) TYPEDEF句は,レベル番号が1で,かつ,データ名形式の項目名句が指定されたデータ記述項にだ
け指定してもよい。
15) BASED句は,連絡節,作業場所節又は局所記憶節のデータ記述項にだけ指定してもよい。BASED句
209
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
を指定したデータ記述項のレベル番号は,1又は77でなければならない。
16) ANY LENGTH句の指定があるとき,そのほかに指定してもよい句は,レベル番号,項目名句,PICTURE
句及びUSAGE句だけとする。
17) PICTURE句にLOCALE指定がある場合,SIGN句の指定があってはならない。
18) PRESENT WHEN句を,レベル番号が1又は77であるデータ記述項に指定してはならない。
19) PROPERTY句を,次に示す句と同じデータ記述項の中で指定してはならない。
a) BASED句
b) TYPEDEF句
書き方2
20) 語THRUとTHROUGHとは,同義とする。
書き方3,書き方4
21) 各々の条件名は,それが関連付けられたデータ名に従属する。
22) 書き方3又は書き方4は,個々の条件名に対して用いられる。条件名ごとに,レベル番号88をもつ別々
の記述項が必要である。特定の条件変数に対する条件名記述項は,その条件名が関連する項目を記述
している記述項の直後に書かなければならない。条件名は,次に示すものを除いてレベル番号を含む
あらゆるデータ記述項と関連付けてもよい。
a) レベル番号88の別の記述項。
b) レベル番号66の記述項。
c) 用途DISPLAY以外を記述した項目を含む英数字集団。
d) JUSTIFIED句又はSYNCHRONIZED句を記述した項目を含む集団。
e) 字類が指標,オブジェクト又はポインタであるデータ項目。
f)
ANY LENGTH句を記述したデータ項目。
g) STRONG指定付きで記述した型宣言又はそのような型宣言に従属する集団項目。
13.14.3 一般規則
1) 記述項の左辺がビット集団に従属する集団項目でありGROUP-USAGE BIT句の指定がない場合,記述
項の左辺にGROUP-USAGE BIT句を書いたものとみなす。
2) 記述項の左辺が各国文字集団に従属する集団項目でありGROUP-USAGE NATIONAL句の指定がない
場合,記述項の左辺にGROUP-USAGE NATIONAL句を書いたものとみなす。
3) 書き方3では,条件の名前と,その条件名に関連する値,値の並び又は値の範囲とを指定する。
4) 書き方4では,条件の名前と,その条件名に関連する値,値の並び又は値の範囲とを指定する。この
場合,条件名は書き方3と同じ意味をもち,同じ方法で用いてもよい。この記述項の左辺を参照して
いるか又はそれが従属する上位のデータ項目を参照しているVALIDATE文の内容検証段階において,
この書き方で定義された値又は値の並びは,この記述項の左辺を妥当にする(VALID指定のとき)又
は不当にする(INVALID指定のとき)ような,値,値の並び又は値の範囲を規定する。
13.15 画面記述項
画面記述項(screen description entry)は,画面項目の属性,振る舞い,大きさ及び位置を指定して,画
面項目をACCEPT画面文又はDISPLAY画面文が参照できるようにする。画面記述項を用いてデータ項目
を画面項目に関連付け,データ項目の内容を画面項目中に表示したり,操作員が画面項目からキー入力し
た値をデータ項目に格納したりしてもよい。
13.15.1 一般形式
210
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
書き方1(集団項目)
レベル番号 [項目名句]
[IS GLOBAL]
LINE NUMBER IS
PLUS
+
MINUS
‒
一意名1
整数1
COLUMN
COL
NUMBER IS
PLUS
+
MINUS
‒
一意名2
整数2
[BLANK SCREEN]
[画面属性句群]
[SIGN IS]
LEADING
TRAILING [SEPARATE CHARACTER]
[FULL]
[AUTO]
[SECURE]
[REQUIRED]
[OCCURS 整数5 TIMES]
[USAGE IS]
DISPLAY
NATIONAL .
書き方2(基本項目)
レベル番号 [項目名句]
[IS GLOBAL]
LINE NUMBER IS
PLUS
+
MINUS
‒
一意名1
整数1
COLUMN
COL
NUMBER IS
PLUS
+
MINUS
‒
一意名2
整数2
BLANK
LINE
SCREEN
ERASE
END OF LINE
END OF SCREEN
EOL
EOS
[画面属性句群]
211
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
[picture句]
[送り元送り先句]
[BLANK WHEN ZERO]
JUSTIFIED
JUST
RIGHT
[SIGN IS]
LEADING
TRAILING [SEPARATE CHARACTER]
[FULL]
[AUTO]
[SECURE]
[REQUIRED]
[OCCURS 整数5 TIMES]
[USAGE IS]
DISPLAY
NATIONAL .
ここで,項目名句は,13.16.18(項目名句)による。
ここで,picture句は,13.16.38(PICTURE句)による。
ここで,画面属性句群は,次による。
[BELL]
[BLINK]
HIGHLIGHT
LOWLIGHT
[REVERSE-VIDEO]
[UNDERLINE]
FOREGROUND-COLOR IS
一意名3
定数3
BACKGROUND-COLOR IS
一意名4
定数4
送り元送り先句は,次による。
FROM
一意名5
定数1
TO 一意名6
USING 一意名7
VALUE IS 定数2
13.15.2 構文規則
全ての書き方
1) 項目名句は,指定する場合はレベル番号の直後になければならない。項目名句を指定するときは,画
面名形式又はFILLER形式だけを指定してもよい。指定がなければ,FILLER形式の項目名句の指定
がある場合と同様とする。残りの句は,どのような順序で指定してもよい。
2) GLOBAL句を指定する場合は,画面名形式の項目名句を必ず指定しなければならず,レベル番号は1
でなければならない。
212
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
書き方1
3) レベル番号は,1〜48の数でなければならない。
4) 記述項の左辺は,集団画面項目でなければならない。
書き方2
5) レベル番号は,1〜49の数でなければならない。
6) 記述項の左辺は,基本画面項目でなければならない。
7) 基本画面項目では,関連する画面記述項に次の少なくとも一つを指定しなければならない。
− PICTURE句及びFROM句・TO句・USING句のいずれか
− PICTURE句及びVALUE句に数字定数を指定したもの
− VALUE句に英数字定数/ブール定数/各国文字定数を指定したもの
− BLANK句
− ERASE句
− BELL句
8) FULL句の指定がある場合,JUSTIFIED句の指定があってはならない。
9) PICTURE句にLOCALE指定がある場合,SIGN句の指定があってはならない。
13.15.3 一般規則
全ての書き方
1) ある画面項目の属する階層系列中の2レベル以上に OCCURS句以外の同じ句が指定されている場合,
階層系列中の最も低いレベルに現れた句が有効となる。
2) 一つの画面項目の属する階層系列中において,HIGHLIGHT句とLOWLIGHT句との両方が指定され
ている場合,階層系列中の最も低いレベルに現れた句が有効となる。
書き方2
3) 基本項目に対するPICTURE句は,VALUE句に英数字定数・ブール定数・各国文字定数を指定した場
合,省略してもよい。次のPICTUREを書いたものとみなす。
a) 定数が英数字のとき “PICTURE X(長さ)”
b) 定数がブールのとき “PICTURE 1(長さ)”
c) 定数が各国文字のとき “PICTURE N(長さ)”
ここで“長さ”とは定数の長さである[8.3.1.2(定数)参照]。
13.16 データ部の句
13.16.1 ALIGNED句
ALIGNED(境界そろえ)句は,ビット集団項目又は基本ビットデータ項目が,使用可能な先頭バイトの
先頭ビットにけたよせされることを指定する。
13.16.1.1 一般形式
ALIGNED
13.16.1.2 構文規則
1) ALIGNED句は,ビット集団項目又は基本ビットデータ項目に対してだけ指定してもよい。
13.16.1.3 一般規則
1) ALIGNED句によって記述項の左辺は,使用可能な先頭のバイト境界の先頭ビットにけたよせされる。
このビット割当てのために暗黙のFILLERビットが生成されてもよい[8.5.1.5.3(用途BITのデータ項
目のけたよせ)参照]。
213
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
2) ALIGNED句が反復データ項目に指定されると,その項目の各々の繰返しに適用される。
3) ALIGNED句の指定がない場合,ビットデータ項目のけたよせは,8.5.1.5.3(用途BITのデータ項目の
けたよせ)による。
13.16.2 ANY LENGTH句
ANY LENGTH(任意長)句は,連絡節の項目の長さが実行時に変わることがあり,引数の長さによって
決まることを指定する。
13.16.2.1 一般形式
ANY LENGTH
13.16.2.2 構文規則
1) ANY LENGTH句は,関数,入れ子の内側のプログラム,又はプロパティメソッドでないメソッドの,
連絡節中のレベル1基本項目記述項にだけ指定してもよい。
注記 ANY LENGTH句は最も外側のプログラムには指定できない。これは,最も外側のプログラ
ムはプログラム原型形式のCALL文を用いて呼び出すことも,プログラム原型形式でない
CALL分を用いて呼び出すこともできるからである。プログラム原型を用いない呼出しに対
して,ANY LENGTH記述の仮パラメタに引数が対応するのか否かの決定を,この規格では
実装系に要求しない。
2) このANY LENGTH句を内包するソース要素が内側プログラム又はメソッドのとき,記述項の左辺は,
手続き部見出しにおいて,BY REFERENCE指定のある仮パラメタ又は返却項目として参照されなけ
ればならない。
3) このANY LENGTH句を内包するソース要素が関数であるとき,記述項の左辺は,手続き部見出しに
おいて,BY REFERENCE指定のある仮パラメタとして参照されなければならない。
4) この記述項の左辺に対してはPICTURE句を指定しなければならず,指定する文字列はPICTURE記号
"N","X","1" のいずれかが1個でなければならない。
13.16.2.3 一般規則
1) ANY LENGTH句は,記述項の左辺が,次のとおりになることを指定する。
a) 活性化する側の実行時要素側の,対応する引数又は返却項目が,長さゼロの項目であるときは,記
述項の左辺も長さゼロの項目になる。
b) 記述項の左辺がPICTURE句の文字列中にPICTURE記号のn回の繰返しをもつかのように取り扱わ
れる。ここでのnは,活性化する側の実行時要素側の,対応する引数又は返却項目の長さとする。
13.16.3 AUTO句
AUTO(自動)句は,ACCEPT画面文の実行中に,画面項目に対して宣言されたその次のフィールドへ
カーソルを自動的に移動させる。
13.16.3.1 一般形式
AUTO
13.16.3.2 一般規則
1) 集団レベルに指定したAUTO句は,その集団内部の各々の入力画面項目に適用される。
2) AUTO句は,入力フィールドでないフィールドに対しては無視される。
3) AUTO句は,この句の指定のある画面項目を参照しているACCEPT画面文の実行中に有効となる。
4) AUTO句は,この句が定義中にある入力フィールドの最後の文字位置にデータを入力したとき,画面
項目に対して宣言された次の入力フィールドへとカーソルを自動的に移動させる。
214
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
5) 論理的に最後の入力フィールドに対してAUTO句が指定されている場合,ACCEPT画面文の実行中に
そのフィールドの最後の文字位置にデータを入力した時点で,そのACCEPT文は成功完了し,状態は
正常終了となる。
13.16.4 BACKGROUND-COLOR句
BACKGROUND-COLOR(背景色)句は,画面項目の背景色を指定する。
13.16.4.1 一般形式
BACKGROUND-COLOR IS
一意名1
定数1
13.16.4.2 構文規則
1) 一意名1は,ファイル節,作業場所節,局所記憶節又は連絡節中において,符号なし整数データ項目
として記述されていなければならない。
2) 整数1は,0〜7の範囲内の値でなければならない。
13.16.4.3 一般規則
1) 関連する画面項目を参照しているACCEPT画面文又はDISPLAY画面文が実行されるとき,一意名1
のデータ項目の値は,0〜7の範囲内になければならない。
2) 整数1又は一意名1のデータ項目の値は,画面項目を表示するのに使用する背景色の色彩番号を指定
する。色彩番号に関連する色は,9.2.7(色彩番号)による。
3) 集団レベルに指定したBACKGROUND-COLOR句は,その集団内部の各基本画面項目に適用される。
4) BACKGROUND-COLOR句の指定がないか,又は値が0〜7の範囲内にない場合,背景色は実装者定
義とする。
13.16.5 BASED句
BASED(基底付き)句は,基底付き記述項を定義する。基底付き記述項は,一種のひな(雛)形であっ
て,実データ項目又は割当て記憶域と関連付けられた場合,基底付きデータ項目の記述となる。
13.16.5.1 一般形式
BASED
13.16.5.2 構文規則
1) 記述項の左辺は,字類がオブジェクトであってはならない。
13.16.5.3 一般規則
1) BASED句は,記述項の左辺が基底付き項目用のひな型であり,記憶域と動的に関連付けられ,ポイ
ンタを介して参照されることを指定する。
2) 暗黙のデータアドレスポインタが生成されてその初期値はNULLとなる。この暗黙のデータアドレス
ポインタの生存期間は,8.6.4(基底付き記述項及び基底付きデータ項目)による。
3) 記述項の左辺又はその従属項目が直接又は間接に参照されて,そのアドレスがNULLである場合は,
EC-DATA-PTR-NULL例外状態になる。
4) 記述項の左辺が参照されて,そのアドレスはNULLでないが記憶域の正しいアドレスではない場合,
EC-BOUND-PTR例外状態になる。
13.16.6 BELL句
BELL(警報)句は,端末の警告音を鳴らす。
13.16.6.1 一般形式
BELL
215
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
13.16.6.2 一般規則
1) この句を使用すると,DISPLAY画面文の実行中に,この句の指定のある画面項目が処理されるとき,
警告音が鳴らされる。この句の指定がある記述項の個数には関係なく,警告音はDISPLAY画面文の
実行の最初に1回鳴るだけとする。
2) 集団レベルに指定したBELL句は,その集団内部の各々の基本画面項目に適用される。
13.16.7 BLANK句
BLANK(空白)句は,DISPLAY画面文の実行中に,画面行又は画面全体を一掃してから,データを画
面項目に転送する。
13.16.7.1 一般形式
BLANK
LINE
SCREEN
13.16.7.2 一般規則
1) BLANK LINE句の指定があると,DISPLAY画面文の実行中に,この記述項の左辺である画面項目に
対する行全体が1列目から行末まで一掃され,その後にデータが画面項目に転送される。
2) BLANK SCREEN句の指定があると,DISPLAY画面文の実行中に,画面が一掃されて,カーソルが1
行目の1列目に位置付けられ,その後にデータが画面項目に転送される。画面を一掃すると,画面全
体に対する背景色は,その時点での該当値になるように設定される。
3) BLANK SCREEN句とBACKGROUND-COLOR句を組み合わせて,同じ画面項目に対して指定するか,
又はBACKGROUND-COLOR句をより上位の画面項目に対して指定すると,背景色の既定解釈が確定
し,別の背景色を指定する同種の組合せが現れるまで,それが用いられる。
4) BLANK SCREEN句とFOREGROUND-COLOR句を組み合わせて,同じ画面項目に対して指定するか,
又はFOREGROUND-COLOR句をより上位の画面項目に対して指定すると,前景色の既定解釈が確定
し,別の前景色を指定する同種の組合せが現れるまで,それが用いられる。
5) BLANK句は,ACCEPT画面文の実行中は全段階において無視される。
13.16.8 BLANK WHEN ZERO句
BLANK WHEN ZERO(ゼロならば空白)句は,ある項目に値ゼロが格納される場合に,その項目を空
白にする。
13.16.8.1 一般形式
BLANK WHEN ZERO
13.16.8.2 構文規則
1) BLANK WHEN ZERO句は,PICTURE句で項類を数字又は数字編集と記述された,PICTURE記号"S"
のない基本データ項目にだけ指定してもよい。
2) この記述項の左辺は,明示的又は暗黙に用途がDISPLAY又はNATIONALと記述されていなければな
らない。
13.16.8.3 一般規則
1) BLANK WHEN ZERO句を使用すると,その項目に値ゼロが格納されるとき項目の内容は全て空白に
なるように設定される。
2) この記述項の左辺がPICTURE句で項類を数字と記述していると,BLANK WHEN ZERO句によってこ
の項目は数字編集と定義される。
13.16.9 BLINK句
216
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
BLINK(点滅)句は,画面上に表示されるフィールドの各文字を点滅させる。
13.16.9.1 一般形式
BLINK
13.16.9.2 一般規則
1) 集団レベルに指定したBLINK句は,その集団内部の各々の基本画面項目に適用される。
2) BLINK句の指定があると,この画面項目をACCEPT画面文又はDISPLAY画面文が参照している場合
に,この画面項目を構成する文字が点滅する。
13.16.10 BLOCK CONTAINS句
BLOCK CONTAINS(ブロックの大きさ)句は,物理レコード(ブロック)の大きさを指定する。
13.16.10.1 一般形式
BLOCK CONTAINS [整数1 TO] 整数2
RECORDS
CHARACTERS
13.16.10.2 構文規則
1) 整数1の指定があるとき,整数2は整数1より大きくなければならない。
13.16.10.3 一般規則
1) この句は,次に示す条件が一つ以上成立する場合を除いて,必ず指定しなければならない。
a) 物理レコード一つに含まれる完全な論理レコードが,ただ一つである。
b) ファイルを割り当てたハードウェア装置の物理レコード長が,ただ一つに決まっている。
c) 物理レコード一つに含まれるレコード又は文字の個数が,操作環境において規定されている。
2) 物理レコードの大きさは,論理レコードの数で記述してもよい。ただし,次の状況の一つ以上が成立
する場合にはRECORDS指定を用いてはならない。
a) 大容量記憶ファイルにおいて,論理レコードが複数の物理レコードにまたがることがある。
b) 物理レコード中に,(論理レコードには含まれない)埋め草がある。
c) 物理レコードの大きさが正確に求められないような方法で,論理レコードをまとめている。
3) CHARACTERS指定がある場合,物理レコードの大きさは,物理レコードを格納するために必要なバ
イトの個数で指定され,物理レコード内でその項目を表現するために用いられる文字の種類には関係
しない。
4) 整数1の指定がない場合,整数2が物理レコードの正確な大きさを表す。整数1及び整数2の両方の
指定がある場合,それぞれが物理レコードの大きさの最小値及び最大値を表す。
13.16.11 CLASS句
CLASS(字類)句は,データ項目の各文字に対する値の範囲(字類)を指定し,それをVALIDATE文の
実行中の内容検証段階において検査するように指定する。
13.16.11.1 一般形式
CLASS IS
NUMERIC
ALPHABETIC
ALPHABETIC-LOWER
ALPHABETIC-UPPER
BOOLEAN
符号系名1
字類名1
13.16.11.2 構文規則
217
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) 記述項の左辺は,字類が英字,英数字又は各国文字でなければならない。
13.16.11.3 一般規則
1) CLASS句は,VALIDATE文の実行中の内容検証段階においてだけ効力をもつ。
CLASS句は,VALIDATE以外の文の実行中には無視される。
2) 記述項の左辺が基本項目であるとき,CLASS句が効力をもつのは,このデータ項目に関連する内部標
識が,形式が妥当という状態を表す初期値のままであるときだけとする。
3) CLASS句の作用対象は,そのデータ項目の値の各文字を検査するために用いられる[8.8.4.1.3(字類
条件)参照]。その字類条件が偽になるとき,データ項目に関連する内部標識には内容が不当という状
態が設定される。
4) 記述項の左辺が英数字集団項目又は各国文字集団項目であるとき,それに従属する各々の基本項目に
一般規則2) と3) とが適用される。ただし,PRESENT WHEN句又はDEPENDING指定のあるOCCURS
句の結果として処理されないデータ項目は除外する。
13.16.12 CODE句
CODE(コード)句は,同一のファイルへ書き出される複数の報告書を分別したり,印字装置に適切な
動作を指定したりするために用いる1文字以上の文字を指定する。
13.16.12.1 一般形式
CODE IS
定数1
一意名1
13.16.12.2 構文規則
1) 定数1は,英数字定数でなければならない。
2) 一意名1は,英数字データ項目でなければならず,可変長データ項目であってはならない。
3) CODE句を報告書のいずれかに指定した場合,同じ報告書ファイルに関連する各々の報告書にも
CODE句の指定がなければならない。
13.16.12.3 一般規則
1) CODE句の指定がある場合,この報告書に対する報告書ファイルへ書き出される各々の論理レコード
の先頭文字位置に,定数1又は一意名1が自動的に設定される。
2) 定数1又は一意名1の占める文字位置は,報告書行の記述には含まれないが,論理レコードの大きさ
には含まれる。
3) 一意名1の指定がある場合,GENERATE文の一環としてページ送り処理が行われようと,又はページ
送り処理が行われまいと,各々の本体集団の処理開始時に一意名1の評価を行う。この結果の値が次
の評価まで用いられる。
13.16.13 CODE-SET句
CODE-SET(符号系)句は,外部媒体上でのデータ表現に用いられる文字符号系を指定する。
13.16.13.1 一般形式
CODE-SET
IS 符号系名1 [符号系名2]
FOR ALPHANUMERIC IS 符号系名1
FOR NATIONAL IS 符号系名2
13.16.13.2 構文規則
1) 符号系名1は,英数字符号化文字集合を定義する符号系でなければならない。
2) 符号系名2は,各国文字符号化文字集合を定義する符号系でなければならない。
218
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
3) このファイルに関連するレコード記述項が存在してSELECT WHEN句の指定がない場合,符号系名1
と符号系名2の一方は指定してもよいが両方は指定できない。さらに,次の規則を適用する。
a) 符号系名1を指定するときは,このファイルに関連する全てのレコード記述項の全ての基本データ
項目を用途がDISPLAYと記述し,全ての符号付き数字データ項目をSIGN IS SEPARATE句付きで
記述しなければならない。
b) 符号系名2を指定するときは,このファイルに関連する全てのレコード記述項の全ての基本データ
項目を用途がNATIONALと記述し,全ての符号付き数字データ項目をSIGN IS SEPARATE句付き
で記述しなければならない。
13.16.13.3 一般規則
1) CODE-SET句は,入力操作の間に記憶媒体上の符号化文字集合から固有文字集合へ,出力操作の間に
固有文字集合から記憶媒体上の符号化文字集合へ,データの変換に使用する符号系を識別する。
2) この句を指定したファイル記述項の指すファイルに対してOPEN文の処理が成功すると,記憶媒体上
で英数字データを表現する符号化文字集合は符号系名1の指すものになり,記憶媒体上で各国文字デ
ータを表現する符号化文字集合は符号系名2の指すものになる。
3) このファイルに関連するレコード記述項中にSELECT WHEN句がない場合は,指定された符号系名が,
各レコード中の全てのデータ項目の符号系変換に用いられる。
4) このファイルに関連するレコード記述項中にSELECT WHEN句がある場合,これらのSELECT WHEN
句を評価して,レコード記述項が一つ選択される。このファイルに関連するレコード記述項が一つも
ないとき,変換に用いられるレコード記述は,FILE指定のあるREWRITE文又はWRITE文のFROM
指定に書かれた一意名又は定数の記述となる。符号系名1は,選択されたレコード記述項中にある,
用途がDISPLAYと記述された各データ項目の符号系変換に用いられる。符号系名2は,選択された
レコード記述項中にある,用途がNATIONALと記述された各データ項目の符号系変換に用いられる。
注記 FORMAT句の適用がない限り,ほかの用途で記述されたデータ項目の変換はない。
5) このファイルに対してFORMAT句も指定されている場合,各データ項目に対する処理の論理的な順
序は,次による。
− 出力操作では,まず形式変換し,次に符号系変換する。
− 入力操作では,まず符号系変換し,次に形式変換する。
6) 変換対象の各データ項目に対しては,次の処理を行う。
a) 入力のとき,記憶媒体上の各符号化文字は,符号系での定義のとおり,対応する固有符号化文字で
置換される。
b) 出力のとき,レコード中の固有符号化文字は記憶媒体用に,符号系での定義のとおり,対応する符
号化文字集合で置換される。
7) CODE-SET句がない場合,外部媒体上のデータには固有文字集合が想定される。
13.16.14 COLUMN句
COLUMN(列位置)句は,印字可能項目又は印字可能項目の組を識別して,報告書行の上での横方向の
位置を指定する。また,画面項目に対する横方向の画面座標を指定する。
13.16.14.1 一般形式
書き方1(報告書)
219
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
COLUMN NUMBER
COLUMN NUMBERS
COLUMNS
COL NUMBER
COL NUMBERS
COLS
LEFT
CENTER
RIGHT
IS
ARE
整数1
PLUS
+
整数2 …
書き方2(画面項目)
COLUMN
COL
NUMBER IS
PLUS
+
MINUS
‒
一意名2
整数2
13.16.14.2 構文規則
全ての書き方
1) COLUMN,COL,COLUMNS及びCOLSは,同義語とする。
2) PLUSと+は,同義語とする。
書き方1
3) COLUMN句は,基本項目の記述項にだけ指定してもよい。その記述項はLINE句も含むか,又はLINE
句のある記述項に従属していなければならない。
4) 語AREを書いてよいのはCOLUMNS,COLS又はNUMBERSがあるときだけとする。
5) 語ISを書いてはならないのはCOLUMNS,COLS又はNUMBERSがあるときとする。
6) 整数1と整数2は,いずれもページ幅を超えてはならない[13.16.37(PAGE句)参照]。
7) ある報告書行の中で,二つ以上の絶対指定の項目が数値の昇順になっていない列番号を用いて定義さ
れたとき,それらは各々異なるPRESENT WHEN句の制御下になければならない。
8) ある報告書行の中にある印字可能項目の組は,次の規則による。
a) 二つ以上の項目が互いに重なり合っている場合には,それらは各々が異なるPRESENT WHEN句の
制御下になければならない。
b) 全ての絶対指定の項目の最右端列位置は,ページ幅を超えてはならない。
c) 報告書行が,相対指定の印字可能項目の組で終わっているか,そのようなものからだけなっている
場合,それらはページ幅を超えることになってはならない。ただし,それらの各々が異なるPRESENT
WHEN句の制御下にある場合は別であり,その場合には,それらのうち最大のものにだけ,この規
則を適用する。
9) LEFT,CENTER又はRIGHTの指定があるとき,作用対象は全て絶対指定でなければならない。作用
対象のどれもが絶対指定で,LEFTもCENTERもRIGHTも指定がないときはLEFTが想定される。
10) 整数1又は整数2の作用対象が複数個あるとき,このCOLUMN句を複数指定のCOLUMN句と呼び,
次の追加規則を適用する。
a) 同じ記述項中にOCCURS句の指定があってはならない。
b) 繰り返し現れる整数1は,全て昇順になっていなければならない。
書き方2
11) MINUSと−(マイナス)は,同義語とする。
12) 一意名1は,ファイル節,作業場所節,局所記憶節又は連絡節において,符号なし整数基本データ項
目と記述されていなければならない。
220
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
13) 画面レコード中の最初の基本項目には,PLUS指定もMINUS指定も書いてはならない。
13.16.14.3 一般規則
書き方1
1) COLUMN句は,一つ以上の印字可能項目を定義する。COLUMN句の指定がないとき,その項目は印
字されない。
2) 1列と各国文字集合の1文字との間は,実装者定義によって,固定的に対応する。
3) 印字可能項目の印字可能な大きさは,その項目のPICTURE句に記述された文字列を,又はPICTURE
句がないときはVALUE句に指定した定数を,印字するのに必要な列数である。1列と英数字文字集合
中の1文字との間は,1対1に対応する。
注記 報告書において列はまっすぐにそろわないかもしれない。それは,印字する文字が例えば文
字集合UTF-8のように固定幅ではないときである。
4) 報告書行を定義するには,印字した場合に,ある列位置を使用する印字可能項目が唯一になるように
しなければならない。この規則に違反するとEC-REPORT-COLUMN-OVERLAP例外状態になり,結果
は規定されない。
5) 報告書行を定義するには,印字した場合に最後の印字可能項目の最後の列位置がページ幅を超えない
ようにしなければならない。この規則に違反するとEC-REPORT-PAGE-WIDTH例外状態になり,その
報告書行は切り捨てられてから印字される。
6) 整数1を指定すると,次の一般規則を適用する。
a) 整数1は,絶対列番号を指定する。
b) LEFTを指定したとき,整数1が印字可能項目の最左端列になる。最右端列は
(整数1 + 印字可能な大きさ ‒ 1) である。
c) RIGHTを指定したとき,整数1が印字可能項目の最右端列になる。最左端列は
(整数1 ‒ 印字可能な大きさ + 1) である。
d) CENTERを指定したとき,印字可能項目は次のとおりに中央そろえされる。
1. 印字可能項目の印字可能な大きさが列位置で奇数個分であるとき,整数1が印字可能項目の中央
列になる。
最左端列は (整数1 ‒ ((印字可能な大きさ ‒ 1 )/ 2)) となり,
最右端列は (整数1 + (印字可能な大きさ / 2)) を整数に切り下げた値となる。
2. 印字可能項目の印字可能な大きさが列位置で偶数個分であるとき,整数1が印字可能項目の中央
の2列の間を通る想定中心線の左列になる。
最左端列は (整数1 ‒ (印字可能な大きさ / 2) + 1) となり,
最右端列は (整数1 + (印字可能な大きさ / 2)) となる。
7) 報告書行の中では,最右端の占有列を表す水平カウンタが維持され,その行の中の印字可能項目ごと
に更新される。行の開始点で水平カウンタはゼロである。
8) 整数2は,相対列番号を指定する。現在行の中の最初の印字可能項目に対して整数2を指定したとき,
整数2はその項目の最左端列を指定する。そうでないとき,整数2の値が,先行する印字可能項目の
最右端列と,ここで定義される項目の最左端列との間の列位置の個数になる。この項目の最左端文字
位置は,現在行の水平カウンタに整数2を加えたものである。
注記 (整数2 ‒ 1) の値が,この項目の直前に現れる空白列(もしあれば)の個数を表す。
9) 各々の印字項目の最右端列位置が,水平カウンタの新しい値になる。
221
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
10) 各々の印字行の中の非占有列は,空白文字で埋められる。
11) LINE句のある記述項に,印字可能項目を定義している従属記述項がないとき,その結果の報告書行
は空白になる。
12) 複数指定のCOLUMN句は,COLUMN句の作用対象の個数に等しい整数をもつ単純なOCCURS句と
一緒に,単一の作用対象をもつCOLUMN句を指定したのと機能的に等価である。ただし,複数指定
のCOLUMN句では,印字可能項目を定義するのに横方向の間隔が均等でなくてよい点だけが異なる。
書き方2
13) COLUMN句は,ACCEPT画面文又はDISPLAY画面文の実行中に画面項目の最左端文字が現れる画面
上の列を指定する。ACCEPT画面文又はDISPLAY画面文の参照する対象が,画面レコード全体なの
かその一部にすぎないのかには関係なく,画面レコードの位置付けと,画面レコード内での位置付け
とは,端末画面上の同じ位置に現れる。
注記 画面上において列がまっすぐにそろわないかもしれない。それは,画面上の文字が例えば文
字集合UTF-8のように固定幅ではないときである。
14) PLUS又はMINUSの指定がないCOLUMN句は,その画面レコードの先頭の列からの相対列番号を指
定する。列番号1は,その画面レコードの先頭の列を表す。
15) PLUS又はMINUSの指定がCOLUMN句にある場合の列番号は,同じ画面レコード中にある直前の画
面項目の終点からの相対位置を指定する。例えばCOLUMN PLUS 1の指定がある場合,その画面項目
の始点は,直前の画面項目の直後になる。PLUSは,列位置を一意名1又は整数3の値だけ増やすこ
とを,MINUSは,列位置を一意名1又は整数3の値だけ減らすことを意味する。
16) LINE句はあるがCOLUMN句のない画面項目には,COLUMN 1の設定が想定される。
17) LINE句及びCOLUMN句の両方が省略されたときは,次を適用する。
a) 直前の画面項目の定義がない場合,その画面のLINE 1 COLUMN 1を想定する。
b) 直前の画面項目の定義がある場合,その直前の項目の行とCOLUMN 1を想定する。
18) 列番号0を指定した場合,EC-SCREEN-STARTING-COLUMN例外状態になり,列番号1を指定したの
と同じ結果となる。
19) 画面項目の先頭文字の明示的な又は暗黙の列位置が,端末に対して適用可能な列数を超える場合,
EC-SCREEN-STARTING-COLUMN例外状態になり,その画面項目は,ACCEPT画面文又はDISPLAY
画面文の実行に関与しない。
そうでない場合,画面項目の開始列と長さが,端末行の末尾を越えてそのフィールドを広げるよう
であれば,EC-SCREEN-ITEM-TRUNCATED例外状態になり,そのフィールドは行の末尾で切り捨て
られる。
13.16.15 CONTROL句
CONTROL(制御)句は,報告書に対する制御切れの階層系列を確立する。
13.16.15.1 一般形式
CONTROL IS
CONTROLS ARE
{データ名1} …
FINAL [データ名1] …
13.16.15.2 構文規則
1) CONTROLとCONTROLSは,同義語とする。
2) データ名1は報告書節で定義されたものであってはならない。
3) データ名1は修飾してもよい。
222
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4) データ名1は部分参照してもよい。このとき最左端位置及び長さは,整定数でなければならない。
5) データ名1の記述項には,可変反復記述項が従属していてはならない。
6) データ名1は,あるCONTROL句の中で一意でなければならない。しかしながら,同じ句の中にある
データ名1の繰返しの二つ以上が,物理的に同じデータ項目つまり重なり合ったデータ項目を指して
いてもよい。
13.16.15.3 一般規則
1) CONTROL句中の作用対象の出現順序は,制御階層のレベルを確立する。最初のデータ名1を大制御
とし,その次に現れるデータ名1を中制御とし,…という具合にして,最後に現れるデータ名1を小
制御とする。
2) FINALを指定することは,報告書の処理中を通じて値の変化しないデータ項目を指定することに等し
い。したがってFINALは,指定した場合,階層中の最高レベルに関連付けられる。
3) 各々のデータ名1に対して,対応するデータ項目と同じデータ記述をもつ内部データ項目が,暗黙に
定義される。この内部データ項目を,前回制御(prior control)と呼ぶ。さらに,各々の制御データ項
目を対応する前回制御の中に保存しておき,それ以降にそれらの値を比較して制御切れを感知するた
めの機構が確立される。ある報告書に対する時系列的に最初のGENERATE文を実行すると,現在の
制御データ項目がそれぞれ対応する前回制御中に保存される。その報告書に対する以降のGENERATE
文を実行すると,制御データ項目の現在値がそれぞれ対応する前回制御と等しいか否かが,大制御か
ら小制御への順に,自動的に検査される。制御データ項目の値の変化が検出されると,現在の
GENERATE文に対してはそれ以上の制御データ項目の検査が行われず,そのレベルに対して制御切れ
処理が自動的に行われる。
4) GENERATE文の実行中に制御切れが検出された場合,制御データ項目の処理は次による[13.16.55
(TYPE句)参照]。
a) 制御脚書きが報告書に定義されているとき,制御脚書きが印字される前に,制御データ項目の現在
の内容が保存されて対応する前回制御が制御データ項目の中に格納される。これによって,制御脚
書きの中で制御データ項目を参照すると常に,その制御データ項目が制御切れの前にもっていた値
になることが保証される。制御脚書きにUSE BEFORE REPORTING宣言手続きの指定があるとき,
この節の中で制御データ項目を参照するときも,同様に前回の値になる。制御脚書きの印字によっ
てページ送りが発生する場合に,ページ頭書き又はページ脚書きが制御データ項目を参照している
とき,ここで生成される値も同様に前回の値になる。各々の制御脚書きの印字が完了した時点で,
制御データ項目は前回制御の値から新しい現在値へと復元され,前回制御の中はこれらの新しい現
在値のままになる。これ以後に制御データ項目を参照すると新しい現在値が得られることになる。
b) 制御脚書きが報告書に定義されていないとき,制御データ項目の新しい現在値が,対応する前回制
御に格納される。
5) TERMINATE文が実行される場合,制御脚書きが報告書に定義されていれば,各々の制御脚書きが印
字される前に,前回制御が制御データ項目に格納される。それはちょうど,最高レベルの制御切れが
検出されたのと同様であり,その結果はGENERATE文の実行中に制御切れが検出されたのと同じに
なる。
6) データ名1は,長さゼロの集団データ項目であってはならない。
13.16.16 DEFAULT句
DEFAULT(既定解釈)句は,データ項目の内容が全て空白の場合,及びVALIDATE文の実行中の形式
223
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
検証段階において形式が不当という状態が分かっていた場合に対して,明示的な代用値を指定する。
13.16.16.1 一般形式
DEFAULT IS
定数1
一意名1
NONE
13.16.16.2 構文規則
1) 記述項の左辺の字類は,指標,オブジェクト又はポインタであってはならない。
2) 定数1又は一意名1のデータ項目は,記述項の左辺を受取り側作用対象としたMOVE文の送出し側作
用対象として妥当なものでなければならない。
13.16.16.3 一般規則
1) VALIDATE文の実行中の形式検証段階において既定解釈値が確立する状況は,次による。
a) 基本データ項目の場合は,(i)その項目に関連する内部標識が,形式が不当という状態に設定され
ているとき,又は(ii)その項目の用途が明示的又は暗黙にDISPLAY又はNATIONALであって内
容が全て空白であるとき
b) 英数字集団項目又は強い型付けの集団項目の場合,その項目に従属する全ての基本項目の用途が明
示的又は暗黙にDISPLAYであって内容が全て空白であり,関連する内部標識のどれも形式が不当
という状態に設定されてはいないとき
c) 各国文字集団項目の場合,その項目に従属する全ての基本項目の内容が全て空白であるとき
これらの場合には,現在のVALIDATE文の実行中にそのデータ項目へ,これ以上の参照を行うと,
その項目の実際の内容でなく既定解釈値が用いられる。そのデータ項目自体は変更されない。
VALIDATE以外の文の実行中にはDEFAULT句は無視される。
2) DEFAULT NONEの場合を除き,DEFAULT句は既定解釈値を明示的に指定する。定数1を指定したと
き,用いる既定解釈値は定数1の値である。一意名1を指定したとき,用いる既定解釈値は一意名1
のデータ項目の値である。
3) DEFAULT句がデータ項目のデータ記述項中にない場合,又はDEFAULT NONEの指定がある場合,
既定解釈値は,REPLACING指定もVALUE指定もない暗黙のINITIALIZE文の実行によってそのデー
タ項目に供給されるはずの値とする。
4) NONE指定がある場合の効果は,データ項目の内容が全て空白の場合及びデータ項目が基本データ項
目であり形式が不当と分かった場合にDESTINATION句の指定があっても無視される,という点を除
けば,DEFAULT句の指定がない場合と同じとする。
13.16.17 DESTINATION句
DESTINATION(あて先)句は,VALIDATE文の入力配布段階の実行中にデータが暗黙に転記されるあ
て先となるデータ項目を一つ以上指定する。
13.16.17.1 一般形式
DESTINATION IS {一意名1} …
13.16.17.2 構文規則
1) 一意名1のデータ項目の記述は,そのデータ項目を受取り側作用対象とし,記述項の左辺を送出し側
作用対象として必要に応じて修飾又は添字付けを施した場合,結果として生じるMOVE文が文法的に
正しいものでなければならない。
2) 一意名1のデータ項目又は一意名1に従属するあらゆるデータ項目に対するデータ記述項には,
224
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
VALIDATE-STATUS句があってはならない。
3) 記述項の左辺が大域名である場合,一意名1中に現れるデータ名も全てが大域名でなければならない。
13.16.17.3 一般規則
1) DESTINATION句を書くと,DESTINATION句を書いた記述項又はその上位の記述項に対するデータ
項目を参照しているVALIDATE文の実行の入力配布段階において,一つ以上の暗黙MOVE文が実行
される。DESTINATION句はVALIDATE文以外の文の実行中には無視される。
2) この項目にDEFAULT句の一般規則1) の規定どおりの既定解釈値の割当てがない場合,この項目の実
際の内容が一意名1のデータ項目へと転記される。
3) この項目に既定解釈値の割当てがあって記述項にDEFAULT NONEの指定がない場合,この項目の既
定解釈値が一意名1のデータ項目へと転記される。
4) この項目に既定解釈値の割当てがあって記述項にDEFAULT NONEの指定がある場合,一意名1のデ
ータ項目は変更されない。
5) 一意名1に添字があり,その添字がDESTINATION句と同時に処理されるVARYING句で定義されて
いるとき,これらの添字を用いて,このデータ項目の異なる反復要素を,あて先項目の,等しい個数
の異なる反復要素に格納するために使用してもよい。
注記 VARYING句を使用しなければ,DESTINATION句に指定した添字は変更されない。
6) 以上の一般規則によって決まる送出し側データが,各々の一意名1の指すデータ項目に,書かれた順
に,MOVE文の規則に従って転記される。
13.16.18 項目名句
項目名句(entry-name clause)は,記述する項目の名前を指定する。データ名又は画面名を用いて,項目
に名前を付与する。
13.16.18.1 一般形式
書き方1(データ名)
データ名1
書き方2(画面名)
画面名1
書き方3(filler)
FILLER
13.16.18.2 構文規則
1) データ記述項,報告集団記述項又は画面記述項の中に項目名句の指定がないときは,語FILLERが想
定される。
2) データ記述項又は報告集団記述項中に項目名句を指定するとき,データ名1又はFILLERでなければ
ならない。画面記述項中に項目名句を指定するとき,画面名1又はFILLERでなければならない。
13.16.18.3 一般規則
1) FILLERは,データ項目,報告書項目又は画面項目の命名に用いてもよい。いかなる場合でもFILLER
項目を明示的に参照することはできない。
13.16.19 ERASE句
ERASE(消去)句は,カーソル位置から始まる行又は画面の一部を消去する。
13.16.19.1 一般形式
225
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ERASE
END OF LINE
END OF SCREEN
EOL
EOS
13.16.19.2 構文規則
1) 語EOLは,語列END OF LINEと同義とする。
2) 語EOSは,語列END OF SCREENと同義とする。
13.16.19.3 一般規則
1) ERASE句の指定があると,DISPLAY画面文の実行中に,データが画面項目に転送されるのに先立っ
て画面の一部が消去される。消去は,この記述項の左辺に対して指定された行と列の座標から始まり,
次のとおりに続く。
− LINEを指定したとき,消去は行末まで続く。
− SCREENを指定したとき,消去は画面の終わりまで続く。
2) ERASE句は,ACCEPT画面文の実行中は全段階において無視される。
13.16.20 EXTERNAL句
EXTERNAL(外部)句は,データ項目又はファイル結合子が,外部属性をもっていることを指定する。
外部データレコードを構成するデータ項目及び集団データ項目は,実行単位中において,そのレコードを
外部と記述している全ての実行時要素で使用可能となる。
13.16.20.1 一般形式
IS EXTERNAL [AS 定数1]
13.16.20.2 構文規則
1) EXTERNAL句は,ファイル記述項又は作業場所節のレコード記述項にだけ指定してもよい。
2) 同一のソース単位中において,EXTERNAL句を含んでいる記述項の左辺の外部公開名は,EXTERNAL
句を含んでいる別の記述項の外部公開名と同じであってはならない。
3) 定数1は英数字定数又は各国文字定数でなければならず,表意定数であってはならない。
4) EXTERNAL句を,字類がオブジェクト又はポインタであるデータ項目に対して指定してはならない。
また,強い型付けの集団項目に対しても指定してはならない。
13.16.20.3 一般規則
1) EXTERNAL句をレコード記述項に指定したとき,そのレコード中に含まれるデータは外部属性をも
ち,実行単位内で同じレコードを外部であると記述しているどの実行時要素からアクセスしてもよい。
さらに,次の規則に従う。
注記 EXTERNAL句は,関連するファイル名又はデータ名が大域名であることを意味しない。
2) EXTERNAL句をファイル記述項に指定したとき,次のとおりとする。
a) このファイル記述項に関連するファイル結合子は,外部ファイル結合子とする。
b) そのファイル記述項に従属する全てのレコード記述項に含まれるデータは外部属性をもち,実行単
位内で,同じファイル及びレコードを外部であると記述しているどの実行時要素からアクセスして
もよい。さらに,次の規則に従う。
3) 定数1が指定されたとき,定数1は操作環境に対して外部公開されたファイル結合子又はレコードの
名前である。定数1の指定がないときは,ファイル結合子又はレコードの外部公開名は,それぞれフ
ァイル記述項又はデータ名形式の項目名句で指定された名前になる。
226
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4) 一つの実行単位の中で,二つ以上のソース要素が,同じ外部データレコードを記述している場合,(i)
これらのレコード記述項に対して操作環境に外部公開される名前が全て同じでなければならず,(ii)
VALUE句の指定があるとき,関連するレコード記述項の各レコード名に対してVALUE句の指定は同
一でなければならず,(iii)これらのレコードは,同じ個数のバイトを定義していなければならない。
外部レコードを記述しているソース要素の中に,この外部レコードを完全に再定義するREDEFINES
句のあるデータ記述項があってもよい。また,この完全な再定義は,実行単位中の他のソース要素の
中では同一でなくてもよい。
13.16.21 FOREGROUND-COLOR句
FOREGROUND-COLOR(前景色)句は,画面項目の前景色を指定する。
13.16.21.1 一般形式
FOREGROUND-COLOR IS
一意名1
定数1
13.16.21.2 構文規則
1) 一意名1は,ファイル節,作業場所節,局所記憶節又は連絡節中において,符号なし整数データ項目
と記述されていなければならない。
2) 整数1は,0〜7の範囲内の値でなければならない。
13.16.21.3 一般規則
1) 関連する画面項目を参照しているACCEPT画面文又はDISPLAY画面文が実行されるとき,一意名1
のデータ項目の値は,0〜7の範囲内になければならない。
2) 整数1又は一意名1のデータ項目の値は,画面項目を表示するのに使用する前景色の色彩番号を指定
する。色彩番号に関連する色は,9.2.7(色彩番号)による。
3) 集団レベルに指定したFOREGROUND-COLOR句は,その集団内部の各基本画面項目に適用される。
4) FOREGROUND-COLOR句の指定がないか,又は値が0〜7の範囲内にない場合,前景色は実装者定義
とする。
13.16.22 FORMAT句
FORMAT(形式)句は,出力処理の間にファイルへ書き出すレコードが外部表現に形式変換されること,
及び入力処理の間にファイルから読み込むレコードが外部形式から内部表現に変換されることを指定する。
外部表現は,表示又は印字に適した形式とする。
13.16.22.1 一般形式
FORMAT
BIT
CHARACTER
NUMERIC
DATA
13.16.22.2 構文規則
1) FORMAT句の指定のあるファイル記述項にレコード記述項が二つ以上関連している場合,これらの
各々のレコード記述項にはSELECT WHEN句がなければならない。
2) FORMAT句の指定のあるファイル記述項に関連するレコード記述項に,又はそのファイル記述項を参
照しているREWRITE文若しくはWRITE文のFROM指定中に書かれた一意名のデータ記述項に,
REDEFINES句又はRENAMES句の指定があってはならない。
3) FORMAT句の指定のあるファイル記述項に関連するレコード記述項に,又はそのファイル記述項を参
照しているREWRITE文若しくはWRITE文のFROM指定中に書かれた一意名のデータ記述項に,字
227
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
類が指標,オブジェクト又はポインタであるデータ項目の指定があってはならない。
13.16.22.3 一般規則
1) FORMAT句は,ファイルへ書き出されるレコードに対し外部媒体形式が使用されることを指定する。
外部媒体形式では,表示又は印字のための適切な符号化がデータに含まれる。
注記 レコード領域中のデータは,実行時モジュールで内部表現として参照可能である。
2) FORMAT句のあるファイル記述項を参照する入出力操作の間に,形式変換に使用するためのレコード
記述項又はデータ記述項が一つ,次のとおりに選択される。
a) ファイル記述項にただ一つのレコード記述項が関連する場合,そのレコード記述項が選択される。
b) ファイル記述項に二つ以上のレコード記述項が関連する場合,SELECT WHEN句によって識別され
るレコード記述項が選択される。
c) ファイル記述項に関連するレコード記述項が存在しない場合,選択されるレコード記述項又はデー
タ記述項は,入出力操作によって異なり,次のとおりになる。
1. 入出力文がREAD文のとき,そのREAD文のINTO指定に書いた一意名のデータ記述項。
2. 入出力文がWRITE文又はREWRITE文で,FROM指定に一意名が書かれていれば,その一意名
のデータ記述項。
3. 入出力文がWRITE文又はREWRITE文で,FROM指定には定数が書かれていれば,その定数を
記述している暗黙のデータ記述項。それは次による。
a. 英数字定数のとき,暗黙のデータ記述項は,
01 PIC X(n).
… nは定数に含まれる英数字文字位置の個数。
b. ブール定数のとき,暗黙のデータ記述項は,
01 PIC 1(n).
… nは定数に含まれるブール文字位置の個数。
c.
各国文字定数のとき,暗黙のデータ記述項は,
01 PIC N(n).
… nは定数に含まれる各国文字位置の個数。
3) 選択されたレコード記述項に含まれる基本データ記述項は,形式変換されるデータ項目の決定に用い
られる。
4) CHARACTERを指定したとき,次の属性付きで記述したデータ項目を,形式変換用に選択する。
− 字類が英字
− 字類が英数字
− 字類がブールで用途がDISPLAY
− 字類が各国文字
− 字類が数字で用途がDISPLAY
− 字類が数字で用途がNATIONAL
5) BITを指定したとき,字類はブールで用途はBITと記述したデータ項目が,形式変換用に選択される。
6) NUMERICを指定したとき,字類は数字で用途はNATIONAL及びDISPLAY以外と記述したデータ項
目が,形式変換用に選択される。
7) 形式変換用に選択されない項目は,そのまま,形式変換を行うことなしに転記される。
8) WRITE文又はREWRITE文では,選択された各々のデータ項目が,外部媒体形式での出力用の一時的
な領域中で,必要に応じて形式変換される。出力時形式変換はレコード領域中には現れない。符号は
SIGN IS LEADING SEPARATEで表現される。
9) レコード領域の内容は,内部表現形式へと形式変換した結果の論理レコードになる。
228
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
10) FORMAT句の処理結果として生成する表現は,表示又は印字に必要な制御情報を含めて,実装者定義
とする。この表現は,内部表現と同じであってもよい。
11) 形式変換対象として選択されたデータ項目は,同一の実装系において,同じFORMAT句を伴って読
み込まれるとき,同じ内部表現に復元される。ただし,実装者定義の除外対象ではこの限りでない。
12) 関連するファイル結合子が外部ファイル結合子のとき,そのファイル結合子に関連する実行単位中の
全てのファイル記述項に,同じFORMAT句の指定がなければならない。
13.16.23 FROM句
FROM(から)句は,ACCEPT画面文及びDISPLAY画面文のためのデータの送出し元を指定する。
13.16.23.1 一般形式
FROM
一意名1
定数1
13.16.23.2 構文規則
1) 一意名1はファイル節,作業場所節,局所記憶節又は連絡節中で定義しなければならない。
2) 一意名1及び定数1の項類は,受取り側作用対象がこの記述項の左辺と同じPICTURE句をもつMOVE
文で,送出し側作用対象としてもよい項類でなければならない。
3) この記述項の左辺がOCCURS句に従属しているときは,一意名1は通常なら必要とされる添字付けな
しで指定しなければならない。このほかに13.16.36(OCCURS句)の構文規則12) にも規定がある。
13.16.23.3 一般規則
1) 記述項の左辺は,出力画面項目となる。
13.16.24 FULL句
FULL(全けた)句は,操作員がこの画面項目を,完全に空のままにしておくか,完全にデータで満たす
かの,いずれかを行わなければならないことを指定する。
13.16.24.1 一般形式
FULL
13.16.24.2 一般規則
1) 集団レベルに指定したFULL句は,その集団内部の各々の基本入力画面項目のうちでJUSTIFIED句の
指定のないものに適用される。
2) FULL句は,ACCEPT画面文の実行中,何らかの時点でカーソルがこの画面項目に入り,画面項目に
データ受入れが引き起こされる場合に,有効である。
3) FULL句の効果は,この句を満足させない限り,終了キーを受け付けないようにすることである。あ
る画面項目に対してこの句を満足させるには,次の規則による。
a) 英数字又は英数字編集のときは,この項目の内容を全部空白にするか,最初と最後の文字位置に非
空白文字を入れるか,いずれかでなければならない。
b) 各国文字又は各国文字編集のときは,この項目の内容を全部空白にするか,又は最初と最後の文字
位置に非空白文字を入れるか,いずれかでなければならない。
c) 数字又は数字編集のときは,値をゼロにするか,又はゼロ抑制が有効になるけた位置がないように
するか,いずれかでなければならない。
d) ブールのときは,この項目の内容を全部ブール文字の "0"又は"1" にしなければならない。
4) 入出力両用のフィールドでは,端末操作員が打けん(鍵)入力したデータだけではなく,FROM句又
はUSING句の一意名又は定数の内容によってFULL句が満たされてもよい。
229
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
5) 機能キーを用いてACCEPT文の実行を終了させるとき,FULL句は無効になる。
6) FULL句とREQUIRED句を一緒に指定すると,そのフィールドを完全に満たさない限り,通常の終了
キーは有効にならない。
7) FULL句は,入力フィールドでないフィールドに対しては無視される。
13.16.25 GLOBAL句
GLOBAL(大域)句は,定数名,データ名,ファイル名,報告書名又は画面名が大域名であることを指
定する。大域名は,それを宣言しているプログラムの内部に含まれる全てのプログラムにとって使用可能
とする。
13.16.25.1 一般形式
IS GLOBAL
13.16.25.2 構文規則
1) GLOBAL句を指定してもよい箇所は,次の記述項の中だけとする。
a) 定数記述項
b) ファイル節,作業場所節,局所記憶節又は連絡節中の,レベル番号1のデータ記述項
c) レベル番号1の画面記述項
d) ファイル記述項
e) 報告書記述項
2) 幾つかのファイルに対してSAME RECORD AREA句の指定がある場合,これらのファイルに対するレ
コード記述項又はファイル記述項にGLOBAL句があってはならない。
3) 外側のプログラムのファイル記述項にGLOBAL句がない場合,内側のプログラム中において入出力
文がこのファイルを直接又は間接に参照してはならない。
4) GLOBAL句をファクトリ定義,インスタンス定義又はメソッド定義中で指定してはならない。
13.16.25.3 一般規則
1) 定数名,データ名,ファイル名,報告書名又は画面名は,GLOBAL句を用いて記述されていれば,大
域名とする。大域名に従属しているデータ名は,全て大域名とする。大域名に関連付けられた条件名
は,全て大域名とする。
2) 大域名を記述しているプログラムに直接又は間接に含まれているプログラム中の文は,その名前を再
度記述することなしに参照してもよい[8.4.5(名前の有効範囲)参照]。
3) GLOBAL句を,REDEFINES句のあるデータ記述項で使用した場合,大域属性をもつのはREDEFINES
句の左辺だけとする。
13.16.26 GROUP INDICATE句
GROUP INDICATE(集団表示)句は,INITIATE文の実行後,制御切れの後,又はページ送りの後,最
初に現れる報告集団のときだけ,関連する印字可能項目の印字を行うよう指定する。
13.16.26.1 一般形式
GROUP INDICATE
13.16.26.2 構文規則
1) GROUP INDICATE句は明細報告集団記述中の,COLUMN句と,SOURCE句又はVALUE句とがある
基本記述項にだけ指定してもよい。
13.16.26.3 一般規則
1) GROUP INDICATE句の効果は,PRESENT WHEN句と同様とする。ここで関連する条件は,現在の明
230
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
細報告集団に対して,次に示す事象のいずれかの後にGENERATE文を初めて発行した場合にだけ,
真になるものとする[13.16.39(PRESENT WHEN句)参照]。
a) 報告書に対するINITIATE文の実行の後。
b) 報告書がページに分割される場合,ページ送りの後[13.16.37(PAGE句)参照]。
c) 報告書記述項にCONTROL句がある場合,制御切れの後。
13.16.27 GROUP-USAGE句
GROUP-USAGE(集団用途)句にBITを指定すると,記述項の左辺が定義する集団項目が,特に指定の
ない限りは,用途がBITでブール項類の基本項目と扱われることを指定する。
GROUP-USAGE句にNATIONALを指定すると,記述項の左辺が定義する集団項目が,特に指定のない
限り,用途がNATIONALで各国文字項類の基本項目と扱われることを指定する。
13.16.27.1 一般形式
GROUP-USAGE IS
BIT
NATIONAL
13.16.27.2 構文規則
1) GROUP-USAGE句は,記述項の左辺が集団項目であり強い型付けではないときだけ指定してもよい。
2) BIT指定を書いた場合,記述項の左辺にはUSAGE BITが暗黙に想定される。ただし,記述項の左辺
にUSAGE句を明示的に指定してはならない。記述項の左辺に従属している基本項目は全て,明示的
又は暗黙に,用途がBITで字類及び項類がブールであると記述されていなければならない。従属して
いる集団項目は全て,明示的又は暗黙に,GROUP-USAGE BITと記述されていなければならない。
3) NATIONAL指定を書いた場合,記述項の左辺にはUSAGE NATIONALが暗黙に想定される。ただし,
記述項の左辺にUSAGE句を明示的に指定してはならない。記述項の左辺に従属している基本項目は
全て,明示的又は暗黙に,用途がNATIONALであると記述されていなければならない。符号付き数
字データ項目はどれもSIGN IS SEPARATEと記述されていなければならない。従属する集団項目は全
て,明示的又は暗黙に,GROUP-USAGE NATIONALと記述されていなければならない。
13.16.27.3 一般規則
1) BIT指定を書いた場合,
a) 記述項の左辺はビット集団,かつ,ビット項目となり,その字類及び項類はブールになる。
b) 特に指定がない限りビット集団は,一つの基本データ項目であるかのように扱われる。その用途は
BITで字類及び項類はブールであって,記述はPICTURE 1(m) となる。ここでmは,集団のビッ
ト長である。
c) ビット集団の内部に含まれるデータ項目は,記憶域中で,8.5.1.5.3(用途BITのデータ項目のけた
よせ)に従って割り付けられる。
2) NATIONAL指定を書いた場合,
a) 記述項の左辺は各国文字集団となり,その字類及び項類は各国文字になる。
b) 特に指定がない限り各国文字集団は一つの基本データ項目であるかのように扱われる。その用途は
NATIONALで字類及び項類は各国文字であり,記述はPICTURE N(m) となる。ここでmは,集団
の長さである。
注記 GROUP-USAGE NATIONAL句が必要である理由は,各国文字だけを含む集団に対して,
切捨て及び各国文字の空白詰めを適切に行い,かつ,INSPECT等の操作を正しく処理でき
るようにするためである。GROUP-USAGE NATIONAL句を書かないと,そのような集団
231
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
項目の内容は項類が英数字の扱いとなってしまうので,データに対して,内容を壊したり,
不適切な操作をしたりする可能性がある。
3) 強い型付けでない集団項目に対してGROUP-USAGE句を明示的にも暗黙にも指定しないとき,その
集団項目は英数字集団項目となる。
13.16.28 HIGHLIGHT句
HIGHLIGHT(高輝度)句は,フィールドが画面上に最高レベルの輝度で表示されることを指定する。
13.16.28.1 一般形式
HIGHLIGHT
13.16.28.2 一般規則
1) 集団レベルに指定したHIGHLIGHT句は,その集団内部の各基本画面項目に適用される。
2) HIGHLIGHT句を指定すると,この画面項目をACCEPT画面文又はDISPLAY画面文が参照している
場合に,画面項目を構成する文字は最高輝度の前景色で表示されることになる。
13.16.29 INVALID句
INVALID(不当)句は,データ項目がVALIDATE文の実行中の関係検証段階において不合格になるよう
な状況を指定する。
13.16.29.1 一般形式
INVALID WHEN 条件1
13.16.29.2 構文規則
1) 記述項の左辺の字類は,指標,オブジェクト又はポインタであってはならない。
13.16.29.3 一般規則
1) INVALID句は,VALIDATE文の実行中の関係検証段階においてだけ効力をもつ。
INVALID句は,VALIDATE文以外の文の実行中には無視される。
2) INVALID句が効力をもつのは,この項目に関連する内部標識が,妥当を示す初期値のままであるとき
だけとする。
3) 条件1の評価は,関係検証段階の実行開始時点で行われる。次の結果が起こり得る。
a) 条件1が真のとき,この項目に関連する内部標識には関係が不当という状態が設定される。
b) 条件1が偽のとき,このINVALID句は効力をもたない。
13.16.30 JUSTIFIED句
JUSTIFIED(けたよせ)句は,受取り側のデータ項目又は画面項目における,データの右詰めを指定す
る。
13.16.30.1 一般形式
JUSTIFIED
JUST
RIGHT
13.16.30.2 構文規則
1) JUSTIFIED句は,基本項目レベルにだけ指定してもよい。
2) JUSTはJUSTIFIEDの略記である。
3) JUSTIFIED句は,項類が英字,英数字,ブール又は各国文字のデータ項目に対してだけ指定してもよ
い。
13.16.30.3 一般規則
1) 受取り側データ項目の記述にJUSTIFIED句があり,送出し側データ項目のほうが受取り側データ項目
232
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
より大きい場合,送出し側項目の左端の文字位置又はブール位置は切り捨てられる。
2) 受取り側データ項目の記述にJUSTIFIED句があり,送出し側データ項目より大きい場合,データは,
データ項目最右端の文字位置又はブール位置に合わせられ,左端のブール位置にはゼロ詰めを,左端
の文字位置には空白詰めを行う。用途がNATIONALと明示的又は暗黙に記述されたデータ項目では,
ゼロ詰めに各国文字のゼロを,空白詰めに各国文字の空白を用いる。用途がDISPLAYと明示的又は
暗黙に記述されたデータ項目では,ゼロ詰めに英数字のゼロを,空白詰めに英数字の空白を用いる。
用途がBITと明示的又は暗黙に記述されたデータ項目では,ゼロ詰めにビットのゼロを用いる。
3) JUSTIFIED句の指定がないとき,基本データ項目に関する標準けたよせ規則を適用する[14.5.8(デ
ータ項目内でのデータのけたよせ)参照]。
13.16.31 レベル番号
レベル番号の1〜49は,データ記述項,報告集団記述項又は画面記述項によって記述されるデータ項目
又は画面項目が階層構造内に占める位置を表す。また,レベル番号の66,77及び88は,特殊な記述項を
識別するために用いられる。
13.16.31.1 一般形式
レベル番号
13.16.31.2 構文規則
1) レベル番号は,各々のデータ記述項又は画面記述項の先頭に,必ず書かなければならない。
2) CD,FD又はSDの記述項に従属するデータ記述項のレベル番号の値は,66,88又は1〜49でなけれ
ばならない。
3) 1〜9の範囲内のレベル番号は,01〜09のように2けたで指定してもよい。
4) 報告書記述(RD)項に従属する報告集団記述項のレベル番号は,1〜49の値をもつものでなければな
らない。
5) 作業場所節,局所記憶節及び連絡節の中でのデータ記述項のレベル番号は,66,77,88又は1〜49で
なければならない。
6) 画面記述項のレベル番号は,1〜49でなければならない。
13.16.31.3 一般規則
1) レベル番号1は,各レコード記述又は各報告集団の,最初の記述項であることを表す。
2) 特殊なレベル番号を,実際には階層の概念をもたない記述項に,次のとおりに割り当てる。
a) レベル番号77は,独立作業場所項目,独立局所記憶項目及び独立連絡項目を識別するために割り当
てる。このレベル番号を用いてよいのは,データ記述形式のデータ記述項による記述だけとする。
b) レベル番号66は,RENAMES記述項を識別するために割り当てる。このレベル番号を用いてよいの
は,再命名形式のデータ記述項による記述だけとする。
c) レベル番号88は,ある条件変数に関連付ける条件名を定義する記述項に対して割り当てる。またデ
ータ項目の検証に用いる判断基準を規定するためにも割り当てる。このレベル番号を用いてよいの
は,条件名形式の又は検証形式のデータ記述項による記述だけとする。
3) CD,FD又はSDの記述項に従属する複数個のレベル1記述項は,同じ領域を暗黙に再定義すること
を意味する。RD記述項に従属する複数個のレベル1記述項は,同じ領域の暗黙な再定義を意味しな
い。
13.16.32 LINAGE句
LINAGE(行数)句は,論理的な1ページの構成を行数で指定する手段を提供する。また,論理ページ
233
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
の上端部及び下端部の余白の大きさと,ページ本体中での脚書き領域が始まる行位置とを指定する手段を
も提供する。
13.16.32.1 一般形式
LINAGE IS
データ名1
整数1
LINES
WITH FOOTING AT
データ名2
整数2
LINES AT TOP
データ名3
整数3
LINES AT BOTTOM
データ名4
整数4
13.16.32.2 構文規則
1) データ名1,データ名2,データ名3及びデータ名4は,修飾してもよいが,符号なし整数の基本デー
タ項目でなければならない。
2) 整数2が整数1より大であってはならない。
3) 整数3及び整数4はゼロであってもよい。
13.16.32.3 一般規則
1) LINAGE句は,論理ページの大きさを行数で指定する手段を提供する。論理ページの大きさは,
FOOTING指定を除いた各々の指定にある値の合計とする。LINES AT TOP指定又はLINES AT
BOTTOM指定がないと,これらの項目の値はゼロとみなされる。FOOTING指定がないと,ページあ
ふれ条件によらずページ終了条件が成立することはない。
論理ページの大きさと物理ページの大きさとの間に,関連がある必要はない。
2) 整数1又はデータ名1のデータ項目の値は,論理ページ上で行の書出し又は行送りをしてもよい行数
を指定する。この数を,ページの大きさ(page size)と呼ぶ。論理ページ中で書出し又は行送りをし
てもよい部分を,ページ本体(page body)と呼ぶ。
3) 整数2又はデータ名2のデータ項目の値は,ページ本体中での脚書き領域が始まる行位置を指定する。
この値は1から,整数1又はデータ名1のデータ項目の値まで範囲内の値でなければならない。
ページ本体の中で,脚書き開始位置から,ページの大きさまでの間の領域を,両端も含めて,脚書
き領域(footing area)とする。
4) 整数3又はデータ名3のデータ項目の値は,論理ページ上の上端部の余白の行数を指定する。この数
を,上端部の余白(top margin)と呼ぶ。
5) 整数4又はデータ名4のデータ項目の値は,論理ページ上の下端部の余白の行数を指定する。この数
を,下端部の余白(bottom margin)と呼ぶ。
6) ページの大きさ,上端部の余白,脚書き開始位置及び下端部の余白は,次のとおりに決まる。
a) 定数が指定されたとき,その値は,常にその定数とする。
b) データ名が指定されたとき,その値は,関連ファイルを参照する次の文の次の時点での,関連デー
タ名のデータ項目の内容とする。
1. OPEN文でOUTPUT指定のあるものの実行完了時点。
2. ADVANCING PAGE指定のあるWRITE文の実行中。これが起きるのは,装置が位置決めされる
前で,現在ページ上の全ての位置決めの後とする。
234
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
3. ページあふれ条件を引き起こしたWRITE文の実行中。これが起きるのは,装置が位置決めされ
る前で,現在ページ上の全ての位置決めの後とする。
ページの大きさ,上端部の余白,脚書き開始位置及び下端部の余白に対して,値が決まった場合,
その値は,その次の論理ページにも適用される。
その値は,次に示す規則に合っていなければならない。
1. ページの大きさは,ゼロより大きくなければならない。
2. 脚書き開始位置は,ゼロより大きく,ページの大きさ以下でなければならない。
その値がこれら二つの規則に合っていないときは,EC-I-O-LINAGE例外状態になる。この例外状態
の処理の後に実行が続くとき,継続箇所はそのWRITE文の直後の文であり,LINAGE-COUNTER一
意名は0に設定されファイルを閉じるまでその値のままであり,ファイルを参照するそれ以降の
WRITE文を実行すると,ファイルを閉じるまで,全てEC-I-O-LINAGE例外状態になる。
7) LINAGE-COUNTERは,LINAGE句があると生成される。LINAGE-COUNTERの値は,どの時点でも,
装置が位置決めされた現在のページ本体中での行位置を表す。LINAGE-COUNTERの規則を次に示す。
a) LINAGE-COUNTERは,ファイル記述項にLINAGE句のあるファイルごとに,別々に用意される。
b) LINAGE-COUNTERは手続き部の文でだけ参照してもよい。一方,入出力管理システムだけが
LINAGE-COUNTERの値を変更してもよい。LINAGE-COUNTERは,ソース要素中に複数個あって
もよいので,利用者は必要に応じてLINAGE-COUNTERをファイル名で修飾しなければならない。
c) LINAGE-COUNTERは,関連ファイルに対するWRITE文の実行中,次の規則に従って自動的に変
更される。
1. WRITE文にADVANCING PAGE指定があると,LINAGE-COUNTERの値を自動的に1に戻す。1
に戻すまでの間に,LINAGE-COUNTERの値は,整数1を又はデータ名1のデータ項目の値を超
えるように,暗黙に増える。
2. WRITE文にADVANCING指定があるとLINAGE-COUNTERは,そのADVANCING指定の整数の
値だけ又はそのADVANCING指定の一意名のデータ項目の内容だけ増える。
3. WRITE文にADVANCING指定がないとLINAGE-COUNTERは1だけ増える。
4. 次の論理ページの最初の行位置へと装置が位置決め変更されるたびに,LINAGE-COUNTERの値
を自動的に戻す。
d) 関連ファイルに対し,OUTPUT指定をもつOPEN文が実行された時点で,LINAGE-COUNTERの値
は自動的に設定され1になる。
8) 論理ページは,隙間なく次のページに連続している。
13.16.33 LINE句
LINE(行位置)句は,報告書行又は隣接する報告書行の組の始まりを表し,その縦方向の位置付けを指
定する。また,画面項目に対する縦方向の位置付け情報を指定する。
13.16.33.1 一般形式
書き方1(報告書)
LINE NUMBER IS
LINE NUMBERS ARE
LINES ARE
整数1 [ON NEXT PAGE]
PLUS
+
整数2
ON NEXT PAGE
…
書き方2(画面)
235
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
LINE NUMBER IS
PLUS
+
MINUS
‒
一意名1
整数3
13.16.33.2 構文規則
全ての書き方
1) PLUSと+は,同義語とする。
書き方1
2) LINEとLINESは,同義語とする。
3) 整数1は絶対行番号を指定する。整数2は相対行番号を指定する。整数1及び整数2は,ページ限界
を超えてはならず,報告書がページに分割されないとき9999を超えてはならない[13.16.37(PAGE
句)参照]。整数2はゼロであってもよい。整数1及び整数2は,符号なしでなければならない。
4) 報告集団記述項の中で,LINE句のある記述項には,LINE句を含む従属記述項があってはならない。
5) 報告書がページに分割されないとき,報告書のLINE句は全て相対指定でなければならない。
6) ある報告集団の中に報告書行の組があれば,それは次の規則による。
a) 二つ以上の絶対指定の行が数値の昇順になっていない行番号を用いて定義されたとき,それらは
各々が異なるPRESENT WHEN句の制御下になければならない。
b) 二つ以上の行又は行の組が,互いに重なり合っている場合には,それらは各々が異なるPRESENT
WHEN句の制御下になければならない。
c) 絶対指定の報告書行は,その報告集団に割り当てられた上限及び下限を超える行がないように定義
しなければならない。報告集団の各型に対する上限及び下限は,TYPE句の一般規則で規定する
[13.16.55(TYPE句)参照]。
d) 報告集団が,一つ以上の絶対指定の行からなりPRESENT WHEN句の制御下にはなく相対指定の行
で終わっている場合,又は相対指定の行の組からなっている場合,それらがこの報告集団の下限を
超えることになってはならない。ただし,それらの各々が異なるPRESENT WHEN句の制御下にあ
る場合は別であり,その場合には,それらのうち縦方向に最大のものにだけ,この規則を適用する。
e) 絶対指定の行の記述が相対指定の行の記述より後に現れる場合,それらは各々が異なるPRESENT
WHEN句の制御下になければならない。
7) 報告集団記述項の中にNEXT PAGE指定を書くとき,最初のLINE句に書かなければならない。
8) NEXT PAGE指定は,本体集団又は報告書脚書きの記述中にだけ現れてもよい。
9) 現在の報告集団がOR PAGE指定付きの制御頭書きであるとき,この報告集団記述中の全てのLINE句
は相対指定でなければならない。
10) 整数1又は整数2の指定が複数個あるとき,このLINE句を複数指定のLINE句と呼び,次の追加規
則を適用する。
a) NEXT PAGE指定を書くとき,NEXT PAGE指定は,最初の作用対象にしか書いてはならない。
b) 絶対指定の作用対象は全て,あらゆる相対指定の作用対象より前になければならない。
c) 繰り返し現れる整数1を書くとき,それらは昇順になっていなければならない。
d) 同じ記述項中にOCCURS句をも書いてはならない。
書き方2
11) MINUSと−(マイナス)は,同義語である。
236
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
12) 一意名1は,ファイル節,作業場所節,局所記憶節又は連絡節において,符号なし基本データ項目と
記述されていなければならない。
13) 画面レコード中の最初の基本項目には,PLUS指定もMINUS指定も書いてはならない。
13.16.33.3 一般規則
書き方1
1) 報告集団記述中の各々のLINE句は,その報告集団が印字されるときに印字される報告書行又は報告
書行の組を定義する。この報告書のLINE-COUNTERの一意名には,直前に印字された行のページ内
行番号が入る。
2) 報告書がページに分割されるとき,各報告集団を記述するには,印字が1ページ上に収まるようにし
なければならない。一つの報告集団が2ページにわたってはならない。この規則に違反すると
EC-REPORT-PAGE-LIMIT例外状態になって結果は規定されない。
3) 各々の報告集団は,印字した時点で行又は行の組が互いに重ならないように記述しなければならない。
ただし,整数2をゼロとした相対指定の行の非空白文字が前の行の対応する文字を重ね書きする場合
を除く。この規則に違反するとEC-REPORT-LINE-OVERLAP例外状態になって結果は規定されない。
4) 報告書がページに分割されていて,印字しようとする報告集団が本体集団であるが,ただし,その報
告書に対しINITIATE文を実行してから時系列的に最初の本体集団でないとき,この報告集団の行が
印字されるよりも前に,ページ内収納検査(page fit test)を行う。直前の本体集団の記述に絶対形式
のNEXT GROUP句が含まれているとき,ページ内収納検査の規則及び本体集団の先頭行の位置付け
は,修正される[13.16.35(NEXT GROUP句)参照]。次に記述する動作では,そのようなNEXT GROUP
句がないものと想定する。
ページ内収納検査の性質は,報告集団記述中にある最初のLINE句の書き方に依存する。どのLINE
句が最初になるのかは,報告集団記述中のPRESENT WHEN句の条件の現在値に依存して変わること
がある[13.16.39(PRESENT WHEN句)参照]。
ページ内収納検査は次のいずれかの形態を取る。
a) 最初のLINE句にNEXT PAGE指定がある場合,ページ内収納検査は起きず,ページ内収納は不成
功と判定される。
b) 最初のLINE句が絶対指定でありNEXT PAGE指定がない場合,整数1(先頭行の目標位置)が
LINE-COUNTERの現在値と比較される。整数1がLINE-COUNTERより大であるとき,ページ内収
納は成功と判定され,さもなければ,ページ内収納は不成功と判定される。
c) 最初のLINE句が相対指定であり(したがって,報告集団記述中のLINE句は全てが相対指定),NEXT
PAGE指定がない場合,報告集団の最終行の予測位置が計算され試算合計に入る。まず,
LINE-COUNTERの現在値が試算合計に入り,次に,2番目以降のLINE句の整数2がそれぞれ試算
合計に加算される。LINE句のレベル又はその上位にOCCURS句がある場合は,2番目以降の繰返
し項目の各々に対して一度ずつ,連続する繰返し項目間の縦方向の間隔が試算合計へと加増される
[13.16.36(OCCURS句)参照]。
試算合計の計算に用いられるLINE句のいずれかがPRESENT WHEN句か又はDEPENDING指定
付きOCCURS句の制御下にあるとき,これらの句は試算合計の計算時に考慮される[13.16.39
(PRESENT WHEN句)参照]。
試算合計がこの報告集団の下限に等しい又はより小であれば,ページ内収納は成功と判定され,
さもなければ,ページ内収納は不成功と判定される。本体集団の下限については,13.16.55(TYPE
237
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
句)の一般規則中で規定する。
ページ内収納が成功と判定された場合は,ページ送りが行われず,この報告集団は現在のページ上
に印字される。さもなければ,この本体集団が印字される前にページ送りが行われて,この本体集団
が新たなページ上の最初の本体集団になる[14.8.15(GENERATE文)参照]。
5) 報告集団の先頭行が印字される行の番号は,報告集団記述中の最初のLINE句に依存する。どのLINE
句が最初になるのかは,報告集団記述中のPRESENT WHEN句の条件の現在値に依存して変わること
がある[13.16.39(PRESENT WHEN句)参照]。
a) 報告集団の最初のLINE句が絶対指定のとき,報告集団の先頭行番号は整数1となる。さらに,NEXT
PAGE指定があり報告集団が報告書脚書きのとき,先頭行は新たなページ上の始めに印字される。
b) 報告集団の最初のLINE句が相対指定であり報告書がページに分割されるときは,報告集団の先頭
行番号は次のとおりに計算される。
1. 報告集団が報告書頭書きのとき,行番号は (HEADING整数+整数2−1) となる。
2. 報告集団がページ頭書きである場合,同じページ上に報告書頭書きがまだ印字されていないとき,
行番号は (HEADING整数+整数2−1) となる。さもなければ,行番号は,整数2を報告書の
LINE-COUNTERの現在値に加えて求まる。
3. 報告集団が本体集団である場合,現在のページ上に印字されるはずの最初の本体集団であるとき,
行番号はFIRST DETAIL整数となる。さもなければ,行番号は,整数2を報告書のLINE-COUNTER
の現在値に加えて求まる。
4. 報告集団がページ脚書きのとき,行番号は (FOOTING整数+整数2) となる。
5. 報告集団が報告書脚書きである場合,同じページ上にページ脚書きがまだ印字されていないとき,
行番号は (FOOTING整数+整数2) となる。さもなければ,行番号は,整数2を報告書の
LINE-COUNTERの現在値に加えて求まる。
c) 報告集団の最初のLINE句が相対指定であり報告書がページに分割されないとき,報告集団の先頭
行番号は,整数2を報告書のLINE-COUNTERの現在値に加えて求まる。
6) 報告集団の先頭行番号が算出されると,報告書のLINE-COUNTERがその行番号と等しくなるように
設定され,ページ上の縦方向のその位置にその行が印字される。
7) 同じ報告集団内にこれ以降のLINE句があるとき,それによって行番号は次のとおりに更新される。
a) LINE句が絶対指定であるとき,新たな行番号は整数1となる。
b) LINE句が相対指定であるとき,新たな行番号は整数2をこの報告書のLINE-COUNTERに加えて決
まる。
これ以降の各々の行番号が算出されると,報告書のLINE-COUNTERがその行番号と等しくなる
よう設定され,ページ上の縦方向のその位置にその行が印字される。
行番号は連続していなくてもよい。ページ上の非占有行は結果として空白行になる。
8) 報告集団の最終行番号は,報告集団の最終行が印字完了したとき報告書のLINE-COUNTERの値とな
る。報告集団の処理が完了する前に,その報告集団に対してNEXT GROUP句の定義があると,その
動作の結果としてLINE-COUNTERの値が更に変更されることがある[13.16.35(NEXT GROUP句)
参照]。
9) 複数指定のLINE句は,LINE句の作用対象の個数と等しい整数をもつ単純なOCCURS句と一緒に,
単一の作用対象をもつLINE句を指定したのと機能的に等価とする。ただし,複数指定のLINE句で
は報告書行を定義するのに縦方向の間隔が均等でなくてもよい点だけが異なる。
238
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
書き方2
10) LINE句は,COLUMN句と一緒に指定した場合,画面項目の画面レコード内での開始座標を確立する。
LINE句は縦方向の座標を指定する。ACCEPT画面文又はDISPLAY画面文の参照する対象が,画面レ
コード全体なのかその一部にすぎないのかには関係なく,画面レコードの位置付けと画面レコード内
での位置付けとは,端末画面上の同じ位置に現れる。
11) PLUS又はMINUSの指定がないLINE句は,その画面レコードの始点からの相対行番号を指定する。
行番号の1は,その画面レコードの先頭の行を表す。
12) PLUS又はMINUSの指定がLINE句にある場合の行番号は,同じ画面レコード中の直前の画面項目の
終点からの相対位置を指定する。PLUSは,行位置を一意名1又は整数3の値だけ増やすことを,MINUS
は,行位置を一意名1又は整数3の値だけ減らすことを意味する。
13) LINE句を省略したときは,次を適用する。
a) 直前の画面項目の定義がない場合,その画面レコードのLINE 1を想定する。
b) 直前の画面項目の定義がある場合,その,直前の項目の行を想定する。
14) 画面項目の明示的な又は暗黙の行番号が,ゼロである場合,又は端末で使用可能な行の数を超えた場
合,EC-SCREEN-LINE-NUMBER例外状態になり,その画面項目は,ACCEPT画面文又はDISPLAY
画面文の実行に関与しない。
13.16.34 LOWLIGHT句
LOWLIGHT(低輝度)句は,フィールドが画面上に最低レベルの輝度で表示されることを指定する。
13.16.34.1 一般形式
LOWLIGHT
13.16.34.2 一般規則
1) 集団レベルに指定したLOWLIGHT句は,その集団内部の各基本画面項目に適用される。
2) LOWLIGHT句を指定すると,この画面項目をACCEPT画面文又はDISPLAY画面文が参照している場
合に,画面項目を構成する文字が最低輝度の前景色で表示されることになる。
13.16.35 NEXT GROUP句
NEXT GROUP(次の報告集団)句は,ある報告集団の最終行を印字した後に空白行を追加することを指
定する。
13.16.35.1 一般形式
NEXT GROUP IS
整数1
PLUS
+
整数2
NEXT PAGE [WITH RESET]
13.16.35.2 構文規則
1) 整数1は,絶対行番号を指定する。整数2は,縦の相対距離を指定する。整数1及び整数2はページ
限界を超えてはならず,報告書がページに分割されないときも9999を超えてはならない。整数1及び
整数2は,符号なしでなければならない[13.16.37(PAGE句)参照]。
2) PLUSと+は,同義語とする。
3) 報告書がページに分割されないとき,指定してもよいのは相対指定の形式の句だけとする。
4) NEXT GROUP句を,ページ頭書き又は報告書脚書きに指定してはならない。
5) NEXT PAGE指定を,ページ脚書きに指定してはならない。
239
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
6) 絶対指定の形式を使用するとき,次の検査が適用される。
a) 現在の報告集団が報告書頭書きのとき,整数1は,報告集団の最終行番号の最小値より大であり
FIRST DETAIL整数より小でなければならない。
b) 現在の報告集団が本体集団のとき,整数1は,FIRST DETAIL整数からFOOTING整数までの範囲
内になければならない。
c) 現在の報告集団がページ脚書きのとき,整数1は,報告集団の最終行番号の最小値より大でなけれ
ばならない。
7) 相対指定の形式を使用するとき,次の検査が適用される。
a) 現在の報告集団が報告書頭書きであるとき,報告集団の最終行番号の最小値に整数2を加えた値が
FIRST DETAIL整数より小でなければならない。
b) 現在の報告集団がページ脚書きであるとき,報告集団の最終行番号の最小値に整数2を加えた値が,
ページ限界を超えない値でなければならない。
13.16.35.3 一般規則
1) NEXT GROUP句は,制御切れの検出された最上位レベル以外のレベルの制御脚書きに指定されてい
るとき,効力をもたない。
2) NEXT GROUP句は,この句が記述された報告集団の最終行(もしあれば)が印字された後に現在の
報告書のLINE-COUNTERの値を変更する。この句の効果は,これ以降の規則において網羅するとお
り,この句が記述された報告集団の型に依存する。
3) 報告集団が報告書頭書きである場合,絶対指定及び相対指定の形式の効果として,直後の報告集団が
印字される行の行番号を増加させる。直後の報告集団とはすなわち,報告書がページに分割されない
場合は最初の本体集団であり,ページ頭書きが相対指定の行だけからなる場合は最初のページ頭書き
とする。各々の場合においてのLINE-COUNTERに関する効果は,次による。
a) NEXT GROUP句が絶対指定のとき,LINE-COUNTERは整数1に等しく設定される。
b) NEXT GROUP句が相対指定のとき,整数2がLINE-COUNTERに加えられる。
c) NEXT GROUP NEXT PAGEの指定があるとき,報告書の最初のページに,そのページ上の唯一の報
告集団として報告書頭書きが印字され,その後にLINE-COUNTERがゼロに等しく設定される。
4) 報告集団が本体集団である場合,
a) NEXT GROUP句が絶対指定のとき,LINE-COUNTERが整数1未満か否かを検査する。整数1未満
であれば,LINE-COUNTERを整数1に等しく設定する。さもなければ,整数1を退避しておき,
LINE-COUNTERをFOOTING整数に等しく設定する。その結果,この報告書に対して印字項目をも
つ本体集団が印字されれば,その直前にページ送りが行われる。NEXT GROUP句は現在の本体集
団に対してそれ以上の影響を及ぼさず,この報告書に対して次に実行する文がTERMINATE文であ
っても影響を及ぼさない。しかし,印字項目をもつ次の本体集団に対しては,それが印字される時
点で位置付けに次のとおり影響を及ぼす。
1. 次の本体集団の最初に絶対指定のLINE句があってNEXT PAGE指定がない場合,前もって退避
しておいた整数1をLINE-COUNTERに転記し,その本体集団の先頭行を印字する前にページ内
収納検査を再度適用する。
2. 次の本体集団の最初に絶対指定のLINE句があってNEXT PAGE指定がある場合,ページ送りを
行い,退避しておいた整数1をLINE-COUNTERに転記し,新たなページ内収納検査とそれ以降
の処理を,同一の報告集団でNEXT PAGE指定のないものに対するのと同様に行う。
240
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
3. 次の本体集団に相対指定のLINE句だけがある場合,その先頭行は,整数1の行番号の次の行に
印字することになる。ただし,結果としてこの本体集団の行の幾つかが許容下限を越えて印字さ
れることになる場合は,この限りでない。この場合,第2のページ送りを行い,結果として本体
集団を欠いたページが作成される。次の本体集団は,退避しておいた整数1を参照せずに直後の
ページに印字する。
b) NEXT GROUP句が相対指定のとき,整数2とLINE-COUNTERとの合計がFOOTING整数より小で
あれば,整数2をLINE-COUNTERに加える。さもなければ,FOOTING整数をLINE-COUNTERに
転記する。
c) NEXT GROUP NEXT PAGEの指定があるとき,FOOTING整数をLINE-COUNTERに転記する。
5) 報告集団がページ脚書きである場合,NEXT GROUP句は,現在の報告書中に相対指定のLINE句だけ
を用いて定義された報告書脚書きに影響を及ぼし,LINE-COUNTERを次のとおりに変更する。
a) NEXT GROUP句が絶対指定のとき,LINE-COUNTERを整数1に等しく設定する。
b) NEXT GROUP句が相対指定のとき,整数2をLINE-COUNTERに加える。
6) WITH RESET指定が存在するとき,この報告書のPAGE-COUNTERの値は,次のページ送りによって
発生する改ページの直後,時系列的にはページ脚書きの印字とページ頭書きの印字との間に破算され
て1になる。現在の集団が報告書頭書きであるか本体集団であるかに関係なく,この指定によって
PAGE-COUNTERは1になり,(手続きで変更されない限り)次のページの開始から有効になることが
保証される。
13.16.36 OCCURS句
OCCURS(反復)句は,データ項目,報告書項目又は画面項目を繰返し項目と記述し,更に添字付けに
必要な情報を与える。
13.16.36.1 一般形式
書き方1(固定の表)
OCCURS 整数2 TIMES
ASCENDING
DESCENDING KEY IS {データ名2}… … [ INDEXED BY {指標名1}… ]
書き方2(可変の表)
OCCURS 整数1 TO 整数2 TIMES DEPENDING ON データ名1
ASCENDING
DESCENDING KEY IS {データ名2}… … [ INDEXED BY {指標名1}… ]
書き方3(報告書)
OCCURS [整数1 TO] 整数2 TIMES [DEPENDING ON データ名1] [STEP 整数3]
13.16.36.2 構文規則
全ての書き方
1) OCCURS句の指定が,次のデータ記述項にあってはならない。
a) レベル番号が01,66,77又は88であるもの。
b) それに従属する可変反復データ項目があるもの。
2) データ名1及びデータ名2は,修飾してもよい。
書き方1,書き方2
3) KEY IS指定中に最初に現れるデータ名2は,このOCCURS句のある記述項の名前か,又はその従属
241
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
記述項の名前でなければならない。2番目以降に現れるデータ名2は,このOCCURS句のある記述項
に従属していなければならない。
4) データ名2が,このOCCURS句のある記述項に従属する英数字,ビット,各国文字又は強い型付けの
集団項目に従属しているとき,その集団項目にOCCURS句があってはならない。
5) データ名2を指定するときは,通常必要となる添字付けをしてはならない。
6) データ名2のデータ項目にはOCCURS句があってはならない。ただし,データ名2がこの記述項の左
辺と同じである場合は,この限りでない。
7) 指標名1は,次に示す文脈中にだけ指定してもよい。
− 添字
− PERFORM文のVARYING指定
− SEARCH文のVARYING指定
− SET文
− 比較条件中の比較対象
8) 字類がブール,オブジェクト又はポインタであるデータ項目に対しては,KEY IS指定を書いてはなら
ない。
書き方1,書き方3
9) DEPENDING ON指定がないとき,OCCURS句は,必要な添字の個数が7を超えない限りにおいて,
別のOCCURS句を含むデータ記述項に従属していてもよい。
書き方1
10) 画面記述項中でのOCCURS句は,書き方1のOCCURS句であって,選択可能指定が一つもないもの
でなければならない。
11) 画面記述項中に記述する表の最大次元数は,2とする。
12) 画面記述項にOCCURS句があり,その画面記述項又はそれに従属する項目のいずれかの記述にTO
句・FROM句・USING句があるとき,その画面記述項は表の一部でなければならず,その表は,TO
句・FROM句・USING句の中で受取り側又は送出し側のデータ項目を表している一意名と,次元数及
び各次元の反復回数が同じでなければならない。受取り側又は送出し側のデータ項目を表している一
意名は,DEPENDING指定のあるOCCURS句に従属していてはならない。
13) 画面記述項にOCCURS句がありCOLUMN句もある場合,そのCOLUMN句にPLUS又はMINUSの
指定がなければならない。ただし,この画面記述項にPLUS又はMINUSの指定のあるLINE句もある
場合は,この限りでない。
14) 画面記述項にOCCURS句がありLINE句もある場合,そのLINE句にはPLUS又はMINUSの指定が
なければならない。ただし,この画面記述項にPLUS又はMINUS指定付きのCOLUMN句もある場合
はこの限りでない。
書き方2,書き方3
15) 整数1は0以上,整数2は整数1より大でなければならない。
16) データ名1は,整数でなければならない。
17) GLOBAL句のある記述項に従属する記述項にOCCURS句の指定がある場合,データ名1を指定する
とき,それは大域名であって,同じデータ部の中で記述したデータ項目でなければならない。
書き方2
18) データ名1の指すデータ項目が占めるバイト位置は,このOCCURS句のあるデータ記述項が定義する
242
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
最初のバイト位置から,このOCCURS句を内部に含むレコード記述項が定義する最後のバイト位置ま
での範囲内にあってはならない。
19) EXTERNAL句のあるレコード記述項に含まれるデータ記述項中にOCCURS句の指定がある場合,デ
ータ名1は,外部属性をもち同じデータ部の中で記述されたデータ項目でなければならない。
20) レコード記述内で,この記述項の左辺に続いて指定してもよいのは,それに従属するデータ記述項だ
けとする。
書き方3
21) TO指定及びDEPENDING指定は,両方とも書かないか又は両方とも書くかの,いずれかでなければ
ならない。
22) STEP指定は,次の場合に必ず書かなければならない。
a) この記述項に,絶対指定のLINE句がある。
b) この記述項に,絶対指定のLINE句のある従属記述項がある。
c) この記述項に,絶対指定のCOLUMN句がある。
d) この記述項が,LINE句のある記述項に従属しており,この記述項に,絶対指定のCOLUMN句のあ
る従属記述項がある。
これ以外の場合は全て,STEP指定は書いても書かなくてもよい。
23) 整数3の値は,関連報告書項目の連続した出現の,行(縦方向の反復の場合)又は列(横方向の反復
の場合)が重なり合うのを避けるために,十分な値でなければならない。
24) 報告集団記述項にDEPENDING指定のあるOCCURS句がある場合,この報告集団内で,この記述項
に続いて指定してもよいのは,それに従属する報告集団記述項だけとする。
13.16.36.3 一般規則
書き方1,書き方2
1) OCCURS句を含む記述をもつ項目の全てのデータ記述句は,OCCURS句自体を除き,記述された項目
の各出現に適用される。
2) 指標名1が定義する指標の,割付け及び表現形式は,実装者とハードウェアに依存する。指標名1が
定義する指標がもつことのできる値の範囲の規則は,実装者定義とする。この範囲には少なくとも,
出現番号 (1−整数2) に対応する値から,出現番号 (2×整数2) に対応する値までを含まなければ
ならない。この指標を変更してもよい文は,PERFORM VARYING文,SEARCH文,及びSET文だけ
とする。これらの文のいずれかを実行することによって指標の値が,実装者定義である許容値の範囲
を外れた場合,EC-RANGE-INDEX例外状態になり,指標の値は規定されない。
3) KEY IS指定は,SEARCH ALL文の実行中,又は表を参照するSORT文の実行中に用いられて,キー
データ項目の強さの順序を表す。データ名2が二つ以上ある場合,これらはキーの強いものから順に
指定する。ALL指定のあるSEARCH文が実行され,WHEN指定中の条件のいずれかにデータ名2の
指定がある場合,データ名2に関連するデータは整列済みでなければならない。そのようなSEARCH
文の実行時点で,データ名2のデータ項目の内容は,ASCENDING指定があれば昇順に,DESCENDING
指定があれば降順に,並んでいなければならない。この順序に関連する文字照合順序は,SEARCH文
のWHEN指定中にある条件に適用される,作用対象の比較の規則によって決まる。
書き方1
4) 整数2の値が,記述項の左辺の反復回数の固定値を表す。
5) 画面項目の記述にOCCURS句があり,その記述又は従属項目の記述にTO句・FROM句・USING句
243
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
があるときは,その画面項目を参照するDISPLAY画面文又はACCEPT画面文の実行中に,対応する
表要素列のデータ値が,データの表要素と画面の表要素との間で転記される。
6) 画面項目の記述にOCCURS句がある場合,その画面項目の反復要素のそれぞれは,画面レコード内に
おいて次のとおりに位置付けされる。
a) その画面項目の記述にCOLUMN句がある場合,反復要素のそれぞれは,同じCOLUMN句が指定
されているかのように位置付けされる。
b) その画面項目が集団項目であって,それに従属する画面記述項にPLUS又はMINUS付きCOLUMN
句があり,それ自体はLINE句のある別の画面記述項に従属している場合,反復要素のそれぞれは,
同じCOLUMN句を指定した同じ従属項目があるかのように位置付けされる。
c) その画面項目の記述にPLUS又はMINUS付きLINE句がある場合,反復要素のそれぞれは,同じ
LINE句が指定されているかのように位置付けされる。
d) その画面項目が集団項目であって,それに従属する画面記述項にPLUS又はMINUS付きLINE句が
ある場合,反復要素のそれぞれは,同じLINE句を指定した同じ従属項目があるかのように位置付
けされる。
書き方2
7) データ名1のデータ項目の値が,記述項の左辺の現時点での反復回数を表す。
この記述項の左辺の反復回数は可変である。整数2の値は最大反復回数を表し,整数1の値は最小
反復回数を表す。この意味は,記述項の左辺の長さが可変ということではなく,反復回数が可変とい
うことである。
この記述項の左辺,その下位,又はその上位のデータ項目のいずれかを参照した時点で,データ名
1の指すデータ項目の値は,整数1〜整数2の範囲内になければならない。データ項目の値がこの規定
の範囲内にないと,EC-BOUND-ODO例外状態になる。データ名1の指すデータ項目の値より大きい
出現番号をもつデータ項目の内容は,規定されない。
8) 可変の表形式のOCCURS句を指定した従属記述項をもつ英数字,ビット,各国文字又は強い型付けの
集団項目を,可変長データ項目(variable-length data item)という。可変長データ項目を参照する場合,
表の領域のうち,その処理に用いられる部分は,次のとおりに決まる。
a) データ名1のデータ項目がその集団の外側にあるとき,表の領域のうち,その処理の開始時点でデ
ータ名1のデータ項目の値で規定される部分だけが用いられる。集団データ項目のデータ記述項と
書き方2で指定される表の定義との間に基本データ項目が一つもなく,かつ,データ名1のデータ
項目の値がその処理との開始時点でゼロであるとき,その集団データ項目は長さゼロの項目となる。
b) データ名1のデータ項目が同じ集団の内側にあり,かつ,その集団データ項目が送出し側項目とし
て参照されているとき,表の領域のうちで,その処理の開始時点でデータ名1のデータ項目の値で
規定される部分だけが,その処理中に用いられる。その集団が受取り側項目のときは,集団の最大
長が用いられる。
9) レコード記述項に書き方2の指定があり,関連するファイル記述項又は整列併合用記述項にRECORD
句のVARYING指定がある場合,そのレコードは可変長となる。そのRECORD句にDEPENDING ON
指定がない場合,レコード記述項を参照しているRELEASE文,REWRITE文又はWRITE文を実行す
るときは,あらかじめ書き出される反復項目の個数をOCCURS句のデータ名1のデータ項目に設定し
ておかなければならない。
書き方3
244
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
10) 選択可能指定のないOCCURS句を指定すると,整数2が表す個数の報告書項目を別々に定義したかの
ようになる。各々の繰返し項目に関するOCCURS句の効果は,この句を書いた記述項が報告集団定義
中のどこに位置するかによって異なり,次による。
a) その記述項に相対指定のCOLUMN句もあるとき,繰返し項目のそれぞれは,同じ相対指定
COLUMN句があるかのように位置付けされる。
b) その記述項が集団記述項であって,その従属記述項に相対指定のCOLUMN句があり,それ自体は
LINE句のある別の記述項に従属している場合,繰返し項目のそれぞれは,同じ相対指定COLUMN
句を指定した同じ従属記述項があるかのように位置付けされる。
c) その記述項に相対指定のLINE句もある場合,繰返し項目のそれぞれは,同じ相対指定のLINE句
があるかのように位置付けされる。
d) その記述項が集団記述項であって,その従属記述項に相対指定のLINE句がある場合,繰返し項目
のそれぞれは,同じ相対指定LINE句を指定した同じ従属記述項があるかのように位置付けされる。
11) PICTURE句,USAGE句,SIGN句,VALUE句,JUSTIFIED句,BLANK WHEN ZERO句又はGROUP
INDICATE句があると,各々の繰返し項目に関するその句の効果は,OCCURS句のない単一データ項
目に関する効果と同じになる。これと同様の規則が,VARYING句がない場合にSOURCE句,SUM句
又はPRESENT WHEN句にも適用される。VARYING句がある場合これらの句の動作は,ある繰返し
項目から他の繰返し項目へと変化することがある[13.16.62(VARYING句)参照]。
12) STEP指定がある場合,関連する報告書項目を連続して印字する場合の,最初の繰返し項目以降の縦
方向又は横方向の間隔が,STEP指定によって次のとおりに定義される。
a) その記述項にCOLUMN句がある場合,連続した繰返し項目のそれぞれは,直前の印字位置から列
位置で整数3の値だけ,右に横方向の距離をおいて位置付けされる。
b) その記述項が集団記述項であって,その従属記述項にはCOLUMN句があり,それ自体はLINE句
のある別の記述項に従属している場合,連続した繰返し項目のそれぞれに含まれる印字可能項目群
は,直前の繰返し項目中に占める位置から列位置で整数3の値だけ,右に位置付けされる。
c) その記述項にLINE句がある場合,連続した繰返し項目はそれぞれ,直前の印字位置から縦方向に
行位置で整数3の値だけ,下に位置付けされる。
d) その記述項が集団記述項であって,その従属記述項にLINE句がある場合,連続した繰返し項目の
それぞれに含まれる報告書行は,直前の繰返し項目中に占める位置から縦方向に行位置で整数3の
値だけ,下に位置付けされる。
STEP指定がない場合,繰返し項目を連続して印字する場合の縦方向及び横方向の間隔は,対応す
る報告集団記述項に指定した相対行番号又は相対列番号によって定義される。
13) DEPENDING指定がある場合,データ名1の値が評価される時点は報告集団の最初のLINE句が処理
される直前である。データ名1の値が整数1から(整数2 ‒ 1)までの範囲内にない場合,報告集団の
処理は,OCCURS句にTO指定もDEPENDING指定もない場合と同様になる(注記 直前の一般規則
を参照)。データ名1の値が整数1から(整数2 ‒ 1)までの範囲内にある場合,OCCURS句の効果は,
TO指定又はDEPENDING指定がなくて整数2がデータ名1の現在値に等しい場合と同様になる。ペ
ージ内収納検査の実行中に用いられる試験的合計の計算にも同じ原理が用いられる[13.16.33(LINE
句)の一般規則4) c) 参照]。
13.16.37 PAGE句
PAGE(ページ)句は,報告書のページの最大長及び最大幅,並びに報告集団を印字する縦の分割を定
245
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
義する。
13.16.37.1 一般形式
PAGE
LIMIT IS
LIMITS ARE
整数1
整数1
LINE
LINES
整数2
COLS
COLUMNS
[HEADING IS 整数3]
FIRST
DETAIL
DE
IS 整数4
LAST
CONTROL HEADING
CH
IS 整数5
LAST
DETAIL
DE
IS 整数6 [FOOTING IS 整数7]
13.16.37.2 構文規則
1) FIRST DEとFIRST DETAIL,LAST CHとLAST CONTROL HEADING,LAST DEとLAST DETAILは,
それぞれ同義語である。
2) 整数1又は整数2の一方又は両方を,必ず指定しなければならない。
3) HEADING指定,FIRST DETAIL指定,LAST CONTROL HEADING指定,LAST DETAIL指定又は
FOOTING指定を書いてよいのは,整数1の指定があるときだけとする。
4) HEADING指定,FIRST DETAIL指定,LAST CONTROL HEADING指定,LAST DETAIL指定及び
FOOTING指定は,任意の順序で書いてもよい。
5) 整数1は,9999を超えてはならない。
6) 整数3,整数4,整数5,整数6,整数7及び整数1は,ゼロより大きくなければならない。指定する
場合は,これらが昇順(等しくてもよい)になっていなければならない。
13.16.37.3 一般規則
1) 印字ページは横方向の行を縦方向に配置したものとして扱われ,各々の行には報告書の1行の内容が
表示できる。各ページ上でこれらの行には,(ページの最初の行を表す)1から始まり1ずつ増える番
号が付けられる。PAGE句及びそれに付く指定によって,印字ページは縦方向の幾つかの領域に分割
される。各々の報告集団はその型によって,これらの領域のうちの一つ以上の内部に限定されること
になる。
2) PAGE句に指定した整数が報告書ページの縦方向の領域を確立する方法は,次による。
a) 整数1は,ページ限界である。報告書の各ページ上の最後の行位置を定義する。報告書のどの行も
ページ上のこの位置より下に現れることはない。整数1を指定しないとき,報告書は長さの不定な
単一ページからなる。
b) 整数2は,ページ幅である。報告書の1行に収められる印字列の最大数を定義する。
c) 整数3は,HEADING整数である。報告書頭書き又はページ頭書きの最初の行を印字してもよい位置
を定義する。報告書のどの行もページ上のこの位置より上に現れることはない。
d) 整数4は,FIRST DETAIL整数である。本体集団の行を印字してもよい最初の行位置を定義する。
報告書頭書き(単独で1ページではない場合)又はページ頭書きのいずれも,この行の前までに終
わるように定義しておかなければならない。
e) 整数5は,LAST CONTROL HEADING整数である。制御頭書きの行を印字してもよい最後の行位置
を定義する。
246
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
f)
整数6は,LAST DETAIL整数である。明細報告集団の行を印字してもよい最後の行位置を定義す
る。
g) 整数7は,FOOTING整数である。制御脚書きの行を印字してもよい最後の行位置を定義する。ペー
ジ脚書き又は報告書脚書き(単独で1ページをなさない場合)はいずれも,この行より後から始ま
るように定義しておかなければならない。
3) 整数1を指定してそれ以降の指定のいずれかを省略したとき,関連する整数の既定解釈値は次のとお
りに与えられる。
a) HEADINGを省略したとき,整数3は1とみなされる。
b) FIRST DETAILを省略したとき,整数4は整数3と同じとみなされる。
c) LAST CONTROL HEADINGを省略したとき,整数5は,LAST DETAILの指定があれば整数6と同
じとみなされ,FOOTINGの指定があれば整数7と同じとみなされ,さもなければ,整数1で与え
られるページ限界と同じとみなされる。
d) LAST DETAILを省略したとき,整数6は,FOOTINGの指定があれば整数7と同じとみなされ,さ
もなければ,整数1で与えられるページ限界と同じとみなされる。
e) FOOTINGを省略したとき,整数7は,LAST DETAILの指定があれば整数6と同じとみなされ,さ
もなければ,整数1で与えられるページ限界と同じとみなされる。
4) 報告書頭書き又は報告書脚書きは,単独で1ページをなす場合,HEADING整数3からPAGE LIMIT
整数1までのページ上のどの領域を占めてもよい。単独で1ページをなさない場合は,ページ頭書き
又はページ脚書きとそれぞれ同様の制限が適用される。
5) 整数2を省略すると,ページ幅には値999が想定される。
13.16.38 PICTURE句
PICTURE(像)句は,基本項目の全般的な性質,編集の要件,及び形式検証の様式を示す。
13.16.38.1 一般形式
書き方1(基本仕様)
PICTURE
PIC
IS 文字列1
書き方2(現地特性)
PICTURE
PIC
IS 文字列1 LOCALE [IS 現地特性名1] SIZE IS 整数1
13.16.38.2 構文規則
全ての書き方
1) PICTURE句は,基本項目レベルにだけ指定してもよい。
2) 文字列1は,COBOL文字レパートリ中にある,PICTURE記号として使用する文字の正しい組合せで
構成しなければならず,文字を記号として使用する。
PICTURE句の正しい記号の組合せは,13.16.38.5(順序規則)による。
3) 文字列1中で小文字は全て,対応する大文字表現と等価とする。
4) 文字列1の最大の長さは,50文字とする。
5) PICは,PICTUREの略記とする。
6) 項類が数字又は数字編集のデータ項目では,文字列1が記述する数字けた位置の個数が1〜31の範囲
内になければならない。
247
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
7) 符号なし正整数を括弧の組で囲んで書くと,左括弧の直前にある記号を,この回数だけ連続して繰り
返すことを表す。この整数は定数名で指定してもよく,その場合,定数名の長さではなく整数の値を
文字列1の長さに計上する。
8) 記号","(コンマ)又は記号"."(ピリオド)が文字列1中の最後の記号であるとき,そのPICTURE
句はデータ記述項中の最後の句でなければならず,その直後を分離符の終止符でとめなければならな
い。
書き方1
9) 文字列1には,次に示すいずれかが含まれなければならない。
− "A","N","X","Z","1","9","*" のいずれかが,少なくとも1個。
− "+","-",通貨編集用記号のいずれかが,少なくとも2個。
10) 文字列1には,記号"CR","DB","E","S","V","." がそれぞれ一度だけ現れてもよい。
注記 記号"CR"及び"DB"は2文字からなるが,それぞれ単独の記号とみなされる。
11) DECIMAL-POINT IS COMMA句の指定がある場合,記号コンマは小数点文字となり,記号ピリオドは
けたまとめ文字となる。ピリオドに対する規則がコンマに適用され,コンマに対する規則がピリオド
に適用される。
12) 記号"P"は,文字列1の左端又は右端のけた位置で,一続きの"P"の列としてだけ現れてもよい。
13) 記号"P"と記号"."とは,文字列1中で互いに背反である。
14) 記号"S"を書く場合は,文字列1の最初の記号でなければならない。
15) 記号"V"と幾つかの記号"P"とを同じ文字列1中で用いる場合,記号"V"は最初の記号"P"の直前に書く
か,最後の記号"P"の直後に書くか,いずれかでなければならない。
16) 記号"V"と記号"."とは,文字列1中で互いに背反である。
17) 記号"Z"と記号"*"とは,文字列1中で互いに背反である。
18) 記述項の左辺にBLANK WHEN ZERO句の指定があるとき,文字列1中には記号"S"も記号"*"も指定
してはならない。
19) 符号編集用記号の"+","-","CR"及び"DB"は,文字列1中で互いに背反である。ただし,浮動小数点
編集結果の数字編集データ項目は例外であり,一般規則12) b)による。
注記 浮動小数点編集結果では,仮数部に記号"-"を書いても,指数部には常に記号"+"を書く。
20) 固定挿入では,ある文字列1の中で用いてよい通貨編集用記号及び符号編集用記号は,それぞれ一つ
だけである。
21) 記号"+"又は記号"-"を用いる場合,文字列1の左端又は右端の記号でなければならない。
22) 記号"CR"又は記号"DB"を用いる場合,文字列1の右端の記号でなければならない。
23) 通貨編集用記号を用いる場合,文字列1の左端の又は右端の記号でなければならない。左端の場合は,
直前に記号"+"又は"-"を書いてもよい。右端の場合は,直後に記号"+","-","CR"又は"DB"を書いて
もよい。
注記 この意味では,PICTURE文字列として次の例は正しい。
¥999+
+999¥
+¥999
999¥+
+¥¥99
248
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
¥¥99+
24) 次のうち,二つ以上を文字列1の中に指定してはならない。
− 2個以上の記号 "+" の列
− 2個以上の記号 "-" の列
− 2個以上の通貨編集用記号の列
− 1個以上の記号 "*" の列
− 1個以上の記号 "Z" の列
注記 この意味で例えば,PICTURE文字列として +¥¥¥ は正しいが,+++¥¥¥ は正しくない。
25) 浮動挿入では,通貨編集用記号を浮動挿入記号として用いる場合,繰り返し現れる通貨編集用記号は
全て同じ記号でなければならない。
26) 浮動挿入では,挿入記号の少なくとも一つが小数点位置の左側になければならない。
27) 記述項の左辺にUSAGE NATIONAL句の指定があるとき,文字列1中には記号"A"も"X"も指定しては
ならない。
書き方2
28) 文字列1には,記号"Z"又は"9"が少なくとも一つ含まれなければならない。
29) 文字列1に記号"+","."又は通貨編集用記号が現れてよいのは,それぞれ一度だけとする。
30) 通貨編集用記号及び記号"+"は,小数点の左側にだけ書いてもよい。
31) 現地特性名1は,特殊名段落のLOCALE句で指定しておかなければならない。
13.16.38.3 一般規則
全ての書き方
1) 記述項の左辺の用途がNATIONALである場合,文字位置を表す各記号は,各国文字位置を定義する。
記述項の左辺の用途がDISPLAYである場合,文字位置を表す各記号は,英数字文字位置を定義する。
2) 編集結果の項目中での挿入文字及び置換文字の値は,これらの文字の実行時計算機符号化文字集合中
の値とする。編集中の項目の用途がNATIONALである場合,その値は各国文字表現である。さもな
ければ,その値は英数字文字表現である。
書き方1
3) PICTURE句は,次に示すデータの項類のいずれかになるように,記述項の左辺を定義する。
− 英字
(alphabetic)
− 英数字
(alphanumeric)
− 英数字編集
(alphanumeric-edited)
− ブール
(boolean)
− 各国文字
(national)
− 各国文字編集
(national-edited)
− 数字
(numeric)
− 数字編集
(numeric-edited)
記述項の左辺にBLANK WHEN ZERO句があるとき,その項目の定義は数字編集とする。
4) PICTURE句が定義する基本項目をブール位置又は文字位置の個数で表した大きさは,文字列1の中に
あるブール位置又は文字位置を表す記号の個数で決まる。
5) 英字項目を定義するには,文字列1を1個以上の記号"A"だけで書かなければならない。
6) 英数字項目を定義するには,文字列1を記号"A","X","9"の組合せで書き,次のいずれかを含めなけ
249
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ればならない。
− 記号"X"を少なくとも1個。
− この組のうちの異なる記号を少なくとも2種類。
7) 英数字編集項目を定義するには,文字列1に次の両方を含めなければならない。
− 記号"A"又は記号"X"を少なくとも1個。
− 記号の組"B","0","/"のいずれかを少なくとも1個。
8) ブール項目を定義するには,文字列1を1個以上の記号"1"だけで書かなければならない。
9) 各国文字項目を定義するには,文字列1を1個以上の記号"N"だけで書かなければならない。
10) 各国文字編集項目を定義するには,文字列1が次の両方を含まなければならない。
− 記号"N"を少なくとも1個。
− 記号の組"B","0","/"のいずれかを少なくとも1個。
11) 数字項目を定義するには,文字列1は次による。
− 記号"9"を少なくとも1個含めなければならない。
− 記号の組"P","S","V"の組合せが含まれてもよい。
12) 数字編集項目を定義するには,次のいずれかを指定しなければならない。
a) 固定小数点編集結果のためには,文字列1に次のいずれかを含めなければならない。
− 記号"Z"を少なくとも1個。
− 記号"*"を少なくとも1個。
− 記号の組"+","-",通貨編集用記号のうち同じ記号を少なくとも2個。
− 記号"9"を少なくとも1個,及び記号 "B","CR","DB","0","/",",",".","+","‒",通貨
編集用記号のうちのいずれかを少なくとも1個。
b) 浮動小数点編集結果のためには,文字列1を二つの部分から構成し,その境目には隙間を空けずに
記号"E"を書かなければならない。第一の部分は仮数部(significand)を表し,第二の部分は指数部
(exponent)を表す。
仮数部は,数字項目に又は固定小数点編集結果の数字編集項目に対する正しい文字列でなければ
ならない。仮数部に対して浮動挿入編集もゼロ抑制編集も指定してはならない。
指数部は,"+9","+99","+999" 又は "+9(n)"(ここでn = 1,2,3)でなければならない。
13) 文字列1の中で用いる記号の意味は,次による。
A
記号"A"は,それぞれ計算機英数字文字集合の文字が入るはずの文字位置1個を表す。
記号"A"は,それぞれ項目の大きさに計上する。
表される文字は,図形文字であっても非図形文字であってもよい。
B
記号"B"は,それぞれ編集処理中に空白文字を挿入する1個の文字位置を表す。
記号"B"は,それぞれ項目の大きさに計上する。
E
記号"E"は,編集処理中に"E"が挿入される文字位置を表す。
記号"E"は,項目の大きさに計上する。
記号"E"を用いて,浮動小数点数字編集項目の仮数部と指数部を分ける。
N
記号"N"は,それぞれ計算機各国文字集合の文字が入る1個の各国文字位置を表す。
記号"N"は,それぞれ項目の大きさに計上する。
P
記号"P"は,データ項目中に現れる数字列の中に小数点がない場合の想定小数点位置を指定する。
記号"P"は,項目の大きさには計上しないが,数字けた位置の最大個数には計上する。
250
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
記号"P"が文字列1の左端にある場合はその左側に,右端にある場合はその右側に,想定小数点が
あるものとみなす。
PICTURE文字列中に記号"P"があるデータ項目を参照する特定処理においては,そのデータ項目
の実際の値ではなくそのデータ項目の代数値を用いる。この代数値は,規定の位置に小数点を想定
し,記号"P"で指定した位置にゼロを想定した値とする。値のけた数は,PICTURE文字列によって
表されるけた位置の数とする。
そのような代数値を用いる処理とは,次のとおりとする。
a) 送出し側作用対象が数字でなければならない処理。
b) 送出し側作用対象が数字であり,そのPICTURE文字列中に1個以上の記号"P"が含まれる場合
の,基本項目転記処理。
c) 送出し側作用対象が数字編集で,そのPICTURE文字列中に1個以上の記号"P"が含まれ,更に
受取り側作用対象が数字又は数字編集である場合の,転記処理。
d) 両方の比較対象が数字である場合の,比較処理。
これ以外の処理では,記号"P"で規定するけた位置を無視して,作用対象の大きさに計上しない。
S
記号"S"は,演算符号の存在を示すが,演算符号の表現方式を示すものではなく,必ずしも位置を示
すものでもない。用途DISPLAY及びNATIONALに対して,記号"S"を項目の大きさに計上するの
は,記述項の左辺にSEPARATE指定付きのSIGN句を指定した場合だけとする。その他の数字用途
に対する"S"の効果は,USAGE句の規則による。
V
記号"V"は,けた合わせ用の想定小数点の位置を示す。
記号"V"は,項目の大きさには計上しない。
最右端けた位置の右側に小数点が想定される場合,記号"V"は書いても書かなくても意味は同じであ
る。
X
記号"X"は,それぞれ計算機英数字文字集合の文字が入る文字位置1個を表す。
記号"X"は,それぞれ項目の大きさに計上する。
表される文字は,図形文字であっても非図形文字であってもよい。
Z
記号"Z"は,それぞれ先行数字位置を表す。この文字位置には編集処理中に,0〜9の範囲の数字が
入るか,又は内容が先行ゼロである場合に空白が入る。
記号"Z"は,それぞれ項目の大きさに計上する。
0
記号"0"(ゼロ)は,それぞれ編集処理中に文字"0"を挿入する1個の文字位置を表す。
記号"0"は,それぞれ項目の大きさに計上する。
1
記号"1"は,それぞれブール文字が入るはずの1個のブール位置を表す。
記号"1"は,それぞれ項目の大きさに計上する。
9
記号"9"は,それぞれ項目の値の10進数字けた位置1個を表す。用途DISPLAY及びNATIONALに
対しては,"9"はそれぞれ0〜9の範囲の数字が入る文字位置1個を表す。数字には演算符号を重ね
合わせることもある。記号"9"は,それぞれ項目の大きさに計上する。その他の数字用途に対する"9"
の個数の効果は,USAGE句の規則による。
/
記号"/"(斜線)は,それぞれ編集処理中に文字"/"を挿入する1個の文字位置を表す。
記号"/"は,それぞれ項目の大きさに計上する。
,
記号","(コンマ)は,それぞれ編集処理中に文字","を挿入する1個の文字位置を表す。
記号","は,それぞれ項目の大きさに計上する。
251
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
.
記号"."(ピリオド)は,編集処理中に文字"."を挿入する1個の文字位置を表す。
記号"."は,項目の大きさに計上する。さらに,記号"."は,けた合わせ用の小数点位置をも表す。
+
- CR DB これらの記号は,編集処理中に符号編集用記号が入る文字位置を表す。これらの記号
に用いる文字は,記述される項目の大きさに計上する。
*
記号"*"(星印)は,それぞれ先行数字位置を表す。この文字位置には編集処理中に,0〜9の範囲
の数字が入るか,又は内容が先行ゼロである場合に星印が入る。
記号"*"は,それぞれ項目の大きさに計上する。
通貨 通貨編集用記号は,編集処理中に通貨文字列が入る1個以上の文字位置を表す。
文字列1中で通貨編集用記号を表すには,通貨記号か,又は特殊名段落のCURRENCY SIGN句に指
定した通貨編集用記号を用いる。
通貨編集用記号のうちで最初に現れるものに対しては,通貨文字列の文字数を,項目の大きさに
加算する。2番目以降に現れるものに対しては,それぞれ1を項目の大きさに加算する。
14) PICTURE句は,この記述項の左辺を直接又は間接に参照するVALIDATE文の実行中の形式検証段階
において,有効になる。
作用対象の用途がDISPLAY又はNATIONALでない場合に,文字列1はUSAGE句と組み合わせて
用いられ,作用対象の内容が文字列1に適合するか否かの検査確認が,該当すれば行われる。適合性
の規則は,実装者定義とする。
作用対象の用途がBINARY,COMPUTATIONAL又はPACKED-DECIMALであって,文字列1から
決まる許容値の範囲が,その項目を表現するためにハードウェアが使用するものよりも小である場合,
ハードウェア割付けのうち未使用部分は内容がゼロ値だけであるか否かの検査確認を行う。
用途がDISPLAY又はNATIONALの場合,文字列1中の各文字の効果は,次による。
A
記号"A"が表す文字位置はそれぞれ,内容が英字の文字か否かが検査確認される。英字に対する字類
分けは,ALPHABETIC字類条件の規則に従って決まる[8.8.4.1.3(字類条件)参照]。
B
記号"B"が表す文字位置はそれぞれ,内容が次のいずれかか否かが検査確認される。
− 記号"B"が浮動挿入編集の一部でもゼロ抑制編集の一部でもなければ,文字の空白。
− さもなければ,文字の空白か,又は左側に有意数字がないときは,対応する浮動挿入文字又は
置換文字。
E
記号"E"が表す文字位置は,内容が文字"E"か否かが検査確認される。
N
記号"N"が表す文字位置はそれぞれ,内容が計算機各国文字集合の文字か否かが検査確認される。
S
記号"S"のあるデータ項目は,演算符号があるか否かが検査確認される。
− 記述項の左辺にSIGN句の指定がないとき,演算符号の位置及び表現形式は,実装者の規定に
従って検査確認される。
− 記述項の左辺にSEPARATE指定なしのSIGN句の指定があるとき,演算符号の位置(先頭のけ
た位置又は末尾のけた位置)及び表現形式は,実装者の規定に従って検査確認される。
− 記述項の左辺にSEPARATE指定付きのSIGN句の指定があるとき,データ項目中の対応する位
置の内容が文字の"+"又は"-"か否かが検査確認される。
Z
記号"Z"が表す文字位置はそれぞれ,内容が次のいずれかか否かが検査確認される。
− 記号"Z"を指定した箇所が小数点位置の左側であり,該当文字位置の内容が先行ゼロであれば,
文字の空白,
252
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
− 記号"Z"を指定した箇所が小数点位置より後の最右端けた位置で,データ項目の内容が先行ゼロ
であれば,文字の空白,
− さもなければ,0〜9の範囲内の数字。
0
記号"0"(ゼロ)が表す文字位置はそれぞれ,内容が次のいずれかか否かが検査確認される。
− 記号"0"が浮動挿入編集の一部又はゼロ抑制編集の一部でなければ,文字のゼロ。
− さもなければ,文字のゼロ。左側に有意数字がなければ,対応する浮動挿入文字又は置換文字。
1
記号"1"が表す文字位置はそれぞれ,内容がブール文字か否かが検査確認される。
9
記号"9"が表す文字位置はそれぞれ,内容が0〜9の範囲内の数字か否か,演算符号が重ね合わされ
る可能性も含めて検査確認される。
/
記号"/"(斜線)が表す文字位置はそれぞれ,内容が次のいずれかか否かが検査確認される。
− 記号"/"が浮動挿入編集の一部又はゼロ抑制編集の一部でなければ,文字の斜線。
− さもなければ,文字の斜線。左側に有意数字がなければ,対応する浮動挿入文字又は置換文字。
,
記号","(コンマ)が表す文字位置はそれぞれ,内容が次のいずれかか否かが検査確認される。
− 記号","が浮動挿入編集の一部又はゼロ抑制編集の一部でなければ,文字のコンマ。
− さもなければ,文字コンマ。左側に有意数字がなければ,対応する浮動挿入文字又は置換文字。
.
記号"."(ピリオド)が表す文字位置は,内容が文字のピリオドか否かが検査確認される。
+
- CR DB これらの記号が表す文字位置は,内容が正しい符号であるか否かが,次に従って検査
確認される。
− 記号"+"又は"-"を固定挿入記号として用いているとき,対応する文字位置は,内容が正しい符
号文字か否かが検査確認される[表9(固定挿入編集の結果)参照]。
− 記号"+"又は"-"を浮動挿入記号として用いているとき,対応する文字位置は,内容が正しい文
字か否かが,符号文字の正しさも含めて,検査確認される[13.16.38.4(編集規則)6) 参照]。
− 記号"CR"及び"DB"に対応する文字位置列は,内容が正しい符号文字か否かが検査確認される[表
9(固定挿入編集の結果)参照]。
*
記号"*"が表す文字位置はそれぞれ,内容が次のいずれかか否かが検査確認される。
− 記号"*"を指定した箇所が小数点位置の左側であり,該当文字位置の内容が先行ゼロであれば,
文字の星印,
− 記号"*"を指定した箇所が小数点位置より後の最右端けた位置で,データ項目の内容が先行ゼロ
であれば,文字の星印,
− さもなければ,0〜9の範囲内の数字。
通貨 通貨編集用記号に対応する文字位置列は,次のとおりに検査確認される。
− 固定挿入記号に用いているとき,文字位置の内容が通貨文字列か否かが検査確認される。
− 浮動挿入記号に用いているとき,文字位置の内容が正しい文字列であるか否かが,符号文字
も含めて検査確認される[13.16.38.4(編集規則)6) 参照]。
これら以外の文字は全て,形式検証では効果をもたない。
書き方2
15) 書き方2のPICTURE句は,固定小数点数字編集になるように,項目を定義する。
16) この項目の文字位置の個数は,整数1によって規定される。
17) 文字列1の中で用いる記号の意味は,次による。
Z
記号"Z"はそれぞれ先行数字位置を表し,この文字位置は編集処理中に,0〜9の範囲の数字が入る
253
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
か,又は内容が先行ゼロである場合には空白が入る。
9
記号"9"はそれぞれ,0〜9の範囲の数字が入る1個のけた位置を表す。
.
記号"."(ピリオド)は,編集処理中に現地特性から取った小数点文字を挿入する1個の文字位置を
表す。
さらに,記号"."は,けた合せ用の小数点位置をも表す。
+
記号"+"は,この項目が現地特性の規定に従って符号付けされることを示す。記号"+"がなければ,
この編集項目は符号なしとする。
通貨 通貨編集用記号は,この項目が,現地特性の規定に従った通貨文字列を含むことを示す。
18) PICTURE句は,この記述項の左辺を直接又は間接に参照するVALIDATE文の実行中の形式検証段階
において,有効になる。検証の実行は,文字の字類分け及び通貨記号の表現に関して現地特性による。
13.16.38.4 編集規則
書き方1
1) PICTURE句で編集を行う方法は,挿入編集とゼロ抑制編集の二通りとする。
挿入編集(insertion editing)は,次の4種類とする。
− 単純挿入
(simple insertion)
− 特殊挿入
(special insertion)
− 固定挿入
(fixed insertion)
− 浮動挿入
(floating insertion)
ゼロ抑制編集(suppression and replacement editing)は,次の2種類とする。
− 空白によるゼロ抑制 (zero suppression with replacement with spaces)
− 星印によるゼロ抑制 (zero suppression with replacement with asterisks)
2) 項目に施してもよい編集の種類は,その項目の属する項類に依存する。表8(項類と編集の種類)は,
ある項類に施してもよい編集の種類を規定する。
表8−項類と編集の種類
項類
編集の種類
英字
なし
英数字
なし
ブール
なし
各国文字
なし
数字
なし
英数字編集
"B","0","/" の単純挿入
各国文字編集
"B","0","/" の単純挿入
数字編集(固定小数点編集結果)
全て
数字編集(浮動小数点編集結果)
仮数部に対しては,単純挿入,特殊挿入,固定挿入
指数部に対しては,なし
3) 単純挿入編集
記号"B","0","/"及び","(コンマ)を,単純挿入編集用記号に用いる。
単純挿入編集の結果として,関連する記号が文字列1中に占めるのと同じ文字位置を,挿入文字が
編集項目中で占めることになる。
254
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4) 特殊挿入編集
記号"."(ピリオド)を,特殊挿入編集用記号に用いる。
特殊挿入編集の結果として,記号"."が文字列1中に占めるのと同じ文字位置を,ピリオド文字が編
集項目中で占めることになる。
5) 固定挿入編集
通貨編集用記号並びに符号編集用記号"+","-","CR"及び"DB"を,固定挿入編集用記号に用いる。
固定挿入編集の結果として,関連する記号が文字列1中に占めるのと同じ文字位置(列)を,挿入
文字(列)が編集項目中で占めることになる。
符号編集用記号の作り出す結果は,表9(固定挿入編集の結果)に示すとおり,データ項目の値に
従って異なる。
表9−固定挿入編集の結果
編集用記号
結果の値
正又はゼロ
負
+
+
-
-
空白
-
CR
空白2個
CR
DB
空白2個
DB
大文字の"CR"及び"DB"を,挿入記号"CR"及び"DB"に対する挿入文字とする。
6) 浮動挿入編集
通貨編集用記号並びに符号編集用記号"+"及び"-"を,浮動挿入記号に用いる。
浮動挿入編集は,同じ浮動挿入編集用記号の2個以上の連続を指定して示す。この記号列の途中又
はそのすぐ右側に書いた単純挿入記号は,この記号列の一部とする。
浮動挿入記号列の最左端の記号は,データ項目中で浮動する記号の左側の限界を示す。浮動挿入記
号列の最右端の記号は,データ項目中で浮動する記号の右側の限界を示す。
2番目の浮動記号は,データ項目中で数字データが収まり得る左側の限界を示す。編集処理中に,
この位置とここから右側の全ての挿入記号は,ゼロでない数字で置き換わることがある。
切捨てが起こるとき,編集に用いるデータの値は,切捨て後の値とする[14.5.8(データ項目内での
データのけたよせ)参照]。
注記 不用意なデータの切捨てを避けるために,文字列1の大きさを少なくとも,送出し側項目中
の文字数に,項目中の浮動でない挿入記号の個数と,1とを加えた値にしておくのが望まし
い。
浮動挿入編集を指定する方法は,次の二通りとする。
a) その一つは,小数点の左側にある先行数字位置の一部又は全部を同じ挿入記号で表す方法である。
結果として,次のうちでいずれか最初に現れたものの直前の位置に,挿入文字1個が挿入される。
− この項目中のゼロでない最初の数字
− 浮動挿入編集指定のない最初の文字位置
− 小数点の位置
挿入文字よりも前にある,あらゆる文字位置は空白で置換される。
255
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
b) もう一つは,数字位置の全部を同じ挿入記号で表す方法である。結果はデータの値によって異なる。
値がゼロでなければ,挿入記号が小数点の左側にだけある場合と同様になる。値がゼロであれば,
全ての文字位置が空白で置換される。
浮動符号編集用記号"+"及び"-"が作り出す文字は,表10(浮動挿入編集の結果)に示すとおり,デ
ータ項目の値によって異なる。
表10−浮動挿入編集の結果
結果
PICTURE文字列中の
編集用記号
データ項目が
正又はゼロ
データ項目が
負
+
+
-
-
空白
-
7) ゼロ抑制編集
記号"Z"及び"*"を,ゼロ抑制編集用の記号に用いる。記号"Z"を用いるとき,置換文字は空白とする。
記号"*"を用いるとき,置換文字は星印とする。
ゼロ抑制編集は,同じゼロ抑制文字の1個以上の連続を指定して示す。この記号列の途中又はその
すぐ右側に書いた単純挿入記号は,この記号列の一部になる。
ゼロ抑制編集を指定する方法は,次の二通りとする。
a) その一つは,小数点の左側にある先行数字位置の一部又は全部をゼロ抑制記号で表す方法である。
結果として,次のうちで,いずれか最初に現れたものの前にある,あらゆる文字位置に,対応する
置換文字が設定される。
− この項目中のゼロでない最初の数字
− ゼロ抑制編集指定のない最初の文字位置
− 小数点の位置
b) もう一つは,数字位置の全てをゼロ抑制記号で表す方法である。その結果はデータの値によって異
なる。値がゼロでなければ,ゼロ抑制が小数点の左側にだけある場合と同様になる。値がゼロでゼ
ロ抑制記号が"Z"であれば,項目中の全ての文字位置が空白になる。値がゼロでゼロ抑制記号が"*"
であれば,項目中の全ての文字位置が星印になる。ただし,小数点文字の指定がある場合,それは
そのままこの項目中に現れる。
8) 浮動小数点編集項目のゼロ値
浮動小数点編集項目に編集する値がゼロのとき,編集後に仮数部のけた位置の全て及び指数部のけ
た位置の全てはゼロになり,仮数部に符号があれば正となり,指数部の符号は正となる。
書き方2
9) 現地特性カテゴリLC̲MONETARYを,編集に用いる。通貨文字列に対する位置,長さ,文字(列)
は,その現地特性カテゴリから決まる。
10) BLANK WHEN ZERO句は,現地特性編集よりも優先する。
11) 現地特性名1の指定がある場合,項目の編集及び逆編集に用いる現地特性は,特殊名段落のLOCALE
句において現地特性名1と関連付けた現地特性になる。さもなければ,現在有効現地特性を用いる。
注記 同じデータ項目の編集と逆編集との間に現地特性を切り換えると,予期せぬ動作が生じる可
256
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
能性がある。逆編集に用いる現地特性が編集に用いる現地特性と同じであることを保証する
のは,プログラマの責任である。
12) 小数点文字,けたまとめ文字及び一組にまとめるけた数は,現地特性カテゴリLC̲MONETARYから
決まる。
13) 記号"+"の指定がある場合,正数値と負数値の表現方法は,現地特性から決まる。
14) 編集処理中にデータは,仮想データ項目内において,小数点位置でけた合わせされ,左端に又は右端
にゼロ詰め又は切捨てが行われ,現地特性の指定に従ってけたまとめと区切り記号の処理が行われる。
この仮想データ項目が編集中のデータ項目へ転記される。次の規則を適用する。
a) データ項目の大きさが仮想データ項目より大きいときは,データが右詰めされて,左側の文字位置
に空白が詰められる。
b) データ項目の大きさが仮想データ項目より小さいときは,仮想データ項目の最左端文字位置が切り
捨てられる。切り捨てられた文字がゼロでも,ゼロ抑制による空白でもないとき,EC-LOCALE-SIZE
例外状態になる。
15) ゼロ抑制編集
記号"Z"を,ゼロ抑制編集用の記号に用いる。置換文字は空白とする。
ゼロ抑制編集は,1個以上の記号"Z"の連続を指定して示す。
ゼロ抑制編集を指定する方法は,次の二通りとする。
a) その一つは,小数点の左側にある先行数字位置の一部又は全部を記号"Z"で表す方法である。結果と
して,次のうちでいずれか最初に現れたものの前にある,あらゆる文字位置に,空白文字が設定さ
れる。
− この項目中のゼロでない最初の数字
− ゼロ抑制編集指定のない最初の文字位置
− 小数点の位置
b) もう一つは,数字位置の全てを記号"Z"で表す方法である。結果はデータの値によって異なる。値が
ゼロでなければ,ゼロ抑制が小数点の左側にだけある場合と同様になる。値がゼロであれば,項目
中の全ての文字位置が空白になる。
13.16.38.5 順序規則
ここに示す表の中に○印がある場合であっても,更なる構文規則又は一般規則を適用して制約を課する
ことがある。
書き方1
書き方1のPICTURE文字列中における記号の順序規則を,表11(書き方1のPICTURE記号の順序規
則)に示す。表中の交差位置にある○印は,列の上端に示した記号を,行の左端に示した記号の前に,必
ずしも直前とは限らないが,書いてもよいことを表す。“通貨”は通貨編集用記号を表す。
固定挿入記号の場合の通貨編集用記号は,表の中で2回ずつ示してある。左側の列及び上側の行は,記
号を文字列1の最初かその次に書く場合とし,右側の列及び下側の行は,文字列1の最後かその前に書く
場合とする。
記号"+"を1回単独で示したものは,浮動小数点数字編集項目の文字列1の指数部で用いる場合とする。
浮動でない挿入記号の場合の記号"+"及び"-"は,表の中で2回ずつ示してある。左側の列及び上側の行
は,この記号を文字列1の最初に書く場合とし,右側の列及び下側の行は,文字列1の最後に書く場合と
する。
257
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
記号"P",浮動挿入記号の場合の通貨編集用記号,ゼロ抑制記号の"Z"及び"*"の組,並びに浮動挿入記号
"+"及び"-"の組は,表の中で2回ずつ示してある。左側の列及び上側の行は,記号を小数点の左側に書く
場合とし,右側の列及び下側の行は,小数点の右側に書く場合とする。
この表での説明上,浮動小数点編集結果の数字編集項目の文字列1は,二つの別々な文字列とみなす。
第1の部分は最初の記号から記号"E"まで,第2の部分は記号"E"から最後の記号までとする。記号"E"の前
にある記号は,記号"E"の後にある記号の妥当性に関して効果をもたない。
DECIMAL-POINT IS COMMA句の指定がある場合は,記号のコンマとピリオドに対する順序規則が入れ
替わる。
表11−書き方1のPICTURE記号の順序規則
先行記号
単純・特殊・固定挿入記号
ゼロ抑制・浮動挿入
それ以外の記号
後続
記号
B
0
/
, . + +
‒
+
‒
CR
DB
通
貨
通
貨
Z
*
Z
*
+
‒
+
‒
通
貨
通
貨
9 A
X
S V P P 1 N E
単
純・
特
殊・
固
定
挿
入
記
号
B
0
/
○
○ ○
○
○
○ ○ ○ ○ ○ ○ ○ ○
○
○
○
,
○
○ ○
○
○
○ ○ ○ ○ ○ ○ ○
○
○
.
○
○
○
○
○
○
○
○
+
○
+
‒
+
‒
○
○ ○
○ ○ ○ ○
○ ○ ○
○ ○ ○
CR
DB
○
○ ○
○ ○ ○ ○
○ ○ ○
○ ○ ○
通貨
○
通貨
○
○ ○
○
○ ○
○
○ ○ ○
ゼ
ロ
抑
制
・
浮
動
挿
入
記
号
Z
*
○
○
○
○
○
Z
*
○
○ ○
○
○
○ ○
○
○
+
‒
○
○
○
○
+
‒
○
○ ○
○
○ ○
○
通貨
○
○
○
○
通貨
○
○ ○
○
○ ○
○
そ
れ
以
外
の
記
号
9
○
○ ○ ○ ○
○
○
○
○
○ ○ ○ ○
○
○
A
X
○
○ ○
S
V
○
○
○
○
○
○
○
○
○
○
P
○
○
○
○
○
○
○
○
○
○
P
○
○
○ ○
○
1
○
N
○
○
E
○
○ ○
○ ○
○
258
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
書き方2
書き方2のPICTURE文字列中における記号の順序規則を,表12(書き方2のPICTURE記号の順序規
則)に示す。表中の交差位置にある○印は,列の上端に示した記号を,行の左端に示した記号の前に,必
ずしも直前とは限らないが,書いてもよいことを表す。“通貨”は通貨編集用記号を表す。
表12−書き方2のPICTURE記号の順序規則
先行記号
後続記号
9
通貨
.
+
Z
9
○
○
○
○
○
通貨
○
.
○
○
○
○
+
Z
○
○
○
○
13.16.39 PRESENT WHEN句
1) PRESENT WHEN(場合に存在)句は,報告書節の記述項が通常処理される条件を指定する。
2) PRESENT WHEN(場合に存在)句は,VALIDATE文によるデータ記述項の条件選択も可能にする。
13.16.39.1 一般形式
書き方1(報告書)
PRESENT WHEN 条件1
書き方2(検証)
PRESENT WHEN 条件2
13.16.39.2 構文規則
書き方2
1) PRESENT WHEN句は,強い型付けの集団項目又はその従属項目に指定してはならない。
13.16.39.3 一般規則
書き方1,書き方2
1) PRESENT WHEN句を報告集団記述項に指定した場合は,書き方1に対する一般規則を適用する。
さもなければ,書き方2に対する一般規則を適用する。
書き方1
2) 報告集団内にPRESENT WHEN句のある記述項があるとき,各々のPRESENT WHEN句の条件1は,
その報告集団に対するLINE句の処理の前に評価される。PRESENT WHEN句の効果は,次のとおり,
条件1の値によって異なる。
a) 条件1が真の場合,対応するデータ項目は存在すると判定され,PRESENT WHEN句は報告集団の
この実体の処理には影響を及ぼさない。
b) 条件1が偽の場合,対応するデータ項目は存在しない(不在)と判定され,この処理上の効果は,
報告集団の記述からこの記述項が省略されたのと同じになる。データ記述項が基本項目でなければ,
これに従属するデータ項目も全て不在と判定され,それら従属データ項目にPRESENT WHEN句が
あっても考慮されない。さらに,この記述項が01レベル記述項である場合,処理上の効果は,報告
集団記述全体が省略されたのと同じになる。
3) 報告集団記述内部において,LINE句及びCOLUMN句の配置の妥当性を評価する場合は,PRESENT
259
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
WHEN句が考慮される。この場合に報告集団の印字方法と合計カウンタの効果は,次による。
a) 報告集団の先頭の行の位置付け規則では,不在データ項目と関連するLINE句の指定が報告集団の
先頭にあっても,そのLINE句は無視される[13.16.33(LINE句)参照]。
b) 報告集団中で絶対指定の行の重なり合いを禁止する規則は,不在データ項目と関連する行には適用
されない[13.16.33(LINE句)参照]。
c) 報告集団中の後方にある相対指定の行が報告集団の下限を超えるのを防止する規則は,不在データ
項目と関連する行には適用されない[13.16.33(LINE句)参照]。
d) 本体集団に対するページ内収納検査では,不在データ項目に関連する全ての行は考慮外とされる
[13.16.33(LINE句)参照]。
e) 報告書行中で絶対指定の印字可能項目の重なり合いを禁止する規則は,不在データ項目と関連する
項目には適用されない[13.16.14(COLUMN句)一般規則3) 参照]。
f)
報告書行中の後方にある相対指定の印字可能項目がページ幅を超えるのを防止する規則は,不在デ
ータ項目と関連する項目には適用されない[13.16.14(COLUMN句)参照]。
g) SUM句をもつ記述項が不在データ項目と関連していれば,合計カウンタは印字されず,ゼロへの破
算も行われない。
書き方2
4) PRESENT WHEN句は,この記述項の左辺を直接又は間接に参照しているVALIDATE文の実行中にだ
け効力をもつ。
5) 条件2は,形式検証段階の実行開始時点で評価され,その結果は次のいずれかになる。
a) 条件2が真の場合,記述項の左辺であるデータ項目は,このVALIDATE文の実行中の,これ以降も
処理される。
b) 条件2が偽の場合,記述項の左辺であるデータ項目及びそれに従属する全てのデータ項目は,この
VALIDATE文の実行中の,これ以降の段階では処理されない。
注記 条件2が偽の場合,データ項目に再定義がない限りデータ項目の内容を検査しない。
6) 条件2で参照されるデータ項目は,同じVALIDATE文が参照しているデータ項目の記述項中に後で現
れるDESTINATION句の作用対象であったり,その作用対象と領域を共用していたりしてはならない。
13.16.40 PROPERTY句
PROPERTY(プロパティ)句は,このデータ項目がオブジェクトのプロパティであって,GETメソッド
及び/又はSETメソッドがそれに応じて生成されることを示す。
13.16.40.1 一般形式
PROPERTY
WITH NO
GET
SET [IS FINAL]
13.16.40.2 構文規則
1) PROPERTY句を指定してもよいのは,ファクトリ定義又はインスタンス定義の作業場所節中だけとす
る。
2) PROPERTY句は,OCCURS句の制御下にあるデータ項目に指定してはならない。
3) PROPERTY句は,一意参照のための修飾を必要としない名前の基本項目にだけ指定してもよい。
4) 記述項の左辺のデータ名は,上位クラス中で定義されたプロパティ名と同じであってはならない
注記 上位クラスにおけるプロパティ名の定義は,PROPERTY指定で定義した一つのメソッド又は
一組のメソッドによることも,PROPERTY句で記述したデータ記述項によることもある。
260
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
13.16.40.3 一般規則
1) GET指定を書かない場合,PROPERTY句を含んでいるオブジェクトに対してメソッドが定義される。
この記述項の左辺の字類が指標,オブジェクト又はポインタである場合に,メソッドの暗黙の定義
は次による。
METHOD-ID. GET PROPERTY data-name.
DATA DIVISION.
LINKAGE SECTION.
01 LS-data-name データ記述.
PROCEDURE DIVISION RETURNING LS-data-name.
Par-name.
SET LS-data-name TO data-name
EXIT METHOD.
END METHOD.
この記述項の左辺の項類が英数字編集,各国文字編集又は数字編集である場合,メソッドの暗黙の
定義は次による。
METHOD-ID. GET PROPERTY data-name.
DATA DIVISION.
LINKAGE SECTION.
01 LS-data-name データ記述.
PROCEDURE DIVISION RETURNING LS-data-name.
par-name.
MOVE data-name TO LS-data-name(1:)
EXIT METHOD.
END METHOD.
注記 記述項の左辺が編集のとき,受取り側項目それ自体を丸ごと部分参照することで,データに
編集規則が再度適用されることを防止する。
さもなければ,メソッドの暗黙の定義は次による。
METHOD-ID. GET PROPERTY data-name.
DATA DIVISION.
LINKAGE SECTION.
01 LS-data-name データ記述.
PROCEDURE DIVISION RETURNING LS-data-name.
par-name.
MOVE data-name TO LS-data-name
EXIT METHOD.
END METHOD.
ここでLS-data-nameは,次の句を除き,記述項の左辺と同じデータ記述をもつ。
− PROPERTY句
− VALUE句
− 記述項の左辺の記述中にあるREDEFINES句
261
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
2) SET指定を書かない場合,PROPERTY句を含んでいるオブジェクトに対してメソッドが定義される。
この記述項の左辺の字類が指標,オブジェクト又はポインタである場合に,メソッドの暗黙の定義
は次による。
METHOD-ID. SET PROPERTY data-name.
DATA DIVISION.
LINKAGE SECTION.
01 LS-data-name データ記述.
PROCEDURE DIVISION USING LS-data-name.
Par-name.
SET data-name TO LS-data-name
EXIT METHOD.
END METHOD.
この記述項の左辺の項類が英数字編集,各国文字編集又は数字編集である場合,メソッドの暗黙の
定義は次による。
METHOD-ID. SET PROPERTY data-name.
DATA DIVISION.
LINKAGE SECTION.
01 LS-data-name データ記述.
PROCEDURE DIVISION USING LS-data-name.
par-name.
MOVE LS-data-name TO data-name(1:)
EXIT METHOD.
END METHOD.
注記 記述項の左辺が編集のとき,受取り側項目それ自体を丸ごと部分参照することで,データ
に編集規則が再度適用されることを防止する。
さもなければ,メソッドの暗黙の定義は次による。
METHOD-ID. SET PROPERTY data-name.
DATA DIVISION.
LINKAGE SECTION.
01 LS-data-name データ記述.
PROCEDURE DIVISION USING LS-data-name.
par-name.
MOVE LS-data-name TO data-name
EXIT METHOD.
END METHOD.
ここでLS-data-nameは,次の句を除き,記述項の左辺と同じデータ記述をもつ。
− PROPERTY句
− VALUE句
− 記述項の左辺の記述中にあるREDEFINES句
3) FINAL指定を書いたとき,PROPERTY句によって暗黙に生成されるメソッド定義のメソッド名段落に
262
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
FINAL指定が含まれる。
13.16.41 RECORD句
RECORD(レコードの大きさ)句は,固定長レコードのバイト数又は可変長レコードのバイト数の範囲
を規定する。バイト数が可変であるとき,この句はバイト数の最小値及び最大値を規定する。
13.16.41.1 一般形式
書き方1(固定長)
RECORD CONTAINS 整数1 CHARACTERS
書き方2(可変長)
RECORD IS VARYING IN SIZE [[FROM 整数2] [TO 整数3] CHARACTERS]
[DEPENDING ON データ名1]
書き方3(固定長又は可変長)
RECORD CONTAINS 整数4 TO 整数5 CHARACTERS
13.16.41.2 構文規則
全ての書き方
1) 報告書ファイルでないファイルに対するファイル記述項にレコード記述項の指定が一つもない場合,
RECORD句を必ず指定しなければならない。
書き方1
2) このファイルに対するレコード記述項が,整数1を超えるバイト数を指定してはならない。
書き方2
3) このファイルに対するレコード記述が,整数2未満の個数のバイトをもつレコードを記述してはなら
ない。また,整数3を超える個数のバイトをもつレコードを記述してはならない。
4) 整数3は,整数2より大きくなければならない。
5) データ名1は,符号なし整数の基本項目を,作業場所節,局所記憶節又は連絡節中で記述しなければ
ならない。
6) 整数2は,ゼロより大きいか又は等しくなければならない。
書き方3
7) 整数4は,ゼロより大きいか又は等しくなければならない。
8) 整数5は,整数4より大きくなければならない。
13.16.41.3 一般規則
全ての書き方
1) RECORD句の各々の整数はレコードの大きさを,バイト数で表す。
2) 暗黙の又は明示的なRECORD句は,レコード領域内でのレコードの大きさを規定する。物理的な記
憶媒体上でのレコードの大きさは,操作環境にとって必要となる制御情報のために,異なっていても
よい。ソース要素中において物理的な記憶媒体上のレコードの大きさに影響を及ぼす可能性のある
RECORD句以外の要因は,CODE-SET句及びFORMAT句である。利用者が記憶媒体上のレコードの
大きさを導出するのに必要な計算方法は,実装者定義とする。
3) 各レコードの大きさは,論理レコードを格納するのに必要なバイト数で指定され,論理レコード内で
その項目を表現するのに用いられる文字の種類には関係しない。レコードの大きさは,そのレコード
に従属する,全ての固定長基本項目中のバイト数の合計に,全ての可変長データ項目中のバイト数の
最大値の合計を,加算して決まる。暗黙のFILLER位置がある場合,この大きさに含められる。
263
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4) 論理レコード中の最終データ項目の終端がバイト境界ではないとき,レコードの大きさにはそのデー
タ項目の終端にあるバイトが丸ごと含まれる。終端のバイトの残りを補完する暗黙FILLERビット位
置の値は規定されない。
5) RECORD句の指定がない場合,書き方1又は書き方2のRECORD句が暗黙に想定される。この暗黙
のRECORD句は実装者定義であって,次に示す性質をもつ。
a) 書き方1を想定する場合,整数1はこのファイル記述項中の最大レコード記述項の大きさである。
b) 書き方2を想定する場合,整数2はこのファイル記述項中の最小レコード記述項の大きさであり,
整数3はこのファイル記述項中の最大レコード記述項の大きさである。DEPENDING指定はない。
書き方1
6) 書き方1は,固定長レコードを指定するために用いられる。整数1は,ファイルのレコードの各々に
含まれるバイト数を指定する。
書き方2
7) 書き方2は,可変長レコードを指定するために用いられる。整数2は,ファイルのあらゆるレコード
に含まれるバイト数の最小値を指定する。整数3は,ファイルのあらゆるレコードに含まれるバイト
数の最大値を指定する。
8) レコード記述に関連するバイト数は,再定義と再命名とを除く全ての基本データ項目のバイト数の合
計に,けたづめ用の暗黙FILLERを加えて決まる。表の指定がある場合,次のとおりになる。
a) レコード中に記述された表要素の最小個数が,レコード記述に関連するバイト数の最小値を決定す
るための,上記の合計で用いられる。
b) レコード中に記述された表要素の最大個数が,レコード記述に関連するバイト数の最大値を決定す
るための,上記の合計で用いられる。
9) 整数2の指定がない場合,そのファイルのレコードに含まれるバイト数の最小値は,そのファイルの
レコードに記述されたバイト数の最小値に等しい。
10) 整数3の指定がない場合,そのファイルのレコードに含まれるバイト数の最大値は,そのファイルの
レコードに記述されたバイト数の最大値に等しい。
11) データ名1の指定がある場合,そのファイルに対してRELEASE文,REWRITE文又はWRITE文を実
行するとき,あらかじめ出力レコード長を表すバイト数を,データ名1のデータ項目に設定しておか
なければならない。
12) データ名1の指定がある場合,DELETE文,RELEASE文,REWRITE文,START文又はWRITE文を
実行しても,READ文又はRETURN文を実行して不成功になっても,データ名1のデータ項目の内容
が変更されることはない。
13) RELEASE文,REWRITE文又はWRITE文の実行中,出力レコード長を表すバイト数は,次によって
決まる。
a) データ名1の指定がある場合は,データ名1のデータ項目の内容。
b) データ名1の指定がなく,レコードに可変反復データ項目が含まれていない場合は,レコード中の
バイト数。
c) データ名1の指定がなく,レコードに可変反復データ項目が含まれている場合は,固定の部分と,
その出力文の実行時点での反復回数で表される表の部分との合計。
14) 書き出されるレコード中のバイト数が,整数2未満か又は整数3を超える場合,次のことが起こる。
a) REWRITE文又はWRITE文の実行中であるとき,EC-I-O-LOGIC-ERROR例外状態になって,
264
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
REWRITE文又はWRITE文の実行は不成功となる。
b) RELEASE文の実行中であるとき,EC-SORT-MERGE-RELEASE例外状態になって,RELEASE文の
実行は不成功となる。
15) データ名1の指定がある場合,そのファイルに対するREAD文又はRETURN文の実行が成功した後
に,データ名1のデータ項目の内容は,読み込んだ入力レコード長を示すバイト数になる。
16) READ文又はRETURN文にINTO指定がある場合の,暗黙のMOVE文において送出し側データ項目
となる現在レコード中のバイト数は,次の条件から決まる。
a) データ名1の指定がある場合は,データ名1のデータ項目の内容。
b) データ名1の指定がない場合は,データ名1のデータ項目に設定されたはずの値。
このとおりに決定されたバイト数がゼロであれば,このレコードは,長さゼロの項目とする。
書き方3
17) 書き方3のRECORD句が,可変長レコードと固定長レコードのいずれを生成するかは,実装者定義
とする。
18) RECORD句の書き方3を使用する場合,整数4と整数5とがそれぞれ,最小レコード中の最小バイト
数と,最大レコード中の最大バイト数とを表す。ただし,この場合,各レコードの大きさはレコード
記述項で完全に定義される。
19) 書き出されるレコード中のバイト数が,整数4未満か又は整数5を超える場合,次のことが起こる。
a) REWRITE文又はWRITE文の実行中であるとき,EC-I-O-LOGIC-ERROR例外状態になって,
REWRITE文又はWRITE文の実行は不成功となる。
b) RELEASE文の実行中であるとき,EC-SORT-MERGE-RELEASE例外状態になって,RELEASE文の
実行は不成功となる。
13.16.42 REDEFINES句
REDEFINES(再定義)句は,同一の計算機記憶領域を別々のデータ記述項によって記述することを許す。
13.16.42.1 一般形式
レベル番号 [項目名句] REDEFINES データ名2
注記 レベル番号と項目名句は,書き方中で前後の文脈を示しているのであって,これらは
REDEFINES句の一部ではない。
13.16.42.2 構文規則
1) REDEFINES句は項目名句の直後に書かなければならない。項目名句を書かないとき,REDEFINES句
はレベル番号の直後に書かなければならない。
2) データ名2のレベル番号とこの記述項の左辺のレベル番号とは一致していなければならない。また,
66又は88であってはならない。
3) この句を,ファイル節の01レベル記述項中又はFORMAT句のあるファイル記述項に従属する記述項
中で指定してはならない。
4) この句を,通信節の01レベル記述項中で指定してはならない。
5) データ名2のデータ記述項とこの記述項の左辺との間に,データ名2のレベル番号よりも低い数字の
レベル番号をもつ記述項があってはならない。
6) データ名2のデータ記述項はOCCURS句を含んでいてはならない。ただし,OCCURS句を含むデー
タ記述項に従属していてもよい。この場合,REDEFINES句のデータ名2に添字を付けてはならない。
元の定義も再定義も,可変反復データ項目を含んでいてはならない。
265
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
7) データ名2は修飾してはならない。
注記 データ名2が一意でないとしても,REDEFINES句の指定場所が制約されるので,参照の曖
昧さはない。
8) 同じ記憶領域を多重に再定義する場合には,領域を実際に定義した記述項のデータ名を,個々にデー
タ名2として指定しなければならない。
9) 記述項の左辺に必要とされる記憶域が,データ名2のデータ項目に必要とされる記憶域より大であっ
てはならない。ただし,データ名2のデータ項目にレベル番号1が指定されておりEXTERNAL句の
指定がない場合は,この限りでない。
10) この記述項にもこれに従属する記述項にもVALUE句があってはならないが,ただし,レベル番号が
88の記述項には,VALUE句を指定する。
11) 記憶領域の新しい記述を与える記述項は,データ名2を定義する記述項の後に記述しなければならな
い。また,この間に新しい記憶領域を定義する記述項があってはならない。
12) データ名2は,REDEFINES句を含む記述項に従属していてもよい。
13) REDEFINES句を,字類がオブジェクト又はポインタであるデータ項目に指定してはならない。また,
強い型付けの集団項目にも指定してはならない。
14) データ名2は,字類がオブジェクト又はポインタであるデータ項目であってはならない。また,強い
型付けの集団項目又はそれに従属する項目であってはならない。
15) 記述項の左辺は,必要なけたよせがデータ名2のデータ項目と同じになるように記述されていなけれ
ばならない。
注記 この規格ではけたよせに関しての要件を設けているが,実装系でこれ以上の要件を附加して
もよい。
16) データ名2は,その記述にANY LENGTH句があってはならない。
13.16.42.3 一般規則
1) 記憶領域の関連付けは,データ名2のデータ項目の先頭ビットから始まり,記述項の左辺によって参
照されるデータ項目が要求するビット数を含んだ十分な記憶領域に達するまで続く。記述項の左辺が
データ名2のデータ項目を超えるビット数を要求するとき,データ名2のデータ項目とこの記述項に
対して割り付けられる記憶領域は,この記述項によって参照されるデータ項目によって要求されるビ
ットの数とする。データ名2のデータ項目への参照で用いられる大きさは変わらない。
2) 同じ記憶領域が二つ以上のデータ記述項によって定義されるとき,その記憶領域を参照するには,ど
のデータ記述項に関連付けられているデータ名を用いてもよい。
3) REDEFINES句を,VALIDATE文の作用対象に従属するデータ項目に対するデータ記述項に指定した
場合,各々の定義は,他とは独立に,同じデータ位置を複数の検証の組に従属させて,VALIDATE文
によって用いられる。PRESENT WHEN句を用いると,指定された条件に従う一つ以上の再定義の組
が選択されることがある。
13.16.43 RENAMES句
RENAMES(再命名)句は,基本項目の代替的な集団化を可能にする。このような集団は重なり合って
もよい。
13.16.43.1 一般形式
66 データ名1 RENAMES データ名2
THROUGH
THRU
データ名3 .
266
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
注記 レベル番号66とデータ名1は,書き方中で前後の文脈を示しているのであって,これらは
RENAMES句の一部ではない。
13.16.43.2 構文規則
1) RENAMES記述項は,一つのレコード当たり何個書いてもよい。
2) あるレコード内のデータ項目を参照している全てのRENAMES記述項は,関連するレコード記述項の
最後のデータ記述項の直後に書かれなければならない。
3) データ名1を,修飾語として用いてはならない。データ名1を修飾するために用いてよい語は,関連
する01レベル記述項の名前,又はFD・CD・SD記述項の名前だけとする。データ名2もデータ名3
も,データ記述項にOCCURS句があってはならず,データ記述項にOCCURS句のある項目に従属し
ていてはならない。
4) データ名2及びデータ名3は,同一のレコード中の基本項目又は集団項目の名前でなければならず,
同じデータ名であってはならない。
5) データ名2もデータ名3も,参照する記述項のレベル番号が1,66,77又は88であってはならない。
6) データ名2及びデータ名3は,修飾してもよい。
7) データ名2の範囲内と,指定があるならデータ名3をも含めた範囲内には,字類がオブジェクト又は
ポインタであるデータ項目があってはならない。また,強い型付けの集団項目,それに従属する項目
又は可変反復データ項目があってはならない。
8) THROUGHとTHRUは,同義語とする。
9) データ名2 THROUGH データ名3 で記述される領域は,整数個のバイトを定義するものでなければ
ならない。
10) データ名3が記述する記憶域の開始は,データ名2が記述する記憶域の開始より左側にあってはなら
ない。データ名3が記述する記憶域の終端は,データ名2が記述する記憶域の終端より右側になけれ
ばならない。
注記 したがって,データ名3がデータ名2に従属していてはならない。
13.16.43.3 一般規則
1) THROUGH指定を書かないと,データ名2のデータ属性は全て,データ名1のデータ属性になり,デ
ータ名2の占める記憶域がデータ名1の占める記憶域になる。
2) THROUGH指定を書くと,データ名1は英数字集団項目を定義する。この集団項目には,データ名2
から(データ名2が基本項目の場合)又はデータ名2の中の最初の基本項目(データ名2が集団項目
の場合)から始まり,データ名3まで(データ名3が基本項目の場合)又はデータ名3の中の最後の
基本項目(データ名3が集団項目の場合)までの,全ての基本項目が含まれる。
13.16.44 REPORT句
REPORT(報告書)句は,報告書ファイルへと書き出す報告書を識別する。
13.16.44.1 一般形式
REPORT IS
REPORTS ARE {報告書名1}…
13.16.44.2 構文規則
1) 各報告書名1は,同じソース要素の報告書節中の報告書記述項の左辺でなければならない。各報告書
名1の出現順序に特別の意味はない。
2) 各報告書名1は,一つのREPORT句にだけ現れてもよい。
267
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
3) REPORT句を指定したファイル記述項の左辺を手続き部中で参照してもよい箇所は,USE文,CLOSE
文,及びOUTPUT指定又はEXTEND指定のあるOPEN文だけとする。
13.16.44.3 一般規則
1) 報告書名1が二つ以上あるとき,二つ以上の報告書がそのファイルに書き出されてもよいことを表す。
2) INITIATE文を実行してから同じ報告書に対してTERMINATE文を実行するまでの間に,その報告書
ファイルを参照するOPEN文又はCLOSE文を実行してはならない。
13.16.45 REQUIRED句
REQUIRED[必須]句は,ACCEPT画面文の文脈において,利用者が入力フィールドに少なくとも1文
字を入力しなければならないことを指定する。
13.16.45.1 一般形式
REQUIRED
13.16.45.2 一般規則
1) REQUIRED句は,この画面項目を参照しているACCEPT文の実行中にだけ有効とする。
2) REQUIRED句は,この句の制御下にある画面項目にカーソルが入るまで,有効ではない。
3) REQUIRED句の効果は,必要な終了条件が満たされない限り,終了キーの打けん(鍵),及びカーソ
ルを別な画面項目へ移動させるその他のカーソル移動キーの打けん(鍵)を受け付けないようにする
ことである。必要な終了条件が満たされるのは,次の場合とする。
− 英数字又は英数字編集の画面項目に,非空白文字が少なくとも一つ含まれる。
− 各国文字又は各国文字編集の画面項目に,非空白文字が少なくとも一つ含まれる。
− 数字又は数字編集の画面項目に,ゼロでない値が含まれる。
− ブールの画面項目に,ゼロでない値が含まれる。
4) 入出力両用のフィールドでは,端末操作員が打けん(鍵)入力したデータだけではなく,FROM句又
はUSING句の一意名又は定数の内容によってREQUIRED句が満たされてもよい。
5) 機能キーを用いてACCEPT文の実行を終了させるとき,REQUIRED句は無効とする。
6) FULL句とREQUIRED句を一緒に指定すると,そのフィールドを完全に満たさない限り,通常の終了
キーは有効にならない。
7) 集団画面項目に指定したREQUIRED句は,その集団内部の各々の基本入力画面項目に適用される。
13.16.46 REVERSE-VIDEO句
REVERSE-VIDEO(反転表示)句は,この句の指定がなければ有効であるはずの前景色と背景色が入れ
替わって画面項目が表示されることを指定する。
13.16.46.1 一般形式
REVERSE-VIDEO
13.16.46.2 一般規則
1) 集団レベルに指定したREVERSE-VIDEO句は,その集団内部の各々の基本画面項目に適用される。
2) REVERSE-VIDEO句の指定があると,この画面項目をACCEPT画面文又はDISPLAY画面文が参照し
ている場合に,画面項目を構成する文字の前景色と背景色とが入れ替わって,画面項目が表示される。
白黒表示装置でも,反転表示属性が用いられる。
13.16.47 SAME AS句
SAME AS(同様)句は,あるデータ名に対する記述が,別なデータ記述項に対する指定と同じであるこ
とを表す。
268
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
13.16.47.1 一般形式
SAME AS データ名1
13.16.47.2 構文規則
1) データ名1は,修飾してもよい。
2) SAME AS句を指定したデータ記述項の直後に,従属データ記述項又はレベル88記述項があってはな
らない。
3) データ名1の記述には,その従属データ項目も含めて,この記述項の左辺又はこの記述項が従属して
いる集団項目を参照するSAME AS句があってはならない。
4) データ名1の記述には,その従属データ項目も含めて,この記述項が従属しているレコードを参照す
るTYPE句があってはならない。
5) データ名1の記述にはOCCURS句があってはならない。しかしながら,データ名1の従属データ項目
にはOCCURS句があってもよい。
6) SAME AS句をファイル節に指定するとき,データ名1の記述には,その従属データ項目をも含めて,
記述にUSAGE OBJECT REFERENCE句のあるデータ項目があってはならない。
7) データ名1は,ファイル節,作業場所節,局所記憶節又は連絡節中において記述された,基本項目又
はレベル1集団項目でなければならない。
8) 記述項の左辺がレベル77項目であるとき,データ名1は基本項目でなければならない。
9) 記述項の左辺が従属している集団項目にはGROUP-USAGE句,SIGN句,又はUSAGE句があっては
ならない。
13.16.47.3 一般規則
1) SAME AS句の効果は,データ名1で識別されるデータ記述をこのSAME AS句の代わりに書いたのと
同じとする。ただし,データ名1に対するレベル番号,名前,GLOBAL句,REDEFINES句,SELECT
WHEN句及びEXTERNAL句は除外され,従属項目のレベル番号は,一般規則2) の規定に従って調
整されることがある。
注記 この規則は,この句の構文規則と組み合わされて,直接又は間接の循環参照を禁止する。
2) データ名1が集団項目を記述している場合,
a) この記述項の左辺も集団項目であって,それに従属する基本項目群の名前,記述及び階層構造は,
データ名1に従属する基本項目群と同じになる。
b) この集団に従属している項目群のレベル番号は,必要があれば調整されて,データ名1の階層構造
は保たれたままになる。
c) 結果として生じる階層構造の中でのレベル番号は49を超えることがあってもよい。
注記 8.5.1.5.4(実行用コードの効率を高めるための項目のけたづめ)に従ったけたよせの結果と
して,データ名1又は記述項の左辺の中に暗黙のFILLERが挿入されるとき,対応し合う
データ項目のけたよせが異なってもよい。
3) データ名1の従属している英数字集団項目又は強い型付けの集団項目にUSAGE句がある場合の効果
は,記述項の左辺に対しそのUSAGE句を指定してあるのと同じとする。
4) データ名1の従属している集団項目にGROUP-USAGE句があり記述項の左辺が集団項目である場合
の効果は,記述項の左辺にGROUP-USAGE句を指定してあるのと同じとする。
5) データ名1の従属している英数字,各国文字又は強い型付けの集団項目にSIGN句がある場合の効果
は,記述項の左辺にそのSIGN句を指定してあるのと同じとする。
269
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
13.16.48 SECURE句
SECURE(安全確保)句は,キーボードから入力されるデータ,又は画面項目に含まれているデータが,
画面項目に対応する画面上の位置に現れるのを防止する。
13.16.48.1 一般形式
SECURE
13.16.48.2 一般規則
1) 集団レベルに指定したSECURE句は,その集団内部の各々の基本入力画面項目に適用される。
2) SECURE句は,この画面項目を参照しているACCEPT文の実行中にだけ,有効とする。
3) SECURE句は,この句の指定された画面項目に対応するデータが画面上に表示されるのを防止する。
ACCEPT文の実行中,入力画面項目に対応する画面位置にはカーソルが現れることになるが,端末操
作員によって打けん(鍵)入力されたデータは表示されない。入出力両用フィールドでは,ACCEPT
画面文を実行する前の画面項目の画面位置の内容はそのまま変更されず,端末操作員がそれを変更す
ることもできない。
4) SECURE句の指定されたフィールドへデータを入力する間に,カーソルが移動するか否かは,実装者
定義とする。
13.16.49 SELECT WHEN句
SELECT WHEN(場合に選択)句は,入出力操作の間に,条件名条件の下でレコード記述項とレコード
との関連付けが行われることを指定する。
13.16.49.1 一般形式
SELECT WHEN
条件名1
OTHER
13.16.49.2 構文規則
1) SELECT WHEN句は,ファイル節,連絡節,局所記憶節又は作業場所節中の,01レベルのレコード記
述項にだけ指定してもよい。
2) あるファイル名に関連するレコード記述項のいずれかにSELECT WHEN句を指定した場合,そのファ
イル名に関連するレコード記述項の全てにSELECT WHEN句の指定がなければならない。
3) あるファイル名に関連するレコード記述項のうちで,SELECT WHEN句に同じ条件名1を指定したも
のが二つ以上あってはならない。
4) あるファイル記述項に対して,出現する全ての条件名1は,関連する条件変数がレコード中の同じ位
置に同じ用途と同じ大きさをもつように定義されていなければならない。
5) あるファイル記述項中にFORMAT句の指定がある場合,条件名1に関連する条件変数は,そのレコ
ード記述項中の最初の基本データ項目でなければならない。
6) OTHER指定は,ファイルに関連する最後のレコード記述項にだけ書いてもよい。
13.16.49.3 一般規則
1) ファイル節中のレコード記述項のSELECT WHEN句は,そのファイルにCODE-SET句又はFORMAT
句がある場合,そのファイルに関連するREAD文,REWRITE文及びWRITE文に対して評価される。
ファイル節中のSELECT WHEN句は,その他の文に対しては効果がない。
2) 作業場所節,局所記憶節又は連絡節中に指定したレコード記述項のSELECT WHEN句は効果がない。
3) SELECT WHEN句に指定した条件名条件は,各レコード記述項に対して,指定された順序で,評価が
真になるまで評価される。評価が真になったとき,そのレコード記述項が選択され,CODE-SET句及
270
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
びFORMAT句とともに使用される。OTHER指定を書いた場合の評価は常に真になる。
4) レコード記述項が一つも選択されない場合,その入出力操作は不成功になり,入出力状態にはレコー
ド識別不成立を示す値が設定される[9.1.12(入出力状態)参照]。
5) CODE-SET句及びFORMAT句の処理ではない状況下で,READ文,REWRITE文及びWRITE文に対
するSELECT WHEN句が有効か否かは,実装者定義とする。
注記 これによって,実装者定義の状況でのレコード構成に基づく符号系変換を可能にしている。
この場合,ソース要素中にCODE-SET句が存在する必要はない。
13.16.50 SIGN句
SIGN(符号)句は,演算符号の位置と表現形式とを,これらの特性を明示する必要がある場合に指定す
る。
13.16.50.1 一般形式
[SIGN IS]
LEADING
TRAILING [SEPARATE CHARACTER]
13.16.50.2 構文規則
1) SIGN句は,次のものに対してだけ指定してもよい。
− PICTURE文字列中に記号"S"がある数字データ記述項又は数字画面記述項。
− PICTURE文字列中に記号"S"がある数字報告集団記述項。
− 英数字集団項目,各国文字集団項目又は強い型付けの集団項目。
2) SIGN句を指定した基本項目の用途はDISPLAY又はNATIONALでなければならない。
3) ファイル記述項中にCODE-SET句の指定があるとき,そのファイル記述項に関連する符号付き数字デ
ータ記述項には必ずSIGN IS SEPARATE句を指定しなければならない。
13.16.50.3 一般規則
1) SIGN句は,この句が適用される数字項目に対して,又はこの句が適用される集団に従属している数
字項目の各々に対して,その演算符号の位置と表現形式とを指定する。SIGN句は,PICTURE文字列
中に記号"S"がある数字項目にだけ適用される。
2) SIGN句を指定した集団項目に従属する集団項目にSIGN句を指定した場合,従属する側の集団項目に
対しては,従属する側の集団項目のSIGN句のほうが,優先して適用される。
3) SIGN句を指定した集団項目に従属する数字項目にSIGN句を指定した場合,その基本項目の記述項に
対しては,その基本項目の記述項に指定したSIGN句のほうが,優先して適用される。
4) ある数字項目のPICTURE文字列中に記号"S"はあるが,その項目に適用するSIGN句が存在しない場
合,この項目は演算符号をもつ。記号"S"は演算符号の表現形式又は位置を示すものではない。演算符
号の位置及び表現形式は,実装者定義とする。そのような符号付き数字項目には一般規則5) 及び6) を
適用しない。
5) SIGN句にSEPARATE CHARACTER指定がないときは,次の規則による。
a) 演算符号は,LEADINGのとき左端,TRAILINGのとき右端のけた位置に付く。
b) データ項目に対する正しい符号が何であるかは,実装者定義とする。
6) SIGN句にSEPARATE CHARACTER指定があるときは,次の規則による。
a) 演算符号は,LEADINGのとき左端,TRAILINGのとき右端の文字位置に付く。これは,どの数字
けた位置とも異なる文字位置である。
b) 正及び負の演算符号はそれぞれ,基本特殊文字"+"及び"-"とする。
271
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
7) PICTURE文字列中に記号"S"がある数字項目は,全て符号付き数字項目となる。SIGN句がこのような
項目に適用され,計算又は比較のために変換が必要なとき,変換は自動的に行われる。
13.16.51 SOURCE句
SOURCE(源泉)句は,印字可能項目へ自動的に転記されるデータ項目又は式を識別する。
13.16.51.1 一般形式
SOURCE IS
SOURCES ARE
一意名1
算術式1 … [ROUNDED]
13.16.51.2 構文規則
1) SOURCEとSOURCESは,同義語とする。
2) ROUNDED指定なしで一意名1を指定したとき,一意名1を送出し側作用対象としてこの印字可能項
目を受取り側作用対象とするMOVE文が妥当になるように,一意名1を記述しなければならない。
3) 算術式1の指定又はROUNDED指定があるとき,この記述項は,数字データ項目又は数字編集データ
項目を定義するものでなければならない。
4) 一意名1は,データ部のいずれかの節で定義されたデータ項目を指定する。一意名1が報告書節の項
目を指定する場合,それは現在の報告書で定義された,報告書カウンタの一意名又は合計カウンタで
なければならない。算術式1中に現れる一意名にも全て,これと同じ構文規則を適用する。
5) ROUNDED指定付きで一意名1を指定したとき,それは算術式であるとみなされる。
6) SOURCE句に二つ以上の作用対象があるとき,この記述項は繰返し記述項であるか,又は繰返し記述
項に従属していなければならず,このSOURCE句の作用対象の個数は,繰返し記述項の反復回数と同
じであるか,又はこの繰返し記述項より上位のレベルに相当する一連の繰返し記述項群の反復回数を
幾つか掛け合わせた数と同じでなければならない。
7) SOURCE句に二つ以上の作用対象があって,そのうち少なくとも一つが算術式であるとき,各々の作
用対象を括弧で囲んでおかなければならない。
13.16.51.3 一般規則
1) 一意名1は,ROUNDED指定なしのとき,一意名1のデータ項目を印字可能項目へと転記する暗黙の
MOVE文の,送出し側データ項目を指定する。
2) 算術式1は,関連する項目が印字されるたびに暗黙に実行される暗黙のCOMPUTE文の作用対象を指
定する。ROUNDED指定があれば,その暗黙のCOMPUTE文もROUNDED指定付きとなる。
3) SOURCE句をもつ記述項がCOLUMN句を含まないとき,したがってSOURCE句が印字不能項目を定
義しているときには,その記述項がSUM句によって参照された場合を除き,SOURCE句は動作を起
こさない。その他の場合は全て,関連する報告書行が印字される前にMOVE文又はCOMPUTE文が
暗黙に実行される。一意名1の指定があってROUNDED指定がないとき,実行される文は,一般規則
1) で定義したMOVE文とする。そうでないとき,実行される文は,一般規則2) で定義したCOMPUTE
文とする。
4) SOURCE句に二つ以上の作用対象があるとき,その作用対象の並びが繰返し印字可能項目の並びへと
割当てられる。割当ての順序は,階層中の該当する項目に対して,まず横方向,次いで縦方向になる。
作用対象が余らなければ割当ては最初の作用対象から繰り返される。PRESENT WHEN句によって又
はDEPENDING指定のあるOCCURS句によって印字可能項目が抑止される場合,印字は行われない
が,SOURCE作用対象の割当ては行われる。
272
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
13.16.52 SUM句
SUM(合計)句は,関連する基本報告書項目の値を供給するために合計される幾つかのデータ項目を指
定する。
13.16.52.1 一般形式
SUM OF
データ名1
一意名1
算術式1
… [UPON {データ名2} …] …
RESET ON
データ名3
FINAL
[ROUNDED]
13.16.52.2 構文規則
1) データ名1,一意名1又は算術式1は,それぞれ加数とする。キーワードSUMが2回以上現れること
があっても,この句の全体で一つのSUM句とみなされる。
2) 記述項の左辺の項類は,送出し側項目の項類が数字であるMOVE文の受取り側項目の項類として妥当
なものでなければならない。
3) データ名1は,報告書節中の数字データ項目の名前でなければならない。データ名1は,修飾しても
よい。OCCURS句に関連付けられている場合,データ名1には,通常は必要とされる添字付けを指定
してはならない。データ名1を指定したときは,次の規則を適用する。
a) UPON指定があってはならない。
b) データ名1の指定箇所が記述項の左辺と同じ報告集団記述中であるとき,データ名1は,繰返し項
目であって[13.13(報告集団記述項)一般規則3) 参照],記述項の左辺より少なくとも一つ多くの
反復レベルの制御下になければならない。
c) データ名1の指定箇所が記述項の左辺と異なる報告集団記述中であるとき,データ名1は,繰返し
項目ではないか,又は繰返し項目であって記述項の左辺と少なくとも同数の反復レベルの制御下に
あるか,いずれかでなければならない。
d) データ名1と記述項の左辺との最大反復回数は,入れ子の最も低いレベルから始まり順に取り上げ
た,対応し合う各々のレベルにおいて,等しくなければならない。これらの対応し合うレベルより
高いレベルにおいては,反復回数は任意であってよい。
e) 参照の連鎖はどれも最終的には,報告書節で定義されたデータ名1を参照するSUM句のない記述
項で終了しなければならない。
f)
データ名1が,この報告集団記述でない報告集団記述中の記述項で指定されるとき,各報告集団の
型との組合せは,次に示すものだけとする。
− この報告集団が制御脚書きである場合,データ名1は,明細報告集団中で,又はより低い制御
レベルに関連する制御脚書き中で,定義したものであってもよい。
− この報告集団が明細である場合,データ名1は,別の明細報告集団中で定義したものであって
もよい。
− この報告集団が報告書脚書きである場合,データ名1は,報告書頭書き以外の報告集団中で定
義したものであってもよい。
− この報告集団がページ脚書きである場合,データ名1は,本体集団の中で定義したものであっ
てもよい。
g) データ名1の指す記述項が別な報告書の記述中にあるとき,報告集団の型の組合せに制限はない。
273
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4) 加数が一意名1であるとき,報告書節中で定義されたのではない数字データ項目でなければならない。
5) 加数が算術式1であるとき,それに含まれるあらゆる一意名は,データ部の報告書節以外の節の中に
ある記述項を指すものであってもよい。
6) データ名2は,明細報告集団の名前でなければならない。報告書名で修飾してもよい。
7) データ名3は,修飾してもよく,部分参照してもよい。データ名3又はFINALは,この報告書記述の
CONTROL句の作用対象でなければならない。データ名3を部分参照するとき,最左端位置と長さは
整数定数でなければならない。この報告集団が制御脚書きであるとき,その制御レベルはデータ名3
の制御レベルより低いレベルでなければならない。
13.16.52.3 一般規則
1) SUM句をもつ記述項は,それぞれ独立に合計カウンタとけたあふれ指示子を確立する。合計カウンタ
とは内部レジスタであり,項類が数字のデータ項目として振る舞う。合計カウンタの10進けた数は,
整数部も小数部も,SUM句をもつ記述項のPICTURE句の,挿入編集文字を除いた対応けた数から導
き出される。対応するPICTURE句に演算符号があるかないかには関係なく,合計カウンタは符号付
きとする。
2) この報告書に対してINITIATE文が実行されると,合計カウンタはゼロになり,関連するけたあふれ
指示子はオフになる。これ以降に合計カウンタがゼロに再設定されてけたあふれ指示子がオフになる
のは,この報告集団が印字される処理の終了時点か,又はRESET指定があるならそこに指定した制
御レベルに対する制御脚書きの処理の終了時点である。そのような制御脚書きの定義がないときは,
01レベルの記述項だけからなる,そのような制御脚書きがあるとみなされる。
3) 各々の加数の現在の内容がGENERATE文及びTERMINATE文の実行中に,これ以降に規定する特定
の時点において暗黙に合計カウンタへ加算される。この加算はON SIZE ERROR指定のあるADD文
の一般規則に,又は算術式の場合はON SIZE ERROR指定のあるCOMPUTE文の一般規則に,整合す
る。加数に算術符号があればそれも考慮される。各々の加算ではけたあふれが検査されて,けたあふ
れが発生すると関連するけたあふれ指示子がオンになる[14.6.6(算術文)参照]。
4) この記述項にCOLUMN句もあるとき,この合計カウンタが源泉データ項目の役を果たす。関連する
けたあふれ指示子がオフであれば,合計カウンタの内容がMOVE文の一般規則に従って印字可能項目
へ転記される。関連するけたあふれ指示子がオンであればEC-REPORT-SUM-SIZE例外状態になり,
印字可能項目は空白で埋められる。
5) SUM句をもつ記述項の,レベル番号の直後にデータ名が指定されたとき,そのデータ名は合計カウン
タの名前であり,関連する印字可能項目があってもその名前ではない。
6) データ名1の指す項目の記述項にSUM句があると,加算される値は対応する合計カウンタの値とす
る。その値を計算するのに必要な加算は,現在の合計カウンタへ作用対象を加える前に完了する。デ
ータ名1の指す項目の記述項にSOURCE句又はVALUE句があると,加算される値はそのSOURCE
句又はVALUE句の作用対象の値とする。
7) 加算が行われる時点を,次のとおりに規定する。
a) データ名1が異なる報告集団記述の中にある記述項の名前であれば,加算が行われるのは,データ
名1を含んでいる報告集団の記述が処理されるときとする。
b) データ名1がこの報告集団記述の中にある記述項の名前であれば,加算が行われるのは,この報告
集団の処理中の,報告集団のどの行を印字するよりも前とする。
c) 加数が一意名1又は算術式1であれば,加算が行われるのは,次のいずれかとする。
274
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1. UPON指定がないときは,この報告書か又はこの報告書に定義されたあらゆる明細報告集団に対
してGENERATE文が実行されるたびに,加算を行う。
2. UPON指定があるときは,UPON指定の指す明細報告集団に対してGENERATE文が実行される
たびに,加算を行う。
データ名1又は一意名1の二つ以上が同じデータ項目を指しているとき,このデータ項目は,デー
タ名1又は一意名1がSUM句に現れた回数だけ合計カウンタに加算される。UPON指定に書いたデ
ータ名2の二つ以上が同じ明細報告集団を指していてもよい。そのような明細報告集団に対して
GENERATE文を実行したとき,データ名2がUPON指定に現れた回数だけ加算を行う。
8) 加数がデータ名1であってデータ名1が繰返し項目であるとき,加数の繰返しは,全てが同じ合計カ
ウンタに加算されるか,各々が別々に対応する合計カウンタに加算されるかのいずれかであって,次
の一般規則による。
a) 加数と合計カウンタとが同じ個数の反復レベルの制御下にあるとき,加数の繰返しの各々が,合計
カウンタの対応する繰返しへと,それぞれ加算される。
b) 加数が合計カウンタよりも数多くの反復レベルの制御下にあるとき,加数の繰返しのレベル数は実
質上,合計カウンタの繰返しのレベル数まで縮減されて,加数の繰返しの表全体が1レベル以上に
わたって,合計カウンタの繰返しへと,それぞれ集計される。これらの集計が行われるレベルは,
加数の反復レベルの最も高いほうのレベルとする。ただし,SUM句をもつ記述項と加数の両方を制
御下に従えているOCCURS句又は複数指定のLINE/COLUMN句があれば,それを除外する。
9) SUM句に二つ以上の加数の指定があるときの結果は,全ての加数を上記の規則に従って別々に合計し,
その結果を足し合わせた場合と同じとする。
10) この記述項が,PRESENT WHEN句又はDEPENDING指定のあるOCCURS句の結果として,不在デー
タ項目と関連しているとき,この報告集団の現在のインスタンスに対しては,対応する合計カウンタ
は印字されずゼロに再設定されることもない。
11) 作用対象がデータ名1であって,PRESENT WHEN句又はDEPENDING指定のあるOCCURS句の結果
として不在と宣言されたとき,データ名1の定義された報告集団の現在の処理中には,データ名1は
合計カウンタへと加算されない。
12) 合計カウンタの内容は,手続き部の文によって変更してもよい。
13.16.53 SYNCHRONIZED句
SYNCHRONIZED(けたづめ)句は,内部記憶装置の自然境界に基本項目を合わせることを指定する
[8.5.1.5.4(実行用コードの効率を高めるための項目のけたづめ)参照]。
13.16.53.1 一般形式
SYNCHRONIZED
SYNC
RIGHT
LEFT
13.16.53.2 構文規則
1) SYNCHRONIZED句は,基本項目にだけ指定してもよい。
2) SYNCは,SYNCHRONIZEDの省略形とする。
13.16.53.3 一般規則
1) この句を指定すると,データ項目の左端の自然境界から右端の自然境界までのバイト位置に,他のど
のデータも割り付けられないように,左辺のデータ項目を計算機の中で配置する。このデータ項目を
格納するのに必要なバイト数が,自然境界の間のバイト数より小さい場合,未使用のバイト又は領域
275
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
を,他のデータ項目に対して用いることはない。基本項目がREDEFINES句の右辺であれば,未使用
バイトは再定義されるバイトに含まれない。ただし,未使用バイトは,次のものに含まれる。
a) 記述項の左辺を含んでいる英数字,ビット,各国文字又は強い型付けの集団項目の大きさ。
b) このような集団項目がREDEFINES句の右辺のときに割り当てられるバイト数。
2) LEFTもRIGHTも付かないSYNCHRONIZEDは,基本項目の実行効率が良くなるように自然境界の間
に基本項目が位置付けられることを指定する。この割付け指定は,実装者によって決まる。
3) SYNCHRONIZED LEFTは,基本項目に対する自然境界の最左側のバイトから始まるように,基本項
目が位置付けられることを指定する。
4) SYNCHRONIZED RIGHTは,基本項目に対する自然境界の最右側のバイトで終わるように,基本項目
が位置付けられることを指定する。
5) SYNCHRONIZED句の結果で生じる記憶域の位置の調整は,けたづめされる項目の大きさに影響を及
ぼさない。
6) ある項目のデータ記述が演算符号と任意の形式のSYNCHRONIZED句とを含む場合,その項目の符号
は,SIGN句によって明示的又は暗黙に指定される符号位置に現れる。
7) SYNCHRONIZED句の指定箇所が,OCCURS句を含むデータ記述項であるとき,又はそれに従属する
データ項目のデータ記述項であるとき,
a) SYNCHRONIZED句は,データ項目の繰返しごとに適用される。
b) 同じ表中の他のデータ項目に対して生成される暗黙のFILLERは,データ項目の繰返しごとに生成
される[一般規則8) b) を参照]。
8) この句の効果は,実装者定義とする。SYNCHRONIZED句の他の一般規則に加え,次の点に関しての
この句に関連する基本項目の扱いは,実装者定義とする。
a) データ記述中にSYNCHRONIZED句を含む基本項目をもつ集団項目又はレコードの,外部媒体上の
形式。
b) SYNCHRONIZED句を含む項目の直前の基本項目が,適切な自然境界で終わっていないときの暗黙
のFILLERの生成。自動的に生成されたFILLERの位置は,次のものに含まれる。
1. FILLER項目が属する集団項目の大きさ。
2. FILLER項目を含む集団項目がREDEFINES句の右辺として現れるときに割り当てられるバイト
数。
9) 実装者は選択機能として,内部データ表現形式に対する自動的なけたづめを規定してもよい。ただし,
ビットデータ項目と,レコード内部で用途がDISPLAY又はNATIONALと記述されたデータ項目とは
除く。レコードそれ自体は自動的にけたづめされてもよい。
10) ファイルのレコードのけたづめに関する規則は,実装者定義とする。これによって基本項目のけたづ
めは影響を受ける。
13.16.54 TO句
TO(に)句は,ACCEPT画面文中のデータの受取り先を識別する。
13.16.54.1 一般形式
TO 一意名1
13.16.54.2 構文規則
1) 一意名1の項類は,送出し側作用対象がこの記述項の左辺と同じPICTURE句をもつMOVE文で,受
取り側項目としてもよい項類でなければならない。
276
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
2) 一意名1はファイル節,作業場所節,局所記憶節又は連絡節中で定義しなければならない。
3) この記述項の左辺がOCCURS句に従属しているときは,一意名1は通常なら必要とされる添字付けな
しで指定しなければならない。このほかに13.16.36(OCCURS句)の構文規則12) にも規定がある。
13.16.54.3 一般規則
1) 記述項の左辺は,入力画面項目となる。
2) TO指定は,この画面項目を参照しているACCEPT画面文の実行中にだけ有効とする。
13.16.55 TYPE句
TYPE(型)句はデータ記述項中において,この記述項のデータ記述が型宣言で規定されることを表す。
TYPE(型)句は報告集団記述項中においては,報告集団の印字される状況を識別する。
13.16.55.1 一般形式
書き方1(型名)
TYPE TO 型名1
書き方2(報告集団)
TYPE IS
REPORT HEADING
RH
PAGE HEADING
PH
CONTROL HEADING
CH
ON
FOR
データ名1
FINAL
[OR PAGE]
DETAIL
DE
CONTROL FOOTING
CF
ON
FOR
データ名2
FINAL
PAGE FOOTING
PF
REPORT FOOTING
RF
13.16.55.2 構文規則
書き方1
1) 型名1の従属データ項目の記述に,この記述項の左辺又はこの記述項が従属している集団項目を参照
するSAME AS句があってはならない。
2) TYPE句の指定のあるデータ記述項の後に,従属するデータ記述項又はレベル88記述項が続いてはな
らない。
3) 型名1の記述中にSTRONG指定がある場合,記述項の左辺はその全体をも一部をも再命名してはなら
ない。
4) 型名1の記述中にSTRONG指定がある場合,記述項の左辺はその全体をも一部をも暗黙にも明示的に
も再定義してはならない。
5) 記述項の左辺が従属している集団項目には,GROUP-USAGE句,SIGN句又はUSAGE句があっては
ならない。
6) 型名1の記述中にSTRONG指定がある場合,記述項の左辺はレベル番号が1であるか,又はSTRONG
指定のある型宣言に従属しているか,いずれかでなければならない。
7) 記述項の左辺がレベル77項目であるとき,型名1は基本項目でなければならない。
277
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
8) TYPE句をファイル節中に指定するとき,型名1の記述には,その従属データ項目も含めて,記述に
USAGE OBJECT REFERENCE句のあるデータ項目があってはならない。
書き方2
9) RH はREPORT HEADING の省略形とする。
PH はPAGE HEADING
の省略形とする。
CH はCONTROL HEADING の省略形とする。
DE はDETAIL
の省略形とする。
CF はCONTROL FOOTING の省略形とする。
PF はPAGE FOOTING
の省略形とする。
RF はREPORT FOOTING
の省略形とする。
10) データ名1及びデータ名2は,修飾してもよく部分参照してもよい。部分参照するとき,最左端位置
と長さは整数定数でなければならない。データ名1,データ名2及びFINALを指定するとき,対応す
る報告書記述項のCONTROL句の作用対象のいずれかと同じでなければならない。
11) CONTROL HEADING又はCONTROL FOOTINGに続くデータ名1,データ名2,又はFINALを省略し
てもよいのは,対応する報告書記述項のCONTROL句に作用対象が一つの場合だけとする。
12) PAGE HEADING指定,PAGE FOOTING指定及びOR PAGE指定を書いてよいのは,報告書記述項に
PAGE句の指定があってページ限界を指定している場合だけとする。
13) REPORT HEADING,PAGE HEADING,REPORT FOOTING及びPAGE FOOTINGが,それぞれ報告書
記述中に現れてよいのは,高々1回だけとする。
14) CONTROL HEADING及びCONTROL FOOTINGは,それぞれ報告書に対するCONTROL句の各制御
データ項目又はFINALに対して高々1回だけ現れてもよい。どの制御レベルに対してもCONTROL
HEADING及びCONTROL FOOTINGの一方又は両方は省略してもよい。
15) 型がDETAIL,CONTROL HEADING又はCONTROL FOOTINGである集団を,本体集団(body group)
と呼ぶ。各々の報告書記述は,少なくとも一つの本体集団を含まなければならない。
16) GENERATEデータ名文が手続き部にないとき,報告書記述にはDETAILがなくてもよい。
13.16.55.3 一般規則
書き方1
1) TYPE句は,この記述項の左辺のデータ記述を,型名1によって指定することを表す。TYPE句の効果
は,型名1が識別するデータ記述をこのTYPE句の代わりに書いたのと同じとする。ただし,型名1
に対するレベル番号,名前,データのけたよせ,GLOBAL句,SELECT WHEN句及びTYPEDEF句は
除外され,また,従属項目のレベル番号は,一般規則2) の規定に従って調整されることがある。
2) 型名1が集団項目を記述している場合,
a) この記述項の左辺も集団項目であって,それに従属する基本項目群の名前,記述及び階層構造は,
型名1に従属する基本項目群と同じになる。
b) この集団に従属している項目群のレベル番号は,必要があれば調整され,型名1の階層構造は保た
れたままになる。
c) 結果として生じる階層構造の中でのレベル番号は,49を超えることがあってもよい。
d) 記述項の左辺は,レベル1項目であるかのようにけたよせされる。
3) 記述項の左辺のデータ記述にVALUE句がある場合,この記述項に対してはそのVALUE句が適用され,
型名1の記述中にVALUE句があってもそれは無視される。
278
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4) 記述項の左辺のデータ記述にBASED句がある場合,この記述項に対してはそのBASED句が適用さ
れ,型名1の記述中にBASED句があってもそれは無視される。
書き方2
5) 報告集団が印字されるのは,GENERATE文又はTERMINATE文の実行中だけとする。明細報告集団
は,GENERATE文中で明示的に参照されている場合に印字される。その他の報告集団は全て,以降の
一般規則に従って暗黙に印字される。
6) 報告集団の印字される条件は,その型によって異なり,次のとおりとなる。
a) 報告書頭書き(report heading)が定義されているとき,報告書頭書きは,報告書の最初の報告集団
として,報告書に対して時系列的に最初のGENERATE文を実行したときに印字される。
b) ページ頭書き(page heading)が定義されているとき,ページ頭書きは,報告書に対して時系列的に
最初に印字する本体集団の直前に,それと同じページに印字される。それ以降も,ページ送りのた
びに,新しいページに最初の報告集団として印字される。ただし,印字しようとする報告集団が報
告書脚書きで,単独でページをなしている場合は除く。
c) 制御頭書き(control heading)がOR PAGE指定なしで定義されているとき,各々の制御頭書きは,
次のいずれかの事象において自動的に印字される。
1. その報告書に対してのINITIATE文に続き時系列的に最初のGENERATE文を実行した場合には制
御レベルの最高から最低への順で印字される。
2. GENERATE文の実行の結果として制御切れが検出された場合には,その制御切れのレベルから最
低レベルまで順に,明細報告集団の直前に印字される。
OR PAGE指定は,関連する制御頭書きを,これに加えページ送りの後にもページ頭書きに続けて
印字させる。ただし,それは,より低い制御レベルの制御脚書きを印字する直前に起きたページ送
りではない場合に限る。
d) 明細(detail)報告集団は,それを参照している明示的なGENERATE文の実行の結果として印字さ
れる。
e) 制御脚書き(control footing)が定義されているとき,各々の制御脚書きは,次のいずれかの事象に
おいて自動的に印字される。
1. GENERATE文を実行して制御切れが検出された場合,最低レベルからその制御切れのレベルまで
逆順に,制御頭書き及び明細の報告集団よりも前に印字される。
2. その報告書に対してのTERMINATE文を実行した場合は制御レベルの最低から最高への順で印字
される。ただし,その報告書に対しての時系列的に最後のINITIATE文を実行して以降,少なく
とも一度GENERATE文が実行された場合に限る。
f)
ページ脚書き(page footing)が定義されているとき,ページ脚書きは,現在の報告書の各ページ上
に最後の報告集団として印字される。ただし,次の場合を除く。
1. 先頭ページ上,それが報告書頭書き集団だけで占められる場合。
2. 最終ページ上,それが報告書脚書き集団だけで占められる場合。
報告書脚書きの定義はあるが単独でページをなしていない場合,最終ページ上のページ脚書きは,
報告書脚書きの直前に書かれる。
g) 報告書脚書き(report footing)が定義されているとき,報告書脚書きは,報告書の最後の報告集団と
して,報告書に対してTERMINATE文を実行したときに印字される。ただし,その報告書に対して
時系列的に最後のINITIATE文を実行して以降,少なくとも一度GENERATE文が実行された場合に
279
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
限る。
7) 上限は,報告集団の先頭行が占めてもよいページ上の行の上端として定義され,次のとおりに算出さ
れる。
a) 報告書頭書き又はページ頭書き(ただし,同じページ上に報告書頭書きがない場合)の上限は,
HEADING整数から求まる行とする。
b) ページ頭書き(同じページ上に報告書頭書きがある場合)の上限は,報告書頭書きの最終行に後続
する行とする。
c) 本体集団の上限は,報告書中にOR PAGE指定付きの制御頭書きの定義がなければ,FIRST DETAIL
整数から求まる行とする。
d) 報告書中にOR PAGE指定付きの制御頭書きの定義が一つでもあるとき,本体集団の上限は次のと
おりに決まる。
1. 本体集団が,OR PAGE指定をもつ最高レベルの制御頭書きと同じレベルであるか,これよりも高
いレベルの制御頭書きであるとき,上限は,FIRST DETAIL整数から求まる行とする。
2. 本体集団が,OR PAGE指定をもつ最高レベルの制御頭書きより低いレベルの制御頭書きとすると
き,上限は,その次に高いレベルの制御頭書きの最終行に後続する行とする。
3. 本体集団が明細であるとき,上限はOR PAGE指定をもつ最低レベルの制御頭書きの最終行に後
続する行とする。
4. 本体集団が制御脚書きであるとき,上限は,その制御脚書きと同じか又はより高いレベルにあっ
てOR PAGE指定をもつ最低レベルの制御頭書きの最終行に後続する行とする。そのような制御
頭書きがないとき,上限は,FIRST DETAIL整数から求まる行とする。
e) ページ脚書きの上限は,FOOTING整数に1を加えて求まる行番号とする。
f)
単独でページをなしている報告書脚書きの上限は,HEADING整数から求まる行とする。
g) 単独でページをなしていない報告書脚書きの上限は,ページ脚書きの定義があればその最終行に後
続する行とし,報告書にページ脚書きの定義がなければFOOTING整数に1を加えて求まる行番号
とする。
8) 下限は,報告集団の最終行が占めてもよいページ上の行の下端として定義され,次のとおりに算出さ
れる。
a) 単独でページをなしている報告書頭書きの下限は,ページ限界とする。
b) 単独でページをなしていない報告書頭書きの下限は,ページ頭書きの定義があればその先頭行に先
行する行とし,報告書にページ頭書きの定義がなければFIRST DETAIL整数から1を引いて求ま
る値とする。
c) ページ頭書きの下限は,FIRST DETAIL整数から1を引いて求まる行番号とする。
d) 制御頭書きの下限は,LAST CONTROL HEADING整数から求まる行とする。
e) 明細報告集団の下限は,LAST DETAIL整数から求まる行とする。
f)
制御脚書きの下限は,FOOTING整数から求まる行とする。
g) ページ脚書き又は報告書脚書きの下限は,ページ限界とする。
13.16.56 TYPEDEF句
TYPEDEF(型定義)句は,このデータ記述項が型宣言であることを表す。
13.16.56.1 一般形式
IS TYPEDEF [STRONG]
280
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
13.16.56.2 構文規則
1) 記述項の左辺が基本項目であるとき,STRONG指定を書いてはならない。
2) 記述項の左辺の記述には,その従属データ項目も含めて,この型定義を直接又は間接に参照するTYPE
句があってはならない。
13.16.56.3 一般規則
1) TYPEDEF句を指定した場合,このデータ記述項は型宣言となる。この記述項に指定したデータ名は
型名となる。従属するデータ記述項,条件名記述項及びRENAMES句は,この型の型宣言の一部とな
る。これらの従属記述項で記述された項目のデータ名は,この型名を用いて定義される集団項目の従
属項目としてだけ,参照してもよい。そのような集団項目が二つ以上存在する場合は,集団項目名で
修飾しなければならない。そのような集団項目が全く存在しない場合,従属記述項のデータ名と同じ
名前での参照があると,その参照は,同じ名前をもつ別の資源があるならその資源を指すことになる
が,そうでないならその参照は誤りである。
2) 型宣言には,それに関連する記憶域というものがない。
3) GLOBAL句は,この型名の有効範囲にだけ適用される。その他のデータ記述句の全てと従属データ記
述の全ては,型名を用いてデータを定義するとき適用される。
13.16.57 UNDERLINE句
UNDERLINE(下線)句は,画面上に表示するとき,フィールド中の各文字が下線付きであることを指
定する。
13.16.57.1 一般形式
UNDERLINE
13.16.57.2 一般規則
1) 集団レベルに指定したUNDERLINE句は,その集団内部の各基本画面項目に適用される。
2) UNDERLINE句の指定があると,この画面項目をACCEPT画面文又はDISPLAY画面文が参照してい
る場合に,画面項目を構成する文字は下線付きで表示される。
13.16.58 USAGE句
USAGE(用途)句は,計算機記憶域内のデータ項目の表現形式を指定する。
281
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
13.16.58.1 一般形式
[USAGE IS]
BINARY
BINARY-CHAR
SIGNED
UNSIGNED
BINARY-SHORT
SIGNED
UNSIGNED
BINARY-LONG
SIGNED
UNSIGNED
BINARY-DOUBLE
SIGNED
UNSIGNED
BIT
COMPUTATIONAL
COMP
DISPLAY
FLOAT-SHORT
FLOAT-LONG
FLOAT-EXTENDED
INDEX
NATIONAL
OBJECT REFERENCE
インタフェース名1
[FACTORY OF] ACTIVE-CLASS
[FACTORY OF] クラス名1 [ONLY]
PACKED-DECIMAL
POINTER [TO 型名1]
PROGRAM-POINTER [TO プログラム原型名1]
13.16.58.2 構文規則
1) USAGE句は,レベル番号66又は88のデータ記述項には指定してはならない。
2) USAGE句を集団項目のデータ記述項に書いたとき,それに従属するあらゆる基本項目又は集団項目
のデータ記述項にもUSAGE句を書いてよいが,両方の記述項には同じ用途を指定しなければならな
い。
3) 基本データ項目の記述又はその上位の集団項目の記述中のUSAGE 句にBINARY,COMPUTATIONAL
又はPACKED-DECIMALの指定があるとき,その基本データ項目は,数字項目を記述するPICTURE
文字列だけで定義されていなければならない。
4) 基本データ項目の記述又はその上位の集団項目の記述中にあるUSAGE 句にBIT指定があるとき,そ
の基本データ項目は,ブール項目を記述するPICTURE文字列だけで定義されていなければならない。
5) COMPはCOMPUTATIONALの略記である。
6) 報告集団項目のUSAGE句に指定してもよいのは,DISPLAY又はNATIONALだけである。
7) プログラムポインタ型データ項目を明示的に参照してもよい箇所は,CALL文,INITIALIZE文,
INVOKE文,SET文,比較条件,手続き部見出し,文内メソッド呼出しの引数並び,及び関数一意名
の引数だけとする。
8) データポインタ型データ項目を明示的に参照してもよい箇所は,CALL文,INITIALIZE文,INVOKE
文,SET文,比較条件,手続き部見出し,文内メソッド呼出しの引数並び,関数一意名の引数,
ALLOCATE文のRETURNING指定中,及びFREE文中だけとする。
9) 指標データ項目を明示的に指定してもよい箇所は,SEARCH文,SET文,比較条件,組込み関数の引
282
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
数,文内メソッド呼出しの引数,手続き部見出しのUSING指定,CALL文及びINVOKE文のUSING
指定中だけとする。
10) 字類が指標,オブジェクト又はポインタである基本データ項目を,条件変数にしてはならない。
11) 基本データ項目の記述に又はその上位の集団項目の記述にUSAGE NATIONAL句の指定があるとき,
その基本データ項目はブール,各国文字,各国文字編集,数字,又は数字編集のデータ項目を記述す
るPICTURE文字列で宣言されていなければならない。
12) USAGE句の指定が,基本データ項目にも,それが属するどの集団にもない場合,
a) 明示的な又は暗黙のPICTURE文字列中に記号"N"があるとき,USAGE NATIONALとみなされ,
b) さもなければUSAGE DISPLAYとみなされる。
13) USAGE句にOBJECT REFERENCE,POINTER又はPROGRAM-POINTER指定のあるものは,レベル
番号が1であるか,又はSTRONG指定のある型宣言に従属しているか,いずれかの基本データ項目に
対してだけ指定してもよい。
14) USAGE OBJECT REFERENCE句を,ファイル節において指定してはならない。
15) ACTIVE-CLASS指定を指定してもよい箇所は,ファクトリ定義,インスタンス定義又はメソッド定義
の,連絡節又は局所記憶節中だけとする。
16) 画面記述項中で指定してもよい用途は,DISPLAY又はNATIONALだけとする。
17) TO 型名1を指定するとき,記述項の左辺にTYPEDEF句の指定がなければならない。
18) TO プログラム原型名1を指定するとき,記述項の左辺にTYPEDEF句の指定がなければならない。
19) 基本データ項目に対する明示的な又は暗黙のPICTURE文字列中に記号"N"が含まれているとき,その
データ項目に関連するUSAGE句に書いてよいのはNATIONAL指定だけとする。
13.16.58.3 一般規則
1) 集団レベルに明示的又は暗黙に指定されたUSAGE句は,その集団項目内部の各々の基本項目に適用
されるだけであって,集団項目それ自体に適用されるのではない。
2) USAGE句は,計算機記憶域内におけるデータ項目の表現形式を指定する。これはデータ項目の使途
に影響するものではないが,手続き部の文によっては,参照される作用対象のUSAGE句に制限を規
定するものもある。USAGE句は,項目の基数又は文字表現の種類に影響を及ぼすことがある。
3) VALIDATE文は,データ項目の内容が,項目の記述に指定したPICTURE句,SIGN句,及びUSAGE
句(もしあれば)に適合するか否かを確認するために使用してもよい。適合性の規則は,実装者定義
とする。この検査が失敗すると,内部標識には形式が不当という状態が設定される。データ項目の用
途が指標(index),オブジェクト参照(object reference),ポインタ(pointer)又はプログラムポインタ
(program-pointer)であれば,それはVALIDATE文によって無視される。
4) USAGE BINARY(2進)句は,計算機記憶域内で数字項目を表すための基数に2を用いることを指定
する。USAGE BINARY句の厳密な効果は,計算機記憶域内でのデータ項目のけたよせ及び表現形式
に関して,演算符号の表現形式も含めて,実装者定義とする。関連する10進PICTURE文字列から想
定される値の最大範囲を格納できる十分な計算機記憶域を,実装者は割り付けなければならない。
5) USAGE BIT(ビット)句は,ブールデータ項目を表すのにビットを用いることを指定する。USAGE BIT
付きで記述されたデータ項目は,ビットデータ項目である。USAGE BITと記述したデータ項目のけた
よせは,8.5.1.5.3(用途BITのデータ項目のけたよせ)による。
6) USAGE COMPUTATIONAL(計算用)句は,計算機記憶域内で数字項目を表すために実装者定義の基
数及び形式を用いることを指定する。USAGE COMPUTATIONAL句の厳密な効果は,計算機記憶域内
283
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
でのデータ項目のけたよせ及び表現形式に関して,演算符号の表現形式も含めて,実装者定義とする。
さらに,このデータ項目が保持してもよい値の範囲に関しても,実装者定義とする。
7) 暗黙の又は明示的なUSAGE DISPLAY(表示用)句は,計算機記憶域内でデータ項目を表すのに英数
字符号化文字集合を使用すること及びデータ項目を文字境界にけたよせすることを指定する。英数字
は,計算機記憶域中で表現する場合,計算機の各国文字集合の文字の大きさ以下の,一定の大きさを
もつ文字表現でなければならない。用途DISPLAY向けに格納される文字の,大きさ及び表現形式は,
実装者定義とする。
8) 暗黙の又は明示的なUSAGE NATIONAL(各国文字)句は,計算機記憶域内でデータ項目を表すのに
各国文字符号化文字集合を使用すること及びデータ項目を文字境界にけたよせすることを指定する。
各国文字は,計算機記憶域中で表現する場合に,計算機の英数字文字集合の文字の大きさと等しいか
又はその整数倍の,一定の大きさをもつ文字表現でなければならない。用途NATIONAL向けに格納
される文字の,大きさ及び表現形式は,実装者定義とする。
9) USAGE INDEX(指標)句は,データ項目が指標データ項目であり,表要素の出現番号に対応する値
が格納されることを指定する。指標データ項目の字類及び項類は指標とする。USAGE INDEX句の厳
密な効果は,計算機記憶域内のデータ項目のけたよせ及び表現形式に関して,出現番号に割り当てら
れる実際の値まで含めて,実装者定義とする。
10) USAGE PACKED-DECIMAL(パック10進)句は,計算機記憶域で数字項目を表すための基数に10を
用いることを指定する。さらに,この句は,各々のけた位置が計算機記憶域内に占める部分を最小限
にしなければならないことも指定する。USAGE PACKED-DECIMALの厳密な効果は,計算機記憶域
内のデータ項目のけたよせ及び表現形式に関して,演算符号の表現形式も含めて,実装者定義とする。
関連する10進PICTURE文字列から想定される値の最大範囲を格納できる十分な計算機記憶域を,実
装者は割り付けなければならない。
11) 用途BINARY-CHAR,BINARY-SHORT,BINARY-LONG,BINARY-DOUBLEは,実行時モジュールを
実行する計算機に適した2進形式の整数データ項目を定義する。これらの用途に要求される最低限の
範囲を次に示す。規定範囲内のあらゆる整数値nは所定の用途で表現可能でなければならない。実装
者は,より広い範囲を許してもよい。ただし,符号付き項目では,BINARY-CHARで表現してもよい
数値はBINARY-SHORTでも表現可能,BINARY-SHORTで表現してもよい数値はBINARY-LONGでも
表現可能,BINARY-LONGで表現してもよい数値はBINARY-DOUBLEでも表現可能でなければなら
ない。
表現可能な値の最低限の範囲は,次による。
符号付きbinary-char
‒128 = ‒27 < n < 27 = 128
符号なしbinary-char
0 ≦ n < 28 = 256
符号付きbinary-short
‒32769 = ‒215 < n < 215 = 32768
符号なしbinary-short
0 ≦ n < 216 = 65536
符号付きbinary-long
‒2147483648 = ‒231 < n < 231 = 2147483648
符号なしbinary-long
0 ≦ n < 232 = 4294967296
符号付きbinary-double
‒9223372036854775808 = ‒263 < n < 263 = 9223372036854775808
符号なしbinary-double
0 ≦ n < 264 = 18446744073709551616
12) 用途のFLOAT-SHORT,FLOAT-LONG,FLOAT-EXTENDEDは,実行時モジュールを実行する計算機
に適している浮動小数点形式の符号付き数字データ項目を定義する。これらのフィールドに対する大
284
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
きさ及び許容値の範囲は,実装者定義とする。用途がFLOAT-SHORTのデータ項目が保持してもよい
数値は,用途がFLOAT-LONGのデータ項目でも表現可能であり,用途がFLOAT-LONGのデータ項目
が保持してもよい数値は,用途がFLOAT-EXTENDEDのデータ項目でも表現可能でなければならない。
13) 用途がBINARY-CHAR,BINARY-SHORT,BINARY-LONG,BINARY-DOUBLE,FLOAT-SHORT,
FLOAT-LONG,又はFLOAT-EXTENDEDであるデータ項目の表現形式及び長さは,実装者定義とする。
SIGNED指定付きで記述したデータ項目の長さ及びけたよせはUNSIGNED指定付きで記述したデー
タ項目の長さ及びけたよせと同じでなければならない。
14) USAGE OBJECT REFERENCE句付きで記述したデータ記述項を,オブジェクト参照と呼ぶ。
オブジェクト参照はデータ項目であり,その字類はオブジェクト,項類はオブジェクト参照とする。
この内容はナルか又はオブジェクトを指すものであって,次の規則による。
a) オブジェクト参照データ項目に対して割り付けられる記憶域の量は実装者定義であり,各オブジェ
クト参照に対して必ずしも同じである必要はない。
b) 選択可能指定が何もない場合,このデータ項目を,非限定(universal)オブジェクト参照と呼ぶ。
その内容は,任意のオブジェクトを指すものであってよい。
c) インタフェース名1の指定がある場合,このデータ項目の指すオブジェクトは,インタフェース名
1を実装していなければならない。
d) クラス名1の指定がある場合,このデータ項目の指すオブジェクトは,クラス名1かその下位クラ
スに属するオブジェクトでなければならない。次の規則による。
1. ONLY指定がないとき,
a. FACTORY指定がある場合,このデータ項目の指すオブジェクトは指定クラス又はその下位ク
ラスのファクトリオブジェクトでなければならない。
b. FACTORY指定がない場合,このデータ項目の指すオブジェクトは指定クラス又はその下位ク
ラスに属するインスタンスオブジェクトでなければならない。
2. ONLY指定があるとき,
a. FACTORY指定がある場合,このデータ項目の指すオブジェクトは指定クラスのファクトリオ
ブジェクトでなければならない。
b. FACTORY指定がない場合,このデータ項目の指すオブジェクトは指定クラスに属するインス
タンスオブジェクトでなければならない。
e) ACTIVE-CLASSの指定がある場合,このデータ項目の指すオブジェクトが属するクラスは,このオ
ブジェクト参照を内部に指定したメソッドを呼び出すのに用いたオブジェクトの属するクラスと同
じでなければならない。次の規則による。
1. FACTORY指定があるとき,このデータ項目の指すオブジェクトはそのクラスのファクトリオブ
ジェクトへの参照でなければならない。
2. FACTORY指定がないとき,このデータ項目の指すオブジェクトはそのクラスに属するインスタ
ンスオブジェクトへの参照でなければならない。
15) USAGE POINTER(ポインタ)句の指定のあるデータ記述項は,データポインタ型データ項目(又は
単にデータポインタとも呼ぶ。)を指定する。その項目の内容は,データ項目のアドレスになり得る。
USAGE POINTER句の厳密な効果は,計算機記憶域内でのデータ項目のけたよせ,大きさ,表現及び
値の範囲に関して,実装者定義とする。
型名1を指定すると,このデータ項目は制限付きデータポインタとなる。制限付きデータポインタ
285
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
の内容は,既定義アドレスのNULL又は指定された型のデータ項目のアドレスでなければならない。
16) USAGE PROGRAM-POINTER(プログラムポインタ)句の指定のあるデータ記述項は,プログラムポ
インタ型データ項目(又は単にプログラムポインタとも呼ぶ。)を指定する。その項目の内容は,プロ
グラムのアドレスになり得る。USAGE PROGRAM-POINTER句の厳密な効果は,計算機記憶域内での
データ項目のけたよせ,大きさ及び表現に関して,実装者定義とする。
プログラムポインタのアドレスが指すプログラムは,COBOLで書いたものでもよいし,実装者が
プログラムポインタでのアクセスが可能であると宣言している他の言語で書いたものでもよい。
COBOLプログラムの場合のアドレスは,最も外側のプログラムに対してのものとする。
17) プログラム原型名1を指定すると,このデータ項目は制限付きプログラムポインタとなる。制限付き
プログラムポインタの内容は,既定義アドレスのNULL又は指定されたプログラム原型名と同じ呼出
し情報をもつプログラムのアドレスでなければならない。
13.16.59 USING句
USING(から/へ)句は,ACCEPT画面文中の受取り先とDISPLAY画面文用の送出し元の,両方として
用いられるデータを識別する。
13.16.59.1 一般形式
USING 一意名1
13.16.59.2 構文規則
1) 一意名1のデータ項目の項類は,送出し側作用対象がこの記述項の左辺と同じPICTURE句をもつ
MOVE文で,受取り側項目としてもよい項類でなければならない。
2) 一意名1のデータ項目の項類は,受取り側作用対象がこの記述項の左辺と同じPICTURE句をもつ
MOVE文で,受取り側項目としてもよい項類でなければならない。
3) 一意名1はファイル節,作業場所節,局所記憶節又は連絡節の中で定義しなければならない。
4) この記述項の左辺がOCCURS句に従属しているときは,一意名1は通常なら必要とされる添字付けな
しで指定しなければならない。このほかに13.16.36(OCCURS句)の構文規則12) にも規定がある。
13.16.59.3 一般規則
1) USING句の指定は,TO句とFROM句との両方を指定して各々に同じ一意名を指定したものに等しい。
2) 記述項の左辺は,入力画面項目と出力画面項目との両用となる。
13.16.60 VALIDATE-STATUS句
VALIDATE-STATUS(検証状態)句は,VALIDATE文の実行結果として特定の誤り条件が発生した場合
又は発生しなかった場合の通知及びフラグの自動生成を可能にする。
13.16.60.1 一般形式
VALIDATE-STATUS
VAL-STATUS
IS
一意名1
定数1
WHEN
ERROR
NO ERROR
ON
FORMAT
CONTENT
RELATION
FOR {一意名2}…
13.16.60.2 構文規則
1) 定数1又は一意名1のデータ項目は,記述項の左辺を受取り側としたMOVE文の送出し側作用対象と
して妥当なものでなければならない。
2) VALIDATE-STATUS句のある記述項が,DEPENDING指定付きのOCCURS句を包含していたり,その
句に従属したりしてはならない。
286
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
3) 一意名2のデータ項目は,VALIDATE文の作用対象又はその従属項目でなければならない。
4) 一意名2は,部分参照してはならない。
5) 一意名2の字類は,指標,オブジェクト又はポインタであってはならない。
6) 一意名2のデータ項目の記述項がOCCURS句の制御下にない場合,VALIDATE-STATUS句の指定のあ
る記述項もOCCURS句の制御下にあってはならない。
一意名2のデータ項目の記述項が一つ以上のOCCURS句の制御下にある場合,次の規則を適用する。
a) VALIDATE-STATUS句を,OCCURS句の制御下にない記述項に指定するとき,一意名2には添字が
なければならない。添字の個数は,一意名2のデータ項目を制御下においている入れ子のOCCURS
句の個数と同じでなければならない。指定してもよい添字は,定数だけとする。
b) VALIDATE-STATUS句の指定箇所が,OCCURS句の制御下にある記述項であるとき,一意名2に添
字があってはならない。一意名2のデータ項目とVALIDATE-STATUS句の記述項の左辺とは,いず
れも同じ個数のOCCURS句の制御下にあって,対応し合うOCCURS句に指定した反復回数が等し
くなければならない。一意名2に関連するOCCURS句にDEPENDING指定がある場合,その
OCCURS句のTO指定に書かれた最大値の整数を用いて一意名2の反復回数が決まる。
7) 一意名2が大域名を指している場合,記述項の左辺も大域でなければならない。
8) 語VAL-STATUSと語VALIDATE-STATUSは,等価とする。
13.16.60.3 一般規則
1) VALIDATE-STATUS句は,一意名3のデータ項目を直接又は間接に参照しているVALIDATE文の実行
の最終段階つまり誤り通知段階において効力をもつ。VALIDATE-STATUS句は,VALIDATE以外の文
の実行中には無視される。
2) ERROR指定は,次の状況で効力をもつ。
a) ON指定がないとき,一意名2のデータ項目に関連する内部標識に,妥当を示す初期値が設定され
ていない場合
b) ON指定があるとき,一意名2のデータ項目に関連する内部標識に,ON指定の示す検証段階に対応
する値のいずれかが設定されている場合
3) NO ERROR指定は,次の状況で効力をもつ。
a) ON指定がないとき,一意名2のデータ項目に関連する内部標識に,妥当を示す初期値が設定され
ている場合
b) ON指定があるとき,一意名2のデータ項目に関連する内部標識に,ON指定の示す検証段階に対応
する値のどれもが設定されてはいない場合
4) ERROR指定及びNO ERROR指定は,暗黙のMOVE文の実行によって実効を発揮する。その暗黙の
MOVE文では,定数1又は一意名1のデータ項目の現在の内容が送出し側作用対象となり,記述項の
左辺であるデータ項目が受取り側作用対象となる。
5) 一つのデータ記述項にVALIDATE-STATUS句が二つ以上ある場合は,これらの句を上記のとおりに,
指定した順に適用する。一般規則4) に規定した動作が起きるまで,又はこれらの句を全て処理する
まで,この適用が繰り返される。
6) ある記述項に対してERROR指定もNO ERROR指定も,VALIDATE文の実行中に効力をもたなければ,
その記述項の左辺であるデータ項目に関する効果は次のとおりとする。その記述項に指定した
VALIDATE-STATUS句の一意名2の中に,そのVALIDATE文の作用対象として直接又は間接に参照さ
れているものがあるとき,VALUE指定もREPLACING指定もない暗黙のINITIALIZE文の実行によっ
287
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
て,そのデータ項目が初期化される。さもなければ,データ項目は変更されない。
7) VALIDATE文の作用対象に従属していて,その文の実行中には処理されず,内部標識の値が未処理状
態を示しているデータ項目は,VALIDATE-STATUS句によって妥当とも不当ともみなされないが,も
し該当するなら一般規則6) の規定どおりVALIDATE-STATUS句によるデータ項目の初期化が起きる
ことになる[13.16.36(OCCURS句)及び13.16.39(PRESENT WHEN句)参照]。
8) VALIDATE-STATUS句のある記述項が一つ以上のOCCURS句の制御下にある場合,一般規則1)〜7) で
規定された動作が,記述項の左辺の各々の出現と,それに対応する一意名2のデータ項目の各々の出
現とに適用される。
13.16.61 VALUE句
VALUE(値)句は,次の値を指定する。
− 通信節,局所記憶節及び作業場所節のデータ項目の初期値
− INITIALIZE文で使用する値
− 条件名に関連する値
− 報告書節の印字可能項目及び画面節の表示可能項目の値
− VALIDATE文で使用する値
13.16.61.1 一般形式
書き方1(データ項目)
VALUE IS 定数1
書き方2(表)
VALUE IS
VALUES ARE {
}
{定数1} … FROM ( {添字1} … )[TO ( {添字2} … )] …
書き方3(条件名)
VALUE IS
VALUES ARE
定数2
THROUGH
THRU
定数3 … [IN 符号系名1]
[WHEN SET TO FALSE IS 定数4]
書き方4(報告書節)
VALUE IS
VALUES ARE {定数1}…
書き方5(内容検証項)
VALUE
VALUES
定数5
THROUGH
THRU
定数6 … [IN 符号系名1]
IS
ARE
INVALID
VALID
[WHEN 条件1]
13.16.61.2 構文規則
全ての書き方
1) 記述項の左辺は,強い型付けの集団項目であってはならない。
2) この記述項の左辺の項類が数字である場合,VALUE句の定数は全て数字定数でなければならず,
PICTURE句又はUSAGE句で示される値の範囲内に収まるものでなければならない。FLOAT-SHORT,
FLOAT-LONG,及びFLOAT-EXTENDED以外の用途であるとき,この値はゼロでない数字の切捨てを
引き起こすものであってはならない。この値の,PICTURE記号"P"に対応する各位置の数字は,ゼロ
でなければならない。
288
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
3) 符号付き数字定数を指定した場合,この記述項の左辺は符号付き数字データ項目でなければならない。
4) この項目の字類が英字又は英数字である場合,VALUE句の定数は,英数字定数でなければならない。
基本項目のVALUE句に指定された英数字定数が,明示的なPICTURE句で示される大きさを超えては
ならない。英数字集団項目のVALUE句に指定された英数字定数が,その集団項目の大きさを超えて
はならない。
5) この項目の用途がNATIONALである場合,VALUE句の定数は,各国文字定数でなければならない。
基本項目のVALUE句に指定された各国文字定数が,明示的なPICTURE句で示される大きさを超えて
はならない。各国文字集団項目のVALUE句に指定された各国文字定数が,その集団項目の大きさを
超えてはならない。
書き方1,書き方2,書き方3,書き方5
6) 記述項の左辺の項類がブールである場合,VALUE句の定数は,ブール定数でなければならない。基本
項目のVALUE句に指定されたブール定数が,明示的なPICTURE句で示される大きさを超えてはなら
ない。ビット集団項目のVALUE句に指定されたブール定数が,その集団項目の大きさを超えてはな
らない。
書き方2,書き方3,書き方4,書き方5
7) 語VALUEと語VALUESは,等価とする。
書き方1,書き方2,書き方3
8) PICTURE文字列中の編集記号は,データ項目の大きさを決める場合は大きさに計上されるが,データ
項目を初期化する場合に初期値の編集処理を引き起こすものではない。
注記 英数字編集,数字編集又は各国文字編集の項目に関連する定数の値を,編集済みの形式で指
定するのは,プログラマの責任である。
書き方1,書き方2
9) 書き方1も書き方2も,条件名記述項に指定してはならない。
10) REDEFINES句のあるデータ記述項又はそれに従属する記述項にVALUE句を指定してはならない。
11) 集団レベルにVALUE句を指定する場合,定数1はその集団項目と項類が同じであるか,その項類の
受取り側項目をもつMOVE文に指定してもよい表意定数であるか,いずれかでなければならない。こ
の集団内の従属レベルにVALUE句を指定してはならない。
12) 集団レベルにVALUE句を指定する場合,その集団内の従属項目の記述にJUSTIFIED句又は
SYNCHRONIZED句があってはならず,英数字集団項目に従属するデータ項目は全て明示的又は暗黙
に用途がDISPLAYと記述されていなければならない。
書き方1
13) 画面節中での定数1は,用途がDISPLAYのとき英数字定数で,用途がNATIONALのとき各国文字定
数でなければならない。定数1が表意定数であってはならない。
書き方2
14) VALUE句のあるデータ記述項は,OCCURS句のある記述項であるか,又はそのような記述項に従属
しているかのいずれかでなければならない。
15) 添字1及び添字2は,整数の数字定数でなければならない。
16) FROM指定には,この記述項の左辺又はその上位の記述項に対するOCCURS句の各々に対して,一
つずつ添字1の指定がなければならない。添字の指定順序は,この記述項の左辺を指す添字付き参照
を書く場合と同じでなければならない。各々の添字1が,対応するOCCURS句の規定する最大出現番
289
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
号を超えてはならない。
17) TO指定を書く場合には,この記述項の左辺又は上位の記述項に対するOCCURS句の各々に対して一
つずつ添字2の指定があり,添字の指定順序は,この記述項の左辺を指す添字付き参照を書く場合と
同じでなければならない。各々の添字2が,対応するOCCURS句の規定する最大出現番号を超えては
ならない。TO指定に添字2を指定する方法は,添字2に関連する表要素が,対応する添字1に関連
する表要素と同じか又はより後のほうにある表要素になるようにしなければならない。
書き方3
18) THROUGH指定がある場合は,次による。
a) 定数2の字類が英数字又は各国文字でないとき,定数2の値は定数3の値よりも小でなければなら
ない。
b) 定数2の字類が英数字又は各国文字であり,実行時文字照合順序が分かっているとき,定数2の値
は定数3の値よりも小でなければならない。実行時文字照合順序が分からない場合とは,文字照合
順序が現地特性(locale)で定義された場合又は文字照合順序が実行時に別の方法で決まる場合であ
る。
注記 コンパイラは,いろいろな根拠から実行時文字照合順序を知ることがある。おそらくは,
使用可能な文字照合順序が一つしかないか,又はコンパイラオプションによって指定され
るか,である。しかしながらこれは実装者の要件ではなく,決まった文字照合順序用の符
号系名を指定すれば値の範囲が常に同じになることは保証される。
19) 定数4の値は,定数2の繰返しのいずれとも等しい値であってはならない。THROUGH指定がある場
合は,次による。
a) 定数2の字類が英数字又は各国文字でないとき,定数4の値は,定数2〜定数3の範囲内のいずれ
とも等しい値であってはならない。
b) 定数2の字類が英数字又は各国文字であり,実行時文字照合順序が分かっている場合,定数4の値
は,定数2の繰返しのいずれとも等しい値であってはならず,また定数2〜定数3の範囲内のいず
れとも等しい値であってはならない。
注記 THROUGH指定があって,かつ,翻訳時には実行時文字照合順序が分かっていない場合に
は,SET 条件名 TO FALSE で用いられる値が,条件の評価をTRUEにする値でもある可
能性ある。この事態を回避するには,THROUGH指定で値の範囲を指定するのではなく,
値を全て列挙すればよい。
書き方3,書き方5
20) 語THROUGHと語THRUは,等価とする。
21) 記述項の左辺の項類がブールである場合,THROUGH指定があってはならない。
22) 条件名形式及び内容検証項形式を,報告書節の中で指定してはならない。
23) 符号系名1を指定してもよいのは,THROUGH指定中に書いた定数の字類が英数字又は各国文字であ
る場合だけとする。定数2と定数3又は定数5と定数6の字類が各国文字であるとき,符号系名1の
指す符号系は各国文字照合順序を定義していなければならない。そうでないとき,符号系名1の指す
符号系は英数字照合順序を定義していなければならない。
24) THROUGH指定に書かれた値の範囲を決める方法は,14.6.7(THROUGH指定)による。
25) 書き方3及び書き方5は,記述項の左辺のレベル番号が88の場合だけ指定してもよい。
書き方4
290
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
26) VALUE句に一つ以上の作用対象があるとき,この記述項は繰返し記述項であるか又は繰返し記述項に
従属していなければならない。このVALUE句の作用対象の個数は,繰返し記述項の反復回数と同じ
であるか,又はこの繰返し記述項より上位のレベルに相当する一連の繰返し記述項群の反復回数を幾
つか掛け合わせた数と同じでなければならない。
書き方5
27) VALID指定及びINVALID指定の両方を,同じ条件変数に対して指定してはならない。
28) THROUGH指定がある場合は,
a) 定数6の字類が英数字又は各国文字でないとき,定数5の値は定数6の値よりも小でなければなら
ない。
b) 定数5の字類が英数字又は各国文字であり,実行時文字照合順序が分かっている場合,定数5の値
は定数6の値よりも小でなければならない。実行時文字照合順序が分からない場合とは,文字照合
順序が現地特性(locale)で定義された場合又は文字照合順序が実行時に別の方法で決まる場合であ
る。
注記 コンパイラは,いろいろな根拠から実行時文字照合順序を知ることがある。おそらくは,
使用可能な文字照合順序が一つしかないか,又はコンパイラオプションによって指定され
るか,である。しかしながらこれは実装者の要件ではなく,決まった文字照合順序用の符
号系名を指定すれば値の範囲が常に同じになることは保証される。
29) 語VALUEを書いたとき,語ISを書いてもよい。語VALUESを書いたとき,語AREを書いてもよい。
13.16.61.3 一般規則
書き方1,書き方2,書き方3,書き方4
1) 記述項の左辺の用途が浮動短精度(float-short),浮動長精度(float-long)又は浮動拡張精度
(float-extended)であるとき,この項目に実際に与えられる値は定数の算術近似値である。
書き方1,書き方2
2) ファイル節中では,VALUE句はINITIALIZE文の実行中にだけ有効になる。ファイル節中のデータ項
目の初期値は規定されない。
3) 連絡節中では,VALUE句は明示的又は暗黙なINITIALIZE文の実行中にだけ有効になる。連絡節中で
のデータ項目の初期値は,13.6(連絡節)による。
4) 作業場所節,局所記憶節及び通信節の中でのVALUE句は,次のときに有効になる。
a) 外部データ項目は,INITIALIZE文の実行中
b) 基底付き項目及びその従属項目は,ALLOCATE文及び明示的又は暗黙なINITIALIZE文の実行中
c) これ以外の全ての項目は,
− オブジェクト,又は実行時要素が初期状態になる場合,及び
− INITIALIZE文の実行中
VALUE句が有効になる時点で,VALUE句のあるデータ項目は指定された値へと初期化され,字
類がオブジェクト又はポインタであるデータ項目はナル値へと初期化される。その他のデータ項目
及び指標の値は規定されない。
5) 集団項目のデータ記述項にVALUE句を指定した場合,この集団の領域は,この集団の内部にある個
別の基本項目又は集団項目を考慮することなく,初期化される。
6) 可変反復データ項目に関連するデータ項目のデータ記述項に VALUE句を指定した場合,このデータ
項目の初期化は,可変反復データ項目に対するOCCURS句のDEPENDING ON指定のデータ項目の値
291
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
が,そのOCCURS句が規定する最大反復回数に設定されている場合と同様に行われる。データ項目が
“可変反復データ項目に関連する”とは,次のいずれかの場合を指す。
a) 可変反復データ項目を内包する集団データ項目である。
b) 可変反復データ項目である。
c) 可変反復データ項目に従属するデータ項目である。
DEPENDING ON指定のデータ項目に対して関連するVALUE句があるときは,値がこのデータ項目
に設定される時点は,可変反復データ項目が初期化された後であるとみなされる[13.16.36(OCCURS
句)参照]。
書き方1,書き方2,書き方4
7) 各々の定数は,14.5.8(データ項目内でのデータのけたよせ)に従って,関連データ項目に収納される。
ただし,初期化はJUSTIFIED句の影響を受けず,編集も行われない。
8) 初期化は,BLANK WHEN ZERO句があってもその影響を受けない。
書き方1,書き方4
9) OCCURS句のあるデータ記述項又はそれに従属する記述項に,VALUE句の指定があると,関連する
データ項目の反復要素のそれぞれに,規定された値が割り当てられる。
書き方3,書き方5
10) THROUGH指定に書かれた値の範囲を決める方法は,14.6.7(THROUGH指定)による。
注記 この値の範囲を翻訳時に決定できるのは,実行時文字照合順序が翻訳時に判明している場合
だけである。
書き方1
11) 画面項目に対してVALUE句の指定がある場合,定数1は画面項目の値を表す。この値は,ACCEPT
画面文又はDISPLAY画面文によって直接又は間接に参照された場合に,画面上に表示される。
書き方2
12) 書き方2のVALUE句は,表要素の一つを定数1の値で初期化する。初期化される表要素は添字1で
識別される。複数個の定数1を連ねて指定すると,表要素の連続した並びが,順々に,その定数1の
並びの値へと初期化される。表要素の連続した並びへの参照は,その表の,最も包括度の低い次元の
添字を1ずつ増やしながら行われる。ある添字を1増やすより前に,その値が,対応するOCCURS
句によって規定される最大反復回数に達していた場合,その添字には1が設定され,その次に包括度
の高い次元の添字が1ずつ増やされる。
13) TO指定があるとき,一般規則12) に記述した初期化処理の間,定数1の並びの全体が,指定した順
に,送出し元として再び用いられる。この繰返しは,初期化処理が添字2の識別する表要素に達する
まで続く。
14) TO指定がないとき,その効果は,TO指定を書いて,その添字2には,対応する添字1の各々に関連
する表の最大出現番号を指定した場合と同じになる。
15) 複数個のFROM指定が同じ表要素を指している場合,そのVALUE句中の最後に指定したFROM指定
によって規定される値が,表要素に割り当てられる。
書き方3
16) ある条件名の性質は,関連する条件変数の性質と,暗黙に同じとする。
17) 条件名が "SET 条件名 TO FALSE"文中で参照される場合,関連する条件変数にFALSE指定の定数4
の値が設定される。
292
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
注記 ある条件変数の“真の値”とは,その条件変数の条件名に関連付けられた値の全てである。
その他は全て“偽の値”になる。WHEN SET TO FALSE指定は,条件変数が取り得る多くの
“偽の値”のうちただ一つを指定する。その目的は "SET 条件名 TO FALSE"文で用いられ
る単一の値を指定することである。ある条件名条件が検査される場合に偽の結果を生じるの
は,真でない全ての値であって,WHEN SET TO FALSE指定で指定した単一の値だけではな
い。
書き方4
18) 定数1の値は印字可能項目を印字するたびに,その内容として用いられる。ただし,GROUP INDICATE
句,PRESENT WHEN句,又はDEPENDING指定のあるOCCURS句によって項目の印字が抑止される
ときは例外とする[13.16.26(GROUP INDICATE句),13.16.39(PRESENT WHEN句)及び13.16.36
(OCCURS句)参照]。
19) VALUE句に二つ以上の作用対象があるとき,その作用対象の並びが繰返し印字可能項目の並びへと割
り当てられる。割当ての順序は,階層中の該当する項目に対して,まず横方向,次いで縦方向になる。
作用対象が余らなければ割当ては最初の作用対象から繰り返される。PRESENT WHEN句によって又
はDEPENDING指定のあるOCCURS句によって印字可能項目が抑止される場合,印字は行われない
が,VALUE作用対象の割当ては行われる。
書き方5
20) 書き方5の記述項は,VALIDATE文の実行中の内容検証段階において,有効になる。
21) 関連する条件変数が基本項目であるとき,内容検証項が有効になるのは,条件変数に関連する内部標
識が,その項目の形式が妥当という状態を示している場合だけである。
22) WHEN指定がある場合,条件1が評価される。条件1が真のときは,この句が有効になりその効果は
これ以降の一般規則に詳述される。それ以外のときは,この内容検証項が現在のVALIDATE文では無
視され,その効果はソースプログラムからこの内容検証項が省略された場合と同じになる。
23) VALID指定のある各記述項は,関連するデータ項目に対する,許容値又は許容値の範囲の集合を定義
する。VALID指定のある記述項が幾つか,同一データ項目に関連している場合,これらの値の集合を
合併したものが,許容値の集合となる。この検査が失敗した場合,この項目に関連する内部標識には
内容が不当という状態が設定される。
24) INVALID指定のある各記述項は,関連するデータ項目に対する禁止値又は禁止値の範囲の集合を定義
する。INVALID指定のある記述項が幾つか,同一データ項目に関連している場合,これらの値の集合
を合併したものが,禁止値の集合となる。この検査が失敗した場合,この項目に関連する内部標識に
は内容が不当という状態が設定される。
13.16.62 VARYING句
1) VARYING(変化)句は,カウンタを確立して,報告書作成機能において繰返し印字項目のそれぞれの
出現へ異なる源泉項目を振り分けることを可能にする。
2) VARYING(変化)句は,カウンタを確立して,VALIDATE文が,送り元データ項目の異なる出現をあ
て先データ項目の異なる出現へ格納することを可能にし,内容検証段階又は関係検証段階においては
データ項目の異なる出現との比較を行うことをも可能にする。
13.16.62.1 一般形式
VARYING {データ名1 [FROM 算術式1] [BY 算術式2]} …
13.16.62.2 構文規則
293
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) VARYING句のある記述項には,次のいずれかの句がなければならない。
− 報告集団記述項に書くときは,OCCURS句,複数指定のLINE句又は複数指定のCOLUMN句。
− さもなければ,OCCURS句。
2) データ名1をソース要素内の他の箇所で定義していてはならない。ただし,現在の記述項の左辺に従
属していない記述項にある別のVARYING句のデータ名1として定義する場合はこの限りでない。
注記 そのような再利用は,全く別なデータ項目を参照することになる。
データ名1の定義を参照してもよい箇所は,現在の記述項又はその従属する記述項だけとする。
3) データ名1は,このVARYING句の算術式1中で参照してはならないが,このVARYING句の算術式
2,又は従属記述項のVARYING句の算術式1若しくは算術式2の中では参照してもよい。
13.16.62.3 一般規則
1) VARYING句のある各記述項は,独立した一時的な整数データ項目を確立する。その大きさは,最大
予測値を保持するのに十分な大きさである。
2) VARYING句が報告書記述項に指定されたのでなければ,それは,VALIDATE以外の文の実行中には
無視される。
3) 記述項の左辺であるデータ項目がVALIDATE文によって処理される場合又は記述項の左辺である報
告書項目が処理される場合,データ名1の内容は,関連データ項目の各繰返しに対して,VALIDATE
文の実行の各段階又は報告書項目の各繰返しにおいて,次のとおりに確立される。
a) 最初の出現では,算術式1の値がデータ名1に入る。FROM指定がなければ,データ名1には1が
入る。
b) 2番目以降の出現で,算術式2の値がデータ名1に加わる。BY指定がなければ,データ名1には1
が加わる。
4) こうして確立したデータ名1の各々の値は,関連するデータ項目又は報告書項目の出現を処理する間
は持続する。
注記 したがって,例えば,データ名1を送出し側データ項目に使用したり,送出し側データ項目
の添字に使用したり,DEFAULT句の一意名の一部として使用したりしてもよい。
5) 算術式1又は算術式2の評価が非整数値になり,かつ,VARYING句の指定箇所が報告書記述項であ
るとき,EC-REPORT-VARYING例外状態になって,GENERATE文の実行は不成功となり,印字行の
内容は規定されない。
6) 算術式1又は算術式2の評価が非整数値になり,かつ,VARYING句の指定箇所が報告書記述項でな
いとき,EC-VALIDATE-VARYING例外状態になって,VALIDATE文の実行は不成功となり,受取り側
項目の内容は規定されない。
14 手続き部
関数・メソッド・プログラムの手続き部の内容は,実行される手続きとする。
インスタンス定義及びファクトリ定義の手続き部の内容は,インスタンスオブジェクト又はファクトリ
オブジェクトを対象として呼び出し得るメソッドとする。
インタフェースの手続き部の内容は,メソッド原型とする。
関数原型,メソッド原型,又はプログラム原型の手続き部は,パラメタ及び返却項目(もしあれば)を
指定する。引き起こし得る例外状態があれば,これも指定する。
294
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
14.1 手続き部の構造
14.1.1 一般形式
書き方1(節あり)
手続き部見出し
[DECLARATIVES.
{節名1 SECTION. use文.
[完結文]… [段落名1. [完結文]… ]… }…
END DECLARATIVES.]
[{節名1 SECTION.
[完結文]… [段落名1. [完結文]… ]… }… ]
書き方2(節なし)
手続き部見出し
[完結文]… [段落名1. [完結文]… ]…
書き方3(オブジェクト指向)
PROCEDURE DIVISION.
[{メソッド定義} … ]
ここで,手続き部見出しは,次による。
PROCEDURE DIVISION [using指定] [RETURNING データ名2]
RAISING
例外名1
[FACTORY OF] クラス名1
インタフェース名1
… .
using指定は,次による。
USING
[BY REFERENCE] {[OPTIONAL] データ名1} …
BY VALUE {データ名1} …
…
ここで,次の用語については,指示された細分箇条による。
用語
細分箇条
メソッド定義
10.5(COBOL翻訳群)
完結文
14.4(手続き文及び手続き完結文)
use文
14.8.45(USE文)
14.1.2 構文規則
書き方1,書き方2
1) データ名1は,連絡節中のレベル01又はレベル77の記述項として定義されていなければならない。
特定の利用者定義語が2回以上,データ名1として現れてはならない。データ名1のデータ記述項に
は,BASED句又はREDEFINES句があってはならない。
注記1 基底付き項目に対するこの制約は,引数としての基底付き項目の受渡しを禁止するもので
はない。
注記2 連絡節中で,これ以降に定義したデータ項目にREDEFINES データ名1指定があってもよ
い。
2) BY VALUE指定のデータ名1はそれぞれ,字類が数字,オブジェクト又はポインタであるデータ項目
として定義されなければならない。
295
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
3) 関数定義及び関数原型定義には,RETURNING指定を必ず書かなければならない。
4) メソッド定義,プログラム定義又はプログラム原型には,RETURNING指定を書いてもよい。
5) データ名2は,連絡節中のレベル01又はレベル77の記述項として定義されていなければならない。
データ名2のデータ記述項には,BASED句又はREDEFINES句があってはならない。
注記1 基底付き項目に対するこの制約は,活性化する側の実行時要素中で返却項目として基底付
き項目を指定することを禁止するものではない。
注記2 連絡節中で,これ以降に定義したデータ項目にREDEFINES データ名1指定があってもよ
い。
6) データ名2は,データ名1と同じであってはならない。
7) 例外名1は,EC-USERのレベル3例外名でなければならない。
8) クラス名1は,リポジトリ段落で指定されるクラスの名前でなければならない。
9) インタフェース名1は,リポジトリ段落で指定されるインタフェースの名前でなければならない。
10) 書き方1及び書き方2は,ソース要素が関数定義,関数原型定義,メソッド定義,プログラム定義又
はプログラム原型定義である場合,かつ,その場合だけ,ソース要素中に指定してもよい。
11) メソッド原型の手続き部の内容は,手続き部の見出しだけでなければならない。
書き方3
12) 書き方3は,ソース要素が,ファクトリ定義,インスタンス定義中又はインタフェース定義中である
場合,かつ,その場合だけ,ソース要素中に指定してもよい。メソッド定義中で指定してはならない。
13) インタフェース定義中,インスタンス定義中又はファクトリ定義中の,メソッド定義でない手続き部
は,オブジェクト指向形式の手続き部でなければならない。
14.1.3 一般規則
書き方1,書き方2
1) 実行は,手続き部の宣言部分を除いた最初の文から始まる。文は,ソース要素中に書いてある順序で
実行されるが,その順序と異なる場合は規則によって示す。
2) USING指定では,この関数・メソッド・プログラムに引き渡して用いる引数に対する仮パラメタを識
別する。活性化する側のソース要素が引き渡す引数とは,次のいずれかである。
− CALL文のUSING指定に書かれた引数
− INVOKE文のUSING指定に書かれた引数
− メソッドの文内呼出しに指定した引数
− 関数引用に指定した引数
− 暗黙のSETプロパティメソッド呼出しに対してオブジェクトプロパティの規則が定義する引数
引数の並びと仮パラメタの並びの間の対応付けは,位置を基準にしてとられる。
仮パラメタ及び返却項目の適合に関する要件は,14.7(パラメタ及び返却項目の適合)による。
3) データ名1に対してOPTIONAL指定がある場合,それに対応する引数としてOMITTED指定を書いて
もよい。さもなければ,対応する引数としてOMITTED指定を書いてはならない。
4) BY REFERENCE指定及びBY VALUE指定は,もう一つ別のBY REFERENCE指定又はBY VALUE指
定が出現するまで,後続のパラメタに対し次々と適用される。最初のパラメタの前にBY REFERENCE
もBY VALUEもない場合,BY REFERENCE指定が想定される。
5) データ名1は,関数・メソッド・プログラムの仮パラメタとする。
6) データ名2は,関数・メソッド・プログラムの結果を,活性化する側の要素へ返すために用いられる
296
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
名前とする[14.5.5(実行時要素の実行の結果)参照]。
注記 COBOLでは,返却項目に対する記憶域を,活性化する側のソース単位内に割り付ける。活
性化される側のソース単位内に含まれるのは,連絡節の仮パラメタ定義だけとする。
7) 返却項目であるデータ名2の初期値は規定しない。
8) 引数が参照渡し(passed by reference)である場合,仮パラメタが引数と同じ領域を占める場合と同様
に,活性化される実行時要素は動作する。
9) 引数が内容渡し(passed by content)である場合,活性化する側の実行時要素が活性化の処理の間に連
絡節のレコードを割り付け,かつ,このレコードは活性化する側の実行時要素中の引数とは同じ領域
を占めない場合と同様に,活性化される実行時要素は動作する。
活性化される実行時要素がプログラムであって,それに対するプログラム指定子が,活性化する側
の実行時要素のリポジトリ段落中にはなく,かつ,CALL文にはNESTED指定がない場合,この割り
付けられたレコードの長さは引数と同じとする。引数の記述が可変反復データ項目のときは,最大長
を用いる。引数は変換なしで,この割り付けられたレコードへ転記される。このレコードは,その後,
活性化される実行時要素によって,参照渡しで渡された引数と同様に扱われる。
活性化される実行時要素が,次のいずれかであるとき,
− プログラムであって,それに対するプログラム指定子が,活性化する側の実行時要素のリポジトリ
段落中にある。
− プログラムであって,かつ,CALL文にはNESTED指定がある。
− メソッド
− 関数
割り付けられたこのレコードは,次のとおりとする。
− 仮パラメタの記述にANY LENGTH句があるとき,項類,用途及び長さは引数と同じとする。
− さもなければ,データ記述及びバイト数は仮パラメタと同じとする。ここで,仮パラメタの記述が
可変反復データ項目のときは,最大長を用いる。
この転記では,次に示す文において,引数を送出し側作用対象として用い,割り付けられたレコー
ドを受取り側作用対象として用いる。
− 仮パラメタが数字である場合,ROUNDED指定のないCOMPUTE文
− 仮パラメタの字類が指標,オブジェクト又はポインタである場合,SET文
− 上記以外の場合,MOVE文
割り付けられたレコードはその後,参照渡しで渡される引数と同様に扱われる。
10) 引数が値渡し(passed by value)である場合,活性化される実行時要素の動作は,連絡節のレコードが
活性化の初期化処理過程の間に活性化する側の実行時要素によって割り付けられたのと同様になる。
割り付けられるレコードは,仮パラメタと同じ記述のデータ項目である。この転記では,次に示す
文において,引数を送出し側作用対象として用い,連絡節で記述を指定して割り付けられたレコード
を受取り側作用対象として用いる。
− 仮パラメタが数字である場合,ROUNDED指定のないCOMPUTE文
− 仮パラメタの字類が指標,オブジェクト又はポインタである場合,SET文
活性化される実行時要素はこれで,割り付けられたレコードを使用可能になる。
11) 活性化される要素中では常に,データ名1及びデータ名2を参照した場合の解釈は,連絡節の規定に
よる。
297
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
12) 例外名1は,この実行時要素がEXIT文又はGOBACK文中で引き起こし得る例外のうち,表14(例
外名及び例外状態)に示した例外名以外を指定する。クラス名1を指定すると,この実行時要素内の
EXIT文又はGOBACK文が,クラス名1又はその下位クラスに属するオブジェクトを引き起こし得る
ことを示す。インタフェース名1を指定すると,この実行時要素内のEXIT文又はGOBACK文が,イ
ンタフェース名1を実装しているオブジェクトを引き起こし得ることを示す。
13) 活性化する側の実行時要素又は活性化される側の実行時要素のいずれか一方がCOBOL実行時要素で
はない場合,対象にできる全ての言語製品に関する制約及び機構は,実装者定義とする。
注記 これらの制約及び機構の詳細に含まれるものには,パラメタの対応,データ型の表現,値の
返却,パラメタの省略などがあり得る。
14.2 宣言部分
宣言部分(declaratives)は,特定の例外又は条件が起きたときにUSE文に基づいて実行される手続きで
ある。宣言部分の節は,手続き部の始めにキーワードDECLARATIVESの後に続けて,一まとめに配置し,
キーワードEND DECLARATIVESで止めなければならない。
キーワードDECLARATIVESとEND DECLARATIVESとの間に指定した節の組は,ソース要素中の宣言
部分を構成する。その他の全ての節の組は,ソース要素中で非宣言部分を構成する。
14.3 手続き部分
手続き部分(procedures)は,手続き部内の一つの段落,連続した段落の組,一つの節又は連続した節の
組からなる。段落を一つでも節内に書いた場合,全ての段落を節内に書かなければならない。手続き名は,
ソース要素中に出現する段落又は節を参照するために用いる語である。手続き名は,段落名又は節名であ
る。段落名は修飾してもよい。
14.3.1 節
節(section)は,節の見出しに,0個以上の段落の並びが続く。節の終わりを示す印は,次の節の直前,
手続き部の終わり,宣言部分ではキーワードEND DECLARATIVES,のいずれかとする。
14.3.2 段落
段落(paragraph)は,段落名に,分離符の終止符が続き,次に0個以上の完結文の並びが続く。段落名
を書かないときの段落は,手続き部の見出し又は節の見出しに続く1個以上の完結文の並びである。段落
の終わりを示す印は,次の段落名若しくは節名の直前,手続き部の終わり,宣言部分ではキーワードEND
DECLARATIVES,のいずれかとする。
14.4 手続き文及び手続き完結文
手続き文(procedural statement)とは,行う動作を規定するCOBOLの言語単位である。文の名前は,表
13(手続き文)によって識別する。
手続き部の内では,文の種類に次に示すものがある。
− 宣言文(declarative statement)は,他の文の処理中にとる可能性のある動作を指定する。
− 無条件文(imperative statement)は,無条件にとる動作を指定する。
− 条件文(conditional statement)は,ある条件の真偽に依存する動作を指定する。又はそのために一つ
以上の指定(phrase)をもつ。
宣言文は,文の名前USEから始まり,他の文の処理中に遭遇する特定の条件に応じてとる動作を指示す
る。
無条件文は,実行時要素がとる無条件の動作を指定する,又は明示範囲終了子によって区切った条件文
である[表13(手続き文)参照]。
298
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
条件文(conditional statement)は,条件の真理値を評価して,その真理値を用いて以降の制御の流れが
決まることを指定する。条件指定(conditional phrase)のある文が明示範囲終了子で終了していないとき,
それは条件文とする。
完結文(sentence)は,一つ以上の手続き文の並びを分離符の終止符で止めたものである。
文の一般形式中に現れる場合,“無条件文”とは,一つ以上の無条件文のことであって,分離符の終止符
又はその一般形式に関連する指定のいずれかによって終了する。
表13−手続き文
文の名前
条件指定
明示範囲終了子
ACCEPT
[NOT] ON EXCEPTION
END-ACCEPT
ADD
[NOT] ON SIZE ERROR
END-ADD
ALLOCATE
CALL
ON OVERFLOW
[NOT] ON EXCEPTION
END-CALL
CANCEL
CLOSE
COMPUTE
[NOT] ON SIZE ERROR
END-COMPUTE
CONTINUE
DELETE
[NOT] INVALID KEY
END-DELETE
DISABLE
DISPLAY
[NOT] ON EXCEPTION
END-DISPLAY
DIVIDE
[NOT] ON SIZE ERROR
END-DIVIDE
ENABLE
EVALUATE
WHEN
END-EVALUATE
EXIT
FREE
GENERATE
GOBACK
GO TO
IF
THEN
ELSE
END-IF
INITIALIZE
INITIATE
INSPECT
INVOKE
MERGE
MOVE
MULTIPLY
[NOT] ON SIZE ERROR
END-MULTIPLY
OPEN
PERFORM
END-PERFORM
PURGE
RAISE
299
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表13−手続き文(続き)
文の名前
条件指定
明示範囲終了子
READ
[NOT] AT END
[NOT] INVALID KEY
END-READ
RECEIVE
NO DATA
WITH DATA
END-RECEIVE
RELEASE
RESUME
RETURN
[NOT] AT END
END-RETURN
REWRITE
[NOT] INVALID KEY
END-REWRITE
SEARCH
AT END
WHEN
END-SEARCH
SEND
SET
SORT
START
[NOT] INVALID KEY
END-START
STOP
STRING
[NOT] ON OVERFLOW
END-STRING
SUBTRACT
[NOT] ON SIZE ERROR
END-SUBTRACT
SUPPRESS
TERMINATE
UNLOCK
UNSTRING
[NOT] ON OVERFLOW
END-UNSTRING
VALIDATE
WRITE
[NOT] INVALID KEY
[NOT] END-OF-PAGE
END-WRITE
14.4.1 条件指定
条件指定は,条件文を実行した結果として生じた条件の真理値に対してとる動作を指定する。
条件指定は,表13(手続き文)による。
14.4.2 文の範囲
手続き文の範囲とは,語及び分離符によってその文が構成される範囲のことをいう。文の範囲は,先頭
の語である文の名前から,明示的又は暗黙に終了するまでとする。その文の開始から終了までの間の構文
に現れるあらゆる手続き文も,文の範囲に含まれる。
14.4.2.1 明示的な範囲終了
文の範囲を明示的に終了させるためには,表13(手続き文)に示した,関連する明示範囲終了子を用い
てもよい。ある文を明示範囲終了子付きで書くと,その文は無条件文の一つとなる。これを,範囲明示文
(delimited scope statement)と呼ぶ。
明示範囲終了子(explicit scope terminator)は,次の範囲を終了させる。
1) その範囲終了子に対応する文の名前をもつ,最も直前にある未終了の文
2) 明示範囲終了子と対応する文の名前との間にある,あらゆる未終了の文
300
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
14.4.2.2 暗黙の範囲終了
文の範囲が明示的に終了していないとき,それは次のとおり暗黙に終了する。
1) 無条件文が,別の文に内包されていない場合,次のいずれかで終了する。
a) その文の構文の末尾に続く要素
b) その次に新たに現れた文の名前
c) 分離符の終止符
2) 無条件文が,別の文に内包されている場合,次のいずれかで終了する。
a) 別の文に内包されない無条件文を終了させる要素[規則1) のa),b),c) 参照]
b) 内包する側のいずれかの文の範囲終了
c) 内包する側のいずれかの文の新たな条件指定
3) 条件文が,別の文に内包されていない場合,分離符の終止符で終了する。
4) 条件文が,別の文に内包されている場合,次のいずれかで終了する。
a) 内包する側のいずれかの文の範囲終了
b) 内包する側のいずれかの文の新たな条件指定
出現した指定は,構文上その指定に関連する文のうち最も直前にある未終了の文の次の指定である。あ
る文に対して,ある指定が,その文で出現が許される全ての箇所に既に書かれているとき,次に出現した
その指定は,構文上その文には関係しない。未終了の文とは,開始してから,明示的にも暗黙にも終了し
ていない文のことである。
ある文が別の文に内包されている場合,それを,入れ子の文(nested statement)とも呼ぶ。
14.5 実行
14.5.1 実行単位の構成
実行時に,COBOL応用プログラムの最高レベルの単位は実行単位(run unit)とする。実行単位は,他
の実行単位が書き出した,又は他の実行単位が後に読み込む,ファイル及び通信文の処理又はスイッチの
設定及び検査以外には,他の実行単位と連絡したり協調したりすることなく実行しても差し支えのない,
独立した実体である。一つの実行単位は,一つ以上の実行時モジュールを内包する。
実行時モジュールとは,翻訳単位を翻訳した結果の生成物である。各々の実行時モジュールは幾つかの
実行時要素を内包する。
実行時要素とは,関数・メソッド・プログラムを翻訳した結果の生成物である。実行時要素を活性化す
るとき,それが操作するパラメタを呼出し側の実行時要素から渡してもよい。
実行単位及びそれに含まれる各々の実行時モジュールは,その実行単位内にある実行時要素の実行又は
相互間連絡に必要な資源及びデータ記憶域を内包していることもある。
実行単位が内包する実行時モジュール及びデータ記憶域は,COBOL以外の言語で書かれた翻訳単位を
翻訳して導出したものであってもよい。この場合,COBOLのモジュールと非COBOLのモジュールとの
間の関連付け及び相互作用に対する要求事項は,実装者定義とする。
14.5.2 関数・メソッド・オブジェクト・プログラムの状態
14.5.2.1 関数・メソッド・プログラムの状態
実行単位のあらゆる時点で,関数・メソッド・プログラムの状態は,活性状態又は不活性状態のいずれ
かとする。関数・メソッド・プログラムが活性状態であるとき,その状態は,初期状態又は直前使用状態
のいずれかとする。
301
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
14.5.2.1.1 活性状態
関数・メソッド・プログラムは,再帰的に活性化されてもよい。したがって,同一の関数・メソッド・
プログラムのインスタンスの幾つかが同時に活性状態であってもよい。規則中に,実行時要素の活性状態
を検査すると書かれている場合,活性状態であるとは,その要素のインスタンスのいずれかが活性化され
ていることをいう。
関数のインスタンスは,関数の活性化に成功すると活性状態になり,その関数のそのインスタンス内で
GOBACK文,STOP文,暗黙又は明示的なEXIT FUNCTION文が実行されるまで,活性状態が持続する。
メソッドのインスタンスは,メソッドの活性化に成功すると活性状態になり,そのメソッドのそのイン
スタンス内でGOBACK文,STOP文,暗黙又は明示的なEXIT METHOD文が実行されるまで,活性状態
が持続する。
プログラムのインスタンスは,オペレーティングシステムからの活性化が成功すると,又は実行時要素
からの呼出しが成功すると,活性状態になる。プログラムのインスタンスは,次のいずれかが実行される
まで,活性状態が持続する。
− STOP文
− 呼び出されたプログラム内での暗黙又は明示的なEXIT PROGRAM文
− 呼び出された同じプログラム内での,又は呼出し側実行時要素の制御下にないプログラム内での
GOBACK文
関数・メソッド・プログラムのインスタンスが活性化される場合はいつでも,そのインスタンスの内部
に含まれる全てのPERFORM文の制御機構が初期状態に設定され,その文字照合順序の初期値が有効にな
る。
14.5.2.1.2 初期状態及び直前使用状態
関数・メソッド・プログラムが活性状態であるとき,それが内包するデータは初期状態又は直前使用状
態のいずれかとする。
14.5.2.1.2.1 初期状態
自動データ及び初期データは,それを記述した関数・メソッド・プログラムが活性化される時点で常に
初期状態になる。
静的データは,次の時点で初期状態になる。
1) それを記述した関数・メソッド・プログラムを,実行単位中で活性化する最初の時点。
2) それを記述したプログラムを直接又は間接に包含している初期化属性をもつプログラムを参照する
CALL文の実行後に,そのプログラムを活性化する最初の時点。
3) それを記述したプログラムを参照するCANCEL文の実行後か,そのプログラムを直接又は間接に包含
しているプログラムを参照するCANCEL文の実行後に,そのプログラムを活性化する最初の時点。
関数・メソッド・プログラム中のデータが初期状態になる時点では,次の事象が起こる。
1) 作業場所節,局所記憶節及び通信節に記述した内部データは初期化される[13.16.61(VALUE句)参
照]。
2) 関数・メソッド・プログラムの内部ファイル結合子は,入力・出力・入出力両用・拡張のいずれでも
ない状態に初期化される。
3) 画面項目の属性は,画面記述項に指定したとおりに設定される。
4) 各々の基底付き項目のアドレスは,ナルに設定される。
データが初期状態になるよりも前に,プログラム英数字照合順序及びプログラム各国文字照合順序の初
302
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
期値が決まる[12.2.5(実行用計算機段落)参照]。
14.5.2.1.2.2 直前使用状態
静的データ及び外部データだけが,直前使用状態データとなる。外部データは,実行単位を活性化した
ときを除いて常に直前使用状態とする。静的データは,前項で定義した初期状態のときを除いて直前使用
状態とする。
14.5.2.2 オブジェクトデータの初期状態
オブジェクトの初期状態とは,オブジェクトを生成した直後の状態とする。内部データ,内部ファイル
結合子及び画面項目属性は,関数・メソッド・プログラムのデータが初期状態になる場合と同じ方式で初
期化される[14.5.2.1.2.1(初期状態)参照]。
オブジェクトデータが初期状態になるよりも前に,プログラム英数字照合順序及びプログラム各国文字
照合順序の初期値が決まる[12.2.5(実行用計算機段落)参照]。
14.5.3 制御の明示移行及び暗黙移行
制御の流れの機構は,書いてある順序に従って文から文へと制御を移す。ただし,制御の明示移行(explicit
transfer of control)がこの順序を変更したとき又は制御を渡す実行可能な次の文が存在しないときは,この
限りでない。文から文への制御の移行は,手続き部に明示的な文を書かなくても行われる。そのため,こ
れを制御の暗黙移行(implicit transfer of control)という。
COBOLには,制御の暗黙移行の機構を変更する明示的な手段と暗黙の手段がある。
一連の文の間で起こる制御の暗黙移行のほか,手続き分岐文を実行することなしに通常の流れを変える
ときにも制御の暗黙移行が起こる。文から文への制御の移行に代えて,制御の流れを暗黙に変える手段に
は,次の種類がある。
1) ある段落が別のCOBOLの文,例えばPERFORM文,USE文,SORT文又はMERGE文の制御下で実
行中であり,その段落がその制御文の制御範囲内の最後の段落である場合,その段落の最後の文から
最後に実行された制御文の制御機構へ,制御の暗黙移行が起こる。さらに,ある段落が,繰返し実行
を起こすPERFORM文の制御下で実行中であり,その段落がそのPERFORM文の制御範囲内の最初の
段落である場合,そのPERFORM文に関連する制御機構とその段落の最初の文との間に,段落の繰返
し実行のたびに,制御の暗黙移行が起こる。
2) SORT文又はMERGE文を実行するとき,関連する入出力手続きへ制御の暗黙移行が起こる。
3) COBOLの文を実行した結果として宣言部分の節の実行が引き起こされたとき,その宣言部分の節へ
の制御の暗黙移行が起こる。
注記 宣言部分の節を実行した後,もう一つの制御の暗黙移行が起こる[規則1) 参照]。
制御の明示移行は,手続き分岐文又は条件文の実行によって,制御の暗黙移行の機構に変更を加える。
制御の明示移行は,手続き分岐文又は条件文を実行することでだけ引き起こしてもよい。手続き分岐文
EXIT PROGRAMは,呼び出されたプログラム中で実行されるときだけ,制御の明示移行を引き起こす。
制御が明示的又は暗黙に移る先の段落に,文が一つもないときは,その段落に唯一CONTINUE文から
なる完結文だけがある場合と同様に実行が進む。
この規格では,上に示す規則及び各々の言語要素に関連する規則に従って制御が移る先のCOBOLの文
を指すために,“次に実行可能な文(next executable statement)”という用語を用いる。
“次に実行可能な文”がない状況としては,EXIT METHOD文,EXIT FUNCTION文,EXIT PROGRAM
文,GOBACK文又はSTOP文を実行してCOBOLソース要素の外へ制御が移る場合がある。
宣言部分の節の内部で“次に実行可能な文”がない状況としては,次の場合がある。
303
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
− 最後の文に達したが,それを含む段落は別のCOBOLの文の制御下で実行されていない。
− 最後の文に達したが,その文は異なる節中で実行された活性PERFORM文の範囲内にあり,その
PERFORM文の出口である手続きの最後の文ではない。
これらの場合に,制御の流れは規定されない。
さらに,“次に実行可能な文”が存在しない状況として,次の場合がある。
− ソース要素の最後の文に達したが,それを包含する段落は,そのソース要素中の別のCOBOLの文の
制御下で実行されてはいない。
− 終了標に達した。
− 手続き部の文が関数・メソッド・プログラムの中に一つもない。
これらの場合は,選択可能指定なしの暗黙のGOBACK文が実行される。
14.5.4 項目識別
項目識別(item identification)とは,一意名の参照を全て評価して,その一意名が参照する特定データ項
目を一意に識別する処理である。ある一意名の評価のある段階において,別な一意名又は算術式の評価が
必要になる場合は,その評価が完全に行われてから次の段階へ処理が進む。項目識別の段階のうちで,そ
の一意名に該当するものの評価は,次の順序に従って進む。
1) 現地特性識別(locale identification)
2) 関数の評価(function evaluation)
3) 文内メソッド呼出し(in-line method invocation)
4) 添字の評価(subscript evaluation)
5) オブジェクトプロパティの評価(object property evaluation)
6) 可変長データ項目の長さの評価
7) 部分参照(reference modification)
別な指定が特にない限り,項目識別は一つの一意名に対してその評価の最初の段階として行われ,一つ
の文に指定した一意名の組の評価は左から右への順に,その文の実行の最初の操作として行われる。
14.5.5 実行時要素の実行の結果
手続き部の見出しにRETURNING指定のあるプログラム,関数又はメソッドを実行した結果は,その
RETURNING指定の指すデータ項目の内容とする。
この実行の結果は,活性化された側の要素から制御が戻った後に,活性化した側の要素において,次の
とおり使用可能になる。
− その実行時要素を活性化したのがCALL文又はINVOKE文であるとき,実行の結果の所在は,その活
性化文のRETURNING指定で参照されるデータ項目の中である。
− その実行時要素を活性化したのが関数一意名又は文内メソッド呼出しであるとき,実行の結果の所在
は,その一意名で参照される一時的データ項目の中である。
14.5.6 現地特性識別
現地特性識別とは,現地特性に基づく処理に用いる特定の現地特性を,一意に識別する処理である。現
地特性識別は,次のとおりに行われる。
1) 実行単位が活性化される時点では,利用者既定解釈現地特性が実行単位にとっての,全てのカテゴリ
に対する現在有効現地特性となる。
注記 COBOLの設定した現地特性を非COBOL実行時モジュール中でも認識できるのか否か,及び
非COBOL実行時モジュールの設定した現地特性をCOBOLでも認識できるのか否かに関し
304
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ては,実装者定義とする。非COBOL実行時モジュールの設定した現地特性を使用するには,
USER-DEFAULT指定のあるSET文を実行しなければならない。
2) 実行時要素が活性化されると,実行用計算機段落にCHARACTER CLASSIFICATION句がある場合は,
指定された現地特性中のカテゴリLC̲CTYPEが,字類検査及びUPPER-CASE / LOWER-CASE組込み
関数での字類分けに用いられる。
3) 現地特性形式のSET文の実行が,一つ以上のカテゴリに対する現地特性を切り換えた場合,新たな現
地特性が実行単位にとって,切り換えられたカテゴリに対する現在有効現地特性となる。切り換えら
れなかったカテゴリに対しては,現在有効現地特性はそのまま変更されない。
4) 実行用計算機段落のPROGRAM COLLATING SEQUENCE句に指定した符号系名が,現地特性に関連
しているとき,その関連する現地特性中のカテゴリLC̲COLLATEが比較及び順序付けに用いられる
[12.2.5(実行用計算機段落)参照]。
5) SORT文又はMERGE文のCOLLATING SEQUENCE指定に書かれた符号系名が,現地特性に関連して
いるとき,その関連する現地特性中のカテゴリLC̲COLLATEがその文に対して用いられる。SORT
文又はMERGE文の実行中に現地特性を切り換えても,そのSORT文又はMERGE文の処理に関して
は有効にならない。
6) 記述にPICTURE句のLOCALE指定があるデータ項目に対して現地特性の指定があるとき,その中の
カテゴリLC̲MONETARYが,データ項目の編集及び逆編集の処理に用いられる。現地特性の指定が
ないときは,編集及び逆編集の時点で有効なカテゴリLC̲MONETARYが用いられる。
7) 引数に現地特性を指定しているLOCALE-COMPARE組込み関数に対しては,その関数一意名を評価す
るのに,指定された現地特性に由来するカテゴリLC̲COLLATEが用いられる。引数として現地特性
を指定していないときは,現在有効現地特性のカテゴリLC̲COLLATEが用いられる。
8) 引数に現地特性を指定しているLOCALE-DATE又はLOCALE-TIME組込み関数に対しては,その関
数一意名を評価するために,指定された現地特性に由来するカテゴリLC̲TIMEが用いられる。引数
として現地特性を指定していないときは,現在有効現地特性のカテゴリLC̲TIMEが用いられる。
9) 他のCOBOL実行時要素から制御が復帰するとき,復帰する側の実行時要素からの脱出時点において
各々のカテゴリに対して有効な現地特性が,そのカテゴリに対する現在有効現地特性となる。
注記 呼び出されたプログラム・関数・メソッドが,呼出し元のために行う現地特性切換えは,意
図した動作なのかもしれない。さもなければ,現地特性を入口で待避しておき出口で回復す
ることは,呼び出されたプログラム・関数・メソッドの責任である。
14.5.7 送出し側作用対象及び受取り側作用対象
ある作用対象が“送出し側作用対象である”とは,文の実行前のその作用対象の内容を,文の実行に用
いてもよい場合をいう。ある作用対象が“受取り側作用対象である”とは,文の実行によって,その作用
対象の内容が変更されてもよい場合をいう。作用対象は文によって明示的又は暗黙に参照される。幾つか
の文では,一つの作用対象が送出し受取り両用の作用対象となる。文の作用対象が送出し側,受取り側,
又は両用のいずれであるかが,文脈から判然としないときは,いずれであるかをその文の規則において規
定する。
14.5.8 データ項目内でのデータのけたよせ
基本項目内にデータを位置付けるときの標準的な規則は,受取り側データ項目の項類によって決まる。
その規則は,次による。
1) 受取り側データ項目が固定小数点数字項目と記述されている場合は,次による。
305
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
a) データは,小数点位置を合わせて受取り側のけた位置へ転記される。そのとき,必要に応じていず
れかの端にゼロ詰め又は切捨てが行われる。
b) 想定小数点が明示的に指定されていない場合,データ項目の右端の直後に想定小数点があるものと
みなして,規則1) a)と同様にけたよせが行われる。
2) 受取り側データ項目が浮動小数点数字項目と記述されている場合,そのデータのけたよせは,実装者
定義とする。
3) 受取り側データ項目が固定小数点数字編集項目であって,そのデータ記述項にPICTURE句のLOCALE
指定がない場合,データは小数点位置を合わせて編集データ項目へ転記される。そのとき,必要に応
じていずれかの端にゼロ詰め又は切捨てが行われる。ただし,編集の指定がある場合は先行ゼロ列が
置換される。
受取り側データ項目が数字編集データ項目であって,そのデータ記述項にPICTURE句のLOCALE
指定がある場合,けたよせと,ゼロ詰め又は切捨てとが行われる[13.16.38.4(編集規則)参照]。
4) 受取り側データ項目が浮動小数点数字編集項目であり,かつ,編集される値がゼロでないとき,編集
データ項目へ転記されるデータは,最左端のけたがゼロにならないよう,けたよせされる。
5) 受取り側データ項目が英字,英数字,英数字編集,各国文字,又は各国文字編集である場合,送出し
側データは所定の変換の後に,データ項目中の最左端文字位置にそろえて,受取り側文字位置へと転
記される。そのとき,必要に応じて右端に空白詰め又は切捨てが行われる。受取り側項目にJUSTIFIED
句があれば,けたよせは異なる[13.16.30(JUSTIFIED句)参照]。
6) 受取り側データ項目がブールである場合,送出し側データは,必要なら変換の後に,データ項目中の
最左端ブール位置に合わせて受取り側ブール位置へと転記される。そのとき,必要に応じて右端へゼ
ロ詰め又は切捨てが行われる。受取り側項目にJUSTIFIED句があれば,けたよせは異なる[13.16.30
(JUSTIFIED句)参照]。
注記 ある項目の用途がBITである場合,その項目がバイト境界にけたよせしてある必要はなく,
その項目の占めるバイト数が整数倍である必要もない。
14.5.9 作用対象の重なり
ある文中の送出し側と受取り側のデータ項目が,記憶域の一部又は全部を共有するが,同じデータ記述
項によって定義されてはいないとき,このような文の実行の結果は規定されない。送出し側と受取り側の
データ項目が同じデータ記述項によって定義されている文に対しては,その文の実行の結果が規定される
か否かは,該当する文に関連する一般規則によって異なる。このような作用対象の重なりを扱う規則が特
にないとき,その結果は規定されない。
部分参照の場合,部分参照によって生成される一意なデータ項目は,他のいかなるデータ記述項とも同
じデータ記述項であるとはみなされない。したがって,重なり合いの状況が発生したとき,その操作の結
果は規定されない。
14.5.10
実行単位の正常終了
実行単位が正常終了(normal run unit termination)した場合,実行時システムは次の処理を行う。
1) 開いたままの各ファイルに対して,選択可能指定のない暗黙のCLOSE文を実行する。これらの暗黙
のCLOSE文は,たとえ幾つかの実行中に誤りが起きたとしても,実行単位中にある開いたままの全
ファイルに対して実行される。これらのファイルに関連するあらゆる宣言手続きは実行されない。
2) 実行単位が通信管理システム(MCS)を用いて通信文を参照していた場合,一部だけ受信したあらゆ
る通信文を待ち行列から削除する。実行単位からSEND文で一部だけ送信した,終了符号が通信文終
306
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
了符号(EMI)でも通信群終了符号(EGI)でもない,あらゆる通信文をシステムから取り消す。
3) ALLOCATE文によって獲得されたがFREE文によって解放されてはいない,あらゆる記憶領域を解放
する。
4) 全てのインスタンスオブジェクトを削除する。
注記 オブジェクト中で開いた状態にあるファイルはオブジェクトを削除する前に閉じられる。
5) 実行単位が現地特性を用いていた場合,実行単位が活性化された時点で有効だった現地特性へと復元
するか否かは,実装者定義とする。
14.5.11
実行単位の異常終了
実行単位が異常終了(abnormal run unit termination)した場合,実行時システムは正常終了の処理を行お
うとする[14.5.10(実行単位の正常終了)参照]。異常終了の状況によっては,これらの処理のうち幾つ
か又は全ての実行が不可能なこともある。実行時システムは,実行可能な全ての処理を行う。
オペレーティングシステムにその機能がある場合,オペレーティングシステムは実行単位が異常終了し
たことを示す。
14.5.12
条件操作
14.5.12.1
例外状態
例外状態(exception condition)は,特定の例外状態指示子に関連する条件であるか,例外オブジェクト
であるかのいずれかである。例外オブジェクトとは,RAISE文の実行によって引き起こされるか,又は
RAISING指定にオブジェクトを指定したEXIT文若しくはGOBACK文の実行によって引き起こされるオ
ブジェクトである。例外状態指示子とは,各々の例外状態に対し,各々の関数・メソッド・プログラムに
対して存在する概念上の実体であって,設定済みと消去済みとの二つの状態をもつ。全ての例外状態指示
子の初期状態は,消去済みである。関連する例外が成立すると,例外状態指示子が設定される。各々の例
外状態指示子には,一つ以上の例外名が関連する。これらの例外名は,例外オブジェクトのクラス名又は
インタフェース名とともに,例外状態の検査の有効化,例外が発生した時点でとる動作の指定,及び例外
の宣言手続きの実行を引き起こした例外状態の判定をするために用いられる。
例外状態指示子のほかに,実行単位全体に対する,直前例外状態(last exception status)という概念上の
実体もある。これは,(i)実行単位内で引き起こされた最新のレベル3例外状態,(ii)例外オブジェクト
が引き起こされたこと,(iii)例外状態が成立していないこと,のいずれかを示すように設定される。SET
文を用いて,例外状態が一つも成立していない状態に設定することもできる。直前例外状態を調べるには
EXCEPTION-STATUS関数を用いればよい。直前例外状態に関する情報を参照するには,EXCEPTION-FILE
関数,EXCEPTION-FILE-N関数,EXCEPTION-LOCATION関数,EXCEPTION-LOCATION-N関数,及び
EXCEPTION-STATEMENT関数を使用する。
特定の機能又は文に対する例外状態は,既存の例外処理と同じではない。入出力文にはファイル結合子
に関連する入出力状態があるが,入出力状態は例外状態ではない。EC-I-O例外状態に対する検査が有効な
場合は結果の入出力状態の値に基づいて関連する例外状態が引き起こされるが,EC-I-O例外状態に対する
検査が有効でない場合は,EC-I-O例外状態と入出力状態の値との間に連係は存在しない。
例外状態の検査が有効で,かつ,文の実行中に例外が検出された結果として例外状態指示子が設定され
た場合,関連する例外状態が引き起こされて,直前例外状態はその例外状態を示すように設定され,既定
義オブジェクト参照EXCEPTION-OBJECTにはナルが設定される。特に他の指定がない限り,文の実行中
に二つ以上の例外が検出されたとき,どの例外状態になるのかは規定されない。その文の実行は,文の規
則,例外状態の致命度(例外名の表による)及び実装者定義の動作によっては,成功してもしなくてもよ
307
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
い。文の実行中に例外が検出されない場合又は発生した例外の検査が有効でない場合,例外状態は引き起
こされない。例外状態が引き起こされ,関連する例外宣言手続きを実行した場合,その宣言手続き中で
EXCEPTION-STATUS関数を参照すると,その宣言手続きの実行を引き起こした例外状態に関連する識別
情報が返される。あらゆる文の実行開始時点で例外状態指示子は全て消去される。
注記1 入出力状態指示子が例外状態に相当しているとはいうものの,入出力状態指示子はこの条件
操作機構からは独立している。入出力条件指示子は常に有効であって無効化はできない。
例外状態の致命度は,致命的(fatal)と非致命的(non-fatal)のいずれかとする。例外状態
のうちデータの破壊,規定外の実行経路,又は不正な結果を引き起こしそうなものは致命的
と規定されている。それ以外の例外状態は非致命的と規定されている。
例外名は3レベルの階層に構成され,検査を有効化し,宣言手続きを選択し,発生した例外を報告する
ときに使う。最上位レベルつまりレベル1は例外名EC-ALLである。レベル2を構成する例外名は,
EC-ARGUMENT,EC-BOUND,EC-DATA,EC-FLOW,EC-I-O,EC-IMP,EC-LOCALE,EC-OO,EC-ORDER,
EC-OVERFLOW,EC-PROGRAM,EC-RANGE,EC-RAISING,EC-REPORT,EC-SCREEN,EC-SIZE,
EC-SORT-MERGE,EC-STORAGE,EC-USER及びEC-VALIDATEである。最下位レベルつまりレベル3
は,レベル2の名前に,ハイフン及び追加の文字列が附加される。例外状態指示子には,最下位レベルの
例外名だけが関連付けられる。
注記2 通信機能は廃要素であるため,通信管理システム例外に対する例外名は規定されない。
実装者定義の例外に対するレベル3の例外名は,文字列 "EC-IMP-" から始まり,基本文字,基本数字,
基本特殊文字ハイフン,及び基本特殊文字下線だけからなる接尾辞で終わる例外名を,実装者が作成する
ことで定義される。とられる動作,致命度,及び例外が発生する状況は,実装者定義とする。
利用者定義の例外に対するレベル3の例外名は,文字列 "EC-USER-" から始まり,基本文字,基本数
字,基本特殊文字ハイフン,及び基本特殊文字下線だけからなる接尾辞で終わらなければならない。この
とき,ハイフン又は下線文字を接尾辞の最終文字としてはならない。その名前は,例外名を指定してもよ
い箇所に指定することによって定義される。利用者定義の例外状態は全て非致命的である。検査を有効化
するためのTURN指示を用いない限り,検査は有効化されない。利用者定義の例外状態を引き起こし得る
手段には,RAISE文及びRAISING指定のあるEXIT文又はGOBACK文がある。
全ての例外名はTURN翻訳指示に指定してもよく,これによって特定の例外状態又はそれに従属する例
外状態に対する検査を有効化したり無効化したりできる。既定解釈では,どの例外状態に対しても検査は
無効である。文の実行中に,ある例外状態の検査が無効であれば,通常ならその例外状態を引き起こすは
ずの事象が発生しても,その例外状態が引き起こされることはない。したがって,ある文の一般規則に特
定の例外状態が成立すると示されていても,それが引き起こされるのは,その例外状態に対する検査が有
効な場合に限られる。
例外オブジェクトは,非致命的例外状態とする。それ以外の例外状態は,致命的又は非致命的のいずれ
かとする[表14(例外名及び例外状態)参照]。
14.5.12.1.1
宣言手続きの通常完了
宣言手続きの実行中に次のいずれも起きないとき,その宣言手続きは“通常完了する”という。
1) この関数・メソッド・プログラム中に指定されたEXIT FUNCTION文,EXIT文 METHOD文,EXIT
PROGRAM文,GOBACK文,RESUME文又はSTOP文が,宣言手続きの実行範囲内で実行された。
2) 直接又は間接に活性化された実行時要素が,実行単位を終了させた。
308
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
14.5.12.1.2
致命的例外状態
致命的例外状態が成立したとき,文の処理には割込みが生じて,次のいずれかがこの順に起きる。
1) 割込みの生じた文にNOTのない条件指定があって,その文の規則が,その致命的例外状態を条件指
定によって処理することを示している場合は,非致命的例外用の手続きが適用される[14.5.12.1.3(非
致命的例外状態)参照]。
2) 例外状態の検査が有効であり,USE文がソース単位中に存在し,そのUSE文には例外状態に関連す
る例外名か又は同じ階層系列の上位レベルに位置する例外名が指定されている場合には,関連する宣
言手続きが実行される。その宣言手続きの実行が通常完了すると,実行単位の実行は異常終了する
[14.5.11(実行単位の異常終了)参照]。
3) 例外状態の検査が有効で,例外はEC-FLOW-GLOBAL-EXITでもEC-FLOW-GLOBAL-GOBACKでも
なく,該当するPROPAGATE ON指示が存在する場合には,GOBACK文でRAISING LAST EXCEPTION
指定のあるものを実行したのと同様に例外が伝ぱ(播)する。
4) 例外状態の検査が有効である場合,実行単位の実行は異常終了する[14.5.11(実行単位の異常終了)
参照]。
5) 例外状態の検査が有効でない場合,実行が継続されるか否か,どのように継続されるか,及び受取り
側作用対象にどのように影響するかは実装者定義とする。
致命的例外状態の検査が有効ではなく,その例外状態がコンパイラによって検出された場合,実装者は
実行可能コードを生成する必要がない。翻訳時に検出される致命的例外があるとき,翻訳時に検出される
致命的例外の種類,及びそれらが検出される状況は,実装者定義とする。
14.5.12.1.3
非致命的例外状態
例外オブジェクト以外の非致命的例外状態になったとき,例外状態に対して検査が有効であるか否かに
よって処理は異なる。有効でない場合は,その例外状態を引き起こした文の規則に従って処理が進む。特
に規則がなければ,例外状態は無視されて,処理は例外状態がなかったのと同様になる。その例外状態に
対する検査が有効である場合,文の処理には割込みが生じて,次のいずれかがこの順に起きる。
1) 割込みの生じた文にNOTのない条件指定がある場合,その条件指定に関連する無条件文が,その文
の規則に従って実行される。
2) USE文がソース単位中に存在し,そのUSE文には例外状態に関連する例外名又は同じ階層系列の上
位レベルに位置する例外名が指定されている場合には,関連する宣言手続きが実行される。その宣言
手続きの実行が通常完了すると,文の正常な実行に対する規定に従って実行が続く。割込みの生じた
文にNOT付きの条件指定があるとき,その指定中の無条件文は実行されない。
3) その文の規則に対する規定に従って文の実行が続く。
14.5.12.1.4
例外オブジェクト
例外オブジェクトが引き起こされた場合,次の動作が起きる。
1) 既定義オブジェクト参照EXCEPTION-OBJECTには,例外オブジェクトを引き起こす原因となった
RAISE文又はEXIT文若しくはGOBACK文のRAISING指定に書かれたオブジェクト参照の内容が設
定される。
2) 直前例外状態は,例外オブジェクトが引き起こされたことを示すように設定される。
例外オブジェクトがRAISE文で引き起こされた場合,関連する宣言手続きが実行される。宣言手続きの
実行が通常完了すると,RAISE文の直後の文から実行が続く。
例外オブジェクトがEXIT文又はGOBACK文で引き起こされた場合,次のいずれかが起きる。
309
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) 例外オブジェクトが,次のa),b)のいずれでもない場合には,EXIT文又はGOBACK文の実行は,こ
の文のRAISING指定に例外オブジェクトを書く代わりに EXCEPTION EC-OO-EXCEPTIONを書いた
のと同様になり,処理が続く[14.5.12.1.2(致命的例外状態)参照]。
a) EXIT文又はGOBACK文が引き起こすオブジェクト参照の記述と,その文の書かれたソース要素の
手続き部見出しのRAISING指定とで,FACTORY指定の有無が同じで,かつ,このEXIT文又は
GOBACK文の書かれたソース要素の手続き部見出しのRAISING指定に書いたクラス又はその下位
クラスに属するオブジェクト。
b) このEXIT文又はGOBACK文の書かれたソース要素の,手続き部見出しのRAISING指定に書いた
インタフェースを実装しているオブジェクト。
2) そうではなくて,該当するクラス又はインタフェースが指定されたUSE文が,活性化した側の実行時
要素に存在する場合には,関連する宣言手続きが実行される。その宣言手続きの実行が通常完了する
と,活性化した側の文の正常な実行に対する規定に従って実行が続く。
3) そうではなくて,活性化した側の実行時要素に対してPROPAGATE ON指示が有効である場合には,
RAISING LAST EXCEPTION指定付きのGOBACK文の指定が,活性化された実行時要素中にあった
かのように例外が伝ぱ(播)する。しかし,該当するクラス又はインタフェースの指定が,活性化し
た側の要素の手続き部見出しのRAISING指定に一つもなければ,GOBACK文のRAISING指定は
LAST EXCEPTIONでなくEXCEPTION EC-OO-EXCEPTIONとなる。
4) そうではない場合,活性化された実行時要素中でのEXIT文又はGOBACK文の実行は,この文の
RAISING指定中に例外オブジェクトの代わりにEXCEPTION EC-OO-EXCEPTIONを書いたのと同じ
になる。
14.5.12.1.5 例外名及び例外状態
表14(例外名及び例外状態)は,例外名及びその属性の一覧である。表中の各欄の意味を次に示す。
例外名−例外状態又は例外名の分類に関連する例外名
致命度−例外状態の分類,つまり非致命的,致命的,実装者定義のいずれか。レベル1又はレベル2の
例外状態の致命度は,発生したレベル3の例外状態に対する致命度と同じ
説明−例外状態の意味することの概略説明
表14−例外名及び例外状態
例外名
致命度
説明
EC-ALL
全ての例外
EC-ARGUMENT
引数誤り
EC-ARGUMENT-FUNCTION
致命的
関数引数誤り
EC-ARGUMENT-IMP
実装者定義
実装者定義の引数誤り
EC-BOUND
区域外
EC-BOUND-IMP
実装者定義
実装者定義の区域外
EC-BOUND-ODO
致命的
OCCURS… DEPENDINGデータ項目が区域外
EC-BOUND-PTR
致命的
ポインタデータ項目の内容であるアドレスが区域外
EC-BOUND-REF-MOD
致命的
区域外の部分参照子
EC-BOUND-SUBSCRIPT
致命的
区域外の添字
EC-DATA
データ例外
EC-DATA-CONVERSION
非致命的
不完全な文字対応のため変換が失敗
EC-DATA-IMP
実装者定義
実装者定義のデータ例外
310
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表14−例外名及び例外状態(続き)
例外名
致命度
説明
EC-DATA-INCOMPATIBLE
致命的
不適合データ例外
EC-DATA-PTR-NULL
致命的
基底付き項目ポインタ参照時の設定がNULL
EC-FLOW
実行制御の流れ違反
EC-FLOW-GLOBAL-EXIT
致命的
大域的な宣言手続き中でのEXIT PROGRAM
EC-FLOW-GLOBAL-GOBACK
致命的
大域的な宣言手続き中でのGOBACK
EC-FLOW-IMP
実装者定義
実装者定義の制御の流れ違反
EC-FLOW-RELEASE
致命的
RELEASEがSORTの範囲内にない
EC-FLOW-REPORT
致命的
USE BEFORE REPORTING手続き中でのGENERATE /
INITIATE / TERMINATE
EC-FLOW-RETURN
致命的
RETURNがMERGE / SORTの範囲内にない
EC-FLOW-USE
致命的
USE文が別のUSE手続きを実行させた
EC-I-O
入出力例外
EC-I-O-AT-END
非致命的
入出力状態 "1x"
EC-I-O-EOP
非致命的
ページ終了条件が発生
EC-I-O-EOP-OVERFLOW
非致命的
ページあふれ条件が発生
EC-I-O-FILE-SHARING
非致命的
入出力状態 "6x"
EC-I-O-IMP
実装者定義
入出力状態 "9x"
EC-I-O-INVALID-KEY
非致命的
入出力状態 "2x"
EC-I-O-LINAGE
致命的
LINAGEデータ項目の値が要求範囲外
EC-I-O-LOGIC-ERROR
致命的
入出力状態 "4x"
EC-I-O-PERMANENT-ERROR
致命的
入出力状態 "3x"
EC-I-O-RECORD-OPERATION
非致命的
入出力状態 "5x"
EC-IMP
実装者定義の例外状態
EC-IMP-接尾辞
(接尾辞は実装者定義)
実装者定義
実装者定義のレベル3例外状態
EC-LOCALE
現地特性に関連する全ての例外
EC-LOCALE-IMP
実装者定義
実装者定義の現地特性関連例外
EC-LOCALE-INCOMPATIBLE
致命的
参照した現地特性で期待の文字指定はLC̲COLLATE中にない
EC-LOCALE-INVALID
致命的
現地特性の内容が不当又は不完全
EC-LOCALE-INVALID-PTR
致命的
ポインタは保存済み現地特性を指さず
EC-LOCALE-MISSING
致命的
指定した現地特性は利用できない
EC-LOCALE-SIZE
致命的
現地特性編集で数値は切り捨てられた
EC-OO
オブジェクト指向に関連する既定義例外
EC-OO-CONFORMANCE
致命的
オブジェクトビューに対する不成功
EC-OO-EXCEPTION
致命的
例外オブジェクトが処理されなかった
EC-OO-IMP
実装者定義
実装者定義のオブジェクト指向例外
EC-OO-METHOD
致命的
要求されるメソッドが使用可能でない
EC-OO-NULL
致命的
オブジェクト参照値ナルを用いてメソッドの呼出しを行おう
とした
EC-OO-RESOURCE
致命的
オブジェクトの生成のために必要なシステム資源が不十分
EC-OO-UNIVERSAL
致命的
実行時の型検査が失敗した
EC-ORDER
順序付け例外
EC-ORDER-IMP
実装者定義
実装者定義の順序付け例外
EC-ORDER-NOT-SUPPORTED
致命的
ISO/IEC 14651の順序付け表又は順序付けレベルが提供されて
いない
EC-OVERFLOW
あふれ条件
311
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表14−例外名及び例外状態(続き)
例外名
致命度
説明
EC-OVERFLOW-IMP
実装者定義
実装者定義のあふれ例外
EC-OVERFLOW-STRING
非致命的
STRINGあふれ条件
EC-OVERFLOW-UNSTRING
非致命的
UNSTRINGあふれ条件
EC-PROGRAM
プログラム間連絡例外
EC-PROGRAM-ARG-MISMATCH
致命的
パラメタの不一致
EC-PROGRAM-ARG-OMITTED
致命的
省略された引数への参照
EC-PROGRAM-CANCEL-ACTIVE
致命的
取り消されるプログラムが活性状態
EC-PROGRAM-IMP
実装者定義
実装者定義のプログラム間連絡例外
EC-PROGRAM-NOT-FOUND
致命的
呼出し対象プログラムが見つからず
EC-PROGRAM-PTR-NULL
致命的
CALL文で用いるプログラムポインタがNULL
EC-PROGRAM-RECURSIVE-CALL 致命的
呼出し対象プログラムが活性状態
EC-PROGRAM-RESOURCES
致命的
呼出し対象プログラムで資源を使用不能
EC-RAISING
EXIT … RAISING又はGOBACK RAISING文の例外
EC-RAISING-IMP
実装者定義
EXIT … RAISING又はGOBACK RAISING文に書いた実装者定
義の例外
EC-RAISING-NOT-SPECIFIED
致命的
EXIT … RAISING又はGOBACK RAISING文のEC-IMP又は
EC-USER例外状態が手続き部見出しのRAISINGにない
EC-RANGE
範囲例外
EC-RANGE-IMP
実装者定義
実装者定義の範囲例外
EC-RANGE-INDEX
致命的
指標が負の値か又は限界を超えている
EC-RANGE-INSPECT-SIZE
致命的
INSPECT文での置換項目の大きさが異なる
EC-RANGE-INVALID
非致命的
THROUGH範囲の開始値が終了値よりも大
EC-RANGE-PERFORM-VARYING
致命的
PERFORM文で変更項目の設定が負値である
EC-RANGE-PTR
致命的
ポインタがSET UP / DOWNで範囲外
EC-RANGE-SEARCH-INDEX
非致命的
指標の初期値が範囲外のため,
SEARCHで表要素が見つからない
EC-RANGE-SEARCH-NO-MATCH
非致命的
探索基準に合致する要素がないため,
SEARCHで表要素が見つからない
EC-REPORT
報告書作成機能例外
EC-REPORT-ACTIVE
致命的
活性状態の報告書でのINITIATE
EC-REPORT-COLUMN-OVERLAP
非致命的
報告書項目の重なり
EC-REPORT-FILE-MODE
致命的
INITIATEの実行されたファイル結合子が
出力モード又は拡張モードで開かれていない
EC-REPORT-IMP
実装者定義
実装者定義の報告書作成機能例外
EC-REPORT-INACTIVE
致命的
不活性な報告書でGENERATE / TERMINATE
EC-REPORT-LINE-OVERLAP
非致命的
報告書行の重なり
EC-REPORT-NOT-TERMINATED
非致命的
活性状態の報告書のあるファイルのCLOSE
EC-REPORT-PAGE-LIMIT
非致命的
縦方向のページ限界を超えた
EC-REPORT-PAGE-WIDTH
非致命的
ページ幅を超えた
EC-REPORT-SUM-SIZE
致命的
合計カウンタのけたあふれ
EC-REPORT-VARYING
致命的
VARYING句の式が非整数
EC-SCREEN
画面操作例外
EC-SCREEN-FIELD-OVERLAP
非致命的
画面フィールドの重なり
EC-SCREEN-IMP
実装者定義
実装者定義の画面操作例外
EC-SCREEN-ITEM-TRUNCATED
非致命的
行に対して画面フィールドが長すぎる
EC-SCREEN-LINE-NUMBER
非致命的
画面項目の行位置が端末の大きさを超えた
EC-SCREEN-STARTING-COLUMN
非致命的
画面項目の開始位置が行の大きさを超えた
312
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表14−例外名及び例外状態(続き)
例外名
致命度
説明
EC-SIZE
けたあふれ例外
EC-SIZE-ADDRESS
致命的
ポインタ増減の算術評価が不当
EC-SIZE-EXPONENTIATION
致命的
べき乗演算規則の違反
EC-SIZE-IMP
実装者定義
実装者定義のけたあふれ例外
EC-SIZE-OVERFLOW
致命的
計算での算術けたあふれ
EC-SIZE-TRUNCATION
致命的
格納での有効けた切捨て
EC-SIZE-UNDERFLOW
致命的
浮動小数点の下位けたあふれ
EC-SIZE-ZERO-DIVIDE
致命的
ゼロによる除算
EC-SORT-MERGE
SORT/MERGEの例外
EC-SORT-MERGE-ACTIVE
致命的
既に活性状態のファイルに対して
SORT/MERGEを実行
EC-SORT-MERGE-FILE-OPEN
致命的
USING / GIVINGファイルが
SORT/MERGE実行の場面で開いている
EC-SORT-MERGE-IMP
実装者定義
実装者定義のSORT/MERGE例外
EC-SORT-MERGE-RELEASE
致命的
RELEASEレコードが長すぎる又は短すぎる
EC-SORT-MERGE-RETURN
致命的
RETURNの実行はファイル終了条件発生中
EC-SORT-MERGE-SEQUENCE
致命的
ファイルに対する順序誤り
EC-STORAGE
記憶領域割当て例外
EC-STORAGE-IMP
実装者定義
実装者定義の記憶領域割当て例外
EC-STORAGE-NOT-ALLOC
非致命的
FREE文のポイント先が割当て記憶領域ではない
EC-STORAGE-NOT-AVAIL
非致命的
ALLOCATE文の記憶領域要求量が割当て不能
EC-USER
利用者定義の例外状態
EC-USER-接尾辞
(接尾辞は利用者規定)
非致命的
レベル3の利用者定義の例外状態
EC-VALIDATE
VALIDATE例外
EC-VALIDATE-CONTENT
非致命的
VALIDATEの内容誤り
EC-VALIDATE-FORMAT
非致命的
VALIDATEの形式誤り
EC-VALIDATE-IMP
実装者定義
実装者定義のVALIDATE例外
EC-VALIDATE-RELATION
非致命的
VALIDATEの比較誤り
EC-VALIDATE-VARYING
致命的
VARYING句の式が非整数
14.5.12.2 不適合データ
不適合データ(incompatible data)が発生するのは,送出し側作用対象の内容が正しくないときであり,
次の2種類の場合がある。
1) 文の実行中にブール又は数字の送出し側作用対象の内容が参照される場合,その送出し側作用対象の
内容が,ブール又は数字の字類条件では偽と評価されるであろう内容であるとき,このような参照の
結果は規定されず,EC-DATA-INCOMPATIBLE例外状態になる。ただし,次の状況は除く。
− 送出し側項目が字類条件で参照されている。
− 送出し側項目がVALIDATE文で処理されている。
項目識別中に不当なデータが検出されると,字類条件の場合及びVALIDATE文の場合に対しても
EC-DATA-INCOMPATIBLE例外状態になる。
注記 例えば,字類検査中に,添字の参照でEC-DATA-INCOMPATIBLE例外状態になり得る。
313
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
2) 数字編集データ項目が,逆編集するMOVE文の送出し側作用対象であって,かつ,そのデータ項目の
内容が,いかなる編集操作に対しても結果として生じるはずのない内容であるとき,そのMOVE操作
の結果は規定されず,EC-DATA-INCOMPATIBLE例外状態になる。
文の実行において,送出し側作用対象の内容が参照されないときは,その作用対象中に不適合データは
検出されない。文の実行において,送出し側作用対象の内容の一部が参照されないとき,その未参照部分
に不適合データが検出されるか否かは,規定されない。
注記 データ項目が受取り側作用対象であるとき,同時に送出し側でない限りは,そのデータ項目の
内容は参照されない。
14.6 文に共通な指定及び規則
ここでは,幾つかの異なる文に関係するか又は現れる共通な指定及び規則を定める。
14.6.1 ファイル終了条件
ファイル終了条件は,整列併合用ファイルに又はファイル結合子の入出力状態に関連する。整列併合用
ファイルでは,引き渡された全てのレコードが整列操作又は併合操作から引き取られ,整列又は併合され
たレコードが残っていない場合に,ファイル終了条件になる。その整列併合用ファイルを参照している
SORT文又はMERGE文の実行が終了した時点で,ファイル終了条件はもはや成立しなくなる。それ以外
のファイルでファイル終了条件が成立するのは,関連するファイル結合子の入出力状態の先頭けたが "1"
の場合である。
14.6.2 無効キー条件
無効キー条件は,整列併合用ファイルではないファイル結合子の入出力状態に関連する。無効キー条件
が成立するのは,関連ファイル結合子の入出力状態の先頭けたが "2" の場合である。
14.6.3 ROUNDED指定
小数点の位置合せの後,算術演算の結果の小数部のけた数が,結果の一意名中で小数部用に用意された
けた数より多いときは,結果の一意名のけた数に従って切捨てが行われる。四捨五入の要求がある場合,
切捨て部分の最上位けたの値が5以上であるときに,結果の一意名の最下位けたの絶対値が1増やされる。
結果の一意名中における整数部分の下位けたがPICTURE記号"P"で表されている場合に,四捨五入又は
切捨てが起こる位置は,記憶域に割り当てられている最右端の整数けた位置とする。
14.6.4 SIZE ERROR指定及びけたあふれ条件
けたあふれ条件は,算術文(ADD,COMPUTE,DIVIDE,MULTIPLY,SUBTRACT)を実行した結果,
又は算術式を評価した結果,起こることがある。けたあふれ条件の検査を有効にするためには,次の方法
を用いればよい。
− SIZE ERROR指定を算術文に指定する。
− TURN指示でEC-SIZE例外状態の検査を有効にする。
算術文にSIZE ERROR指定を書いた場合,その算術文の展開及び結果の格納のときに起きる算術演算に
対して,けたあふれ条件の検査が有効になる。算術文の実行中,使用する作用対象に対して項目識別を行
う段階で例外状態が発生したときは,それがEC-SIZEである場合も含めて,その例外状態に対する規定の
とおりに処理が行われ,算術文の実行は打ち切られる。算術文より後の実行が再開されるか否かは,その
例外状態に対する致命度に従う。算術文の実行中,項目識別以外の段階でEC-SIZE例外状態が成立して,
その文にSIZE ERROR指定があるときは,後述のようにSIZE ERROR指定に対するけたあふれ条件の処理
が行われ,EC-SIZE例外宣言手続きはあっても実行されない。
けたあふれ条件が発生するのは,次の場合である。
314
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) べき乗の評価の規則に違反したとき。
2) 除算の演算中の又はDIVIDE文の除数がゼロであるとき。
3) 小数点の位置を合わせて,ROUNDED指定がある場合は四捨五入を行った後,算術文の結果の絶対値
が,関連する結果のデータ項目中に収め得る最大の値を超えたとき。
4) 標準算術がソース単位に対して指定されている場合,又は中間データ項目に許される値の範囲を検査
すると実装者が定義している場合で,中間データ項目に対して算術演算を実行すると,新しい値が許
容範囲外になるとき。
5) ある文又はある算術式の規則が明示的にEC-SIZE例外状態になると規定しているとき。
けたあふれ条件が発生し,かつ,SIZE ERROR指定があるとき,次のことが起きる。
1) 算術文によって指定された算術演算の間にけたあふれ条件が起きた場合,結果のデータ項目の値は全
て,その算術文の実行開始時点の値から変わらない。下に示す規則3) に従って実行が進む。
2) 算術演算の結果の絶対値が,結果の一意名のいずれかについて,許される最大の値を超えている場合,
その結果の一意名の内容は,その算術文の実行開始時点の内容から変わらない。けたあふれ条件にな
らなかった結果の一意名の値は,けたあふれ条件がいずれの結果の一意名に対しても起こらなかった
場合の値と同じである。下に示す規則3) に従って実行が進む。
3) 算術演算が完了した後,及び規則2) に従って値を結果のデータ項目に格納した後,SIZE ERROR指
定中の無条件文へ制御が移り,無条件文中の各文の規則に従って実行が続く。明示的に制御の移行を
引き起こす手続き分岐文又は条件文が実行されれば,その文の規則に従って制御が移る。さもなけれ
ば,SIZE ERROR指定の無条件文の実行が完了した後,算術文の終わりに制御が移る。NOT SIZE
ERROR指定はあっても無視される。
けたあふれ条件が発生し,かつ,SIZE ERROR指定がないとき,次のことが起きる。
1) べき乗の評価の規則に違反したとき,EC-SIZE-EXPONENTIATION例外状態になる。
2) 除算の演算中又はDIVIDE文の除数がゼロであるとき,EC-SIZE-ZERO-DIVIDE例外状態になる。
3) 算術文の結果の絶対値が,関連する結果のデータ項目中に収め得る最大の値を超えたとき,
EC-SIZE-TRUNCATION例外状態になる。
4) 中間データ項目に対する算術演算によって生じる新しい値が許容範囲外になりかけたとき,該当する
EC-SIZE例外状態つまりEC-SIZE-OVERFLOW又はEC-SIZE-UNDERFLOWのいずれかになる。
その後は,14.5.12.1.2(致命的例外状態)に従って処理が進む。NOT SIZE ERROR指定は,あっても無
視される。
算術文若しくは算術式に指定された算術演算の実行中,又は結果の一意名へ値を格納する処理中に,け
たあふれ条件が発生しなかった場合,SIZE ERROR指定はあっても無視され,算術文若しくは算術式の終
わりに制御が移るか,又はNOT SIZE ERROR指定があればその無条件文に制御が移る。後者の場合は,無
条件文中の各文の規則に従って実行が続く。明示的な制御の移行を引き起こす手続き分岐文又は条件文が
実行されれば,その文の規則に従って制御が移る。さもなければ,NOT SIZE ERROR指定の無条件文の実
行が完了した後,算術文の終わりに制御が移る。
14.6.5 CORRESPONDING指定
この議論上,D1とD2とは,英数字,ビット,各国文字又は強い型付けの集団項目を表す一意名とする。
注記 D1とD2とが各国文字集団又はビット集団を表している場合,D1とD2とは基本項目としてで
はなく集団項目として処理される。英数字集団及び強い型付けの集団項目は通常どおりに集団
項目として処理される。
315
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
次の場合,一対のデータ項目が“対応している”(corresponding)とする。
1) D1に属するあるデータ項目,及びD2に属するあるデータ項目は,暗黙にも明示的にもキーワード
FILLERで記述されてはおらず,同じデータ名をもち,修飾語がある場合はD1とD2の直前まで修飾
語の系列が同じである。
2) MOVE文では,少なくとも一方のデータ項目は基本データ項目であり,結果として行われる転記は
MOVE文の規則に従って正当なものである。
3) ADD文又はSUBTRACT文では,両方のデータ項目が数字データ項目である。
4) いずれのデータ項目も,OCCURS句,REDEFINES句,又はRENAMES句を含まず,用途は指標でも
オブジェクトでもポインタでもない。
5) いずれのデータ項目も,D1又はD2に従属してOCCURS句又はREDEFINES句を含んでいる集団項
目には従属していない。
6) これら1)〜5) の条件を満足する各データ項目の名前は,暗黙の修飾語を適用した後,一意になる。
対応している作用対象の対に関連する項目識別は,CORRESPONDING指定がある文の実行開始時に行
われるのであって,その作用対象の対に対する各々の暗黙の文の開始時に行われるのではない。暗黙の文
が実行される順序は,CORRESPONDINGの直後に書いた集団データ項目中に基本項目を指定した順序と
する。
CORRESPONDING指定のある算術文に対し,SIZE ERROR指定があって暗黙の文の一つがけたあふれ
条件を引き起こした場合,暗黙の文の全てが完了した後にSIZE ERROR指定中の無条件文が実行されNOT
SIZE ERROR指定はあっても無視される。
CORRESPONDING指定のある算術文に対し,SIZE ERROR指定がなくて暗黙の文の一つがけたあふれ
条件を引き起こした場合,暗黙の文の全てが完了した後に,けたあふれ条件を最後に引き起こした暗黙の
文に対して,レベル3のEC-SIZE例外状態になる。
CORRESPONDING指定のある文に対し,暗黙の文の一つがEC-DATA-INCOMPATIBLE例外状態になり
そうな場合,暗黙の文の全てが完了した後に,EC-DATA-INCOMPATIBLE例外状態になる。
14.6.6 算術文
算術文は,ADD文,COMPUTE文,DIVIDE文,MULTIPLY文及びSUBTRACT文である。これらには
幾つか共通な機能がある。
1) 作用対象のデータ記述が同じである必要はない。計算の過程で,全ての必要な変換及び小数点の位置
合せを行う。
2) 固有算術が有効である場合,ADD文,DIVIDE文,MULTIPLY文及びSUBTRACT文に対して,次を
適用する。
a) 作用対象の中に組込み関数が一つもなく,かつ,データ項目であって用途が2進文字,2進短精度,
2進長精度,2進倍精度,浮動短精度,浮動長精度,浮動拡張精度のいずれかと記述されたものが一
つもない場合は,ADD文,DIVIDE文,MULTIPLY文及びSUBTRACT文の作用対象の合成が31
けたを超えてはならない。
b) 作用対象の中に組込み関数が一つ以上ある場合,又はデータ項目であって用途が2進文字,2進短
精度,2進長精度,2進倍精度,浮動短精度,浮動長精度,浮動拡張精度のいずれかと記述されたも
のが一つ以上ある場合は,これらを除いた作用対象の合成が31けたを超えてはならない。
作用対象の合成とは,文中に指定した作用対象を,小数点位置を合わせて重ね合わせた結果できる
仮想データ項目である。
316
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
3) 標準算術が有効である場合,各々の算術文は1個以上の算術式で定義される。標準中間データ項目を
結果の一意名へ格納する処理は,MOVE文の規則による。ROUNDED指定は,この転記に対してだけ
適用される。
注記 標準算術が有効であるとき,最後に行う転記の処理中だけではなく,結果を計算するために
用いる算術演算の実行中にも,けたあふれ条件が起こることがある。
4) 算術文のもつ結果の一意名は,単一のことも複数のこともある。これらの文では,結果の一意名への
格納の規則は共通である。これらの文の実行は,次の順序で進む。
a) この文の開始時評価を行い,その演算の結果を中間データ項目に格納する。標準算術が有効である
とき,標準中間データ項目を用い,さもなければ実装者定義の中間データ項目を用いる。データ項
目又は定数のいずれがこの評価の一部であるかを示す規則は,個々の文の規則による。開始時評価
に関係するデータ項目の項目識別は全て,この文の実行開始時に行う。開始時評価の途中でけたあ
ふれ条件が起きたときは,結果のデータ項目は一つも変更されず,14.6.4(SIZE ERROR指定及びけ
たあふれ条件)に従って実行が進む。
b) この中間データ項目を,結果データ項目群へ一つずつ格納したり,結合して格納したりする。この
処理は,この文に受取り側データ項目を書いた順序で左から右へ進む。受取り側データ項目の項目
識別が行われるのは各データ項目が参照される時点であるが,ただし,a) の段階で識別が済んでい
ればこの限りでない。結果データ項目へ格納しようとする途中でけたあふれ条件が起きたときは,
その結果データ項目だけは変更せず,すぐ右にある次の結果データ項目へ実行が進む。
14.6.7 THROUGH指定
この仕様はVALUE句及びEVALUATE文に書いたTHROUGH指定に適用する。
THROUGH指定は,定数1〜定数2の値の範囲を指定する。この範囲内に含まれる値の組を決める規則
は,次による。
1) 値の範囲を数字定数によって定義する場合,値の範囲には定数1,定数2,及び定数1〜定数2の間に
ある全ての代数値が含まれる。
2) 値の範囲を英数字定数又は各国文字定数によって定義する場合,値の範囲は,範囲を評価するために
どの文字照合順序を用いるかによって異なる。
範囲に対して“IN 符号系名”の指定がない場合,文字照合順序は実装者定義とする。
注記 この規定の意図は,以前のCOBOL実装系と整合性のある方式で文字照合順序を定義するこ
とを,実装者に許すことである。
“IN 符号系名”の指定がある場合,範囲を評価するために用いられる文字照合順序は,その符号
系が定義する文字照合順序とする。その符号系が現地特性に関連する場合,値の範囲は,その符号系
名に関連する特定現地特性のカテゴリLC̲COLLATEから決まる。特定の現地特性に関連しない場合,
現在有効現地特性のカテゴリLC̲COLLATEから決まる。その符号系が固有文字照合順序に関連する
場合,その値を実行に用いる時点で計算機の実行時文字照合順序を用いる。
この値の範囲には,開始値に照合する全ての値と,該当する文字照合順序に従い昇順に連続する値
が終了値に至るまで全てと,終了値に照合する全ての値とが含まれる。
実行時に有効な文字照合順序で定数1の値が定数2の値より大である場合,EC-RANGE-INVALID
例外状態になる。その後,例外処理があればそれが完了した後に,値の範囲が空である場合と同様に
して実行が進む。
317
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
14.6.8 RETRY指定
RETRY指定は,入出力文中に指定して,ファイル又はレコードが施錠されていたとき,大容量記憶管理
システムが呼出し試行を続けるかどうかを指示する。
14.6.8.1 一般形式
RETRY
算術式1 TIMES
FOR 算術式2 SECONDS
FOREVER
14.6.8.2 一般規則
1) 算術式1は,施錠されている資源への呼出し権を大容量記憶管理システムが獲得しようとして最初に
失敗してから,入出力操作の要求を完了するまでの再試行の回数を指定する。これらの再試行の間隔
は,実装者が決定する。算術式1の評価が整数でなければ,算術式1の値はその次の整数へ切り上げ
られる。
2) 算術式2は,処理中断期間の秒数を指定する。入出力文の振る舞いは,この規則が指定する方法で,
PICTUREが9(n)V9(m) である一時的データ項目に処理中断期間の長さを格納してあるのと同様とす
る。mの値(ゼロでもよい)とnの値(ゼロ以下は不可)は,実装者定義とする。算術式2の有意な
最大値は,実装者定義とする。算術式2がこの有意な最大値より大きければ,一時的データ項目には
その最大値を設定する。さもなければ,算術式2を送出し側項目とし一時的データ項目を受取り側項
目として用いた,ROUNDED指定のない暗黙のCOMPUTE文を実行する。処理中断の期間中,大容量
記憶管理システムは,施錠されている資源の呼出し権を獲得する試みを繰り返して,入出力操作の要
求を完了させる。処理中断中の再試行の頻度を決めるために用いる技法は,実装者定義とする。
3) FOREVER指定がある場合,大容量記憶管理システムは,施錠されている資源への呼出し権を獲得す
る試みを,入出力操作が完了してしまうまで繰り返す。
4) 入出力操作の最初の試みが不成功となった理由が,ファイル共用不整合条件又はレコード操作不整合
条件である場合,次を適用する。
a) RETRY指定がない場合,又は算術式1若しくは算術式2の評価結果が負若しくはゼロである場合,
この文は不成功に終わって,ファイル結合子の入出力状態には適切な値が設定され,該当する文の
実行不成功に対する規定に従って実行が進む。
b) さもなければ,大容量記憶管理システムは,一般規則1),2) 又は3) に従って入出力操作を完了さ
せようとする。
これらの呼出し要求のいずれかを大容量記憶管理システムが許していると,この文は成功して,
ファイル共用不整合又はレコード操作不整合が起きなかったのと同じ結果となる。
それ以外の場合は,この文が不成功となって,ファイル結合子の入出力状態には適切な値が設定
され,該当する文の実行不成功に対する規定に従って実行が進む。
14.7 パラメタ及び返却項目の適合
パラメタ及び返却項目の適合規則は,構文規則から明示参照されている場合,翻訳時に適用される。
注記1 次のものに対しては,パラメタ及び返却項目の適合規則が翻訳時に検査される。
− INVOKE文であって呼出し対象が非限定オブジェクト参照ではないもの
− 利用者定義関数の引用
− プログラム原型形式のCALL文
パラメタ及び返却項目の適合規則は,一般規則から明示参照されている場合,実行時に適用される。
318
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
注記2 次のものに対しては,パラメタ及び返却項目の適合規則が実行時に検査される。
− 非限定オブジェクト参照(EC-OO-UNIVERSAL例外状態が有効なとき)
− あふれ形式及び例外形式のCALL文(EC-PROGRAM-ARG-MISMATCH例外状態が有効
なとき)
注記3 オブジェクトビューに対しては,パラメタ及び返却項目の適合規則が翻訳時に検査される。
オブジェクトビューの指すオブジェクトに対する更なる適合規則を,オブジェクトビューの
規則中に示してあるが,これらは実行時に検査される(EC-OO-COMFORMANCE例外状態が
有効なとき)。
14.7.1 パラメタ
活性化する側の要素の引数の個数は,活性化される側の要素の仮パラメタの個数と等しくなければなら
ない。ただし,活性化される側の要素の手続き部見出し中で後続の仮パラメタにOPTIONAL指定があり,
活性化する側の要素の引数の並びからも省略されている場合はこの限りでない。
引数とそれに対応する仮パラメタの両方が基本項目であれば,基本項目に対する適合規則を適用する。
さもなければ,集団項目に対する適合規則を適用する。
注記 ビット集団又は各国文字集団は,基本項目として扱われる。
14.7.1.1 集団項目
仮パラメタと引数のいずれかが英数字集団項目であり,いずれも強い型付けでない場合は,次による。
1) 引数が参照渡しであるとき,その引数又は対応する仮パラメタは,英数字集団項目であるか又は字類
が英数字の基本項目でなければならず,仮パラメタは対応する引数と同じか又はより少ないバイト数
をもつように記述されていなければならない。
2) 引数が内容渡しであるとき,適合規則は,引数を送出し側とし仮パラメタを受取り側としたMOVE文
に対する規則と同じである。
注記 引数はレベル番号が1でない集団項目であって,その従属項目群は実装系によって遊びビッ
ト又は遊びバイトが挿入されるよう記述されているとき,この従属基本項目群のけたよせは
引数と仮パラメタとの間で,対応がつかないかもしれない。
仮パラメタと対応する引数のいずれかが強い型付けの集団項目である場合,両方とも同じ型でなければ
ならない。
可変反復データ項目と記述された参照渡しの引数又は仮パラメタでは,最大長が用いられる。内容渡し
の可変反復データ項目では,引数の長さは送出し側データ項目に対するOCCURS句の規則で決まる。
14.7.1.2 基本項目
基本項目の適合規則は,引数の引渡し方法が,参照渡し,内容渡し又は値渡しのどれであるかによって
異なる。
14.7.1.2.1 参照渡しの基本項目
仮パラメタ又は対応する引数のいずれかがオブジェクト参照である場合,対応する引数又は仮パラメタ
もオブジェクト参照で,次の規則に従うものでなければならない。
1) 引数と仮パラメタのいずれかが非限定オブジェクト参照である場合,対応する仮パラメタ又は引数も
非限定オブジェクト参照でなければならない。
2) 引数と仮パラメタのいずれかの記述にインタフェース名がある場合,対応する仮パラメタ又は引数も
記述中に同じインタフェース名がなければならない。
3) 引数と仮パラメタのいずれかの記述にクラス名がある場合,対応する仮パラメタ又は引数の記述中に
319
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
同じクラス名があって,FACTORY指定及びONLY指定の有無も同じでなければならない。
4) 仮パラメタの記述にACTIVE-CLASS指定がある場合,次のいずれかの条件が成立しなければならな
い。
a) 引数が,その記述中にACTIVE-CLASS指定のあるオブジェクト参照で,FACTORY指定の有無が仮
パラメタと同じであり,かつ,活性化するメソッドが,既定義オブジェクト参照SELF,SUPER,
又は記述中にACTIVE-CLASS指定のあるオブジェクト参照を用いて呼び出されている。
b) 引数が,その記述中にクラス名及びONLY指定のあるオブジェクト参照で,FACTORY指定の有無
が仮パラメタと同じであり,かつ,活性化するメソッドが,そのクラス名を用いて,又は記述中に
そのクラス名及びONLY指定のあるオブジェクト参照を用いて呼び出されている。
仮パラメタ又は対応する引数のいずれかの字類がポインタである場合,対応する引数又は仮パラメタは
字類がポインタで項類が同じでなければならない。いずれかが制限付きポインタである場合,両方とも同
じ型への制限付きでなければならない。
仮パラメタ及び引数のいずれも字類がオブジェクト又はポインタではない場合,適合規則は次による。
1) 活性化される側の要素がプログラムであり,それに対するプログラム指定子が,活性化する側の要素
のリポジトリ段落中にはなく,CALL文にはNESTED指定がない場合,仮パラメタは,対応する引数
と同じ長さでなければならない。
2) 活性化される側の要素が次のいずれかである場合,仮パラメタの定義及び引数の定義の両方で,
BLANK WHEN ZERO句,JUSTIFIED句,PICTURE句,USAGE句及びSIGN句の指定が一致しなけ
ればならない。
− プログラムであって,それに対するプログラム指定子が,活性化する側の実行時要素のリポジトリ
段落中にある
− プログラムであって,かつ,CALL文にはNESTED指定がある
− メソッド
− 関数
ただし,PICTURE文字列の一致については,次のa) 及びb) の条件を追加する。
a) 通貨編集用記号どうしが一致するのは,対応する通貨文字列が同じである場合,かつ,その場合だ
けとする。
b) PICTURE記号のピリオドどうしが一致するのは,DECIMAL-POINT IS COMMA句が,活性化する
側とされる側の両方の実行時要素中で有効又は両方で無効な場合,かつ,その場合だけとする。
PICTURE記号のコンマどうしが一致するのは,DECIMAL-POINT IS COMMA句が,活性化する側
とされる側の両方の実行時要素中で有効又は両方で無効な場合,かつ,その場合だけとする。
さらに,次の規則を適用する。
a) PICTURE句のLOCALE指定が一致するのは,次の両方が成立する場合,かつ,その場合だけとす
る。
− 両方ともPICTURE句のLOCALE指定のSIZEに同じ指定をしている。
− 両方ともLOCALE指定の現地特性名を省いているか,又は両方ともLOCALE指定に同じ外部
識別を指定している。ここでいう外部識別とは,特殊名段落のLOCALE句において現地特性名
と関連付けられた外部現地特性名又は定数値のことである。
b) ビット集団項目は,同じ個数のビット位置をもつように記述されている基本ビットデータ項目と一
致する。
320
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
c) 各国文字集団項目は,同じ個数の各国文字位置をもつように記述されていて用途がNATIONALで
ある基本データ項目と一致する。
d) 仮パラメタの記述にANY LENGTH句があるとき,その仮パラメタの長さは対応する引数の長さと
一致するものとみなされる。
e) 引数の記述にANY LENGTH句があるとき,対応する仮パラメタの記述にANY LENGTH句がなけ
ればならない。
14.7.1.2.2 内容渡し又は値渡しの基本項目
仮パラメタがオブジェクト参照で,その記述にACTIVE-CLASS指定がある場合,次のいずれかの条件
が成立しなければならない。
1) 活性化されるメソッドは,既定義オブジェクト参照のSELF,SUPER,又は記述中にACTIVE-CLASS
指定のあるオブジェクト参照を用いて呼び出されなければならず,かつ,活性化する側の単位の中で,
引数を送出し側作用対象とし,記述中にACTIVE-CLASS指定を書き,FACTORY指定の有無が仮パラ
メタと同じであるオブジェクト参照を受取り側作用対象とするようなSET文は,妥当でなければなら
ない。
2) 活性化されるメソッドは,クラス名,又は記述中にクラス名及びONLY指定があるオブジェクト参照
を用いて呼び出されなければならず,かつ,活性化する側の単位の中で,引数を送出し側作用対象と
し,記述中にそのクラス名及びONLY指定を書き,FACTORY指定の有無が仮パラメタと同じである
オブジェクト参照を受取り側作用対象とするようなSET文は,妥当でなければならない。
仮パラメタの字類がポインタである場合,又はオブジェクト参照であってACTIVE-CLASS指定なしで
記述されている場合,適合規則は,引数を送出し側作用対象とし,仮パラメタを受取り側作用対象とした
SET文が,活性化する側の実行時要素中で実行されたのと同様とする。
仮パラメタの字類がオブジェクト又はポインタではない場合,適合規則は次による。
1) 活性化される側の要素がプログラムであり,それに対するプログラム指定子が,活性化する側の要素
のリポジトリ段落中にはなく,CALL文にはNESTED指定がない場合,仮パラメタは,対応する引数
と同じ長さでなければならない。
2) 活性化される側の要素が,次のいずれかである場合,
− プログラムであって,それに対するプログラム指定子が,活性化する側の実行時要素の
リポジトリ段落中にある
− プログラムであって,かつ,CALL文にはNESTED指定がある
− メソッド
− 関数
適合規則は,次のa)〜d) に示すとおり,仮パラメタの種類によって異なる。
a) 仮パラメタが数字である場合,適合規則は,引数を送出し側作用対象,対応する仮パラメタを受取
り側作用対象とするCOMPUTE文に対するものと同じとする。
b) 仮パラメタが指標データ項目である場合,適合規則は,引数を送出し側作用対象,対応する仮パラ
メタを受取り側作用対象とするSET文に対するものと同じとする。
c) 仮パラメタの記述にANY LENGTH句があるとき,その仮パラメタの長さは,対応する引数の長さ
と一致するものとみなされる。
d) これ以外の場合,適合規則は,引数を送出し側作用対象とし,対応する仮パラメタを受取り側作用
対象とするMOVE文に対するものと同じとする。
321
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
14.7.2 返却項目
活性化する側の文中に返却項目を指定しなければならないのは,活性化される側の要素の手続き部見出
しに返却項目が指定された場合,かつ,その場合だけとする。活性化する側の要素中で,関数か又は文内
メソッド呼出しが参照されるとき,返却項目は暗黙に指定される。
活性化される要素中の返却項目は,送出し側作用対象とする。活性化する側の要素中の,対応する返却
項目は,受取り側作用対象とする。
送出し側作用対象と受取り側作用対象の間の適合規則は,少なくとも一方が英数字集団項目であるか,
又は両方が基本項目であるかによって異なる。
注記 ビット集団又は各国文字集団は,基本項目として扱われる。
14.7.2.1 集団項目
送出し側又は受取り側の作用対象のいずれかが英数字集団項目であり,いずれも強い型付けではない場
合,対応する返却項目は英数字集団項目であるか又は項類が英数字の基本項目でなければならず,受取り
側作用対象は送出し側作用対象と同じ長さでなければならない。
注記 活性化する側の返却項目はレベル番号が1でない集団項目であってその従属項目群は実装系に
よって遊びビット又は遊びバイトが挿入されるように記述されているとき,従属基本項目群の
けたよせは活性化する側の返却項目とされる側の返却項目との間で対応しないかもしれない。
一方の作用対象が強い型付けの集団項目である場合,両方とも同じ型でなければならない。
作用対象の記述が可変反復データ項目であるとき,最大長が用いられる。
14.7.2.2 基本項目
いずれかの作用対象がオブジェクト参照である場合,対応する項目はオブジェクト参照でなければなら
ず,次の規則を適用する。
1) 活性化される要素の中の返却項目の記述にACTIVE-CLASS指定がない場合,適合規則は,活性化す
る側の要素中にSET文を想定して,活性化する側の要素中の返却項目を受取り側とし,活性化される
側の要素中の返却項目を送出し側とした場合と同様とする。
2) 活性化される要素の中の返却項目の記述にACTIVE-CLASS指定がある場合,適合規則は,活性化す
る側の要素中にSET文を想定して次の作用対象を指定した場合と同様とする。
受取り側作用対象は,活性化する側の要素中の返却項目とする。
送出し側作用対象は,次に示すオブジェクト参照とする。
a) クラス名を用いてメソッドを呼び出す場合,送出し側オブジェクト参照の記述中には同じクラス名
とONLY指定とを書く。
b) 既定義オブジェクト参照SELF又はSUPERを用いてメソッドを呼び出す場合,送出し側オブジェク
ト参照の記述中にはACTIVE-CLASS指定を書く。
c) 記述中にインタフェース名があるオブジェクト参照を用いてメソッドを呼び出す場合は,送出し側
オブジェクト参照は非限定オブジェクト参照とする。
d) その他のオブジェクト参照を用いてメソッドを呼び出す場合は,この一意名と同じ記述を送出し側
オブジェクト参照がもつものとする。
このとおり定義した送出し側の記述中にクラス名又はACTIVE-CLASS指定がある場合,FACTORY指定
の有無は,活性化される要素の返却項目中と同じとする。
送出し側作用対象がオブジェクト参照でない場合,受取り側作用対象は,次の1)〜3) を除いて,BLANK
WHEN ZERO句,JUSTIFIED句,PICTURE句,USAGE句及びSIGN句が同じでなければならない。
322
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) 通貨編集用記号どうしが一致するのは,対応し合う通貨文字列が同じである場合,かつ,その場合だ
けとする。
2) PICTURE記号のピリオドどうしが一致するのは,DECIMAL-POINT IS COMMA句が,活性化する側
とされる側の両方の実行時要素中で有効又は両方で無効な場合,かつ,その場合だけとする。
3) PICTURE記号のコンマどうしが一致するのは,DECIMAL-POINT IS COMMA句が,活性化する側と
される側の両方の実行時要素中で有効又は両方で無効な場合,かつ,その場合だけとする。
さらに,次の規則を適用する。
1) PICTURE句のLOCALE指定が一致するのは,次の両方が成立する場合,かつ,その場合だけとする。
− 両方ともPICTURE句のLOCALE指定のSIZEに同じ指定をしている。
− 両方ともLOCALE指定の現地特性名を省いているか,又は両方ともLOCALE指定に同じ外部識別
を指定している。ここでいう外部識別とは,特殊名段落のLOCALE句において現地特性名と関連付
けられた外部現地特性名又は定数値のことである。
2) ビット集団項目は,同じ個数のビット位置をもつように記述されている基本ビットデータ項目に一致
する。
3) 各国文字集団項目は,同じ個数の各国文字位置をもつように記述されていて用途がNATIONALであ
る基本データ項目に一致する。
4) 受取り側作用対象の記述にANY LENGTH句があるとき,送出し側作用対象の記述にもANY LENGTH
句がなければならない。
5) 送出し側作用対象の記述にANY LENGTH句があるとき,その送出し側作用対象の長さは受取り側作
用対象の長さと一致するものとみなされる。
14.8 文
14.8.1 ACCEPT文
ACCEPT(受取り)文は,指定したデータ項目中でデータを使用可能にする。
ACCEPT画面文の実行によって,次に示す一連の事象が生じる。
− 指定又は既定解釈の初期値が,画面の入力フィールドへ転記される。
− 画面が,端末表示画面上の指定か又は既定解釈の位置に指定属性付きで表示される。
− カーソルは,指定又は既定解釈の入力フィールドに位置付けられる。
− 端末操作員には,基本入力画面項目に修正を加える機会が与えられる。
− 端末操作員の入力したデータが不整合であれば,実装系が操作員にデータを訂正するよう促す。又は,
これによって例外状態になる。
− 画面項目の内容のうち記述に整合するものは,指定のあて先フィールドへ転記される。
− CURSOR句があれば,それが指すデータ項目に入力終了時のカーソルの行と列が設定される。
− ON EXCEPTION指定又はNOT ON EXCEPTION指定中に該当する文があれば,それが実行される。
14.8.1.1 一般形式
書き方1(ハードウェア)
ACCEPT 一意名1 [FROM 呼び名1] [END-ACCEPT]
書き方2(日付及び時刻)
323
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ACCEPT 一意名2 FROM
DATE [YYYYMMDD]
DAY [YYYYDDD]
DAY-OF-WEEK
TIME
[END-ACCEPT]
書き方3(画面)
ACCEPT 画面名1
AT
LINE NUMBER
一意名3
整数1
COLUMN
COL
NUMBER
一意名4
整数2
ON EXCEPTION 無条件文1
NOT ON EXCEPTION 無条件文2
[END-ACCEPT]
14.8.1.2 構文規則
1) 一意名1は,強い型付けの集団項目を参照したり,字類が指標,オブジェクト又はポインタのデータ
項目を参照したりするものであってはならない。
2) 呼び名1は,環境部の特殊名段落で指定されていて,ハードウェア装置と関連付けられていなければ
ならない。
3) 一意名2は,字類が英字,ブール,指標,オブジェクト又はポインタであるデータ項目であってはな
らない。
4) 画面名1が参照する集団項目中にFROM句又はVALUE句付きの画面項目が含まれてよいのは,その
集団項目中にTO句又はUSING句付きの画面項目も含まれるときだけとする。
5) 一意名3及び一意名4は,符号なし整数データ項目でなければならない。
14.8.1.3 一般規則
書き方1
1) ACCEPT文は,一意名1のデータ項目の内容を,ハードウェア装置から読み込んだデータで置換する。
ハードウェア装置と一意名1のデータ項目との間で必要とするデータの変換は,実装者定義とする。
2) 個々のハードウェア装置に対するデータ転送1回当たりの大きさは,実装者定義とする。
3) ハードウェア装置が転送可能なデータの大きさと,受取り側データ項目の大きさとが同じであるとき,
転送されたデータはそのまま受取り側データ項目に格納される。
4) ハードウェア装置が転送可能なデータの大きさと,受取り側データ項目の大きさとが同じでないとき
は,次による。
a) 受取り側データ項目の大きさ,又は受取り側データ項目の転送データが占めていない残りの部分の
大きさが,転送データの大きさを超えているとき,転送データは,受取り側データ項目の左端,又
は受取り側データ項目の転送データが占めていない残りの部分の左端に合わせて格納され,続いて
更にデータが要求される。
b) 転送データの大きさが,受取り側データ項目の大きさ,又は受取り側データ項目の転送データが占
めていない残りの部分の大きさを超えているとき,転送データの左端の部分だけが受取り側データ
項目又は残りの部分に格納され,転送データのうち受取り側データ項目に格納しきれない余分な文
324
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
字は無視される。一意名1が長さゼロの項目を指しているとき,転送データの全ての文字が無視さ
れる。
5) FROM指定を書かない場合に用いられる装置は,実装者定義とする。
書き方2
6) ACCEPT文は,プログラマが要求する情報を,MOVE文の規則に従って一意名2のデータ項目へ転送
する。DATE,DAY,DAY-OF-WEEK及びTIMEは,ACCEPT文を実行したシステムから与えられる
日付及び時間を参照する。DATE,DAY,DAY-OF-WEEK及びTIMEは仮想データ項目であり,COBOL
ソース単位中では記述しない。
7) YYYYMMDD指定のないDATEは,用途がDISPLAYで長さが6けたの符号なし整数基本データ項目
を書いたかのように振る舞う。左から右に番号付けた文字位置の内容は,次による。
文字位置
内容
1〜 2
グレゴリオ暦の年の下2けたを表す数字。
3〜 4
月を表す2けたの数字で,その範囲は01〜12。
5〜 6
日を表す2けたの数字で,その範囲は01〜31。
8) YYYYMMDD指定のあるDATEは,用途がDISPLAYで長さが8けたの符号なし整数基本データ項目
を書いたかのように振る舞う。左から右に番号付けた文字位置の内容は,次による。
文字位置
内容
1〜 4
グレゴリオ暦の年を表す4けたの数字。
5〜 6
月を表す2けたの数字で,その範囲は01〜12。
7〜 8
日を表す2けたの数字で,その範囲は01〜31。
9) YYYYDDD指定のないDAYは,用途がDISPLAYで長さが5けたの符号なし整数基本データ項目を書
いたかのように振る舞う。左から右に番号付けた文字位置の内容は,次による。
文字位置
内容
1〜 2
グレゴリオ暦の年の下2けたを表す数字。
3〜 5
通日を表す3けたの数字で,その範囲は001〜366。
10) YYYYDDD指定のあるDAYは,用途がDISPLAYで長さが7けたの符号なし整数基本データ項目を書
いたかのように振る舞う。左から右に番号付けた文字位置の内容は,次による。
文字位置
内容
1〜 4
グレゴリオ暦の年を表す4けたの数字。
5〜 7
通日を表す3けたの数字で,その範囲は001〜366。
11) TIMEは,24時間制で真夜中からの経過時間に基づく。秒の小数部を提供する機能がシステムにない
場合,その利用不能部分にはゼロが返る。TIMEは,用途がDISPLAYで長さが8けたの符号なし整数
基本データ項目を書いたかのように振る舞う。左から右に番号付けた文字位置の内容は,次による。
文字位置
内容
1〜 2
時を表す2けたの数字で,その範囲は00〜23。
3〜 4
分を表す2けたの数字で,その範囲は00〜59。
5〜 6
秒を表す2けたの数字で,その範囲は次による。
− LEAP-SECOND指示のOFF指定が有効なとき00〜59。
− LEAP-SECOND指示のON指定が有効なとき00〜nn。ここで,nnの値は,
実装者定義とする。
325
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
7〜8
1/100秒を表す2けたの数字で,その範囲は00〜99。
ACCEPT文を実行するシステムに秒の小数部を提供する機能がなければ値00。
12) DAY-OF-WEEKは,用途がDISPLAYで長さ1けたの符号なし整数基本データ項目を書いたかのよう
に振る舞う。DAY-OF-WEEKの中で値1は月曜日を表し,値2は火曜日を,値3は水曜日を,値4は
木曜日を,値5は金曜日を,値6は土曜日を,値7は日曜日を表す。
書き方3
13) FROM句の一意名,USING句の一意名,FROM句の定数又はVALUE句の定数は,ACCEPT画面文の
実行中に,関連する画面項目に対して表示される初期値を与える。FROM,USING,VALUEのいずれ
の句もない基本画面項目の初期値は,画面項目を受取り側フィールドとするMOVE文を実行したのと
同じとする。そのMOVE文の送出し側項目は,次に示す表意定数であって,画面項目の項類によって
異なる。
画面項目
表意定数
英字
英数字SPACES
英数字
英数字SPACES
英数字編集
英数字SPACES
ブール
ZEROS
各国文字
各国文字SPACES
各国文字編集
各国文字SPACES
数字
ZEROS
数字編集
ZEROS
14) ハードウェア装置と画面名1のデータ項目との間で必要となるデータの変換は,実装者定義とする。
15) LINE指定及びCOLUMN指定は,画面名1に関連する画面レコードの,端末表示画面上の開始位置を
与える。これは,画面の1行目1列目であるところの上端行の左端列からの相対位置で表される。各々
の従属基本画面項目は,それを含んでいる画面レコードの開始位置からの相対配置となる。一意名3
及び一意名4は,文の実行開始時に一度だけ評価される。
16) LINE指定がなければ,画面レコードは1行目から始まる。
17) COLUMN指定がなければ,画面レコードは1列目から始まる。
18) カーソルの初期位置は,特殊名段落中のCURSOR句によって決まる。
a) CURSOR句の指定がない場合,ACCEPT画面文の実行中の初期カーソル位置は,画面名1内に宣言
されている最初の入力フィールドの開始位置とする。
b) CURSOR句の指定がある場合,初期カーソル位置は,ACCEPT画面文の実行開始時でのカーソル位
置指示子の値で表される。カーソル位置指示子が入力フィールド内の位置を指していない場合,カ
ーソルの位置付けはCURSOR句の指定がない場合と同様とする。
19) 操作員が各基本画面項目を修正できる間,各画面項目はその画面記述項に指定した属性に従って端末
画面上に表示される。この表示は,操作員が各々の画面項目を現在の画面項目として選択したり選択
解除したりするのに従って修正されてもよい。データを操作員が打けん(鍵)するのに従って,画面
項目の表示が変更される。
20) 現在の画面項目へ端末操作員によって入力されるデータは,その項目のPICTURE句に整合しなけれ
ばならない。画面項目が数字であるとき,入力データはNUMVAL関数への引数として受入れ可能で
なければならない。画面項目が数字編集であるとき,入力データはNUMVAL-C関数への引数として
326
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
受入れ可能でなければならない。入力データが検証される時点は,実装者定義とする。不適合データ
が入力された場合,EC-DATA-INCOMPATIBLE例外状態になるのか,それとも適合データの入力又は
ACCEPT文の実行終了までシステムが誤り状態を示したままになるのかは,実装者定義とする。
21) 不適合データが画面項目に入力され,データがそこに残留するのを実装者が許しているとき,
EC-DATA-INCOMPATIBLE例外状態が成立する。一つ以上の画面フィールドに適合データが入力済み
のとき,そのようなフィールドは,一般規則22) に従って転記されるが,不適合データの入力された
フィールドは転記されない。ACCEPT文の結果は不成功となり,一般規則25) に従って実行が進む。
22) ACCEPT画面文は,画面名1に従属しTO句又はUSING句をもつ各々の基本画面項目から,そのTO
句又はUSING句のデータ項目へ,データの転送を引き起こす。この仕様については,そのような画
面項目が全てACCEPT画面文によって参照されているものとみなされる。
この基本画面項目の二つ以上が重なり合っているときは,EC-SCREEN-FIELD-OVERLAP例外状態
になって,基本画面項目からのデータ転送の結果は実装者定義とする。
端末操作員が基本画面項目に修正を加える機会を与えられ,その操作員が終了キー,利用者定義又
は文脈依存の機能キーを押下した後,転送を行う。この転送は,次の方法に従う。
a) 画面項目が数字の場合,このデータの転送は次の文を実行したのと同様に行われる。
COMPUTE 受取り側フィールド = FUNCTION NUMVAL (画面項目)
b) 画面項目が数字編集の場合,このデータの転送は次の文を実行したのと同様に行われる。
COMPUTE 受取り側フィールド = FUNCTION NUMVAL-C (画面項目)
c) これ以外では,データの転送は次の文を実行したのと同様に行われる。
MOVE 画面項目 TO 受取り側フィールド
ここで,受取り側フィールドとはTO句又はUSING句のデータ項目である。
23) CURSOR句の指定がある場合,CURSOR句のデータ項目は更新され,ACCEPT文終了時点のカーソ
ルの行位置及び列位置を与える。この更新が起こるのは,ACCEPT画面文の実行中で,ON EXCEPTION
指定又はNOT ON EXCEPTION指定に関連する無条件文があればその実行の前である。
24) ACCEPT文の実行が正常終了で成功完了した場合,ON EXCEPTION指定はあっても無視され,
ACCEPT文の終わりに制御が移るか,又はNOT ON EXCEPTION指定があれば無条件文2に制御が移
る。無条件文2に制御が移る場合,無条件文2中の各文の規則に従って実行が続く。明示的に制御の
移行を引き起こす手続き分岐文又は条件文が実行されれば,その文の規則に従って制御が移る。さも
なければ,無条件文2の実行が完了した後,ACCEPT文の終わりに制御が移る。
25) ACCEPT文の実行が不成功完了した場合,機能キーの打けん(鍵)で終了する場合,又はEC-SCREEN
例外状態になった場合,次のいずれかが起こる。
a) ACCEPT文にON EXCEPTION指定があれば,無条件文1に制御が移る。その後,無条件文1中の
各文の規則に従って実行が続く。明示的に制御の移行を引き起こす手続き分岐文又は条件文が実行
されれば,その文の規則に従って制御が移る。さもなければ,無条件文1の実行が完了した後,
ACCEPT文の終わりに制御が移り,NOT ON EXCEPTION指定はあっても無視される。
b) ACCEPT文にON EXCEPTION指定がなく,該当する宣言手続きが存在するとき,その宣言手続き
に制御が移る。その宣言手続きから制御が戻った場合,ACCEPT文の終わりに制御が移り,NOT ON
EXCEPTION指定はあっても無視される。
c) ACCEPT文にON EXCEPTION指定がなく,該当する宣言手続きが存在しないときは,次による。
1. EC-DATA-INCOMPATIBLE例外状態である場合,実行が続く[14.5.12.1.2(致命的例外状態)参照]。
327
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
2. EC-DATA-INCOMPATIBLE例外状態でない場合,ACCEPT文の終わりに制御が移る。NOT ON
EXCEPTION指定はあっても無視される。
14.8.2 ADD文
ADD(加算)文は,幾つかの数字作用対象を足し合わせて,その結果を格納する。
14.8.2.1 一般形式
書き方1(単純)
ADD
一意名1
定数1
… TO {一意名2 [ROUNDED]} …
ON SIZE ERROR 無条件文1
NOT ON SIZE ERROR 無条件文2
[END-ADD]
書き方2(giving)
ADD
一意名1
定数1
… TO
一意名2
定数2
GIVING {一意名3 [ROUNDED]} …
ON SIZE ERROR 無条件文1
NOT ON SIZE ERROR 無条件文2
[END-ADD]
書き方3(corresponding)
ADD
CORRESPONDING
CORR
一意名4 TO 一意名5 [ROUNDED]
ON SIZE ERROR 無条件文1
NOT ON SIZE ERROR 無条件文2
[END-ADD]
14.8.2.2 構文規則
全ての書き方
1) 固有算術が有効であるとき,作用対象の合成[14.6.6(算術文)参照]は次のとおりに決まる。
a) 書き方1では,文中の全ての作用対象によって決まる。
b) 書き方2では,文中の作用対象のうち,語GIVINGに後続するデータ項目以外の全ての作用対象に
よって決まる。
c) 書き方3では,各々の対応するデータ項目の対に関して,対応する作用対象2個によって決まる。
書き方1,書き方2
2) 一意名1及び一意名2のデータ項目は,数字データ項目でなければならない。
3) 定数1及び定数2は,数字定数でなければならない。
書き方2
4) 一意名3のデータ項目は,数字データ項目又は数字編集データ項目でなければならない。
書き方3
5) 語CORRとCORRESPONDINGは,同義とする。
6) 一意名4及び一意名5のデータ項目は,英数字,各国文字又は強い型付けの集団項目でなければなら
ず,レベル番号66で記述してはならない。
14.8.2.3 一般規則
328
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) 書き方1を使用する場合,開始時評価において,加数値,つまり定数1又は一意名1のデータ項目の
値が決まる。定数1又は一意名1が複数個あるときの加数値は,それら作用対象の総和とする。この
開始時評価と一意名2のデータ項目の値とを合計した値が,一意名2のデータ項目の新しい値として
格納される。
標準算術が有効な場合,開始時評価の結果は,次の算術式の結果と等価とする。
(作用対象11 + 作用対象12 + … + 作用対象1n)
ここで,作用対象1の値は,このADD文中に指定した順序で定数1及び一意名1のデータ項目の
値とする。この開始時評価と一意名2のデータ項目の値とを合計した結果は,次の算術式の結果と等
価とする。
(開始時評価 + 一意名2)
ここで“開始時評価”は,その開始時評価の結果を表している。
2) 書き方2を使用する場合,開始時評価において,語GIVINGより前にある作用対象の合計,つまり定
数1又は一意名1のデータ項目の値と,定数2又は一意名2のデータ項目の値とを合計した値が決ま
る。この値が一意名3の各データ項目の新しい値として格納される。
標準算術が有効であるとき,開始時評価の結果は,次の算術式の結果と等価とする。
(作用対象11 + 作用対象12 + … + 作用対象1n + 作用対象2)
ここで,作用対象1の値は,定数1又は一意名1のデータ項目の値であって,このADD文中に指
定した順序で書いてあるものとし,作用対象2の値は,このADD文の定数2又は一意名2のデータ
項目の値とする。
3) 書き方3を使用する場合は,一意名4の従属データ項目の値を,一意名5の対応する従属データ項目
に加算してそこに格納する。
標準算術が有効であるとき,加算の結果は,次の算術式の結果と等価とする。
(作用対象1 + 作用対象2)
ここで,作用対象1の値は,一意名4の従属データ項目の値とし,作用対象2の値は一意名5の対
応する従属データ項目の値とする。
4) 固有算術が有効であり,用途が2進文字,2進短精度,2進長精度,2進倍精度,浮動短精度,浮動長
精度又は浮動拡張精度と記述されたデータ項目が作用対象の中にないとき,文の実行中に有効数字が
失われないよう,十分なけた数がとられる。
5) 一意名4内部の従属データ項目は選択されて,一意名5内部の選択された従属データ項目に加算され
る[14.6.5(CORRESPONDING指定)参照]。この結果は,利用者が対応し合う一意名を一対ずつ別々
のADD文中に書いて参照したのと同じである。
6) この文に関連するこれ以上の規則と説明は,14.5.9(作用対象の重なり),14.5.12.2(不適合データ),
14.6.3(ROUNDED指定),14.6.4(SIZE ERROR指定及びけたあふれ条件),14.6.5(CORRESPONDING
指定)及び14.6.6(算術文)による。
14.8.3 ALLOCATE文
ALLOCATE(割付け)文は,動的に記憶域を獲得する。
基底付き項目用の記憶域要求のときは,獲得した記憶域のアドレスを基底付き項目に割り当て,データ
ポインタの指定がある場合,そのアドレスの入ったデータポインタを返す。
文字数を指定した記憶域要求のときは,獲得した記憶域のアドレスをもつデータポインタを返す。
14.8.3.1 一般形式
329
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ALLOCATE
算術式1 CHARACTERS
データ名1
[INITIALIZED] [RETURNING データ名2]
14.8.3.2 構文規則
1) データ名1のデータ項目は,BASED句付きで記述されていなければならない。
2) データ名1を指定したときは,RETURNING指定を省略してもよい。さもなければ,RETURNING指
定を必ず指定しなければならない。
3) データ名2は,項類がデータポインタであるデータ項目でなければならない。
4) データ名2が制限付きデータポインタを指しているときは,データ名1の指定があって型付きデータ
項目でなければならず,データ名2のデータ項目はデータ名1の型に制限されていなければならない。
5) データ名1とデータ名2との両方の指定があり,データ名1が強い型付けのデータ項目を指している
ときは,データ名2のデータ項目は,データ名1の型に制限されていなければならない。
14.8.3.3 一般規則
1) 算術式1は,割当て対象の記憶域の大きさをバイト数で指定する。算術式1が整数と評価されない場
合,結果は次の整数へと切り上げられる。
2) 算術式1が0又は負の値と評価された場合,データ名2のデータ項目には既定義アドレスNULLが設
定される。
3) データ名1を指定した場合,割当て対象の記憶域の大きさは,データ名1によって記述される項目を
保持するのに必要なバイト数となる。データ名1に従属するデータ記述項の一つにOCCURS
DEPENDING ON句がある場合は,そのレコードの最大長が割り当てられる。
4) 指定した大きさの記憶域が割当て可能な場合は,記憶域が獲得されて,次による。
a) RETURNING指定があるとき,データ名2のデータ項目に記憶域のアドレスが設定される。
b) データ名1の指定があるとき,データ名1の基底付きデータ項目のアドレスに記憶域のアドレスが
設定される。
5) 指定した大きさの記憶域が割当て不可能な場合は,次による。
a) RETURNING指定があるとき,データ名2のデータ項目に既定義アドレスNULLが設定される。
b) データ名1の指定があるとき,データ名1の基底付きデータ項目のアドレスに,既定義アドレス
NULLが設定される。
c) EC-STORAGE-NOT-AVAIL例外状態になる。
6) INITIALIZED指定と算術式1の両方がある場合は,割り当てられた記憶域の全てのバイトは2進値の
ゼロで初期化される。
7) INITIALIZED指定とデータ名1の両方がある場合は,割り当てられた記憶域は初期化されるが,この
初期化は,INITIALIZE データ名1 WITH FILLER ALL TO VALUE THEN TO DEFAULT文を実行したの
と同様に行われる。
8) INITIALIZED指定がなくて算術式1が指定された場合,割り当てられた記憶域の内容は規定されない。
9) INITIALIZED指定がなくてデータ名1が指定された場合,割り当てられた記憶域中のデータ項目で,
字類がオブジェクト又はポインタであるものは,ナル値へと初期化される。割り当てられた記憶域中
にあるその他のデータ項目の内容は,規定されない。
10) 割り当てられた記憶域は,FREE文によって明示的に解放されるか又は実行単位が終了するかのいず
れかが先に起こるまで存続する。
330
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
14.8.4 CALL文
CALL(呼出し)文は,実行単位内の特定のプログラムに制御を移す。
14.8.4.1 一般形式
書き方1(あふれ指定)
CALL
一意名1
定数1
USING
[BY REFERENCE] {一意名2} …
BY CONTENT {一意名2} …
…
[RETURNING 一意名3]
[ON OVERFLOW 無条件文1]
[END-CALL]
注記 ON OVERFLOWは旧式の書き方であり,使用しないほうがよい。
書き方2(例外指定)
CALL
一意名1
定数1
USING
[BY REFERENCE] {一意名2} …
BY CONTENT {一意名2} …
…
[RETURNING 一意名3]
ON EXCEPTION 無条件文1
NOT ON EXCEPTION 無条件文2
[END-CALL]
書き方3(プログラム原型)
CALL
一意名1
定数1
AS
NESTED
プログラム原型名1
USING
[BY REFERENCE]
一意名2
OMITTED
[BY CONTENT]
算術式1
ブール式1
一意名4
定数2
[BY VALUE]
算術式1
一意名4
定数2
…
[RETURNING 一意名3]
ON EXCEPTION 無条件文1
NOT ON EXCEPTION 無条件文2
[END-CALL]
14.8.4.2 構文規則
全ての書き方
1) 一意名1は英数字,各国文字又はプログラムポインタのデータ項目として定義しなければならない。
2) 定数1は,英数字又は各国文字の定数でなければならない。
3) 一意名2は,アドレス一意名であるか,ファイル節,作業場所節,局所記憶節,連絡節又は通信節中
で定義されたデータ項目を指しているかの,いずれかでなければならない。BY REFERENCEを明示
的又は暗黙に指定している場合,一意名2が,ファクトリ又はインスタンスオブジェクトの,作業場
所節又はファイル節中で定義されていてはならない。
331
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4) 一意名2に対してBY REFERENCEを明示的にも暗黙にも指定しない場合,又は一意名2がアドレス
一意名である場合,一意名2は送出し側作用対象とする。
5) 一意名2に対してBY REFERENCEを明示的又は暗黙に指定した場合であって,一意名2がアドレス
一意名でない場合,一意名2は受取り側作用対象とする。
6) 一意名2にBY REFERENCEを明示的又は暗黙に指定して,それがビットデータ項目である場合,一
意名2は次のとおりでなければならない。
a) 一意名2の添字付け及び部分参照は,固定小数点数字定数又は算術式だけからなる。その算術式は,
全ての作用対象が固定小数点数字定数であって,べき乗演算子の指定はない。
b) バイト境界にけたよせされている。
7) 一意名3は,ファイル節,作業場所節,局所記憶節,連絡節又は通信節中で定義したデータ項目でな
ければならない。
8) 一意名3がビットデータ項目である場合,一意名3の記述は次のとおりでなければならない。
a) 一意名3の添字付け及び部分参照は,固定小数点数字定数又は算術式だけからなる。その算術式は,
全ての作用対象が固定小数点数字定数であって,べき乗演算子の指定はない。
b) バイト境界にけたよせされている。
9) 一意名3は,受取り側作用対象とする。
10) 一意名2,一意名3及び一意名4は,記述にANY LENGTH句があってはならない。
書き方1,書き方2
11) 一意名2にBY REFERENCEを明示的又は暗黙に指定した場合,その一意名は強い型付けの集団項目
であってはならず,字類がオブジェクト又はポインタのデータ項目であってはならない。
書き方3
12) NESTED指定は,プログラム定義中にだけ書いてもよい。
13) NESTED指定があるときは,定数1を書かなければならない。定数1は,次のいずれかのプログラム
名段落中のプログラム名と同じでなければならない。
− 共通プログラム[8.4.5.2(プログラム名の有効範囲)参照]。
− 呼び出す側のプログラムに直接に包含されているプログラム。
14) 一意名1が制限付きプログラムポインタを指すとき,そのポインタの定義に指定したプログラム原型
の呼出し情報は,プログラム原型名1の呼出し情報と同じでなければならない。
15) プログラム原型名1は,リポジトリ段落中のプログラム指定子に指定されていなければならない。
16) 一意名4,及び算術式1又はブール式1の中のあらゆる一意名は,送出し側作用対象とする。
17) 引数にBY CONTENT又はBY REFERENCEを明示的又は暗黙に指定した場合は,手続き部見出し中
の対応する仮パラメタにBY REFERENCE指定がなければならない。
18) 一意名4が,受取り側作用対象として指定してもよい一意名である場合,BY CONTENTを省略しては
ならない。ただし例外として,一意名4がオブジェクトプロパティの場合はBY CONTENTを省略し
てもよい。
19) 引数にBY VALUE指定がある場合,手続き部見出し中の対応する仮パラメタにはBY VALUE指定が
なければならない。
20) 一意名4又は対応する仮パラメタにBY VALUE指定がある場合,一意名4は字類が数字,オブジェク
ト又はポインタでなければならない。
21) 定数2又は対応する仮パラメタにBY VALUE指定がある場合,定数2は数字定数でなければならない。
332
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
22) OMITTED指定を書いた場合,手続き部見出し中の対応する仮パラメタにもOPTIONAL指定がなけれ
ばならない。
23) 適合規則が,14.7(パラメタ及び返却項目の適合)の規定どおり適用される。
14.8.4.3 一般規則
全ての書き方
1) CALL文の実行を引き起こすプログラム,関数又はメソッドのインスタンスを,活性化する側の実行
時要素とする。
2) CALL文のUSING指定中の引数の並びと,呼び出されるプログラムの手続き部見出しのUSING指定
中の仮パラメタの並びとから,引数と仮パラメタとの間の対応が決まる。この対応は,位置上の対応
であって,名前の等価性によるものではない。
注記 引数の最初のものは仮パラメタの最初のものに対応し,2番目は2番目に対応し,…,n番目
はn番目に対応する。
活性化される実行時要素中のUSING指定の効果は,14.1.3(手続き部の構造の一般規則)による。
3) CALL文の実行は,次のとおりに進む。
a) 算術式1・ブール式1・一意名1・一意名2・一意名4 の評価と,一意名3に対する項目識別とは,
CALL文の実行開始の時点で行われる。例外状態である場合は,プログラムが呼び出されず,細則
g) に従って実行が進む。例外状態でない場合,一意名2・一意名4・算術式1・ブール式1・定数2
の値が,呼び出されるプログラム中で使用可能になるのは,そのプログラムに制御が移った時点で
ある。
b) 呼出し対象のプログラムは,プログラム名と所在とによって識別される。プログラム名と所在とは,
次のとおりに決まる。
− 一意名1が英数字又は各国文字のデータ項目を参照している場合か,又は定数1の指定がある
場合,定数1の値又は一意名1のデータ項目の内容が,呼出し対象プログラムの名前になる
[8.3.1.1.1(利用者定義語)参照]。
− 一意名1がプログラムポインタデータ項目である場合,一意名1のデータ項目の内容が,呼出
し対象プログラムの所在になる。
− 一意名1と定数1のいずれの指定もない場合,呼出し対象プログラムの外部公開名は,プログ
ラム原型名1で決まる[12.2.7(リポジトリ段落)参照]。
呼出し対象プログラムがCOBOLプログラムである場合,実行時システムは,その呼出し対象の
プログラムの所在を特定しようと試みる。プログラムの所在の特定にプログラム名を用いる場合,
8.4.5(名前の有効範囲)と8.4.5.2(プログラム名の有効範囲)の規則を適用する。呼出し対象プロ
グラムがCOBOLプログラムではない場合,プログラム名の形成規則及びプログラムの所在特定用
の規則は,実装者定義とする。
一意名1のデータ項目の内容が既定義アドレスNULLであるときは,EC-PROGRAM-PTR-NULL
例外状態になる。プログラムの所在が特定できないとき,又は一意名1が長さゼロの項目であると
きは,EC-PROGRAM-NOT-FOUND例外状態になる。EC-PROGRAM-NOT-FOUND例外状態又は
EC-PROGRAM-PTR-NULLの例外状態である場合,プログラムは呼び出されず,細則g) に従って
実行が続く。
c) プログラムの所在は特定されたが,プログラムの実行に必要な資源が使用可能ではない場合,
EC-PROGRAM-RESOURCES例外状態になり,プログラムは呼び出されず,細則g) に従って実行が
333
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
続く。呼び出されるプログラムの実行可否を決めるために調べる実行時資源は,実装者定義とする。
d) 資源が使用可能であり,呼出し対象プログラムがCOBOLプログラムである場合は,適合規則を適
用する[14.7(パラメタ及び返却項目の適合)参照]。規則違反が検出された場合,呼出し対象プロ
グラムと,呼び出す側の実行時要素との両方で検査が有効であるときは,
EC-PROGRAM-ARG-MISMATCH例外状態になり,プログラムは呼び出されず,細則g) に従って実
行が続く。
e) 呼出し対象プログラムが既に活性状態にあって,そのプログラムが再帰属性をもたない場合,
EC-PROGRAM-RECURSIVE-CALL例外状態になり,プログラムは呼び出されず,細則g) に従って
実行が続く。
f)
致命的例外状態が発生しなかった場合,CALL文で指定したプログラムは実行可能になり,呼出し
対象プログラムに制御が移る。一意名1がプログラムポインタデータ項目として定義され,かつ,
不当なプログラムアドレスを含んでいた場合,CALL文の実行は規定しない。呼出し対象プログラ
ムがCOBOLプログラムであれば,その実行は14.1(手続き部の構造)の一般規則による。さもな
ければ,その実行は実装者定義とする。
g) プログラムの呼出しが成功しないで例外状態になった場合,次の動作のいずれかが起こる。
1. 例外状態がEC-PROGRAM例外状態のいずれかであり,CALL文にON OVERFLOW指定又はON
EXCEPTION指定がある場合,無条件文1に制御が移る。その後,無条件文1中の各文の規則に
従って実行が続く。明示的に制御の移行を引き起こす手続き分岐文又は条件文が実行されれば,
その文の規則に従って制御が移る。さもなければ,無条件文1の実行が完了した後,CALL文の
終わりに制御が移り,NOT ON EXCEPTION指定はあっても無視される。
2. 例外状態の検査が有効である場合に,例外状態がEC-PROGRAM例外状態のいずれかであってON
OVERFLOW指定もON EXCEPTION指定もない場合,又は例外状態がEC-PROGRAM例外状態
のいずれでもない場合,その例外状態に関連付けられた宣言手続きがあれば,それが実行される。
その後は,例外状態と宣言手続きに対する規定に従って実行は進む。宣言手続きから制御が戻っ
た場合,ON OVERFLOW指定,ON EXCEPTION指定及びNOT ON EXCEPTION指定はあっても
無視される。CALL文のこれ以外の効果は全て,実装者定義とする。
3. 例外状態の検査が有効でない場合の振る舞いは,14.5.12.1(例外状態)による。
h) プログラムの呼出しが成功した場合,呼び出されたプログラムから制御が戻った後は,ON
OVERFLOW指定及びON EXCEPTION指定はあっても無視される。呼び出されたプログラムから
例外状態が伝ぱ(播)されていれば,14.5.12.1(例外状態)に従って実行が続く。さもなければ,
CALL文の終わりに制御が移るか,又はNOT ON EXCEPTION指定がある場合は,無条件文2に制
御が移る。無条件文2に制御が移る場合,無条件文2中の各文の規則に従って実行が続く。明示的
に制御の移行を引き起こす手続き分岐文又は条件文が実行されれば,その文の規則に従って制御が
移る。さもなければ,無条件文2の実行が完了した後,CALL文の終わりに制御が移る。
4) RETURNING指定を書いた場合,活性化されたプログラムの結果は,一意名3に設定される。
書き方1,書き方2
5) BY CONTENT指定及びBY REFERENCE指定は,もう一つBY CONTENT指定又はBY REFERENCE
指定が現れるまで,後続のパラメタに対して次々と適用される。最初のパラメタの前にBY CONTENT
もBY REFERENCEもない場合,BY REFERENCE指定が想定される。
書き方3
334
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
6) NESTED指定がある場合,共通プログラム又は入れ子の内側のプログラムで,プログラム名段落中に
定数1が指定されたプログラムが,呼出し対象プログラムの特性を決めるために用いられる。
7) NESTED指定がない場合,プログラム原型名1は,呼出し対象プログラムの特性を決めるために用い
られる。
8) 単一の一意名又は定数だけからなる引数は,算術式又はブール式ではなく,一意名又は定数であると
みなされる。
9) CALL文の引数に,キーワードBY CONTENT,BY REFERENCE,BY VALUEのいずれの指定もない
場合,その引数の引渡し方法は次のとおりに決まる。
a) 対応する仮パラメタに対してBY REFERENCEが明示的又は暗黙に指定されている場合,次による。
1. 引数が構文規則3) の必要事項に整合すれば,BY REFERENCE が想定される。
2. 引数が構文規則3) の必要事項に整合しなければ,BY CONTENTが想定される。
b) 対応する仮パラメタに対してBY VALUEが明示的又は暗黙に指定されている場合,BY VALUEが想
定される。
10) 呼出し対象プログラムへの制御の移行は,そのプログラムに対して指定された入口規約に整合する方
法で行われる。
11) OMITTED指定を書いた場合又は末尾の引数を省略した場合,そのパラメタに対する引数省略条件が,
呼び出される側のプログラム中で真と評価される[8.8.4.1.7(引数省略条件)参照]。
12) 引数省略条件が真になるパラメタを,呼び出される側のプログラム中で参照した場合,引数としての
参照又は引数省略条件中での参照を除いて,EC-PROGRAM-ARG-OMITTED例外状態になる。
14.8.5 CANCEL文
CANCEL(取消し)文は,参照されたプログラムが,次に呼び出される時点で初期状態であることを保
証する。
14.8.5.1 一般形式
CANCEL
一意名1
定数1
プログラム原型名1
…
14.8.5.2 構文規則
1) 一意名1は,英数字又は各国文字のデータ項目として定義しなければならない。
2) 定数1は,英数字又は各国文字の定数でなければならない。
3) プログラム原型名1は,リポジトリ段落で指定されたプログラム原型でなければならない。
14.8.5.3 一般規則
1) 取消し対象プログラムは,次のいずれかで識別される。
a) 一意名1のデータ項目の内容
b) 定数1の値
c) プログラム原型名1
一意名1又は定数1の指定があるとき,この値を用いて取り消されるプログラムを識別する方法は,
8.3.1.1.1(利用者定義語)による。
2) プログラム名は,実行時システムがプログラムの所在を特定するために用いられる。この処理は,8.4.5
(名前の有効範囲)及び8.4.5.2(プログラム名の有効範囲)による。
3) CANCEL文を実行すると,指定したプログラムは,このCANCEL文が内部に現れた実行単位と論理
335
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
的な関係をもたなくなる。ある実行単位中の成功したCANCEL文によって参照されたプログラムが,
同じ実行単位中で次に呼び出された場合,そのプログラムは初期状態になる[14.5.2(関数・メソッド・
オブジェクト・プログラムの状態)参照]。
注記 CANCEL文の実行による指定プログラムの記憶領域の解放は,禁止も要求もされない。
4) CANCEL文を実行するとき,CANCEL文で参照されたプログラムの内部に含まれる全てのプログラム
もまた取り消される。その結果は,翻訳単位中で,含まれるプログラムのそれぞれに対して,それら
のプログラムが現れた順序とは逆順に,明示的なCANCEL文を実行したのと同じである。
5) 取消し対象のプログラムが,活性状態だったり,活性状態のプログラムを内包していたりしてはなら
ない。活性状態のプログラムを明示的又は暗黙にCANCEL文で参照した場合,取消し対象プログラム
中とCANCEL文を含んでいる実行時要素との両方でEC-PROGRAM-CANCEL-ACTIVEの検査が有効
なときは,EC-PROGRAM-CANCEL-ACTIVE例外状態が,CANCEL文を含んでいる実行時要素中で起
こり,参照したプログラムは取り消されない。EC-PROGRAM-CANCEL-ACTIVEの検査が有効でない
場合,そのような参照の結果は,実装者定義とする。
6) 取り消されたプログラムへの論理的な関係は,これ以降そのプログラムを参照するCALL文を実行す
ることによってだけ確定される。
7) この実行単位中で,まだ呼び出されていないプログラム,又は既に呼び出されたがその時点では取り
消されているプログラムを参照しているCANCEL文を実行しても,何の動作も行われない。明示的な
CANCEL文に後続する,次に実行可能な文に制御が移る。
8) プログラム中で記述された外部データレコード中のデータ項目の内容は,そのプログラムが取り消さ
れても,変更されない。
9) CANCEL文の実行中に,CANCEL文で参照されるプログラム中において開いたままの内部ファイル結
合子に関連するファイル名の全てに対して,選択可能指定のない暗黙のCLOSE文が実行される。こ
のCLOSE文の実行中に,たとえ誤りが起きても,そのようなファイルの全てに対して,暗黙のCLOSE
文が実行される。これらのファイルに関連するUSE手続きは,実行されない。
10) 取消し対象プログラムがCOBOLプログラム以外である場合,CANCEL文の効果は実装者定義とする。
11) あるプログラムポインタが既に取消し対象プログラムを指すように設定されている場合,これ以降の
CALL文でそのプログラムポインタを参照した結果は,規定されない。
12) 一意名1が長さゼロの項目を指しているとき,CANCEL文は何もしない。
14.8.6 CLOSE文
CLOSE(閉じる)文は,リール/ユニット又はファイルの処理を終了させる。該当する場面では,巻戻し,
施錠,又は取外しも行う。
14.8.6.1 一般形式
CLOSE
ファイル名1
REEL
UNIT [FOR REMOVAL]
WITH
NO REWIND
LOCK
…
14.8.6.2 構文規則
1) NO REWIND,REEL及びUNIT指定は,順編成のファイルだけに用いてもよい。
2) REELとUNITは等価な語である。
14.8.6.3 一般規則
336
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) ファイル名1のファイル結合子は,開いた状態でなければならない。ファイル結合子が開いていなけ
れば,CLOSE文は不成功となり,ファイル結合子に対する入出力状態には"42"が設定される。
2) 様々な記憶媒体に適用されるCLOSE文の各種の書き方の効果を規定するために,全てのファイルは
次の種類に分類される。ここでの用語“ファイル”は,物理ファイルを意味する。
a) 非ユニット。巻戻し及びユニットの概念が意味をもたない入出力媒体のファイル
b) 順単一ユニット。1個のユニットに全部含まれる順ファイル
c) 順複数ユニット。2個以上のユニットに含まれる順ファイル
d) 順でない単一/複数ユニット。順編成以外のファイルで,大容量記憶装置上にあるもの
3) 物理ファイルの各々の種類に対する各々の書き方のCLOSEを実行した結果は,表15(物理ファイル
の種類とCLOSE文の書き方との関係)による。
表15−物理ファイルの種類とCLOSE文の書き方との関係
ファイルの種類
CLOSE文の書き方
非ユニット
順
単一ユニット
順
複数ユニット
順でない
単一/複数ユニット
CLOSE
c
c,g
a,c,g
c
CLOSE WITH LOCK
c,e
c,e,g
a,c,e,g
c,e
CLOSE WITH NO REWIND
c,h
b,c
a,b,c
該当しない
CLOSE UNIT
f
f,g
f,g
該当しない
CLOSE UNIT FOR REMOVAL
f
d,f,g
d,f,g
該当しない
表15(物理ファイルの種類とCLOSE文の書き方との関係)の記号の定義は,次による。入力ファ
イル,出力ファイル又は入出力両用ファイルの区別によって定義が異なる場面では,複数種類の規定
のうち一つが選択される。さもなければ,入力ファイル,出力ファイル及び入出力両用ファイルに同
じ規定が適用される。
a) 前のユニットへの影響
入力ファイル及び入出力両用ファイル
物理ファイルの現在のユニットよりも前のユニットは,先行するCLOSE UNIT文で制御したユニ
ットを除いて,全て閉じられる。現在のユニットが,物理ファイルの最後のユニットではない場合,
物理ファイルのユニットのうちで現在のユニットより後のものは,処理されない。
出力ファイル
物理ファイルの現在のユニットよりも前のユニットは,先行するCLOSE UNIT文で制御したユニ
ットを除いて,全て閉じられる。
b) 現在のリールの巻戻しなし
現在のユニットは,その現在位置のままである。
c) ファイル閉じ
実装者定義のファイル閉じ操作が実行される。
d) ユニットの取外し
現在のユニットは,該当するなら巻き戻されて,実行単位から論理的に取り外される。ただし,
次にUNIT指定のないCLOSE文を実行したあとに,このファイルに対してOPEN文を実行すれば,
物理ファイルでのユニットの順序で,再びこのユニットを呼び出してもよい。
337
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
注記 この規格では,ユニットがアンロードされる場合又はロードされたままである場合までは
考慮しない。
e) 施錠閉じ(ファイルの施錠)
LOCK指定があるとき,この実行単位の実行中にファイル名1のファイル結合子を再び開くこと
はできない。
f)
ユニット閉じ
入力ファイルと入出力両用ファイル(ユニット媒体)
1. 現在のユニットが物理ファイルの最後の又は唯一のユニットである場合,ユニット交換は行われ
ず,現在ボリュームポインタはそのまま変わらず,ファイル位置指示子はその次の又はその直前
の論理レコードが存在しないことを示すように設定される。
2. 物理ファイルに対する別ユニットがある場合,ユニット交換が行われ,現在ボリュームポインタ
は物理ファイル中の次のユニットを示すように更新され,ファイル位置指示子には新たな現在ボ
リューム内に存在する最初のレコード番号より1小さい値が設定される。現在ボリューム中にレ
コードが存在しない場合は,更に別のユニット交換が行われる。
出力ファイル(ユニット媒体)
ユニット交換が行われる。現在ボリュームポインタは更新されて新しいユニットを指す。
入力ファイル,入出力両用ファイル及び出力ファイル(非ユニット媒体)
この文の実行は成功とみなされる。ファイルは開いた状態のままであって,ファイル位置指示子
は変更されず,一般規則4) で指定されている以外には何も動作は発生しない。
g) 巻戻し
現在のリール又は類似の装置は,その物理的な先頭に位置付けられる。
h) 無視される選択可能指定(NO REWIND指定)
選択可能指定が全くないかのようにCLOSE文は実行される。
4) CLOSE文の実行によって,ファイル名1に関連する入出力状態の値が更新される[9.1.12(入出力状
態)参照]。
5) CLOSE文で参照される報告書ファイルに関連する報告書の中に,活性状態のものがあってはならな
い。活性状態の報告書があると,そのファイルに対するCLOSE文は完了して
EC-REPORT-NOT-TERMINATED例外状態になる。
6) ファイル名1が指すファイル結合子のファイル位置指示子が,不定入力ファイルの存在なしを示して
いる場合,そのファイルのEOF(End-Of-File)又はユニットの処理は実行されず,ファイル位置指定
子と現在ボリュームポインタは変更されない。
7) ファイル名1に関連するレコード領域の実行時要素にとっての使用可否を決める要因は,第一にUNIT
指定のないCLOSE文の実行が成功したか不成功だったかであり,第二はそのファイル名1がSAME
RECORD AREA句に指定されているか否かである。SAME RECORD AREA句にファイル名1が指定さ
れている場合,そのレコード領域が実行時要素で使用可能なのは,同じSAME RECORD AREA句に指
定した別のファイル名のファイル結合子のうちに開いた状態のものがあるときである。そのようなフ
ァイル結合子がない場合,又はファイル名1がSAME RECORD AREA句に指定されていない場合,
CLOSE文の実行が成功するとレコード領域は実行時要素にとって使用可能ではなくなるが,CLOSE
文の実行が不成功だとレコード領域の使用可否は規定されない。
8) UNIT指定のないCLOSE文の実行の成功後,物理ファイルはファイル名1のファイル結合子に関連し
338
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
なくなり,そのファイル結合子のオープンモードは入力・出力・入出力両用・拡張のいずれでもない
状態に設定される。
9) ファイル名1のファイル結合子に関連付けられるファイル錠及びあらゆるレコード錠は,CLOSE文の
実行によって解放される。
10) 複数個のファイル名1をCLOSE文に指定した場合,このCLOSE文を実行した結果は,そのCLOSE
文にファイル名1を指定したのと同じ順序で,各々のファイル名1に対するCLOSE文を書いたのと
同じである。これら暗黙のCLOSE文のいずれかの結果として,宣言手続き中でNEXT STATEMENT
指定付きRESUME文が実行されたとき,その次に暗黙のCLOSE文がある場合,そこから処理が再開
する。
14.8.7 COMPUTE文
COMPUTE(計算)文は,算術式又はブール式の値を一つ以上のデータ項目に代入する。
14.8.7.1 一般形式
書き方1(算術計算)
COMPUTE {一意名1 [ROUNDED]} … = 算術式1
ON SIZE ERROR 無条件文1
NOT ON SIZE ERROR 無条件文2
[END-COMPUTE]
書き方2(ブール計算)
COMPUTE {一意名2} … = ブール式1 [END-COMPUTE]
14.8.7.2 構文規則
書き方1
1) 一意名1は,基本数字項目又は基本数字編集項目のいずれかでなければならない。
書き方2
2) 一意名2は,基本ブールデータ項目でなければならない。
3) ブール式1は,表意定数のALL 定数だけからなるものであってはならない。
14.8.7.3 一般規則
1) 算術式の構成が単一の固定小数点数字定数又は単一の固定小数点数字データ項目だけのとき,その定
数又は一意名の正確な値を評価した後に,そのCOMPUTE文及び有効な算術モードに従って四捨五入,
切捨て又は小数点の位置合せを適用する。
2) 評価は,算数式の値又はブール式の値の決定で構成される。
3) ブール式1を評価した結果の値の中のブール位置の個数は,その式で参照される最も大きいブール項
目中のブール位置の個数である。結果の値は一意名2のデータ項目に,MOVE文の規則に従って転記
される。
4) この文に関連するこれ以上の規則と説明は,8.8.1(算術式),8.8.2(ブール式),14.5.12.2(不適合デ
ータ),14.6.3(ROUNDED指定),14.6.4(SIZE ERROR指定及びけたあふれ条件),14.6.6(算術文)
及び14.5.9(作用対象の重なり)による。
14.8.8 CONTINUE文
CONTINUE(継続)文は,無操作文である。これは実行文が存在しないことを示す。
14.8.8.1 一般形式
CONTINUE
339
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
14.8.8.2 構文規則
1) CONTINUE文は,条件文又は無条件文を用いてよい場所であればどこででも用いてよい。
14.8.8.3 一般規則
1) CONTINUE文は,実行時要素の実行に何の影響も及ぼさない。
14.8.9 DELETE文
DELETE(削除)文は,大容量記憶ファイルからレコードを論理的に取り除く。
14.8.9.1 一般形式
DELETE ファイル名1 RECORD
[retry指定]
INVALID KEY 無条件文1
NOT INVALID KEY 無条件文2
[END-DELETE]
ここで,retry指定は,14.6.8(RETRY指定)による。
14.8.9.2 構文規則
1) DELETE文に,順編成のファイルを指定してはならない。
2) 順呼出し法のファイルを参照するDELETE文に,INVALID KEY指定又はNOT INVALID KEY指定を
書いてはならない。
14.8.9.3 一般規則
1) ファイル名1のファイル結合子のオープンモードは,入出力両用でなければならない。そのファイル
結合子に関連付けられる物理ファイルは,大容量記憶ファイルでなければならない。
2) 順呼出し法のファイルでは,このDELETE文を実行する前にファイル名1に対して実行された最後の
入出力文は,実行が成功完了したREAD文でなければならない。大容量記憶管理システム(MSCS)
は,そのREAD文で呼出しされたレコードを物理ファイルから論理的に取り除く。
3) ファイルが索引編成であって呼出し法が乱呼出し又は動的呼出しであるとき,大容量記憶管理システ
ム(MSCS)は,ファイル名1に関連する主レコードキーのデータ項目の内容によって識別されるレ
コードを,物理ファイルから論理的に取り除く。そのキーによって指定されるレコードが物理ファイ
ル中にない場合,無効キー条件が成立する[9.1.13(無効キー条件)参照]。
4) ファイルが相対編成であって呼出し法が乱呼出し又は動的呼出しであるとき,大容量記憶管理システ
ム(MSCS)は,ファイル名1に関連する相対キーのデータ項目の内容によって識別されるレコード
を,物理ファイルから論理的に取り除く。そのキーによって指定されるレコードが物理ファイル中に
ない場合,無効キー条件が成立する[9.1.13(無効キー条件)参照]。
5) DELETE文の実行が成功した後,識別されたレコードは論理的に物理ファイルから取り除かれており,
それ以降はこれを呼出しできない。
6) ファイル名1のファイル結合子に対してレコード施錠が有効であり,削除対象と識別されたレコード
を別のファイル結合子が施錠している場合,動作の結果はRETRY指定の有無によって異なる。RETRY
指定がある場合,そのレコード削除の試行を更に繰り返すことがある[14.6.8(RETRY指定)参照]。
RETRY指定がない場合,又はRETRY指定に規定した削除が成功しない場合は,レコード操作不整合
条件が成立する。入出力状態はRETRY指定の規則に従って設定される。
DELETE文の結果としてレコード操作不整合条件が成立するとき,次による。
a) レコードは論理的に取り除かれない。したがって,呼び出してもよい。
340
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
b) ファイル名1に関連する入出力状態に,レコード操作不整合条件を示す値が設定される。
c) DELETE文は不成功となる。
7) レコード錠が有効であるとき,次の動作が行われる。
a) ファイル名1に関連するファイル結合子に対して単一レコード施錠の指定があるとき,次による。
1. 削除対象のレコードに関してそのファイル結合子が保持していたレコード錠は,DELETE文の実
行が成功完了した時点で解除する。
2. それ以外のレコードに関してそのファイル結合子が保持していたレコード錠は,DELETE文の実
行を開始する時点で解除する。
b) ファイル名1に関連するファイル結合子に対して複数レコード施錠の指定があるとき,DELETE文
の実行が成功完了した時点で,削除対象のレコードに関するレコード錠は,全て解除する。
8) DELETE文の実行は,ファイル名1に関連するレコード領域の内容に影響を及ぼさない。RECORD句
のDEPENDING ON指定中のデータ名のデータ項目の内容にも影響を及ぼさない。
9) DELETE文の実行は,ファイル位置指示子に影響を及ぼさない。
10) DELETE文を実行すると,ファイル名1に関連する入出力状態の値が更新される[9.1.12(入出力状
態)参照]。
11) DELETE操作の実行が成功又は不成功になった後の制御の移行は,DELETE文中の選択可能な
INVALID KEY指定及びNOT INVALID KEY指定の有無に依存する[9.1.13(無効キー条件)参照]。
14.8.10 DISPLAY文
DISPLAY(表示)文は,データを適切なハードウェア装置に転送する。
DISPLAY画面文は,画面項目の指す定数又はデータ項目に関連するデータを,指定した画面項目中で使
用可能にし,指定した属性付きで端末画面上の指定した位置に表示する。
14.8.10.1 一般形式
書き方1(行)
DISPLAY
一意名1
定数1
… [UPON 呼び名1] [WITH NO ADVANCING] [END-DISPLAY]
書き方2(画面)
DISPLAY 画面名1
AT
LINE NUMBER
一意名2
整数1
COLUMN
COL
NUMBER
一意名3
整数2
ON EXCEPTION 無条件文1
NOT ON EXCEPTION 無条件文2
[END-DISPLAY]
14.8.10.2 構文規則
書き方1
1) 一意名1は,字類が指標,オブジェクト又はポインタのデータ項目であってはならない。
2) 呼び名1は,環境部の特殊名段落でハードウェア装置に関連付けておかなければならない。
書き方2
3) 一意名2及び一意名3は,符号なし整数データ項目でなければならない。
341
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
14.8.10.3 一般規則
書き方1
1) DISPLAY文は,各々の作用対象の内容を指定順にハードウェア装置に転送する。作用対象が長さゼロ
の項目であるとき,その作用対象に対してはデータが転送されない。定数1又は一意名1のデータ項
目と,ハードウェア装置との間で必要なデータの変換は,実装者定義とする。
2) 個々のハードウェア装置に対するデータ転送1回当たりの大きさは,実装者定義とする。
3) 作用対象の一つとして表意定数を書くと,その表意定数の1回の繰返しだけを表示する。ALL 各国文
字定数以外の表意定数は,その表意定数の英数字表現でなければならない。
4) 転送対象データ項目の大きさと,ハードウェア装置が受取り可能なデータの大きさとが同じであると
き,そのデータ項目はそのまま転送される。
5) 転送対象データ項目の大きさと,ハードウェア装置が受取り可能なデータの大きさとが同じではない
とき,次による。
a) 転送対象データ項目の大きさが,ハードウェア装置が一度の転送で受取り可能なデータの大きさを
超えているとき,データの左端の部分が受取り側ハードウェア装置に左端を合わせて格納され,そ
の後に,残りのデータを一般規則4) 及び5) に従って転送する処理が,全てのデータを転送してし
まうまで続けられる。
b) ハードウェア装置が一度の転送で受取り可能なデータの大きさが,転送対象データ項目の大きさを
超えているとき,データの左端の部分が受取り側ハードウェア装置に左端を合わせて格納される。
6) DISPLAY文に複数個の作用対象があるとき,送出し側項目の大きさは作用対象に関連する大きさの和
であり,作用対象の値は作用対象の出現する順に転送される。このとき引き続く作用対象の間でハー
ドウェア装置の位置決めは変わらない。
7) UPON指定を書かないと,実装者の規定する標準の表示装置が用いられる。
8) WITH NO ADVANCING指定がある場合,最後の作用対象を表示した後,ハードウェア装置は次の行
への再設定もその他の変更もされない。ハードウェア装置が特定の文字位置に位置決め可能であると
き,最後に表示した作用対象の最後の文字の直後の文字位置に位置決めされたままになる。ハードウ
ェア装置が特定の文字位置に位置決め可能でないとき,縦方向の位置決めができる場合は,縦方向の
位置だけが影響を受ける。重ね打ちが可能なハードウェア装置の場合,この指定によって重ね打ちを
行うことになる。
9) WITH NO ADVANCING指定がない場合,最後の作用対象をハードウェア装置に転送した後,ハード
ウェア装置の位置決めは,その次の行の最左端位置に再設定される。
10) 縦の位置決めができないハードウェア装置の場合,縦の位置決めは無視される。
書き方2
11) 列番号及び行番号の位置は,英数字文字位置の個数で示される。
12) DISPLAY文は,画面名1に従属する基本画面項目のうちFROM句,USING句又はVALUE句をもつ
ものを受取り側とし,そのFROM句,USING句又はVALUE句のデータ項目又は定数を送出し側とし
て,MOVE文の規則に従ったデータの転送を引き起こす。この仕様については,そのような画面項目
が全てDISPLAY画面文によって参照されているものとみなされる。この基本画面項目の二つ以上が
重なり合っているとき,EC-SCREEN-FIELD-OVERLAP例外状態になる。基本画面項目へのデータ転
送は,画面名1の内部での画面項目の指定順に行われる。
注記 二つの画面項目が重なり合う場合,画面上の共通する文字位置に対する表示は,画面名1の
342
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
内部で2番目に指定された画面項目によって決まる。
転送が行われて各々の基本画面項目が端末画面上に表示されるとき,各々の基本画面記述項の
PICTURE文字列に編集の指定があれば,表示はそれに従う。
13) LINE指定及びCOLUMN指定は,画面名1に関連する画面レコードの,端末表示画面上の開始位置を
与える。これは,画面の1行目1列目であるところの上端行の左端列からの相対位置で表される。各々
の従属基本画面項目は,それを含んでいる画面レコードの開始位置からの相対配置となる。一意名2
及び一意名3は,文の実行開始時に一度だけ評価される。
14) LINE指定がなければ,画面レコードは1行目から始まる。
15) COLUMN指定がなければ,画面レコードは1列目から始まる。
16) DISPLAY文の実行が成功した場合,ON EXCEPTION指定はあっても無視され,DISPLAY文の終わり
に制御が移るか,又はNOT ON EXCEPTION指定があれば無条件文2に制御が移る。無条件文2に移
る場合は,無条件文2中の各文の規則に従って実行が続く。明示的に制御の移行を引き起こす手続き
分岐文又は条件文が実行されれば,その文の規則に従って制御が移る。さもなければ,無条件文2の
実行が完了した後,DISPLAY文の終わりに制御が移る。
17) DISPLAY文の実行が不成功の場合,次のいずれかが起こる。
a) DISPLAY文にON EXCEPTION指定があれば,無条件文1に制御が移る。その後,無条件文1中の
各文の規則に従って実行が続く。明示的に制御の移行を引き起こす手続き分岐文又は条件文が実行
されれば,その文の規則に従って制御が移る。さもなければ,無条件文1の実行が完了した後,
DISPLAY文の終わりに制御が移り,NOT ON EXCEPTION指定はあっても無視される。
b) DISPLAY文にON EXCEPTION指定がなく,該当する宣言手続きが存在するとき,その宣言手続き
に制御が移る。その宣言手続きから制御が戻った場合,DISPLAY文の終わりに制御が移り,NOT ON
EXCEPTION指定はあっても無視される。
c) DISPLAY文にON EXCEPTION指定がなく,該当する宣言手続きがなければ,DISPLAY文の終わり
に制御が移り,NOT ON EXCEPTION指定はあっても無視される。
18) DISPLAY文の実行中に,例外状態EC-SCREEN-FIELD-OVERLAP,EC-SCREEN-ITEM-TRUNCATED,
EC-SCREEN-LINE-NUMBER又はEC-SCREEN-STARTING-COLUMNのいずれかになった場合,
DISPLAY文の実行は,その例外状態に対する規定に従って継続し,その実行が完了した後,DISPLAY
文の実行は不成功とみなされる。
14.8.11 DIVIDE文
DIVIDE(除算)文は,ある数字データ項目を別の数字データ項目で除して,商と剰余に等しい値をデー
タ項目に設定する。
14.8.11.1 一般形式
書き方1(into)
DIVIDE
一意名1
定数1
INTO {一意名2 [ROUNDED]} …
ON SIZE ERROR 無条件文1
NOT ON SIZE ERROR 無条件文2
[END-DIVIDE]
書き方2(into-giving)
343
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
DIVIDE
一意名1
定数1
INTO
一意名2
定数2
GIVING {一意名3 [ROUNDED]} …
ON SIZE ERROR 無条件文1
NOT ON SIZE ERROR 無条件文2
[END-DIVIDE]
書き方3(by-giving)
DIVIDE
一意名2
定数2
BY
一意名1
定数1
GIVING {一意名3 [ROUNDED]} …
ON SIZE ERROR 無条件文1
NOT ON SIZE ERROR 無条件文2
[END-DIVIDE]
書き方4(into-remainder)
DIVIDE
一意名1
定数1
INTO
一意名2
定数2
GIVING 一意名3 [ROUNDED]
REMAINDER 一意名4
ON SIZE ERROR 無条件文1
NOT ON SIZE ERROR 無条件文2
[END-DIVIDE]
書き方5(by-remainder)
DIVIDE
一意名2
定数2
BY
一意名1
定数1
GIVING 一意名3 [ROUNDED]
REMAINDER 一意名4
ON SIZE ERROR 無条件文1
NOT ON SIZE ERROR 無条件文2
[END-DIVIDE]
14.8.11.2 構文規則
1) 一意名1と一意名2は,基本数字項目でなければならない。
2) 一意名3と一意名4は,基本数字項目又は基本数字編集項目でなければならない。
3) 定数1及び定数2は,数字定数でなければならない。
4) 固有算術が有効であるとき,作用対象の合成[14.6.6(算術文)参照]は,語REMAINDERの直後の
データ項目を除いた,文中の作用対象の全てを用いて決まる。
14.8.11.3 一般規則
全ての書き方
1) 固有算術が有効な場合,商は,被除数を除数で除した結果である。標準算術が有効な場合,商は次の
算術式の結果とする。
(被除数 / 除数)
ここで,被除数と除数の値は,以降の一般規則で定義する。
2) 被除数を決定し除数を決定する処理は,次による。
a) 被除数は,一意名2又は定数2である。除数は,一意名1又は定数1である。
b) 一意名の指定があると,項目識別を行って結果のデータ項目の内容を被除数又は除数とする。
344
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
c) 定数の指定があると,その定数の値を被除数又は除数とする。
3) この文に関連するこれ以上の規則と説明は,14.5.9(作用対象の重なり),14.5.12.2(不適合データ),
14.6.3(ROUNDED指定),14.6.4(SIZE ERROR指定及びけたあふれ条件)及び14.6.6(算術文)によ
る。
書き方1
4) 評価は,次の順序で進む。
a) 開始時評価で除数が決まる。
b) この除数が各々の被除数つまり各々の一意名2と合わせて使用され,処理は左から右へ進む。一意
名2の項目識別が行われるのは各々の被除数を決定する時点である。そして一般規則1) に従って
商が生成され,対応する一意名2へ格納される[14.6.6(算術文)参照]。
書き方2,書き方3
5) 評価は,次の順序で進む。
a) 開始時評価で除数が決定され,被除数が決まる。
b) そして一般規則1) に従って商が生成され,各々の一意名3へ格納される[14.6.6(算術文)参照]。
書き方4,書き方5
6) 評価は,次の順序で進む。
a) 開始時評価で除数が決定され,被除数が決まる。
b) そして一般規則1) に従って商が生成され,一意名3へ格納される[14.6.6(算術文)参照]。
c) けたあふれ条件が起きなければ,補助的な商が作り出される。補助的な商とは,商の下位のけたを
切り捨てて導き出した符号付きの値であり,けた数及び小数点位置は一意名3のデータ項目と同じ
ものである。剰余は,一般規則7) に従って計算され,一意名4のデータ項目へ格納される。ただ
し値の格納がけたあふれ条件を引き起こしそうな場合はこの限りでない。その場合,一意名4の内
容は変更されず,14.6.4(SIZE ERROR指定及びけたあふれ条件)によって実行が進む。一意名4
の項目識別が行われるのは,商を一意名3へ格納した後である。
7) 固有算術が有効な場合,剰余は,補助的な商と除数を乗じてその積を被除数から減じた結果である。
標準算術が有効な場合,剰余は,次の算術式の結果とする。
(被除数 ‒ (補助的な商 * 除数) )
ここで,被除数及び除数の値は一般規則2) で定義したものとし,“補助的な商”は一般規則6) で
定義した補助的な商を表す。
14.8.12 EVALUATE文
EVALUATE(評価)文は,多岐分岐,多岐結合の構造を記述する。それが複数の条件を評価してもよい。
実行時要素のそれ以降の動作は,これらの評価の結果に従う。
14.8.12.1 一般形式
EVALUATE 選択主体 [ALSO 選択主体] …
{{WHEN 選択対象 [ALSO 選択対象] … } … 無条件文1} …
[WHEN OTHER 無条件文2]
[END-EVALUATE]
ここで,選択主体は,次による。
345
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
一意名1
定数1
算術式1
ブール式1
条件1
TRUE
FALSE
選択対象は,次による。
[NOT] 一意名2
[NOT] 定数2
[NOT] 算術式2
[NOT] ブール式2
[NOT] 範囲式1
条件2
部分式1
TRUE
FALSE
ANY
範囲式は,次による。
一意名3
定数3
算術式3
THROUGH
THRU
一意名4
定数4
算術式4
[IN 符号系名1]
14.8.12.2 構文規則
1) 語THROUGHと語THRUは,同義とする。
2) 選択対象の各組に含まれる選択対象の個数は,選択主体の個数と等しくなければならない。
3) 符号系名1を指定してもよいのは,THROUGH指定中に書かれた定数又は一意名の字類が英字,英数
字,又は各国文字である場合だけとする。定数3又は一意名3の字類が各国文字であれば,符号系名
1は各国文字照合順序を定義する符号系でなければならない。さもなければ,符号系名1は英数字照
合順序を定義する符号系でなければならない。
4) 範囲式中の二つの作用対象は,字類が同じでなければならず,その字類がブール,オブジェクト又は
ポインタであってはならない。
5) 選択対象の左端が,比較演算子,一意名なしの字類条件,算術式なしの正負条件,のいずれかである
とき,その選択対象は部分式である。
6) 特定のWHEN指定に対しては,選択主体又は選択対象の分類が,次のとおり替わる。
a) 選択主体がTRUE又はFALSEであり,選択対象は結果がブール文字1個になるブール式の場合,
その選択対象はブール条件であり,そのため条件2とみなされる。
b) 選択対象がTRUE又はFALSEであり,選択主体は結果がブール文字1個になるブール式の場合,
その選択主体はブール条件であり,そのため条件1とみなされる。
c) 選択主体がTRUE又はFALSEではなく,選択対象は結果がブール文字1個になるブール式の場合,
その選択対象はブール式であり,そのためブール式2とみなされる。
d) 選択対象がTRUE又はFALSEではなく,選択主体は結果がブール文字1個になるブール式の場合,
その選択主体はブール式であり,そのためブール式1とみなされる。
346
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
e) 選択対象が部分式で,選択主体は字類がブール又は数字であるデータ項目の場合,その選択主体は
一意名とみなされる。
7) 選択対象の組の中の各選択対象は,次の規則に従って,選択主体の組の中の同じ順序位置にある選択
主体に対応していなければならない。
a) 選択対象中に現れる一意名,定数又は式は,選択主体の組の中の対応する作用対象と比較ができる
ものでなければならない。これは,8.8.4.1.1(比較条件)による。
b) 選択対象として現れる条件2,語TRUE又は語FALSEが対応する相手は,選択主体の組の中の条件
1,語TRUE又は語FALSEでなければならない。
c) 語ANYは,いかなる種類の選択主体にも対応する。
d) 部分式1の対応する相手は,一意名,定数,算術式又はブール式である選択主体でなければならな
い。部分式1は,対応する選択主体の後にそれを書いた結果が条件式になるような,COBOLの語
の並びでなければならない。
8) 選択対象が部分式1によって指定される場合,その選択対象は条件2として指定されたものとみなさ
れる。ここでの条件2は,部分式1のすぐ前に選択主体を書いた結果の条件式とする。対応する選択
主体には語TRUEを指定したものとみなされる。
9) 選択主体と選択対象との書いてもよい組合せを,表16(EVALUATE文における作用対象の組合せ)
に示す。
表16−EVALUATE文における作用対象の組合せ
WHEN選択対象
EVALUATE 選択主体
一意名
定数
算術式
ブール式
条件
TRUE又は
FALSE
[NOT] 一意名
○
○
○
○
[NOT] 定数
○
○
○
[NOT] 算術式
○
○
○
[NOT] ブール式
○
○
○
[NOT] 範囲式
○
○
○
条件
○
○
部分式
○
○
○
○
TRUE又はFALSE
○
○
ANY
○
○
○
○
○
○
○は,書いてもよい組合せを示す。
空白は,無効な組合せを示す。
14.8.12.3 一般規則
1) EVALUATE文の作用対象が単一の定数であるとき,その作用対象は算術式ではなく定数とみなされ
る。
2) THROUGH指定に書かれた値の範囲を決定する方法は,14.6.7(THROUGH指定)による。
3) EVALUATE文の実行の開始時点で,各々の選択主体が評価され,それに値,値の範囲又は真理値が,
次のとおり割り当てられる。
a) 一意名1で指定された選択主体には,その一意名のデータ項目の値と字類が割り当てられる。選択
主体が数字データ項目又は長さ1のブールデータ項目であるとき,この評価に対して選択主体は,
347
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
算術式又はブール式ではなく一意名1であるとみなされる。
b) 定数1で指定された選択主体には,指定された定数の値と字類が割り当てられる。
c) 算術式1で指定された選択主体には,算術式の評価の規則に従って数値が割り当てられる。
d) ブール式1が指定された選択主体には,ブール式の評価の規則に従ってブール値が割り当てられる。
e) 条件1で指定された選択主体には,条件式の評価の規則に従って真理値が割り当てられる。
f)
語TRUE又は語FALSEで指定された選択主体には,真理値が割り当てられる。語TRUEで指定さ
れる項目には真理値“真”が,語FALSEで指定される項目には真理値“偽”が割り当てられる。
4) EVALUATE文の実行は,WHEN指定の各々を左から右へ,次の方法で処理することによって進む。
a) 各々のWHEN指定に対する選択対象の組の中の選択対象が,選択主体の組の中の同じ順序位置にあ
る選択主体とそれぞれ一対にされる。選択主体と選択対象からなるこの組を解析した結果は,次の
とおり真又は偽のいずれかとする。
1. 選択対象が語ANYのとき,結果は真とする。
2. 選択対象が部分式1のとき,先頭の比較演算子の左辺に選択主体を配置して形成した条件式が評
価される。評価の結果は,その式の真理値とする。
3. 選択対象が条件2のとき,選択主体はTRUE又はFALSEである。選択主体と選択対象との真理
値が一致すれば解析結果は真とする。一致しなければ結果は偽とする。
4. 選択対象がTRUE又はFALSEのとき,選択主体は条件1である。選択主体と選択対象との真理
値が一致すれば解析結果は真とする。一致しなければ結果は偽とする。
5. 選択対象が範囲式のとき,選択主体と選択対象の一対は,次のいずれかの形の条件式であるとみ
なされる。
選択対象にNOTがない場合:
選択主体 >= 左辺 AND 選択主体 <= 右辺
選択対象にNOTがある場合:
選択主体 < 左辺 OR 選択主体 > 右辺
ここで,左辺とは語THROUGHの左にある一意名3,定数3又は算術式3であり,右辺とは語
THROUGHの右にある一意名4,定数4又は算術式4である。解析の結果は,上記のとおりに形
成した条件式の真理値とする。
6. 選択対象が一意名2,定数2,算術式2又はブール式2であるとき,選択主体と選択対象の一対は,
次の形の条件式であるとみなされる。
選択主体 [NOT] = 選択主体
ここでのNOTは,選択対象中にあるとき条件式中に現れる。解析の結果は,上記のとおり形成
した条件式の真理値である。
b) あるWHEN指定中のあらゆる対に関して解析の結果が真になるとき,そのWHEN指定が選択主体
の組を満足させるので,それ以降のWHEN指定は解析されない。
c) あるWHEN指定中のいずれかの対に関して解析の結果が偽になるとき,そのWHEN指定中のそれ
以降の対は評価されず,そのWHEN指定は選択主体の組に一致しない。
d) この手続きは,引き続くWHEN指定に対して,ソース要素中に書かれた順に,選択主体の組を満足
させるWHEN指定が選択されるか又は選択対象の全ての組が調べ尽くされるか,いずれかになるま
で繰り返される。
5) EVALUATE文の実行はこの後,次のとおりに進む。
a) あるWHEN指定が選択されると,選択されたそのWHEN指定の後に続く最初の無条件文1が実行
される。
348
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
b) どのWHEN指定も選択されないときWHEN OTHER指定があると,無条件文2が実行される。
c) 選択されたWHEN指定の無条件文1の終わりに実行が達したとき,無条件文2の終わりに実行が達
したとき,又はどのWHEN指定も選択されずWHEN OTHER指定もないとき,EVALUATE文の実
行は終了する。
14.8.13 EXIT文
EXIT(出口)文は,一組の手続きに対する共通の出口を提供する。
EXIT PROGRAM(プログラム出口)文は,呼び出されたプログラムの論理的な終わりを記す。
EXIT METHOD(メソッド出口)文は,呼び出されたメソッドの論理的な終わりを記す。
EXIT FUNCTION(関数出口)文は,関数の実行の論理的な終わりを記す。
EXIT PERFORM(perform出口)文は,うちPERFORMを脱出するための手段を提供する。脱出検査に
戻すか否かは指定による。
EXIT PARAGRAPH(段落出口)文と EXIT SECTION(節出口)文とは,構造化手続き内の後続の文を
実行せずにその手続きを出るための手段を提供する。
14.8.13.1 一般形式
書き方1(単純)
EXIT
書き方2(プログラム)
EXIT PROGRAM
RAISING
EXCEPTION 例外名1
一意名1
LAST EXCEPTION
書き方3(メソッド)
EXIT METHOD
RAISING
EXCEPTION 例外名1
一意名1
LAST EXCEPTION
書き方4(関数)
EXIT FUNCTION
RAISING
EXCEPTION 例外名1
一意名1
LAST EXCEPTION
書き方5(うちPERFORM)
EXIT PERFORM [CYCLE]
書き方6(手続き)
EXIT
PARAGRAPH
SECTION
14.8.13.2 構文規則
書き方1
1) EXIT文はそれ自体が一つの完結文をなしている,段落中で唯一の完結文でなければならない。
書き方2,書き方3,書き方4
2) EXIT文を,GLOBAL指定付きUSE文の関連宣言手続き中に指定してはならない。
3) 例外名1は,例外状態に対する規則に従った,レベル3の例外名でなければならない[14.5.12.1(例
外状態)参照]。
349
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
例外名1がEC-USERに対するレベル3の例外名のとき,このEXIT文を指定したソース要素の手続
き部見出しのRAISING指定にも例外名1が指定されていなければならない。
4) 一意名1は,送出し側作用対象とする。
5) 一意名1は,オブジェクト参照で,次の制限に従っていなければならない。
a) 一意名1のデータ記述項にクラス名の指定があるとき,このEXIT文を含むソース要素の手続き部
見出しのRAISING指定に,そのクラス名のクラス又はそのクラスの上位クラスの一つが指定され
ていて,かつ,データ記述項のFACTORY指定の有無が,一意名1とこのEXIT文を含むソース要
素の手続き部見出しのRAISING指定とで同じである。
b) 一意名1のデータ記述項にインタフェース名の指定があるとき,そのインタフェース名のインタフ
ェースが,このEXIT文を指定したソース要素の手続き部見出しのRAISING指定中に書かれたイン
タフェースに適合している。
c) 一意名1のデータ記述項にACTIVE-CLASS指定があるとき,このEXIT文を含むソース要素の手続
き部見出しのRAISING指定に,このEXIT文を含むオブジェクトが属するクラス,又はそのクラス
の上位クラスの一つが指定されていて,かつ,データ記述項のFACTORY指定の有無が,一意名1
とこのEXIT文を含むソース要素の手続き部見出しのRAISING指定とで同じである。
d) 一意名1が非限定オブジェクト参照であってはならない。
6) LAST指定は,宣言手続き中にだけ書いてもよい。
書き方2
7) EXIT PROGRAM文は,プログラムの手続き部中にだけ指定してもよい。
書き方3
8) EXIT METHOD文は,メソッドの手続き部中にだけ指定してもよい。
書き方4
9) EXIT FUNCTION文は,関数の手続き部中にだけ指定してもよい。
書き方5
10) EXIT PERFORM文は,うちPERFORM文中にだけ指定してもよい。
書き方6
11) SECTION指定をもつEXIT文は,節の中にだけ指定してもよい。
14.8.13.3 一般規則
書き方1
1) EXIT文は,利用者が手続き部のある位置に手続き名を付けるためにだけ指定する。このようなEXIT
文は,翻訳及び実行に対してその他の影響を及ぼさない。
書き方2,書き方3,書き方4
2) 関数形式,メソッド形式又はプログラム形式のEXIT文が,USE文にGLOBAL指定がある宣言手続き
の範囲内で実行され,かつ,USE文の指定箇所がそのEXITを指定したのと同じ関数・メソッド・プ
ログラム中であるとき,EC-FLOW-GLOBAL-EXIT例外状態になる。
3) RAISING指定があるとき,活性化する側の実行時要素中でその例外状態の検査が有効である場合は,
活性化する側の実行時要素中で例外状態が起こる。活性化される側の要素にRETURNING指定の結果
がある場合は,それが活性化する側の要素へと返された後に,活性化文の規則の規定に従って,その
活性化する側の実行時要素中へと実行が続く。成立する例外状態は,次のとおり決まる。
a) 例外名1を指定した場合,それが例外状態である。
350
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
b) 一意名1を指定した場合,一意名1のオブジェクトが,活性化する側の実行時要素中での現在の例
外オブジェクトになる。追加規則は,14.5.12.1.4(例外オブジェクト)による。
c) LAST指定を書いた場合,次のいずれかが起こる。
1. 例外状態が現在引き起こされているとき,活性化する側の実行時要素がその例外状態になる。そ
の例外状態が例外オブジェクトであるとき,追加規則は14.5.12.1.4(例外オブジェクト)による。
その例外状態がEC-USERに対するレベル3の例外名であって,このEXIT文を指定したソース要
素の手続き部見出しのRAISING指定中には指定されていないとき,活性化する側の実行時要素
はEC-USERの代わりにEC-RAISING-NOT-SPECIFIED例外状態になる。
2. 例外状態が引き起こされていないとき,RAISING指定は無視され,活性化する側の実行時要素は
例外状態にならない。
4) 活性化する側の実行時要素が非COBOL要素のとき,その活性化する側の実体中へと実行が続く方式
は,実装者定義とする。
書き方2
5) 呼び出す側の実行時要素の制御下にないプログラムでEXIT PROGRAM文が実行される場合,EXIT
PROGRAM文はCONTINUE文と同様に扱われる。たとえRAISING指定があっても,例外状態になる
ことはない。
6) EXIT PROGRAM文の実行は,実行中のプログラムを終了させ,呼出し側の文に制御を戻す。EXIT文
を含んでいるプログラムの手続き部見出しにRETURNING指定がある場合,RETURNING指定で参照
されるデータ項目の値が,プログラム活性化の結果になる。
呼出し側の実行時要素がCOBOL要素のときは,CALL文の規則の規定に従って,呼び出す側の実
行時要素中へと実行が続く。呼び出す側の実行時要素の状態は変更されないで,CALL文を実行した
とき存在した状態と同じである。ただし,例外として,呼び出す側の実行時要素と呼び出される側の
プログラムとの間で共有されるデータ項目の内容,及びファイルの内容が変更されることがある。
EXIT PROGRAM文を指定したプログラムが初期化プログラムである場合,呼び出す側の実行時要素
への復帰によって,そのプログラムを参照する暗黙のCANCEL文が実行される。その暗黙のCANCEL
文が,呼び出す側の実行時要素中で例外状態を引き起こすことはない。EXIT文にRAISING指定があ
る場合,RAISING指定に書かれた例外状態になるのは,その暗黙のCANCEL文の実行の後になる。
書き方3
7) EXIT METHOD文の実行は,実行中のメソッドを終了させて,呼出し側の文に制御を戻す。EXIT
METHOD文を含んでいるメソッド定義中にRETURNING指定が存在する場合,RETURNING指定で
参照されるデータ項目の値が,メソッドの呼出しの結果になる。
書き方4
8) EXIT FUNCTION文の実行は,実行中の関数を終了させて,活性化する側の文に制御を戻す。EXIT
FUNCTION文を含んでいる関数定義中のRETURNING指定によって参照されるデータ項目の値が,
関数活性化の結果になる。
書き方5
9) CYCLE指定のないEXIT PERFORM文の実行は,うちPERFORM文の中で未終了で最も近い先行の文
に対応するEND-PERFORM指定の直後にあるとみなされる,暗黙のCONTINUE文に制御を渡す。
10) CYCLE指定のあるEXIT PERFORM文の実行は,うちPERFORM文の中で未終了で最も近い先行の文
に対応するEND-PERFORM指定の直前にあるとみなされる,暗黙のCONTINUE文に制御を渡す。
351
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
書き方6
11) EXIT PARAGRAPH文の実行は,当該段落の最後の明示的な文の直後にあり,その段落の復帰機構に
先行する,暗黙のCONTINUE文に制御を渡す。
注記 EXIT PARAGRAPH及びEXIT SECTIONの規則にいう復帰機構とは,PERFORM,SORT,USE
などの言語要素に関連するものである。
12) EXIT SECTION文の実行は,当該節の最後の段落の直後にあり,その節の復帰機構に先行する,名前
がなく中身のない段落に制御を渡す。
14.8.14 FREE文
FREE(解放)文は,それ以前にALLOCATE文によって獲得されている動的記憶域を解放する。
14.8.14.1 一般形式
FREE {データ名1} …
14.8.14.2 構文規則
1) データ名1のデータ項目は,項類がデータポインタでなければならない。
14.8.14.3 一般規則
1) FREE文の処理は,次による。
a) データ名1のデータポインタが,ALLOCATE文によって現在で割り当てられている記憶域の先頭を
識別しているとき,その記憶域が解放されて,データ名1のデータポインタにはNULLが設定され
る。解放される記憶域の長さは,ALLOCATE文で獲得された記憶域の長さである。解放された記憶
域の範囲内にあるデータ項目の内容は規定されない。
b) そうでなく,データ名1のデータポインタの内容が既定義アドレスNULLであるとき,何の動作も
行われない。
c) さもなければ,EC-STORAGE-NOT-ALLOC例外状態になる。
2) 複数個のデータ名1を指定したFREE文の実行結果は,各々のデータ名1に対して,この文中で指定
された順に別々のFREE文を書いた場合と同じとする。これらの暗黙のFREE文のいずれかの結果と
して,宣言手続き中でNEXT STATEMENT指定付きRESUME文が実行された場合,その次に暗黙の
FREE文があるとき,そこから処理が再開する。
14.8.15 GENERATE文
GENERATE(作成)文は,制御切れの処理を実行する。報告書名が指定されたのでなければ,指定され
た明細報告集団の一つの実体を印字する。
14.8.15.1 一般形式
GENERATE
データ名1
報告書名1
14.8.15.2 構文規則
1) データ名1は,明細報告集団の名前でなければならない。報告書名で修飾してもよい。
2) 報告書名1は,参照される報告書記述項にCONTROL句があるときだけ用いてもよい。
3) データ名1が外側のプログラム中で定義されている場合,データ名1が指定された報告書記述項及び
それに関連するファイル記述項の両方にGLOBAL句がなければならない。
4) 報告書名1が外側のプログラム中で定義されている場合,報告書名1に関連するファイル記述項には
GLOBAL句がなければならない。
14.8.15.3 一般規則
352
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) GENERATE データ名文を実行すると,次に詳述するとおり,必要に応じて制御切れ処理(control break
processing)及びページ内収納処理(page fit processing)が行われた後,指定した明細報告集団の一つ
の実体が印字される。
2) GENERATE 報告書名1文を実行すると,明細報告集団が印字されない点を除けば,同じ報告書に対
するGENERATE データ名文と同じ処理を行う。この処理を,合計報告(summary reporting)と呼ぶ。
ある報告書に対してINITIATE文の実行とTERMINATE文の実行の間に実行されるGENERATE文が全
てこの形式である場合,作成される報告書を,合計報告書(summary report)と呼ぶ。
3) 報告書記述項にCONTROL句がある場合,GENERATE文を実行するたびに,指定された制御データ
項目が保存され,それ以降に制御切れを検出するために比較される。この処理はCONTROL句によっ
て規定される。
4) INITIATE文に続き時系列的に最初のGENERATE文を実行すると,次の動作がこの順に起きる。
a) 報告書頭書き(report heading)が,定義されていれば印字される。報告書頭書きが単独で1ページ
をなしている場合は,改ページが行われて次の物理ページへ進む。PAGE-COUNTERは,1増やさ
れるか,又は報告書頭書きのNEXT GROUP句にWITH RESET指定がある場合は,1に戻される
[13.16.55(TYPE句)及び13.16.35(NEXT GROUP句)参照]。
b) ページ頭書き(page heading)が,定義されていれば印字される[13.16.55(TYPE句)参照]。
c) 報告書にCONTROL句の定義がある場合,制御頭書きの各々は,定義されていれば,制御レベルの
高いものから低いものへの順で印字される[13.16.15(CONTROL句)及び13.16.55(TYPE句)参
照]。
d) 合計報告が指定されたのでなければ,指定された明細報告集団が印字される。
5) INITIATE文に続き時系列的に2番目以降のGENERATE文を実行すると,次の動作がこの順に起きる。
a) 報告書にCONTROL句の定義がある場合,制御切れが検出されると,制御脚書き及び制御頭書きの
各々が,定義されていれば,その制御切れのレベルまで印字される[13.16.15(CONTROL句)及び
13.16.55(TYPE句)参照]。
b) 合計報告が指定されたのでなければ,指定された明細報告集団が印字される。
6) 関連する報告書がページに分けられる場合,INITIATEに続き時系列的に最初の本体集団は,ページ頭
書きの定義があるときは先行する。それ以降の本体集団の印字は,先にページ内収納検査が行われ,
その検査が不成功なら結果として改ページが,次の動作とこの順序で行われる。
a) ページ脚書き(page footing)が,定義されていれば印字される。
b) 次の物理ページへと改ページされる。
c) 関連する報告書記述項に,一意名の作用対象をもつCODE句がある場合,その一意名が評価される。
d) 改ページより前に,NEXT PAGE指定及びWITH RESET指定のあるNEXT GROUP句の記述をもつ
報告集団が印字されれば,PAGE-COUNTERは1に戻される。さもなければ,PAGE-COUNTERは1
増やされる。
e) LINE-COUNTERには,0が設定される。
f)
ページ頭書き(page heading)が,定義されていれば印字される。
7) データ名1又は報告書名1に関連する報告書は,活性状態でなければならない。さもなければ,
EC-REPORT-INACTIVE例外状態になる。
8) GENERATE文の実行中に非致命的例外状態が起きた場合,その次の印字可能項目,行又は報告集団の
うちで,論理的に直後にあるものから,実行が再開する。
353
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
14.8.16 GO TO文
GO TO(飛越し)文は,手続き部のある部分から別の部分へ制御を移す。
14.8.16.1 一般形式
書き方1(無条件)
GO TO 手続き名1
書き方2(depending)
GO TO {手続き名1} … DEPENDING ON 一意名1
14.8.16.2 構文規則
1) 一意名1は,整数である数字基本データ項目でなければならない。
2) 書き方1で表現されるGO TO文が,完結文中の一連の無条件文の並びの中に現れる場合,それはその
並びの中の最後の文として現れなければならない。
14.8.16.3 一般規則
1) 書き方1が表すGO TO文を実行した場合,制御が手続き名1に移される。
2) 書き方2が表すGO TO文を実行した場合,一意名1の値が1,2,…,nであるのに従って,手続き名
1などに制御が移される。一意名1の内容が数字でない場合,EC-DATA-INCOMPATIBLE例外状態に
なる。EC-DATA-INCOMPATIBLEに対する検査が有効である場合,その例外状態に対する規定に従っ
て処理が起こる。EC-DATA-INCOMPATIBLEに対する検査が有効でない場合,又は一意名1の値が正
の整数でも符号なし整数1,2,…,nでもない場合,制御の移行は起きず,実行の通常の流れにおけ
る次に実行可能な文へと制御が渡される。
14.8.17 GOBACK文
GOBACK(復帰)文は,関数・メソッド・プログラムの論理的な終わりを示す。
14.8.17.1 一般形式
GOBACK
RAISING
EXCEPTION 例外名1
一意名1
LAST EXCEPTION
14.8.17.2 構文規則
1) GOBACK文を,GLOBAL指定付きUSE文の関連宣言手続き中に指定してはならない。
14.8.17.3 一般規則
1) GOBACK文の実行箇所が,呼出し側実行時要素の制御下にあるプログラム中の場合,そのプログラム
の動作は,EXIT PROGRAM文を実行するのと同様である。GOBACK文にRAISING指定がある場合
そのEXIT PROGRAM文にも同じRAISING指定がある。
2) GOBACK文の実行箇所が,呼出し側実行時要素の制御下にないプログラム中の場合,そのプログラム
の動作は,選択可能指定のないSTOP文を実行するのと同様である。RAISING指定は,もしあっても
無視される。
3) GOBACK文の実行箇所が関数の中である場合,その関数の動作は,EXIT FUNCTION文を実行するの
と同様である。GOBACK文にRAISING指定がある場合,そのEXIT FUNCTION文にも同じRAISING
指定がある。
4) GOBACK文の実行箇所がメソッド中である場合,メソッドの動作は,EXIT METHOD文を実行するの
と同様である。GOBACK文にRAISING指定がある場合,そのEXIT METHOD文にも同じRAISING
指定がある。
354
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
5) GOBACK文の実行箇所が,USE文にGLOBAL指定がある宣言手続きの範囲内であり,そのUSE文
とGOBACK文とが同じプログラム中にある。
14.8.18 IF文
IF(判断)文は,ある条件を評価する。実行時要素の以降の動作は,条件の値が真であるか偽であるか
に従って異なる。
14.8.18.1 一般形式
書き方1(範囲明示)
IF 条件1 THEN 文1 [ ELSE 文2 ] END-IF
書き方2(旧仕様)
IF 条件1 THEN
文1
NEXT SENTENCE
ELSE
文2
NEXT SENTENCE
注記 NEXT SENTENCEは旧式の書き方であり,使用しないほうがよい。
14.8.18.2 構文規則
全ての書き方
1) 文1及び文2は,一連の無条件文の並び又は一つの条件文とする。その条件文の前に一連の無条件文
の並びがあってもよい。文1及び文2に関するこれ以上の規則は,14.4.2(文の範囲)による。
2) 文1及び文2は,それぞれが別のIF文を内包していてもよい。この場合,IF文は入れ子であるとい
う。入れ子に関する更に詳細な規則は,14.4.2(文の範囲)による。
IF文の内部にあるIF文は,左から右へ順にIF,ELSE,END-IFの組合せを作っているとみなされ
る。ELSEが現れたとき,それに対応する相手は,ELSEとは未対応の又は暗黙にも明示的にも未終了
の,直前にあるIFとする。END-IFが現れたとき,それに対応する相手は,暗黙にも明示的にも未終
了の,直前にあるIFとする。
書き方2
3) ELSE指定は,完結文の終わりにある分離符の終止符の直前にある場合,省略してもよい。
14.8.18.3 一般規則
書き方1
1) 条件1が真である場合,文1の最初の文へ制御が移り,文1中の各文の規則に従って実行が続く。ELSE
指定はあっても無視される。
2) 条件1が偽である場合,THEN指定は無視される。ELSE指定があれば,文2の最初の文へ制御が移
り,文2中の各文の規則に従って実行が続く。
書き方2
3) 条件1が真で,文1がある場合,文1の最初の文へ制御が移り,文1中の各文の規則に従って実行が
続く。ELSE指定はあっても無視される。
4) 条件1が真で,THEN指定中にNEXT SENTENCE指定がある場合,ELSE指定はあっても無視され,
次の分離符の終止符の直前にあるとみなされる暗黙のCONTINUE文へ制御が移る。
5) 条件1が偽で,文2がある場合,THEN指定は無視され,文2の最初の文へ制御が移り,文2中の各
文の規則に従って実行が続く。
6) 条件1が偽で,ELSE指定中にNEXT SENTENCE指定がある場合,THEN指定は無視され,次の分離
符の終止符の直前にあるとみなされる暗黙のCONTINUE文へ制御が移る。
7) 条件1が偽で,ELSE指定がない場合,THEN指定は無視される。
355
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
14.8.19 INITIALIZE文
INITIALIZE(初期化)文は,選択したデータ項目の組に特定の値を設定する機能を提供する。
14.8.19.1 一般形式
INITIALIZE {一意名1} … [WITH FILLER]
ALL
項類名称 TO VALUE
THEN REPLACING
項類名称 DATA BY
一意名2
定数1
…
[THEN TO DEFAULT]
ここで,項類名称は,次による。
ALPHABETIC
ALPHANUMERIC
ALPHANUMERIC-EDITED
BOOLEAN
DATA-POINTER
NATIONAL
NATIONAL-EDITED
NUMERIC
NUMERIC-EDITED
OBJECT-REFERENCE
PROGRAM-POINTER
14.8.19.2 構文規則
1) 一意名1は,強い型付けの集団項目であるか,それとも字類が英字,英数字,ブール,各国文字,数
字,オブジェクト又はポインタであるかの,いずれかでなければならない。
2) REPLACING指定の項類名称に書いたDATA-POINTER,OBJECT-REFERENCE,PROGRAM-POINTER
の各々に対しては一意名2を指定しなければならない。
3) REPLACING指定の項類名称に書いたデータポインタ,オブジェクト参照,及びプログラムポインタ
の各々に対しては,一意名2を送出し側作用対象とし,指定された項類の項目を受取り側作用対象と
するSET文が,正しいものにならなければならない。
REPLACING指定のこれ以外の項類の各々に対しては,一意名2又は定数1を送出し側作用対象と
し,指定された項類の項目を受取り側作用対象とするMOVE文が,正しいものにならなければならな
い。
4) 一意名1のデータ項目のデータ記述項は,RENAMES句を含んではならない。
5) 同じ項類をREPLACING指定内で繰り返してはならない。
6) 一意名1のデータ項目は,受取り側作用対象とする。
7) REPLACING指定があるとき,定数1又は一意名2のデータ項目を送出し側作用対象とする。
REPLACING指定がないとき,送出し側作用対象はINITIALIZE文の一般規則から決定する。
14.8.19.3 一般規則
1) 一意名1がビット集団項目又は各国文字集団項目を指している場合,一意名1は集団項目として処理
される。一意名2がビット集団項目又は各国文字集団項目を指している場合,一意名2は基本項目と
して処理される。
2) 項類名称中のキーワードは,データの項類に対応する[8.5.2(データ項目及び定数の字類及び項類)
356
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
参照]。VALUE指定にALLを書いた場合は,項類名称の一覧にある項類の全てを書いたのと同様にな
る。
3) 二つ以上の一意名1を指定したINITIALIZE文の実行結果は,各々の一意名1に対して,この文中に
指定した順に別々のINITIALIZE文を指定した場合と同じとする。これらの暗黙のINITIALIZE文のい
ずれかの実行結果として,宣言手続き中でNEXT STATEMENT指定付きRESUME文が実行された場
合,その次に暗黙のINITIALIZE文があるときは,そこから処理が再開する。
4) 一意名1が基本項目を参照するか集団項目を参照するかに関係なく,INITIALIZE文を実行する効果は,
基本項目を受取り側作用対象とする,暗黙のSET文又はMOVE文のひと続きが実行されるのと同じ
とする。これらの暗黙の文の送出し側作用対象は一般規則6) で,受取り側作用対象は一般規則5) で
定義する。
受取り側作用対象の項類がデータポインタ,オブジェクト参照又はプログラムポインタであれば,
暗黙の文は次のとおりとする。
SET 受取り側作用対象 TO 送出し側作用対象
さもなければ,暗黙の文は次のとおりとする。
MOVE 送出し側作用対象 TO 受取り側作用対象
5) 暗黙のMOVE文又はSET文の受取り側作用対象は,次の段階をこの順に適用して決まる。
a) 第一に,次のデータ項目は受取り側作用対象から除外される。
1. MOVE文の受取り側作用対象として正しくない一意名。ただし,項目の項類がデータポインタ,
オブジェクト参照,プログラムポインタのいずれかであればこの限りではない。
2. FILLER指定がない場合,明示的な又は暗黙のFILLER句をもつ基本データ項目。
3. 一意名1に従属する基本データ項目のうち,データ記述項にREDEFINES句又はRENAMES句が
あるもの,及びデータ記述項にREDEFINES句があるデータ項目に従属するもの。しかし,一意
名1自体にREDEFINES句があってもよいし,一意名1自体がREDEFINES句のあるデータ項目
に従属していてもよい。
b) 第二に,次のいずれかの場合,基本データ項目は受取り側項目になり得る。
1. その基本データ項目は,一意名1で明示的に参照されている。
2. その基本データ項目は,一意名1の集団データ項目に含まれている。基本データ項目が表要素で
あれば,反復要素の各々が受取り側作用対象になり得る。
c) 最後に,次の少なくとも一つが真である場合に受取り側作用対象になり得るものは,各々が受取り
側作用対象になり得る。
1. VALUE指定があり,その基本データ項目の項類はそこに明示的又は暗黙に指定されている項類の
一つであり,かつ,次のいずれかが真である。
a. その基本データ項目の項類はデータポインタ,オブジェクト参照又はプログラムポインタのい
ずれかである。
b. その基本データ項目のデータ記述項に,データ項目形式又は表形式のVALUE句がある。
2. REPLACING指定があり,その基本データ項目の項類はREPLACING指定に書かれている項類の
一つである。
3. DEFAULT指定がある。
4. REPLACING指定もVALUE指定もない。
6) 暗黙のMOVE文又はSET文の送出し側作用対象は,次のとおり決まる。
357
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
a) VALUE指定の存在によってデータ項目が受取り側作用対象になった場合は,次による。
1. 受取り側作用対象の項類がデータポインタ又はプログラムポインタであるとき,送出し側作用対
象は既定義アドレスNULLとする。
2. 受取り側作用対象の項類がオブジェクト参照であるとき,送出し側作用対象は既定義オブジェク
ト参照NULLとする。
3. さもなければ,送出し側作用対象は,そのデータ項目のデータ記述項に指定したVALUE句の定
数によって決まる。そのデータ項目が表要素である場合,初期化対象の出現番号に対応する
VALUE句の定数が,送出し側作用対象を決定する。実際の送出し側作用対象は,VALUE句を適
用して生成したそのデータ項目の初期値と同じ結果を,MOVE文で受取り側作用対象へ転記した
場合に生成するような定数とする。
b) VALUE指定でなくREPLACING指定の存在によってデータ項目が受取り側作用対象になった場合,
送出し側作用対象は,REPLACING指定中に書いた項類に関連する定数1又は一意名2である。
c) 一般規則6) a) にも6) b) にも従わない理由でデータ項目が受取り側作用対象になった場合,送出し
側作用対象に用いられるものは,受取り側作用対象の項類によって異なり,次による。
受取り側作用対象
送出し側作用対象
英字
(alphabetic)
表意定数の英数字SPACES
英数字
(alphanumeric)
表意定数の英数字SPACES
英数字編集
(alphanumeric-edited)
表意定数の英数字SPACES
ブール
(boolean)
表意定数のZEROES
データポインタ(data-pointer)
既定義アドレスのNULL
各国文字
(national)
表意定数の各国文字SPACES
各国文字編集 (national-edited)
表意定数の各国文字SPACES
数字
(numeric)
表意定数のZEROES
数字編集
(numeric-edited)
表意定数のZEROES
オブジェクト参照(object-reference)
既定義オブジェクト参照のNULL
プログラムポインタ(program-pointer) 既定義アドレスのNULL
7) 一意名1が集団データ項目を参照している場合には,影響を受ける基本データ項目は,それが集団デ
ータ項目の中に定義された順序で初期化される。可変反復データ項目では,初期化される出現項目の
個数は,受取り側データ項目用のOCCURS句の規則によって決まる。
8) 一意名1が一意名2と同じ領域を占める場合,たとえそれらが同じデータ記述項によって定義されて
いても,この文の実行結果は規定しない[14.5.9(作用対象の重なり)参照]。
14.8.20 INITIATE文
INITIATE(開始)文は,指定した各々の報告書が使用する内部記憶装置位置を,報告書の印刷が始まる
前に初期化する。
14.8.20.1 一般形式
INITIATE {報告書名1} …
14.8.20.2 構文規則
1) 報告書名1は,報告書節の報告書記述項で定義しなければならない。
2) 報告書名1が外側のプログラム中で定義されている場合,報告書名1に関連するファイル記述項には
GLOBAL句がなければならない。
358
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
14.8.20.3 一般規則
1) INITIATE文は,指定された各報告書について次の初期化の機能を実行する。
a) 全ての合計カウンタ及び全てのけたあふれ指示子を0に設定する。
b) LINE-COUNTERを0に設定する。
c) PAGE-COUNTERを1に設定する。
2) 報告書名1が活性状態のとき,INITIATE文を実行してはならない。さもなければ,EC-REPORT-ACTIVE
例外状態になって,INITIATE文の実行は効果をもたない。
3) INITIATE文は,報告書名1に関連するファイル結合子を開くものではない。したがって,INITIATE
文を実行してもよいのは,対応するファイル結合子が拡張モード又は出力モードで開いた状態のとき
だけとする。ファイル結合子が拡張モード又は出力モードで開いていなければ,
EC-REPORT-FILE-MODE例外状態になって,報告書には何も動作が起こらない。
4) INITIATE文が成功すると,報告書は活性状態になる。
5) 二つ以上の報告書名1を指定したINITIATE文の実行結果は,各々の報告書名1に対して,この文中
に指定した順に別々のINITIATE文を指定した場合と同じとする。これら暗黙のINITIATE文のいずれ
かの結果として,宣言手続き中でNEXT STATEMENT指定付きRESUME文が実行された場合,その
次に暗黙のINITIATE文があるときは,そこから処理が再開する。
14.8.21 INSPECT文
INSPECT(文字列検査)文は,データ項目中に出現する単一の文字又は一連の文字列を,数え上げたり,
又は置換したりする機能を提供する。
14.8.21.1 一般形式
書き方1(計数)
INSPECT 一意名1 TALLYING tallying指定
書き方2(置換)
INSPECT 一意名1 REPLACING replacing指定
書き方3(計数と置換)
INSPECT 一意名1 TALLYING tallying指定 REPLACING replacing指定
書き方4(変換)
INSPECT 一意名1 CONVERTING
一意名6
定数4
TO
一意名7
定数5
[after-before指定]
ここで,tallying指定は,次による。
一意名2 FOR
CHARACTERS [after-before指定]
ALL
一意名3
定数1
[after-before指定] …
LEADING
一意名3
定数1
[after-before指定] …
…
…
replacing指定は,次による。
359
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
CHARACTERS BY 置換項目 [after-before指定]
ALL
一意名3
定数1
BY 置換項目 [after-before指定] …
LEADING
一意名3
定数1
BY 置換項目 [after-before指定] …
FIRST
一意名3
定数1
BY 置換項目 [after-before指定] …
…
置換項目は,次による。
一意名5
定数3
after-before指定は,次による。
AFTER INITIAL
一意名4
定数2
BEFORE INITIAL
一意名4
定数2
14.8.21.2 構文規則
全ての書き方
1) 一意名1は,英数字集団項目,各国文字集団項目,用途がDISPLAY又はNATIONALと明示的又は暗
黙に記述された基本項目のいずれかでなければならない。
2) 一意名3から一意名nまでの一意名は,用途がDISPLAY又はNATIONALと明示的又は暗黙に記述さ
れた基本項目でなければならない。
3) 各々の定数は,英数字定数・ブール定数・各国文字定数でなければならない。定数1,定数2,定数3
又は定数4が語ALLで始まる表意定数であってはならない。定数1,定数2又は定数4が表意定数で
あるとき,暗黙的に1文字のデータ項目を参照する。一意名1の字類が各国文字であれば,表意定数
の字類は各国文字とする。一意名1の字類がブールであれば,表意定数の字類はブールであり,指定
してもよい表意定数はZEROだけとする。さもなければ,表意定数の字類は英数字とする。
4) 一意名1,一意名3,一意名4,一意名5,一意名6,一意名7のいずれかが指す基本データ項目又は
定数1,定数2,定数3,定数4,定数5のいずれかが,ブール又は各国文字の字類である場合,これ
らが指す基本データ項目及び定数は全て,それぞれブール又は各国文字の字類でなければならない。
書き方1,書き方3
5) 一意名2は,基本数字データ項目でなければならない。
書き方2,書き方3
6) 定数1と定数3の両方を指定するとき,これらは同じ大きさでなければならない。ただし,定数3が
表意定数のときはこの限りでなく,定数1の大きさに合わせて拡大又は縮小を行う。
7) CHARACTERS指定を書くとき,定数3は長さが1文字でなければならない。
書き方1
8) 一意名1のデータ項目は,送出し側作用対象とする。
書き方4
9) 定数4と定数5の両方を指定するとき,これらは同じ大きさでなければならない。ただし,定数5が
表意定数のときはこの限りでない。
360
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
14.8.21.3 一般規則
全ての書き方
1) 長さを決めるために,一意名1は送出し側データ項目として扱われる。一意名1のデータ項目が長さ
ゼロの項目であれば,INSPECT文の実行は直ちに終了する[13.16.36(OCCURS句)参照]。
2) 検査(これには,比較の周期,BEFORE指定又はAFTER指定の範囲の確立,並びに計数及び/又は
置換の機構の指定が含まれる。)は,その字類とは無関係に,一意名1のデータ項目の最左端文字位置
から始まって,一般規則の6)〜8)に従って,左から右へ最右端文字位置まで進む。
3) INSPECT文で用いる場合,一意名1,一意名3,一意名4,一意名5,一意名6又は一意名7のデータ
項目の内容は,次による。
a) 一意名1,一意名3,一意名4,一意名5,一意名6又は一意名7が,英字,英数字,ブール又は各
国文字のデータ項目である場合,INSPECT文は,そのような一意名それぞれの内容を,その一意名
と関連する項類の文字列として扱う。
b) 一意名1,一意名3,一意名4,一意名5,一意名6又は一意名7が,英数字編集のデータ項目であ
る場合,並びに数字編集又は符号なし数字のデータ項目で明示的又は暗黙に用途がDISPLAYと記
述してある場合,データ項目の検査は,そのデータ項目を英数字として再定義し[一般規則3) a) 参
照],その再定義データ項目をINSPECT文が参照しているかのように行われる。
c) 一意名1,一意名3,一意名4,一意名5,一意名6又は一意名7が,各国文字編集データ項目であ
る場合,又は数字編集データ項目若しくは符号なし数字データ項目であって用途が明示的若しくは
暗黙にNATIONALと記述してある場合,データ項目の検査は,そのデータ項目を各国文字項類と
して再定義し,その再定義データ項目をINSPECT文が参照しているかのように行われる。
d) 一意名1,一意名3,一意名4,一意名5,一意名6又は一意名7が,符号付き数字データ項目であ
る場合,データ項目の検査は,分離符号位置を除いて等しい長さをもつ符号なし数字データ項目に
転記して,その後,一般規則3) b) 又は3) c) を適用したかのように行われる。符号付き数字項目が
一意名1であるときは,元の符号の値をINSPECT文の完了まで保存する。
4) 一般規則6) 〜 21) での,定数1,定数2,定数3,定数4又は定数5への言及箇所は全て,それぞれ
一意名3,一意名4,一意名5,一意名6又は一意名7のデータ項目の内容にも同様に適用する。
5) あらゆる一意名の項目識別は,INSPECT文の実行の最初の操作として一度だけ行われる。
書き方1,書き方2
6) 文字列検査は,一意名1のデータ項目の内容を検査して,その間中,定数1と正確に一致する出現を,
数え上げる(書き方1)か,又は定数3で置換する(書き方2)。
7) 計数又は置換の対象となる定数1の出現を決定する比較操作は,次のとおりに進む。
a) TALLYING指定又はREPLACING指定の作用対象は,INSPECT文中で左から右へ指定された順序
に並んでいるとみなす。最初の定数1を,一意名1のデータ項目中の最左端文字位置から,同じ文
字数の連続した文字列と比較する。定数1が一意名1のデータ項目の内容の一部と一致するのは,
それらが文字単位の比較で等しく,更に次の条件のいずれかを満たす場合とする。
1. LEADING指定もFIRST指定も書かれていない。
2. LEADING指定が定数1に適用され,一般規則11) 及び16) に従って定数1が先頭に出現した。
3. FIRST指定が定数1に適用され,一般規則16) に従って定数1が最初に出現した。
b) 最初の定数1の比較で一致がなかった場合,引き続く定数1があれば,一致が見つかるか又は次に
続く定数1がなくなるまで,各定数1を使って比較を繰り返す。次に続く定数1がなくなった場合,
361
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
一意名1のデータ項目中の文字位置のうち,直前の比較の周期で最左端とみなした文字位置のすぐ
右側の文字位置を最左端の文字位置とみなして,再び最初の定数1から比較の周期を開始する。
c) 一致した場合は,一般規則12) 及び15) に従って計数又は置換を行う。一意名1のデータ項目中の
文字位置のうち,一致した文字の最右端のすぐ右側の文字位置を,次の比較の周期における最左端
文字位置とみなして,比較の周期を再び最初の定数1から開始する。
d) この比較操作が行われるのは,一意名1のデータ項目の最右端文字位置が一致の対象となったか,
又は最左端文字位置とみなしたかのいずれかまでとする。この状態が生じると検査は終了する。
e) CHARACTERS指定を書いたときは,定数1を指定したときと同様に,暗黙の1文字の作用対象を
用いて一般規則7) a)〜7) d) の操作を行う。ただし,この暗黙の作用対象と一意名1のデータ項目
との内容の比較は行わない。この暗黙の作用対象は,一意名1のデータ項目の内容の,現在の比較
の周期における最左端の文字と常に一致するものとみなす。
8) 一般規則7) の比較操作は,BEFORE指定及びAFTER指定によって,次のとおり制限される。
a) BEFORE指定もAFTER指定も書かないとき,又は一意名4が長さゼロの項目を指しているとき,
CHARACTERS指定の暗黙の作用対象又は定数1を用いて操作を行う範囲は,一般規則7) のとおり
とする。CHARACTERS指定の暗黙の作用対象又は定数1と最初に比較される文字位置は,一意名
1の最左端文字位置である。
b) BEFORE指定を書いたとき,CHARACTERS指定の暗黙の作用対象又は定数1を用いて操作を行う
範囲は,一意名1のデータ項目中の内容の最左端文字位置から,定数2と一致する内容が一意名1
のデータ項目中に最初に出現する直前までとする。この最初の出現位置が決まるのは,一般規則7)
の比較操作の,最初の周期が始まる前である。どの比較の周期においても,CHARACTERS指定の
暗黙の作用対象又は定数1を用いた操作が行われなければ,一意名1のデータ項目の内容と一致が
ないものとみなす。一意名1のデータ項目中に定数2が出現しないときは,CHARACTERS指定の
暗黙の作用対象又は定数1を用いて操作を行う範囲は,BEFORE指定を書かないとき同様とする。
c) AFTER指定を書いたときに,CHARACTERS指定の暗黙の作用対象又は定数1を用いて操作を行う
範囲は,定数2と一致する内容が一意名1のデータ項目中に最初に出現した直後から,一意名1の
データ項目中の内容の最右端文字位置までとする。この最初の出現位置が決まるのは,一般規則7)
の比較操作の,最初の周期が始まる前である。比較の周期において,CHARACTERS指定の暗黙の
作用対象又は定数1を用いた操作が行われなければ,一意名1のデータ項目の内容と一致がないも
のとみなす。一意名1のデータ項目中に定数2が出現しないときは,CHARACTERS指定の暗黙の
作用対象又は定数1を用いた操作を行わない。
書き方1
9) ALL指定及びLEADING指定は,もう一つ別のALL指定及びLEADING指定が現れるまで,後続す
る各々の作用対象に次々と適用される。
10) 一意名2のデータ項目の内容は,INSPECT文の実行によって初期化されるわけではない。
11) 計数の規則は,次による。
a) ALL指定では,一意名1のデータ項目の指定された範囲内で定数1に一致した文字列の出現回数を
数えて,それを一意名2のデータ項目に加える。
b) LEADING指定では,一意名1のデータ項目の指定された範囲内の最左端位置で定数1との一致が
起きたとき,それ以後一致が続く間の定数1の出現回数を数えて,それを一意名2のデータ項目に
加える。
362
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
c) CHARACTERS指定では,一意名1のデータ項目の指定された範囲内の文字数を,一般規則7)e) に
よって数えて,それを一意名2のデータ項目に加える。
12) 一意名1,一意名3,一意名4のいずれかの占める記憶域が一意名2と同じである場合,それらが同じ
データ記述項によって定義されていても,この文の実行の結果は規定されない[14.5.9(作用対象の重
なり)参照]。
書き方2,書き方3
13) 定数3又は一意名5のデータ項目は,定数1又は一意名3のデータ項目と大きさが同じでなければな
らない。大きさが同じではない場合,EC-RANGE-INSPECT-SIZE例外状態になり,INSPECT文の実行
の結果は規定されない。定数3として表意定数を用いる場合,表意定数の大きさは,定数1又は一意
名3のデータ項目の大きさに等しい。
14) CHARACTERS指定を使用する場合,一意名5のデータ項目は,長さが1文字でなければならない。
さもなければ,EC-RANGE-INSPECT-SIZE例外状態になり,この文の実行の結果は規定されない。
書き方2
15) ALL指定,FIRST指定及びLEADING指定は,もう一つ別のALL指定,FIRST指定又はLEADING指
定が現れるまで,後続する作用対象に対して次々と適用される。
16) 置換の規則は,次による。
a) CHARACTERS指定では,一意名1のデータ項目の指定された範囲内の全ての文字を,一般規則7) e)
によって,それぞれ定数3で置換する。
b) ALL指定では,一意名1のデータ項目の指定された範囲内で定数1に一致した文字列を,それぞれ
定数3で置換する。
c) LEADING指定では,一意名1のデータ項目の指定された範囲内の最左端位置で定数1との一致が
起きたとき,それ以後一致が続く間の文字列を,それぞれ定数3で置換する。
d) FIRST指定では,一意名1のデータ項目の指定された範囲内で定数1と最初に一致する文字列を,
定数3で置換する。この規則は,定数1の値に関係なく,各々のFIRST指定に順に適用する。
17) 一意名3,一意名4,一意名5のいずれかの占める記憶域が一意名1と同じである場合,それらが同じ
データ記述項によって定義されていても,この文の実行の結果は規定されない[14.5.9(作用対象の重
なり)参照]。
書き方3
18) 書き方3のINSPECT文は,同じ一意名1を指定したINSPECT文を二つ連続して記述したものと解釈
されて実行される。つまり,この書き方3の文に指定したのと,同じTALLYING指定をもつ書き方1
の文と,同じREPLACING指定をもつ書き方2の文とが記述されたとみなされる。一致と計数の一般
規則が,この書き方1の文に適用され,一致と置換の一般規則が,この書き方2の文に適用される。
書き方2の文のあらゆる一意名の項目識別は,書き方1の文を実行する前に一度だけ行われる。
書き方4
19) 書き方4のINSPECT文は,一連のALL指定をもち,各々のALL指定が定数4の1文字に対応する,
同じ一意名1を指定した書き方2のINSPECT文を記述したものと解釈されて実行される。つまり,
これらのALL指定の各々では,定数4の単一の文字が定数1とみなされ,定数5の対応する単一の文
字が定数3とみなされる。定数4の文字と定数5の文字との対応は,データ項目内の順序位置による。
20) 一意名4,一意名6,一意名7のいずれかの占める記憶域が一意名1と同じである場合,それらが同じ
データ記述項によって定義されていても,この文の実行の結果は規定されない[14.5.9(作用対象の重
363
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
なり)参照]。
21) 定数5又は一意名7のデータ項目は,定数4又は一意名6のデータ項目と大きさが同じでなければな
らない。大きさが同じでない場合,EC-RANGE-INSPECT-SIZE例外状態になり,INSPECT文の実行の
結果は規定されない。定数5として表意定数を用いる場合,表意定数の大きさは,定数4又は一意名
6のデータ項目の大きさに等しい。
22) 同じ文字が,一意名6のデータ項目又は定数4の中に二度以上現れる場合,最初に出現する文字を置
換に用いる。
14.8.22 INVOKE文
INVOKE(呼出し)文は,メソッドの呼出しを引き起こす。
14.8.22.1 一般形式
INVOKE
クラス名1
一意名1
一意名2
定数1
USING
[BY REFERENCE]
一意名3
OMITTED
[BY CONTENT]
算術式1
ブール式1
一意名5
定数2
[BY VALUE]
算術式1
一意名5
定数2
…
[RETURNING 一意名4]
14.8.22.2 構文規則
1) 一意名1は,オブジェクト参照でなければならない。
2) 定数1は,字類が英数字又は各国文字でなければならない。
3) クラス名1が指定された場合,定数1を指定しなければならない。定数1の値は,クラス名1のファ
クトリインタフェースに定義されたメソッドの名前でなければならない。
4) 一意名1が指定されて,それが非限定オブジェクト参照を指すものでない場合,定数1を指定しなけ
ればならない。定数1の値は,次の条件に従ったメソッドの名前でなければならない。
a) 一意名1がオブジェクト参照を指し,その記述にクラス名とFACTORY指定があるとき,定数1は,
そのクラス名のファクトリインタフェースに含まれているメソッドの名前でなければならない。
b) 一意名1がオブジェクト参照を指し,その記述にクラス名があってFACTORY指定がないとき,定
数1は,そのクラス名のインスタンスインタフェースに含まれているメソッドの名前でなければな
らない。
c) 一意名1がオブジェクト参照を指し,その記述にACTIVE-CLASS指定とFACTORY指定とがある
とき,定数1は,そのINVOKE文が含まれているクラスのファクトリインタフェースに含まれてい
るメソッドの名前でなければならない。
d) 一意名1がオブジェクト参照を指し,その記述にACTIVE-CLASS指定があってFACTORY指定が
ないとき,定数1は,そのINVOKE文が含まれているクラスのインスタンスインタフェースに含ま
れているメソッドの名前でなければならない。
364
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
e) 一意名1がオブジェクト参照を指し,その記述にインタフェース名があるとき,定数1は,そのイ
ンタフェース名の指すインタフェースに含まれているメソッドの名前でなければならない。
f)
一意名1が既定義オブジェクト参照SELFを指し,そのINVOKE文を内包するメソッドがファクト
リメソッドであるとき,定数1は,そのINVOKE文が含まれているクラスのファクトリインタフェ
ースに含まれるメソッドの名前でなければならない。
g) 一意名1が既定義オブジェクト参照SELFを指し,そのINVOKE文を内包するメソッドがインスタ
ンスメソッドであるとき,定数1は,そのINVOKE文が含まれているクラスのインスタンスインタ
フェースに含まれるメソッドの名前でなければならない。
h) 一意名1が既定義オブジェクト参照SUPERを指し,そのINVOKE文を内包するメソッドがファク
トリメソッドであるとき,定数1は,そのINVOKE文が含まれているクラスによって継承されたク
ラスのファクトリインタフェースに含まれるメソッドの名前でなければならない。
i)
一意名1が既定義オブジェクト参照SUPERを指し,そのINVOKE文を内包するメソッドがインス
タンスメソッドであるとき,定数1は,そのINVOKE文が含まれているクラスによって継承された
クラスのインスタンスインタフェースに含まれるメソッドの名前でなければならない。
5) クラス名1を指定した場合,又は一意名1のデータ項目が非限定オブジェクト参照でない場合,次を
適用する。
a) ある引数に対しBY CONTENT指定又はBY REFERENCE指定があるとき,手続き部見出し中の対
応する仮パラメタにはBY REFERENCEを明示的又は暗黙に指定しなければならない。
b) ある引数に対しBY VALUE指定があるとき,手続き部見出し中の対応する仮パラメタにもBY
VALUEを指定しなければならない。
c) 適合規則が,14.7(パラメタ及び返却項目の適合)の規定どおりに適用される。
6) 一意名1が非限定オブジェクト参照を指す場合は,BY CONTENT指定もBY VALUE指定もあっては
ならない。明示的に指定しなくてもBY REFERENCEが暗黙に想定される。
7) 一意名2を指定してもよいのは,一意名1が非限定オブジェクト参照の場合だけとする。
8) 一意名2は,英数字又は各国文字のデータ項目でなければならない。
9) 一意名3は,アドレス一意名であるか,ファイル節,作業場所節,局所記憶節,連絡節又は通信節中
で定義されたデータ項目であるかの,いずれかでなければならない。
10) 一意名3が,ファクトリオブジェクト又はインスタンスオブジェクトの,ファイル節又は作業場所節
中で定義されたデータ項目であってはならない。
11) 一意名4は,ファイル節,作業場所節,局所記憶節,連絡節又は通信節中で定義されたデータ項目で
なければならない。
12) 一意名3又は一意名4がビットデータ項目であるとき,その記述は次のとおりでなければならない。
a) その一意名の添字付け及び部分参照は,固定小数点数字定数又は算術式だけからなる。その算術式
は,全ての作用対象が固定小数点数字定数であって,べき乗演算子の指定はない。
b) バイト境界にけたよせされている。
13) 一意名3,一意名4又は一意名5が集団項目であるとき,それに従属するACTIVE-CLASS指定付きの
オブジェクト参照項目があってはならない。
14) 引数に対してBY指定がなく,次の条件がいずれも成立する場合は,その引数にBY REFERENCEを
書いたものとみなす。
a) その引数は参照渡しの引数として妥当である。
365
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
b) それに対応する仮パラメタにはBY VALUEの指定がない。
15) 一意名5又は対応する仮パラメタにBY VALUE指定がある場合,一意名5は字類が数字,オブジェク
ト又はポインタでなければならない。
16) 定数2又は対応する仮パラメタにBY VALUE指定がある場合,定数2は数字定数でなければならない。
17) 引数にOMITTED指定があるときは,手続き部見出し中の対応する仮パラメタにOPTIONAL指定がな
ければならない。
18) 一意名3がアドレス一意名である場合,一意名3は送出し側作用対象とする。
19) 一意名3がアドレス一意名でない場合,一意名3は受取り側作用対象とする。
20) 一意名5と,算術式1又はブール式1の中のあらゆる一意名は,送出し側作用対象とする。
21) 一意名4は,受取り側作用対象とする。
14.8.22.3 一般規則
1) INVOKE文を実行させるプログラム,関数,又はメソッドのインスタンスを,活性化する側の実行時
要素とする。
2) 一意名1は,インスタンスオブジェクトを指す。クラス名1を指定した場合,それはそのクラス名で
参照されるクラスのファクトリオブジェクトを指す。定数1又は一意名2のデータ項目の内容は,そ
のインスタンスオブジェクトに作用するメソッドを指す。
a) 呼び出されるメソッドがCOBOLのメソッドである場合,定数1又は一意名2のデータ項目の内容
が,呼出し対象のメソッドの名前になる[8.3.1.1.1(利用者定義語)参照]。
b) 呼び出されるメソッドがCOBOLのメソッドでない場合,INVOKE文の動作は実装者定義とする。
3) INVOKE文のUSING指定中の引数の並びと,呼び出されるメソッドの手続き部見出しのUSING指定
中の仮パラメタの並びとから,引数と仮パラメタとの間の対応が決まる。この対応は,位置上の対応
であって,名前の等価性によるものではない。
注記 引数の最初のものは仮パラメタの最初のものに対応し,2番目は2番目に対応し,…,n番目
はn番目に対応する。
活性化される実行時要素中のUSING指定の効果は,14.1.3(手続き部の構造の一般規則)による。
4) 単一の一意名又は定数だけからなる引数は,算術式又はブール式ではなく,一意名又は定数であると
みなされる。
5) 一意名1がナル値である場合,EC-OO-NULL例外状態になってINVOKE文の実行は終了する。
6) クラス名1を指定した場合,又は一意名1のデータ項目が非限定オブジェクト参照でない場合,次を
適用する。引数にBY CONTENT,BY REFERENCE又はBY VALUEのいずれも指定していない場合,
その引数の引渡し方法は次のとおりに決まる。
a) 対応する仮パラメタに対してBY REFERENCEが明示的又は暗黙に指定されている場合,次による。
1. 引数が構文規則9) 及び10) の要求事項に整合するとき,BY REFERENCEが想定される。
2. 引数が構文規則9) 及び10) の要求事項に整合しないとき,BY CONTENTが想定される。
b) 対応する仮パラメタに対してBY VALUEが明示的又は暗黙に指定されている場合,BY VALUEが想
定される。
7) INVOKE文の実行は,次のとおりに進む。
a) 算術式1,ブール式1,一意名1,一意名2,一意名3及び一意名5の評価と,一意名4に対する項
目識別とは,INVOKE文の実行開始の時点で行われる。例外状態である場合,メソッドは呼び出さ
れず,細則f) に従って実行が進む。例外状態でない場合,一意名3,一意名5,算術式1,ブール
366
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
式1又は定数2の値が,呼び出されるメソッドで使用可能になるのは,そのメソッドに制御が移っ
た時点である。
b) 実行時システムは呼出し対象のメソッドの所在を特定しようと試みる。このとき,8.4.5(名前の有
効範囲),8.4.5.4(メソッド名の有効範囲),9.3.5(メソッド呼出し)及び12.2.7(リポジトリ段落)
の規則を適用する。メソッドの所在が特定されないとき又はメソッドの実行に必要な資源が使用可
能でないとき,EC-OO-METHOD例外状態になり,メソッドは活性化されず,細則f) に従って実行
が続く。
c) 一意名1が非限定オブジェクト参照であって,呼出し対象メソッドがCOBOLメソッドである場合,
呼び出されるメソッドの仮パラメタ及び返却項目のいずれも,記述にANY LENGTH句があっては
ならず,適合規則が適用される[14.7(パラメタ及び返却項目の適合)参照]。これらの規則の違反
が検出された場合,呼び出されるメソッドと活性化する側の実行時要素の両方で検査が有効であれ
ばEC-OO-UNIVERSAL例外状態になり,細則f) に従って実行が続く。
d) INVOKE文で指定したメソッドが実行可能になり,呼び出されるメソッドへ制御が移る。呼び出さ
れるメソッドへの制御の移行は,そのメソッドに対して指定された入口規約に整合する方法で行わ
れる。呼び出されるメソッドがCOBOLメソッドであれば,その実行は,14.1.3(手続き部の構造の
一般規則)による。さもなければ,その実行は実装者定義とする。
e) 呼び出されたメソッドから制御が戻った後は,呼び出されたメソッドから例外状態が伝ぱ(播)さ
れていれば,細則f) に従って実行が続く。さもなければ,INVOKE文の終わりに制御が移る。
f)
例外状態が発生したとき,その例外状態に関連する宣言手続きがあれば,それが実行される。その
後,例外状態と宣言手続きに対する規定に従って実行が進む。
8) RETURNING指定を書いた場合,活性化されたメソッドの結果は,一意名4に設定される。
9) OMITTED指定を書いた場合又は末尾の引数を省略した場合,呼び出される側のメソッド中でそのパ
ラメタに対する引数省略条件が真になる[8.8.4.1.7(引数省略条件)参照]。
10) 引数省略条件が真になるパラメタを,呼び出される側のメソッド中で参照した場合,引数としての参
照又は引数省略条件中での参照を除いて,EC-PROGRAM-ARG-OMITTED例外状態が成立する。
14.8.23 MERGE文
MERGE(併合)文は,指定したキーの組に従って同じ順序にそろえられた二つ以上のファイルを併合す
る。また,その処理の間は,併合する順にレコードを出力手続き又は出力ファイルで使用可能にする。
14.8.23.1 一般形式
MERGE ファイル名1
ON
ASCENDING
DESCENDING KEY {データ名1} … …
COLLATING SEQUENCE
IS 符号系名1 [符号系名2]
FOR ALPHANUMERIC IS 符号系名1
FOR NATIONAL IS 符号系名2
USING ファイル名2 {ファイル名3} …
OUTPUT PROCEDURE IS 手続き名1
THROUGH
THRU
手続き名2
GIVING {ファイル名4} …
14.8.23.2 構文規則
1) MERGE文は,宣言部分を除く手続き部の中のどこに現れてもよい。
367
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
2) ファイル名1は,データ部の整列併合用ファイル記述項で記述しておかなければならない。
3) ファイル名1のファイル記述項が可変長レコードを記述している場合,ファイル名2又はファイル名
3のファイル記述項には,ファイル名1に対して記述された最小レコードよりも小さいレコード又は
最大レコードよりも大きいレコードを記述してはならない。ファイル名1のファイル記述項に固定長
レコードを記述している場合,ファイル名2又はファイル名3のファイル記述項には,ファイル名1
に対して記述されたレコードよりも大きいレコードを記述してはならない。
4) データ名1は,キーデータ名である。キーデータ名は,次の規則に従う。
a) キーデータ名で識別されるデータ項目は,ファイル名1に関連するレコード中で記述しなければな
らない。
b) キーデータ項目は,修飾してもよい。
c) キーデータ項目は,字類がブール,オブジェクト又はポインタであってはならない。
d) キーデータ名で識別されるデータ項目は,可変長データ項目であってはならない。
e) ファイル名1に二つ以上のレコード記述がある場合,キーデータ名で識別されるデータ項目は,唯
一のレコード記述中だけで記述しなければならない。あるレコード記述項中の,キーデータ名で参
照されるのと同じバイト位置が,そのファイルの全てのレコードのキーとみなされる。
f)
キーデータ名で識別されるデータ項目は,いずれも,OCCURS句のある記述項又はそれに従属する
記述項によって記述してはならない。
g) ファイル名1のファイルが可変長レコードを含む場合,キーデータ名で識別される全てのデータ項
目は,レコードの先頭xバイト以内に含まれていなければならない。ここでxは,ファイル名1の
ファイルに対して指定された最小レコードの大きさである。
5) 符号系名1は,英数字照合順序を定義する符号系でなければならない。
6) 符号系名2は,各国文字照合順序を定義する符号系でなければならない。
7) 一つのMERGE文の中に,同一のファイル名を繰り返し指定してはならない。
8) 語THRUと語THROUGHは,同義とする。
9) ファイル名2,ファイル名3,及びファイル名4は,報告書ファイル用でも整列併合用SD項でもない
ファイル記述項中で記述しなければならない。
10) ファイル名4が索引ファイルを参照する場合,データ名1の最初の指定はASCENDING指定に関連し
ていなければならず,データ名1のデータ項目は,そのファイルの主レコードキーに関連するデータ
項目と同じバイト位置をレコード中で占めていなければならない。
11) 同じMERGE文に指定した一対のファイル名を,同じSAME AREA句,SAME SORT AREA句又は
SAME SORT-MERGE AREA句に指定してはならない。同じSAME RECORD AREA句に指定してもよ
いMERGE文中のファイル名は,GIVING指定に関連するものだけとする。
12) GIVING指定が書かれており,ファイル名4のファイル記述項が可変長レコードを記述している場合,
ファイル名1のファイル記述項には,ファイル名4に対して記述された最小レコードより小さいレコ
ード又は最大レコードより大きいレコードを記述してはならない。ファイル名4のファイル記述項が
固定長レコードを記述している場合,ファイル名1のファイル記述項は,ファイル名4に対して記述
されたレコードより大きいレコードを記述してはならない。
13) ファイル名2又はファイル名3が相対ファイル又は索引ファイルを参照しているとき,その呼出し法
は順呼出し又は動的呼出しでなければならない。
14.8.23.3 一般規則
368
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) MERGE文は,ファイル名2及びファイル名3のファイル中に含まれる全てのレコードを併合する。
2) ファイル名1のファイルが固定長レコードだけを含んでいて,ファイル名2又はファイル名3のファ
イル中のレコードが,その固定長より少ない文字位置を含んでいる場合,そのレコードがファイル名
1のファイルへ引き渡されるとき,レコードの最終文字のすぐ右の文字位置からその固定長に達する
まで,次のとおり空白詰めが行われる。
a) ファイル名2又はファイル名3のファイルに関連するレコード記述項が唯一で,かつ,そのレコー
ド記述が次のいずれかのとき,レコードの空白詰めには各国文字の空白を用いる。
− 各国文字データ項目である。
− 単一の基本項目で用途はNATIONALであり,項類は数字,数字編集又はブールである。
b) ファイル名2又はファイル名3のファイルに関連するレコード記述項が複数で,かつ,その記述に
SELECT WHEN句が含まれているとき,SELECT WHEN句の規則を適用してレコード記述を選択す
る。そのレコード記述が次のいずれかのとき,レコードの空白詰めには各国文字の空白を用いる。
− 各国文字データ項目である。
− 単一の基本項目で用途はNATIONALであり,項類は数字,数字編集又はブールである。
c) さもなければ,レコードの空白詰めには英数字の空白を用いる。
3) 語KEYの後に続くデータ名は,KEY指定中での区切り方とは関係なく,強さの順にMERGE文の左
から右へと並べられる。最左端のデータ名は主キーであり,次のデータ名はその次に強いキーであり,
以下同様とする。
a) ASCENDING指定がある場合,併合の順序は,比較条件における作用対象の比較の規則に従って,
キーデータ名が指すデータ項目の内容が低い方から高い方へ向かう順序とする。
b) DESCENDING指定がある場合,併合の順序は,比較条件における作用対象の比較の規則に従って,
キーデータ名が指すデータ項目の内容が高い方から低い方へ向かう順序とする。
語ASCENDING及び語DESCENDINGは,もう一つ別のASCENDING又はDESCENDINGが現れる
まで,繰り返し現れる全てのデータ名1に対して次々と適用される。
4) 比較条件中の作用対象の比較に対する規則に従って,あるレコードの全てのキーデータ項目の内容が,
他のレコードの対応するキーデータ項目の内容と等しいとき,これらのレコードを引き取る順序は,
次による。
a) MERGE文に,関連する入力ファイルを指定した順序に従って引き取る。
b) ある入力ファイルに関連しているレコードを全て引き取ってから,次の入力ファイルのレコードを
引き取る。
5) 字類が英字及び英数字であるキーデータ項目の比較に用いる英数字照合順序,並びに,字類が各国文
字であるキーデータ項目の比較に用いる各国文字照合順序は,MERGE文の実行開始時点で,次の優
先順位に従って,それぞれ別々に決まる。
a) 第一に,このMERGE文にCOLLATING SEQUENCE指定があるとき,それによって確立する文字
照合順序。符号系名1に関連する文字照合順序は,字類が英字及び英数字であるキーデータ項目に
適用する。符号系名2に関連する文字照合順序は,字類が各国文字であるキーデータ項目に適用す
る。
b) 第二に,プログラム文字照合順序で決まる文字照合順序。
6) ファイル名2及びファイル名3のファイル上でレコード群が,ASCENDING指定,又はDESCENDING
KEY指定で記述される順序及びMERGE文に関連する文字照合順序に従って並んではいない場合,
369
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
EC-SORT-MERGE-SEQUENCE例外状態になって,MERGE文に関連するファイルは全て閉じられ,併
合操作の結果は規定されない。
7) ファイル名2及びファイル名3のファイルのレコードは全て,ファイル名1のファイルに移される。
MERGE文の実行開始時点で,ファイル名2及びファイル名3のファイルが開かれた状態であっては
ならない。さもなければ,EC-SORT-MERGE-FILE-OPEN例外状態になり,MERGE文の実行は終了す
る。ファイル名2及びファイル名3の各ファイルに対しては,MERGE文の実行によって次の動作が
行われる。
a) ファイルの処理の開始。このファイルに対するファイル管理記述項にSHARING ALL句があるとき,
開始動作は,INPUT指定とSHARING WITH READ ONLY指定があるOPEN文を実行したのと同様
に行われる。さもなければ,開始動作は,INPUT指定がありSHARING指定がないOPEN文を実行
したのと同様に行われる。出力手続きがある場合,この動作は出力手続きに制御が移る前に行われ
る。この暗黙のOPEN文の実行結果として非致命的例外状態であるとき,MERGE文は終了する。
ただし,該当するUSE手続きがあって通常完了する場合はこの限りではなく,その後MERGE文は
例外状態でなかった場合と同様に処理が続く。
b) 論理レコードの読込みと併合操作への引渡し。各々のレコードを読み込む動作は,あたかもNEXT
指定,IGNORING LOCK指定及びAT END指定があるREAD文を実行したのと同様に行われる。フ
ァイル名2又はファイル名3に対するファイル終了条件が成立した場合,そのファイルに対する処
理は終了する。ファイル名1のファイルが可変長レコードをもつと記述してある場合,ファイル名
1に書き込まれるレコードの大きさは,ファイル名2又はファイル名3からそのレコードを読み込
んだときの大きさであり,ファイル名1の整列併合用ファイル記述項中のRECORD IS VARYING句
又はOCCURS句のDEPENDING ON指定のデータ項目の内容には関係しない。ファイル名2又はフ
ァイル名3のファイルから読み込まれたレコードの大きさが,ファイル名1のファイル記述項で許
される最大のレコードより大きい場合は,EC-SORT-MERGE-RELEASE例外状態になり,MERGE
文の実行は終了する。ファイル名1が可変長レコードをもつと指定されていて,ファイル名2又は
ファイル名3のファイルから読み込まれたレコードの大きさが,ファイル名1のファイル記述項で
許される最小のレコードより小さい場合は,EC-SORT-MERGE-RELEASE例外状態になり,MERGE
文の実行は終了する。
c) ファイルの処理の終了。この動作は選択可能指定のないCLOSE文を実行したのと同様に行われる。
出力手続きを指定すると,出力手続き中の最後の文を制御が通過するまで,この動作は行われない。
相対ファイルでは,MERGE文の実行後,相対キーデータ項目の内容は規定されない。
これらの暗黙の機能を実行する途中で,該当するUSE手続きが実行されることがある。ファイル名
2又はファイル名3をCLOSE文で閉じようとしたため非致命的な例外状態になった場合は,次による。
1. 該当するUSE手続きがあって通常完了するとき,MERGE文は続行する。
2. 該当するUSE手続きがないとき,例外状態を無視してMERGE文は実行を続く。
MERGE文が完了した後,ファイル名2及びファイル名3のファイル記述項にあるRECORD IS
VARYING句のDEPENDING ON指定のデータ項目の値は,規定されない。
8) 出力手続きは,ファイル名1のファイルから,RETURN文によって併合した順に一つずつ使用可能と
なるレコードの選択,修正,複写に必要な手続きをどのように構成してもよい。その範囲には,出力
手続きの範囲内の文の実行の結果として実行される宣言手続き中の全ての文だけではなく,出力手続
きの範囲内の制御が移った結果として実行される全ての文が含まれる。出力手続きの範囲内で
370
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
MERGE文,RELEASE文又はファイル形式のSORT文を実行してはならない[14.5.3(制御の明示移
行及び暗黙移行)参照]。この規則に違反した場合,EC-SORT-MERGE-ACTIVE例外状態になって,
併合操作の結果は規定されない。
9) 出力手続きがある場合,MERGE文の実行中にその出力手続きに制御が移る。コンパイラは出力手続
きの最後の文の後に復帰機構を挿入する。この復帰機構に制御が渡ると,この機構は併合の終了を手
配して,MERGE文の後の次に実行可能な文に制御を渡す。制御が移ったときは,併合処理で次に引
き取られるレコードが確立されている。出力手続き中のRETURN文によって次のレコードが引き取ら
れる。
注記 ここでいう復帰機構(return mechanism)とは,出力手続きの末尾から制御を移すものであっ
て,RETURN文に関連するものではない。
10) 出力手続きの実行中に,ファイル名2又はファイル名3のファイルを操作するか又はそのファイル名
に関連するレコード領域を参照するような文を,実行してはならない。
11) MERGE文の実行中に暗黙に呼び出されるUSE手続きの実行中で,ファイル名2,ファイル名3又は
ファイル名4のファイルを操作する文又はそのファイル名に関連するレコード領域を参照するような
文を,実行してはならない。
12) GIVING指定がある場合,MERGE文に対する暗黙の出力手続きがあるのと同様に,全ての併合済み
レコードがファイル名4のファイルのそれぞれに書き出される。MERGE文の実行開始時点で,ファ
イル名4のファイルは開いた状態であってはならない。さもなければ,EC-SORT-MERGE-FILE-OPEN
例外状態になって,MERGE文の実行は終了する。ファイル名4の各ファイルに対して,MERGE文の
実行によって次の動作が行われる。
a) ファイルの処理の開始。この動作は,OUTPUT指定とSHARING WITH NO OTHER指定があるOPEN
文を実行したのと同様に行われる。この暗黙のOPEN文の結果が致命的な例外状態であり,該当
USE手続きがあって通常完了するとき,例外状態を起こしたファイル結合子は処理されない。この
暗黙のOPEN文の結果が非致命的な例外状態であり,該当USE手続きがあって通常完了するとき,
例外状態を起こしたファイル結合子は,例外状態でなかった場合と同様に処理される。
b) 併合済みの論理レコードの引取りとファイルへの書出し。各レコードは,選択可能指定のない
WRITE文を実行するのと同様に書き出される。ファイル名4のファイルが可変長レコードをもつと
記述されている場合,ファイル名4に書き出されるレコードの大きさは,ファイル名1からそのレ
コードが読み込まれたときの大きさであり,ファイル名3のファイル記述項に指定したRECORD IS
VARYING句又はOCCURS句の,DEPENDING ON指定のデータ項目の内容には関係しない。この
暗黙のWRITE文の結果が例外状態であり,該当USE手続きがあって通常完了するときMERGE文
は実行を続けるが,さもなければMERGE文は終了する。
相対ファイルでは,相対キーデータ項目に,最初のレコード引取りで値1が設定され,2番目の
レコード引取りで値2が設定され,以下,同様となる。MERGE文の実行終了後,相対キーデータ
項目の内容は,そのファイルに引き取られた最後のレコードを示す。
c) ファイル処理の終了。この動作は選択可能指定のないCLOSE文を実行したのと同様に行われる。
これらの暗黙の機能の動作中に,関連するUSE手続きが実行されることがある。しかし,このよう
なUSE手続きの実行が,ファイル名4のファイルを操作する文又はファイル名4に関連するレコード
領域を参照するような文を実行してはならない。外部で定義したファイルの区域を越えて書き出そう
とする最初の試みで,ファイル名4のファイル結合子に関連するUSE手続きがもしあれば,それが実
371
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
行される。そのUSE手続きから制御が戻った場合,又はそのようなUSE手続きがない場合,ファイ
ルの処理は上記の一般規則12) c) に従って終了する。
GIVING指定のあるMERGE文が完了した後,ファイル名1の整列併合用ファイル記述項にある
RECORD IS VARYING句のDEPENDING ON指定のデータ項目の値は,規定されない。
13) ファイル名4のファイルが固定長レコードだけを含んでいて,ファイル名1のファイル中のレコード
が,その固定長より少ない文字位置を含んでいる場合,そのレコードがファイル名4のファイルへと
引き取られるとき,レコードの最終文字のすぐ右の文字位置からその固定長に達するまで,次のとお
り空白詰めが行われる。
a) ファイル名4のファイルに関連するレコード記述項が唯一で,そのレコード記述が次のいずれかの
とき,レコードの空白詰めには各国文字の空白を用いる。
− 各国文字データ項目である。
− 単一の基本項目で用途はNATIONALであり,項類は数字,数字編集又はブールである。
b) ファイル名4のファイルに関連するレコード記述項が複数で,かつ,その記述にSELECT WHEN句
が含まれているとき,SELECT WHEN句の規則を適用してレコード記述を選択する。そのレコード
記述が次のいずれかのとき,レコードの空白詰めには各国文字の空白を用いる。
− 各国文字データ項目である。
− 単一の基本項目で用途はNATIONALであり,項類は数字,数字編集又はブールである。
c) さもなければ,レコードの空白詰めには英数字の空白を用いる。
14.8.24 MOVE文
MOVE(転記)文は,編集の規則に従って,データを幾つかのデータ領域に移す。
14.8.24.1 一般形式
書き方1(単純)
MOVE
一意名1
定数1
TO { 一意名2 } …
書き方2(corresponding)
MOVE
CORRESPONDING
CORR
一意名3 TO 一意名4
14.8.24.2 構文規則
書き方1
1) 一意名1又は一意名2は,字類が指標,オブジェクト又はポインタであってはならない。
2) 一意名2が強い型付けの集団項目を指しているとき,一意名1を指定しなければならず,その記述は
同じ型の集団項目でなければならない。
3) 定数1又は一意名1のデータ項目は,送出し側作用対象とする。
4) 一意名2のデータ項目は,受取り側作用対象とする。
5) 表意定数SPACEを,数字項目又は数字編集項目に転記してはならない。
6) 表意定数ZEROを,英字データ項目に転記してはならない。
7) 関連する文字がブール文字でない表意定数を,ブールデータ項目に転記してはならない。
8) 一意名1がデータ項目の記述であって,その用途が,2進文字(binary-char),2進短精度(binary-short),
2進長精度(binary-long)又は2進倍精度(binary-double)のいずれかであるとき,一意名2は,数字
項目又は数字編集項目でなければならない。さもなければ,各種のMOVEの妥当性は,表17(MOVE
372
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
文の種類の妥当性)による。
表17−MOVE文の種類の妥当性
送出し側作用
対象の項類
受取り側作用対象の項類
英字
英数字,
英数字編集
ブール
各国文字,
各国文字編集
数字,
数字編集
型名
英字
○
○
×
○
×
×
英数字
○
○
○
○
○
×
英数字編集
○
○
×
○
×
×
ブール
×
○
○
○
×
×
各国文字
×
×
○
○
○
×
各国文字編集
×
×
×
○
×
×
数字
整数
×
○
×
○
×
×
非整数
×
×
×
×
×
×
数字編集
×
○
×
○
○
×
型名
○
○
○
○
○
○
○は,転記できることを示す。
×は,転記できないことを示す。
書き方2
9) 語CORRと語CORRESPONDINGは,等価とする。
10) 一意名3及び一意名4は,集団データ項目を指定しなければならず,部分参照してはならない。
11) 一意名3内にあって対応の付くデータ項目は,送出し側作用対象とする。一意名4内にあって対応の
付くデータ項目は,受取り側作用対象とする。データ項目どうしが対応するか否かを決める規則は,
14.6.5(CORRESPONDING指定)による。
14.8.24.3 一般規則
書き方1
1) 一意名1のデータ項目の内容又は定数1は,一意名2のデータ項目へとそれぞれ,指定した順に転記
される。
一意名2の項目識別は,それぞれのデータ項目へデータが転記される直前に行われる。一意名2が
長さゼロの項目であれば,MOVE文は一意名2を変更しない。
一意名1に部分参照又は添字付けがある場合,又は一意名1が関数一意名である場合に,その部分
参照子,添字,又は関数一意名は一度だけ評価する。その時点は,最初の受取り側作用対象にデータ
を転記する直前とする。
一意名1のデータ項目の長さは一度だけ評価する。その時点は,最初の受取り側作用対象にデータ
を転記する直前とする。一意名1が長さゼロの項目である場合は,一意名1に表意定数のSPACEを
指定した場合と同様とする。
一意名1又は一意名2の長さの評価は,OCCURS句のDEPENDING ON指定の影響を受けることが
ある。
例 MOVE a (b) TO b, c (b)
この結果は次と等価である。
MOVE a (b) TO temp
373
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
MOVE temp TO b
MOVE temp TO c (b)
ここで,tempは,実装者が用意する中間結果項目とする。
2) 送出し側作用対象が定数又は基本データ項目であり受取り側作用対象が基本項目である転記を,基本
項目転記(elementary move)という。MOVE文は,ビット集団項目及び各国文字集団項目を基本項目
として扱う。
基本項目転記以外の転記は,英数字項目間の基本項目転記と同様に扱うが,データの内部表現形式
の変換は行わない。このような転記では,OCCURS句の一般規則8) の規定,及び字類がオブジェク
ト又はポインタである従属項目に対して実装系が必要とする事項を除いて,送出し側領域及び受取り
側の領域に含まれる個々の基本項目及び集団項目を考慮せずに,受取り側に詰めて転記する。
3) 逆編集が行われるのは,送出し側作用対象が数字編集データ項目であり受取り側作用対象が数字又は
数字編集のデータ項目であるときだけとする。
4) 妥当な基本項目の転記の際に,必要に応じてデータの内部表現形式の変換,及び受取り側データ項目
に指定された編集又は暗黙の逆編集を行う。ただし,各国文字集団項目をMOVE文で参照する場合は
編集も逆編集も行わない。
注記 MOVE文は,ビット集団項目及び各国文字集団項目を基本項目として扱う。
必要に応じて英数字から各国文字表現への変換が,けたよせの前に,実装者定義の対応に従って行
われる。対応のつかない英数字が送出し側項目中にあるときは,受取り側項目中の対応する各国文字
として実装者定義の代替文字が用いられて,EC-DATA-CONVERSION例外状態になる。
次に示す規則を適用する。
a) 受取り側作用対象が英数字,英数字編集,各国文字,又は各国文字編集のデータ項目である場合,
けたよせ及び必要な空白詰めを行う[14.5.8(データ項目内でのデータのけたよせ)参照]。送出し
側作用対象の記述が符号付き数字であるとき,演算符号は転記しない。演算符号が独立の文字位置
を占めているとき,その文字は転記されず,送出し側作用対象の大きさは実際の大きさよりも一つ
小さいものとみなされる[13.16.50(SIGN句)参照]。送出し側作用対象の用途が受取り側作用対
象と異なる場合は,送出し側作用対象から受取り側作用対象の内部表現への変換を行う。送出し側
作用対象が数字でPICTURE記号"P"を含む場合,この記号で表されるけた位置は全て値ゼロをもつ
とみなされて,送出し側作用対象の大きさに計上される。
送出し側項目の字類がブールであるときは,そのブール値を転記する。
注記 実行時符号化文字集合がUCSのUTF-16形式である場合,COBOLシステムはサロゲート
ペアを2分割してしまう部分参照の検出を行わない。
b) 受取り側作用対象が数字項目又は数字編集項目である場合,小数点の位置合せと必要なゼロ詰めを
行う[14.5.8(データ項目内でのデータのけたよせ)参照。PICTURE句にLOCALE指定がある場合
は13.16.38.4(編集規則)参照]。送出し側作用対象が数字編集である場合,暗黙の逆編集を行って,
符号をも含めたその作用対象の編集しない数値を確定し,その編集しない数値を受取り側フィール
ドに転記する。数字編集の送出し側作用対象の内容に関する制約事項は,14.5.12.2(不適合データ)
による。送出し側作用対象が数字編集の項類ではなく,数字検査の字類条件で偽の結果を生じるよ
うな内容をもつ場合,EC-DATA-INCOMPATIBLE例外状態になりMOVE文の実行結果は規定されな
い。
1. 受取り側項目が符号付き数字項目のとき,送出し側作用対象の符号を受取り側の符号とする
374
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
[13.16.50(SIGN句)参照]。このとき,必要に応じて符号表現の変換を行う。送出し側作用対
象が符号なしのとき,受取り側項目には正符号をつける。
2. 受取り側項目が符号なし数字項目のとき,送出し側作用対象の絶対値を転記して,受取り側に演
算符号はつけない。
3. 送出し側作用対象が英数字又は各国文字であるとき,送出し側作用対象は次の性質をもつ符号な
し数字整数とみなして扱う。
a. 送出し側作用対象がデータ項目の場合,そのけた数は送出し側データ項目の文字位置の個数と
する。ただし,文字位置数が31より大であれば右端の31個の文字位置を用いる。
b. 送出し側作用対象が表意定数の場合,そのけた数は受取り側作用対象のけた数と同じとし,そ
の項目の中で表意定数を左から右へ反復したものを,表意定数の規則に従って生成する。受取
り側項目が整数でないとき,けた数には小数点の右側と左側の両方のけた数を含める。
c.
送出し側作用対象が英数字定数又は各国文字定数の場合,そのけた数はその定数に含まれる文
字数と同じとする。文字数が31を超えるときは送出し側作用対象の大きさを31として定数の
右端の31個の英数字だけを用いる。
c) 受取り側項目が英字である場合,けたよせ及び必要な空白詰めを行う[14.5.8(データ項目内でのデ
ータのけたよせ)参照]。
d) 受取り側項目がブールデータ項目である場合,送出し側項目のブール値を転記して,必要に応じて
データ表現の変換を行い,必要なけたよせ及びゼロ詰めを行う[14.5.8(データ項目内でのデータの
けたよせ)参照]。送出し側作用対象の項類がブールでないときは,実際の送出し側作用対象と同じ
用途及び同じ個数の文字位置をもつブールデータ項目とみなして扱う。送出し側作用対象がブール
検査の字類条件で偽の結果を生じるような内容をもつとき,EC-DATA-INCOMPATIBLE例外状態に
なってこのMOVE文の実行の結果は規定されない。
5) 英数字,ブール,各国文字及び数字の定数はそれぞれ,英数字,ブール,各国文字及び数字の項類に
属する。MOVE文中で用いるとき,表意定数の項類は受取り側作用対象の項類に依存する。これを,
表18(MOVE文で用いられる表意定数の項類)に示す。
注記 英数字表意定数の数字項目へのMOVEは,旧式機能であり,使用しないほうがよい。
表18−MOVE文で用いられる表意定数の項類
表意定数
受取り側作用対象の項類
表意定数の項類
ALL定数,ここで定数は
英数字
ブール
各国文字
−
−
−
英数字
ブール
各国文字
ALL記号文字,ここで記号文字は
英数字
各国文字
−
−
英数字
各国文字
HIGH-VALUE, HIGH-VALUES
LOW-VALUE, LOW-VALUES
QUOTE,
QUOTES
英字
英数字
英数字編集
各国文字
各国文字編集
数字
数字編集−用途DISPLAY
数字編集−用途NATIONAL
英数字
英数字
英数字
各国文字
各国文字
英数字
英数字
各国文字
375
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表18−MOVE文で用いられる表意定数の項類(続き)
表意定数
受取り側作用対象の項類
表意定数の項類
SPACE,SPACES
英字
英数字
英数字編集
各国文字
各国文字編集
英数字
英数字
英数字
各国文字
各国文字
ZERO,ZEROS,ZEROES
英数字
英数字編集
ブール
各国文字
各国文字編集
数字
数字編集
英数字
英数字
ブール
各国文字
各国文字
数字
数字
“−”は,表意定数の項類が受取り側作用対象の項類に依存しないことを示す。
書き方2
6) 一意名3内部の従属データ項目が選択されて,一意名4内部の選択された従属データ項目に転記され
る[14.6.5(CORRESPONDING指定)参照]。この結果は,利用者が対応しあう一意名を一対ずつ別々
のMOVE文に書いて参照したのと同様である。ただし,一意名3又は一意名4に添字付けがあるとき
に用いる添字の値は,元の文の実行開始時における添字の評価による。
注記 MOVE CORRESPONDINGの処理上は,ビット集団項目及び各国文字集団項目を,基本項目
でなく集団項目として処理する。
14.8.25 MULTIPLY文
MULTIPLY(乗算)文は,数字データ項目を掛け合わせて,その結果に等しいデータ項目の値を設定す
る。
14.8.25.1 一般形式
書き方1(by)
MULTIPLY
一意名1
定数1
BY {一意名2 [ROUNDED]} …
ON SIZE ERROR 無条件文1
NOT ON SIZE ERROR 無条件文2
[END-MULTIPLY]
書き方2(by-giving)
MULTIPLY
一意名1
定数1
BY
一意名2
定数2
GIVING {一意名3 [ROUNDED]} …
ON SIZE ERROR 無条件文1
NOT ON SIZE ERROR 無条件文2
[END-MULTIPLY]
14.8.25.2 構文規則
1) 一意名1及び一意名2は,数字データ項目でなければならない。
2) 一意名3は,数字データ項目又は数字編集データ項目でなければならない。
376
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
3) 定数1及び定数2は,数字定数でなければならない。
4) 固有算術が有効であるとき,作用対象の合成[14.6.6(算術文)参照]は,文中の作用対象の全てを用
いて決まる。
14.8.25.3 一般規則
1) 書き方1を使用し,固有算術が有効であるとき,開始時評価で乗数,つまり定数1又は一意名1のデ
ータ項目の値が決まる。被乗数は,一意名2のデータ項目の値とする。その乗数と被乗数とを乗じた
積が,一意名2のデータ項目の新しい値として格納される。
2) 書き方2を使用し,固有算術が有効であるとき,開始時評価で乗数,つまり定数1又は一意名1のデ
ータ項目の値が決まり,被乗数,つまり定数2又は一意名2のデータ項目の値が決まり,その乗数と
被乗数とを乗じた積が形成される。積は,一意名3の各データ項目の新しい値として格納される。
3) 書き方1又は書き方2を使用し,標準算術が有効であるとき,積は次の算術式の結果と等価とする。
(乗数 * 被乗数)
ここで,乗数と被乗数の値は,それぞれ一般規則1) 及び2) で定義するとおりである。
4) この文に関連するこれ以上の規則と説明は,14.5.12.2(不適合データ),14.6.3(ROUNDED指定),14.6.4
(SIZE ERROR指定及びけたあふれ条件),14.6.6(算術文)及び14.5.9(作用対象の重なり)による。
14.8.26 OPEN文
OPEN(開く)文は,ファイルの処理を始める。
14.8.26.1 一般形式
OPEN
INPUT
OUTPUT
I-O
EXTEND
[sharing指定][retry指定] {ファイル名1 [WITH NO REWIND]} … …
ここで,sharing指定は,次による。
SHARING WITH
ALL OTHER
NO OTHER
READ ONLY
retry指定は,14.6.8(RETRY指定)による。
14.8.26.2 構文規則
1) 報告書ファイル用のOPEN文に,INPUT指定又はI-O指定があってはならない。
2) EXTEND指定を書く場合,ファイル名1のファイル結合子の呼出し法は順呼出しでなければならず,
ファイル名1のファイル記述項にLINAGE句の指定があってはならない。
3) OPEN文で参照されるファイルは,必ずしも同じ編成又は同じ呼出し法でなくてもよい。
4) NO REWIND指定は,順ファイルに対してだけ指定してもよい。
5) NO REWIND指定は,INPUT指定又はOUTPUT指定があるときだけ指定してもよい。
6) OPEN文にSHARING指定がなくファイル名1のファイル管理記述項にSHARING ALL句がある場合,
又はOPEN文にSHARING ALL指定がある場合,ファイル名1のファイル管理記述項にLOCK MODE
句の指定がなければならない。
7) ファイル名1のファイル記述項にFORMAT句がある場合,I-O指定を書いてはならない。
14.8.26.3 一般規則
1) ファイル名1のファイル結合子は,開いた状態であってはならない。ファイル結合子が開いていれば,
377
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
OPEN文の実行は不成功となり,ファイル名1に関連する入出力状態に"41"が設定される。
2) OPEN文の実行が成功すると,ファイル名1のファイル結合子は,物理ファイルが使用可能である場
合は,その物理ファイルに関連付けられる。さらに,ファイル結合子のオープンモードはOPEN文に
指定したキーワードINPUT,OUTPUT,I-O又はEXTENDに対応して入力・出力・入出力両用・拡張
のいずれかに設定される。オープンモードによって,ファイル結合子を参照してもよい入出力操作の
種類が決まる[表21(呼出し法及びオープンモードによって実行が許される入出力文)参照]。
物理ファイルが使用可能であるとは,ファイルが物理的に存在し,操作環境に認識されている場合
をいう。表19(現在開かれていないファイルに対するOPENの可否)に,別のファイル結合子によっ
て現在開かれてはいない使用可能ファイル及び使用不可能ファイルをOPENしようとした結果を示す。
表20(現在開かれている共用ファイルに対するOPENの可否)には,別のファイル結合子によって現
在開かれているファイルをOPENしようとした結果を示す。ここには,SORT又はMERGE文によっ
て暗黙にOPENされるものも含まれる。
表19−現在開かれていないファイルに対するOPENの可否
オープンモード
ファイルが使用可能
ファイルが使用不可能
INPUT
正常に開く。
OPENは不成功となる。
INPUT
(不定ファイル) 正常に開く。
正常に開く。ただし,最初の読込み
で,ファイル終了条件又は無効キー
条件となる。
I-O
正常に開く。
OPENは不成功となる。
I-O
(不定ファイル) 正常に開く。
OPENで,ファイルが生成される。
OUTPUT
正常に開く。ただし,そのファイル
中にはレコードがない。
OPENで,ファイルが生成される。
EXTEND
正常に開く。
OPENは不成功となる。
EXTEND (不定ファイル) 正常に開く。
OPENで,ファイルが生成される。
表20−現在開かれている共用ファイルに対するOPENの可否
OPEN要求
最も厳しい既存の共用モードとオープンモード
排他的共用
読取り専用共用
他全てと共用
EXTEND
I-O
INPUT
OUTPUT
EXTEND
I-O
OUTPUT
INPUT
EXTEND
I-O
OUTPUT
INPUT
SHARINGWITH
NOOTHER
(排他的共用)
EXTEND
I-O
INPUT
OUTPUT
不成功。
不成功。
不成功。
不成功。
不成功。
SHARINGWITH
READONLY
(読取り専用共用)
EXTEND
I-O
不成功。
不成功。
不成功。
不成功。
正常に開く。
INPUT
不成功。
不成功。
正常に開く。 不成功。
正常に開く。
OUTPUT
不成功。
不成功。
不成功。
不成功。
不成功。
SHARINGWITH
ALLOTHER
(他全てと共用)
EXTEND
I-O
不成功。
不成功。
不成功。
正常に開く。 正常に開く。
INPUT
不成功。
正常に開く。 正常に開く。 正常に開く。 正常に開く。
OUTPUT
不成功。
不成功。
不成功。
不成功。
不成功。
378
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
3) OPEN文の実行が成功すると,関連するレコード領域が実行時要素で使用可能になる。そのファイル
名と関連するファイル結合子が外部ファイル結合子であれば,実行単位のファイル結合子と関連する
レコード領域は一つだけである。
4) ファイル結合子が開いた状態でないとき,関連ファイル名を参照している文を,明示的にも暗黙にも
実行してはならない。ただし,MERGE文でUSING又はGIVING指定をもつもの,OPEN文,及び
SORT文でUSING又はGIVING指定をもつものはこの限りでない。
5) 報告書ファイル結合子のOPEN文は,ファイル名1に関連するどの報告書名を参照しているINITIATE
文の実行よりも前に実行されなければならない。
6) ファイル結合子に対して,実行が許される入出力文を実行する前に,OPEN文の実行が成功していな
ければならない。表21(呼出し法及びオープンモードによって実行が許される入出力文)で,交差部
分の“○”は,その行に示した呼出し法を用いて指定した文を,その列の上に示したオープンモード
で用いてもよいことを示す。
表21−呼出し法及びオープンモードによって実行が許される入出力文
呼出し法
文
オープンモード
INPUT
OUTPUT
I-O
EXTEND
順呼出し
READ
○
○
WRITE
○
○
REWRITE
○
START
○
○
順呼出し(相対及び
索引ファイルだけ)
DELETE
○
乱呼出し
READ
○
○
WRITE
○
○
REWRITE
○
START
DELETE
○
動的呼出し
READ
○
○
WRITE
○
○
REWRITE
○
START
○
○
DELETE
○
7) OPEN文の実行が,最初のレコードを獲得したり解放したりすることはない。
8) OPEN文の実行中に,ファイル結合子を物理ファイルと突き合わせる。その物理ファイルが存在して
いた場合,ファイル管理段落及びファイル記述項に指定したファイル結合子の属性が物理ファイルの
ファイル固有属性と比較される。これらの属性が一致しなければ,ファイル属性不整合条件が発生し
て,OPEN文の実行は不成功となり,ファイル名1に関連する入出力状態に"39"が設定される。OPEN
文の実行中に検査されるファイル固有属性が何であるかは,実装者定義とする。ファイル固有属性の
検査は,ファイルの編成又は記憶媒体によって異なっていてもよい[9.1.6(ファイル固有属性)参照]。
9) NO REWIND指定は,物理ファイルの存在する記憶媒体に適用されない場合は,無視される。NO
REWIND指定が無視されたとき,OPEN文の実行は成功となり,ファイル名1に関連する入出力状態
に"07"が設定される。
379
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
10) 物理ファイルの記憶媒体が巻戻しを許している場合,次の規則を適用する。
a) EXTEND指定とNO REWIND指定のいずれもないとき,OPEN文を実行すると,物理ファイルがそ
の始めの位置に位置付けられる。
b) NO REWIND指定があるとき,OPEN文を実行しても,物理ファイルが再び位置付けされることは
ない。OPEN文の実行に先立って,あらかじめ物理ファイルをその始めの位置に位置付けておかな
ければならない。
11) 物理ファイルが存在せず,OPEN文にINPUT指定があり,ファイル名1のファイル管理記述項に
OPTIONAL句の指定がある場合,ファイル名1のファイル結合子のファイル位置指示子は,不定入力
ファイルの不在を示すように設定される。
12) ファイル名1のファイルが順編成又は相対編成であり,OPEN文にINPUT指定又はI-O指定がある場
合,ファイル結合子に対するファイル位置指示子に1が設定される。索引編成の場合,ファイル位置
指示子には,そのファイルに関連する文字照合順序における最小順序位置をもつ文字列が設定され,
主レコードキーが参照キーとして確定される。
13) EXTEND指定があるとき,OPEN文はファイルの最後の論理レコードの直後にファイルを位置付ける。
順ファイルでの最後の論理レコードとは,そのファイルへ最後に書き出されたレコードである。相対
ファイルでの最後の論理レコードとは,最も高い相対レコード番号をもつ既存レコードである。索引
ファイルでの最後の論理レコードとは,最も高い主キー値をもつ既存レコードである。
14) I-O指定があるとき,物理ファイルは,入出力両用モードで開いたときにそのファイルの編成に許さ
れる入出力文の実行を実現できなければならない。その物理ファイルでは,そのような文が実行でき
なければ,ファイル名1に対する入出力状態に"37"が設定され,OPEN文の実行は不成功となる。I-O
指定をもつOPEN文の実行が成功すると,ファイル名1の指すファイル結合子のオープンモードが入
出力両用モードに設定される。
15) 物理ファイルが存在せず,OPEN文にはEXTEND指定又はI-O指定があり,ファイル名1のファイル
管理記述項にOPTIONAL句の指定がある場合,OPEN文でファイルが生成される。この生成は,次の
文を指定順に実行したのと同様に起きる。
OPEN OUTPUTファイル名
CLOSE ファイル名
これらの文の後に,ソース要素で指定されたOPEN文の実行が続く。
16) OUTPUT指定があるとき,OPEN文の実行が成功すると,物理ファイルが生成される。物理ファイル
生成の直後,ファイル中にレコードは一つも含まれない。物理ファイルに対して物理ページが意味を
もつ場合,OPEN文の実行が成功した後に,物理ページ境界を考慮した出力媒体の位置付けがどうな
るかは,ファイル名1のファイル記述項におけるLINAGE句の有無に関係なく,実装者定義とする。
17) OPEN文の実行が成功すると,現在ボリュームポインタは次のとおりに設定される。
a) INPUT指定又はI-O指定のとき,物理ファイルの最初又は単一のリール/ユニットを指す。
b) EXTEND指定のとき,物理ファイルの最後の論理レコードを含むリール/ユニットを指す。
c) 使用不可能ファイルに対してのEXTEND,I-O又はOUTPUT指定のとき,物理ファイルの新たに生
成されたリール/ユニットを指す。
18) OPEN文を実行すると,ファイル名1に関連する入出力状態の値が更新されて,9.1.12(入出力状態)
に規定された値のいずれかになる。
19) 二つ以上のファイル名をOPEN文に指定した場合,このOPEN文の実行結果は,別々のOPEN文を各
380
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ファイル名に対して,この文に書いたのと同じ順序で書いた場合と同じとする。これらの別々のOPEN
文は,元のOPEN文に指定したのと同じオープンモード指定,SHARING指定,RETRY指定及び
REWIND指定をそれぞれもつ。これら暗黙のOPEN文のいずれかの結果として,宣言手続き中でNEXT
STATEMENT指定付きRESUME文が実行された場合,その次に暗黙のOPEN文があるとき,そこか
ら処理が再開する。
20) SHARING指定は,共用可能なファイルに対してだけ有効とする。
21) SHARING指定は,ファイル名1に関連する物理ファイルに対して許される共用のレベルを指定する。
さらに,その物理ファイルを共用している別のファイル結合子を介して実行してもよい入出力操作の
種類を指定する[9.1.14(共用モード)参照]。
22) SHARING指定は,ファイル名1のファイル管理記述項のSHARING句を上書きする。OPEN文に
SHARING指定がない場合,ファイル共用はファイル管理記述項によって完全に指定される。OPEN
文のSHARING指定がなくファイル管理記述項にSHARING句がない場合,各々のファイル結合子に
対して確立される共用モードは,実装者定義とする。
23) RETRY指定は,オープンモード又は共用モードの要求が,その物理ファイルに現在関連している別の
ファイル結合子と整合しないときの,OPEN文の振る舞いを制御するために用いられる。入出力状態
は,14.6.8(RETRY指定)に従って設定される。
24) ファイル名1のファイル結合子が,これ以前に実行されたLOCK指定付きCLOSE文によって施錠済
みであれば,OPEN文の実行は不成功となり,そのファイル結合子に関連する入出力状態に"38"が設
定される。
25) OPEN文の実行が不成功の場合,物理ファイルに影響はなく,次の動作が順に起きる。
a) OPEN文を不成功にした条件を示す値が,ファイル名に関連する入出力状態に設定される。
b) 入出力状態値と関連する,レベル3のEC-I-O例外状態になる。
c) 該当するUSE手続きがあれば,USE文の規則で規定されたとおりに実行される。
14.8.27 PERFORM文
PERFORM(実行)文は,幾つかの手続きへ明示的に制御を移し,指定した手続きの実行が終わると,
暗黙に制御を戻す。PERFORM文は,そのPERFORM文の範囲内にある一つ以上の無条件文を,1回以上
実行するのを制御するためにも用いられる。
14.8.27.1 一般形式
書き方1(そとPERFORM)
PERFORM 手続き名1
THROUGH
THRU
手続き名2
times指定
until指定
varying指定
書き方2(うちPERFORM)
PERFORM
times指定
until指定
varying指定
無条件文1 END-PERFORM
ここで,times指定は,次による。
一意名1
整数1
TIMES
until指定は,次による。
381
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
WITH TEST
BEFORE
AFTER
UNTIL 条件1
varying指定は,次による。
WITH TEST
BEFORE
AFTER
VARYING
一意名2
指標名1
FROM
一意名3
指標名2
定数1
BY
一意名4
定数2
UNTIL 条件1
AFTER
一意名5
指標名3
FROM
一意名6
指標名4
定数3
BY
一意名7
定数4
UNTIL 条件2 …
14.8.27.2 構文規則
1) TEST BEFORE指定もTEST AFTER指定もない場合,TEST BEFORE指定が想定される。
2) 各々の一意名は,データ部で記述された数字基本項目でなければならない。一意名1は,整数でなけ
ればならない。
3) 各々の定数は数字定数でなければならない。
4) 語THROUGHとTHRUは,同義とする。
5) VARYING指定又はAFTER指定の中に指標名を指定した場合,次による。
a) 関連するFROM指定又はBY指定の一意名は,整数データ項目でなければならない。
b) 関連するFROM指定の定数は,正の整数でなければならない。
c) 関連するBY指定の定数は,ゼロでない整数でなければならない。
6) FROM指定に指標名を指定した場合,次による。
a) 関連するVARYING指定又はAFTER指定の一意名は,整数データ項目でなければならない。
b) 関連するBY指定の一意名は,整数データ項目でなければならない。
c) 関連するBY指定の定数は,整数でなければならない。
7) BY指定の定数は,ゼロであってはならない。
8) 条件1,条件2,… は,いかなる条件式であってもよい[8.8.4(条件式)参照]。
9) 手続き名1と手続き名2の両方が指定され,かつ,一方が手続き部の宣言部分の手続きの名前である
場合,両方とも同じ宣言節の中にある手続き名でなければならない。
10) VARYING指定中では,少なくとも6個のAFTER指定が書けなければならない。
11) 手続き名1は,PERFORM文の書かれたのと同じソース要素中にある,段落又は節の名前でなければ
ならない。
12) 手続き名2は,PERFORM文の書かれたのと同じソース要素中にある,段落又は節の名前でなければ
ならない。
14.8.27.3 一般規則
1) VARYING指定又はAFTER指定に指標名を指定し,関連するFROM指定に一意名を指定した場合,
指標名に関連する添字を初期化するために一意名のデータ項目が用いられる時点で,そのデータ項目
の値は正でなければならない。さもなければ,EC-RANGE-PERFORM-VARYING例外状態になる。
2) うちPERFORM文(in-line PERFORM)と,そとPERFORM文(out-of-line PERFORM)は,次の一般
規則に従って同等に機能する。そとPERFORM文に対して“指定された文の組(the specified set of
382
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
statements)”を構成する文は,手続き名1の最初の文から,手続き名2の最後の文まで,又は手続き
名2の指定がなければ手続き名1の最後の文までの範囲内にある,全ての文とする。うちPERFORM
文に対して“指定された文の組”を構成する文は,そのPERFORM文の範囲内にある,全ての文とす
る。
3) PERFORM文を実行すると,一般規則7),8),9) に示す場合を除いて“指定された文の組”の最初の
文に制御が移る。指定された文の組への制御の移行が起こる場合,PERFORM文の終わりへ制御を暗
黙に移す機構が,次の箇所に確立される。
a) 手続き名2がない場合,復帰機構は手続き名1の最後の文の後とする。
b) 手続き名2がある場合,復帰機構は手続き名2の最後の文の後とする。
4) 手続き名1と手続き名2との間に必要な関係は,操作の連続した並びの実行が,手続き名1の手続き
から始まり手続き名2の手続きで終わるだけでよい。
注記 GO TO文,PERFORM文,EXIT PARAGRAPH文,EXIT SECTION文などが,指定された文
の組の実行の流れの中に現れてもよい。ただし,この実行の流れは最終的に手続き名2の最
後へ渡ることが求められる。
5) 指定された文の組へPERFORM文以外の手段によって制御が渡った場合は,その文の組を参照する
PERFORM文がなかった場合と同様,制御はその文の組の最後の文を通過して,次に実行可能な文に
制御が移る。
6) PERFORM文にTIMES指定,UNTIL指定,VARYING指定のいずれもないと,それを“基本のPERFORM
文”とする。この種のPERFORM文が参照する“指定された文の組”は,一度だけ実行され,PERFORM
文の終わりに制御が渡る。
7) TIMES指定がある場合,指定された文の組が繰り返し実行される。その回数を指定するのは整数1又
は一意名1のデータ項目のPERFORM文の実行開始時点での値である。PERFORM文の実行開始時点
で一意名1のデータ項目の値がゼロ又は負である場合,PERFORM文の終わりに制御が渡る。指定さ
れた文の組が指定された回数だけ実行された後,PERFORM文の終わりに制御が移る。
注記 PERFORM文の実行中に,一意名1の内容を変更しても,指定された文の組の実行される回
数は変わらない。
8) UNTIL指定がある場合,UNTIL指定の条件が真になるまで,指定された文の組が実行される。条件が
真になると,PERFORM文の終わりに制御が移る。PERFORM文が始まる時点で条件が真であり,TEST
BEFOREが明示的又は暗黙に指定されている場合,指定された文の組への移行は起きず,PERFORM
文の終わりに制御が渡る。TEST AFTER指定がある場合,PERFORM文は,指定された文の組を実行
した後で条件が検査されることを除けば,TEST BEFORE指定がある場合と同様に機能する。条件1
の中に指定した作用対象の項目識別は,その条件が検査されるたびに行われる。
9) VARYING指定がある場合,PERFORM文の実行は,幾つかの一意名が指すデータ項目又は指標名の
指す指標の値を規則的に変化させる。以降の規則では,VARYING指定の一意名2及びAFTER指定の
一意名5が指すデータ項目,並びにVARYING指定の指標名1及びAFTER指定の指標名3が指す指
標のことを,誘導変数(induction variable)と呼ぶ。FROM指定中の,一意名が指すデータ項目の内容,
指標名が指す指標の値に対応する出現番号,及び定数の値のことを,初期化値(initialization value)と
呼ぶ。BY指定中の一意名のデータ項目の内容及び定数の値を,増分値(augment value)と呼ぶ。BY
指定を省略したとき増分値は1とする。一意名2,一意名5,指標名1又は指標名3に対する項目識別
は,一意名の指すデータ項目の内容又は指標名の指す指標の値を,設定又は増加するたびに行われる。
383
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
一意名3,一意名4,一意名6,一意名7,指標名2及び指標名4に対する項目識別は,一意名の指す
データ項目の内容又は指標名の指す指標の値を,設定又は増加に用いるたびに行われる。条件1及び
条件2の中にある作用対象に関連する項目識別は,その条件を検査するたびに行われる。
注記 増分値が負のとき,実際には増分値の絶対値だけ誘導変数が減少する。
PERFORM文の動作の順序は次による。
a) 誘導変数に各自の関連する初期化値を設定する処理が,全ての誘導変数に対し左から右へ指定順に
行われる。
b) TEST AFTER指定があって,AFTER指定がない場合,指定された文の組が1回実行され条件1が検
査される。条件が偽であれば,誘導変数が増分値だけ増やされて,指定された文の組が再び実行さ
れる。この繰返しは,条件1が検査されて真になるまで続行され,真になった時点でPERFORM文
の終わりへ制御が移る。その時点での誘導変数の内容は,指定された文の組の実行が完了した時点
での値である。
c) TEST AFTER指定があって,AFTER指定がある場合,次による。
1. 指定された文の組が実行される。
2. 右端の条件2が検査される。
3. 右端の条件2が偽であれば,関連する誘導変数が,関連する増分値だけ増やされて,a) の段階に
実行が進む。
4. それまでで最後に評価された条件が真であるとき,一つ左側の条件が評価される。
この処理は,偽の条件が見つかるまで,又は最後に評価された条件が左端の条件1でそれが真に
なるまで,繰り返される。偽の条件が見つかった場合は,その条件に関連する誘導変数が関連す
る増分値だけ増やされ,その条件より右側にある全ての誘導変数には各々の初期化値が設定され,
1.の段階へ実行が進む。偽の条件が見つからない場合,PERFORM文の終わりへ制御が移る。
注記 PERFORM文の実行が成功した後の,全ての誘導変数の内容は,指定された文の組が最
後に実行完了した時点での値である。
d) TEST AFTER指定がなく,AFTER指定がない場合,条件1が評価され,それが真であれば,PERFORM
文の終わりに制御が移る。それが偽であれば,指定された文の組が実行される。次いで,誘導変数
が増分値だけ増やされて,条件1が再び評価される。PERFORM文の終わりに制御が渡る場合,誘
導変数の内容は,条件1を評価したときの値である。
e) TEST AFTER指定がなくて,AFTER指定がある場合,次による。
1. 条件1が評価される。
条件1が真であれば,PERFORM文の終わりに制御が移る。さもなければ,すぐ右側にある条
件2が現在の条件となる。
2. 現在の条件が評価される。
現在の条件が真であるときは,次による。
a. 現在の条件に関連する誘導変数には初期化値が設定される。
b. 一つ左側の条件が,現在の条件となる。
c.
新たな現在の条件に関連する誘導変数が,増分値だけ増やされる。
d. 現在の条件が左端の条件1であれば,a. へ実行が進む。さもなければ,b. の段階の最初から
実行が繰り返される。
さもなければ,次による。
384
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
a. 現在の条件の右側にまだAFTER指定があるとき,
− そのAFTER指定に関連する条件が現在の条件となって,
− 実行は2.の段階の最初から繰り返される。
b. さもなければ,つまり右端の条件に達したとき,
− 指定された文の組が実行され,
− 現在の条件に関連する誘導変数が,増分値だけ増やされて,
− 実行は2.の段階の最初から繰り返される。
注記 PERFORM文の実行が成功した後の,全ての誘導変数の内容は,左端の条件1が最後に
評価された時点の値である。条件1に関連する誘導変数を除いて,これらの値は“指定
された文の組”が最後に実行された時点での値に等しい。ただし,文の組が一度も実行
されなければ,これらの値は各々の初期化値になっている。文の組が実行されなければ,
条件1に関連する誘導変数の内容は関連する初期化値になっている。さもなければ,条
件1に関連する誘導変数の内容は,指定された文の組が最後に実行された時点での値を
増分値だけ増やした値になっている。
PERFORM文の“指定された文の組”の実行中に誘導変数,増分値の関連変数,及び初期化値の
関連変数に対して行われた変更は全て直ちに影響を及ぼす。それ以降に行われる関連データ項目へ
の参照では,全て更新後の内容を使用することになる。
10) PERFORM文の範囲は,論理的にはそのPERFORM文の終わりへ暗黙に制御が移るまでのPERFORM
文の実行の結果として実行される全ての文によって構成される。その範囲には,そのPERFORM文の
範囲内で制御が移った結果として実行される全ての文が含まれるが,ただし,同じソース要素中の同
じPERFORM文中にあるEXIT FUNCTION文・EXIT METHOD文・EXIT PROGRAM文・GOBACK文
で制御が移った結果として実行される文は,その範囲から除く。PERFORM文の範囲内の文を実行し
た結果として実行される宣言手続きは,そのPERFORM文の範囲内に含まれるものとする。PERFORM
文の範囲内の文はソース要素中で連続して現れる必要はない。
11) 次のPERFORM文の並びを実行した結果は,規定されない。また,この並びを実行しても,例外状態
にはならない。
a) あるPERFORM文が実行されて,まだ終了していない。
b) そのPERFORM文の範囲の中でもう一つのPERFORM文が実行される。
c) 第二のPERFORM文が第一のPERFORM文の出口を通過するかたちで実行される。
注記 この結果は規格が規定しないため,利用者はこのような実行順序を避けるほうがよい。実
装系によっては,スタックオーバフローが起きたり,思いもよらない場所に復帰したり,
その他の動作が起きたりする可能性がある。したがって,結果は予測不能であり移植困難
である。
14.8.28 RAISE文
RAISE(引起し)文は,指定された例外状態を引き起こす。
14.8.28.1 一般形式
RAISE
EXCEPTION 例外名1
一意名1
14.8.28.2 構文規則
1) 例外名1は,レベル3の例外名でなければならない[14.5.12.1(例外状態)参照]。
385
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
2) 一意名1は,オブジェクト参照でなければならない。既定義オブジェクト参照NULL及びSUPERを
指定してはならない。
3) 一意名1は,送出し側作用対象とする。
14.8.28.3 一般規則
1) 例外名1を指定したとき,関連する例外状態が発生し,EXCEPTION-OBJECTはナルに設定される。
2) 一意名1を指定したとき,EXCEPTION-OBJECTは,一意名1の指すオブジェクトを指すように設定
される。
3) RAISE文の効果は,次のいずれかが真である場合,CONTINUE文の効果と同じである。
a) 例外名1を指定したが,例外状態は非致命的であり,該当する宣言手続きがない。
b) 一意名1を指定したが,該当する宣言手続きがない。
14.8.29 READ文
READ(読込み)文は,順呼出し法の場合ファイル中の次の論理レコードを使用可能にし,乱呼出し法
の場合は大容量記憶ファイル中の指定したレコードを使用可能にする。
14.8.29.1 一般形式
書き方1(順呼出し)
READ ファイル名1
NEXT
PREVIOUS RECORD [INTO 一意名1]
ADVANCING ON LOCK
IGNORING LOCK
retry指定
WITH LOCK
WITH NO LOCK
AT END 無条件文1
NOT AT END 無条件文2
[END-READ]
書き方2(乱呼出し)
READ ファイル名1 RECORD [INTO 一意名1]
IGNORING LOCK
retry指定
WITH LOCK
WITH NO LOCK
KEY IS
データ名1
レコードキー名1
INVALID KEY 無条件文3
NOT INVALID KEY 無条件文4
[END-READ]
ここで,retry指定は,14.6.8(RETRY指定)による。
14.8.29.2 構文規則
全ての書き方
1) INTO指定は,次のいずれかの場合にREAD文に書いてもよい。
386
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
a) ファイル記述項に従属するレコード記述項がないか又は一つだけある場合。
b) 一意名1のデータ項目及びファイル名1の全てのレコード名が,英数字集団項目である場合か,又
は項類が英数字若しくは各国文字である基本項目である場合。
2) 一意名1の記憶領域とファイル名1のレコード領域は,同じであってはならない。
3) 一意名1が強い型付けの集団項目であるとき,ファイル名1に対するファイル記述項に従属するレコ
ード領域は,高々一つでなければならない。このレコード領域が指定されている場合,そのレコード
領域は,一意名1と同じ型をもつ強い型付けの集団項目でなければならない。
4) IGNORING LOCK指定があるREAD文に,LOCK指定を書いてはならない。
5) ファイル名1に対して自動施錠の指定があるとき,IGNORING LOCK指定,WITH LOCK指定及び
WITH NO LOCK指定のいずれも書いてはならない。
書き方1
6) ファイル名1に対するファイル管理記述項にACCESS MODE RANDOMの指定がある場合には,
ADVANCING指定,AT END指定,NEXT指定,NOT AT END指定及びPREVIOUS指定のいずれをも
書いてはならない。
7) NEXT指定及びPREVIOUS指定のいずれも書かず,ファイル名1に対するファイル管理記述項に
ACCESS MODE SEQUENTIALの指定がある場合,NEXT指定が書かれたものとみなす。
8) NEXT指定及びPREVIOUS指定のいずれも書かず,ファイル名1に対するファイル管理記述項に
ACCESS MODE DYNAMICの指定がある場合,ADVANCING指定,AT END指定又はNOT AT END指
定のいずれかを書いていれば,NEXT指定が書かれたものとみなす。
書き方2
9) KEY指定は,ファイル名1に対するファイル管理記述項にORGANIZATION IS INDEXEDの指定があ
る場合にだけ書いてもよい。
10) データ名1又はレコードキー名1は,ファイル名1に関連付けたRECORD KEY句又はALTERNATE
RECORD KEY句に指定されていなければならない。
11) データ名1又はレコードキー名1は,修飾してもよい。
14.8.29.3 一般規則
全ての書き方
1) ファイル名1のファイル結合子のオープンモードは,入力又は入出力両用でなければならない。さも
なければ,READ文の実行は不成功となり,ファイル名1に対する入出力状態に"47"が設定される。
2) READ文を実行すると,ファイル名1のファイル結合子の入出力状態の値が更新される[9.1.12(入出
力状態)参照]。
3) ファイルの論理レコードが二つ以上のレコード記述で書かれているとき,これらのレコードは再定義
の規則に従って記憶領域の同じレコード領域を共用する。READ文が完了したときの,現在レコード
の範囲を越えた位置にあるデータ項目の内容は規定されない。
4) INTO指定のあるREAD文の実行が成功すると,その結果は,次の規則をこの順に適用したのと同じ
とする。
a) INTO指定のない同じREAD文を実行する。
b) 現在レコードを,CORRESPONDING指定のないMOVE文の規則に従って,入力レコード領域から
一意名1の領域へ転記する。現在レコードの大きさは,RECORD句の規則で決まる。ファイル記述
項にRECORD IS VARYING句があるとき,暗黙の転記は英数字集団転記とする。一意名1で参照さ
387
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
れるデータ項目の項目識別は,レコードを読んだ後で,転記の直前に行われる。このレコードは,
入力レコード領域中と一意名1のデータ項目中との両方で使用可能になる。
INTO指定のあるREAD文の実行が不成功のとき,一意名1のデータ項目の内容は変更されず,一
意名1で参照されるデータ項目の項目識別は行われない。
5) ファイル記述項に従属するレコード記述項が一つもないとき,INTO指定のあるREAD文の実行は,
RECORD句で定まる最大の大きさの英数字集団項目を記述するレコード記述項があるのと同様に進
む。
6) レコード施錠が有効か否かは,12.3.4.8(LOCK MODE句)の規則によって決まる。
7) ファイル名1のファイル結合子に対してレコード施錠が有効であって,READ文の一般規則によって
呼出し対象として識別されたレコードをそのファイル結合子が施錠している場合,このレコード錠は
無視され,読込み動作は施錠のないレコードと同様に進む。
8) ファイル名1のファイル結合子に対してレコード施錠が有効であって,呼出し対象として識別された
レコードを別なファイル結合子が施錠している場合,この動作の結果はRETRY指定の有無によって
異なる。RETRY指定がある場合,そのレコードの読込み試行が更に繰り返されることがある[14.6.8
(RETRY指定)参照]。RETRY指定がない場合,又はRETRY指定による呼出しが成功しなかった場
合,レコード操作不整合条件が成立する。入出力状態は,RETRY指定の規則に従って設定される。
9) READ文の結果としてレコード操作不整合条件が成立するとき,次のようになる。
a) ファイル位置指示子はそのまま変わらない。
b) ファイル名1に関連する入出力状態に,レコード操作不整合条件を示す値が設定される。
c) 関連するレコード領域の内容は規定されない。
d) 索引ファイルの参照キーはそのまま変わらない。
e) READ文は不成功となる。
10) レコード錠が有効であるとき,次の動作を行う。
a) ファイル名1に関連するファイル結合子に対して単一レコード施錠の指定があるとき,それ以前に
ファイル結合子に関連していたあらゆるレコード錠は,READ文の実行で解除される。
b) ファイル名1に関連するファイル結合子に対して複数レコード施錠の指定があるとき,レコード錠
を解除しない。ただし,READ文にNO LOCK指定がある場合は,ファイル結合子が呼出し対象レ
コードに関連して保持していたレコード錠を,READ文の実行が成功完了した時点で解除する。
c) 施錠モードが自動である場合,呼出しが成功したレコードに関連するレコード施錠を設定する。
d) 施錠モードが手動である場合,READ文にLOCK指定があるときだけ,呼出しが成功したレコード
に関連するレコード施錠を設定する。
11) IGNORING LOCK指定がREAD文にあるとき,要請されたレコードは,施錠されていても使用可能と
なる。
12) READ文の実行中に,ファイル終了条件と無効キー条件のいずれも起きなかった場合,AT END指定
又はINVALID KEY指定があっても無視され,次の動作が行われる。
a) ファイル名1に関連する入出力状態が更新される。レコード操作不整合条件が起きなかったときは
ファイル位置指示子が設定される。
b) ファイル終了条件でも無効キー条件でもない例外状態であるときは,次の規則に従って制御が移る。
1. ファイル名1のファイル結合子に関連するUSE AFTER EXCEPTION手続きがあるときは,その
例外状態の規則及び関連する宣言手続きを実行するUSE文の規則に従って制御が移る。
388
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
2. ファイル名1のファイル結合子に関連するUSE AFTER EXCEPTION手続きがないときは,その
例外状態の規則に従って制御が移る。致命的例外状態でないときは,READ文の終わりに制御が
移る。
c) 例外状態でないとき,レコードはレコード領域で使用可能になり,INTO指定があれば暗黙の転記
を行う。READ文の終わりに制御が移るか,NOT AT END指定又はNOT INVALID KEY指定があれ
ば無条件文2に制御が移る。後者の場合,無条件文2中の各文の規則に従って実行が続く。明示的
な制御の移行を引き起こす手続き分岐文又は条件文が実行されれば,その文の規則に従って,制御
が移る。さもなければ,無条件文2の実行が完了した後,READ文の終わりに制御が移る。
13) 読み込んだレコードのバイト数が,ファイル名1のレコード記述項で指定された最小の大きさよりも
小さい場合,読み込んだ最後の有効な文字の右にあるレコード領域の部分は規定しない。読み込んだ
レコードのバイト数が,ファイル名1のレコード記述項で指定された最大の大きさよりも大きい場合,
レコードは右側が切り捨てられて最大の大きさになる。いずれの場合も,READ文は成功し,入出力
状態はレコード長の不整合を示すように設定される[9.1.12(入出力状態)参照]。
14) 呼出し時間と処理時間を重ねるためにどのような方式を用いていても,READ文の概念は変わらない。
実行時要素でレコードが使用可能になるのは,無条件文2又は無条件文4の指定があればその実行の
前,指定がなければREAD文に後続する文の実行前とする。
15) 別な指定が特にない限り,READ文の実行が不成功完了した時点で,関連するレコード領域の内容は
規定されない。索引ファイルに対する参照キーも規定されず,有効なレコード位置が確定しなかった
ことを示すようにファイル位置指示子が設定される。
書き方1
16) 明示的な又は暗黙のNEXT指定又はPREVIOUS指定があれば,順呼出しのREAD文とする。さもな
ければ,乱呼出しのREAD文として書き方2の規則を適用する。
17) PREVIOUS指定がある場合,ファイル名1のファイル結合子に関連する物理ファイルは,単一リール
/ユニットの大容量記憶ファイルでなければならない。
18) READ文の実行開始時点のファイル位置指示子の設定を用いて,使用可能にする対象のレコードを,
次の規則に従って決定する。順ファイルでのレコード比較は,レコード番号による。相対ファイルで
のレコード比較は,相対キー番号による。索引ファイルでのレコード比較は,現在の参照キーの値に
よる。索引ファイルに対する比較は,そのファイルの文字照合順序に従って行う。
a) 有効なレコード位置が確定しなかったことをファイル位置指示子が示しているとき,READ文の実
行は不成功になる。
b) 不定ファイルが存在しないことをファイル位置指示子が示しているとき,ファイル名1に関連する
入出力状態に"10"が設定され,ファイル終了条件が発生し,一般規則21) に従って実行が進む。
c) 直前のOPEN文又はSTART文でファイル位置指示子が確立されたとき,選択される最初の既存レ
コードは,次のいずれかとする。
1. NEXTが明示的又は暗黙に指定されているときは,物理ファイル中の既存レコードのうちで,フ
ァイル位置指示子よりも大きいか等しいレコード番号又はキー値をもつ最初のレコード。
2. PREVIOUSが指定されているときは,物理ファイル中の既存レコードのうちで,ファイル位置指
示子よりも小さいか等しいレコード番号又はキー値をもつ最初のレコード。
注記 OPEN文だと,通常の場合,順ファイル又は相対ファイルなら先頭レコードが得られ,
索引ファイルならファイル終了条件が得られることを意味する。
389
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
d) 直前のREAD文でファイル位置指示子が確立され,ファイルが順ファイル,相対ファイル,又は現
在の参照キーに重複を許さない索引ファイルであるとき,次のいずれかとする。
1. NEXTが明示的又は暗黙に指定されていれば,物理ファイル中の既存レコードのうちで,ファイ
ル位置指示子より大きいレコード番号又はキー値をもつ最初のレコードが選択される。
2. PREVIOUSが指定されていれば,物理ファイル中の既存レコードのうちで,ファイル位置指示子
より小さいレコード番号又はキー値をもつ最初のレコードが選択される。
e) 直前のREAD文でファイル位置指示子が確立され,ファイルが現在の参照キーに重複を許す索引フ
ァイルであるとき,選択されるレコードは次のいずれかとする。
1. NEXTが明示的又は暗黙に指定されていれば,次による。
a. キー値がファイル位置指示子に等しく,かつ,重複キー値をもつレコードの組の中では直前の
READ文で使用可能となったレコードより論理的に後に位置するレコードが,物理ファイル中
に存在するとき,重複キー値をもつその組のうちで直前のREAD文で使用可能となったレコー
ドの論理的に直後にあるレコード。
b. さもなければ,キー値がファイル位置指示子より大きい,物理ファイル中の最初のレコード。
2. PREVIOUSが指定されていれば,次による。
a. キー値がファイル位置指示子に等しく,かつ,重複キー値をもつレコードの組の中では直前の
READ文で使用可能となったレコードより論理的に前に位置するレコードが,物理ファイル中
に存在するとき,重複キー値をもつその組のうちで直前のREAD文で使用可能となったレコー
ドの論理的に直前にあるレコード。
b. さもなければ,キー値がファイル位置指示子より小さい最初の値である,重複キー値をもつレ
コードの組のうちで最後のレコード。
READ文の一般規則を満たすレコードが見つかったとき,そのレコードがファイル名1に関連する
レコード領域で使用可能となる。ただし,RELATIVE KEY句がファイル名1に指定されていて,選択
されたレコードの相対レコード番号の有効けた数が相対キーデータ項目の大きさを超えている場合は,
この限りではない。その場合,ファイル名1に関連する入出力状態に"14"が設定され,ファイル終了
条件が発生して,その次の又はその直前の論理レコードが存在しないことを示すようにファイル位置
指示子は設定され,一般規則21) に従って実行が進む。
注記 索引ファイルの場合を除き,使用可能となるレコードは長さがゼロでもよい。
上記c),d),e) のいずれかの規則を満たすレコードが見つからないときは,その次の又はその直前
の論理レコードが存在しないことを示すようにファイル位置指示子が設定され,ファイル名1に関連
する入出力状態に"10"が設定され,ファイル終了条件が発生し,一般規則21) に従って実行が進む。
レコードが使用可能になると,ファイル位置指示子は次のとおりに更新される。
a) 順ファイルでは,ファイル位置指示子には使用可能となったレコードのレコード番号が設定される。
b) 相対ファイルでは,ファイル位置指示子には使用可能となったレコードの相対レコード番号が設定
される。
c) 索引ファイルでは,ファイル位置指示子には使用可能になるレコードの現在の参照キーの値が設定
される。
19) ファイル共用のために開いたファイルのREAD文にADVANCING ON LOCK指定があって,使用可能
にする対象のレコードを別のファイル結合子が施錠しているとき,このREAD文の結果は,施錠され
たレコードを読んだ後,更に同じREAD文を実行したのと同じである。使用可能にする対象のレコー
390
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ドを別のファイル結合子が施錠しているときは,この読み飛ばし動作を繰り返す。施錠されていない
レコードを読み込むまで,NEXTが明示的又は暗黙に指定されていればファイル終端に達するまで,
又はPREVIOUSが指定されていればファイル始端に達するまで,この動作を繰り返す。レコード操作
不整合条件は成立しない。ファイルの終端又は始端に達したとき,その次の又はその直前の論理レコ
ードが存在しないことを示すようにファイル位置指示子が設定され,一般規則21) に従って実行が進
む。
ファイル共用のために開いたファイルでないとき,ADVANCING ON LOCK指定は無視される。
20) READ文の実行中に,リール/ユニットの終わりを検出したとき又はリール/ユニット中に論理レコー
ドがないとき,ファイル結合子がファイルの論理的な終わりに到達していない場合,リール/ユニット
の交換が行われ,現在ボリュームポインタは物理ファイル中の次のリール/ユニットを指すように更新
される。
21) ファイル終了条件が成立すると,次の動作がこの順に行われる。
a) ファイル名1に関連する入出力状態に,ファイル終了条件を示す値"10"が設定される。
b) ファイル終了条件を引き起こしたREAD文にAT END指定がある場合,AT END指定の無条件文1
に制御が移る。ファイル名1のファイル結合子に関連するUSE AFTER EXCEPTION手続きは実行
されない。その後,無条件文1中の各文の規則に従って実行が続く。明示的に制御の移行を引き起
こす手続き分岐文又は条件文が実行されれば,その文の規則に従って制御が移る。さもなければ,
無条件文1の実行が完了した後,READ文の終わりに制御が移り,NOT AT END指定はあっても無
視される。
c) AT END指定がなく,ファイル名1のファイル結合子に関連するUSE AFTER EXCEPTION手続きが
あるとき,そのUSE AFTER EXCEPTION手続きが実行される。その後,READ文の終わりに制御
が移る。
d) AT END指定がなく,ファイル名1のファイル結合子に関連するUSE AFTER EXCEPTION手続きが
ないとき,READ文の終わりに制御が移る。NOT AT END指定はあっても無視される。
ファイル終了条件が成立した場合,READ文の実行は不成功とする。
22) 相対ファイルでは,ファイル名1にRELATIVE KEY句が指定されていれば,READ文の実行は,使
用可能になったレコードの相対レコード番号を,MOVE文の規則に従い相対キーデータ項目に転記す
る。
23) 索引ファイルでは,副レコードキーを参照キーとして順呼出しするとき,その値で指定されるレコー
ドが重複して存在することがある。その場合,順呼出しのREAD文でレコードが使用可能になる順序
は,WRITE文又はREWRITE文が重複した値をもつレコードを書き出した順序,又はPREVIOUSの
場合は書き出した逆の順序とする。
24) ファイル名1のファイル結合子の入出力状態に"02"が設定されるのは,READ文の実行が成功して,
索引ファイルが順呼出しであり,参照キーが副レコードキーであり,かつ,次のいずれかが真になる
場合である。
a) NEXTが明示的又は暗黙に指定されていて,読込みの成功したレコードに後続するレコード中の副
レコードキーが,読込みの成功したレコード中の同じキーと重複している。
b) PREVIOUSが指定されていて,読込みの成功したレコードの直前のレコード中の副レコードキーが,
読込みの成功したレコード中の同じキーと重複している。
注記1 ファイルの共用モードが他全てとの共用を許すモードであるとき,順呼出しのREAD実
391
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
行後の入出力状態値 "02" を,以降の順呼出しREADでは当てにしないほうがよい。以
降の順呼出しREADを実行する前に別のファイル結合子を介して重複キーをもつレコー
ドが削除されているかもしれない。
注記2 ファイルの共用モードが,他全てとの共用を許すモードであるとき,順呼出しのREAD
実行後の入出力状態値 "02" を,以降の順呼出しREADでは重複キーは存在しないこと
を示すものと当てにしないほうがよい。以降の順呼出しREADを実行する前に別のファ
イル結合子を介して重複キーをもつレコードが追加されるかもしれない。
書き方2
25) READ文を実行する時点で,不定入力ファイルが存在しないことをファイル位置指示子が示している
とき,無効キー条件が成立し,READ文の実行は不成功になる[9.1.13(無効キー条件)参照]。
26) 相対ファイルでは,READ文の実行は,そのファイルに対するRELATIVE KEY句で参照されるデー
タ項目の値をファイル位置指示子に設定し,ファイル位置指示子の値と等しい相対レコード番号をも
つレコードをファイル名1のレコード領域中で使用可能にする。物理ファイル中に該当するレコード
がないとき,無効キー条件が成立し,READ文の実行は不成功になる[9.1.13(無効キー条件)参照]。
27) ファイル結合子を介して呼び出す索引ファイルにKEY指定があるとき,データ名1又はレコードキ
ー名1がこのレコード検索の参照キーとなる。動的呼出し法の場合は,そのファイルに対して同じフ
ァイル結合子を介してこれ以降に実行する順呼出し形式のREAD文でも,別の参照キーが指定される
までは,レコード検索にこの参照キーを引き続き用いる。
28) ファイル結合子を介して呼び出す索引ファイルにKEY指定がないとき,主レコードキーがこのレコ
ード検索の参照キーとなる。動的呼出し法の場合は,そのファイルに対して同じファイル結合子を介
してこれ以降に実行する順呼出し形式のREAD文でも,別の参照キーが指定されるまでは,レコード
検索にこの参照キーを引き続き用いる。
29) ファイル結合子を介して呼び出す索引ファイルに対するREAD文の実行は,参照キーの値をファイル
位置指示子に設定する。この値を,ファイル中に格納されているレコードの,対応するデータ項目の
値と比較して,同じ値をもつレコードが見つかるまで,この比較を繰り返す。重複した値をもつ副レ
コードキーの場合,最初に見つかるレコードは,重複した値をもつ一連のレコードのうちで最初に操
作環境へ渡されたものである。こうして見つかったレコードは,ファイル名1に関連するレコード領
域中で使用可能となる。こうして判別されるレコードがない場合,無効キー条件が成立して,READ
文の実行は不成功になる[9.1.13(無効キー条件)参照]。
14.8.30 RELEASE文
RELEASE(引渡し)文は,整列操作の初期の段階にレコードを引き渡す。
14.8.30.1 一般形式
RELEASE レコード名1
FROM
一意名1
定数1
14.8.30.2 構文規則
1) レコード名1は,整列併合用ファイル記述項の論理レコードの名前とする。これは修飾してもよい。
2) 一意名1が関数一意名であるときは,英数字関数又は各国文字関数の引用でなければならない。
3) 一意名1又は定数1は,受取り側作用対象にレコード名1を指定したMOVE文の送出し側作用対象と
して妥当なものでなければならない。
14.8.30.3 一般規則
392
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) RELEASE文は,レコード名1に関連するファイル名を参照するSORT文によって実行される入力手
続きの範囲内だけで実行してもよい。それ以外の時点で実行した場合,EC-FLOW-RELEASE例外状態
になる。
2) RELEASE文を実行するとレコード名1のレコードが整列操作の初期段階に引き渡される。
3) RELEASE文の実行によって引き渡された論理レコードは,それ以降はレコード領域中では使用不能
になる。ただし,レコード名1に関連する整列併合用ファイル名がSAME RECORD AREA句に指定さ
れていれば,この限りでない。その論理レコードは,レコード名1に関連するファイルだけでなく,
関連する出力ファイルと同じSAME RECORD AREA句に指定された別のファイルのレコードとして
も使用可能である。
4) FROM指定のあるRELEASE文の実行結果は,次の文をこの順に実行するのと同じとする。
a) MOVE文の規則に従った次の文。
MOVE 一意名1 TO レコード名1
又は
MOVE 定数1 TO レコード名1
b) 同じRELEASE文でFROM指定がないもの。
5) RELEASE文の実行が完了した後,SAME RECORD AREA句に規定した場合を除けば,レコード名1
の領域の情報は使用不能になるが,一意名1の領域中の情報は使用可能である。
6) 整列操作へ引き渡されるバイト数が,レコード名1中のバイト数よりも大きい場合,レコード名1の
終端を越えたバイトの内容は,規定されない。
14.8.31 RESUME文
RESUME(再開)文は,宣言手続きの実行を引き起こした文の直後の文へ,又は手続き名へ,制御を移
す。
14.8.31.1 一般形式
RESUME AT
NEXT STATEMENT
手続き名1
14.8.31.2 構文規則
1) RESUME文は,宣言手続き内にだけ指定してもよい。
2) RESUME文を,GLOBAL指定付きUSE文の関連宣言手続き中に指定してはならない。
3) 手続き名1は,関数・メソッド・プログラムの非宣言部分中になければならない。
14.8.31.3 一般規則
1) RESUME文の実行箇所がGLOBAL宣言手続きの実行範囲内であれば,それはCONTINUE文の実行と
等価とする。
2) NEXT STATEMENT指定がある場合,この宣言手続きへ制御が移った時点で実行中だった文の,すぐ
後にあるとみなされる暗黙のCONTINUE文へ制御が移る。ただし,該当する文の関連規則に別な規
定があるならこの限りでない。この宣言手続きの実行を引き起こしたのが例外状態である場合,該当
する文とは次のいずれかである。
a) 例外状態がその実行時要素の内部の文で発生したものであって,他から伝ぱ(播)してきた例外状
態ではないとき,該当する文は,その例外状態が発生した文とする。
b) 例外状態が他の実行時要素から伝ぱ(播)してきたとき,該当する文は,その実行時要素を活性化
したCALL文,INVOKE文,文内メソッド呼出し又は関数一意名を書いた文のいずれかとする。
c) その文が別の文に内包されているとき,該当する文は最も内側の文であって,外側の文ではない。
393
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
この宣言手続きの実行を引き起こしたのが,例外状態ではなく,ソース要素の非宣言部分中にあっ
てこの宣言手続きの手続き名を参照するPERFORM文である場合は,そのPERFORM文が参照する終
了手続きの最後の文のすぐ後にあるとみなされる,暗黙のCONTINUE文へ制御が移る。
注記 NEXT STATEMENTの使用が原因で,通常なら実行されない文に制御を移してもよい。例え
ば次の文で,
IF <条件a> GO TO x ELSE GO TO y END-IF
条件aの評価中に例外状態が発生した場合,END-IFの後へ制御が移る。通常なら制御が
そこに渡ることはない。
3) 手続き名1が指定された場合,あたかも“GO TO 手続き名1”を実行したように,手続き名1へ制御
が移る。
注記 この回復手法を使用すると,PERFORM文に対する制御の流れが規定されない状態になるこ
とがある[14.8.27(PERFORM文)の一般規則11) 参照]。
14.8.32 RETURN文
RETURN(引取り)文は,整列操作の最終段階から,整列済みレコードを引き取る。又は併合操作中に,
併合済みレコードを引き取る。
14.8.32.1 一般形式
RETURN ファイル名1 RECORD [INTO 一意名1]
AT END 無条件文1
[NOT AT END 無条件文2]
[END-RETURN]
14.8.32.2 構文規則
1) ファイル名1は,データ部の整列併合用ファイル記述項で記述しなければならない。
2) INTO指定は,次のいずれかの場合にRETURN文に書いてもよい。
a) 整列併合用ファイル記述項に従属するレコード記述項が一つだけある場合。
b) 一意名1のデータ項目及びファイル名1の全てのレコード名が,英数字集団項目である場合か,又
は項類が英数字若しくは各国文字である基本項目である場合。
3) 一意名1が強い型付けの集団項目であるとき,ファイル名1に対するファイル記述項に従属するレコ
ード領域は,ただ一つでなければならない。このレコード領域は,一意名1と同じ型をもつ強い型付
けの集団項目でなければならない。
4) AT END指定とNOT AT END指定とを書く場合,これらを書く順序は逆でもよい。
14.8.32.3 一般規則
1) RETURN文を実行してもよいのは,そのファイル名を参照するMERGE文又はSORT文によって実行
される出力手続きの範囲内だけとする。その他の時点で実行した場合,EC-FLOW-RETURN例外状態
になる。
2) ファイルの論理レコードが二つ以上のレコード記述で書かれている場合,これらのレコードは自動的
に同じ領域を共用する。これは,その領域を暗黙に再定義したのと等価である。RETURN文の実行の
完了時点での,現在レコードの範囲を越えた位置にあるデータ項目の内容は規定されない。
3) RETURN文を実行すると,SORT文又はMERGE文に書いたキーの並びから決まる順序で,ファイル
名1のファイル中にある次のレコードが,ファイル名1に関連するレコード領域で使用可能になる。
ファイル名1のファイルの中に次の論理レコードが存在しない場合は,ファイル終了条件になって,
394
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
AT END指定の無条件文1に制御が移る。無条件文1中の各文の規則に従って実行が続く。明示的に
制御の移行を引き起こす手続き分岐文又は条件文が実行されれば,その文の規則に従って制御が移る。
さもなければ,無条件文1の実行が完了した後,RETURN文の終わりに制御が移り,NOT AT END指
定はあっても無視される。ファイル終了条件が成立すると,RETURN文の実行は不成功となり,ファ
イル名1と関連するレコード領域の内容は,規定されない。AT END指定の無条件文1を実行した後,
現在の出力手続きの一部としてRETURN文を実行してはならない。このようなRETURN文が実行さ
れると,EC-SORT-MERGE-RETURN例外状態になり,RETURN文の実行の結果は規定されない。
4) ファイル終了条件がRETURN文の実行中に成立しなければ,レコードが使用可能になる。INTO指定
があることによる暗黙の転記が実行された後,無条件文2がある場合は,それに制御が移り,さもな
ければ,RETURN文の終わりに制御が移る。
5) INTO指定のあるRETURN文の実行結果は,次の規則をこの順に適用したものと同じとする。
a) INTO指定がない同じRETURN文を実行する。
b) 現在レコードを,CORRESPONDING指定のないMOVE文の規則に従って,入力レコード領域から
一意名1の領域へ転記する。現在レコードの大きさは,RECORD句の規則で決まる。ファイル記述
項にRECORD IS VARYING句があるとき,暗黙の転記は英数字集団転記とする。RETURN文の実
行が不成功のとき,この転記は行わない。一意名1で参照されるデータ項目の項目識別は,レコー
ドを読んだ後で,転記の前に行われる。このレコードは,入力レコード領域中と一意名1のデータ
項目中との両方で使用可能になる。
14.8.33 REWRITE文
REWRITE(書換え)文は,大容量記憶ファイル中に存在するレコードを論理的に書き換える。
14.8.33.1 一般形式
REWRITE
レコード名1
FILE ファイル名1 RECORD
FROM
一意名1
定数1
[retry指定]
WITH LOCK
WITH NO LOCK
INVALID KEY 無条件文1
NOT INVALID KEY 無条件文2
[END-REWRITE]
ここで,retry指定は,14.6.8(RETRY指定)による。
14.8.33.2 構文規則
1) レコード名1と一意名1とが,同じ領域を参照してはならない。
2) レコード名1は,データ部のファイル節の論理レコードの名前とする。これは修飾してもよい。
3) INVALID KEY指定とNOT INVALID KEY指定のいずれも,順編成のファイル又は順呼出し法で相対
編成のファイルを参照するREWRITE文には,指定してはならない。
4) レコード名1が外側のプログラム中で定義され内側のプログラム中で参照されている場合,レコード
名1に関連するファイルのファイル記述項にはGLOBAL句がなければならない。
5) 書換えファイルに対して自動施錠の指定があるとき,WITH LOCK指定もWITH NO LOCK指定も書
いてはならない。
6) レコード名1を指定した場合,一意名1又は定数1は,受取り側作用対象としてレコード名1を指定
395
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
したMOVE文の送出し側作用対象として妥当なものでなければならない。
7) 一意名1が組込み関数ではないビットデータ項目であってFILE指定がある場合,一意名1の記述は,
次のとおりでなければならない。
a) 一意名1の添字付け又は部分参照は,固定小数点数字定数又は算術式だけからなる。その算術式は,
全ての作用対象が固定小数点数字定数であって,べき乗演算子の指定はない。
b) バイト境界にけたよせされている。
8) 一意名1が組込み関数の引用であってFILE指定がある場合,それは英数字関数又は各国文字関数の
引用でなければならない。
9) 一意名1が組込み関数の引用であってFILE指定がない場合,それは英数字関数,ブール関数又は各
国文字関数の引用でなければならない。
10) FILE指定を書いた場合,FROM指定をも書かなければならない。さらに,
a) 一意名1はMOVE文の送出し側作用対象として妥当なものでなければならない。
b) 定数1は英数字定数・ブール定数・各国文字定数でなければならず,表意定数であってはならない。
11) ファイル名1は,報告書ファイル又は整列併合用ファイルの記述項を参照してはならない。
12) FILE指定を書いた場合,データ名1の記述中には,その従属データ項目をも含めて,記述にUSAGE
OBJECT REFERENCE句のあるデータ項目があってはならない。
14.8.33.3 一般規則
1) 書換えファイル結合子は,ファイル名1で参照されるファイル結合子,又はレコード名1に関連する
ファイル名で参照されるファイル結合子とする。
2) 書換えファイル結合子のオープンモードは,入出力両用でなければならない。オープンモードが別の
値であるか又はファイルが開いていないとき,書換えファイル結合子の入出力状態に"47"が設定され
REWRITE文の実行は不成功となる。
3) REWRITE文の実行が成功すると,論理レコードが操作環境に引き渡される。
4) 書換えファイル結合子の呼出し法が順呼出しであるとき,このファイル結合子を参照して直前に実行
された入出力文は,実行が成功したREAD文でなければならない。さもなければ,書換えファイル結
合子の入出力状態に"43"が設定されREWRITE文の実行は不成功となる。REWRITE文が成功すると,
操作環境は,READ文によって呼出しされたレコードを論理的に置換する。
注記 相対ファイル又は順ファイルの論理レコードは,長さがゼロであってもよい。索引ファイル
の論理レコードには,常にレコードキーを含むのに十分な長さがなければならない。
5) REWRITE文の実行の成功によって引き渡された論理レコードは,それ以降はレコード領域中では使
用不能になる。ただし,ファイル名1又はレコード名1に関連するファイル名がSAME RECORD AREA
句にも指定されていれば,この限りでない。その論理レコードは,ファイル名1又はレコード名1に
関連するファイルだけではなく,関連するそのファイルと同じSAME RECORD AREA句に指定された
別のファイルのレコードとしても使用可能である。
6) レコード名1及びFROM指定のあるREWRITE文の実行結果は,次の文をこの順に実行するのと同じ
とする。
a) MOVE文の規則に従った次の文。
MOVE 一意名1 TO レコード名1
又は
MOVE 定数1 TO レコード名1
b) 同じREWRITE文でFROM指定がないもの。
396
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
7) REWRITE文中に指定した表意定数のSPACEは,英数字空白の1文字を指す。
8) FILE指定のあるREWRITE文の実行結果は,次の文をこの順に実行するのと同じとする。
− 第1の文は
MOVE 一意名1 TO 暗黙レコード1
又は
MOVE 定数1 TO 暗黙レコード1
− 第2の文は
REWRITE 暗黙レコード1
ここで,暗黙レコード1とは,ファイル名1のレコード領域を指すものであって,ファイル記述項
に従属するレコード記述項を次のように書いた扱いとする。
a) 一意名1が組込み関数であるとき,組込み関数の返却値と同じ字類・項類・用途・長さをもつ。
b) 一意名1が組込み関数でないとき,一意名1と同じ記述をもつ。
c) 定数1を指定したときは,定数1と同じ字類・項類・用途・長さをもつ。
9) REWRITE文の実行が完了した後,SAME RECORD AREA句の一般規則5) に規定した場合を除けば,
レコード名1の領域の情報は使用不能になるが,一意名1の領域中の情報は使用可能である。
10) 書換えファイル結合子に対してレコード施錠が有効であって,書換え対象として識別されたレコード
を別なファイル結合子が施錠している場合,この動作の結果はRETRY指定の有無によって異なる。
RETRY指定がある場合,そのレコードの書換え試行が更に繰り返されることがある[14.6.8(RETRY
指定)参照]。RETRY指定がない場合,又はRETRY指定による書換えが成功しなかった場合,レコ
ード操作不整合条件が成立する。入出力状態はRETRY指定の規則に従って設定される。
REWRITE文の結果としてレコード操作不整合条件が成立するとき,次のようになる。
a) ファイル位置指示子はそのまま変わらない。
b) 書換えファイル結合子の入出力状態に,レコード操作不整合条件を示す値が設定される。
c) REWRITE文は不成功となる。
11) レコード錠が有効であるとき,REWRITE文の実行開始時か又は成功完了時に,次の動作を行う。
a) 書換えファイル結合子に対して単一レコード施錠の指定があるとき,
1. 置換対象のレコードに関してファイル結合子が保持していたレコード錠は,LOCK指定がない限
り,完了時に解除する。
2. それ以外のレコードに関してファイル結合子が保持していたレコード錠は,開始時に解除する。
b) 書換えファイル結合子に対して複数レコード施錠の指定があり,論理的な置換対象のレコードにレ
コード錠があるとき,WITH NO LOCK指定があり,かつ,論理的な置換対象のレコードをそのフ
ァイル結合子が施錠していた場合にだけ,完了時にそのレコード錠を解除する。
c) WITH LOCK指定があるとき,置換対象のレコードに関するレコード錠を,完了時に設定する。
12) 書換えファイル結合子のファイル位置指示子は,REWRITE文の実行によって影響を受けない。
13) REWRITE文を実行すると,書換えファイル結合子の入出力状態の値が更新される[9.1.12(入出力状
態)参照]。
14) REWRITE文の実行が不成功になると,論理レコード更新は行われず,レコード領域の内容は変化せ
ず,書換えファイル結合子の入出力状態は他の一般規則に示すとおりに更新される。
15) レコード名1を指定したとき,ファイルへ書き出されるバイト数がレコード名1の中のバイト数より
も大きい場合に,レコード名1の終端を越えるバイトの内容は規定されない。
順ファイル
397
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
16) 一意名1のデータ項目,定数1の実行時表現,又はレコード名1のレコードの中のバイト数が,置換
されるレコード中のバイト数と等しくない場合,REWRITE文の実行は不成功となり,書換えファイル
結合子の入出力状態に"44"が設定される。
相対ファイル及び索引ファイル
17) 一意名1のデータ項目,定数1の実行時表現,又はレコード名1のレコードの中のバイト数は,置換
されるレコードの中のバイト数と異なってもよい。
18) REWRITE操作の実行が成功又は不成功になった後の制御の移行は,REWRITE文中の選択可能な
INVALID KEY指定及びNOT INVALID KEY指定の有無によって異なる[9.1.13(無効キー条件)参照]。
19) 定数1の実行時表現のバイト数,一意名1のデータ項目のバイト数,及びレコード名1のレコードの
(FORMAT句によって変更される場合はその後の)バイト数は,ファイル名1に指定したRECORD IS
VARYING句又はレコード名1に関連するファイル名に指定したRECORD IS VARYING句で指定され
た最大バイト数よりも大きくてはならないし,最小バイト数よりも小さくてはならない。これに違反
した場合,REWRITE文の実行は不成功となり,書換えファイル結合子の入出力状態に"44"が設定され
る。
相対ファイル
20) 乱呼出し法又は動的呼出し法で呼出しされるファイルでは,操作環境は,ファイル名1又はレコード
名1に関連するファイル名に指定した相対キーデータ項目で識別されるレコードを論理的に置換する。
キーで指定されるレコードがファイル中にない場合,無効キー条件が成立する。無効キー条件を検出
した場合,REWRITE文の実行は不成功となり,書換えファイル結合子の入出力状態には無効キー条
件"23"が設定される。
索引ファイル
21) 書換えファイル結合子の呼出し法が順呼出しであるとき,置換対象のレコードは主レコードキーの値
で指定される。REWRITE文を実行するとき,置換対象のレコードの主レコードキーの値は,ファイ
ル結合子を用いて最後に読み込んだレコードの主レコードキーの値と等しくなければならない。さも
なければ,REWRITE文の実行は不成功となり,書換えファイル結合子の入出力状態には無効キー条
件"21"が設定される。
22) 書換えファイル結合子の呼出し法が乱呼出し又は動的呼出しであるとき,置換対象のレコードは主レ
コードキーで指定される。その主レコードキーをもつレコードが物理ファイル中に存在しないとき,
REWRITE文の実行は不成功となり,書換えファイル結合子の入出力状態には無効キー条件"23"が設定
される。
23) 副レコードキーをもつレコードに対するREWRITE文の実行では,次のことが起きる。
a) 指定した副レコードキーの値を変えなかった場合,そのキーを参照キーとした場合の呼出し順序は,
そのまま変わらない。
b) 指定した副レコードキーの値を変えた場合,そのキーを参照キーとしてこれ以降にそのレコードを
呼び出す場合の順序は,変わる可能性がある。重複キー値が許される場合,そのレコードの論理的
な位置付けは,重複レコードの組の最後になる。ここで重複レコードの組みは,その副レコードキ
ーの値が,ファイル中の一つ以上のレコード内の同じ副レコードキーの値と,ファイルに対する文
字照合順序において等しいレコードの組みを指す。
注記 物理ファイルを複数のファイル結合子が共用している場合,REWRITE文の完了時点での
重複した副キーの位置付けは,実際には最後にならないかもしれない。というのは,別の
398
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
操作によって別の重複キーが生じているかもしれないからである。
24) レコードキーが等しいか否かの判定は,ファイルに対する文字照合順序に基づいて,比較条件の規則
に従う。無効キー条件は次の状況下で成立する。
a) 書換えファイル結合子が順呼出し法で開かれており,置換対象のレコードの主レコードキーの値が,
そのファイル結合子を介して最後に読み込んだレコードの主レコードキーの値と等しくない場合,
ファイル結合子に関連する入出力状態に"21"が設定される。
b) 書換えファイル結合子が動的呼出し法で又は乱呼出し法で開かれており,置換対象のレコードの主
レコードキーの値が,物理ファイル中に存在するあらゆるレコードの主レコードキーの値と等しく
ない場合,書換えファイル結合子に関連する入出力状態に"23"が設定される。
c) 置換対象レコードの副レコードキーが重複を許さない場合,かつ,その副レコードキーの値が,物
理ファイルにあるレコードの対応する副レコードキーの値と等しい場合,書換えファイル結合子に
関連する入出力状態に"22"が設定される。
無効キー条件を検出した場合,REWRITE文の実行は不成功となり,更新操作は行われず,レコー
ド領域の内容は変化しない。
14.8.34 SEARCH文
SEARCH(表引き)文は,指定した条件を満足する表要素を探索して,関連する指標の値がその表要素
を指すようにする。
14.8.34.1 一般形式
書き方1(逐次検索)
SEARCH 一意名1
VARYING
一意名2
指標名1
[AT END 無条件文1]
WHEN 条件1
無条件文2
NEXT SENTENCE …
[END-SEARCH]
注記 NEXT SENTENCEは旧式の書き方であり,使用しないほうがよい。
書き方2(一括検索)
SEARCH ALL 一意名1 [AT END 無条件文1]
WHEN
データ名1
IS EQUAL TO
IS =
一意名3
定数1
算術式1
条件名1
AND
データ名2
IS EQUAL TO
IS =
一意名4
定数2
算術式2
条件名2
…
無条件文2
NEXT SENTENCE
[END-SEARCH]
注記 NEXT SENTENCEは旧式の書き方であり,使用しないほうがよい。
14.8.34.2 構文規則
399
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
全ての書き方
1) 一意名1は,添字付けも部分参照もしてはならない。一意名1のデータ記述項には,INDEXED指定
をもつOCCURS句がなければならない。
2) END-SEARCH指定を書いた場合,NEXT SENTENCE指定を書いてはならない。
書き方1
3) 一意名2は,用途が指標であるデータ項目又は整数であるデータ項目でなければならない。一意名1
のデータ記述項に指定したOCCURS句のINDEXED指定に書いた最初の又は唯一の指標名で一意名2
を添字付けしてはならない。
4) 条件1は,いかなる条件式であってもよい。その評価は,8.8.4(条件式)による。
書き方2
5) 一意名1に関連するOCCURS句には,KEY指定がなければならない。
6) データ名1及び全てのデータ名2は修飾してもよい。これらは,データ項目を一意参照するために必
要なら添字の組とともに,一意名1に関連する最初の指標名で添字付けしなければならない。これら
のデータ名は,一意名1に関連するOCCURS句のKEY指定中に書いておいたものでなければならな
い。指標名での添字付けの直後に"+"又は"-"を書いてはならない。
7) 参照される条件名は全て,単一の値だけをもつように定義しておかなければならない。これらは,条
件名の一意参照のために必要なら添字の組とともに,一意名1に関連する最初の指標名で添字付けし
なければならない。各々の条件名に関連するデータ名は,一意名1に関連するOCCURS句のKEY指
定中に書いておいたものでなければならない。指標名での添字付けの直後に"+"又は"-"を書いてはな
らない。
8) 一意名3,一意名4,算術式1中の一意名及び算術式2中の一意名は,一意名1に関連するOCCURS
句のKEY指定中に書かれていてはならず,一意名1に関連する最初の指標名で添字付けしてあって
はならない。
9) 一意名1に関連するOCCURS句のKEY指定中に書いたあるデータ名を参照する場合又はそのような
データ名に関連するある条件名を参照する場合は,そのKEY指定中で当該データ名よりも前に書い
たデータ名又はそれに関連する条件名も全て,参照しなければならない。
14.8.34.3 一般規則
全ての書き方
1) SEARCH文は,一意名1に関連する最初の又は唯一の指標の値を自動的に変化させながら,SEARCH
文のWHEN指定中に書かれた条件を検査して,表要素がこれらの条件を満足するか否かを判定する。
WHEN指定中に書かれた各々の添字の評価は,そのWHEN指定の条件を評価するたびに行われる。
書き方1では,この他の指標又はデータ項目を変化させてもよい。一意名1のデータ項目が別のデー
タ項目に従属していて,そのデータ記述項にOCCURS句の指定があるとき,SEARCH文の実行によ
って設定が変化するものは,一意名1に関連する指標(及び,指定があるときは,一意名2のデータ
項目又は指標名1の指標)だけとする。表引き対象である上位の表の反復項目を決めるために用いる
添字は,WHEN指定中に利用者が書く。したがって,該当する各々の添字には,SEARCH文を実行す
る前に,要望する値を設定しておかなければならない。
表引き操作が完了した後,次のいずれか一つが起こる。
a) 表引き操作が以降の一般規則に従って成功した場合,表引き操作は直ちに終了する。表引き操作に
よって変化した指標は,WHEN条件を満足させた出現番号に設定されたままとなる。WHEN指定中
400
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
にNEXT SENTENCE指定があるとき,次に現れる分離符の終止符の直前にあるとみなされる暗黙の
CONTINUE文に制御が移る。WHEN指定中に無条件文2があるとき,無条件文2に制御が移り,
無条件文2中の各文の規則に従って実行が続く。明示的に制御の移行を引き起こす手続き分岐文又
は条件文が実行されれば,その文の規則に従って制御が移る。さもなければ,無条件文2の実行が
完了した後,SEARCH文の終わりに制御が移る。
b) 表引き操作が以降の一般規則に従って不成功となった場合は,次による。
1. AT END指定があるとき,無条件文1に制御が移り,無条件文1中の各文の規則に従って実行が
続く。明示的に制御の移行を引き起こす手続き分岐文又は条件文が実行されれば,その文の規則
に従って制御が移る。さもなければ,無条件文1の実行が完了した後,SEARCH文の終わりに制
御が移る。
2. AT END指定がなく,SEARCH文の実行中にEC-RANGE-SEARCH-INDEX例外状態又は
EC-RANGE-SEARCH-NO-MATCH例外状態になり,該当する宣言手続きがあるとき,その宣言手
続きに制御が移る。その宣言手続きから制御が戻ると,SEARCH文の終わりに制御が移る。
3. AT END指定がなく,検査が有効でないためにいずれの例外状態でもないとき,SEARCH文の終
わりに制御が移る。
2) 各々のWHEN指定に関連する比較は,条件式の規則に従って実行される[8.8.4(条件式)参照]。
書き方1
3) 表引き操作によって変化する指標を,表引き指標(search index)と呼び,次のとおりに決まる。
a) VARYING指定がないとき,表引き指標は一意名1に関連するOCCURS句のINDEXED指定中に書
いた最初の(又は唯一の)指標名の指す指標とする。
b) VARYING 一意名2の指定があるとき,表引き指標は一般規則3) a) と同じとし,次を適用する。
1. 一意名2が指標データ項目を指している場合,表引き指標が増えるのと同時に,データ項目は同
じ量だけ増える。
2. 一意名2が整数データ項目を指している場合,表引き指標が増えるのと同時に,データ項目は値
1だけ増える。
c) VARYING 指標名1の指定があるとき,表引き指標は次の規則に従って異なる。
1. 指標名1が一意名1に関連するOCCURS句のINDEXED指定中に書かれているとき,指標名1
の指す指標を表引き指標とする。
2. 指標名1が一意名1に関連するOCCURS句のINDEXED指定中に書かれていないとき,表引き指
標は一般規則3) a) と同じとする。指標名1の指す指標は,表引き指標が増えるのと同時に,出
現番号一つだけ増える。
表引き操作によって変化するのは,そのデータ項目及び指定した指標だけとする。一意名1に関連
する他の全ての指標は,表引き操作によっては変化しない。
4) 表引き操作は逐次的であり,SEARCH文の実行開始時点における表引き指標の値に対応する出現番号
から始まる。実行開始時点において,表引き指標の内容が,負の数,ゼロ,又は一意名1に指定して
もよい出現番号の最大値よりも大きい値の出現番号に対応する値であるとき,表引き操作は不成功に
なり,EC-RANGE-SEARCH-INDEX例外状態になり,実行は一般規則1) b) に従って進む。一意名1
の出現回数,すなわち,指定してもよい最後の出現番号は,OCCURS句で指定する。SEARCH文の実
行開始時点において,表引き指標の内容である値の対応する出現番号が,一意名1に指定してもよい
最大の出現番号を超えないとき,表引き操作は,指定してある順に条件を評価しながら進む。いずれ
401
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
の条件も満足しなかったとき,表引き指標が出現番号一つだけ増える。この処理は新しい指標の設定
を用いて繰り返される。表引き指標の新しい値に対応する表要素が,指定してもよい出現値の範囲外
になると,表引き操作は不成功となり,EC-RANGE-SEARCH-NO-MATCH例外状態になり,一般規則
1) b) に従って実行が進む。条件の一つの評価を満足すると,表引き操作は成功して,一般規則1) a) に
従って実行が進む。
書き方2
5) SEARCH ALL文の実行を開始する時,次の条件が全て真でなければならない。
a) WHEN指定中に書かれたキーデータ項目の各々の内容が,その表の中では,そのキーデータ項目に
関連するASCENDING(昇順)指定又はDESCENDING(降順)指定に従って並んでいなければな
らない[13.16.36(OCCURS句)参照]。
b) 一意名1が,OCCURS句のあるデータ記述項に一つ以上従属しているとき,一つのWHEN指定の
中で,一意名1に従属する同一のキーデータ項目を参照する複数の条件の評価は,より上位のレベ
ルの表で同じレベルの表の添字の出現番号が全て同じにならなければならない。すなわち,最も外
側のレベル(第1次元)の出現番号は全て等しくなければならず,次のレベル(第2次元)の出現
番号も全て等しくなければならず,… 以下同様にして,最も内側の表の一つ前のレベルまで出現番
号が全て等しくなければならない。
6) 一般規則5) の条件のいずれかを満足しない場合,次による。
a) 表引き指標の設定のうちWHEN指定中に書いた条件を全て満足するものが一つ以上あるときは,次
のいずれかが起きる。
1. 表引き指標の最終設定は,これらの設定のいずれかと等しくなる。しかし,どれと等しいかは規
定されない。一般規則1) a) に従って実行が進む。
2. 表引き指標の最終設定は規定されず,EC-RANGE-SEARCH-NO-MATCH例外状態になり,一般規
則1) b) に従って実行が進む。
これらの選択肢のいずれになるかは規定されない。
b) 表引き指標の設定のうち条件を全て満足するものが一つもないときは,表引き指標の最終設定は規
定されず,EC-RANGE-SEARCH-NO-MATCH例外状態になり,一般規則1) b) に従って実行が進む。
7) 一般規則5) の条件を全て満足し,表引き指標の設定のうちWHEN指定中に書いた条件を全て満足す
るものが一つ以上あるときは,表引き操作が成功となる。表引き指標の最終設定はこれらの設定のい
ずれかと等しくなる。しかし,どれと等しいかは規定されない。
8) 表引き指標は一意名1に関連するOCCURS句のINDEXED指定に書いた最初の(又は唯一の)指標名
の指す指標とする。一意名1に関連する他のあらゆる指標は,表引き操作によって変化しない。
9) 表引き操作は非逐次型でもよい。表引き指標の初期設定は無視される。表引き操作の間,実装者定義
の方法で指標の設定が変化する。設定される値が,表の最後の要素に対応する値を超えることはなく,
表の最初の要素に対応する値未満になることもない。表の長さはOCCURS句の規則による。許容範囲
内の表引き指標のあらゆる設定に対してWHEN指定中に書かれた条件のどれかが不満足であるとき,
表引き指標の最終設定は規定されず,表引き操作は不成功となり,EC-RANGE-SEARCH-NO-MATCH
例外状態になって,一般規則1) b) に従って実行が進む。条件の全てを満足したとき,表引き操作は
成功して,一般規則1) a) に従って進む。
402
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
14.8.35 SET文
SET(設定)文は,次に示す処理の手段を提供する。
− 表要素に関連する指標を設定して,表操作の参照点を確定する。
− 外部スイッチの状態を変える。
− 条件変数の値を変える。
− オブジェクト参照を設定する。
− 画面項目に関連する属性を変更する。
− データ項目のアドレスを,データポインタデータ項目に設定する。
− 基底付き項目のアドレスを設定する。
− プログラムのアドレスを,プログラムポインタデータ項目に設定する。
− 現地特性カテゴリの設定及び退避を行う。
− 直前例外状態を一掃する。
14.8.35.1 一般形式
書き方1(指標設定)
SET
指標名1
一意名1 … TO
算術式1
指標名2
一意名2
書き方2(指標増減)
SET {指標名3} …
UP
DOWN BY 算術式2
書き方3(スイッチ設定)
SET
{呼び名1} … TO
ON
OFF …
書き方4(条件設定)
SET
{条件名1} … TO
TRUE
FALSE …
書き方5(オブジェクト参照設定)
SET {一意名3} … TO
クラス名1
一意名4
書き方6(属性)
SET 画面名1 ATTRIBUTE
UNDERLINE
VIDEO
-
REVERSE
LOWLIGHT
HIGHLIGHT
BLINK
BELL
OFF
ON
…
書き方7(データポインタ設定)
SET
ADDRESS OF データ名1
一意名5
… TO 一意名6
書き方8(プログラムポインタ設定)
403
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
SET {一意名7} … TO 一意名8
書き方9(データポインタ増減)
SET {一意名9} …
UP
DOWN BY 算術式3
書き方10(現地特性設定)
SET LOCALE
LC̲TIME
LC̲NUMERIC
Y
LC̲MONETAR
S
LC̲MESSAGE
LC̲CTYPE
LC̲COLLATE
LC̲ALL
USER-DEFAULT
TO
一意名10
現地特性名1
USER-DEFAULT
SYSTEM-DEFAULT
書き方11(現地特性保存)
SET 一意名11 TO LOCALE
DEFAULT
-
USER
LC̲ALL
書き方12(例外状態の保存)
SET LAST EXCEPTION TO OFF
14.8.35.2 構文規則
書き方1
1) 一意名1は,字類が指標のデータ項目又は整数データ項目でなければならない。
2) 一意名2は,字類が指標のデータ項目でなければならない。
3) 一意名1が指標データ項目であるとき,算術式1を指定してはならない。
4) 一意名1が数字データ項目であるとき,指標名2を指定しなければならない。
書き方3
5) 呼び名1は,状態を変更してもよい外部スイッチに関連付けられていなければならない。SET文で参
照してもよい外部スイッチがどれであるかは,実装者定義とする。
書き方4
6) 条件名1は,条件変数に関連付けられていなければならない。
7) FALSE指定がある場合,条件名1に対するデータ記述項のVALUE句中にFALSE指定がなければなら
ない。
書き方5
8) 一意名3は,字類がオブジェクトで,受取り側項目として指定してもよい項目でなければならない。
9) 一意名4は,オブジェクト参照でなければならない。既定義オブジェクト参照のSUPERを指定して
はならない。
10) 一意名4が指定され,一意名3のデータ項目の記述にインタフェース名がありインタフェースint-1を
指している場合,一意名4のデータ項目は,次のいずれかでなければならない。
a) オブジェクト参照で,その記述中にあるインタフェース名がint-1又はその下位インタフェースを指
しているもの。
404
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
b) オブジェクト参照で,その記述中にクラス名があり,次の規則に従うもの。
1. 記述にFACTORY指定があるとき,指定クラスのファクトリがint-1を実装していなければならな
い。
2. 記述にFACTORY指定がないとき,指定クラスのオブジェクトがint-1を実装していなければなら
ない。
c) オブジェクト参照で,その記述中にACTIVE-CLASS指定があり,次の規則に従うもの。
1. 記述にFACTORY指定があるとき,一意名4のデータ項目が中に含まれているクラスのファクト
リオブジェクトがint-1を実装していなければならない。
2. 記述にFACTORY指定がないとき,一意名4のデータ項目が中に含まれているクラスのオブジェ
クトがint-1を実装していなければならない。
d) 既定義オブジェクト参照のSELFであって,次の規則に従うもの。
1. SET文がファクトリ定義のメソッド中に含まれているとき,そのファクトリ定義の記述に,int-1
を参照するIMPLEMENTS句がなければならない。
2. SET文がオブジェクト定義のメソッドに含まれているとき,そのインスタンス定義の記述に,int-1
を参照するIMPLEMENTS句がなければならない。
e) 既定義オブジェクト参照のNULL。
11) クラス名1が指定され,一意名3のデータ項目の記述にインタフェース名がありインタフェースint-1
を指している場合,クラス名1のファクトリオブジェクト記述に,int-1を参照するIMPLEMENTS句
がなければならない。
12) 一意名4が指定され,一意名3のデータ項目の記述にクラス名がある場合,一意名4のデータ項目は,
次のいずれかでなければならない。
a) オブジェクト参照で,その記述中にクラス名があり,次の規則に従うもの。
1. 一意名3のデータ項目の記述にONLY指定があるとき,一意名4のデータ項目の記述にもONLY
指定がなければならず,更に一意名4のデータ項目の記述に指定したクラス名は,一意名3のデ
ータ項目の記述に指定したクラス名と同じでなければならない。
2. 一意名3のデータ項目の記述にONLY指定がないとき,一意名4のデータ項目の記述に指定した
クラス名は,一意名3のデータ項目の記述に指定したのと同じクラス又はその下位クラスでなけ
ればならない。
3. FACTORY指定の有無は,一意名3のデータ項目の記述と同じでなければならない。
b) オブジェクト参照で,その記述中にACTIVE-CLASS指定があり,次の規則に従うもの。
1. 一意名3のデータ項目の記述にONLY指定があってはならない。
2. 一意名4のデータ項目が中に含まれているクラスは,一意名3のデータ項目の記述に指定したの
と同じクラス又はその下位クラスでなければならない。
3. FACTORY指定の有無は,一意名3のデータ項目の記述と同じでなければならない。
c) 既定義オブジェクト参照のSELFであって,次の規則に従うもの。
1. 一意名3のデータ項目の記述にONLY指定があってはならない。
2. SET文を含んでいるクラスは,一意名3のデータ項目の記述に指定したのと同じクラス又はその
下位クラスでなければならない。
3. 一意名3のデータ項目の記述にFACTORY指定がないとき,SET文を含んでいるメソッドは,ク
ラスのインスタンス定義中に定義されていなければならない。
405
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4. 一意名3のデータ項目の記述にFACTORY指定があるとき,SET文を含んでいるメソッドは,ク
ラスのファクトリ定義中に定義されていなければならない。
d) 既定義オブジェクト参照のNULL。
13) クラス名1が指定され,一意名3のデータ項目の記述にクラス名がある場合,そのデータ項目の記述
にはFACTORY指定もあって,かつ,次の規則に従わなければならない。
a) 一意名3のデータ項目の記述にONLY指定があるとき,クラス名1は,一意名3のデータ項目の記
述にあるクラス名でなければならない。
b) さもなければ,クラス名1は,一意名3のデータ項目の記述にあるのと同じクラスか又はその下位
クラスでなければならない。
14) 一意名3のデータ項目の記述にACTIVE-CLASS指定がある場合,一意名4のデータ項目は,次のい
ずれかでなければならない。
a) オブジェクト参照で,記述にACTIVE-CLASS指定があり,FACTORY指定の有無は,一意名3のデ
ータ項目と同じであるもの。
b) 既定義オブジェクト参照のSELFであって,次の規則に従うもの。
1. 一意名3のデータ項目の記述にFACTORY指定がないとき,SET文を含んでいるメソッドはクラ
スのインスタンス定義中に定義されていなければならない。
2. 一意名3のデータ項目の記述にFACTORY指定があるとき,SET文を含んでいるメソッドは,ク
ラスのファクトリ定義中に定義されていなければならない。
c) 既定義オブジェクト参照のNULL。
書き方6
15) 特定の画面属性を2回以上,同一のSET文中に指定してはならない。
16) HIGHLIGHTとLOWLIGHTとの両方を同一のSET文中に指定してはならない。
書き方7
17) 一意名5は,項類がデータポインタのデータ項目でなければならない。一意名6は,項類がデータポ
インタでなければならない。
18) データ名1は,基底付き項目でなければならない。
19) 一意名5が制限付きデータポインタであるとき,一意名6は既定義アドレスNULLであるか又は同じ
型への制限付きデータポインタでなければならない。データ名1が強い型付けの集団項目又は制限付
きポインタであるとき,一意名6はデータ名1の型への制限付きデータポインタでなければならない。
一意名6が制限付きデータポインタであるときは,一意名5が同じ型への制限付きデータポインタ
であるか,又は一意名6の制限付きと同じ型へデータ名1が型付けされているか,いずれかでなけれ
ばならない。
書き方8
20) 一意名7は,項類がプログラムポインタであるデータ項目でなければならない。
一意名8は,項類がプログラムポインタでなければならない。
21) 一意名7が制限付きプログラムポインタであるとき,一意名8は既定義アドレスのNULLであるか,
又は制限付きプログラムポインタで,一意名7と一意名8とに関連するプログラム原型は同じ呼出し
情報をもたなければならない。
書き方9
22) 一意名9は,項類がデータポインタでなければならない。
406
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
23) 一意名9は,STRONG指定付きで記述された型へ制限されているデータポインタであってはならない。
書き方10
24) USER-DEFAULTを第1作用対象に指定した場合,TO指定には一意名10又は現地特性名1を指定し
なければならない。
25) 現地特性名1は,特殊名段落のLOCALE指定で書かなければならない。
26) 一意名10は,項類がデータポインタの基本データ項目でなければならない。
書き方11
27) 一意名11は,項類がデータポインタの基本データ項目でなければならない。
14.8.35.3 一般規則
書き方1,書き方2
1) ある表に指標名を関連付けるとは,その表に対するOCCURS句のINDEXED BY指定に,その指標名
を書くことをいう。
書き方1
2) 繰り返し現れる指標名1又は一意名1の各々に対して次の処理を行う。繰返しのたびに用いられる送
出し側作用対象の値は,この文の実行開始時点の値である。一意名1のデータ項目の項目識別は,各々
のデータ項目の値が変更される直前に行われる。
a) 指標名1の指定があるときは,次による。
1. 算術式1の指定がある場合は,算術式1を評価することによって,添字を決める[8.4.1.2(添字)
参照]。この添字の評価が成功すれば,その添字と出現番号が対応している表要素を指す値が,指
標名1に設定される。さもなければ,SET文の実行は不成功となって,受取り側作用対象の内容
は変わらない。
2. 一意名2の指定がある場合は,一意名2のデータ項目の内容が,変換なしに指標名1の指標に設
定される。
3. 指標名2の指定がある場合は,次による。
a. 指標名2の関連する表が指標名1と同じであるとき,指標名2の指標の内容が,変換なしに指
標名1の指標に設定される。
b. さもなければ,指標名2の指す表要素と出現番号が対応している表要素を指す値が,指標名1
に設定される。
b) 一意名1が指標データ項目であるとき,指標名2の内容又は一意名2のデータ項目の内容が,変換
なしに一意名1のデータ項目に設定される。
c) 一意名1が数字データ項目であるとき,この項目には指標名2の指す表要素の出現番号が設定され
る。
書き方2
3) 繰り返し現れる指標名3の各々に対して次の処理を行う。繰り返しのたびに用いられる算術式2の値
は,この文の実行開始時点の値である。
a) 算術式2の評価が整数値にならなければ,EC-BOUND-SUBSCRIPT例外状態になりSET文の実行は
不成功となり受取り側作用対象の内容は変わらない。
b) 指標名3の内容を算術式2の評価結果分だけ増やすか(UP BY)又は減らすか(DOWN BY)した
値の表す出現番号が,指標名3の関連する表に対する添字として妥当である[8.4.1.2(添字)の制
限事項を参照。]とき,添字に対応する出現番号をもつ表要素を指すような値が,指標名3に設定さ
407
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
れる。さもなければ,EC-BOUND-SUBSCRIPT例外状態になり,SET文の実行は不成功となり,受
取り側作用対象の内容は変わらない。
書き方3
4) 指定された呼び名1に関連する外部スイッチの状態を変更し,そのスイッチに関連する条件名を評価
した結果の真理値が,ON指定の場合はオン状態に,OFF指定の場合はオフ状態になるようにする
[8.8.4.1.5(スイッチ状態条件)参照]。
書き方4
5) TRUE指定がある場合,条件名1に関連するVALUE句の定数が,VALUE句の規則に従って条件変数
に設定される。ただし,条件変数が英数字,ビット又は各国文字の集団項目であって従属する表をも
つ場合,その長さの判定は13.16.36(OCCURS句)による。条件変数の長さがゼロになるときSET文
は条件変数を変更せずに放置する。VALUE句に複数の定数の指定がある場合,そのVALUE句に指定
した最初の定数の値が条件変数に設定される。
6) FALSE指定がある場合,条件名1に関連するVALUE句のFALSE指定の定数が,VALUE句の規則に
従って条件変数に代入される。ただし,条件変数が英数字,ビット又は各国文字の集団項目であって
従属する表をもつ場合,その長さの判定は13.16.36(OCCURS句)による。条件変数の長さがゼロに
なるときSET文は条件変数を変更せずに放置する。
7) 複数の条件名を指定した場合,そのSET文中に指定したのと同じ順序で,各条件名1に対して別々の
SET文を書いたのと同じ結果となる。
書き方5
8) 一意名4が指定された場合,一意名4で識別されるオブジェクトを指す参照が,一意名3のそれぞれ
のデータ項目へ,指定した順に代入される。
9) クラス名1が指定された場合,クラス名1で識別されるクラスのファクトリオブジェクトを指す参照
が,一意名3のそれぞれのデータ項目へ,指定した順に代入される。
書き方6
10) SET文を実行したとき,画面名1の画面項目の指定された属性が,指定に従って設定又は解除される。
画面名1をACCEPT画面文又はDISPLAY画面文中で参照するとき,その属性の最新の設定状態が用
いられる。
書き方7
11) 一意名5を指定すると,一意名6で識別されるアドレスが,一意名5の各々のデータ項目へ,指定し
た順に格納される。一意名5のデータ項目の項目識別は,各々のデータ項目の値が変更される直前に
行われる。
12) データ名1を指定すると,一意名6で識別されるアドレスが,データ名1の各々の基底付き項目へ,
指定した順に代入される。
書き方8
13) 一意名8で識別されるアドレスが,一意名7の各々のデータ項目へ,指定した順に格納される。一意
名7のデータ項目の項目識別は,各々のデータ項目の値が変更される直前に行われる。
14) プログラムポインタにアドレスが格納されるプログラムに関するSET文の効果は,実装者定義とす
る。
書き方9
15) 一意名9の内容が既定義アドレスNULLであるとき,EC-DATA-PTR-NULL例外状態になる。
408
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
16) 算術式3の評価が整数でないときは,EC-SIZE-ADDRESS例外状態になり,SET文の実行は不成功と
なり,一意名9の内容は変更されない。
17) 各々の一意名9の内容のアドレスは,指定した順に,算術式3で指定されたバイト数だけ増加(UP BY)
又は減少(DOWN BY)する。一意名9のデータ項目の項目識別は,各々のデータ項目の値が変更さ
れる直前に行われる。この新たなアドレスが,データポインタデータ項目に対して実装者が許してい
る値の範囲を外れたとき,EC-RANGE-PTR例外状態になって一意名9の値は変更されない。
書き方10
18) 一意名10のポインタデータ項目の内容は,保存済みの現地特性でなければならない。さもなければ
EC-LOCALE-INVALID-PTR例外状態になってSET文は不成功になる。
COBOLの規則中で“保存済みの現地特性”又は“保存済みの現地特性情報”と書いたときそれは,
現地特性設定の形式のSET文を用いて確立される現地特性及びそのカテゴリの情報を指す。
19) USER-DEFAULTを語LOCALEの直後に指定したとき,利用者既定解釈現地特性には第2作用対象で
識別される現地特性が設定される。
20) 現地特性のカテゴリ名を語LOCALEの直後に指定したときは,次による。
a) TO指定に現地特性名1を書いたとき又は一意名10を書いたとき,指定したカテゴリに対する実行
時の現在有効現地特性には,現地特性名1のカテゴリが設定されるか,又は一意名10のデータ項目
の内容で識別される保存済み現地特性のカテゴリが設定される。
b) TO指定にUSER-DEFAULTを書くと,指定したカテゴリに対する実行時の現在有効現地特性に,利
用者既定解釈現地特性のカテゴリが設定される。
c) TO指定にSYSTEM-DEFAULTを書くと,指定したカテゴリに対する実行時の現在有効現地特性に,
システム既定解釈現地特性のカテゴリが設定される。
21) 現地特性名1の現地特性が使用可能でない場合は,EC-LOCALE-MISSING例外状態になる。
22) 指定された現地特性のカテゴリは,実行単位の持続期間中又はそのカテゴリを指定した別のSET文が
処理されるまで,有効であり続ける。
書き方11
23) LC̲ALLを書いたとき,現在有効現地特性が保存される。その保存済み現地特性への参照が,一意名
11のポインタデータ項目に設定される。
24) USER-DEFAULTを書いたとき,利用者既定解釈現地特性が保存される。その保存済み現地特性への
参照が,一意名11のポインタデータ項目に設定される。
書き方12
25) 既定義オブジェクト参照EXCEPTION-OBJECTにナル値が設定され,直前例外状態は,例外が一つも
ないことを示すように設定される。
14.8.36 SORT文
SORT(整列)文は,レコード又は表要素の組を,利用者が指定した順序にそろえる。
14.8.36.1 一般形式
書き方1(ファイル)
SORT ファイル名1
ON
ASCENDING
DESCENDING KEY {データ名1} … …
[WITH DUPLICATES IN ORDER]
409
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
COLLATING SEQUENCE
IS 符号系名1 [符号系名2]
FOR ALPHANUMERIC IS 符号系名1
FOR NATIONAL IS 符号系名2
INPUT PROCEDURE IS 手続き名1
THROUGH
THRU
手続き名2
USING {ファイル名2} …
OUTPUT PROCEDURE IS 手続き名3
THROUGH
THRU
手続き名4
GIVING {ファイル名3} …
書き方2(表)
SORT データ名2
ON
ASCENDING
DESCENDING KEY {データ名1} … …
[WITH DUPLICATES IN ORDER]
COLLATING SEQUENCE
IS 符号系名1 [符号系名2]
FOR ALPHANUMERIC IS 符号系名1
FOR NATIONAL IS 符号系名2
14.8.36.2 構文規則
全ての書き方
1) SORT文は手続き部の中のどこに現れてもよい。ただし,書き方1のSORT文は宣言部分の中に現れ
てはならない。
2) 符号系名1は,英数字照合順序を定義する符号系でなければならない。
3) 符号系名2は,各国文字照合順序を定義する符号系でなければならない。
書き方1
4) ファイル名1は,データ部の整列併合用ファイル記述項で記述しておかなければならない。
5) USING指定があり,ファイル名1のファイル記述項が可変長レコードを記述している場合,ファイル
名2のファイル記述項には,ファイル名1に対して記述された最小レコードよりも小さいレコード又
は最大レコードよりも大きいレコードを記述してはならない。ファイル名1のファイル記述項が固定
長レコードを記述している場合,ファイル名2のファイル記述項に,ファイル名1に対して記述され
たレコードよりも大きいレコードを記述してはならない。
6) データ名1は,キー項目とする。これは次の規則に従う。
a) キー項目は,ファイル名1に関連するレコード中で記述しなければならない。
b) キー項目は,修飾してもよい。
c) キー項目は,字類がブール,オブジェクト又はポインタであってはならない。
d) キー項目は,可変長データ項目であってはならない。
e) ファイル名1に二つ以上のレコード記述がある場合,キー項目は,唯一のレコード記述中だけで記
述しなければならない。あるレコード記述項中の,キー項目で参照されるのと同じバイト位置が,
そのファイルの全てのレコードのキーとみなされる。
f)
キー項目は,OCCURS句のある記述項又はそれに従属している記述項で記述してはならない。
g) ファイル名1のファイルが可変長レコードを含む場合は,全てのキー項目が,レコードの先頭xバ
イト以内に含まれていなければならない。ここでxは,ファイル名1のファイルに対して指定され
410
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
た最小レコードの大きさのバイト数である。
7) 語THRUと語THROUGHは,同義とする。
8) ファイル名2及びファイル名3は,報告書ファイル用でも整列併合用SD項でもないファイル記述項
中に記述しなければならない。
9) ファイル名3が索引ファイルである場合,データ名1の最初の指定は,ASCENDING指定に関連付け
なければならない。データ名1のデータ項目は,そのファイルのレコード内で主レコードキーと同じ
バイト位置から始まり同じバイト数を占めていなければならない。
10) 同じSORT文に指定した一対のファイル名を,同じSAME SORT AREA又はSAME SORT-MERGE
AREA句に指定してはならない。GIVING指定に関連するファイル名を同じSAME AREA句に指定し
てはならない。
11) GIVING指定が書かれており,ファイル名3のファイル記述項が可変長レコードを記述している場合,
ファイル名1のファイル記述項には,ファイル名3に対して記述された最小レコードより小さいレコ
ード又は最大レコードより大きいレコードを記述してはならない。ファイル名3のファイル記述項が
固定長レコードを記述している場合,ファイル名1のファイル記述項は,ファイル名3に対して記述
されたレコードより大きいレコードを記述してはならない。
12) ファイル名2が相対ファイル又は索引ファイルを参照しているとき,その呼出し法は順呼出し又は動
的呼出しでなければならない。
書き方2
13) データ名2は修飾してもよい。そのデータ記述項にはOCCURS句がなければならない。データ名2
が1レベル以上のOCCURS句の制御下にあるとき,全てのレベルに添字の指定がなければならず,最
右端の添字は語ALLでなければならない。
14) データ名1は,キー項目とする。これは,次の規則に従う。
a) キー項目は,データ名2のデータ項目と同じであるか,又はその従属項目でなければならない。
b) キー項目は,修飾してもよい。
c) キー項目は,字類がブール,オブジェクト又はポインタであってはならない。
d) キー項目は,可変長データ項目であってはならない。
e) キー項目がデータ名2の従属項目である場合,その記述にOCCURS句があってはならず,OCCURS
句がありデータ名2に従属している別な記述項に従属していてはならない。
15) KEY指定は,データ名2の表の記述にKEY指定がある場合に限り,省略してもよい。
14.8.36.3 一般規則
全ての書き方
1) 語ASCENDING及び語DESCENDINGは,もう一つ別のASCENDINGか又はDESCENDINGが現れる
まで,繰り返し現れる全てのデータ名1に対して次々と適用される。
2) データ名1の指定によって参照されるデータ項目はキーデータ項目であって,整列操作を行った後に
ファイル名1のファイルからレコードを引き取る順序又は表の要素を格納する順序を決定する。キー
の強さの順は,ASCENDING / DESCENDING KEY指定中での区切り方とは関係なく,SORT文の中に
左から右へと並べて指定した順序とする。
3) DUPLICATES指定がある場合,あるレコード又は表要素に関連する全てのキーデータ項目の内容 が,
他のレコード又は表要素に関連する対応するキーデータ項目の内容と等しいとき,これらのレコード
を引き取る順序又はこれらの表要素の内容の相対順序は,次による。
411
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
a) 関連する入力ファイルをSORT文中に指定した順序。一つの入力ファイル内ではそのファイルから
レコードを呼び出す順序。
b) 入力手続きの指定があるとき,これらのレコードを入力手続きで引き渡した順序。
c) 整列が行われる前の,これらの表要素の内容の相対順序。
4) DUPLICATES指定がない場合,あるレコード又は表要素に関連する全てのキーデータ項目の内容 が,
他のレコード又は表要素に関連する対応するキーデータ項目の内容と等しいとき,これらのレコード
を引き取る順序又はこれらの表要素の内容の相対順序は,規定されない。
5) 字類が英字及び英数字であるキーデータ項目の比較に用いる英数字照合順序,並びに,字類が各国文
字であるキーデータ項目の比較に用いる各国文字照合順序は,SORT文の実行開始時,次の優先順位
に従って,それぞれ別々に決まる。
a) 第一に,このSORT文中にCOLLATING SEQUENCE指定がある場合,それによって確立する文字
照合順序。符号系名1に関連する文字照合順序は,字類が英字及び英数字であるキーデータ項目に
適用する。符号系名2に関連する文字照合順序は,字類が各国文字であるキーデータ項目に適用す
る。
b) 第二に,プログラム文字照合順序で決まる文字照合順序。
書き方1
6) ファイル名1のファイルが固定長レコードだけを含んでいて,ファイル名2のファイル中のレコード
が,その固定長より少ない文字位置を含んでいる場合,そのレコードがファイル名1のファイルへ引
き渡されるとき,レコードの最終文字のすぐ右の文字位置からその固定長に達するまで,次のとおり
空白詰めが行われる。
a) ファイル名2のファイルに関連するレコード記述項が唯一で,そのレコード記述が次のいずれかの
とき,レコードの空白詰めには各国文字の空白を用いる。
− 各国文字データ項目である。
− 単一の基本項目で用途はNATIONALであり,項類は数字,数字編集又はブールである。
b) ファイル名2のファイルに関連するレコード記述項が複数で,かつ,その記述にSELECT WHEN句
が含まれているとき,SELECT WHEN句の規則を適用してレコード記述を選択する。そのレコード
記述が次のいずれかのとき,レコードの空白詰めには各国文字の空白を用いる。
− 各国文字データ項目である。
− 単一の基本項目で用途はNATIONALであり,項類は数字,数字編集又はブールである。
c) さもなければ,レコードの空白詰めには英数字の空白を用いる。
7) ファイル名1のファイルから二つのレコードを引き取る相対順序を決定するのには,対応し合うキー
データ項目の内容が,比較条件における作用対象の比較の規則に従って比較される。この比較は最も
強いキーデータ項目から始まる。
a) 対応し合うキーデータ項目の内容が異なって,そのキーがASCENDING 指定に関連している場合,
より低い値のキーデータ項目をもつレコードのほうが先に引き取られる。
b) 対応し合うキーデータ項目の内容が異なって,そのキーがDESCENDING指定に関連している場合,
より高い値のキーデータ項目をもつレコードのほうが先に引き取られる。
c) 対応し合うキーデータ項目の内容が等しい場合,その次に強いキーデータ項目の内容に関して判定
が行われる。
8) SORT文の実行は,次のとおりに3段階に分かれる。
412
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
a) ファイル名1のファイルでレコードを使用可能にする。INPUT PROCEDUREの指定がある場合,入
力手続き中のRELEASE文の実行でレコードを使用可能にする。USINGの指定がある場合,暗黙の
READ文とRELEASE文とがレコードを使用可能にする。この段階の開始時に,ファイル名2のフ
ァイルが開かれた状態である場合,EC-SORT-MERGE-FILE-OPEN例外状態になって,SORT文の実
行結果は規定されない。この段階の終了時に,ファイル名2のファイルは開かれた状態ではない。
b) ファイル名1のファイルを整列する。この段階では,ファイル名2及びファイル名3のファイルの
処理は行わない。
c) ファイル名1のファイルのレコードを,整列した順序で使用可能にする。整列済みのレコードは,
ファイル名3のファイルに書き込まれるか,又はRETURN文の実行によって出力手続き中で使用可
能になる。この段階の開始時に,ファイル名3のファイルが開かれた状態である場合,
EC-SORT-MERGE-FILE-OPEN例外状態になって,SORT文の実行した結果は規定されない。この段
階の終了時に,ファイル名3のファイルは開かれた状態ではない。
9) 入力手続きは,RELEASE文によって整列機構で使用可能にするレコードを作成するために必要な任
意の手続きから構成してもよい。その範囲には,その入力手続きの範囲内の文の実行の結果として実
行される宣言手続き中の全ての文だけではなく,その入力手続きの範囲内の制御が移った結果として
実行される全ての文が含まれる。入力手続きの範囲内でMERGE文,RETURN文又は書き方1のSORT
文を実行してはならない。この規則に違反した場合,EC-SORT-MERGE-ACTIVE例外状態になって,
SORT文の実行結果は規定されない[14.5.3(制御の明示移行及び暗黙移行)参照]。
10) 入力手続きがある場合,SORT文がファイル名1のファイルを整列する前に,入力手続きへと制御が
渡る。コンパイラは,入力手続きの最後の文の後に復帰機構を挿入する。この復帰機構に制御が渡る
と,ファイル名1のファイルに渡されたレコードが整列される。
11) USING指定がある場合,ファイル名2のファイルの全てのレコードはファイル名1のファイルに移さ
れる。ファイル名2の各々のファイルに対して,SORT文の実行によって次の動作が行われる。
a) ファイルの処理の開始。このファイルに対するファイル管理記述項にSHARING ALL句がある場合,
開始動作は,INPUT指定及びSHARING WITH READ ONLY指定のあるOPEN文を実行したのと同
様に行われる。さもなければ,開始動作は,INPUT指定のあるSHARING指定のないOPEN文を実
行したのと同様に行われる。SHARING指定がないときは,ファイル名2のファイル結合子に対す
るファイル管理記述項にSHARING句があれば,それで共用モードが完全に決まることを意味する。
この暗黙のOPEN文の結果として非致命的な例外状態であり,該当USE手続きがあってそれが通常
完了するか,又は該当USE手続きがないとき,SORT文は例外状態でなかった場合と同様に続行す
る。ファイル名1に対するOPEN文は成功する。
b) 論理レコードの読込みと整列操作への引渡し。各々のレコードを読み込む動作は,あたかもNEXT
指定,IGNORING LOCK指定及びAT END指定のあるREAD文を実行したのと同様に行われる。フ
ァイル名1に対するファイル終了条件が成立した場合,そのファイルに対する処理は終了する。フ
ァイル名1のファイルが可変長レコードをもつと記述してある場合,ファイル名1に引き渡される
レコードの大きさは,ファイル名2からそのレコードを読み込んだときの大きさであり,ファイル
名1の整列併合用ファイル記述項中のRECORD IS VARYING句又はOCCURS句のDEPENDING ON
指定のデータ項目の内容には関係しない。ファイル名2のファイルから読み込んだレコードの大き
さが,ファイル名1のファイル記述項で許される最大のレコードよりも大きい場合,
EC-SORT-MERGE-RELEASE例外状態になって,SORT文の実行は終了する。ファイル名1が可変
413
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
長レコードと指定され,ファイル名2のファイルから読み込まれたレコードの大きさが,ファイル
名1のファイル記述項で許される最小のレコードよりも小さい場合,EC-SORT-MERGE-RELEASE
例外状態になって,SORT文の実行は終了する。致命的な例外状態がファイル名1に対して成立す
ると,SORTは終了する。
c) ファイルの処理の終了。この動作は選択可能指定のないCLOSE文を実行したのと同様に行われる。
この終了動作が行われる時点は,ファイル名1のファイルをSORT文が整列するよりも前である。
相対ファイルでは,ファイル名2をGIVING指定に書かなければ,SORT文の実行後,ファイル名
2に関連する相対キーデータ項目の内容は,規定されない。
これらの暗黙の機能の動作中に,関連するUSE手続きが実行されることがある。しかしこのような
USE手続きの実行が,ファイル名2のファイルを操作するか又はファイル名2に関連するレコード領
域を参照するような文を,実行してはならない。
SORT文が完了した後,ファイル名2のファイル記述項にあるRECORD IS VARYING句の
DEPENDING ON指定のデータ項目の値は,規定されない。
12) 出力手続きは,ファイル名1のファイルから,RETURN文によって整列した順に一つずつ使用可能と
なるレコードの処理に必要な任意の手続きを,どのように構成してもよい。その範囲には,出力手続
きの範囲内の文の実行の結果として実行される宣言手続き中の全ての文だけでなく,出力手続きの範
囲内の制御が移った結果として実行される全ての文が含まれる。出力手続きの範囲内でMERGE文,
RELEASE文又は書き方1のSORT文を実行してはならない[14.5.3(制御の明示移行及び暗黙移行)
参照]。この規則に違反した場合,EC-SORT-MERGE-ACTIVE例外状態になり,SORT文の実行結果は
規定されない。
13) 出力手続きがある場合,SORT文がファイル名1のファイルを整列した後に,出力手続きへと制御が
移る。コンパイラは出力手続きの最後の文の後に復帰機構を挿入する。この復帰機構に制御が渡ると,
この機構は整列処理を終了させて,SORT文の後の次に実行可能な文に制御を渡す。出力手続きに制
御が移ったときは,整列処理で次に引き取られるレコードが確立されている。出力手続き中の
RETURN文によって次のレコードが引き取られる。
注記 ここでいう復帰機構(return mechanism)とは,出力手続きの末尾から制御を移すものであっ
て,RETURN文に関連するものではない。
14) GIVING指定がある場合,SORT文に対する暗黙の出力手続きがあるのと同様に,全ての整列済みレ
コードがファイル名3のファイルに書き出される。ファイル名3の各ファイルに対して,SORT文の
実行によって次の動作が行われる。
a) ファイルの処理の開始。この動作は,OUTPUT指定及びSHARING WITH NO OTHER指定のある
OPEN文を実行したのと同様に行われる。この開始動作が行われる時点は,入力手続きの実行終了
後である。
b) 整列済みの論理レコードの引取りとファイルへの書出し。各レコードは,選択可能指定のない
WRITE文を実行するのと同様に書き出される。ファイル名3のファイルが可変長レコードをもつと
記述されている場合,ファイル名3に書き出されるレコードの大きさは,ファイル名1からそのレ
コードが読み込まれたときの大きさであり,ファイル名3のファイル記述項に指定したRECORD IS
VARYING句又はOCCURS句の,DEPENDING ON指定のデータ項目の内容には関係しない。
相対ファイルでは,相対キーデータ項目に,最初のレコード引取りで値1が設定され,2番目の
レコード引取りで値2が設定され,以下同様となる。SORT文の実行終了後,相対キーデータ項目
414
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
の内容は,そのファイルに引き取られた最後のレコードを示す。
c) ファイルの処理の終了。この動作は選択可能指定のないCLOSE文を実行したのと同様に行われる。
これらの暗黙の機能の動作中に,関連するUSE手続きが実行されることがある。しかしこのような
USE手続きの実行が,ファイル名3のファイルを操作するか又はファイル名3に関連するレコード領
域を参照するような文を,実行してはならない。外部で定義したファイルの区域を越えて書き出そう
とすると最初の試みで,ファイル名3のファイル結合子に関連するUSE手続きがあるときは,その
USE手続きが実行される。そのUSE手続きが通常完了した場合,又はそのようなUSE手続きがない
場合,ファイルの処理は一般規則14) c) に従って終了する。暗黙のOPENの結果としてファイルの開
始動作中にファイル名3に対して致命的な例外状態がある場合,SORTは終了する。暗黙のOPEN文
の結果としてファイルの開始動作中にファイル名3に対し非致命的な例外状態があり,該当USE手続
きがあって通常完了するか,又は該当USE手続きがない場合,SORT文は続行する。
GIVING指定のあるSORT文が完了した後に,ファイル名1の整列併合用ファイル記述項にある
RECORD IS VARYING句のDEPENDING ON指定のデータ項目の値は,規定されない。
15) ファイル名3のファイルが固定長レコードだけを含んでいて,ファイル名1のファイル中のレコード
が,その固定長より少ない文字位置を含んでいる場合,そのレコードがファイル名3のファイルへ引
き取られるとき,レコードの最終文字のすぐ右の文字位置からその固定長に達するまで,次のとおり
空白詰めが行われる。
a) ファイル名3のファイルに関連するレコード記述項が唯一で,そのレコード記述が次のいずれかの
とき,レコードの空白詰めには各国文字の空白を用いる。
− 各国文字データ項目である。
− 単一の基本項目で用途はNATIONALであり,項類は数字,数字編集又はブールである。
b) ファイル名3のファイルに関連するレコード記述項が複数で,かつ,その記述にSELECT WHEN句
が含まれているとき,SELECT WHEN句の規則を適用してレコード記述を選択する。そのレコード
記述が次のいずれかのとき,レコードの空白詰めには各国文字の空白を用いる。
− 各国文字データ項目である。
− 単一の基本項目で用途はNATIONALであり,項類は数字,数字編集又はブールである。
c) さもなければ,レコードの空白詰めには英数字の空白を用いる。
16) 書き方1のSORT文が活性状態である間に呼び出されたUSE手続きが通常完了しなければ,そのSORT
文は終了する。
書き方2
17) このSORT文は,データ名2の表を整列して整列済みの表をデータ名2の中に格納する。整列の順序
は,ASCENDING又はDESCENDINGの指定があればそれで決まる順序とし,さもなければデータ名
2に関連するOCCURS句のKEY指定によって決まる順序とする。
18) 整列後に表要素を格納する相対順序を決めるため,対応し合うキーデータ項目の内容を,比較条件に
おける作用対象の比較の規則に従って比較する。この比較は最も強いキーデータ項目から始まる。
a) 対応し合うキーデータ項目の内容が異なって,そのキーがASCENDING 指定に関連している場合,
より低い値のキーデータ項目をもつ表要素のほうが低い出現番号をもつ。
b) 対応し合うキーデータ項目の内容が異なって,そのキーがDESCENDING指定に関連している場合,
より高い値のキーデータ項目をもつ表要素のほうが低い出現番号をもつ。
c) 対応し合うキーデータ項目の内容が等しい場合,その次に強いキーデータ項目の内容に基づいて決
415
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
定を行う。
19) データ名2の表の要素の出現回数は,OCCURS句の規則によって決まる。
20) KEY指定がない場合の順序は,データ名2の表のデータ記述項のKEY指定によって決まる。
21) KEY指定がある場合,その指定はデータ名2の表のデータ記述項にKEY指定があってもそれを上書
きする。
22) データ名1を省略した場合,データ名2のデータ項目をキーデータ項目とする。
23) データ名2の表の整列済みの表要素は,データ名2の表の中に格納される。
14.8.37 START文
START(位置決め)文は,以降の順次レコード取出しのために,ファイル中の論理的な位置付けの基準
点を提供する。
14.8.37.1 一般形式
START ファイル名1
FIRST
KEY 比較演算子
データ名1
レコードキー名1 [WITH LENGTH 算術式1]
LAST
INVALID KEY 無条件文1
NOT INVALID KEY 無条件文2
[END-START]
14.8.37.2 構文規則
1) ファイル名1のファイルの呼出し法は,順呼出し又は動的呼出しでなければならない。
2) ファイル名1のファイルが順編成であるとき,FIRST指定又はLAST指定を書かなければならない。
3) KEY指定中の“比較演算子”は,8.8.4.1.1(比較条件)の一般比較形式の中で規定した比較演算子と
する。ただし,比較演算子の"IS NOT EQUAL TO"及び"IS NOT ="は除く。
4) データ名1又はレコードキー名1は,修飾してもよい。
5) 相対ファイルでは,データ名1を指定するとき,それは関連するファイル管理記述項のRELATIVE KEY
句に書かれたデータ項目でなければならない。
6) 索引ファイルでは,データ名1を指定するとき,それは次のいずれかでなければならない。
a) ファイル名1に関連する主レコードキー又は副レコードキーであるデータ項目。
b) 次の属性をもつデータ項目。
1. ファイルのレコード内での最左端文字位置が,ファイル名1に関連し,RECORD KEY句又は
ALTERNATE RECORD KEY句において,SOURCE指定を用いずに定義された,主レコードキー
又は副レコードキーの最左端文字位置に対応している。
2. 字類・項類・用途が,そのレコードキーと同じである。
3. 長さが,そのレコードキーの長さより大きくない。
7) レコードキー名1は,ファイル名1のファイル管理記述項中のRECORD KEY句又はALTERNATE
RECORD KEY句のSOURCE指定によって定義されなければならない。
8) LENGTH指定を書く場合,ファイル名1が指すファイルは,索引編成でなければならない。
14.8.37.3 一般規則
1) ファイル名1のファイル結合子のオープンモードは,入力又は入出力両用でなければならない。
416
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
注記 さもないと,START文の実行は不成功となりファイル名1の入出力状態に"47"が設定される。
2) START文の実行は,ファイル名1に関連するレコード領域の内容に影響を及ぼさない。RECORD句
のDEPENDING ON指定中のデータ名のデータ項目の内容にも影響を及ぼさない。
3) START文の実行は,レコード錠の検出・獲得・解除を行わない。
4) START文を実行すると,ファイル名1に関連する入出力状態の値が更新される[9.1.12(入出力状態)
参照]。
5) START文の実行時点で,ファイル位置指示子が不定入力ファイルの存在なしを示しているとき,無効
キー条件が成立して,START文の実行は不成功となる。
6) START操作の実行が成功又は不成功になった後の制御の移行は,START文中の選択可能なINVALID
KEY指定及びNOT INVALID KEY指定の有無によって異なる[9.1.13(無効キー条件)参照]。
7) START文の実行が不成功であるとき,ファイル位置指示子は,有効なレコード位置が確定しなかった
ことを示すように設定される。索引ファイルでは,その参照キーが何であるかは規定されない。
相対ファイル
8) KEY指定を省略した場合,START文の振る舞いは“KEY IS EQUAL TOデータ名1”を指定した場合
と同じとする。ここで,データ名1とは,ファイル名1に関連するRELATIVE KEY句に指定したキ
ーの名前である。
9) KEY指定中の比較演算子が規定する種類の比較を,ファイル名1のファイル中のレコードに関連する
キーと,一般規則10) に規定したデータ項目との間で行う。数字比較規則を適用する[8.8.4.1.1.3(数
字作用対象どうしの比較)参照]。
a) 比較演算子がEQUAL,GREATER,NOT LESS又はGREATER OR EQUALであるとき,ファイルを
順次検索する。比較を満足するキーをもつ最初に見つかった論理レコードの,相対レコード番号が
ファイル位置指示子に設定される。
b) 比較演算子がLESS,NOT GREATER又はLESS OR EQUALであるときは,ファイルを逆順に検索
する。比較を満足するキーをもつ最初に見つかった論理レコードの,相対レコード番号がファイル
位置指示子に設定される。
c) ファイル中のどのレコードによっても比較が成立しないとき,無効キー条件が成立し,START文の
実行は不成功となる。
10) 一般規則9) に記述した比較には,ファイル名1に関連するACCESS MODE句のRELATIVE KEY指
定のデータ項目を用いる。
11) FIRSTを指定した場合,ファイル位置指示子には,ファイル中に存在する最初の論理レコードの相対
レコード番号が設定される。ファイル内に一つもレコードがなければ,無効キー条件が成立して
START文の実行は不成功になる。
12) LASTを指定した場合,ファイル位置指示子には,ファイル中に存在する最後の論理レコードの相対
レコード番号が設定される。ファイル内に一つもレコードがなければ,無効キー条件が成立して
START文の実行は不成功になる。
索引ファイル
13) 算術式1の値は,ファイル名1中のレコードへの位置付けのために部分的なキーとして用いる文字の
個数に反映される。データ名1又はレコードキー名1の字類が英数字のとき,算術式1の値は英数字
文字位置の個数とする。データ名1又はレコードキー名1の字類が各国文字のとき,算術式1の値は
各国文字の文字位置の個数とする。
417
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
14) 算術式1を評価した結果が,関連するキーの長さ以下のゼロでない正の整数にならない場合,ファイ
ル名1のファイル結合子の入出力状態に"23"が設定され,無効キー条件が成立して,START文の実行
は不成功となる。
15) KEY指定を省略した場合の振る舞いは“KEY IS EQUAL TOデータ名1又はレコードキー名1”を指
定したのと同じとする。ここで,データ名1又はレコードキー名1は,そのファイルの主レコードキ
ーとする。
16) KEY指定に書いたキー又はKEY指定に書いたデータ項目と最左端文字を共有するキーが,参照キー
になる。この参照キーを用いて,一般規則17) に示すとおり,このSTART文の処理のためにレコー
ドの順序付けを確立する。START文の実行が成功すると,ファイル名1を参照する順呼出しのREAD
文に対して,以降はこの参照キーが用いられる。
17) START文の実行は,次のとおりに振る舞う。
a) 指定されたキーを準備するために,レコード領域中の該当部分を一時的データ領域に転記する。
b) この一時的な領域の長さは,(i)LENGTH指定中で指定した長さ(ii)レコードキー名1の長さ(iii)
データ名1の長さ,のいずれかとみなされる。
c) 比較演算子がEQUAL,GREATER,NOT LESS又はGREATER OR EQUALであるとき,ファイルを
順次検索する。このとき各レコードから順に参照キーを抽出して,もう一つの一時的データ領域へ
と転記する。第2の一時的領域は切り捨てて第1の一時的領域と同じ長さにする。
d) 比較演算子がLESS,NOT GREATER又はLESS OR EQUALであるときは,ファイルを逆順に検索
する。このとき,各レコードから順に参照キーを抽出して,もう一つの一時的データ領域へと転記
する。第2の一時的領域は切り捨てて第1の一時的領域と同じ長さにする。
e) KEY指定中の比較演算子が規定する種類の比較を,これら二つの一時的領域の間で,第2の一時的
領域を左辺に配置して,ファイルの文字照合順序に従って行う。この比較は,データ名1の字類の
項目に対する作用対象の長さが等しい場合の規則に従って進む[8.8.4.1.1.6(英数字作用対象どうし
の比較)又は8.8.4.1.1.8(各国文字作用対象どうしの比較)参照]。その結果,次のいずれかになる。
1. ファイル位置指示子には,比較を満足するキーをもつ最初に見つかった論理レコードの,参照キ
ーの値が設定される。
2. ファイル中のどのレコードによっても比較が成立しないとき,無効キー条件が成立し,START文
の実行は不成功となる。
18) FIRSTを指定した場合,ファイル位置指示子には,物理ファイル中に存在する最初の論理レコードの
主レコードキーの値が設定される。参照キーは主レコードキーとする。ファイル内に一つもレコード
がなければ,ファイル名1のファイル結合子の入出力状態に"23"が設定され,無効キー条件が成立し
て,START文の実行は不成功になる。
19) LASTを指定した場合,ファイル位置指示子には,物理ファイル中に存在する最後の論理レコードの
主レコードキーの値が設定される。参照キーは主レコードキーとする。ファイル内に一つもレコード
がなければ,ファイル名1のファイル結合子の入出力状態に"23"が設定され,無効キー条件が成立し
て,START文の実行は不成功になる。
順ファイル
20) FIRSTを指定した場合,物理ファイル中にレコードが存在するとき,ファイル位置指示子に1が設定
される。ファイル中にレコードがないとき,又は先頭レコードへの位置付けができない物理ファイル
であるとき,ファイル名1のファイル結合子の入出力状態に"23"が設定され,無効キー条件が成立し
418
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
て,START文の実行は不成功になる。
21) LASTを指定した場合,ファイル位置指示子に,物理ファイル中に存在する最後の論理レコードのレ
コード番号が設定される。ファイル中にレコードがないとき,又は最終レコードへの位置付けができ
ない物理ファイルであるとき,ファイル名1のファイル結合子の入出力状態に"23"が設定され,無効
キー条件が成立して,START文の実行は不成功になる。
14.8.38 STOP文
STOP(停止)文は,実行単位の実行を終了させる。
14.8.38.1 一般形式
STOP RUN
WITH
ERROR
NORMAL STATUS
一意名1
定数1
14.8.38.2 構文規則
1) STOP文が,完結文中の一連の無条件文の並びの中に現れる場合,その並びの中の最後の文でなけれ
ばならない。
2) 一意名1は,整数データ項目であるか,又は用途がDISPLAY若しくはNATIONALのデータ項目でな
ければならない。
3) 定数1が数字である場合,それは整数でなければならない。
14.8.38.3 一般規則
1) 14.5.10(実行単位の正常終了)に規定した動作を行う。
2) ERROR指定がある場合に,オペレーティングシステムに機能があれば,オペレーティングシステム
は実行単位がエラー終了したことを示す。
3) NORMAL指定がある場合,オペレーティングシステムに機能があれば,オペレーティングシステム
は実行単位が正常終了したことを示す。
4) ERROR指定もNORMAL指定もない場合,オペレーティングシステムに機能があれば,オペレーティ
ングシステムは実行単位が正常終了したことを示す。ただし,実装者定義の機構があってエラー終了
を示していればこの限りではない。
5) 定数1又は一意名1を指定したSTOP文の実行中に,定数1又は一意名1のデータ項目の内容が,オ
ペレーティングシステムに渡される。定数1の値又は一意名1のデータ項目の内容に関して,制限事
項を設けるならそれは実装者定義とする。
6) 実行単位の実行は終了して,オペレーティングシステムへ制御が移る。
14.8.39 STRING文
STRING(連結)文は,一つ以上のデータ項目の一部又は全部の内容を連結して,単一データ項目中に
格納する機能を提供する。
14.8.39.1 一般形式
STRING
一意名1
定数1
…
DELIMITED BY
一意名2
定数2
SIZE
…
INTO 一意名3
[WITH POINTER 一意名4]
ON OVERFLOW 無条件文1
NOT ON OVERFLOW 無条件文2
419
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
[END-STRING]
14.8.39.2 構文規則
1) 全ての定数は,英数字,ブール又は各国文字の定数として記述されていなければならない。一意名4
を除く全ての一意名は,暗黙又は明示的に用途がDISPLAY又はNATIONALと記述されていなければ
ならない。定数1,定数2,一意名1,一意名2又は一意名3のいずれかの字類が各国文字である場合
は,全ての字類が各国文字でなければならない。
2) 定数1又は定数2は,語ALLで始まる表意定数であってはならない。
3) 一意名3は,部分参照されていてはならない。
4) 一意名3は,編集データ項目であってはならず,JUSTIFIED句付きであってはならない。
5) 一意名3は,強い型付けの集団項目であってはならない。
6) 一意名4は,一意名3のデータ項目の大きさに1を加えた値を保持するために十分な大きさをもつ,
基本数字整数データ項目として記述されなければならない。一意名4のPICTURE文字列中で記号"P"
を用いてはならない。
7) 一意名1又は一意名2が基本数字データ項目である場合,PICTURE文字列中に記号"P"のない整数と
して記述されていなければならない。
8) DELIMITED指定は,INTO指定の直前に限って,省略してもよい。省略時にはDELIMITED BY SIZE
が書かれたものとみなす。
9) 定数1又は一意名1のデータ項目は,送出し側作用対象とする。一意名3のデータ項目は,受取り側
作用対象とする。
14.8.39.3 一般規則
1) 定数2又は一意名2のデータ項目の内容は,転記の区切り記号を示す。SIZE指定を使用すると,一意
名1のデータ項目の内容又は定数1が完全に転記される。
2) 定数1又は定数2として表意定数が指定されると,その表意定数は1文字の暗黙のデータ項目を参照
する。そのデータ項目の用途は一意名3と同じ,DISPLAY又はNATIONALでなければならない。
3) STRING文が実行されるとき,そのデータ転記は次の規則に従う。
a) 文字列は,MOVE文の規則に従って,定数1から又は一意名1のデータ項目の内容から,一意名3
のデータ項目へ転記される。この転記は,英数字間の転記か,又は一意名3の字類が各国文字の場
合は各国文字間の転記とする。ただし,空白詰めは行われない。ある一意名1が長さゼロの項目で
あれば,その送出し側作用対象は無視される。
b) DELIMITED指定があって,長さゼロの項目ではない一意名2又は定数1がある場合,一意名1の
データ項目の内容又は定数1の値は,STRING文中に指定した順序で,受取り側データ項目へ転記
される。転記は,最左端の文字位置から始まって左から右へ進み,送出し側データ項目の終わり,
受取り側データ項目の終わり,一意名2のデータ項目の内容又は定数2で指定される区切り記号の
いずれかに達するまで続く。一意名2のデータ項目又は定数2で指定される区切り記号自体は転記
されない。
c) DELIMITED指定があって,SIZE指定がある場合又は一意名2が長さゼロの項目である場合,一意
名1のデータ項目の内容又は定数1の値が全て,STRING文中に指定した順序で,一意名3のデー
タ項目へ転記される。転記は,全データを送り終わるまで,又は一意名3のデータ項目の終わりに
達するまで続く。
この動作は,定数1又は一意名1のデータ項目の繰返しが全て処理されるまで繰り返される。
420
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4) POINTER指定がある場合,STRING文の実行開始時に,一意名4のデータ項目は1以上の値をもって
いなければならない。
5) POINTER指定がない場合,初期値1をもつデータ項目を指す一意名4を利用者が指定したのと同様に
みなされて,これ以降の一般規則を適用する。
6) 一意名3のデータ項目へ文字が転記されるときの動作は,(一意名4のデータ項目の値が,一意名3
のデータ項目の長さを超えていない限り)一度に1文字ずつ,送出し側から一意名3のデータ項目内
の,一意名4のデータ項目の値が示す文字位置へ文字が転記されて,次の文字の転記の前か又は
STRING文の実行終了の前に,一意名4のデータ項目が1ずつ増やされる。STRING文の実行の間に
一意名4のデータ項目の値が変更されるのは,この動作による場合だけとする。
7) STRING文の実行終了時に,一意名3のデータ項目の中で変更された部分は,STRING文の実行の間
に参照された部分だけである。一意名3のデータ項目のそれ以外の部分の内容は全て,このSTRING
文の実行前のデータのままになる。
8) 一意名3のデータ項目へ各文字が転記される前に,一意名4のデータに関連する値が1より小さいか
又は一意名3のデータ項目の文字位置の個数より大きい場合,次の動作が起こる。
a) それ以上のデータは,一意名3のデータ項目へ転記されない。
b) EC-OVERFLOW-STRING例外状態になる。
c) ON OVERFLOW指定がある場合,無条件文1に制御が移り,無条件文1中の各文の規則に従って実
行が続く。明示的に制御の移行を引き起こす手続き分岐文又は条件文が実行されれば,その文の規
則に従って制御が移る。さもなければ,無条件文1の実行が完了した後,STRING文の終わりに制
御が移る。
d) ON OVERFLOW指定がない場合,実行が続く[14.5.12.1.3(非致命的例外状態)参照]。
e) NOT ON OVERFLOW指定があった場合,そのNOT ON OVERFLOW指定は無視される。
9) NOT ON OVERFLOW指定のあるSTRING文の実行時,一般規則8) に記述された条件に出会わなかっ
た場合,その他の一般規則に従ってデータ転記が完了した後,ON OVERFLOW指定はあっても無視さ
れて,STRING文の終わりに制御が移るか,又はNOT ON OVERFLOW指定があるなら無条件文2に
制御が移る。無条件文2に制御が移る場合,無条件文2中の各文の規則に従って実行が続く。明示的
に制御の移行を引き起こす手続き分岐文又は条件文が実行されれば,その文の規則に従って制御が移
る。さもなければ,無条件文2の実行が完了した後,STRING文の終わりに制御が移る。
10) 一意名1又は一意名2の占める記憶域が一意名3又は一意名4と同じである場合,並びに一意名3の
占める記憶域が一意名4と同じである場合,たとえこれらが同じデータ記述項によって定義されてい
たとしても,この文の実行結果は規定されない[14.5.9(作用対象の重なり)参照]。
14.8.40 SUBTRACT文
SUBTRACT(減算)文は,幾つかの数字データ項目の和を幾つかの項目から減じて,その結果を格納す
る。
14.8.40.1 一般形式
書き方1(単純)
SUBTRACT
一意名1
定数1
… FROM {一意名2 [ROUNDED]} …
ON SIZE ERROR 無条件文1
NOT ON SIZE ERROR 無条件文2
421
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
[END-SUBTRACT]
書き方2(giving)
SUBTRACT
一意名1
定数1
… FROM
一意名2
定数2
GIVING {一意名3 [ROUNDED]} …
ON SIZE ERROR 無条件文1
NOT ON SIZE ERROR 無条件文2
[END-SUBTRACT]
書き方3(corresponding)
SUBTRACT
CORRESPONDING
CORR
一意名4 FROM 一意名5 [ROUNDED]
ON SIZE ERROR 無条件文1
NOT ON SIZE ERROR 無条件文2
[END-SUBTRACT]
14.8.40.2 構文規則
全ての書き方
1) 固有算術が有効であるとき,作用対象の合成[14.6.6(算術文)参照]は,次のとおりに決まる。
a) 書き方1では,文中の全ての作用対象によって決まる。
b) 書き方2では,文中の作用対象のうち,語GIVINGに後続するデータ項目以外の全ての作用対象に
よって決まる。
c) 書き方3では,各々の対応するデータ項目の対に関して,対応する作用対象2個によって決まる。
書き方1,書き方2
2) 一意名1及び一意名2のデータ項目は,数字データ項目でなければならない。
3) 定数1及び定数2は,数字定数でなければならない。
書き方2
4) 一意名3のデータ項目は,数字データ項目又は数字編集データ項目でなければならない。
書き方3
5) 語CORRとCORRESPONDINGは,同義とする。
6) 一意名4及び一意名5のデータ項目は,英数字,各国文字又は強い型付けの集団項目でなければなら
ず,レベル番号66で記述してはならない。
14.8.40.3 一般規則
1) 書き方1を使用する場合,開始時評価において,減数値,つまり定数1又は一意名1のデータ項目の
値が決まる。定数1又は一意名1が複数個あるときの減数値はそれらの作用対象の総和とする。この
開始時評価を一意名2のデータ項目の値から減算し,その結果が一意名2のデータ項目の新しい値と
して格納される。
標準算術が有効な場合,開始時評価の結果は,次の算術式の結果と等価とする。
(作用対象11 + 作用対象12 + … + 作用対象1n)
ここで,作用対象1の値は,このSUBTRACT文中に指定した順序で定数1及び一意名1のデータ
項目の値とする。各々の一意名2のデータ項目の値からこの開始時評価を減算した結果は,次の算術
式の結果と等価とする。
(一意名2 − 開始時評価)
422
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ここで,“開始時評価”は,その開始時評価の結果を表している。
2) 書き方2を使用する場合,開始時評価において,減数値,つまり定数1又は一意名1のデータ項目の
値が決まる。定数1又は一意名1が複数個あるときの減数値はそれらの作用対象の総和とする。さら
に,定数2又は一意名2のデータ項目の値からこの値を減算する。この結果が一意名3のデータ項目
の新しい値として格納される。
標準算術が有効であるとき,開始時評価の結果は,次の算術式の結果と等価とする。
(作用対象2 − (作用対象11 + 作用対象12 + … + 作用対象1n) )
ここで,作用対象1の値は,定数1又は一意名1のデータ項目の値であって,このSUBTRACT文
中に指定した順序で書いてあるものとし,作用対象2の値はこのSUBTRACT文の定数2又は一意名2
のデータ項目の値とする。
3) 書き方3を使用する場合,一意名4の従属データ項目の値を,一意名5の対応する従属データ項目か
ら減算してそこに格納する。
標準算術が有効な場合,減算の結果は,次の算術式の結果と等価とする。
(作用対象1 − 作用対象2)
ここで,作用対象1の値は一意名4の従属データ項目の値とし,作用対象2の値は一意名5の対応
する従属データ項目の値とする。
4) 固有算術が有効であり,用途が2進文字,2進短精度,2進長精度,2進倍精度,浮動短精度,浮動長
精度又は浮動拡張精度と記述されたデータ項目が作用対象の中にないとき,文の実行中に有効数字が
失われないよう,十分なけた数がとられる。
5) 一意名4内部の従属データ項目は選択されて,一意名5内部の選択された従属データ項目から減算さ
れる[14.6.5(CORRESPONDING指定)参照]。この結果は,利用者が対応しあう一意名を一対ずつ
別々のSUBTRACT文中に書いて参照したのと同じである。
6) この文に関連するこれ以上の規則と説明は,14.5.9(作用対象の重なり),14.5.12.2(不適合データ),
14.6.3(ROUNDED指定),14.6.4(SIZE ERROR指定及びけたあふれ条件),14.6.5(CORRESPONDING
指定)及び14.6.6(算術文)による。
14.8.41 SUPPRESS文
SUPPRESS(抑制)文は,報告集団の印刷を抑制する。
14.8.41.1 一般形式
SUPPRESS PRINTING
14.8.41.2 構文規則
1) SUPPRESS文は,USE BEFORE REPORTING手続き中にだけ書いてもよい。
14.8.41.3 一般規則
1) SUPPRESS文が表示を抑制する報告集団は,そのSUPPRESS文を指定したUSE手続きに対する報告
集団だけとする。
2) SUPPRESS文の効果は,報告集団の現在のインスタンスに対して制限される。
注記 報告集団の表示を抑制するときは,その都度SUPPRESS文を実行することが求められる。
3) SUPPRESS文を実行すると,次の報告集団機能は抑制される。
a) 報告集団の印字行の印刷
b) 報告集団と関連するページ送り
c) 報告集団のNEXT GROUP句の処理
423
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
d) 報告集団に関連するLINE-COUNTERの変更
e) 関連する報告集団が明細である場合,SUPPRESS文は制御切れの感知にも次の制御切れの処理にも
影響を及ぼさない
14.8.42 TERMINATE文
TERMINATE(終了)文は,指定された報告書の処理を終了させる。
14.8.42.1 一般形式
TERMINATE {報告書名1} …
14.8.42.2 構文規則
1) 報告書名1は,報告書節の報告書記述項で定義しなければならない。
2) 報告書名1が外側のプログラム中で定義されている場合,報告書名1に関連するファイル記述項には
GLOBAL句がなければならない。
14.8.42.3 一般規則
1) TERMINATE文は,活性状態の報告書に対してだけ実行してもよい。報告書が活性状態でなければ,
EC-REPORT-INACTIVE例外状態になって,その文の実行は効果をもたない。
2) ある報告書に対して,INITIATE文の実行とTERMINATE文との実行の間GENERATE文を1回も実行
しなかった場合には,TERMINATE文はどの報告集団に対しても処理を一切行わず,報告書の状態を
不活性に変える効果だけをもつ。
3) ある報告書に対して,INITIATE文の実行とTERMINATE文との実行の間GENERATE文を最低1回は
実行した場合,TERMINATE文は次の動作をこの順に行う。
a) 制御データ項目の内容は,直前の値に変えられる。
b) 制御脚書きが定義されている場合,これらは,低いレベルの制御脚書きから始まって,最も高いレ
ベルの制御データ項目で制御切れが感知された場合,GENERATE文に対して規定されているのと同
様に,印字される。
c) 報告書脚書きが定義されている場合,それが印字される。
d) 制御データ項目の内容が,TERMINATE文の実行開始時点での値に回復する。
4) 二つ以上の報告書名1を書いた場合のTERMINATE文の実行結果は,各々の報告書名1に対して,こ
の文で書いたのと同じ順序で別々のTERMINATE文を書いた場合と同じとする。これらの暗黙の
TERMINATE文のいずれかの結果,宣言手続き中でNEXT STATEMENT指定付きRESUME文が実行
された場合,その次に暗黙のTERMINATE文があったときは,そこから処理が再開する。
5) TERMINATE文の実行中に非致命的な例外状態が起きた場合,その次の印字可能項目,行又は報告集
団のうちで,論理的に直後にあるものから,実行が再開する。
6) TERMINATE文は,報告書名1に関連するファイルを閉じるものではない。
14.8.43 UNLOCK文
UNLOCK(解錠)文は,ファイル結合子に関連するあらゆるレコード錠を明示的に解除する。
14.8.43.1 一般形式
UNLOCK ファイル名1
RECORD
RECORDS
14.8.43.2 構文規則
1) ファイル名1は,整列ファイル又は併合ファイルを参照してはならない。
14.8.43.3 一般規則
424
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) ファイル名1のファイル結合子と関連するあらゆるレコード錠は,UNLOCK文の実行によって解除さ
れる。ただし,レコード錠の有無は,UNLOCK文の実行の成功に影響しない。
注記 特定の1レコードの施錠を解除するには,NO LOCK指定のあるREAD文を使用する。
2) ファイル名1は,開いた状態のファイル結合子でなければならない。
3) UNLOCK文を実行すると,ファイル名1のファイル結合子の入出力状態の値が更新される。
14.8.44 UNSTRING文
UNSTRING(分解)文は,送出し側フィールド中の連続データを分割して,一つ以上の受取り側フィー
ルドに入れる。
14.8.44.1 一般形式
UNSTRING 一意名1
DELIMITED BY [ALL]
一意名2
定数1
OR [ALL]
一意名3
定数2
…
INTO {一意名4 [DELIMITER IN 一意名5] [COUNT IN 一意名6]} …
[WITH POINTER 一意名7]
[TALLYING IN 一意名8]
ON OVERFLOW 無条件文1
NOT ON OVERFLOW 無条件文2
[END-UNSTRING]
14.8.44.2 構文規則
1) 定数1及び定数2は,項類が英数字又は各国文字の定数でなければならず,語ALLで始まる表意定数
であってはならない。
2) 一意名1,一意名2,一意名3及び一意名5は,項類が英数字又は各国文字であるデータ項目でなけれ
ばならない。
3) 一意名1,一意名2,一意名3,一意名4,一意名5,定数1又は定数2のいずれかの項類が各国文字
である場合,全ての項類が各国文字でなければならない。
4) 一意名4は,暗黙又は明示的に,用途がDISPLAYで項類が英字,英数字若しくは数字であるか,又
は用途がNATIONALで項類が各国文字若しくは数字であるか,いずれかでなければならない。数字
項目の場合は,PICTURE文字列中で"P"を指定してはならない。
5) 一意名6及び一意名8は,整数データ項目でなければならない。ただし,PICTURE文字列中で記号"P"
を用いてはならない。
6) 一意名7は,一意名1のデータ項目の大きさに1を加えた値をもつのに十分な大きさのある基本数字
整数データ項目でなければならない。一意名7のPICTURE文字列中で記号"P"を用いてはならない。
7) DELIMITER IN指定とCOUNT IN指定を書いてよいのは,DELIMITED BY指定がある場合だけとする。
8) 一意名1のデータ項目は,送出し側作用対象とする。
9) 一意名4のデータ項目は,データの受取り側作用対象とする。一意名5のデータ項目は,区切り記号
の受取り側作用対象とする。
14.8.44.3 一般規則
1) 一意名2及び定数1についての規則は全て,一意名3及び定数2とそれらの繰返しにそれぞれ同様に
適用される。
2) 一意名1のデータ項目が長さゼロの項目であれば,UNSTRING文の実行は直ちに終了する。
425
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
3) 定数1又は一意名2のデータ項目は,区切り記号を指定する。
4) 一意名6のデータ項目は,一意名4のデータ項目への転記のため区切り記号で分離された,一意名1
のデータ項目内の文字の個数を表す。この値に区切り記号の個数は含まれない。
5) 一意名7のデータ項目は,一意名1の領域中の相対文字位置を示す値を内容とする。
6) 一意名8のデータ項目は,UNSTRING操作の間にアクセスされた一意名4のデータ項目の各々につい
て1ずつ増えるカウンタである。
7) 区切り記号として表意定数を使用するとき,一意名1が各国文字データ項目である場合,それは1文
字の各国文字定数とみなされ,さもなければ,1文字の英数字定数とみなされる。
ALL指定を書いた場合,定数1(表意定数であろうとなかろうと)又は一意名2のデータ項目の内
容が,1回現れても,2回以上連続して現れても,それが1回だけ現れたのと同様に扱われ,その1
回分だけが,一般規則11) d) に従って受取り側データ項目に転記される。
8) 検査中に2個連続した区切り記号が現れた場合,現在の受取り側領域はその記述に従って,英字,英
数字又は各国文字のとき,空白詰めされ,数字のとき,ゼロ詰めされる。
9) 定数1又は一意名2のデータ項目はそれぞれ一つの区切り記号を表す。区切り記号が2文字以上から
なる場合,区切り記号として認識されるには,これらの文字が全て,送出し側項目中の連続する位置
に,同じ順序で現れなければならない。一意名2又は一意名3のデータ項目が長さゼロの項目であれ
ば,その区切り記号は無視される。定数1及び定数2が指定されず,一意名2及び一意名3のデータ
項目が全て長さゼロの項目である場合,DELIMITED指定自体がなかったのと同じになる。
10) 二つ以上の区切り記号をDELIMITED BY指定中に書いた場合,それらの間にOR条件が存在する。そ
れぞれの区切り記号は送出し側フィールドと比較され,一致した場合,送出し側フィールドの文字は,
単一の区切り記号とみなされる。送出し側フィールド中のどの文字も,二つ以上の区切り記号の一部
であるとみなされることはない。
各々の区切り記号はUNSTRING文中に指定した順序で送出し側フィールドに適用される。
11) UNSTRING文を開始する時点での現在の受取り側領域は,一意名4のデータ項目とする。データは一
意名1のデータ項目から一意名4のデータ項目へ,次の規則に従って転記される。
a) POINTER指定があると一意名1の文字列は,一意名7のデータ項目の内容が示す相対文字位置から
検査される。POINTER指定がないと文字列は,最左端文字位置から検査される。
b) DELIMITED BY指定がある場合,検査は左から右へ,定数1又は一意名2のデータ項目の値で指定
された区切り記号が現れるまで進む(一般規則9) を参照)。DELIMITED BY指定がない場合,検査
される文字数は現在の受取り側領域の大きさに等しい。ただし,受取り側項目の符号が独立の文字
位置を占めると定義されていれば,検査される文字数は現在の受取り側領域の大きさより1だけ小
さくなる。大きさは文字位置の個数として定義される。
区切り条件が成立するより前に一意名1のデータ項目の終わりに達した場合,最後に検査された
文字で検査は終了する。
c) 検査された文字は,区切り記号を除いて,一意名1の項類が各国文字なら基本各国文字データ項目,
さもなければ基本英数字データ項目として扱われ,MOVE文の規則に従って現在の受取り側領域へ
転記される。
d) DELIMITER IN指定がある場合,区切り記号は,一意名1の項類が各国文字なら基本各国文字デー
タ項目,さもなければ基本英数字データ項目として扱われ,MOVE文の規則に従って一意名5のデ
ータ項目へと転記される。区切り条件が一意名1のデータ項目の終わりであるとき,一意名5のデ
426
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ータ項目は空白詰めされる。
e) COUNT IN指定がある場合,検査された,区切り記号を除いた文字の数に等しい値が,基本項目転
記の規則に従って一意名6の領域へ転記される。
f)
DELIMITED BY指定がある場合,区切り記号のすぐ右の文字位置から,文字列が更に検査される。
DELIMITED BY指定がない場合は,転記された最後の文字のすぐ右の文字位置から,文字列が更に
検査される。
g) データが一意名4のデータ項目に転記された後,その次に指定した一意名4のデータ項目が現在の
受取り側領域となる。細則b)〜f) に記述した動作は,一意名1のデータ項目中の全ての文字が尽き
るまで又は受取り側領域がなくなるまで,繰り返される。
12) POINTER指定又はTALLYING指定に関連するデータ項目の内容を初期化することは,利用者の責任
とする。
13) 一意名7のデータ項目の内容は,一意名1のデータ項目中の文字が一つ検査されるたびに1ずつ増や
される。POINTER指定のあるUNSTRING文の実行が完了すると,一意名7のデータ項目の内容は,
その初期値に,一意名1のデータ項目中の検査された文字数を加えた値になる。
14) TALLYING指定のあるUNSTRING文の実行が完了すると,一意名8のデータ項目の内容は,
UNSTRING文の開始時点の値に,文の実行の間にアクセスされた一意名4の受取り側データ項目の個
数を加えた値になる。
15) 次のいずれかの状況では,あふれ条件が引き起こされる。
a) UNSTRING文の開始時に,一意名7のデータ項目の値が1より小さいか又は一意名1のデータ項目
の文字位置の個数より大きい。
b) UNSTRING文の実行の間に,受取り側領域を全て使用し切ったのに,まだ検査されていない文字が
一意名1のデータ項目中にある。
16) あふれ条件が成立すると,次の動作が起きる。
a) UNSTRING操作は終了する。
b) EC-OVERFLOW-UNSTRING例外状態になる。
c) ON OVERFLOW指定がある場合,無条件文1に制御が移り,無条件文1中の各文の規則に従って実
行が続く。明示的に制御の移行を引き起こす手続き分岐文又は条件文が実行されれば,その文の規
則に従って制御が移る。さもなければ,無条件文1の実行が完了した後,UNSTRING文の終わりに
制御が移る。
d) ON OVERFLOW指定がない場合,実行が続く[14.5.12.1.3(非致命的例外状態)参照]。
e) NOT ON OVERFLOW指定は,もしあっても無視される。
17) UNSTRING文の実行時,一般規則15) の条件に出会わなかったとき,他の一般規則に従いデータ転記
が完了した後,ON OVERFLOW指定はあっても無視され,UNSTRING文の終わりに制御が移るか,
又はNOT ON OVERFLOW指定がある場合は,無条件文2に制御が移る。無条件文2に制御が移る場
合は,無条件文2中の各文の規則に従って実行が続く。明示的に制御の移行を引き起こす手続き分岐
文又は条件文が実行されれば,その文の規則に従って制御が移る。さもなければ,無条件文2の実行
が完了した後,UNSTRING文の終わりに制御が移る。
18) 一意名1,一意名2若しくは一意名3の占める記憶域が一意名4,一意名5,一意名6,一意名7,一
意名8のいずれかと同じである場合,一意名4,一意名5若しくは一意名6の占める記憶域が一意名7
若しくは一意名8と同じである場合,又は一意名7の占める記憶域が一意名8と同じである場合,こ
427
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
れらが同じデータ記述項によって定義されていても,この文の実行の結果は規定されない[14.5.9(作
用対象の重なり)参照]。
14.8.45 USE文
USE(使用)文は,次に示す宣言手続きを指定する。
− 誤り処理又は例外処理の手続きであって,COBOLの外部の機能によって提供される標準手続きに追
加されたもの。
注記 そのような機能には入出力管理システム及びオペレーティングシステムが含まれる。
− 報告集団の印字直前に実行される手続き。
− 例外状態の検出の後に実行される手続き。
14.8.45.1 一般形式
書き方1(ファイル例外)
USE [GLOBAL] AFTER STANDARD
EXCEPTION
ERROR
PROCEDURE ON
{ファイル名1}…
INPUT
OUTPUT
I-O
EXTEND
書き方2(報告書)
USE [GLOBAL] BEFORE REPORTING 一意名1
書き方3(例外名)
USE AFTER
EXCEPTION CONDITION
EC
例外名1
例外名2 {FILE ファイル名2}… …
書き方4(例外オブジェクト)
USE AFTER
EXCEPTION OBJECT
EO
クラス名1
インタフェース名1 …
14.8.45.2 構文規則
全ての書き方
1) USE文が存在するとき,それは手続き部の宣言部分の節見出しの直後に続けなければならず,それだ
けで完結文に現れなければならない。節の残りは,用いられる手続きを定義する0個以上の手続き段
落から構成しなければならない。
2) ファイル名1又はファイル名2は,整列併合用ファイルであってはならない。
3) 宣言手続きの内部に,RESUME文中を除いて,非宣言手続きへの参照があってはならない。
4) 宣言部分の節の手続き名を参照してもよいのは,宣言部分中の異なる節の中,又は非宣言手続きの中
のPERFORM文でだけとする。
書き方1,書き方3
5) USE文で暗黙又は明示的に参照されるファイルは,同じ編成又は同じ呼出し法でなくてもよい。
書き方1
6) 語ERRORと語EXCEPTIONは同義であり,いずれを用いてもよい。
7) INPUT指定,OUTPUT指定,I-O指定及びEXTEND指定は,一つの手続き部の宣言部分に各々一度
だけ書いてもよい。
8) 同じファイル名が,同じ手続き部の二つ以上のUSE AFTER EXCEPTION文に現れてはならない。
書き方2
428
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
9) 一意名1は報告集団でなければならない。同じ一意名1が,同じ手続き部中の二つ以上のUSE BEFORE
REPORTING文に現れてはならない。
10) GENERATE文,INITIATE文,及びTERMINATE文は,USE BEFORE REPORTING手続き内の段落に
あってはならない。
11) USE BEFORE REPORTING手続きは,制御データ項目の値を変更してはならない。
書き方3
12) 語ECは,語列EXCEPTION CONDITIONと同義とする。
13) 例外名2は,"EC-I-O" で始まる例外名でなければならない。
14) 同じ例外名とファイル名の対は,同じ手続き部の中で,二つ以上のUSE文に指定してはならない。
書き方4
15) 語EOは,語列EXCEPTION OBJECTと同義とする。
16) クラス名1は,リポジトリ段落中で指定されたクラスの名前でなければならない。
17) インタフェース名1は,リポジトリ段落中で指定されたインタフェースの名前でなければならない。
14.8.45.3 一般規則
全ての書き方
1) USE文が実行されることはない。USE手続き実行の条件を定義するだけである。
2) USE手続きの実行中に,それ以前に活性化されたが活性化元には制御がまだ戻っていないUSE手続
きの実行を引き起こすような例外が,ある文によって発生すると,EC-FLOW-USE例外状態になる。
書き方1,書き方3,書き方4
3) 実行する宣言手続きは,ソース要素中のUSE文を,それらが指定された順に解析して選択する。選択
基準を満足する最初に見つかった宣言手続きが実行され,それ以外の宣言手続きは実行されない。例
外オブジェクトが発生した場合,一般規則11) の処理方法を適用する。さもなければ,次に示す規則
をこの順に適用する。
a) 書き方1のUSE文のうちファイル名1指定のあるものが全て,一般規則6) の判定基準を用いて試
験される。適格なUSE文がなければ,ソース要素中のUSE文が再び試験される。
b) 書き方1のUSE文のうちファイル名1指定のないものが全て,一般規則6) の判定基準を用いて試
験される。適格なUSE文がなければ,ソース要素中のUSE文が再び試験される。
c) 書き方3のUSE文のうちファイル名2の指定があって例外名1がレベル3であるものが全て,試験
される。発生した例外状態が例外名1に一致して,ファイル名2に関連していれば,その宣言手続
きが実行される。適格なUSE文がなければ,ソース要素中のUSE文が再び試験される。
d) 書き方3のUSE文のうちファイル名2の指定があって例外名1がレベル2であるものが全て,試験
される。発生した例外状態が例外名1に一致して,ファイル名2に関連していれば,その宣言手続
きが実行される。適格なUSE文がなければ,ソース要素中のUSE文が再び試験される。
e) 書き方3のUSE文のうちファイル名2の指定がなくて例外名1がレベル3であるものが全て,試験
される。発生した例外状態が例外名1に一致すれば,その宣言手続きが実行される。適格なUSE文
がなければ,ソース要素中のUSE文が再び試験される。
f)
書き方3のUSE文のうちファイル名2の指定がなくて例外名1がレベル2であるものが全て,試験
される。発生した例外状態が例外名1に一致すれば,その宣言手続きが実行される。適格なUSE文
がなければ,ソース要素中のUSE文が再び試験される。
g) 書き方3のUSE文のうちファイル名2の指定がなくて例外名1がレベル1であるものが,あれば試
429
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
験される。発生した例外状態が例外名1に一致すれば,その宣言手続きが実行される。適格なUSE
文がないとき,このソース要素を内包しているソース要素中にGLOBAL指定のあるUSE文があれ
ば,一般規則4) のとおり探索が繰り返される。該当する宣言手続きがなければ,宣言手続きは一
つも実行されない。
書き方1,書き方2
4) 別のソース要素の中に含まれるソース要素では,ある例外状態に対する選択で,複数の宣言手続きが
適格になることがある。選択されて実行される宣言手続きは,次の優先順位で決まる。
a) 例外状態の成立を引き起こした文が含まれるソース要素中の,適格な宣言手続き
b) そのソース要素を直接に包含するソース要素中の,適格な宣言手続きであって,GLOBAL属性をも
つもの。この処理は,それを更に直接に包含するソース要素を対象に繰り返され,更に,適格な宣
言手続きが選択されるまで又は最も外側のソース単位に到達するまで,繰り返される。
書き方1
5) 一つの手続き部中で,ファイル名1を指定したUSE文は,INPUT,OUTPUT,I-O又はEXTENDを指
定したUSE文よりも優先される。
6) USE文に関連する手続きは,AT END指定又はINVALID KEY指定が優先しない限り,入出力操作の
実行が不成功の場合の標準入出力例外ルーチンの完了後,入出力管理システムによって実行される。
手続きが実行される場合に関する規則は,次による。
a) ファイル名1を指定した場合,USE文に記述された条件が起きると,関連する手続きが実行される。
b) INPUTを指定した場合,入力モードで開かれた又は開く処理中のファイルに対して,USE文に記述
された条件が起きたとき,関連する手続きが実行される。ただし,同じ条件を指定した別のUSE文
中のファイル名1のファイルは,この対象にならない。
c) OUTPUTを指定した場合,出力モードで開かれた又は開く処理中のファイルに対して,USE文に記
述された条件が起きたとき,関連する手続きが実行される。ただし,同じ条件を指定した別のUSE
文中のファイル名1のファイルは,この対象にならない。
d) Oを指定した場合,入出力両用モードで開かれた又は開く処理中のファイルに対して,USE文に記
述された条件が起きたとき,関連する手続きが実行される。ただし,同じ条件を指定した別のUSE
文中のファイル名1のファイルは,この対象にならない。
e) EXTENDを指定した場合,拡張モードで開かれた又は開く処理中のファイルに対して,USE文に記
述された条件が起きたとき,関連する手続きが実行される。ただし,同じ条件を指定した別のUSE
文中のファイル名1のファイルは,この対象にならない。
7) USE手続きの実行後,入出力管理システム中の呼出しルーチンに制御が移る。入出力状態の値が致命
的EC-I-O例外状態を示していない場合,入出力管理システムは,例外を起こした入出力文に後続する
次の実行文に制御を戻す。入出力状態の値が致命的なEC-I-O例外状態を示している場合,どのような
動作を取るかは,実装者定義とする[9.1.12(入出力状態)参照]。
書き方2
8) この宣言手続きが呼出しされるのは,実行時要素の実行中に,指名された報告集団が生成される直前
である。報告集団は,宣言手続きの前置きとなるUSE BEFORE REPORTING文中の一意名1によって
指名される。
9) USE BEFORE REPORTING文に関連する宣言手続きは,名前付き報告集団が処理されるたびに,次の
論理点で暗黙に実行される。
430
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
a) 関連する報告集団が明細であって,関連する報告書記述項にCONTROL句がある場合は,制御切れ
処理の後[13.16.15(CONTROL句)参照]。
b) 報告集団中で定義される合計カウンタを増やす必要がある場合は,加算の後。
c) 関連する報告集団が本体集団であって,報告書がページ分割されている場合は,ページ内収納検査
の処理の前。
d) 報告集団及びその従属記述項で記述された印字可能項目に対して定義されたLINE句の処理の前。
10) USE文に BEFORE REPORTING指定のある宣言手続きの範囲内においてGENERATE / INITIATE /
TERMINATE文が実行された場合,EC-FLOW-REPORT例外状態になって,GENERATE / INITIATE /
TERMINATE文の実行の結果は不成功になり,報告書の状態は変化しない。
書き方3
11) 選択するUSE文を決定するために用いる条件は,例外の成立を引き起こした文の評価の順序において
最初に発生した条件である。
12) 例外名1又は例外名2がEC-I-Oで始まっている場合,USE手続きの実行後に,入出力管理システム
中の呼出しルーチンに制御が移る。入出力状態の値が致命的な入出力誤りを示していない場合,入出
力管理システムは,例外を起こした入出力文に後続する次の実行文に制御を戻す。入出力状態の値が
致命的誤りを示している場合,どのような動作を取るかは実装者定義とする[9.1.12(入出力状態)参
照]。
書き方4
13) 実行する宣言手続きは,ソース要素中のUSE文を,それらが指定された順に解析して選択する。次の
規則をこの順に適用して,実行する宣言手続きを一つ選択するか,又は一つも選択しない。
a) クラス名1の指定があり,発生した例外オブジェクトが,クラス名1又はその下位クラスの,ファ
クトリオブジェクト又はインスタンスオブジェクトであるとき,関連する宣言手続きが実行される。
それ以外の宣言手続きは実行されない。さもなければ,ソース要素中の全てのUSE文が再び解析さ
れる。
b) インタフェース名1の指定があり,発生した例外オブジェクトの記述に,インタフェース名1を参
照するIMPLEMENTS句があるとき,関連する宣言手続きが実行される。それ以外の宣言手続きは
実行されない。さもなければ,14.5.12.1.4(例外オブジェクト)の規定に従って実行が進む。
14) 関連する宣言手続きを実行する間中,既定義オブジェクト一意名 EXCEPTION-OBJECTは,その例外
オブジェクトを指す。
14.8.46 VALIDATE文
VALIDATE(検証)文は,データ項目に対するデータ検証,入力配布,及び誤り通知を呼び出す。
14.8.46.1 一般形式
VALIDATE {一意名1} …
14.8.46.2 構文規則
1) 一意名1は,ファイル節,連絡節,局所記憶節又は作業場所節中で記述されたデータ項目でなければ
ならない。一意名1を部分参照してはならない。
2) 一意名1の字類は,指標,オブジェクト又はポインタであってはならない。
3) 一意名1のデータ項目又はそれに従属するあらゆるデータ項目のデータ記述項に,一意名1又はそれ
に従属する項目を指すVALIDATE-STATUS句があってはならない。
4) 一意名1は,66レベル項目であってはならない。
431
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
5) 一意名1は,記述にANY LENGTH句があってはならない。
14.8.46.3 一般規則
1) 一意名1又はそれに従属する集団項目がGROUP-USAGE句を用いて記述されている場合,形式検証
では,ビット集団項目又は各国文字集団項目の中の各々の基本項目に関して処理を行う。DEFAULT
句,DESTINATION句又はVALUE句があるとき,その句はその句が指定された基本項目及び集団項
目に適用される。これは,その項目の記述が明示的な又は暗黙のGROUP-USAGE句付きであったと
しても同じである。
2) 一意名1のデータ項目及び従属するあらゆるデータ項目のうち,字類が指標,オブジェクト又はポイ
ンタではないものを,以降の一般規則中では“作用対象の要素”と呼ぶ。
3) 二つ以上の一意名1をVALIDATE文に書いた場合,その文の実行結果は,各々の一意名1に対して,
この文に書いたのと同じ順序で別々のVALIDATE文を書いたのと同じである。これら暗黙の
VALIDATE文のいずれかの結果として,宣言手続き中でNEXT STATEMENT指定付きRESUME文が
実行された場合,その次に暗黙のVALIDATE文がもしあれば,そこから処理が再開する。
4) VALIDATE文の実行は5段階に分かれる。各々の段階はその次の段階より前に作用対象の全要素に対
して実行される。ある段階に適用される句がない,又は先行する段階で作用対象の全要素が不合格に
なったという理由のために,その段階が実行されないこともある。これら5段階を次に列挙し,個々
の段階に適用される句を合わせて示す。
a) 形式検証(format validation): DEFAULT句,PICTURE句,SIGN句,USAGE句。
b) 入力配布(input distribution): DESTINATION句。
c) 内容検証(content validation): CLASS句及びVALUE句。
d) 関係検証(relation validation):
INVALID句。
e) 誤り通知(error indication): VALIDATE-STATUS句。
各々の段階でVALIDATE文の実行は,作用対象の要素のいずれかのデータ記述項に指定した
OCCURS句,REDEFINES句又はPRESENT WHEN句によっても影響を受ける。
5) 作用対象の要素のうち,形式検証・内容検証・関係検証のいずれかにデータ項目を参画させるような
句の指定をデータ記述の中にもつもの(88レベル記述項の場合は,そのような句に関連するもの)に
対して,内部標識が一つずつ割り当てられる。これらのデータ記述句の結果としてデータ項目に不当
状態が検出されても,VALIDATE文の実行が直ちに終了するわけではなく,不当データ項目の内容が
変わるわけでもない。その代わり,データ項目に対する内部標識に不当データを表す三つの異なる値
(形式が不当・内容が不当・関係が不当)のいずれかが設定され,不当状態の発生が記録される。
形式が不当となった基本項目は内容検査を受けない。内容が不当となったデータ項目は関係検査を
受けない。
注記 したがって,内部標識は,形式が不当の状態から内容が不当の状態に又は関係が不当の状態
に変わることはなく,内容が不当の状態から関係が不当の状態に変わることもない。内部標
識が誤りを表すよう設定されるのは,それが妥当を示す初期値のときだけである。
データ記述にOCCURS句を含むものがあるとき,内部標識はそのデータ項目の各々の反復に対して,
TO指定があるなら最大反復回数に至るまで,独立に割り当てられる。
VALIDATE文の実行開始時点で,作用対象の要素の全てに対する内部標識に妥当を示す初期値が割
り当てられる。それ以降,VALIDATE文で処理されなかったデータ項目に対しては,内部標識に未処
理を意味する一意な値が設定される。
432
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
6) 検証の処理は次のa)〜e) に示す5段階からなる。これらの段階の実行中にEC-DATA-INCOMPATIBLE
(不適合データ)以外の致命的例外状態になると,VALIDATE文の実行は中止され,致命的例外状態
に対する規定に従って制御が進む。VALIDATE文の実行中にEC-DATA-INCOMPATIBLE例外状態にな
る条件は,14.5.12.2(不適合データ)による。非致命的例外状態が引き起こされたとき,その処理は,
非致命的例外状態に対する規定に従って,例外処理の指定があればそれが完了した後,例外状態には
ならなかったかのように実行が続く。
a) 第一段階(形式検証)
各々の基本データ項目は,その項目のデータ記述中の該当するPICTURE句,USAGE句及びSIGN
句に,矛盾しないか否か検査確認される。
この検査確認で不合格になるデータ項目があれば,その内部標識は形式が不当という状態に設定
される。
13.16.16(DEFAULT句)に規定する状況に当てはまる各データ項目に対しては,たとえ関連する
DEFAULT句がなくても,既定解釈値が確立する。
b) 第二段階(入力配布)
作用対象の要素のデータ記述にDESTINATION句があるとき,そのデータ項目の値がMOVE文の
規則に従って受取り側データ項目へと転記される。
c) 第三段階(内容検証)
作用対象のデータ項目の記述にCLASS句があるか,又は後続する88レベル記述項にVALID指
定若しくはINVALID指定があるとき,そのような各データ項目は,対応する字類の特殊名段落中
の定義に又は対応する88レベル記述項のVALUE句の記述に,矛盾しないか否か検査確認される。
この検査確認で不合格になるデータ項目があれば,その内部標識は内容が不当という状態に設定
される。
集団項目と従属項目の両方が内容検証の制御下にあるときは,従属項目のほうの内容検証が,集
団項目の内容検証よりも先行して適用される。
d) 第四段階(関係検証)
作用対象のデータ項目の記述にINVALID句がある各々のデータ項目は,この句が規定する関係検
証の規則に従って検査確認される。関係検証で不合格になるデータ項目があれば,その内部標識は
関係が不当という状態に設定される。
INVALID句は,同一のデータ記述項中に幾つ現れてもよい。条件が幾つかある場合の効果は,
INVALID句を一つだけ,元の条件をそれぞれ括弧で囲み論理結合子ORで結合してできる条件を用
いて指定したのと同様である。
集団項目及びその集団内の従属データ項目の両方が関係検証の制御下にあるときは,従属項目の
ほうの関係検証が,集団項目の関係検証よりも先に適用される。
e) 第五段階(誤り通知)
作用対象のデータ項目のいずれかに,内部標識の設定が妥当を示す初期値以外であるものがある
ときEC-VALIDATE例外状態になる。これらの内部標識のいずれかが,形式が不当の状態に設定さ
れているならEC-VALIDATE-FORMAT例外状態になる。これらの内部標識のいずれかが,内容が不
当の状態に設定されているならEC-VALIDATE-CONTENT例外状態になる。これらの内部標識のい
ずれかが,関係が不当の状態に設定されているならEC-VALIDATE-RELATION例外状態になる。
内部標識の設定が不当データの発生を表している基本データ項目があれば,その内部標識の値に
433
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
従って,形式・内容・関係のいずれかが不当だとみなされる。集団データ項目の形式が不当とみな
されるのは,従属項目のいずれかの形式が不当だった場合である。集団データ項目の内容又は関係
が不当とみなされるのは,従属項目のいずれかがその理由で不当だった場合,又は検査がその段階
で拒否されたことを集団項目自体の内部標識が示している場合である。
データ記述項にVALIDATE-STATUS句があってFOR指定がVALIDATE文の作用対象の要素を指
しているデータ項目は,これらのデータ記述項をデータ部に指定した順に,更新される[13.16.60
(VALIDATE-STATUS句)参照]。
7) VALIDATE文の実行におけるOCCURS句の効果は,次による。
a) 一意名1のデータ記述項がOCCURS句を含んでいるか,又はOCCURS句を含んでいるデータ記述
項に従属しているとき,一意名1自体に添字付けがなければならず,かつ,その添字又は添字の組
の値は,繰返しデータ項目のうちVALIDATE文が処理する特定の出現を示さなければならない。
b) 一意名1のデータ項目が集団データ項目であり,かつ,従属する項目に一つ以上のOCCURS句があ
るとき,VALIDATE文を実行すると,処理の5段階の全てにおいて,データ項目の各出現を他の出
現とは独立に処理する。OCCURS句にVARYING句を伴うとき,VARYING句でデータ名として定
義された全てのカウンタは,初めに初期設定され,各出現に対して次のデータ項目が処理されるた
びに暗黙に増分される。
c) 一意名1の従属項目のいずれかのOCCURS句にDEPENDING指定があるとき,DEPENDING指定
のデータ項目の値は,VALIDATE文の形式検証段階で,この句が現れるとすぐに評価される。得ら
れた値は,実行中のVALIDATE文のこの段階と後続の全ての段階で,処理するデータ項目の出現回
数を確定する。
8) 一意名1がファイル節中のあるレコードの全体又は一部を参照しており,ファイル記述項にVARYING
指定付きのRECORD句がある場合,VALIDATE文は一意名1の右側を適宜に空白詰め拡張したもの
とみなして処理する。
9) 一意名1の記述項に含まれるか又は従属しているDESTINATION句に指定したデータ項目はどれも,
一意名1のデータ項目に含まれたり重なり合ったりしていてはならない。
10) 一意名1の記述項に含まれるか又は従属しているDEFAULT句に書かれたデータ項目のいずれかを,
一意名1のデータ項目が包含したり,これと重なり合っていたりしてはならない。ただし,その
DEFAULT句が一意名1の従属項目内で,DEFAULT句の参照するデータ項目の記述より後にある場合
はこの限りでない。
14.8.47 WRITE文
WRITE(書出し)文は,出力ファイル又は入出力両用ファイルに対して論理レコードを引き渡す。また,
論理ページ内の行の縦方向の位置決めにも用いられる。
14.8.47.1 一般形式
書き方1(順呼出し)
WRITE
レコード名1
FILE ファイル名1
FROM
一意名1
定数1
BEFORE
AFTER
ADVANCING
一意名2
整数1
LINE
LINES
呼び名1
PAGE
434
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
[ retry指定 ]
WITH LOCK
WITH NO LOCK
AT
END-OF-PAGE
EOP
無条件文1
NOT AT
END-OF-PAGE
EOP
無条件文2
[END-WRITE]
書き方2(乱呼出し)
WRITE
レコード名1
FILE ファイル名1
FROM
一意名1
定数1
[ retry指定 ]
WITH LOCK
WITH NO LOCK
INVALID KEY 無条件文1
NOT INVALID KEY 無条件文2
[END-WRITE]
ここで,retry指定は,14.6.8(RETRY指定)による。
14.8.47.2 構文規則
1) 書出しファイルは,ファイル名1で参照されるファイル,又はレコード名1に関連するファイル名で
参照されるファイルとする。
2) 書出しファイルが順編成であるとき,書き方1を指定しなければならない。
3) 書出しファイルが索引編成又は相対編成であるとき,書き方2を指定しなければならない。
4) 一意名1が関数一意名であるとき,英数字関数又は各国文字関数の引用でなければならない。レコー
ド名1と一意名1が同じ領域を参照してはならない。
5) レコード名1は,データ部のファイル節の論理レコードの名前とする。これは修飾してもよい。
6) レコード名1を指定した場合,一意名1又は定数1は,受取り側作用対象としてレコード名1を指定
したMOVE文の送出し側作用対象として妥当なものでなければならない。
7) FILE指定を書いた場合,FROM指定も書かなければならない。さらに,次の規則を適用する。
a) 一意名1はMOVE文の送出し側作用対象として妥当なものでなければならない。
b) 定数1は英数字定数・ブール定数・各国文字定数でなければならず,表意定数であってはならない。
8) FILE指定を書いた場合,データ名1の記述中には,その従属データ項目をも含めて,記述にUSAGE
OBJECT REFERENCE句のあるデータ項目があってはならない。
9) 一意名1が組込み関数ではないビットデータ項目であってFILE指定がある場合,一意名1の記述は,
次のとおりでなければならない。
a) 一意名1の添字付け及び部分参照は,固定小数点数字定数又は算術式だけからなる。その算術式は,
全ての作用対象が固定小数点数字定数であって,べき乗演算子の指定はない。
b) バイト境界にけたよせされている。
10) 一意名1が組込み関数の引用であってFILE指定がある場合,それは英数字関数又は各国文字関数の
引用でなければならない。
435
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
11) 一意名1が組込み関数の引用であってFILE指定がない場合,それは英数字関数,ブール関数又は各
国文字関数の引用でなければならない。
12) 書出しファイルと関連するファイル記述項が,REPORT句付き又は整列併合用ファイル記述項であっ
てはならない。
13) 書出しファイルと関連するファイル記述項にLINAGE句があるときは,呼び名1の指定があってはな
らない。
14) 一意名2は,整数データ項目でなければならない。
15) 整数1は,正又はゼロでなければならない。
16) 呼び名1の指定がある場合,その名前は,実装者定義の機能名と関連付けられている。呼び名1は,
環境部の特殊名段落で定義する。
17) 一つのWRITE文に,ADVANCING PAGE指定とEND-OF-PAGE指定の両方を書いてはならない。
18) END-OF-PAGE指定又はNOT END-OF-PAGE指定を書く場合,書出しファイルに関連するファイル記
述項にLINAGE句を書いておかなければならない。
19) 語END-OF-PAGEと語EOPは,同義とする。
20) レコード名1が外側のプログラム中で定義され内側のプログラム中で参照されている場合,レコード
名1に関連するファイルのファイル記述項にはGLOBAL句がなければならない。
21) 書出しファイルに対して自動施錠の指定があるとき,WITH LOCK指定もWITH NO LOCK指定も書
いてはならない。
14.8.47.3 一般規則
全ての書き方
1) 書出しファイル結合子とは書出しファイルに関連するファイル結合子とする。書出しファイルの呼出
し法が順呼出しであれば,書出しファイル結合子のオープンモードは拡張又は出力でなければならな
い。呼出し法が乱呼出し又は動的呼出しであれば,書出しファイル結合子のオープンモードは入出力
両用又は出力でなければならない。オープンモードがこのとおりでなければ,WRITE文の実行は不成
功となり,書出しファイル指示子の入出力状態に"48"が設定される。
2) WRITE文の実行の成功によって引き渡された論理レコードは,それ以降はレコード領域中では使用不
能になる。ただし,レコード名1に関連するファイル名がSAME RECORD AREA句にも指定されてい
れば,この限りではない。その論理レコードは,レコード名1に関連するファイルだけではなく,関
連する出力ファイルと同じSAME RECORD AREA句に指定された,別のファイルのレコードとしても
使用可能である。
3) レコード名1及びFROM指定のあるWRITE文の実行結果は,次の文をこの順に実行するのと同じと
する。
a) MOVE文の規則に従った次の文。
MOVE 一意名1 TO レコード名1
又は
MOVE 定数1 TO レコード名1
b) 同じWRITE文でFROM指定がないもの。
4) WRITE文中に指定した表意定数のSPACEは,英数字空白の1文字を指す。
5) FILE指定のあるWRITE文の実行結果は,次の文をこの順に実行するのと同じとする。
− 第1の文は
MOVE 一意名1 TO 暗黙レコード1
436
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
又は
MOVE 定数1 TO 暗黙レコード1
− 第2の文は
WRITE 暗黙レコード1
ここで,暗黙レコード1とは,ファイル名1のレコード領域を指すものであって,ファイル記述項
に従属するレコード記述項を次のように書いた扱いとする。
a) 一意名1が組込み関数であるとき,組込み関数の返却値と同じ字類・項類・用途・長さをもつ。
b) 一意名1が組込み関数でないとき,一意名1と同じ記述をもつ。
c) 定数1を指定したときは,定数1と同じ字類・項類・用途・長さをもつ。
6) WRITE文の実行が成功完了した後,SAME RECORD AREA句に規定した場合を除き,レコード名1
の領域の情報は使用不能になるが,一意名1の領域中の情報は使用可能である。
7) 書出しファイル結合子の施錠モードが単一レコード施錠である場合,そのファイル結合子に関連する
あらゆるレコード錠はWRITE文の実行によって解除される。
8) 書出しファイル結合子に対してレコード錠が有効であって,WITH LOCK指定がある場合,WRITE文
の実行が成功すると,書出し対象レコードに関連するレコード錠が設定される。
9) ファイル位置指示子は,WRITE文の実行によって影響を受けない。
10) WRITE文の実行によって,書出しファイル結合子の入出力状態の値が更新される[9.1.12(入出力状
態)参照]。
11) WRITE文の実行が成功すると,論理レコードがオペレーティングシステムに引き渡される。
注記 相対ファイル又は順ファイルの論理レコードは長さゼロであってもよい。索引ファイルの論
理レコードには常にレコードキーを含むのに十分な長さがなければならない。
12) レコード名1を指定したとき,ファイルへ書き出されるバイト数がレコード名1の中のバイト数より
も大きい場合に,レコード名1の終端を越えるバイトの内容は規定されない。
13) WRITE文の実行が不成功になると,書出し動作は起こらず,レコード領域の内容は変化せず,書出し
ファイル結合子の入出力状態には条件の原因を示す値が,以降の一般規則に示すとおりに設定される。
制御の移行は,その他の指定及び入出力状態の値によって異なる[9.1.12(入出力状態)及び9.1.13(無
効キー条件)参照]。
14) 定数1の実行時表現のバイト数,一意名1のデータ項目のバイト数,及びレコード名1の(FORMAT
句があるときはFORMAT句によってレコード長が変更された後の)レコードのバイト数は,ファイ
ル名1に指定したRECORD IS VARYING句又はレコード名1に関連するファイル名に指定した
RECORD IS VARYING句で指定された最大バイト数よりも大きくてはならないし,最小バイト数より
も小さくてはならない。これに違反した場合,WRITE文の実行は不成功となり,書出しファイル指示
子の入出力状態に"44"が設定される。
15) RETRY指定は,ファイル共用のために開かれたファイルに対して,レコードを書き出すために必要な
資源を別の実行単位が施錠している場合の,WRITE文の振る舞いを制御するために用いる。入出力状
態の設定は,14.6.8(RETRY指定)による。
順ファイル
16) 順ファイルの直前直後の関係は,物理ファイルを生成する時のWRITE文の実行の順序によって確定
する。この関係は,物理ファイルの末尾にレコードを追加する場合以外は不変である。
17) 書出しファイル結合子が順編成であって,オープンモードが拡張であるとき,WRITE文を実行すると,
ファイル結合子のオープンモードが出力である場合と同様に,物理ファイルの末尾にレコードを追加
437
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
する。物理ファイル中にレコードが存在するとき,EXTEND指定付きOPEN文を実行した後に最初に
書き出されるレコードは,物理ファイル中の最後のレコードの直後に続けて書き出される。
18) ある順ファイルに対する複数のファイル結合子が,物理ファイルを拡張モードで開いた後,ファイル
を共用しながらレコードを追加する場合,これら追加対象のレコードは,物理ファイルを開いた時点
で存在するレコード群の直後に続けて書き出される。しかし,これ以外の順序は規定されない。
19) 外部で定義した物理ファイルの区域を越えて書き出そうとすると,WRITE文の実行は不成功となり,
書出しファイル指示子の入出力状態の値に"34"が設定される。
20) リール/ユニットの終わりを検出したとき,外部で定義した物理ファイルの区域を越えていなければ,
リール/ユニットの交換が行われ,現在ボリュームポインタは,物理ファイルの次のリール/ユニット
を指すように更新される。
21) ADVANCING指定及びEND-OF-PAGE指定は,印字ページの表現に対して,各行の縦方向の位置決め
を制御する。ADVANCING指定がない場合,利用者がAFTER ADVANCING 1 LINEを指定したのと同
様に,実装系が自動的な行送りを行う。縦方向の位置決めができない物理ファイルの場合,
ADVANCING指定及びEND-OF-PAGE指定は無視される。縦方向の位置決めができる物理ファイルで,
かつ,ADVANCING指定がある場合,次のとおりに行送りが行われる。
a) 整数1又は一意名2のデータ項目の値が正のとき,その値に等しい行数だけ,印字ページの表現を
行送りする。
b) 一意名2のデータ項目の値が負のとき,結果は規定されない。
c) 整数1又は一意名2のデータ項目の値がゼロのとき,印字ページの表現の位置決め変更は行わない。
d) 呼び名1を書いたとき,ハードウェア装置に対する実装者定義の規則に従って,印字ページの表現
を行送りする。
e) BEFORE指定を書いたとき,その行を書き出すのは,細則a),b),c),d) に従って印字ページの表
現を行送りする前とする。
f)
AFTER 指定を書いたとき,その行を書き出すのは,細則a),b),c),d) に従って印字ページの表
現を行送りした後とする。
g) PAGE指定を書いたとき,関連するファイル記述項にLINAGE句の指定があると,次の論理ページ
への位置決め変更の前又は後に(書いたほうの指定に従う。)論理ページ上にレコードを書き出す。
このとき,LINAGE句で指定した次の論理ページ本体の最初の行へと位置決めされる。
h) PAGE指定を書いたとき,関連するファイル記述項にLINAGE句の指定がないと,次の物理ページ
への位置決め変更の前又は後に(書いたほうの指定に従う。)物理ページ上にレコードを書き出す。
物理ページが意味をもたない特定の装置であるときは,BEFORE又はAFTER(書いたほうの指定に
従う。)ADVANCING 1 LINEを利用者が指定したのと同様に行送りする。
22) 書出しファイルのファイル記述項にLINAGE句の指定があるとき,WRITE文で書き出される行が現
在のページ本体内に収まりきらない場合に,ページ終了条件(end-of-page condition)が発生する。こ
れが起こるのは次の場合とする。
a) 印字ページ表現の論理的な終わりに達した。これが起こるのは,関連LINAGE-COUNTERがページ
の大きさ以上になった場合である。
注記 これを,ページあふれ条件(page overflow condition)と呼ぶ。
明示的な又は暗黙のAFTER指定があるとき,次の論理ページ本体の最初の行へと位置決め変更
してから,その行に論理レコードを書き出す。BEFORE指定があるとき,論理レコードを書き出し
438
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
てから,次の論理ページ本体の最初の行へと位置決め変更する。
b) LINAGE句にFOOTING指定があって,かつ,WRITE文の実行がページ本体の脚書き領域内に印字
又は行送りを引き起こした。これが起こるのは,関連LINAGE-COUNTERが脚書き開始位置の現在
値に等しくなるか超えるかしたものの,ページの大きさには達しない場合である。
23) ページ終了条件が発生すると,次の動作が起きる。
a) ページ終了条件が一般規則22) a) によるとき,EC-I-O-EOP-OVERFLOW例外状態になる。
ページ終了条件が一般規則22) b) によるとき,EC-I-O-EOP例外状態になる。
b) END-OF-PAGE指定があるとき,無条件文1に制御が移り,無条件文1中の各文の規則に従って実
行が続く。明示的に制御の移行を引き起こす手続き分岐文又は条件文が実行されれば,その文の規
則に従って制御が移る。さもなければ,無条件文1の実行が完了した後,WRITE文の終わりに制御
が移る。NOT END-OF-PAGE指定はあっても無視される。
24) NOT END-OF-PAGE指定のあるWRITE文の成功した実行中に,ページ終了条件が起きなければ,入
出力操作の実行後,無条件文2へ制御が移り,無条件文2中の各文の規則に従って実行が続く。明示
的に制御の移行を引き起こす手続き分岐文又は条件文が実行されれば,その文の規則に従って制御が
移る。さもなければ,無条件文2の実行が完了した後,WRITE文の終わりに制御が移る。NOT
END-OF-PAGE指定はあっても無視される。
相対ファイル
25) WRITE文は,次のとおりに進む。
a) 書出しファイル結合子の呼出し法が順呼出しであるとき,WRITE文の実行が成功するとレコードが
操作環境に引き渡される。書出しファイル結合子のオープンモードが出力であるとき,OPEN後に
最初に引き渡されるレコードの相対レコード番号は1とする。書出しファイル結合子のオープンモ
ードが拡張であるとき,OPEN後に最初に引き渡されるレコードには,物理ファイル中に既存する
最大のレコード番号より1大きいレコード番号を割り当てる。2番目以降に引き渡されるレコード
の相対レコード番号は,昇順の序数列とする。物理ファイルが共用されて,拡張モードで開かれて
いれば,レコード番号は必ずしも連続的ではないが,さもなければ,1ずつ連続的に大きくなる。
ファイル名1に対して又はレコード名1に関連するファイル名に対してRELATIVE KEY句の指定
がある場合,引渡し対象レコードの相対レコード番号がMOVE文の規則に従って相対キーデータ項
目へWRITE文の実行中に操作環境によって転記される。WRITE動作が成功すれば生成されること
になる相対レコード番号が,相対キーデータ項目に対して許される最大数値を超えるとき,WRITE
文が不成功となり,無効キー条件が成立し,書出しファイル結合子の入出力状態に "24"が設定され
る。
b) 書出しファイル結合子の呼出し法が乱呼出し又は動的呼出しであるとき,WRITE文の実行よりも前
に,相対キーデータ項目には,書出し対象レコードに関連する相対レコード番号を,実行時要素が
初期設定しておかなければならない。相対キーの値と一致する相対レコード番号をもつレコードが
物理ファイル中になければ,そのレコードが操作環境へ引き渡される。一致するレコードが物理フ
ァイル中にあれば,WRITE文の実行は不成功となり,無効キー条件が成立し,書出しファイル結合
子の入出力状態に"22"が設定される。
26) 相対ファイルを拡張モードでファイル結合子を用いて開いている場合,ファイル結合子を介してレコ
ードをファイルに追加する。操作環境へと最初に引き渡されるレコードの相対レコード番号はファイ
ル中に既存する最大の相対レコード番号より1大きい値とする。2番目以降に操作環境へ引き渡され
439
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
るレコードの相対レコード番号は1ずつ連続的に大きくなる。ファイル名1に対して又はレコード名
1に関連するファイル名に対してRELATIVE KEY句の指定がある場合,引渡し対象レコードの相対レ
コード番号がMOVE文の規則に従って相対キーデータ項目へWRITE文の実行中に操作環境によって
転記される。
27) ある相対ファイルに対する複数のファイル結合子が,ファイルを拡張モードで開いた後,ファイルを
共用しながらレコードを追加する場合,返ってくる相対キーの値は昇順になるが,必ずしも連続的で
あるとは限らない。
28) 相対ファイルを入出力両用モードで開いていて,乱呼出し法又は動的呼出し法であるとき,レコード
はファイルに挿入される。WRITE文の実行より前に,相対キーデータ項目には,書出し対象レコード
に関連する相対レコード番号を,実行時要素が初期設定しておかなければならない。そのレコードは
WRITE文の実行によって操作環境へ引き渡される。
29) 無効キー条件は次の状況下で成立する。呼出し対象レコードに関連する錠は無視される。
a) 相対キーデータ項目の値が,ファイル中の既存レコードを指している場合,書出しファイル結合子
の入出力状態に"22"が設定される。
b) 外部で定義した物理ファイルの区域を越えて書き出そうとした場合,書出しファイル結合子の入出
力状態に"24"が設定される。
c) 相対レコード番号の有効けた数が,相対キーデータ項目のけた数より大きい場合,書出しファイル
結合子の入出力状態に"24"が設定される。
索引ファイル
30) WRITE文の実行が成功すると,レコード領域の内容が操作環境へ引き渡される。このレコードを以降
は指定されたいずれのレコードキーに基づいても呼び出し得るように,操作環境はレコードキー項目
の内容を利用する。
31) 物理ファイル中のレコードに関する一意性の保証に及びレコードの順序付けに用いられる比較処理
は,ファイルに対する文字照合順序に基づいて,比較条件の規則に従う。
32) 主レコードキーの値は,ファイル中に存在するどのレコードの主レコードキーの値とも等しいもので
あってはならない。
33) 主レコードキーとしたデータ項目には,WRITE文の実行よりも前に,実行時要素が要望する値を設定
しておかなければならない。
34) 書出しファイル結合子の呼出し法が順呼出しであるときは,ファイル結合子を介してレコードを操作
環境へ引き渡すが,このとき,主レコードキーの値がファイルの文字照合順序に従って昇順になるよ
うにしなければならない。オープンモードが拡張である場合,ファイル結合子を介して操作環境へ最
初に引き渡されるレコードの主レコードキーの値は,ファイルを開いた時点で物理ファイル中に既存
する最大の主レコードキーの値よりも大きくなければならず,このファイル結合子を介してこれ以降
に操作環境へ引き渡される各レコードの主レコードキーの値は,このファイル結合子を介して書き出
した最大の主レコードキーの値よりも大きくなければならない。レコードの並び方がこの順序でない
とき,WRITE文の実行は不成功となり,無効キー条件が成立し,書出しファイル結合子の入出力状態
に"21"が設定される。
35) 書出しファイル結合子の呼出し法が乱呼出し又は動的呼出しであるときは,ファイル結合子を介して
レコードを操作環境へ引き渡すが,その順序は任意であってよい。
36) 書出しファイル結合子に関連するファイル管理記述項にALTERNATE RECORD KEY句がある場合,
440
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
副レコードキーの値が一意でなくてよいのは,そのデータ項目に対してDUPLICATES指定があるとき
だけとする。この場合,操作環境が提供するレコード群の格納方法では,レコードを順呼出しする場
面でこれらのレコードが取り出される順序と,操作環境が物理ファイル中へこれらのレコードを実際
に書き込んだ順序とが同じになる。DUPLICATES指定がないとき,副レコードキーの値が一意でない
と,WRITE文の実行は不成功となり,無効キー条件が成立し,書出しファイル結合子の入出力状態に
"22"が設定される。
37) 無効キー条件は次の状況下で成立する。レコードキーが等しいか否かの判定は,ファイルに対する文
字照合順序に基づいて,比較条件の規則に従う。無効キー条件は次の状況下で成立する。レコードキ
ーが等しいか否かの判定は,ファイルに対する文字照合順序に基づいて,比較条件の規則に従う。こ
れらの例外の検出ではレコード錠は無視される。
a) 書出しファイル結合子を出力用又は拡張用に順呼出し法で開いているとき,主レコードキーの値が,
そのファイル結合子を介して最後に書き出したレコードの主レコードキーの値より大でない場合,
書出しファイル結合子に関連する入出力状態に"21"が設定される。
b) 書出し対象のレコードの主レコードキーの値が,ファイル中に既存するレコードの主レコードキー
の値と等しい場合,書出しファイル結合子に関連する入出力状態に"22"が設定される。
c) 書出し対象のレコードの副レコードキーが重複を許さない場合,かつ,その副レコードキーの値が,
ファイルにあるレコードの対応する副レコードキーの値と等しい場合,書出しファイル結合子に関
連する入出力状態に"22"が設定される。
d) 操作環境へ引き渡されるレコードが,外部で定義した物理ファイルの区域を越えそうになった場合,
書出しファイル結合子に関連する入出力状態に"24"が設定される。
15 組込み関数
組込み関数(intrinsic function)はそれぞれ,次の事項を規定する。
1) 関数の名前及び記述
2) 関数の型
3) 関数の一般形式
4) 引数(もしあれば)
5) 関数の返却値
関数参照についての規則及び説明は,8.4.2.2(関数一意名)による。
15.1 関数の型
関数の型は,次による。
1) 英数字関数(alphanumeric function) この字類及び項類は英数字とする。このデータ項目のもつ文字
位置の個数は,その関数の定義で規定する。英数字関数の用途は暗黙にDISPLAYとする。関数の定
義中に別な指定が特にない限り,このデータ項目の内容は,実行時の,関数を引用した時点で有効な
英数字符号化文字集合で表現される。
2) ブール関数(boolean function) この字類及び項類はブールとする。このデータ項目のもつブール位
置の個数は,その関数の定義で規定する。ブール関数の用途は暗黙にBITとする。
3) 各国文字関数(national function) この字類及び項類は各国文字とする。このデータ項目のもつ文字
位置の個数は,その関数の定義で規定する。各国文字関数の用途は暗黙にNATIONALとする。関数
の定義中に別な指定が特にない限り,このデータ項目の内容は,実行時の,関数を引用した時点で有
441
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
効な各国文字符号化文字集合で表現される。
4) 数字関数(numeric function) この字類及び項類は数字とする。数字関数は演算符号をもつ。
5) 整数関数(integer function) この字類及び項類は数字とする。整数関数は演算符号をもつが,小数点
の右には数字けたをもたない。
6) 指標関数(index function) この字類及び項類は指標とする。
15.2 引数
引数は,関数を評価するときに用いる値を指定する。引数は,関数一意名の中で指定する。必要な引数
の個数は関数の定義によるが,0個,1個又はそれ以上の場合がある。幾つかの関数では指定できる引数の
個数は可変とする。関数一意名の中で指定する引数の順序位置は,関数値に到達するための,各引数の値
の解釈を決める。
引数は,特定の字類若しくはその部分集合であること,又は,キーワード,型宣言,若しくは呼び名で
あること,を要求される場合がある。引数の型には,次のものがある。
1) 英字 英字字類の基本データ項目又は英字だけを含む英数字定数を指定しなければならない。関数の
値を決めるために,この引数の大きさを用いることがある。
2) 英数字 英字字類若しくは英数字字類のデータ項目又は英数字定数を指定しなければならない。関数
の値を決めるために,この引数の大きさを用いることがある。関数の引数として禁止されない限り,
強い型付けの集団項目は字類及び項類が英数字であるとみなされる。
3) プール ビット集団,ブール式,ブール定数又は基本ブールデータ項目を指定しなければならない。
関数の値を決めるために,この引数の大きさを用いることがある。
4) 指標 指標データ項目を指定しなければならない。関数の値を決めるために,この引数の大きさを用
いることがある。
5) 整数 値が常に整数値となる算術式,又は整数データ項目を指定しなければならない。関数の値を決
めるために,符号も含めたこの算術値を用いることがある。
6) キーワード キーワードは,関数定義に従って指定しなければならない。
7) 現地特性名 特殊名段落で定義した現地特性名を指定しなければならない。関数の値を決めるために,
この現地特性名に関連する現地特性を用いることがある。
8) 各国文字 各国文字集団,各国文字定数,又は用途NATIONALの基本データ項目を指定しなければ
ならない。関数の値を決めるために,この引数の大きさを用いることがある。
9) 数字 算術式又は数字データ項目を指定しなければならない。関数の値を決めるために,この算術値
を用いることがある。
10) オブジェクト オブジェクト参照を指定しなければならない。ただし,既定義オブジェクト参照の
SUPERを指定してはならない。関数の値を決めるために,この引数の大きさを用いることがある。
11) 順序付け名 特殊名段落で定義した順序付け名を指定しなければならない。関数の値を決めるために,
この順序付け名に関連する順序付け表を用いることがある。
12) ポインタ ポインタ字類のデータ項目を指定しなければならない。関数の値を決めるために,この引
数の大きさを用いることがある。
13) 型宣言 型宣言を指定しなければならない。関数の値を決めるために,この型宣言の大きさを用いる
ことがある。
関数の規則は,意味のある関数の値を導くために,引数に対する許容値に制限を課すことがある。引数
の値が関数定義の規則に違反している場合で,項目識別又は式の評価の処理中に例外状態が起きなかった
442
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
場合EC-ARGUMENT-FUNCTION例外状態になる。項目識別又は式の評価の処理中に例外状態が起きた場
合,EC-ARGUMENT-FUNCTIONではなくその例外状態が引き起こされる。EC-ARGUMENT-FUNCTION
例外状態になったがこの例外の検査が無効である場合,関数引用の結果は実装者定義とする。
注記 その他の例外状態としては,例えば,添字又は算術式の評価中にEC-SIZE-OVERFLOWが発生
する可能性がある。
関数の定義が,ある引数に対して可変個の繰返し指定を許している場合,そこに表を指定してもよい。
表を指定するには,その表を一意に識別するデータ名と修飾語及び添字付けとを書く。添字のうちの一つ
以上は,語ALLを書く。
添字に語ALLを書くと,その添字に関連する表要素を全て指定したかのように扱われる。表要素の暗黙
の指定は,次の順で左から右へと指定する。先頭(左端)に指定されるのは,語ALLの全ての添字を1
で置換した一意名とする。次に指定されるのは,語ALLの添字のうち右端のものに1を加えた,その一意
名とする。こうして,右端の語ALLの添字を1ずつ増やしながら,その上限に達するまで指定を繰り返す。
次いで語ALLが二つ以上ある場合には,右端の語ALLのすぐ左の語ALLの添字に1を加える。右端の語
ALLの添字を1に戻し,この添字を増やす過程を繰り返す。右端の語ALLのすぐ左の語ALLの添字を1
ずつ増やしながら,その上限に達するまで繰り返す。さらに,語ALLがある場合は,右から左へ語ALL
の添字の一つずつについて,1からそれぞれの上限まで1ずつ増やす過程を,左端の語ALLの添字に達す
るまで繰り返す。語ALLの添字がOCCURS DEPENDING ON句に関連している場合の添字の上限は,
OCCURS DEPENDING ON句の制御変数の値に従う。語ALLの添字の評価では,一つ以上の引数を生じな
ければならない。さもなければ,その関数一意名への参照の結果は規定されない。
15.3 関数の返却値
関数を評価すると一時的な基本データ項目に返却値が生成される。関数の型が関数の返却値の型を識別
する[15.1(関数の型)参照]。
15.3.1 数字関数及び整数関数
整数及び数字の組込み関数の返却値の規則には,等価な算術式(equivalent arithmetic expressions)が一つ
以上含まれている。等価な算術式とは,関数,その引数,及び返却値との間の関係を形式的に定義するも
のである。等価な算術式の表現では,特定の引数を可変個繰り返し指定可能な場合,規則中で等価な算術
式を,引数が1個,2個,n個の場合に別々に規定することがある。
数字関数及び整数関数の返却値は,算術モードすなわち固有算術か標準算術かと,関数に対する等価な
算術式の規定の有無とに従って異なる。
標準算術が有効であるとき,数字関数及び整数関数の返却値は,一時的な標準中間データ項目に収めて
返却される。ちなみに,DATE-TO-YYYYMMDD関数に第3引数がない場合,DAY-TO-YYYYDDD関数に
第3引数がない場合,YEAR-TO-YYYY関数に第3引数がない場合及びRANDOM関数に引数がない場合
を除き,ある関数が実行時要素の単一実行中に繰り返し出現するとき,その引数の値と指定の順序,文字
照合順序,及び現地特性に変更がない限り,全ての出現に対しての返却値は同じになる。
固有算術が有効であるとき,返却値の特性と表現形式は実装者定義とする。
固有算術が有効であり等価な算術式の規定がある場合,返却値はその式の,実装者定義の近似値である。
注記 次の一つ以上が適用されるとき,等価な算術式の結果は実装者定義とする。
1) 固有算術が有効である。
2) 一つ以上の引数が実装者定義である。
3) 等価な算術式を構成する一つ以上の算術式が実装者定義の結果を生成する。
443
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4) 結果が実装者定義であると明示してある。
標準算術が有効で,等価な算術式が指定されている場合,次に従う。
1) 返却値は等価な算術式と等しい。
注記 結果として,次の関係条件が真となる。
関数一意名 = 等価な算術式
2) 次の一つ以上が適用されるとき,等価な算術式の結果は実装者定義とする。
a) 一つ以上の引数が実装者定義である。
b) 等価な算術式を構成する一つ以上の算術式が実装者定義の結果を生成する。
c) 返却値が実装者定義であると明示してある。
標準算術と固有算術のいずれが有効のときに,数字及び整数の組込み関数に等価な算術式がない場合,
関数定義中で規定されない限り,その返却値は実装者定義とする。
15.4 日付変換関数
日付変換関数では,グレゴリオ暦を用いる。うるう年の決定方法は,JIS X 0301の4.3.2.1(グレゴリオ
暦)による。
日付変換関数で用いる整数日付形式では,1601年1月1日月曜日を第1日とする。これは,整数日付と
DAY-OF-WEEKとの間に“整数日付が1の日は,DAY-OF-WEEKが1の月曜日であった”という単純な関
係を確立するために選択したものである。
標準形式はYYYYMMDDとする。YYYYは年を,MMは月を,DDは日を表す。
年日形式はYYYYDDDとする。YYYYは年を,DDDは年内の通日を表す。
15.5 関数の要約
使用可能な関数の要約を,表22(関数の表)に示す。
“引数”欄では引数の型を規定し,“型”の欄では関数の型を規定する。型は,次による。
Alph:
英字
(alphabetic)
Anum:
英数字 (alphanumeric)
Bool:
ブール (boolean)
Ind:
指標
(index)
Int:
整数
(integer)
Key:
キーワード(keyword)
Loc:
現地特性(locale)
Ord:
順序付け表(ordering-table)
Nat:
各国文字 (national)
Num:
数字
(numeric)
Obj:
オブジェクト(object)
Ptr:
ポインタ(pointer)
Type:
型宣言 (type declaration)
“引数”欄でのNumには,Intの意味も含まれる。関数の型が引数の型から決まる場合は,“引数”欄に
IntとNumの両方を並べて示す。
“引数”欄でのAnumには,強い型付けの集団項目も含まれる。関数の型が引数の型から決まる場合,
強い型付けの引数を指定して,たとえ引数が全て同じ型であっても,関数は英数字型とする。
“返却される値”欄には,返却される値の摘要を記す。これ以上の詳細は,関数の定義による。
444
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表22−関数の表
組込み関数名
引数
型
返却される値
ABS
Int1又は
Num1
引数に
従う
引数の絶対値
ACOS
Num1
Num
Num1の逆余弦
ANNUITY
Num1,Int2
Num
元金1,利率Num1,期間Int2の均等払い
額
ASIN
Num1
Num
Num1の逆正弦
ATAN
Num1
Num
Num1の逆正接
BOOLEAN-OF-INTEGER
Int1,Int2
Bool
引数1の数値と等価な2進値を表現する
ブール項目
BYTE-LENGTH
Alph1又は
Anum1又は
Bool1又は
Ind1又は
Nat1又は
Num1又は
Obj1又は
Ptr1又は
Type1
Int
バイトの個数で表した引数の長さ
CHAR
Int1
Anum
プログラム文字照合順序における
順序位置Int1の文字
CHAR-NATIONAL
Int1
Nat
各国文字プログラム照合順序における
順序位置Int1の文字
COS
Num1
Num
Num1の余弦
CURRENT-DATE
-
Anum
現在の日付・時刻と現地時間の時差
DATE-OF-INTEGER
Int1
Int
グレゴリオ通日Int1に対応する
標準形式yyyymmdd
DATE-TO-YYYYMMDD
Int1,Int2,Int3 Int
引数2と引数3を基準にYYMMDD形式
からYYYYMMDD形式へ変換した引数1
DAY-OF-INTEGER
Int1
Int
整数日付と等価な年日形式yyyyddd
DAY-TO-YYYYDDD
Int1,Int2,Int3 Int
引数2と引数3を基準にYYDDD形式
からYYYYDDD形式へ変換した引数1
DISPLAY-OF
Nat1,Anum2
Anum
引数Nat1の用途DISPLAYの表現
E
−
Num
自然対数の底eの値
EXCEPTION-FILE
−
Anum
例外を引き起こしたファイル例外の情報
EXCEPTION-FILE-N
−
Nat
例外を引き起こしたファイル例外の情報
EXCEPTION-LOCATION
−
Anum
例外が発生した文の所在(実装者定義)
EXCEPTION-LOCATION-N −
Nat
例外が発生した文の所在(実装者定義)
EXCEPTION-STATEMENT
−
Anum
例外が発生した文の名前
EXCEPTION-STATUS
−
Anum
直前例外を識別する例外名
EXP
Num1
Num
eをNum1でべき乗
EXP10
Num1
Num
10をNum1でべき乗
FACTORIAL
Int1
Int
Int1の階乗
FRACTION-PART
Num1
Num
Num1の小数部
HIGHEST-ALGEBRAIC
Anum1又は
Int1又は
Nat1又は
Num1
Int
Num
引数項目内で表現可能な最大の代数値
445
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表22−関数の表(続き)
組込み関数名
引数
型
返却される値
INTEGER
Num1
Int
Num1を超えない最大の整数
INTEGER-OF-BOOLEAN
Bool1
Int
右詰めしたBool1とビット構成の等しい
2進倍精度(BINARY-DOUBLE)項目の値
INTEGER-OF-DATE
Int1
Int
標準形式日付(YYYYMMDD)のInt1に
対応するグレゴリオ通日
INTEGER-OF-DAY
Int1
Int
年日形式日付(YYYYDDD)のInt1に
対応するグレゴリオ通日
INTEGER-PART
Num1
Int
Num1の整数部
LENGTH
Alph1又は
Anum1又は
Bool1又は
Ind1又は
Nat1又は
Num1又は
Obj1又は
Ptr1又は
Type1
Int
文字位置又はブール位置の個数で表した
引数の長さ
LOCALE-COMPARE
Alph1又は
Anum1又は
Nat1,
Alph2又は
Anum2又は
Nat2,
Loc3
Anum
現地特性で定義された順序を使用した
引数1と引数2の比較結果を示す文字
LOCALE-DATE
Anum1又は
Nat1,Loc2
Anum
引数2の現地特性から決まる形式へと
変換した引数1の日付を含む文字列
LOCALE-TIME
Anum1又は
Nat1,Loc2
Anum
引数2の現地特性から決まる形式へと
変換した引数1の時刻を含む文字列
LOG
Num1
Num
eを底とするNum1の自然対数
LOG10
Num1
Num
10を底とするNum1の常用対数
LOWER-CASE
Alph1又は
Anum1又は
Nat1
引数に
従う*
引数中のあらゆる大文字を小文字化した
文字列
LOWEST-ALGEBRAIC
Anum1又は
Int1又は
Nat1又は
Num1
Int
Num
引数項目内で表現可能な最小の代数値
MAX
Alph1 …又は
Anum1 …又は
Ind1 …又は
Int1 …又は
Nat1 …又は
Num1 …
引数に
従う*
引数の最大値
MEAN
Num1 …
Num
引数の算術平均値
MEDIAN
Num1 …
Num
引数の中央値
MIDRANGE
Num1 …
Num
引数の最小値及び最大値の平均
446
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表22−関数の表(続き)
組込み関数名
引数
型
返却される値
MIN
Alph1 …又は
Anum1 …又は
Ind1 …又は
Int1 …又は
Nat1 …又は
Num1 …
引数に
従う*
引数の最小値
MOD
Int1,Int2
Int
Int2を法とするInt1の剰余
NATIONAL-OF
Anum1,Nat2
Nat1
引数Anum1の用途NATIONAL表現
NUMVAL
Anum1又は
Nat1
Num
数字定数の形をした数字列の数値
NUMVAL-C
Anum1又は
Nat1,
Anum2又は
Nat2又は
Key2 Loc2,
Key3
Num
コンマ及び通貨記号のある数字列の数値
NUMVAL-F
Anum1又は
Nat1
Num
浮動小数点数を表現する数字列の数値
ORD
Alph1又は
Anum1又は
Nat1
Int
文字照合順序においての順序番号
ORD-MAX
Alph1 …又は
Anum1 …又は
Ind1 …又は
Nat1 …又は
Num1 …
Int
引数中での最大値の順序番号
ORD-MIN
Alph1 …又は
Anum1 …又は
Ind1 …又は
Nat1 …又は
Num1 …
Int
引数中での最小値の順序番号
PI
-
Int
π(円周率)の値
PRESENT-VALUE
Num1,Num2 … Num
将来期末となる金額Num2に対しての
割引率Num1での現在価値
RANDOM
Int1
Num
乱数
REM
Num1,Num2
Num
Num1÷Num2の剰余
REVERSE
Alph1又は
Anum1又は
Nat1
引数に
従う*
引数の文字の順序を逆にしたもの
SIGN
Num1
Int
Num1の符号
SIN
Num1
Num
Num1の正弦
SQRT
Num1
Num
Num1の平方根
447
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表22−関数の表(続き)
組込み関数名
引数
型
返却される値
STANDARD-COMPARE
Alph1又は
Anum1又は
Nat1,
Alph2又は
Anum2又は
Nat2,
Ord3,Int4
Anum
引数1と引数2とを比較するために
引数3の順序表と引数4の比較レベルを
使用した,その比較結果を表す文字
STANDARD-DEVIATION
Num1 …
Num
引数の標準偏差
SUM
Int1 …又は
Num1 …
引数に
従う
引数の合計
TAN
Num1
Num
Num1の正接
TEST-DATE-YYYYMMDD
Int1
Int
Int1が妥当な標準形式日付であれば0
さもなければ誤りのある文字の位置
TEST-DAY-YYYYDDD
Int1
Int
Int1が妥当な年日形式日付であれば0
さもなければ誤りのある文字の位置
TEST-NUMVAL
Anum1又は
Nat1
Int
引数1がNUMVALの要求に適合なら0
さもなければ誤りのある文字の位置
TEST-NUMVAL-C
Anum1又は
Nat1,
Anum2又は
Nat2又は
Key2 Loc2,
Key3
Int
引数1がNUMVAL-C要求に適合なら0
さもなければ誤りのある文字の位置
TEST-NUMVAL-F
Anum1又は
Nat1
Int
引数1がNUMVAL-F要求に適合なら0
さもなければ誤りのある文字の位置
UPPER-CASE
Alph1又は
Anum1又は
Nat1
引数に
従う*
引数中のあらゆる小文字を大文字化した
文字列
VARIANCE
Num1 …
Num
引数の分散
WHEN-COMPILED
-
Anum
翻訳単位が翻訳された日時
YEAR-TO-YYYY
Int1,Int2,Int3 Int
引数2と引数3の値を基準にYYから
YYYYへと変換した引数1
注*
英字の引数だけをもつ関数は,英数字型とする。
15.6 ABS関数
ABS(絶対値)関数は,引数の絶対値を返す。この関数の型は,引数の型に従って次のとおりとする。
引数の型
関数の型
整数
整数
数字
数字
15.6.1 一般形式
FUNCTION ABS ( 引数1 )
15.6.2 引数
1) 引数は,字類が数字でなければならない。
15.6.3 関数の返却値
1) 返却値に等価な算術式は,次のとおりとする。
448
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
a) 引数1の値がゼロ又は正のとき
( 引数1 )
b) 引数1の値が負のとき
(‒ (引数1))
15.7 ACOS関数
ACOS(逆余弦)関数は,引数1の逆余弦(arc-cosine)をラジアン単位で表した近似値を返す。
この関数の型は,数字とする。
15.7.1 一般形式
FUNCTION ACOS ( 引数1 )
15.7.2 引数
1) 引数1は,字類が数字でなければならない。
2) 引数1の値は,‒1 ≦ 引数1 ≦ +1 でなければならない。
15.7.3 関数の返却値
1) 返却値は,引数1の逆余弦の近似値とする。その値域は 0 ≦ 返却値 ≦ π である。
15.8 ANNUITY関数
ANNUITY(均等払い額)関数は,元金を1とした,毎期の均等払い額の(比率の)近似値を返す。利
率は,引数1で指定する。期間の回数は,整数値とし引数2で指定する。利息は毎期の終わりに,支払い
に先立って計算する。この関数の型は,数字とする。
15.8.1 一般形式
FUNCTION ANNUITY ( 引数1 引数2 )
15.8.2 引数
1) 引数1は,字類が数字でなければならない。
2) 引数1の値は,ゼロ以上でなければならない。
3) 引数2は,正の整数でなければならない。
15.8.3 関数の返却値
1) 返却値に等価な算術式は,次のとおりとする。
a) 引数1の値がゼロであるとき
(1 / (引数2))
b) 引数2の値がゼロでないとき
((引数1) / (1 ‒ (1 + (引数1)) ** (‒ (引数2))))
15.9 ASIN関数
ASIN(逆正弦)関数は,引数1の逆正弦(arc-sine)をラジアン単位で表した近似値を返す。この関数の
型は,数字とする。
15.9.1 一般形式
FUNCTION ASIN ( 引数1 )
15.9.2 引数
1) 引数1は,字類が数字でなければならない。
2) 引数1の値は,‒1 ≦ 引数1 ≦ +1 でなければならない。
15.9.3 関数の返却値
1) 返却値は,引数1の逆正弦の近似値とする。その値域は ‒π/2 ≦ 返却値 ≦ +π/2 である。
449
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
15.10 ATAN関数
ATAN(逆正接)関数は,引数1の逆正接(arc-tangent)をラジアン単位で表した近似値を返す。
この関数の型は,数字とする。
15.10.1 一般形式
FUNCTION ATAN ( 引数1 )
15.10.2 引数
1) 引数は,字類が数字でなければならない。
15.10.3 関数の返却値
1) 返却値は,引数1の逆正接の近似値とする。その値域は ‒π/2 < 返却値 < +π/2 である。
15.11 BOOLEAN-OF-INTEGER関数
BOOLEAN-OF-INTEGER(整数のブール化)関数は,引数1の2進値を表す,用途がBITのブール項目
を返す。引数2は,返されるブールデータ項目の長さを指定する。この関数の型は,ブールとする。
15.11.1 一般形式
FUNCTION BOOLEAN-OF-INTEGER ( 引数1 引数2 )
15.11.2 引数
1) 引数1は,正の整数でなければならない。
2) 引数2は,ゼロでない正の整数でなければならない。
15.11.3 関数の返却値
1) 返却値は,用途がBITのブール項目であり,引数1の値の2進表現と等しいビット構成をもち,最右
側ビット位置が最下位の2進けたになる。引数2が示す個数のブール位置をもつブール項目を返すた
め,そのブール項目の左側にゼロ詰めか切捨てが必要に応じて行われる。
注記 2進表現とは,数学的概念である。この表現は,COBOLの表現形式と同じでなくてもよい。
15.12 BYTE-LENGTH関数
BYTE-LENGTH(バイト長)関数は,引数の長さをバイトの個数で表した整数を返す。
この関数の型は,整数とする。
15.12.1 一般形式
FUNCTION BYTE-LENGTH ( 引数1 )
15.12.2 引数
1) 引数1は,次のいずれかでなければならない。
− 英数字定数又は各国文字定数
− 基底付き項目
− 型名
− 任意の字類又は項類のデータ項目
15.12.3 関数の返却値
1) 返却値は,引数1の長さをバイトの個数で表した整数である。
注記 LENGTH関数との相違は,用途がNATIONAL又はBITである引数の長さが各国文字位置又
はビット位置の個数で得られるのでなく,用途にかかわらずバイト数で得られるという点で
ある。
2) 引数1のデータ記述項に従属するデータ記述項のいずれかの記述にDEPENDING指定付きのOCCURS
句があるとき,次による。
450
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
a) 引数1が実データと関連のない基底付き項目であるとき又は型宣言であるとき,引数1の長さは,
受取り側データ項目に対するOCCURS句の規則に従って決まる。
b) さもなければ,引数1の長さは,送出し側データ項目に対するOCCURS句の規則に従って決まる。
注記 13.16.36.3(OCCURS句)の一般規則8) 参照。
3) 引数1に暗黙のFILLER位置がある場合,返却値にはその文字位置の数が含まれる。
4) 引数1が占めるバイト数が整数ではない場合,返却値は次に大きい整数値へと丸められる。
15.13 CHAR関数
CHAR(文字化)関数は,英数字プログラム照合順序中で引数1の値と等しい順序位置にある,英数字
1文字の値を返す。この関数の型は,英数字とする。
15.13.1 一般形式
FUNCTION CHAR ( 引数1 )
15.13.2 引数
1) 引数1は,整数でなければならない。
2) 引数1の値は1以上であって,英数字プログラム照合順序に含まれる順序位置の個数を超えない値で
なければならない。
15.13.3 関数の返却値
1) 返却値は,英数字プログラム照合順序中で引数1の値と等しい順序位置にある文字とする。
2) 英数字プログラム照合順序中の同じ順序位置に2個以上の文字が定義されている場合,返却文字は,
その文字位置に対して定義された最初の文字とする。同じ位置にある複数個の文字の順序が規定され
ない場合,これら複数個の文字のうちどれを返すかは,実装者定義とする。ある特定の実装系と文字
照合順序と順序位置に対して,CHAR関数の呼出しは毎回,同じ文字を返す。
15.14 CHAR-NATIONAL関数
CHAR-NATIONAL(各国文字化)関数は,各国文字プログラム照合順序中で引数1の値と等しい順序位
置にある,各国文字1文字の値を返す。この関数の型は,各国文字とする。
15.14.1 一般形式
FUNCTION CHAR-NATIONAL ( 引数1 )
15.14.2 引数
1) 引数1は,整数でなければならない。
2) 引数1の値は1以上であって,各国文字プログラム照合順序に含まれる順序位置の個数を超えない値
でなければならない。
15.14.3 関数の返却値
1) 返却値は,各国文字プログラム照合順序中で引数1の値と等しい順序位置にある文字とする。
2) 各国文字プログラム照合順序中の同じ順序位置に 2個以上の文字が定義されている場合,返却文字は,
その文字位置に対して定義された最初の文字とする。同じ位置にある複数個の文字の順序が規定され
ない場合,これら複数個の文字のうちどれを返すかは,実装者定義とする。ある特定の実装系と文字
照合順序と順序位置に対して,CHAR-NATIONAL関数の呼出しは毎回,同じ文字を返す。
15.15 COS関数
COS(余弦)関数は,引数1で指定したラジアン単位の角度に対する余弦(cosine)の近似値を返す。
この関数の型は,数字とする。
15.15.1 一般形式
451
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
FUNCTION COS ( 引数1 )
15.15.2 引数
1) 引数は,字類が数字でなければならない。
15.15.3 関数の返却値
1) 返却値は,引数1の余弦の近似値とする。その値域は ‒1 ≦ 返却値 ≦ +1 である。
15.16 CURRENT-DATE関数
CURRENT-DATE(現在の日時)関数は,この関数を評価するシステムが提供する,日付及び時刻,並び
に現地時間の時差を表す21文字の英数字の値を返す。この関数の型は,英数字とする。
15.16.1 一般形式
FUNCTION CURRENT-DATE
15.16.2 関数の返却値
1) 返却値は次による。文字位置の番号付けは左から右へ1からの昇順である。
文字位置 内容
1〜 4
グレゴリオ暦の年を表す4けたの数字。
5〜 6
月を表す2けたの数字で,その範囲は01〜12。
7〜 8
日を表す2けたの数字で,その範囲は01〜31。
9〜10
時を表す2けたの数字で,その範囲は00〜23。
11〜12
分を表す2けたの数字で,その範囲は00〜59。
13〜14
秒を表す2けたの数字で,その範囲は
− LEAP-SECOND指示のOFF指定が有効なら00〜59。
− LEAP-SECOND指示のON指定が有効なら00〜nn。
ここで,nnの値は実装者定義とする。
15〜16
1/100秒を表す2けたの数字で,その範囲は00〜99。
この関数を評価するシステムに秒の小数部を提供する機能がなければ値00を返す。
17
文字"-",文字"+",文字"0"のいずれか。先行文字位置に示す現地時間が協定世界時
より遅れている場合は文字"-"を,進んでいる場合又は同じである場合は文字"+"を
返す。この関数を評価するシステムに,現地時間の時差を提供する機能がなければ
文字"0"を返す。
18〜19
文字位置17が"-"の場合,00〜12の範囲の数字2けたで協定世界時からの現地時間
の遅れ時差の時間数を表す。"+"の場合,00〜13の範囲の数字2けたで協定世界時
からの現地時間の進み時差の時間数を表す。文字位置17が"0"のとき値00を返す。
20〜21
文字位置17が"-"又は"+"の場合,00〜59の範囲の数字2けたで現地時間の時差を
分単位で表す。文字位置17が"0"のとき値00を返す。
15.17 DATE-OF-INTEGER関数
DATE-OF-INTEGER(通日→標準日付変換)関数は,グレゴリオ暦の日付を,グレゴリオ通日から標準
形式(YYYYMMDD)に変換する。この関数の型は,整数とする。
15.17.1 一般形式
FUNCTION DATE-OF-INTEGER ( 引数1 )
15.17.2 引数
1) 引数1は,グレゴリオ暦の1601年1月1日を第1日とした日数を表す,正の整数とする。これが,
FUNCTION INTEGER-OF-DATE (99991231) の値3 067 671を超えてはならない。
15.17.3 関数の返却値
452
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) 返却値は,引数1に指定した整数のグレゴリオ通日に等価な標準形式日付を表す。
2) 返却値はYYYYMMDDの形式となる。YYYYがグレゴリオ暦の年,MMがその年の月,DDがその月
の日を表す。
15.18 DATE-TO-YYYYMMDD関数
DATE-TO-YYYYMMDD(西暦4けた化年月日)関数は,引数1の形式をYYMMDDからYYYYMMDD
に変換する。引数2は,実行日時の年に加算して,引数1の年が収まる100年の区間,すなわち,“移動窓”
の最後の年を定義する。引数3は実行日時の年を指定する。この関数の型は,整数とする。
15.18.1 一般形式
FUNCTION DATE-TO-YYYYMMDD ( 引数1 [引数2 [引数3]])
15.18.2 引数
1) 引数1は,1 000 000未満の正の整数でなければならない。
注記 この関数は,引数1の妥当性の検査を行わない。この返却値はTEST-DATE-YYYYMMDD関
数の引数にすると,その妥当性を検査できる。
2) 引数2は,整数でなければならない。
3) 引数2を省略すると,関数の評価は引数2に50を指定した場合と同様になる。
4) 引数3は,整数であって1 601〜9 999でなければならない。
5) 引数3を省略すると,関数の評価は引数3に次を指定した場合と同様になる。
(FUNCTION NUMVAL (FUNCTION CURRENT-DATE (1:4)))
6) 引数2と引数3の値の合計は,1 700〜9 999でなければならない。
15.18.3 関数の返却値
1) 返却値に等価な算術式は,次のとおりとする。
(FUNCTION YEAR-TO-YYYY (YY, 引数2, 引数3) * 10000 + MMDD)
ここで,
YY = FUNCTION INTEGER (引数1 / 10000)
MMDD = FUNCTION MOD (引数1, 10000)
また,ここでの引数1,引数2及び引数3は,このDATE-TO-YYYYMMDD関数引用自体の引数1,
引数2及び引数3と同一とする。
注記1 2002年の時点でDATE-TO-YYYYMMDD (851003,10) の返却値は19851003になる。1994
年の時点でDATE-TO-YYYYMMDD (981002,(‒10)) の返却値は18981002になる。
注記2 固定窓と移動窓のアルゴリズムを指定する方法は,YEAR-TO-YYYY関数の注記による。
15.19 DAY-OF-INTEGER関数
DAY-OF-INTEGER(通日→年日変換)関数は,グレゴリオ暦の日付を,グレゴリオ通日から年日形式
(YYYYDDD)に変換する。この関数の型は,整数とする。
15.19.1 一般形式
FUNCTION DAY-OF-INTEGER ( 引数1 )
15.19.2 引数
1) 引数1は,グレゴリオ暦の1601年1月1日を第1日とする通日を表す,正の整数とする。
これが,FUNCTION INTEGER-OF-DATE (99991231) の値3 067 671を超えてはならない。
15.19.3 関数の返却値
1) 返却値は,引数1に指定した整数のグレゴリオ通日に等価な年日日付を表す。
453
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
2) 返却値は,YYYYDDDの形式とする。YYYYがグレゴリオ暦の年,DDDがその年の通日を表す。
15.20 DAY-TO-YYYYDDD関数
DAY-TO-YYYYDDD(西暦4けた化通日)関数は,引数1の形式をYYDDDからYYYYDDDに変換す
る。引数2は,実行日時の年に加算して,引数1の年が収まる100年の区間,すなわち,“移動窓”の最後
の年を定義する。引数3は実行日時の年を指定する。この関数の型は,整数とする。
15.20.1 一般形式
FUNCTION DAY-TO-YYYYDDD ( 引数1 [引数2 [引数3]])
15.20.2 引数
1) 引数1は,100 000未満の正の整数でなければならない。
注記 この関数は,引数1の妥当性の検査を行わない。この返却値は,TEST-DAY-YYYYDDD関数
の引数にすると,その妥当性を検査できる。
2) 引数2は,整数でなければならない。
3) 引数2を省略すると,関数の評価は引数2に50を指定した場合と同様になる。
4) 引数3は,整数であって1 601〜9 999でなければならない。
5) 引数3を省略すると,関数の評価は引数3に次を指定した場合と同様になる。
(FUNCTION NUMVAL (FUNCTION CURRENT-DATE (1:4)))
6) 引数2と引数3の値の合計は,1 700〜9 999でなければならない。
15.20.3 関数の返却値
1) 返却値に等価な算術式は,次のとおりとする。
(FUNCTION YEAR-TO-YYYY (YY, 引数2, 引数3) * 1000 + DDD)
ここで,
YY = FUNCTION INTEGER (引数1 / 1000)
DDD = FUNCTION MOD (引数1, 1000)
さらに,ここでの引数1,引数2及び引数3は,このDAY-TO-YYYYDDD関数引用自体の引数1,
引数2及び引数3と同一とする。
注記1 2001年の時点でDAY-TO-YYYYDDD (10004,10) の返却値は2010004になる。
2013年の時点でDAY-TO-YYYYDDD (95005,−10) の返却値は1995005になる。
注記2 固定窓と移動窓のアルゴリズムを指定する方法は,15.81(YEAR-TO-YYYY関数)の注記
による。
15.21 DISPLAY-OF関数
DISPLAY-OF(各国文字→英数字変換)関数は,引数中の各国文字を英数字符号化文字集合で表現した
値を含んでいる文字列を返す。この関数の型は,英数字である。
15.21.1 一般形式
FUNCTION DISPLAY-OF ( 引数1 [引数2])
15.21.2 引数
1) 引数1は,字類が各国文字でなければならない。
2) 引数2は,字類が英字か英数字でなければならず,長さが1文字位置でなければならない。引数2は,
対応する英数字のない各国文字の変換に用いられる英数字代替文字を指定する。
15.21.3 関数の返却値
1) 引数1の各々の各国文字を,対応する英数字文字表現(もしあれば)に変換した文字列を返す。
454
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
DISPLAY-OF関数による変換上の,英数字文字集合と各国文字集合の間の文字の対応付けは,実装者
定義とする。
2) 引数2がある場合,対応する英数字のない各国文字が引数1中にあれば,それに対する代替文字とし
て,引数2の英数字を返す。
3) 引数2がない場合,対応する英数字のない各国文字が引数1中にあれば,それに対する代替文字とし
て実装者定義の英数字が使用され,EC-DATA-CONVERSION例外状態になる。
4) 返却値の長さは,変換後の引数値を保持するのに必要な,DISPLAY用途の文字位置の個数であって,
これは引数1の中の文字数に従って異なる。
15.22 E関数
E関数は,自然対数の底であるeの近似値を返す。この関数の型は,数字とする。
15.22.1 一般形式
FUNCTION E
15.22.2 関数の返却値
1) 返却値に等価な算術式は,(2 + .7182818284590452353602874713526) とする。
15.23 EXCEPTION-FILE関数
EXCEPTION-FILE(例外ファイル名)関数は,直前例外状態に関連しているファイル結合子があれば,
その入出力状態の値とファイル名とを表す英数字の文字列を返す。この関数の型は,英数字とする。
15.23.1 一般形式
FUNCTION EXCEPTION-FILE
15.23.2 関数の返却値
1) 返却値は英数字の文字列であり,内容に基づく長さをもち,その内容は次による。
a) 直前例外状態がEC-I-O例外状態でない場合,返却値は英数字ゼロ2個となる。
b) さもなければ,返却値は,入出力状態値とファイル名とを内包するのに必要な長さをもつ文字列で
ある。先頭2文字は,入出力状態値を表す英数字である。後続する文字位置の内容は,SELECT句
に指定したのと全く同じファイル名を,実行時の英数字文字集合へと実行時に変換したものである。
15.24 EXCEPTION-FILE-N関数
EXCEPTION-FILE-N(例外ファイル名の各国文字)関数は,直前例外状態に関連しているファイル結合
子があれば,その入出力状態の値とファイル名とを表す各国文字の文字列を返す。この関数の型は,各国
文字とする。
15.24.1 一般形式
FUNCTION EXCEPTION-FILE-N
15.24.2 関数の返却値
1) 返却値は各国文字の文字列であり,内容に基づく長さをもち,その内容は次による。
a) 直前例外状態がEC-I-O例外状態でない場合,返却値は各国文字ゼロ2個となる。
b) さもなければ,返却値は,入出力状態値とファイル名とを内包するのに必要な長さをもつ文字列で
ある。先頭2文字は,入出力状態値を表す各国文字である。後続する文字位置の内容は,SELECT
句に指定したのと全く同じファイル名を,実行時の各国文字集合へと実行時に変換したものである。
15.25 EXCEPTION-LOCATION関数
EXCEPTION-LOCATION(例外所在位置)関数は,直前例外状態に関連する文の位置を表す,実装者定
義の英数字の文字列を返す。この関数の型は,英数字とする。
455
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
15.25.1 一般形式
FUNCTION EXCEPTION-LOCATION
15.25.2 関数の返却値
1) 直前例外状態に関連する例外状態の検査を有効化したTURN指示にLOCATION指定がなく,実装者
が位置情報を保存していない場合,返却値は英数字空白文字1個になる。
2) 関連するTURN指示にLOCATION指定があった場合,返却値はその内容に基づいた長さをもつ英数
字の文字列であり,内容は次による。
a) 直前例外状態が“起きた例外状態は一つもない”ことを表している場合,返却値は英数字の空白文
字1個となる。
b) さもなければ,返却値は,所在位置情報を内包するのに必要な長さをもつ文字列である。全ての名
前は,直前例外状態に関連する文を包含するソース要素中に指定したものと全く同じであって,実
行時英数字文字集合へ実行時に変換されている。この文字列は,次に示す三つの部分からなる。
1. 第一は,その文を包含する実行時要素の名前で,関数・メソッド・プログラムのFUNCTION-ID,
METHOD-ID又はPROGRAM-ID段落中に指定したとおりである。他の実行時要素から伝ぱ(播)
された例外状態の場合,例外状態が実際に内部で発生した関数・メソッド・プログラムの名前と
なる。この名前の直後に,セミコロンと空白が後続する。
2. 第二は,その文を包含する手続きの手続き名である。
a. ソース要素中に段落名も節名もないとき,セミコロンと空白が附加される。
b. ソース要素中に段落名があるとき,その段落名が附加される。その段落が節の内部にあるとき
は,英数字の"OF"を挿入してから,その段落を包含している節の節名が附加される。これにセ
ミコロンと空白が後続する。
c.
ソース要素中に節名があって段落名がないとき,その節名が附加されてセミコロンと空白が後
続する。
3. 第三に,その文の先頭があるソース行を指す識別子が附加される。この識別子の内容は実装者定
義とする。
注記 同じ翻訳単位でも,一度目に翻訳したときと次に翻訳したときとで返却される値が変わらな
いと,利用者は当てにできない。したがって,既知の値との比較に返却値を用いないほうが
よい。
15.26 EXCEPTION-LOCATION-N関数
EXCEPTION-LOCATION-N(例外所在位置の各国文字)関数は,直前例外状態に関連する文の位置を表
す,実装者定義の各国文字の文字列を返す。この関数の型は,各国文字とする。
15.26.1 一般形式
FUNCTION EXCEPTION-LOCATION-N
15.26.2 関数の返却値
1) 直前例外状態に関連する例外状態の検査を有効化したTURN指示に LOCATION指定がなく,実装者
が位置情報を保存していない場合,返却値は各国文字の空白文字1個になる。
2) 関連するTURN指示にLOCATION指定があった場合,返却値はその内容に基づいた長さをもつ各国
文字の文字列であり,内容は次による。
a) 直前例外状態が“起きた例外状態は一つもない”ことを表している場合,返却値は各国文字の空白
文字1個となる。
456
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
b) さもなければ,返却値は,所在位置情報を内包するのに必要な長さをもつ文字列である。全ての名
前は,直前例外状態に関連する文を包含するソース要素中に指定したものと全く同じであって,実
行時各国文字集合へ,実行時に変換されている。この文字列は,次に示す三つの部分からなる。
1. 第一は,その文を包含する実行時要素の名前で,関数・メソッド・プログラムのFUNCTION-ID,
METHOD-ID又はPROGRAM-ID段落中に指定したとおりである。他の実行時要素から伝ぱ(播)
された例外状態の場合,例外状態が実際に内部で発生した関数・メソッド・プログラムの名前と
なる。この名前の直後に,セミコロンと各国文字の空白が後続する。
2. 第二は,その文を包含する手続きの手続き名である。
a. ソース要素中に段落名も節名もないとき,セミコロンと空白が附加される。
b. ソース要素中に段落名があるとき,その段落名が附加される。その段落が節の内部にあるとき,
各国文字の"OF"を前に挿入してから,その段落を包含している節の節名が附加される。これに
セミコロンと空白が後続する。
c.
ソース要素中に節名があって段落名がないとき,その節名が附加されてセミコロンと空白が後
続する。
3. 第三に,その文の先頭があるソース行を指す識別子が附加される。この識別子の内容は実装者定
義とする。
注記 同じ翻訳単位でも,一度目に翻訳したときと次に翻訳したときとで返却される値が変わらな
いと,利用者は当てにできない。したがって,既知の値との比較に返却値を用いないほうが
よい。
15.27 EXCEPTION-STATEMENT関数
EXCEPTION-STATEMENT(例外発生文)関数は,関連する例外状態の原因となった文の名前を表して
いる英数字の値を返す。この関数の型は,英数字とする。
15.27.1 一般形式
FUNCTION EXCEPTION-STATEMENT
15.27.2 関数の返却値
1) 直前例外状態に関連する例外状態の検査を有効化するTURN指示のLOCATION指定がなくて,かつ,
実装者が位置情報を保存しない場合,返却値は空白文字31個になる。
2) 関連するTURN指示にLOCATION指定があった場合,返却値は31文字長の英数字文字列であって,
例外状態を引き起こす原因となった文の名前が,大文字の左詰めで表され,右側には空白が詰められ
る。
3) 文の名前は,表13(手続き文)の“文の名前”欄による。
15.28 EXCEPTION-STATUS関数
EXCEPTION-STATUS(例外状態)関数は,直前例外状態に関連する例外名を表す英数字の値を返す。こ
の関数の型は,英数字とする。
15.28.1 一般形式
FUNCTION EXCEPTION-STATUS
15.28.2 関数の返却値
1) 31文字の左詰め英数字文字列であって,直前例外状態に関連する例外名又は"EXCEPTION-OBJECT"
という値を返す。例外名中の文字(letter)は全て大文字で返され,未使用の文字位置は英数字空白と
なる。直前例外状態が例外なしを示している場合は,英数字空白列を返す。
457
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
15.29 EXP関数
EXP(eのべき乗)関数は,eを引数でべき乗した値の近似値を返す。この関数の型は,数字とする。
15.29.1 一般形式
FUNCTION EXP ( 引数1 )
15.29.2 引数
1) 引数1は,字類が数字でなければならない。
15.29.3 関数の返却値
1) 返却値に等価な算術式は,(FUNCTION E ** (引数1))とする。
15.30 EXP10関数
EXP10(10のべき乗)関数は,10を引数でべき乗した値の近似値を返す。この関数の型は,数字とする。
15.30.1 一般形式
FUNCTION EXP10 ( 引数1 )
15.30.2 引数
1) 引数1は,字類が数字でなければならない。
15.30.3 関数の返却値
1) 返却値に等価な算術式は,(10 ** (引数1))とする。
15.31 FACTORIAL関数
FACTORIAL(階乗)関数は,引数1の階乗である整数を返す。この関数の型は,整数とする。
15.31.1 一般形式
FUNCTION FACTORIAL ( 引数1 )
15.31.2 引数
1) 引数1は,ゼロ以上の整数でなければならない。
15.31.3 関数の返却値
1) 返却値に等価な算術式は,次のとおりとする。
a) 引数1の値が0又は1のとき
( 1 )
b) 引数1の値が2のとき
( 2 )
c) 引数の値がnのとき
( n * (n ‒ 1) * (n ‒ 2) * … * 1 )
15.32 FRACTION-PART関数
FRACTION-PART(小数部)関数は,引数の小数部である数値を返す。この関数の型は,数字とする。
15.32.1 一般形式
FUNCTION FRACTION-PART ( 引数1 )
15.32.2 引数
1) 引数1は,字類が数字でなければならない。
15.32.3 関数の返却値
1) 返却値に等価な算術式は,次のとおりとする。
(引数1 ‒ FUNCTION INTEGER-PART ( 引数1 ))
ここで,INTEGER-PART関数の引数は,FRACTION-PART関数自体の引数と同一である。
458
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
注記 引数1の値が + 1.5のとき + 0.5を返す。引数1の値が ‒ 1.5のとき ‒ 0.5を返す。
15.33 HIGHEST-ALGEBRAIC関数
HIGHEST-ALGEBRAIC(最大代数値)関数は,引数1が表現可能な最大の代数値を返す。この関数の型
は,引数の型に従って次のとおりとする。
引数の型
関数の型
整数
整数
数字
数字
英数字
数字
各国文字
数字
15.33.1 一般形式
FUNCTION HIGHEST-ALGEBRAIC ( 引数1 )
15.33.2 引数
1) 引数1は,項類が数字又は数字編集のデータ項目でなければならず,数字関数又は整数関数であって
はならない。
15.33.3 関数の返却値
1) 返却値は,引数1が表現可能な最大の正の代数値に等しい。
注記 引数1の幾つかの値に対して,結果を例示する。
引数1の特性
返却値
S999
+999
S9(4) BINARY
+9 999
99V9(3)
+99.999
¥**,**9.99BCR
+999.99
¥**,**9.99
+99 999.99
BINARY-CHAR SIGNED
+127 (8ビット表現を想定)
BINARY-CHAR UNSIGNED +255 (8ビット表現を想定)
15.34 INTEGER関数
INTEGER(整数化)関数は,引数1を超えない最大の整数を返す。この関数の型は,整数とする。
15.34.1 一般形式
FUNCTION INTEGER ( 引数1 )
15.34.2 引数
1) 引数は,字類が数字でなければならない。
15.34.3 関数の返却値
1) 標準算術が指定された場合,引数1の丸めは行われない。
2) 返却値は,引数1を超えない最大の整数とする。
注記 例えば,
− 引数1の値が ‒ 1.5のとき,値 ‒ 2を返す。
− 引数1の値が + 1.5のとき,値 + 1を返す。
− 引数1の値が ゼロのとき,値ゼロを返す。
INTEGER-PART関数は似ているが,負数に対して返す値が異なる。
15.35 INTEGER-OF-BOOLEAN関数
459
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
INTEGER-OF-BOOLEAN(ブールの整数化)関数は,引数1中のブール文字列の数値を返す。この関数
の型は,整数とする。
15.35.1 一般形式
FUNCTION INTEGER-OF-BOOLEAN ( 引数1 )
15.35.2 引数
1) 引数1は,字類がブールでなければならない。
15.35.3 関数の返却値
1) 返却値は,次のとおりに決まる。
a) 引数1を,用途がBITで引数1と同じ個数のブール位置をもつように記述された一時的ブールデー
タ項目に代入する。
b) その一時的ブールデータ項目と同じビット構成で表現される符号なし2進値が決まる。
注記 2進表現とは,数学的概念である。この表現は,COBOLの表現形式と同じでなくてもよい。
c) 細則1) b) で決まった数値を返却値とする。
15.36 INTEGER-OF-DATE関数
INTEGER-OF-DATE(標準日付→通日変換)関数は,グレゴリオ暦の日付を,標準形式(YYYYMMDD)
からグレゴリオ通日に変換する。この関数の型は,整数とする。
15.36.1 一般形式
FUNCTION INTEGER-OF-DATE ( 引数1 )
15.36.2 引数
1) 引数1は,次の式によって値が得られるYYYYMMDD形式の整数でなければならない。
(YYYY * 10000) + (MM * 100) + DD
a) YYYYは,グレゴリオ暦の年を表す1600 < YYYY < 10000の整数でなければならない。
b) MMは,月を表す1〜12の整数でなければならない。
c) DDは,日を表す1〜31の整数で,年と月の組合せに対して妥当な値でなければならない。
15.36.3 関数の返却値
1) 返却値は,グレゴリオ暦の1601年1月1日を第1日として,引数1で表される日付までの日数を表す
整数とする。
15.37 INTEGER-OF-DAY関数
INTEGER-OF-DAY(年日→通日変換)関数は,グレゴリオ暦の日付を,年日形式(YYYYDDD)からグ
レゴリオ通日に変換する。この関数の型は,整数とする。
15.37.1 一般形式
FUNCTION INTEGER-OF-DAY ( 引数1 )
15.37.2 引数
1) 引数1は,次の式によって値が得られるYYYYDDD形式の整数でなければならない。
(YYYY * 1000) + DDD
a) YYYYは,グレゴリオ暦の年を表す1600 < YYYY < 10000の整数でなければならない。
b) DDDは,日を表す1〜366の整数で,指定の年に対して妥当な値でなければならない。
15.37.3 関数の返却値
1) 返却値は,グレゴリオ暦の1601年1月1日を第1日として,引数1で表される日付までの日数を表す
整数とする。
460
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
15.38 INTEGER-PART関数
INTEGER-PART(整数部)関数は,引数1の整数部の整数を返す。この関数の型は,整数とする。
15.38.1 一般形式
FUNCTION INTEGER-PART ( 引数1 )
15.38.2 引数
1) 引数は,字類が数字でなければならない。
15.38.3 関数の返却値
1) 返却値に等価な算術式は,次のとおりとする。
(FUNCTION SIGN (引数1) * FUNCTION INTEGER (FUNCTION ABS (引数1)))
ここで,SIGN関数及びABS関数の引数は,このINTEGER-PART関数自体のものと同一とする。
注記 例えば,
− 引数1の値が ‒ 1.5のとき,値 ‒ 1を返す。
− 引数1の値が + 1.5のとき,値 + 1を返す。
− 引数1の値が ゼロのとき,値ゼロを返す。
− 引数1の値が ‒ 1.0のとき,値 ‒ 1を返す。
− 引数1の値が + 1.0のとき,値 + 1を返す。
INTEGER関数は似ているが,負数に対して返す値が異なる。
15.39 LENGTH関数
LENGTH(長さ)関数は,引数の長さを,その字類に従って,英数字文字位置,各国文字位置又はブー
ル位置の個数で表した値に等しい整数を返す。この関数の型は,整数とする。
15.39.1 一般形式
FUNCTION LENGTH ( 引数1 )
15.39.2 引数
1) 引数1は,次のいずれかでなければならない。
− 英数字定数,各国文字定数,又はブール定数
− 任意の字類又は項類のデータ項目
− 基底付き項目
− 型名
15.39.3 関数の返却値
1) 引数1がビット集団項目,基本ブールデータ項目,ブール定数,又はブール項目の型定義のいずれか
であるとき,返却値は,引数1の長さをブール位置の個数で表した整数とする。
2) 引数1が各国文字集団項目,ブール字類ではなく用途がNATIONALの基本データ項目,各国文字定
数,用途がNATIONALのデータ項目の型定義のいずれかであるとき,返却値は,引数1の長さを各
国文字位置の個数で表した整数とする。
3) 引数1がブール字類でなくNATIONAL用途でもないとき,返却値は,引数1の長さを英数字文字位
置の個数で表した整数とする。
4) 引数1のデータ記述項に従属するデータ記述項のいずれかの記述にDEPENDING指定付きのOCCURS
句があるとき,次による。
a) 引数1が実データと関連のない基底付き項目であるとき又は型宣言であるとき,引数1の長さは,
受取り側データ項目に対するOCCURS句の規則に従って決まる。
461
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
b) さもなければ,引数1の長さは,送出し側データ項目に対するOCCURS句の規則に従って決まる。
注記 13.16.36.3(OCCURS句)の一般規則8) 参照。
5) 引数1に暗黙のFILLER位置がある場合,返却値には文字位置の数が含まれる。
6) 返却値が英数字文字位置数として表され,かつ,引数1の占める位置数が整数ではない場合,返却値
は次に大きい整数値へと丸められる。
15.40 LOCALE-COMPARE関数
LOCALE-COMPARE(現地特性比較)関数は,引数1と引数2とを比較した結果を示す文字を返すが,
この比較には現地特性が規定する文化圏相応の順序付けを使用する。この関数の型は,英数字とする。
15.40.1 一般形式
FUNCTION LOCALE-COMPARE ( 引数1 引数2 [現地特性名1])
15.40.2 引数
1) 引数1は,字類が英字,英数字又は各国文字でなければならない。
2) 引数2は,字類が英字,英数字又は各国文字でなければならない。
3) 引数1及び引数2は,字類が異なっていてもよい。
4) 現地特性名1は,特殊名段落中で現地特性に関連付けられていなければならない。
15.40.3 関数の返却値
1) 引数の字類が異なり,一方の引数が各国文字であるとき,比較のため,もう一方の引数は字類が各国
文字になるよう変換される。
2) 比較の処理上,末尾にある空白列は比較対象から切り捨てる。ただし,空白列だけからなる作用対象
の切捨ての結果は,単一の空白とする。
3) 現地特性名1の指定があれば,比較には現地特性名1に関連する現地特性名を使用する。さもなけれ
ば,現在有効現地特性を使用する。現地特性名1に関連する現地特性が使用可能でなければ,
EC-LOCALE-MISSING例外状態になる。
4) 引数1及び引数2は,使用する現地特性が規定する文化圏相応の順序付けを用いて比較される。
注記 現地特性に基づく比較は,必ずしも1文字ずつの比較とは限らない。
5) 返却値は,次による。
"=" 引数どうしが等しい場合
"<" 引数1が引数2よりも小さい場合
">" 引数1が引数2よりも大きい場合
6) 返却値の長さは1とする。
15.41 LOCALE-DATE関数
LOCALE-DATE(現地特性日付)関数は,現地特性が規定する文化圏相応の形式の日付を含んでいる文
字列を返す。この関数の型は,英数字とする。
15.41.1 一般形式
FUNCTION LOCALE-DATE ( 引数1 [現地特性名1])
15.41.2 引数
1) 引数1は,字類が英数字又は各国文字で,長さが文字位置8個でなければならない。
2) 引数1の内容は,CURRENT-DATE関数が文字位置1〜8に返す年・月・日と同じ形式の日付であって,
その返却値の定義に従った妥当なものでなければならない。
3) 現地特性名1は,特殊名段落中で現地特性に関連付けられていなければならない。
462
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
15.41.3 関数の返却値
1) 現地特性名1の指定があれば,現地特性名1に関連する現地特性を日付の形式変換に使用する。さも
なければ,現在有効現地特性を使用する。現地特性名1に関連する現地特性が使用可能でなければ,
EC-LOCALE-MISSING例外状態になる。
2) 返却値は,現地特性フィールドd̲fmtが示す適切な日付の形式で表現された,引数1の日付を含んで
いる文字列である。
3) 返却値の長さは,現地特性が示す形式に従って異なる。
15.42 LOCALE-TIME関数
LOCALE-TIME(現地特性時刻)関数は,現地特性が規定する文化圏相応の形式の時刻を含んでいる文
字列を返す。この関数の型は,英数字とする。
15.42.1 一般形式
FUNCTION LOCALE-TIME ( 引数1 [現地特性名1])
15.42.2 引数
1) 引数1は,字類が英数字又は各国文字で,長さが文字位置6個でなければならない。
2) 引数1の内容は,CURRENT-DATE関数が文字位置9〜14に返す時・分・秒と同じ形式で,その返却値
の定義に従った妥当なものでなければならない。
3) 引数1の内容は,CURRENT-DATE関数の返却値の定義に従った妥当なものでなければならないが,
次の点は例外とする。
a) 時を表す数字は,00〜24。
b) 秒を表す数字は,00〜99。
注記 秒の値を大まかに規定してるのは,利用者データの中に現れ得る“うるう秒”の最大値に
制限はないからである。LEAP-SECOND指示のON指定が有効でなくても,利用者データ
が“うるう秒”を含むことはある。
4) 現地特性名1は,特殊名段落中で現地特性に関連付けられていなければならない。
15.42.3 関数の返却値
1) 現地特性名1の指定があれば,現地特性名1に関連する現地特性を時刻の形式変換に使用する。さも
なければ,現在有効現地特性を使用する。現地特性名1に関連する現地特性が使用可能でなければ,
EC-LOCALE-MISSING例外状態になる。
2) 返却値は,現地特性フィールドt̲fmtが示す文化圏相応の形式で表現された,引数1の時刻の時・分・
秒を含んでいる文字列である。
3) 返却値の長さは,現地特性が示す形式に従って異なる。
15.43 LOG関数
LOG(自然対数)関数は,底をeとした引数1の対数(自然対数)の近似値を返す。この関数の型は,
数字とする。
15.43.1 一般形式
FUNCTION LOG ( 引数1 )
15.43.2 引数
1) 引数1は,字類が数字でなければならない。
2) 引数1の値は,正でなければならない。
15.43.3 関数の返却値
463
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) 返却値は,底をeとする引数1の対数の近似値とする。
15.44 LOG10関数
LOG10(常用対数)関数は,底を10とした引数1の対数(常用対数)の近似値を返す。この関数の型
は,数字とする。
15.44.1 一般形式
FUNCTION LOG10 ( 引数1 )
15.44.2 引数
1) 引数1は,字類が数字でなければならない。
2) 引数1の値は,正でなければならない。
15.44.3 関数の返却値
1) 返却値は,底を10とする引数1の対数の近似値とする。
15.45 LOWER-CASE関数
LOWER-CASE(小文字変換)関数は,引数1の値のうち,あらゆる大文字を対応する小文字で置換した
文字列を返す。この関数の型は,引数の型に従って次のとおりとする。
引数の型
関数の型
英字
英数字
英数字
英数字
各国文字
各国文字
15.45.1 一般形式
FUNCTION LOWER-CASE ( 引数1 )
15.45.2 引数
1) 引数1は,字類が英字,英数字又は各国文字で,長さが1文字以上なければならない。
15.45.3 関数の返却値
1) 引数1の内容の,あらゆる大文字を対応する小文字で置換した文字列を返す。
2) 字類分けに対しての,ある現地特性が有効である場合,大文字から小文字への対応付けは,現地特性
のカテゴリLC̲CTYPEから決まる[12.2.5(実行用計算機段落)参照]。
3) 返却値の文字列が引数1と同じ長さになるのは,大文字と小文字との間に1対1の対応付けが存在す
る場合である。大文字と小文字との対応付けが1対1ではない場合,返却値の文字列は,引数1より
も長くなることも短くなることもあり,引数1の内容及び現地特性の指定に依存する。
4) ある大文字にとって,対応する小文字が存在しなければ,返却値の中でその文字は変わらない。字類
分けに対して,現地特性が有効であり,その現地特性には小文字の対応付けの規定が存在しなければ,
返却値の中でその文字は変わらない。
15.46 LOWEST-ALGEBRAIC関数
LOWEST-ALGEBRAIC(最小代数値)関数は,引数1が表現可能な最小の代数値を返す。この関数の型
は,引数の型に従って次のとおりとする。
引数の型
関数の型
整数
整数
数字
数字
英数字
数字
各国文字
数字
464
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
15.46.1 一般形式
FUNCTION LOWEST-ALGEBRAIC ( 引数1 )
15.46.2 引数
1) 引数1は,項類が数字又は数字編集のデータ項目でなければならず,数字関数又は整数関数であって
はならない。
15.46.3 関数の返却値
1) 返却値は,引数1が表現可能な最小の代数値に等しい。
注記 引数1の幾つかの値に対して,結果を例示する。
引数1の特性
返却値
S999
‒999
S9(4) BINARY
‒9 999
99V9(3)
0
¥**,**9.99BCR
‒99 999.99
¥**,**9.99
0
BINARY-CHAR SIGNED
‒128 (8ビット2の補数表現を想定)
BINARY-CHAR UNSIGNED 0 (8ビット2の補数表現を想定)
15.47 MAX関数
MAX(最大値)関数は,引数1の内容のうち最大値をもつものを返す。この関数の型は,引数の型に従
って次のとおりとする。
引数の型
関数の型
英字
英数字
英数字
英数字
各国文字
各国文字
全ての引数が整数
整数
数字(整数の混在可)
数字
指標
指標
15.47.1 一般形式
FUNCTION MAX ( {引数1} … )
15.47.2 引数
1) 引数1は,字類がブール,オブジェクト又はポインタであってはならず,強い型付けの集団項目であ
ってもならない。
2) 全ての引数1は字類が同じでなければならないが,英字字類の引数と英数字字類の引数とは混在して
もよい。
15.47.3 関数の返却値
1) 返却値は,最大値をもつ引数1の内容とする。最大値を決定する比較の方法は,単純条件の規則によ
る[8.8.4.1(単純条件)参照]。
2) 二つ以上の引数1の値が最大値に等しいとき,返却値は,その値をもつ引数1のうち最も左側にある
引数の内容とする。
3) この関数の型が英数字又は各国文字のとき,返却値の長さは,選ばれた引数1の長さに等しい。
465
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
15.48 MEAN関数
MEAN(算術平均)関数は,引数の算術平均値を返す。この関数の型は,数字とする。
15.48.1 一般形式
FUNCTION MEAN ( {引数1} … )
15.48.2 引数
1) 引数は,字類が数字でなければならない。
15.48.3 関数の返却値
1) 返却値に等価な算術式は,次のとおりとする。
a) 指定された引数1が1個のとき
( 引数1 )
b) 指定された引数1が2個のとき
((引数11 + 引数12) / 2)
c) 指定された引数1がn個のとき
((引数11 + 引数12 + … + 引数1n) / n)
15.49 MEDIAN関数
MEDIAN(中央値)関数は,引数を数値の大小順に整列したときの中央値を返す。
この関数の型は,数字とする。
15.49.1 一般形式
FUNCTION MEDIAN ( {引数1} … )
15.49.2 引数
1) 引数は,字類が数字でなければならない。
15.49.3 関数の返却値
1) 指定された引数1の個数が奇数のとき,引数の少なくとも半数が返却値以上で,少なくとも半数が返
却値以下になる。中央値を引数aで表すと,等価な算術式は,次のとおりとする。
( 引数a )
2) 指定された引数1の個数が偶数のとき,中央にある二つの数値の算術平均値を返却値とする。これら
二つの中央値を引数bと引数cとで表すと,等価な算術式は,次のとおりとする。
((引数b + 引数c) / 2)
3) 引数1を整列する比較の方法は,単純条件の規則による[8.8.4.1(単純条件)参照]。
15.50 MIDRANGE関数
MIDRANGE(中間値)関数は,引数の最小値及び最大値の算術平均値を返す。
この関数の型は,数字とする。
15.50.1 一般形式
FUNCTION MIDRANGE ( {引数1} … )
15.50.2 引数
1) 引数は,字類が数字でなければならない。
15.50.3 関数の返却値
1) 返却値に等価な算術式は,次のとおりとする。
((FUNCTION MAX (引数並び) + FUNCTION MIN (引数並び)) / 2)
ここで“引数並び”は,このMIDRANGE関数自体の引数1の並びと同一とする。
466
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
15.51 MIN関数
MIN(最小値)関数は,引数1の内容のうち最小値をもつものを返す。
この関数の型は,引数の型に従って次のとおりとする。
引数の型
関数の型
英字
英数字
英数字
英数字
各国文字
各国文字
全ての引数が整数
整数
数字(整数の混在可)
数字
指標
指標
15.51.1 一般形式
FUNCTION MIN ( {引数1} … )
15.51.2 引数
1) 引数1は,字類がブール,オブジェクト又はポインタであってはならず,強い型付けの集団項目であ
ってもならない。
2) 全ての引数1は字類が同じでなければならないが,英字字類の引数と英数字字類の引数とは混在して
もよい。
15.51.3 関数の返却値
1) 返却値は,最小値をもつ引数1の内容とする。最小値を決定する比較の方法は,単純条件の規則によ
る[8.8.4.1(単純条件)参照]。
2) 二つ以上の引数1の値が最小値に等しいとき,返却値は,その値をもつ引数1のうち最も左側にある
引数の内容とする。
3) この関数の型が英数字又は各国文字のとき,返却値の長さは,選ばれた引数1の長さに等しい。
15.52 MOD関数
MOD(法)関数は,引数2を法(除数)とした引数1の剰余の整数値を返す。この関数の型は,整数と
する。
15.52.1 一般形式
FUNCTION MOD ( 引数1 引数2 )
15.52.2 引数
1) 引数1及び引数2は,整数でなければならない。
2) 引数2の値は,ゼロであってはならない。
15.52.3 関数の返却値
1) 返却値に等価な算術式は,次のとおりとする。
((引数1) ‒ ((引数2) * FUNCTION INTEGER ((引数1) / (引数2))))
ここで,INTEGER関数の引数1及び引数2は,このMOD関数の引数と同一とする。
注記 引数1及び引数2の幾つかの値に対して,結果を例示する。
引数1
引数2 返却値
11
5
1
‒11
5
4
11
‒5
‒4
467
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
‒11
‒5
‒1
15.53 NATIONAL-OF関数
NATIONAL-OF(英数字→各国文字変換)関数は,引数の中の文字を各国文字表現に変換した値を含ん
でいる文字列を返す。この関数の型は,各国文字とする。
15.53.1 一般形式
FUNCTION NATIONAL-OF ( 引数1 [引数2])
15.53.2 引数
1) 引数1は,字類が英字か英数字でなければならない。
2) 引数2は,項類が各国文字でなければならず,長さが1文字でなければならない。引数2は,対応す
る各国文字のない英数字の変換に用いられる各国文字代替文字を指定する。
15.53.3 関数の返却値
1) 引数1中の各々の英数字文字を,対応する各国文字符号化文字集合の表現へ変換した文字列を返す。
文字の対応付けは実装者定義とする。
2) 引数2がある場合,引数1の中の対応する各国文字表現のない文字は,それぞれ引数2の代替文字に
変換される。
3) 引数2がなく,かつ,引数1の中に対応する各国文字表現のない文字がある場合,対応する各国文字
として実装者定義の代替文字が使用され,EC-DATA-CONVERSION例外状態になる。
4) 返却値の長さは,変換後の引数値を保持するのに必要な用途NATIONALの文字位置の個数であって,
これは引数1の中の文字数に従って異なる。
15.54 NUMVAL関数
NUMVAL(数字列の数値)関数は,引数1で指定された文字列が表現する数値を返す。先行及び後続の
空白列は無視される。この関数の型は,数字とする。
注記 現地特性に基づいてNUMVALと同等の機能を行うには,NUMVAL-C関数をキーワード
LOCALE付きで使用する。NUMVAL-Cでは,通貨記号はあってもなくてもよい。現地特性カ
テゴリLC̲NUMERICには正負符号規約がないので,現地特性カテゴリLC̲MONETARYを使
用する。
15.54.1 一般形式
FUNCTION NUMVAL ( 引数1 )
15.54.2 引数
1) 引数1は,英数字定数,各国文字定数,字類が英数字のデータ項目,又は字類が各国文字のデータ項
目でなければならない。その内容は,次の二つの形式のいずれかでなければならない。
[空白]
+
‒ [空白]
数字[.[数字]]
.数字
[空白]
又は
[空白]
数字[.[数字]]
.数字
[空白]
+
‒
CR
DB
[空白]
ここで,“空白”は1個以上の空白文字の並びとし,“数字”は1〜31けたの数字列とする。
a) 引数1が英数字のとき,CR又はDBを指定する場合,それは計算機英数字文字集合の文字列"CR"
468
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
又は"DB"を大文字,小文字,又はその組合せで表したものでなければならない。
b) 引数1が各国文字のとき,CR又はDBを指定する場合,それは計算機各国文字集合の文字列"CR"
又は"DB"を大文字,小文字,又はその組合せで表したものでなければならない。
2) 引数1の数字のけた数の合計は,31けたを超えてはならない。
3) 文字ピリオドは,引数1中で小数点文字を表す。DECIMAL-POINT IS COMMA句の指定がある場合に
引数1中で小数点文字を表すためには,文字ピリオドの代わりに文字コンマを用いなければならない。
15.54.3 関数の返却値
1) 返却値は,引数1が表現する数値とする。
2) 返却値で表される最大の10進けた数は,31けたである。
3) 引数1に"CR","DB",又は負号"-"が含まれるとき,返却値は負とする。
15.55 NUMVAL-C関数
NUMVAL-C(編集文字列の数値)関数は,引数1で指定した文字列が表現する数値を返す。通貨文字列
があっても無視され,小数点文字に先行するけたまとめ文字も無視される。文字列中に書いてもよい通貨
文字列,正負符号規約,けたまとめ文字及び小数点文字を現地特性カテゴリLC̲MONETARYで指定して
もよい。又は,通貨文字列を引数2で指定してもよい。この関数の型は,数字とする。
15.55.1 一般形式
FUNCTION NUMVAL-C ( 引数1
LOCALE [現地特性名1]
引数2
[ANYCASE])
15.55.2 引数
1) 引数1は,字類が英数字又は各国文字でなければならない。
2) 引数2を指定するとき,引数2は字類が引数1と同じでなければならない。引数2には少なくとも一
つの非空白文字が含まれなければならない。先行又は後続の空白列が引数2の中にあっても無視され
る。引数2に,次のいずれかが含まれてはならない。
− 数字の0〜9,
− 文字の "*","+","-",".",",",
− 二つ連続した基本文字の列"CR"又は"DB"を大文字,小文字又はその組合せで表したもの。
引数2は,引数1中に現れてもよい通貨文字列を指定するものである。
注記 引数2の通貨文字列には,空白が含まれてもよく,先行及び後続の空白列があってもよい。
3) キーワードANYCASEの指定があるとき,引数1の中にある通貨文字列を検出するための突合せ規則
は,大文字と小文字とを区別しない。キーワードANYCASEの指定がないとき,通貨文字列を検出す
るための突合せ規則は,大文字と小文字とを区別する。
4) 引数2とキーワードLOCALEのいずれも指定がない場合,この翻訳単位用の通貨文字列は,既定解釈
の通貨記号であれ特殊名段落中で指定した通貨文字列であれ,ただ一つでなければならない。
5) キーワードLOCALEの指定がない場合,次の規則を適用する。
− 引数1の内容は,次の二つの形式のいずれかでなければならない。
[空白]
+
‒ [空白] [通貨] [空白]
数字[,数字]…[.[数字]]
.数字
[空白]
又は
469
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
[空白] [通貨] [空白]
数字[,数字]…[.[数字]]
.数字
[空白]
+
‒
CR
DB
[空白]
ここで
− “数字”は1けた以上の数字0〜9の並びとする。
− “空白”は1個以上の空白の並びとする。
− “通貨”は1個以上の文字列で,引数2の指定がある場合はその通貨文字列に文字単位比較で
合致する文字列,さもなければ既定解釈の通貨記号に文字単位比較で合致する文字列とする。
a) 引数1が英数字でCR又はDBを指定するとき,文字列"CR"又は"DB"は,計算機英数字文字集合の
大文字,小文字,又は大文字及び小文字の組合せで表したものでなければならない。
b) 引数1が各国文字のとき,CR又はDBを指定する場合は計算機各国文字集合の文字列"CR"又は"DB"
を大文字,小文字,又はその組合せで表したものでなければならない。
c) 文字ピリオドは,引数1中で小数点文字を表す。文字コンマは,引数1中でけたまとめ文字を表す。
DECIMAL-POINT IS COMMA句の指定がある場合,引数1中で小数点文字を表すには文字コンマを
用いなければならず,けたまとめ文字を表すには文字ピリオドを用いなければならない。
6) キーワードLOCALEの指定がある場合,次の規則を適用する。
a) 現地特性名1を指定するとき,現地特性名1は特殊名段落中で現地特性に関連付けられていなけれ
ばならない。引数1の中の金額表記を評価するには,参照された現地特性のカテゴリ
LC̲MONETARYを用いる。現地特性名1の指定がないときは,現在有効現地特性のカテゴリ
LC̲MONETARYを用いる。必要とされる現地特性が使用可能でないときは,EC-LOCALE-MISSING
例外状態になる。
b) 引数1の内容は,数字と文字とからなる並びであって,使用している現地特性のカテゴリ
LC̲MONETARYの規定に従った形式でなければならない。次の規則を適用する。
1. キーワードANYCASEの指定があるとき,引数1の中にある通貨文字列を検出するための突合せ
規則は,大文字と小文字とを区別しない。キーワードANYCASEの指定がないとき,通貨文字列
を検出するための突合せ規則は,大文字と小文字とを区別する。
2. 現地特性フィールドの用途NATIONAL表現を用いて引数1との突合せを行う。引数1の字類が
各国文字のとき,引数1の用途NATIONAL表現を用いて現地特性フィールドとの突合せを行う。
3. 引数1の中には,現地特性フィールドp̲cs̲precedes及びn̲cs̲precedesに従った位置に,現地特
性フィールドint̲curr̲symbolの先頭3文字又は現地特性フィールドcurrency̲symbolに一致する
通貨文字列が一つあってもよい。
4. 引数1の中には,現地特性フィールドpositive̲sign及びp̲sign̲posnに従う正符号が一つ,又は
negative̲sign及びn̲sign̲posnに従う負符号が一つあってもよい。
5. 引数1の中には小数点文字が一つあってもよい。これは現地特性フィールドmon̲decimal̲point,
int̲frac̲digits及びfrac̲digitsに従う。
6. 引数1の中には,けたまとめ文字が1個又は複数個あってもよい。これは現地特性フィールド
mon̲thousands̲sep及びmon̲groupingに従う。
7. 引数1の中には,数字が少なくとも一つなければならない。先行又は後続の空白列が含まれても
よい。
470
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
7) 引数1の数字のけた数の合計は,31けたを超えてはならない。
15.55.3 関数の返却値
1) 返却値は,けた数が31けたであり,引数1が表現する数値とする。
2) キーワードLOCALEがある場合,返却値が負になるのは,現地特性フィールドnegative̲signと
n̲sign̲posnが規定する負の符号規約が,引数1に含まれるときとする。キーワードLOCALEがない
場合,返却値が負になるのは,"CR","DB"又は負号"-"が引数1に含まれるときとする。
15.56 NUMVAL-F関数
NUMVAL-F(浮動小数点形式数値)関数は,引数1で指定された文字列が表現する数値かその近似値を
返す。先行・後続・中間の空白列は,あっても無視される。
15.56.1 一般形式
FUNCTION NUMVAL-F ( 引数1 )
15.56.2 引数
1) 引数1は,英数字定数,各国文字定数,字類が英数字又は各国文字のデータ項目でなければならない。
その内容は,次の形式でなければならない。
[空白]
+
‒ [空白]
数字[.[数字]]
.数字
[空白]
E [空白]
+
‒ [空白] n [空白]
ここで,“空白”は1個以上の空白の並びとし,“n”はべき指数を表現する1〜3けたの数字とし,
“数字”は1〜31けたの数字列とする。
a) 引数1が英数字のとき,Eは計算機英数字文字集合の大文字又は小文字のEでなければならない。
b) 引数1が各国文字のとき,Eは計算機各国文字集合の大文字又は小文字のEでなければならない。
2) 仮数部のけた数の合計は,31けたを超えてはならない。
3) 文字ピリオドは,引数1中で小数点文字を表す。DECIMAL-POINT IS COMMA句の指定がある場合に
引数1中で小数点文字を表すためには,文字ピリオドの代わりに文字コンマを用いなければならない。
15.56.3 関数の返却値
1) 先行・後続・中間の空白列は,あっても無視される。
2) 固有算術が有効なときの返却値は,引数1が表現する数値の近似である。標準算術が有効なときの返
却値は,引数1が表現する数値である。
15.57 ORD関数
ORD(文字照合順序位置)関数は,プログラム文字照合順序中における引数1の順序位置を整数値で返
す。最も低い順序位置は1とする。この関数の型は,整数とする。
15.57.1 一般形式
FUNCTION ORD ( 引数1 )
15.57.2 引数
1) 引数は,長さが1文字で,字類が英字,英数字又は各国文字でなければならない。
15.57.3 関数の返却値
1) 引数1の字類が英字又は英数字のとき,返却値は,現在の英数字プログラム照合順序における引数1
の順序位置とする。
2) 引数1の字類が各国文字であるとき,返却値は,現在の各国文字プログラム照合順序における引数1
の順序位置とする。
471
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
15.58 ORD-MAX関数
ORD-MAX(最大値をとる引数の順序番号)関数は,最大値をもつ引数1の順序番号の値,すなわち,
引数並びの何番目に現れたかを返す。この関数の型は,整数とする。
15.58.1 一般形式
FUNCTION ORD-MAX ( {引数1} … )
15.58.2 引数
1) 引数1は,字類がブール,オブジェクト又はポインタであってはならず,強い型付けの集団項目であ
ってもならない。
2) 全ての引数1は字類が同じでなければならないが,英字字類の引数と英数字字類の引数とは混在して
もよい。
15.58.3 関数の返却値
1) 返却値は,引数1の並びの中で,最大値をもつ引数1の順序番号とする。
2) 引数の最大値を決定する比較の方法は,単純条件の規則による[8.8.4.1(単純条件)参照]。
3) 二つ以上の引数1の値が最大値に等しいとき,返却値は,その値をもつ引数1のうちで最も左側にあ
る引数の位置とする。
15.59 ORD-MIN関数
ORD-MIN(最小値をとる引数の順序番号)関数は,最小値をもつ引数1の順序番号の値,すなわち,引
数並びの何番目に現れたかを返す。この関数の型は,整数とする。
15.59.1 一般形式
FUNCTION ORD-MIN ( {引数1} … )
15.59.2 引数
1) 引数1は,字類がブール,オブジェクト又はポインタであってはならず,強い型付けの集団項目であ
ってもならない。
2) 全ての引数1は字類が同じでなければならないが,英字字類の引数と英数字字類の引数とは混在して
もよい。
15.59.3 関数の返却値
1) 返却値は,引数1の並びの中で,最小値をもつ引数1の順序番号とする。
2) 引数の最小値を決定する比較の方法は,単純条件の規則による[8.8.4.1(単純条件)参照]。
3) 二つ以上の引数1の値が最小値に等しいとき,返却値は,その値をもつ引数1のうち最も左側にある
引数の位置とする。
15.60 PI関数
PI(円周率)関数は,円周率πの近似値を返す。この関数の型は,数字とする。
15.60.1 一般形式
FUNCTION PI
15.60.2 関数の返却値
1) 返却値に等価な算術式は,(3 + .1415926535897932384626433832795) とする。
15.61 PRESENT-VALUE関数
PRESENT-VALUE(現在価値)関数は,引数1の割引率に基づいて,引数2の示す回数の将来の各期末
の金額に対する現在価値を近似値で返す。この関数の型は,数字とする。
15.61.1 一般形式
472
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
FUNCTION PRESENT-VALUE ( 引数1 {引数2} … )
15.61.2 引数
1) 引数1及び引数2は,字類が数字でなければならない。
2) 引数1は,‒1より大きい値でなければならない。
15.61.3 関数の返却値
1) 返却値に等価な算術式は,次のとおりとする。
a) 指定された引数2が1個のとき
(引数2 / (1 + 引数1))
b) 指定された引数2が2個のとき
(引数21 / (1 + 引数1) + 引数22 / (1 + 引数1) ** 2)
c) 指定された引数2がn個のとき
(FUNCTION SUM (
(引数21 / (1 + 引数1))
(引数22 / (1 + 引数1) ** 2)
・・・
(引数2n / (1 + 引数1) ** n)))
ここで,SUM関数の引数1及び引数2iは,このPRESENT-VALUE関数自体に対しての引数と同一
とする。
15.62 RANDOM関数
RANDOM(乱数)関数は,一様分布の擬似乱数の数値を返す。この関数の型は,数字とする。
15.62.1 一般形式
FUNCTION RANDOM [ ( [引数1] ) ]
15.62.2 引数
1) 引数1は,字類が数字でなければならない。
2) 引数1を指定するとき,引数1はゼロ又は正の整数でなければならない。これは,擬似乱数列を生成
する種子になる値として用いられる。
3) これ以降に引数1を指定してこの関数を引用すると,新たな擬似乱数列が始まる。
4) 実行単位中で最初にこの関数を引用するときに引数1を指定していなければ,種子となる値は実装者
定義とする。
5) これ以降に引数1を指定せずに引用すると,各々の場合に,現在の擬似乱数列における次の値を返す。
15.62.3 関数の返却値
1) 返却値の値域は 0 ≦ 返却値 < 1 である。
2) 同一実装系において,同じ値の種子からは,常に同じ擬似乱数列が生成される。
3) 引数1の値のうち,異なる擬似乱数列を生成する定義域の部分集合は,実装者定義とする。この部分
集合には0から最低限32767までの値が含まれなければならない。
15.63 RANGE関数
RANGE(範囲)関数は,引数の最大値から最小値を引いた値を返す。
この関数の型は,引数の型に従って次のとおりとする。
引数の型
関数の型
全ての引数が整数
整数
473
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
数字(整数の混在可)
数字
15.63.1 一般形式
FUNCTION RANGE ( {引数1} … )
15.63.2 引数
1) 引数1は,字類が数字でなければならない。
15.63.3 関数の返却値
1) 返却値に等価な算術式は,次のとおりとする。
((FUNCTION MAX (引数並び) ‒ FUNCTION MIN (引数並び))
ここで“引数並び”は,このRANGE関数自体の引数1の並びと同一とする。
15.64 REM関数
REM(剰余)関数は,引数1を引数2で除した剰余を返す。この関数の型は,数字とする。
15.64.1 一般形式
FUNCTION REM ( 引数1 引数2 )
15.64.2 引数
1) 引数1及び引数2は,字類が数字でなければならない。
2) 引数2の値は,ゼロであってはならない。
15.64.3 関数の返却値
1) 返却値に等価な算術式は,次のとおりとする。
((引数1) ‒ ((引数2) * FUNCTION INTEGER-PART ((引数1) / (引数2))))
ここで,INTEGER-PART関数の引数1及び引数2は,REM関数自体のものと同一とする。
注記 引数1及び引数2の幾つかの値に対して,結果を例示する。
引数1
引数2
返却値
11
5
1
‒11
5
‒1
11
‒5
1
‒11
‒5
‒1
15.65 REVERSE関数
REVERSE(逆順)関数は,文字の並びが逆順である点を除けば,引数1と全く同じ長さで,かつ,全く
同じ文字群の文字列を返す。
この関数の型は,引数の型に従って次のとおりとする。
引数の型
関数の型
英字
英数字
英数字
英数字
各国文字
各国文字
15.65.1 一般形式
FUNCTION REVERSE ( 引数1 )
15.65.2 引数
1) 引数1は,字類が英字,英数字又は各国文字で,長さが1文字以上なければならない。
15.65.3 関数の返却値
1) 引数1の文字列の長さをnとすると,返却値は,1 ≤ j ≤ nの値をとるjに関して,j番目の文字
474
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
が引数1の (n ‒ j + 1) 番目の文字である,長さnの文字列とする。
15.66 SIGN関数
SIGN(正負)関数は,引数の符号に従って+1,0,‒1のいずれかを返す。この関数の型は,整数とする。
15.66.1 一般形式
FUNCTION SIGN ( 引数1 )
15.66.2 引数
1) 引数1は,字類が数字でなければならない。
15.66.3 関数の返却値
1) 返却値と等価な算術式は,次のとおりとする。
a) 引数1が正値のとき
( 1 )
b) 引数1がゼロのとき
( 0 )
c) 引数1が負値のとき
( ‒1 )
15.67 SIN関数
SIN(正弦)関数は,引数1で指定したラジアン単位の角度に対する正弦(sine)の近似値を返す。
この関数の型は,数字とする。
15.67.1 一般形式
FUNCTION SIN ( 引数1 )
15.67.2 引数
1) 引数1は,字類が数字でなければならない。
15.67.3 関数の返却値
1) 返却値は,引数1の正弦の近似値とする。その値域は ‒1 ≦ 返却値 ≦ +1 である。
15.68 SQRT関数
SQRT(平方根)関数は,引数1の平方根(square root)の近似値を返す。
この関数の型は,数字とする。
15.68.1 一般形式
FUNCTION SQRT ( 引数1 )
15.68.2 引数
1) 引数1は,字類が数字でなければならない。
2) 引数1の値は,ゼロ又は正でなければならない。
15.68.3 関数の返却値
1) 標準算術を指定した場合,引数1は丸められない。
2) 標準算術が有効であるとき,返却値は,引数1の正確な平方根の絶対値を32けたに切り捨て,正規化
して,標準中間データ項目に格納したものである。
注記 標準算術が有効なとき,返却値に等価な算術式はない。算術式“作用対象1 ** 0.5”の評価は,
算術式の評価規則に従う。
3) 固有算術が有効であるとき,返却値は,引数1の平方根を近似する絶対値である。
475
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
15.69 STANDARD-COMPARE関数
STANDARD-COMPARE(標準比較)関数は,引数1と引数2とを比較した結果を示す文字を返す。この
比較では,ISO/IEC 14651:2001に従って構築された,文化圏依存の順序付け表を用いる。この関数の型は,
英数字とする。
15.69.1 一般形式
FUNCTION STANDARD-COMPARE ( 引数1 引数2 [順序付け名1] [引数4])
15.69.2 引数
1) 引数1は,字類が英字,英数字又は各国文字でなければならない。
2) 引数2は,字類が英字,英数字又は各国文字でなければならない。
3) 引数1及び引数2は,字類が異なっていてもよい。
4) 順序付け名1の指定があるとき,それは,特殊名段落のORDER TABLE句で順序付け表に関連付けた
ものでなければならない。用いる順序付け表を順序付け名1で識別する。順序付け名1の指定がない
とき,ISO/IEC 14651:2001/Amd.1:2003の順序付け表ISO14651̲2002̲TABLE1を,既定解釈の順序
付け表として用いなければならない。
5) 引数4を指定するとき,引数4はゼロでない正の整数でなければならない。
15.69.3 関数の返却値
1) 引数4を指定しないとき,順序付け表に定義してある最も高いレベルを比較に使用する。
2) 処理系上でISO/IEC 14651:2001の順序付け表が実装・提供されていない場合,指定された順序付けレ
ベルが実装・提供されていない場合,又は引数4で指定したレベル番号が順序付け表で定義されてい
ない場合,EC-ORDER-NOT-SUPPORTED例外状態になる。
3) 引数の字類が異なり,一方の引数が各国文字であるとき,比較の処理上もう一方の引数を各国文字字
類に変換する。
4) 比較の処理上,末尾にある空白列は比較対象から切り捨てる。ただし,空白列だけからなる作用対象
の切捨て結果は,単一の空白とする。
5) 引数1と引数2との比較は,ISO/IEC 14651:2001に規定された順序付け表と順序付けレベルとに従う。
注記 この比較は文化圏依存であり,ほとんどの文化圏にとって受入れ可能である。これは必ずし
も文字単位の比較とは限らず,大文字と小文字との区別が必要な比較であるとも限らない。
この関数を使用する利用者は,ISO/IEC 14651:2001が規定する比較の種類,及び利用者の設
置環境で使用する順序付け表を理解していることが望ましい。
6) 返却値は,次による。
"=" 引数どうしが等しい場合
"<" 引数1が引数2よりも小さい場合
">" 引数1が引数2よりも大きい場合
7) 返却値の長さは1とする。
15.70 STANDARD-DEVIATION関数
STANDARD-DEVIATION(標準偏差)関数は,その引数の標準偏差の近似値を返す。この関数の型は,
数字とする。
15.70.1 一般形式
FUNCTION STANDARD-DEVIATION ( {引数1} … )
15.70.2 引数
476
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) 引数は,字類が数字でなければならない。
15.70.3 関数の返却値
1) 返却値に等価な算術式は,次のとおりとする。
FUNCTION SQRT (FUNCTION VARIANCE (引数並び))
ここで“引数並び”は,このSTANDARD-DEVIATION関数自体の引数1の並びと同一とする。
15.71 SUM関数
SUM(合計)関数は,引数の合計を返す。この関数の型は,引数の型に従って次のとおりとする。
引数の型
関数の型
全ての引数が整数
整数
数字(整数の混在可)
数字
15.71.1 一般形式
FUNCTION SUM ( {引数1} … )
15.71.2 引数
1) 引数は,字類が数字でなければならない。
15.71.3 関数の返却値
1) 返却値に等価な算術式は,次のとおりとする。
a) 指定された引数1が1個のとき
(引数1)
b) 指定された引数1が2個のとき
(引数11 + 引数12)
c) 指定された引数1がn個のとき
(引数11 + 引数12 + … + 引数1n)
15.72 TAN関数
TAN(正接)関数は,引数1で指定したラジアン単位の角度に対する正接(tangent)の近似値を返す。
この関数の型は,数字とする。
15.72.1 一般形式
FUNCTION TAN ( 引数1 )
15.72.2 引数
1) 引数は,字類が数字でなければならない。
15.72.3 関数の返却値
1) 返却値は,引数1の正接の近似値とする。
15.73 TEST-DATE-YYYYMMDD関数
TEST-DATE-YYYYMMDD(西暦4けた化年月日関数の引数検査)関数は,標準形式(YYYYMMDD)
の日付がグレゴリオ暦上で妥当な日付か否かを検査する。INTEGER-OF-DATE関数の引数1は,標準形式
でなければならない。この関数の型は,整数とする。
15.73.1 一般形式
FUNCTION TEST-DATE-YYYYMMDD ( 引数1 )
15.73.2 引数
1) 引数1は,整数でなければならない。
15.73.3 関数の返却値
477
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) 返却値は,次による。
a) 引数1の値が16010000よりも小さいか又は99999999よりも大きい場合
( 1 )
注記1 年が1601〜9999の範囲外である。
b) FUNCTION MOD(引数1, 10000)の値が100より小さい又は1299より大きい場合
( 2 )
注記2 月が01〜12の範囲外である。
c) FUNCTION MOD(引数1, 100)の値が1よりも小さいか,又はFUNCTION INTEGER(引数1/ 10000)
で決まる年の FUNCTION INTEGER (FUNCTION MOD(引数1, 10000) / 100) で決まる月の日数よ
りも大きい場合
( 3 )
注記3 日が年と月に対して不当である。
d) さもなければ
( 0 )
注記4 日付は妥当である。
15.74 TEST-DAY-YYYYDDD関数
TEST-DAY-YYYYDDD(西暦4けた化通日関数の引数検査)関数は,年日形式(YYYYDDD)の日付が
グレゴリオ暦上で妥当な日付かを否か検査する。INTEGER-OF-DAY関数の引数1は,年日形式でなけれ
ばならない。この関数の型は,整数とする。
15.74.1 一般形式
FUNCTION TEST-DAY-YYYYDDD ( 引数1 )
15.74.2 引数
1) 引数1は,整数でなければならない。
15.74.3 関数の返却値
1) 返却値は,次による。
a) 引数1の値が1601000よりも小さいか又は9999999よりも大きい場合
( 1 )
注記1 年が1601〜9999の範囲外である。
b) FUNCTION MOD(引数1, 1000)の値が1より小さいか,又は FUNCTION INTEGER (引数1/ 1000)
で決まる年の日数よりも大きい場合
( 2 )
注記2 日が年に対して不当である。
c) さもなければ
( 0 )
注記3 日付は妥当である。
15.75 TEST-NUMVAL関数
TEST-NUMVAL(数字列の数値関数の引数検査)関数は,引数1の内容が,NUMVAL関数の引数1に対
する仕様に適合することを検証する。この関数の型は,整数とする。
15.75.1 一般形式
FUNCTION TEST-NUMVAL ( 引数1 )
478
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
15.75.2 引数
1) 引数1は,英数字定数,各国文字定数,字類が英数字又は各国文字のデータ項目でなければならない。
15.75.3 関数の返却値
1) 返却値は,次による。
a) 引数1の内容が,NUMVAL関数に対する引数の規則に適合している場合
( 0 )
b) 誤りのある文字が一つ以上ある場合,誤りのある最初の文字位置。
注記1 幾つかの数字の後に幾つかの空白が続いてもよいので,数字列の途中に空白がある場合
の返却値は,その空白の後に現れる最初の非空白文字の位置となる。
例えば,引数1が "0 1" であるとき返却値は ( 3 ) になる。
注記2 31けたを超える引数で,誤りのある文字は32けた目なので,それ以前に誤りがなけれ
ば返却値は32けた目の位置となる。
c) さもなければ
( FUNCTION LENGTH (引数1) + 1 )
注記3 そのような誤りには,次に示すものが含まれる。ただし,これだけとは限らない。
− 引数1の長さがゼロ。
− 引数1の内容が空白だけ。
− 引数1の内容の文字は正しいが "+." のように尻切れ。
15.76 TEST-NUMVAL-C関数
TEST-NUMVAL-C(編集文字列の数値関数の引数検査)関数は,引数1の内容が,NUMVAL-C関数の引
数1に対する仕様に適合することを検証する。この関数の型は,整数とする。
15.76.1 一般形式
FUNCTION TEST-NUMVAL-C ( 引数1
LOCALE [現地特性名1]
引数2
[ANYCASE])
15.76.2 引数
1) 引数1は,字類が英数字又は各国文字でなければならない。
2) 引数2を指定するとき,引数2のその字類は引数1と同じでなければならない。
3) キーワードLOCALE及び現地特性名1を指定するとき,現地特性名1は,特殊名段落中で現地特性に
関連付けたものでなければならない。必要な現地特性が使用可能でないときはEC-LOCALE-MISSING
例外状態になる。
4) キーワードANYCASEの指定があるとき,引数1の中にある通貨文字列を検出するための突合せ規則
は,大文字と小文字とを区別しない。キーワードANYCASEの指定がないとき,通貨文字列を検出す
るための突合せ規則は,大文字と小文字とを区別する。
15.76.3 関数の返却値
1) 返却値は,次による。
a) 引数1の内容が,NUMVAL-C関数に対する引数の規則に適合している場合
( 0 )
b) 誤りのある文字が一つ以上ある場合,誤りのある最初の文字位置。
注記1 幾つかの数字の後に幾つかの空白が続いてもよいので,数字列の途中に空白がある場合
の返却値は,その空白の後に現れる最初の非空白文字の位置となる。
479
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
例えば,引数1が "0 1" であるとき返却値は ( 3 ) になる。
注記2 31けたを超える引数で,誤りのある文字は32けた目なので,それ以前に誤りがなけれ
ば返却値は32けた目の位置となる。
c) さもなければ
( FUNCTION LENGTH (引数1) + 1 )
注記3 そのような誤りには,次に示すものが含まれる。ただし,これだけとは限らない。
− 引数1の長さがゼロ。
− 引数1の内容が空白だけ。
− 引数1の内容の文字は正しいが "+." のように尻切れ。
15.77 TEST-NUMVAL-F関数
TEST-NUMVAL-F(浮動小数点形式数値関数の引数検査)関数は,引数1の内容が,NUMVAL-F関数の
引数1に対する仕様に適合することを検証する。この関数の型は,整数とする。
15.77.1 一般形式
FUNCTION TEST-NUMVAL-F ( 引数1 )
15.77.2 引数
1) 引数1は,英数字定数,各国文字定数,字類が英数字又は各国文字のデータ項目でなければならない。
15.77.3 関数の返却値
1) 返却値は,次による。
a) 引数1の内容が,NUMVAL-F関数に対する引数の規則に適合している場合
( 0 )
b) 誤りのある文字が一つ以上ある場合,誤りのある最初の文字位置。
注記1 幾つかの数字の後に幾つかの空白が続いてもよいので,数字列の途中に空白がある場合
の返却値は,その空白の後に現れる最初の非空白文字の位置となる。
例えば,引数1が "0 1E+2" であるとき返却値は ( 3 ) になる。
注記2 仮数部が31けたを超える引数で,誤りのある文字は仮数部の32けた目なので,それ以
前に誤りがなければ,返却値は仮数部の32けた目の位置となる。同じ理由によって,指
数部が3けたを超える引数では,誤りのある文字は指数部の4けた目の位置になる。
注記3 引数の指数部に符号がないと,指数の1けた目の位置を誤りのある文字とみなす。
c) さもなければ
( FUNCTION LENGTH (引数1) + 1 )
注記4 そのような誤りには,次に示すものが含まれる。これだけとは限らない。
− 引数1の長さがゼロ。
− 引数1の内容が空白だけ。
− 引数1の内容の文字は正しいが "+." のように尻切れ。
15.78 UPPER-CASE関数
UPPER-CASE(大文字変換)関数は,引数1の値のうち,あらゆる小文字を対応する大文字で置換した
文字列を返す。この関数の型は,引数の型に従って次のとおりとする。
引数の型
関数の型
英字
英数字
英数字
英数字
480
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
各国文字
各国文字
15.78.1 一般形式
FUNCTION UPPER-CASE ( 引数1 )
15.78.2 引数
1) 引数1は,字類が英字,英数字又は各国文字で,長さが1文字以上なければならない。
15.78.3 関数の返却値
1) 引数1の内容の,あらゆる小文字を対応する大文字で置換した文字列を返す。
2) 字類分けに対しての,ある現地特性が有効である場合,小文字から大文字への対応付けは,現地特性
のカテゴリLC̲CTYPEから決まる[12.2.5(実行用計算機段落)参照]。
3) 返却値の文字列が引数1と同じ長さになるのは,小文字と大文字との間に1対1の対応付けが存在す
る場合である。小文字と大文字との対応付けが1対1ではない場合,返却値の文字列は,引数1より
も長くなることも短くなることもあり,引数1の内容及び現地特性の指定に依存する。
4) ある小文字にとって,対応する大文字が存在しなければ,返却値の中でその文字は変わらない。字類
分けに対して,ある現地特性が有効であり,その現地特性には大文字の対応付けの規定が存在しなけ
れば,返却値の中でその文字は変わらない。
15.79 VARIANCE関数
VARIANCE(分散)関数は,引数の分散の近似値を返す。この関数の型は,数字とする。
15.79.1 一般形式
FUNCTION VARIANCE ( {引数1} … )
15.79.2 引数
1) 引数は,字類が数字でなければならない。
15.79.3 関数の返却値
1) 返却値に等価な算術式は,次のとおりとする。
a) 指定された引数1が1個のとき
( 0 )
b) 指定された引数1が2個のとき
(((引数11 ‒ FUNCTION MEAN (引数並び)) ** 2 +
(引数12 ‒ FUNCTION MEAN (引数並び)) ** 2) / 2)
c) 指定された引数1がn個のとき
(引数11 + 引数12 + … + 引数1n)
(FUNCTION SUM (
((引数11 ‒ FUNCTION MEAN (引数並び)) ** 2)
((引数12 ‒ FUNCTION MEAN (引数並び)) ** 2)
…
((引数1n ‒ FUNCTION MEAN (引数並び)) ** 2)) / n)
ここで“引数並び”は,このVARIANCE関数への引数並びとし,引数1iは,このVARIANCE関数
への引数1の並びのi番目の引数とする。
15.80 WHEN-COMPILED関数
WHEN-COMPILED(翻訳日時)関数は,この翻訳単位を翻訳したシステムの提供する,この翻訳単位を
翻訳した日付及び時刻を返す。この関数の型は,英数字とする。
481
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
15.80.1 一般形式
FUNCTION WHEN-COMPILED
15.80.2 関数の返却値
1) 返却値は,次による。文字位置の番号付けは左から右へ1からの昇順である。
文字位置 内容
1〜 4
グレゴリオ暦の年を表す4けたの数字。
5〜 6
月を表す2けたの数字で,その範囲は01〜12。
7〜 8
日を表す2けたの数字で,その範囲は01〜31。
9〜10
時を表す2けたの数字で,その範囲は00〜23。
11〜12
分を表す2けたの数字で,その範囲は00〜59。
13〜14
秒を表す2けたの数字で,その範囲は
− LEAP-SECOND指示のOFF指定が有効なら00〜59。
− LEAP-SECOND指示のON指定が有効なら00〜nn。
ここで,nnの値は実装者定義とする。
15〜16
1/100秒を表す2けたの数字で,その範囲は00〜99。
翻訳を行ったシステムに秒の小数部を提供する機能がなければ値00を返す。
17
文字"-",文字"+",文字"0"のいずれか。先行文字位置に示す現地時間が協定世界時
より遅れている場合は文字"-"を,進んでいる場合又は同じである場合は文字"+"を
返す。翻訳を行ったシステムに現地時間の時差を提供する機能がなければ,文字"0"
を返す。
18〜19
文字位置17が"-"の場合,00〜12の範囲の数字2けたで協定世界時からの現地時間
の遅れ時差の時間数を表す。"+"の場合,00〜13の範囲の数字2けたで協定世界時
からの現地時間の進み時差の時間数を表す。文字位置17が"0"のとき値00を返す。
20〜21
文字位置17が"-"又は"+"の場合,00〜59の範囲の数字2けたで現地時間の時差を
分単位で表す。文字位置17が"0"のとき値00を返す。
2) 返却値は,この関数を中に含んでいる翻訳単位の翻訳日時である。含まれるソース単位中での返却値
は,それが中に含まれている翻訳単位に関連する翻訳日時である。
3) ソース印字出力中及び生成された実行用コード中に翻訳日時を提供しているとき,返却値は,それら
と同じ翻訳日時を表示しなければならない。ただし,表現及び精度は異なっていてもよい。
15.81 YEAR-TO-YYYY関数
YEAR-TO-YYYY(標準年変換)関数は,引数1が表す年号の下2けたを4けた年号へと変換する。引
数2は,実行日時の年に加算して,引数1の年が収まる100年の区間,すなわち,“移動窓”の最後の年を
定義する。引数3は,実行日時の年を指定する。この関数の型は,整数とする。
15.81.1 一般形式
FUNCTION YEAR-TO-YYYY ( 引数1 [引数2 [引数3]])
15.81.2 引数
1) 引数1は,0 ≦ 引数1< 100の整数でなければならない。
2) 引数2は,整数でなければならない。
3) 引数2を省略すると,関数の評価は引数2に50を指定した場合と同様になる。
4) 引数3は,整数であって1601〜9999でなければならない。
482
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
5) 引数3を省略すると,関数の評価は引数3に次を指定した場合と同様になる。
(FUNCTION NUMVAL (FUNCTION CURRENT-DATE (1:4)))
6) 引数2と引数3の値の合計は,1700〜9999でなければならない。
15.81.3 関数の返却値
1) “最大年”は,次のとおり計算する。
(引数2 + 引数3)
2) 返却値に等価な算術式は,次のとおりとする。
a) 条件 (FUNCTION MOD(最大年, 100)≧ 引数1) が真になる場合
(引数1 + 100 * (FUNCTION INTEGER (最大年 / 100)))
b) さもなければ
(引数1 + 100 * (FUNCTION INTEGER (最大年 / 100) ‒ 1))
注記1 1995年の時点でYEAR-TO-YYYY ( 4,23) の返却値は2004になる。
2008年の時点でYEAR-TO-YYYY (98,(‒15)) の返却値は1898になる。
注記2 引数3を省略すると,YEAR-TO-YYYY関数は移動窓(sliding window)のアルゴリズム
を実現する。これはCURRENT-DATEの返す実行日時の年を基準としている。固定窓
(fixed window)のアルゴリズムを達成するには,引数2と引数3を適切に指定して,そ
の合計が要望する100年間隔の最後の年を規定するようにすればよい。
16 標準クラス
実装系は,標準クラスBASEを提供しなければならない。標準クラスBASEは,標準のオブジェクト生
存期間機能を提供するクラス階層の頂点として使用できる。しかし,この使用は必須ではない。実装系は,
特にCOBOL以外のオブジェクトシステムと相互運用するCOBOLオブジェクトを生成するなど,オブジ
ェクト生存期間の実現に別の機構を用いる,替わりの頂点クラスを提供してもよい。
16.1 BASEクラス
標準クラスBASEが実装・提供する形式的なインタフェースの仕様は,次による。インタフェース
BaseFactoryInterfaceは,BASEクラスのファクトリのインタフェースを規定している。インタフェース
BaseInterfaceは,BASEクラスのオブジェクトのインタフェースを規定している。BASEクラスの実装は,
ここで定義したインタフェースを参照するIMPLEMENTS句つきで記述したものでなければならず,これ
以降に規定する文法上の意味を備えていなければならない。
注記 標準クラスBASEは,COBOLで実装しなくてもよい。
Interface-id. BaseFactoryInterface.
Procedure division.
Method-id. New.
Data division.
Linkage section.
01 outObject usage object reference active-class.
Procedure division returning outObject.
End method New.
End Interface BaseFactoryInterface.
483
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
Interface-id. BaseInterface.
Procedure division.
Method-id. FactoryObject.
Data division.
Linkage section.
01 outFactory usage object reference factory of active-class.
Procedure division returning outFactory.
End-method FactoryObject.
End Interface BaseInterface.
16.1.1 Newメソッド
Newメソッドはファクトリメソッドであって,クラスのインスタンスオブジェクトを生成するための標
準的な機構を提供する。
16.1.1.1 一般規則
1) Newメソッドはオブジェクトに対して記憶域を割り当て,そのインスタンスデータを初期化して
[14.5.2.2(オブジェクトデータの初期状態)参照],生成されたオブジェクトを指す参照を返す。
2) 新たなオブジェクトの生成に必要とされる資源が使用可能でない場合,返されるオブジェクト参照は
NULLを指すよう設定され,EC-OO-RESOURCE例外状態になってNewメソッドの呼出し元の実行時
要素へと伝ぱ(播)する。
16.1.2 FactoryObjectメソッド
FactoryObjectメソッドはインスタンスメソッドであって,インスタンスが属するクラスに関連するファ
クトリオブジェクトへの到達手段を獲得するための標準的な機構を提供する。
16.1.2.1 一般規則
1) インスタンスオブジェクトを対象としての呼出しのとき,FactoryObjectメソッドは,オブジェクトが
属するクラスを決定してそのクラスに関連するファクトリオブジェクトへの参照を返す。
注記 このメソッドは,あるオブジェクトの属するクラスが分からないとき役に立つ。クラスが分か
っているとき,ファクトリオブジェクトのメソッドを呼び出すのには,次のような文を用いれ
ばよい。
INVOKE クラス名 "ファクトリメソッド名".
一意名anObjectの指すオブジェクトの属するクラスが分からないとき,ファクトリメソッド
を呼び出すのには,次のコーディングを用いればよい。
INVOKE anObject "FactoryObject" returning aFactoryObject
INVOKE aFactoryObject "ファクトリメソッド名".
484
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書A
(規定)
通信機能
通信機能は,通信文又はその一部分を呼び出し,処理し,生成するための機能を提供する。この機能に
よって,通信管理システム(MCS)を通して通信装置と通信することが可能になる。
通信機能は,この規格の選択可能な言語要素である。通信機能は廃要素であり,規格COBOLの次回改
正版では削除される予定である。
注記 字類がブール又は各国文字であるデータの実装・提供,及び例外処理の実装・提供は,廃要素
である通信機能からは意図的に省かれている。
通信機能を用いてよいのは,プログラム定義中だけとする。
この規格中で通信機能が含まれるのは次の箇所である。
3.1(規格合致実装系)では,附属書A(通信機能)を選択機能単位と規定している。
4(定義)では,MCS及び通信管理システム。
8.3.1.1.1(利用者定義語)では,通信記述名。
8.4.1(一意参照)では,書き方1で通信記述名に言及している。
8.4.5(名前の有効範囲)では,第5段落で通信節に言及している。
8.6.2(外部項目及び内部項目)では,第5段落で通信節に言及している。
8.6.3(自動項目,初期化項目及び静的項目)では,通信節に言及している。
8.9(予約語)。通信機能に特有な予約語は次のとおりである: CD,DISABLE,EGI,EMI,ENABLE,
END-RECEIVE,ESI,MESSAGE,PURGE,QUEUE,RECEIVE,SEGMENT,SEND,SUB-QUEUE-1,
SUB-QUEUE-2,SUB-QUEUE-3,TERMINAL,TEXT。
10.5(COBOL翻訳群)では,構文規則4) で通信節に言及している。
12.2.6(特殊名段落)では,構文規則6) でSEND文に言及している。
13.1(データ部の構造)では,一般形式で通信節に言及している。
13.16.31(レベル番号)では,構文規則2) でCD記述項に言及している。
13.16.42(REDEFINES句)では,構文規則4) で通信節に言及している。
13.16.43(RENAMES句)では,構文規則3) でCD記述項に言及している。
13.16.61(VALUE句)では,概要説明及び一般規則4) で通信節に言及している。
表13(手続き文)で,RECEIVE文及び選択可能なNO DATA指定,WITH DATA指定,END-RECEIVE
指定に言及している。
14.5.2.1.2.1(初期状態)では,通信機能に言及している。
14.5.10(実行単位の正常終了)で,規則2) は通信機能にだけ適用される。
14.5.12.1(例外状態)では,通信機能に言及している。
14.8.4(CALL文)では,構文規則3) 及び7) で通信節に言及している。
14.8.22(INVOKE文)では,構文規則9) 及び11) で通信節に言及している。
B.1(実装者定義の言語要素一覧)では,項番26) 及び27) で通信節に言及し,項番113) でRECEIVE
文に言及している。
485
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
B.2(規定されない言語要素一覧)では,項番7) 及び20) で通信節に,項番52),53) 及び54) でSEND
文に言及している。
B.3(処理系依存の言語要素一覧)では,項番22) でSEND文に言及している。
E.4.3.2.1.5(その他の対象)では,通信節に言及している。
E.4.3.2.2.3(その他の対象)では,通信節に言及している。
E.5は,(通信機能)に対する概念説明の部分である。
索引では,幾多の通信節の内容に言及している。
A.1 データ部
A.1.1 通信節
通信節は,ソースプログラムのデータ部中に書く。通信節は,通信管理システムとプログラムとの間の
論理的な連絡に用いられるデータ項目を記述する。この通信管理システムとの連絡用領域は,通信記述項
によって定義する。通信記述項の後には,0個以上のレコード記述項が続く。
通信節の一般形式は,次による。
COMMUNICATION SECTION.
通信記述項
定数名記述項
レコード記述項 … …
A.1.1.1 通信記述項
COBOLプログラムでは,通信記述(CD)項が通信節の中の構造の最高レベルを表す。
入力通信記述項では,主待ち行列,副待ち行列,受信日付,受信時刻,発信源の記号名,文字数,終了
キー,状態キー及び通信文の個数を指定する。出力通信記述項では,あて先の個数,文字数,状態キー,
誤りキー及びあて先の記号名を指定する。入出力通信記述項では,受信日付,受信時刻,通信装置の記号
名,文字数,終了キー及び状態キーを指定する。
A.1.1.2 レコード記述の構造
通信記述項に関連するレコード領域は,通信記述項の直後に利用者が指定するレコード記述項によって,
暗黙に再定義されることがある。
レコード記述は,特定のレコードの性質を記述するデータ記述項の組からなる。各々のデータ記述項は
レベル番号と,指定するならその直後のデータ名又はFILLER句,その後に必要に応じて書く一連の独立
な句からなる。レコード記述は階層構造をもっていてもよく,ある記述項中で用いられる句は,従属する
記述項の有無によってかなり異なる。レコード記述の構造及びレコード記述項中に書いてもよい要素は,
8.5.1.2(レベル)及び13.14(データ記述項)による。
A.1.2 通信記述項
通信記述項は,通信管理システムとCOBOLプログラムの間のインタフェース領域を規定する。
486
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
A.1.2.1 一般形式
書き方1(入力)
CD 通信記述項1 FOR [INITIAL] INPUT
[SYMBOLIC QUEUE IS データ名1]
[SYMBOLIC SUB-QUEUE-1 IS データ名2]
[SYMBOLIC SUB-QUEUE-2 IS データ名3]
[SYMBOLIC SUB-QUEUE-3 IS データ名4]
[MESSAGE DATE IS データ名5]
[MESSAGE TIME IS データ名6]
[SYMBOLIC SOURCE IS データ名7]
[TEXT LENGTH IS データ名8]
[END KEY IS データ名9]
[STATUS KEY IS データ名10]
[MESSAGE COUNT IS データ名11]
データ名1 データ名2 データ名3 データ名4 データ名5 データ名6
データ名7 データ名8 データ名9 データ名10 データ名11
.
書き方2(出力)
CD 通信記述項1 FOR OUTPUT
[DESTINATION COUNT IS データ名1]
[TEXT LENGTH IS データ名2]
[STATUS KEY IS データ名3]
[DESTINATION TABLE OCCURS 整数1 TIMES [INDEXED BY {指標名1} … ]]
[ERROR KEY IS データ名4]
[SYMBOLIC TERMINAL IS データ名5] .
書き方3(入出力)
CD 通信記述項1 FOR [INITIAL] I-O
[MESSAGE DATE IS データ名1]
[MESSAGE TIME IS データ名2]
[SYMBOLIC TERMINAL IS データ名3]
[TEXT LENGTH IS データ名4]
[END KEY IS データ名5]
[STATUS KEY IS データ名6]
[
]
データ名1 データ名2 データ名3 データ名4 データ名5 データ名6
A.1.2.2 構文規則
全ての書き方
1) 通信記述項は,通信節にだけ書くことができる。
書き方1,書き方3
2) 単一のプログラム中でINITIAL句を指定してもよい通信記述項は一つだけとする。手続き部の見出し
にUSING指定のあるプログラム中ではINITIAL句を書いてはならない。
3) INITIAL句を除き,選択可能な句は任意の順序で書いてよい。
4) インタフェース領域を指定する選択可能な句を全て省略した場合,通信記述項の直後に01レベルのデ
487
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ータ記述項を必ず書かなければならない。選択可能な句を書いた後に01レベルのデータ記述項を書い
てもよい。
書き方1
5) 入力通信記述項に後続するレコード記述項は,入力通信記述項によって確立するレコード領域を暗黙
に再定義する。このレコード記述項は,英数字文字位置にして87個分のレコードを記述しなければな
らない。このレコードを多重に再定義してもよいが,VALUE句を書いてよいのは,最初のレコード記
述だけとする。通信管理システムは常に,一般規則2) が規定するデータ記述に従ってこのレコード
を参照する。
6) データ名1〜データ名11は,この通信記述項内で一意でなければならない。一連のデータ名を書く場
合,これらのデータ名はいずれも,予約語FILLERで置き換えてよい。
書き方2
7) 選択可能な句は,任意の順序で書いてよい。
8) 書き方2中の選択可能な句を全て省略した場合,通信記述項の直後には01レベルのデータ記述項を必
ず書かなければならない。
9) 出力通信記述項に従属するレコード記述項は,出力通信記述項によって確立するレコード領域を暗黙
に再定義する。このレコードを多重に再定義してもよいが,VALUE句を書いてよいのは,最初のレコ
ード記述だけとする。通信管理システムは常に,一般規則16) が規定するデータ記述に従ってこのレ
コードを参照する。
10) データ名1〜データ名5は,この通信記述項内で一意でなければならない。
11) DESTINATION TABLE OCCURS(あて先表の反復)句がない場合,一つの誤りキー及び一つのあて先
領域が想定される。この場合,これらのデータ項目を参照するとき,添字付けをしてはならない。
12) DESTINATION TABLE OCCURS(あて先表の反復)句がある場合,データ名4及びデータ名5を参照
するときには,必ず添字付けをしなければならない。
13) データ名1のデータ項目の値に制限はない。
書き方3
14) 入出力通信記述項に後続しているレコード記述項は,入出力通信記述項によって確立するレコード領
域を暗黙に再定義する。このレコード記述項は,英数字文字位置にして33個分のレコードを記述しな
ければならない。このレコードを多重に再定義してもよいが,VALUE句を書いてよいのは,最初のレ
コード記述だけとする。通信管理システムは常に,一般規則24) が規定するデータ記述に従ってこの
レコードを参照する。
15) データ名1〜データ名6は,この通信記述項内で一意でなければならない。一連のデータ名を書く場
合,これらのデータ名はいずれも,予約語FILLERで置き換えてよい。
A.1.2.3 一般規則
書き方1
1) 入力通信記述項の情報は,通信管理システムとプログラムの間で処理される通信文に関する連絡に用
いられる。この情報は,通信装置から通信文の一部として入ってくるわけではない。
2) 入力通信記述項ごとに,連続した英数字87文字のレコード領域が割り付けられる。このレコード領域
は,次のとおりに定義される。
a) SYMBOLIC QUEUE(待ち行列)句を書くと,データ名1が,このレコード中の 1〜12けた目の12
文字の英数字基本データ項目の名前になる。
488
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
b) SYMBOLIC SUB-QUEUE-1(副待ち行列1)句を書くと,データ名2が,このレコード中の13〜24
けた目の12文字の英数字基本データ項目の名前になる。
c) SYMBOLIC SUB-QUEUE-2(副待ち行列2)句を書くと,データ名3が,このレコード中の25〜36
けた目の12文字の英数字基本データ項目の名前になる。
d) SYMBOLIC SUB-QUEUE-3(副待ち行列3)句を書くと,データ名4が,このレコード中の37〜48
けた目の12文字の英数字基本データ項目の名前になる。
e) MESSAGE DATE(受信日付)句を書くと,データ名5が,このレコード中の49〜54けた目の6文
字の演算符号なし整数項目の名前になる。
f)
MESSAGE TIME(受信時刻)句を書くと,データ名6が,このレコード中の55〜62けた目の8文
字の演算符号なし整数項目の名前になる。
g) SYMBOLIC SOURCE句を書くと,データ名7が,このレコード中の63〜74けた目の12文字の英
数字基本データ項目の名前になる。
h) TEXT LENGTH句を書くと,データ名8が,このレコード中の75〜78けた目の4文字の演算符号
なし整数基本データ項目の名前になる。
i)
END KEY(終了キー)句を書くと,データ名9が,このレコード中の79けた目の1文字の英数字
基本データ項目の名前になる。
j)
STATUS KEY(状態キー)句を書くと,データ名10が,このレコード中の80〜81けた目の2文字
の英数字基本データ項目の名前になる。
k) MESSAGE COUNT(通信文の個数)句を書くと,データ名11が,このレコード中の82〜87けた目
の6文字の演算符号なし整数基本データ項目の名前になる。
第2の手法として一連のデータ名を書いた場合,a)〜k) の句をこの順に書いたのと同じになる。
いずれの手法を用いても結果は,次のレコード記述を暗黙に定義することに等しい。
暗黙の記述
注記
01 データ名0.
02 データ名1
PICTURE X(12).
*> SYMBOLIC QUEUE
02 データ名2
PICTURE X(12).
*> SYMBOLIC SUB-QUEUE-1
02 データ名3
PICTURE X(12).
*> SYMBOLIC SUB-QUEUE-2
02 データ名4
PICTURE X(12).
*> SYMBOLIC SUB-QUEUE-3
02 データ名5
PICTURE 9(6).
*> MESSAGE DATE
02 データ名6
PICTURE 9(8).
*> MESSAGE TIME
02 データ名7
PICTURE X(12).
*> SYMBOLIC SOURCE
02 データ名8
PICTURE 9(4).
*> TEXT LENGTH
02 データ名9
PICTURE X.
*> END KEY
02 データ名10
PICTURE XX.
*> STATUS KEY
02 データ名11
PICTURE 9(6).
*> MESSAGE COUNT
注記 注記欄にある情報は説明用であり,記述項の一部ではない。
3) データ名2,データ名3及びデータ名4のデータ項目の内容は,用いないとき空白にしておかなけれ
ばならない。
4) データ名1のデータ項目には主待ち行列の記号名が入り,データ名2,データ名3及びデータ名4の
データ項目には副待ち行列の記号名が入る。これらの記号名は,システム名の構成規則に従い,かつ,
通信管理システムにとって既知でなければならない。
5) RECEIVE文は,通信記述項で指定された待ち行列中から,次の通信文又は通信文の一部分を,順次引
き取る。
489
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
RECEIVE文の実行時点で,入出力記述項のデータ名1のデータ項目の内容は,主待ち行列の記号名
でなければならない。データ名2,データ名3及びデータ名4のデータ項目の内容は,副待ち行列の
記号名でも空白でもよい。待ち行列の構造の,あるレベルに指定があるとき,それより上の全てのレ
ベルにも待ち行列が指定されていなければならない。待ち行列の指定が階層の全てのレベルに満たな
いとき,通信管理システムは,入力通信記述に指定した主待ち行列又は副待ち行列の中で,次に呼び
出される通信文又は通信文の一部分を決める。
RECEIVE文の実行が終わると,データ名1〜データ名4のデータ項目中に,待ち行列の構造の全て
のレベルにわたって記号名が入る。
6) このプログラムの実行が通信管理システムによって引き起こされた場合,そのプログラムが実行単位
を確立し,起動の要因となった通信文の入っている待ち行列の構造の記号名が,INITIAL句のある通
信記述項のデータ名1〜データ名4のデータ項目に設定される。その他の場合は,INITIAL句のある
通信記述項のこれらのデータ項目は,初期化され空白になる。
待ち行列の記号名の設定又は空白への初期化は,手続き部の最初の文の実行の前に行われる。
プログラムの実行を引き起こす原因となった実際の通信文は,データ名1〜データ名4のデータ項
目の内容を変更せずにRECEIVE文を実行することによって引き取ることができる。その通信記述項
の残りの部分が更新されるのは,このときだけである。
7) 通信管理システムが,通信記述項にINITIAL句のないプログラムの実行を引き起こそうとした場合,
その結果は規定されない。
8) RECEIVE文の実行中に通信管理システムは,データ名5のデータ項目に,通信文の受信を完了した日
付を“yymmdd”(年・月・日)の形で入れる。データ名5のデータ項目の内容が通信管理システムによ
って更新されるのは,RECEIVE文を実行したときだけである。
9) RECEIVE文の実行中に通信管理システムは,データ名6のデータ項目に,通信文の受信を完了した時
刻を "hhmmsstt"(時・分・秒・1/100秒)の形で入れる。データ名6のデータ項目の内容が通信管理シ
ステムによって更新されるのは,RECEIVE文を実行したときだけである。
10) RECEIVE文の実行中に通信管理システムは,データ名7のデータ項目に,通信文の発信源である通信
装置の記号名を入れる。この記号名は,システム名の構成規則に従っていなければならない。ただし,
通信管理システムに通信装置の記号名が知らされていなければ,このデータ項目には空白が入る。
11) 通信管理システムはデータ名8のデータ項目の内容によって,RECEIVE文の実行の結果として入った
通信文の文字位置の個数を表す。
12) データ名9のデータ項目の内容は,RECEIVE文の実行の一部として,通信管理システムによってだけ
設定され,次の規則に従う。
a) RECEIVE MESSAGE指定がある場合,
終了の状態
データ名9のデータ項目
通信群の終わりを検出したとき
3 が設定される。
通信文の終わりを検出したとき
2 が設定される。
伝送部分が通信文未満のとき
0 が設定される。
b) RECEIVE SEGMENT指定がある場合,
終了の状態
データ名9のデータ項目
通信群の終わりを検出したとき
3 が設定される。
通信文の終わりを検出したとき
2 が設定される。
490
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
通信行の終わりを検出したとき
1 が設定される。
伝送部分が通信行未満のとき
0 が設定される。
c) 上記の条件の二つ以上が同時に成り立つ場合には,より大きい方が入る。
13) データ名10のデータ項目の内容は,直前に実行したRECEIVE文,ACCEPT MESSAGE COUNT文,
ENABLE INPUT文又はDISABLE INPUT文の状態条件を示す。
データ名10のデータ項目の内容と状態条件との対応を,表A.1(通信状態キー条件)に示す。
14) データ名11のデータ項目の内容は,主待ち行列又は副待ち行列1などに滞留している通信文の個数を
示す。このデータ項目の内容は,ACCEPT MESSAGE COUNT文の実行中にだけ,通信管理システム
によって更新される。
書き方2
15) 出力通信記述項の情報は,通信管理システムとプログラムの間で処理される通信文に関する連絡に用
いられる。この情報は,通信文の一部として通信装置へ送られるわけではない。
16) 出力通信記述項ごとに,英数字文字位置で数えて計算式(10+13×整数1)で求まる大きさのレコー
ド領域が割り付けられる。このレコードは,次のとおりに定義される。
a) DESTINATION COUNT(あて先の個数)句を書くと,データ名1が,このレコード中の 1〜4けた
目の4文字の演算符号なし整数基本データ項目の名前になる。
b) TEXT LENGTH句を書くと,データ名2が,このレコード中の 5〜8けた目の4文字の符号なし整
数基本データ項目の名前になる。
c) STATUS KEY(状態キー)句を書くと,データ名3が,このレコード中の 9〜10けた目の2文字の
英数字基本データ項目の名前になる。
d) けた位置11〜23及びそれに続く13文字の各組は,次の記述をもつ表の要素を構成する。
1. ERROR KEY(誤りキー)句を書くと,データ名4が,1文字の英数字基本データ項目の名前にな
る。
2. SYMBOLIC DESTINATION句を書くと,データ名5が,12文字の英数字基本データ項目の名前に
なる。
なお,a)〜d) の句を書いた結果は,次のレコード記述を暗黙に定義することに等しい。
暗黙の記述
注記
01 データ名0.
02 データ名1
PICTURE 9(4).
*> DESTINATION COUNT
02 データ名2
PICTURE 9(4).
*> TEXT LENGTH
02 データ名3
PICTURE XX.
*> STATUS KEY
02 データ名
OCCURS 整数1 TIMES.
*> DESTINATION TABLE
03 データ名4 PICTURE X.
*> ERROR KEY
03 データ名5 PICTURE X(12).
*> SYMBOLIC DESTINATION
注記 注記欄にある情報は説明用であり,記述項の一部ではない。
17) データ名1のデータ項目の内容は,SEND文,PURGE文,ENABLE OUTPUT文又はDISABLE OUTPUT
文の実行中に,データ名5の領域のうちの使用するあて先の個数を通信管理システムに示す。
通信管理システムは,最初のデータ名5の領域の内容を最初のあて先として,第2の領域の内容を
第2のあて先として,以下,データ名1の内容が示す順番までの領域の内容をあて先とする。
SEND文,PURGE文,ENABLE OUTPUT文又はDISABLE OUTPUT文の実行中に,データ名1の
491
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
データ項目の値が1〜整数1の範囲外の値であれば,誤り条件が示されるだけでどのあて先に対して
も動作は行われず,この文の実行は終了させられる。
18) SEND文,PURGE文,ENABLE OUTPUT文又はDISABLE OUTPUT文の実行時にデータ名1のデー
タ項目の値が正しい値であることを保証するのは,利用者の責任とする。
19) SEND文の実行の一部として,通信管理システムは,データ名2のデータ項目の内容を,SEND文に
書かれた一意名のデータ項目の中で,送り出す左端の英数字文字位置の個数を利用者が示したものと
解釈する。
20) データ名5のデータ項目の反復にはそれぞれ,通信管理システムにとって既知なあて先の記号名を入
れる。これらの記号名は,システム名の構成規則に従っていなければならない。
21) データ名3のデータ項目の内容は,直前に実行したSEND文,PURGE文,ENABLE OUTPUT文又は
DISABLE OUTPUT文の状態条件を示す。
データ名3のデータ項目の内容と状態条件との対応を,表A.1(通信状態キー条件)に示す。
22) DISABLE OUTPUT文,ENABLE OUTPUT文,PURGE文又はSEND文の実行中に,通信管理システム
が誤りを検出すると,データ名3のデータ項目の内容とデータ名4の反復のうちデータ名1の内容が
示す順番までの内容とが更新される。
データ名4のデータ項目の内容と誤り条件との対応を,表A.2(誤りキーの値)に示す。
書き方3
23) 入出力通信記述項の情報は,通信管理システムとプログラムとの間で処理される通信文に関する連絡
に用いられる。この情報は通信装置から通信文の一部として入ってくるわけではない。
24) 入出力通信記述項ごとに英数字文字位置33個分のレコード領域が割り付けられる。このレコード領域
は,次のとおりに定義される。
a) MESSAGE DATE(受信日付)句を書くと,データ名1が,このレコード中の 1〜6けた目の6文字
の演算符号なし整数データ項目の名前になる。
b) MESSAGE TIME(受信時刻)句を書くと,データ名2が,このレコード中の 7〜14けた目の8文
字の演算符号なし整数データ項目の名前になる。
c) SYMBOLIC TERMINAL句を書くと,データ名3が,このレコード中の15〜26けた目の12文字の
英数字基本データ項目の名前になる。
d) TEXT LENGTH句を書くと,データ名4が,このレコード中の27〜30けた目の4文字の演算符号
なし整数データ項目の名前になる。
e) END KEY(終了キー)句を書くと,データ名5が,このレコード中の31けた目の1文字の英数字
基本データ項目の名前になる。
f)
STATUS KEY(状態キー)句を書くと,データ名6 が,このレコード中の32〜33けた目の2文字
の英数字基本データ項目の名前になる。
第2の手法として一連のデータ名を書いた場合,a)〜f) の句をこの順に書いたのと同じになる。
いずれの手法を用いても結果は,次のレコード記述を暗黙に定義することに等しい。
暗黙の記述
注記
01 データ名0.
02 データ名1
PICTURE 9(6).
*> MESSAGE DATE
02 データ名2
PICTURE 9(8).
*> MESSAGE TIME
02 データ名3
PICTURE X(12).
*> SYMBOLIC TERMINAL
492
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
02 データ名4
PICTURE 9(4).
*> TEXT LENGTH
02 データ名5
PICTURE X.
*> END KEY
02 データ名6
PICTURE XX.
*> STATUS KEY
注記 注記欄にある情報は説明用であり,記述項の一部ではない。
25) このプログラムの実行が通信管理システムによって引き起こされた場合,プログラムの実行を引き起
こす原因となった実際の通信文は,INITIAL句のある入出力通信記述項を指している最初のRECEIVE
文によって引き取ることができる。
26) データ名1の形式は“yymmdd”(年・月・日)とし,その内容は通信管理システムが通信文の受信を完
了した日付を表す。データ名1のデータ項目の内容が通信管理システムによって更新されるのは,
RECEIVE文を実行したときだけである。
27) データ名2の形式は "hhmmsstt"(時・分・秒・1/100秒)とし,その内容は通信管理システムが通信文
の受信を完了した時刻を表す。データ名2のデータ項目の内容が通信管理システムによって更新され
るのは,RECEIVE文を実行したときだけである。
28) このプログラムの実行が通信管理システムによって引き起こされた場合,そのプログラムが実行単位
を確立し,起動の要因となった通信文を発信した通信装置の記号名が,INITIAL句のある入出力通信
記述項のデータ名3のデータ項目に設定される。この通信装置の記号名は,システム名の構成規則に
従っていなければならない。
その他の場合には,INITIAL句のある入出力通信記述項のデータ名3のデータ項目は,初期化され
空白になる。
通信装置の記号名の設定又は空白への初期化は,手続き部の最初の文の実行の前に行われる。
29) 通信管理システムが,通信記述項にINITIAL句のないプログラムの実行を引き起こそうとした場合,
その結果は規定されない。
30) 入出力通信記述項にINITIAL句があって,プログラムの実行を引き起こしたのが通信管理システムで
ある場合,データ名3のデータ項目の内容を変更してはならない。もしその内容を変更すると,通信
記述名1を参照する文は全て不成功になり,発信源又はあて先が未知であることを示す値がデータ名
6のデータ項目に設定される[表A.1(通信状態キー条件)参照]。
31) 入出力通信記述項にINITIAL句がない場合,又は入出力通信記述項にINITIAL句があってプログラム
の実行を引き起こしたのが通信管理システムではない場合,通信記述名1を参照する文を最初に実行
する前に,データ名3に発信源又はあて先の記号名を指定しておかなければならない。
通信記述名1を参照する文を最初に実行した後,データ名3のデータ項目の内容を変更してはなら
ない。その内容を変更すると,通信記述名1を参照する文は全て不成功になり,発信源又はあて先が
未知であることを示す値がデータ名6のデータ項目に設定される[表A.1(通信状態キー条件)参照]。
32) 通信管理システムは,RECEIVE文の実行の結果として引き渡された通信文の英数字文字位置の個数
を,データ名4のデータ項目の内容によって表す。
SEND文の実行の一部として,通信管理システムは,データ名4のデータ項目の内容を,SEND文
の一意名のデータ項目の中で,送り出す左端の英数字文字位置の個数を利用者が示したものと解釈す
る。
33) データ名5のデータ項目の内容は,RECEIVE文の実行の一部として,通信管理システムによってだけ
設定され,次の規則に従う。
a) RECEIVE MESSAGE指定がある場合,
493
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
終了の状態
データ名9のデータ項目
通信群の終わりを検出したとき
3 が設定される。
通信文の終わりを検出したとき
2 が設定される。
伝送部分が通信文未満のとき
0 が設定される。
b) RECEIVE SEGMENT指定がある場合,
終了の状態
データ名9のデータ項目
通信群の終わりを検出したとき
3 が設定される。
通信文の終わりを検出したとき
2 が設定される。
通信行の終わりを検出したとき
1 が設定される。
伝送部分が通信行未満のとき
0 が設定される。
c) これらの条件の二つ以上が同時に成り立つ場合には,より大きい方のほうが入る。
34) データ名6のデータ項目の内容は,直前に実行したDISABLE文,ENABLE文,PURGE文,RECEIVE
文又はSEND文の状態条件を示す。
データ名6のデータ項目の内容と状態条件との対応を,表A.1(通信状態キー条件)に示す。
A.1.2.4 通信状態キー条件
各文の実行が終了したとき,書き方1のデータ名10,書き方2のデータ名3,及び書き方3のデータ名
6のデータ項目に設定される状態キーの値を,表A.1(通信状態キー条件)に示す。表中の"○"は,状態キ
ーの値がその文の実行によって起こり得ることを示す。
494
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表A.1−通信状態キー条件
R
E
C
E
IV
E
文
S
E
N
D
文
(
入
出
力
用
)
S
E
N
D
文
(
出
力
用
)
P
U
R
G
E
文
A
C
C
E
P
T
M
E
S
S
A
G
E
C
O
U
N
T
文
E
N
A
B
L
E
I
N
P
U
T
文
E
N
A
B
L
E
I
N
P
U
T
/I
-O
T
E
R
M
IN
A
L
文
E
N
A
B
L
E
O
U
T
P
U
T
文
D
IS
A
B
L
E
I
N
P
U
T
文
D
IS
A
B
L
E
I
N
P
U
T
/I
-O
T
E
R
M
IN
A
L
文
D
IS
A
B
L
E
O
U
T
P
U
T
文
状
態
キ
ー
の
値
○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 00 誤りは検出されない。動作は完了した。
○ ○
10 一つ以上のあて先が切り離されている。動作は完了した
[表A.2(誤りキーの値)参照]。
○
10 あて先が切り離されている。動作しなかった。
○ ○ ○ ○ ○ ○ 15 発信源又は一つ以上の待ち行列若しくはあて先が,既に
切離し又は接続されている[表A.2(誤りキーの値)参
照]。
○ ○ ○
○
○ 20 一つ以上のあて先が未知である。既知のあて先に対して
は動作が完了した[表A.2(誤りキーの値)参照]。
○
○ ○
○
20 主待ち行列又は副待ち行列の一つ以上が未知である。
動作しなかった。
○
○
○
21 発信源が未知である。動作しなかった。
○ ○
○
○ 30 あて先の数が正しくない。動作しなかった。
○ ○
50 文字数が一意名1の大きさを超えている。
○ ○
60 送信要求の文字数がゼロであるか,又は一意名1の指定
がない。動作しなかった。
○
65 出力待ち行列の容量を超えた
[表A.2(誤りキーの値)参照]。
○
70 一つ以上のあて先に取り除く対象が存在しなかった。
それ以外のあて先の動作は完了した。
○ ○
○
○ ○
○ 80 10,15,20の状態キーのうち,二つ以上が成立している
[表A.2(誤りキーの値)参照]。
9x 実装者定義の状態。
A.1.2.5 誤りキーの値
各文の実行が終了したときに書き方2のデータ名4のデータ項目に設定される誤りキーの値を,表A.2
(誤りキーの値)に示す。表中の"○"は,誤りキーの値がその文の実行によって起こり得ることを示す。
495
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表A.2−誤りキーの値
S
E
N
D
文
P
U
R
G
E
文
E
N
A
B
L
E
O
U
T
P
U
T
文
D
IS
A
B
L
E
O
U
T
P
U
T
文
誤
り
キ
ー
の
値
○
○
○
○
0
誤りは検出されない。
○
○
○
○
1
あて先が未知である。
○
○
2
あて先が切り離されている。
○
4
参照するあて先の通信文の一部分がない。
○
○
5
あて先が,既に切離し又は接続されている。
○
6
出力待ち行列の容量を超えた。
7〜9
将来の使用に備えて予約済み。
A〜Z
実装者定義の状態。
A.2 手続き部
A.2.1 ACCEPT MESSAGE COUNT文
ACCEPT MESSAGE COUNT(通信文の個数の入力)文は,待ち行列中の完全な通信文の個数を調べる。
A.2.1.1 一般形式
ACCEPT 通信記述名1 MESSAGE COUNT
A.2.1.2 構文規則
1) 通信記述名1は,入力用でなければならない。
A.2.1.3 一般規則
1) ACCEPT MESSAGE COUNT文は,通信記述名1の通信文の個数のデータ項目を更新して,通信記述
名1の領域のデータ名1(SYMBOLIC QUEUE)〜 データ名4(SYMBOLIC SUB-QUEUE-3)のデー
タ項目の内容で示される待ち行列の階層構造中にある,完全な通信文の個数を表すようにする。
2) ACCEPT MESSAGE COUNT文の実行の前に,通信記述項の領域内には,少なくとも調査の対象とな
る主待ち行列の名前が入っていなければならない。調査の結果によって,この通信記述項に関連する
データ名10(STATUS KEY)とデータ名11(MESSAGE COUNT)とのデータ項目の内容が,適切に
更新される[A.1.2(通信記述項)参照]。
A.2.2 DISABLE文
DISABLE(切離し)文は,通信管理システムに指示を行い,次に示すデータ転送を禁止させる。
1) 出力については,指定された出力待ち行列とあて先との間のデータ転送。
2) 入力については,指定された発信源と入力待ち行列との間のデータ転送。
3) 入出力については,プログラムと,指定された発信源又はあて先との間データ転送。
A.2.2.1 一般形式
DISABLE
INPUT [TERMINAL]
I-O TERMINAL
OUTPUT
通信記述名1
496
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
A.2.2.2 構文規則
1) INPUT指定を書くとき,通信記述名1は入力用でなければならない。
2) I-O TERMINAL指定を書くとき,通信記述名1は入出力用でなければならない。
3) OUTPUT指定を書くとき,通信記述名1は出力用でなければならない。
A.2.2.3 一般規則
1) DISABLE文は,通信管理システムと,指定された発信源又はあて先の間を論理的に切り離す。論理的
な切離しが既に済んでいる場合,又はこのプログラムの外部の何か別な手段によって論理的な切離し
が行われる場合,DISABLE文はこのプログラムでは必要ない。既に切離し済みの発信源又はあて先に
DISABLE文を実行しても,状態キー項目の値がこの条件を表すように更新されるだけで,その他の動
作は起こらない。DISABLE文はCOBOLプログラムと通信管理システムとの間のデータ転送用の論理
経路に影響を及ぼすものではない。
2) 通信管理システムは,DISABLE文の実行によって発信源又はあて先が不活性状態になり次第,論理的
な切離し状態になることを保証する。DISABLE文の実行によって伝送中の通信文が途中で打ち切られ
ることはない。
3) INPUT指定があってTERMINAL指定がないとき,通信記述名1のデータ名1(SYMBOLIC QUEUE)
〜 データ名4(SYMBOLIC SUB-QUEUE-3)の内容で指定される主待ち行列及び副待ち行列と,それ
に関連する全ての発信源との間の論理経路が切り離される。
4) INPUT TERMINAL指定があるとき,データ名7(SYMBOLIC SOURCE)のデータ項目の内容で定義
される発信源と,それに関連する全ての主待ち行列及び副待ち行列との間の論理経路が切り離される。
5) I-O TERMINAL指定があるとき,データ名3(SYMBOLIC TERMINAL)のデータ項目の内容で定義さ
れる発信源と,プログラムとの間の論理経路が切り離される。
6) OUTPUT指定があるとき,通信記述名1のデータ名5(SYMBOLIC DESTINATION)の各々の繰返し
のうち,データ名1の内容で示される反復までの全てのあて先への論理経路が切り離される。
A.2.3 ENABLE文
ENABLE(接続)文は,通信管理システムに指示を行い,次に示すいずれかのデータ転送を許可させる。
1) 出力については,指定された出力待ち行列とあて先との間のデータ転送。
2) 入力については,指定された発信源と入力待ち行列との間のデータ転送。
3) 入出力については,プログラムと,指定された発信源又はあて先との間のデータ転送。
A.2.3.1 一般形式
ENABLE
INPUT [TERMINAL]
I-O TERMINAL
OUTPUT
通信記述名1
A.2.3.2 構文規則
1) INPUT指定を書くとき,通信記述名1は入力用でなければならない。
2) I-O TERMINAL指定を書くとき,通信記述名1は入出力用でなければならない。
3) OUTPUT指定を書くとき,通信記述名1は出力用でなければならない。
A.2.3.3 一般規則
1) ENABLE文は,通信管理システムと,指定された発信源又はあて先の間を論理的に接続する。論理的
な接続が既に済んでいる場合,又はこのプログラムの外部の何か別な手段によって論理的な接続が行
われる場合,ENABLE文はこのプログラムでは必要ない。既に接続済みの発信源又はあて先に
497
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ENABLE文を実行しても,状態キー項目の値がこの条件を表すように更新されるだけで,その他の動
作は起こらない。ENABLE文はCOBOLプログラムと通信管理システムとの間のデータ転送用の論理
経路に影響を及ぼすものではない。
2) INPUT指定があってTERMINAL指定がないとき,通信記述名1のデータ名1(SYMBOLIC QUEUE)
〜 データ名4(SYMBOLIC SUB-QUEUE-3)の内容で指定される主待ち行列及び副待ち行列と,それ
に関連する全ての発信源との間の論理経路が接続される。
3) INPUT TERMINAL指定があるとき,データ名7(SYMBOLIC SOURCE)のデータ項目の内容で定義
される発信源と,それに関連する全ての主待ち行列及び副待ち行列との間の論理経路が接続される。
4) I-O TERMINAL指定があるとき,データ名3(SYMBOLIC TERMINAL)のデータ項目の内容で定義さ
れる発信源と,プログラムとの間の論理経路が接続される。
5) OUTPUT指定があるとき,通信記述名1のデータ名5(SYMBOLIC DESTINATION)の各々の反復の
うち,データ名1の内容で示される反復までの全てのあて先への論理経路が接続される。
A.2.4 PURGE文
PURGE(取消し)文は,一つ以上のSEND文によって送信された部分的な通信文を,通信管理システム
から取り消す。
A.2.4.1 一般形式
PURGE 通信記述名1
A.2.4.2 構文規則
1) 通信記述名1は出力用又は入出力用でなければならない。
A.2.4.3 一般規則
1) PURGE文を実行すると通信管理システムによって,通信記述名1に指定したあて先への送信待ち状
態になっている,あらゆる部分的な通信文が取り消される。
2) PURGE文の実行は,EMI又はEGIで区切られた通信文には影響を及ぼさない。
3) 通信記述名1の,状態キーのデータ項目の内容,及び該当する誤りキーのデータ項目の内容は,通信
管理システムによって更新される[A.1.2(通信記述項)参照]。
A.2.5 RECEIVE文
RECEIVE(受信)は,通信文又は通信行及びそのデータに関する情報を使用可能にする。
A.2.5.1 一般形式
ECEIVE 通信記述名1
MESSAGE
SEGMENT INTO 一意名1
[NO DATA 無条件文1]
[WITH DATA 無条件文2]
[END-RECEIVE]
A.2.5.2 構文規則
1) 通信記述名1は,入力用又は入出力用でなければならない。
2) 一意名1は,項類が英数字でなければならない。
A.2.5.3 一般規則
1) 通信記述名1が入力用であるとき,通信記述名1のデータ名1(SYMBOLIC QUEUE)〜 データ名4
(SYMBOLIC SUB-QUEUE-3)のデータ項目の内容は,通信文の入っている待ち行列の構造を示す
[A.1.2(通信記述項)参照]。
498
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
2) 通信記述名1が入出力用であるとき,通信記述名1のデータ名3(SYMBOLIC TERMINAL)のデータ
項目の内容は,通信文の発信源を示す[A.1.2(通信記述項)参照]。
3) 通信文又は通信行,又はその一部分は,一意名1の領域の受取り側文字位置へと左詰めで転送され,
空白詰めは行われない。
4) RECEIVE文の実行中に,通信管理システムによって一意名1のデータ項目中のデータが使用可能にな
る場合,NO DATA指定はあっても無視され,RECEIVE文の終わりに制御が移るか,又はWITH DATA
指定があるなら無条件文2に制御が移る。無条件文2に制御が移る場合,無条件文2中の各文の規則
に従って実行が続く。明示的に制御の移行を引き起こす手続き分岐文又は条件文が実行されれば,そ
の文の規則に従って制御が移る。さもなければ,無条件文2の実行が完了した後,RECEIVE文の終わ
りに制御が移る。
5) RECEIVE文の実行中,通信管理システムによって一意名1のデータ項目中のデータが使用可能になら
ない場合,次の動作のいずれかが実行される。データが使用不能になる条件が何であるかは,実装者
定義とする。
a) NO DATA指定がある場合,通信記述名1のデータ名10(STATUS KEY)に動作完了を示す値が入
り,無条件文1に制御が移る。無条件文1中の各文の規則に従って実行が続く。明示的に制御の移
行を引き起こす手続き分岐文又は条件文が実行されれば,その文の規則に従って制御が移る。さも
なければ,無条件文1の実行が完了した後,RECEIVE文の終わりへ制御が移り,WITH DATA指定
はあっても無視される。
b) NO DATA指定がない場合,実行単位の実行は,一意名1のデータ項目中のデータが使用可能になる
まで,待ち合わせ状態になる。
c) 主待ち行列名又は副待ち行列名のいずれかが通信管理システムにとって未知である場合,該当する
状態キーコードが設定される。制御の移行は,データが使用可能である場合と同様である[表A.1
(通信状態キー条件)参照]。
6) 通信記述名1で識別されるデータ項目群は,RECEIVE文の実行のたびに,通信管理システムによって
適切に更新される[表A.1(通信状態キー条件)参照]。
7) RECEIVE文を1回実行しただけでは,一意名1のデータ項目に通信文(MESSAGE指定がある場合)
又は通信行(SEGMENT指定がある場合)が,2個以上受信されることはない。しかし,RECEIVE文
にSEGMENT指定があったとしても,通信文の全体が使用可能になるまでは,通信管理システムが通
信文の一部を実行単位に渡すことはない。
8) MESSAGE指定があると,通信行終了符号(ESI)は無視されて,データ転送には次の規則を適用する。
a) 通信文の大きさが一意名1の領域と同じ大きさであるとき,通信文は一意名1の領域にそのまま格
納される。
b) 通信文の大きさが一意名1の領域よりも小さいときは,通信文は一意名1の領域に左詰めで格納さ
れ,その後ろの部分は変わらない。
c) 通信文の大きさが一意名1の領域よりも大きいときは,通信文は一意名1の領域に左詰めで格納さ
れる。通信文の残りの部分を一意名1の領域に転送するためには,主待ち行列及び副待ち行列の指
定を同じにしたRECEIVE文を更に実行しなければならない。通信文の残りの部分は新しい通信文
として扱われ,8) a),8) b) 又は8) c) が適用される。
d) 受信データに通信群終了符号(EGI)があった場合,通信文終了符号(EMI)もあったとみなす。
9) SEGMENT指定があると,データ転送には次の規則を適用する。
499
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
a) 通信行の大きさが一意名1の領域と同じ大きさであるとき,通信行は,一意名1の領域にそのまま
格納される。
b) 通信行の大きさが一意名1の領域よりも小さいとき,通信行は一意名1の領域に左詰めで格納され,
その後ろの部分は変わらない。
c) 通信行の大きさが一意名1の領域よりも大きいとき,通信行は一意名1の領域に左詰めで格納され
る。通信行の残りの部分を一意名1の領域に転送するためには,主待ち行列及び副待ち行列の指定
を同じにしたRECEIVE文を更に実行しなければならない。通信行の残りの部分は新しい通信行と
して扱われ,9) a),9) b) 又は9) c) が適用される。
d) 受信データに通信文終了符号(EMI)又は通信群終了符号(EGI)があった場合,通信行終了符号(ESI)
もあったとみなす。
10) RECEIVE文がいったん通信文の一部分を受信したら,その通信文の残りの部分を受信するRECEIVE
文は,その実行単位中でこれ以降に実行されるものだけである。
A.2.6 SEND文
SEND(送信)文は,通信文,通信行,通信文の一部分,又は通信行の一部分を,通信管理システムが
管理する一つ以上の待ち行列に引き渡す。
A.2.6.1 一般形式
書き方1(通信文)
SEND 通信記述項1 FROM 一意名1
書き方2(終了符号)
SEND 通信記述項1 [FROM 一意名1]
WITH 一意名2
WITH ESI
WITH EMI
WITH EGI
BEFORE
AFTER
ADVANCING
一意名3
整数1
LINE
LINES
呼び名1
PAGE
[REPLACING LINE]
A.2.6.2 構文規則
1) 通信記述名1は,出力用又は入出力用でなければならない。
2) 一意名1は,字類が英数字でなければならない。
3) 一意名2は,1けたの演算符号なし整数項目でなければならない。
4) 一意名3は,整数項目でなければならない。
5) 呼び名1の指定がある場合,その名前は,実装者定義の機能名と関連付けられている。呼び名1は,
環境部の特殊名段落で定義する。
6) 整数1又は一意名3のデータ項目の値は,ゼロであってもよい。
7) 一意名1が関数一意名であるとき,それは英数字関数を引用するものでなければならない。
A.2.6.3 一般規則
全ての書き方
500
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) 受取り側通信装置(プリンタ,画面表示など)の1行が固定長である場合,
a) 通信文又は通信行はそれぞれ,物理的な行の最左端位置から始まる。
b) 通信文又は通信行が物理的な1行の長さより小さいとき,右端に空白が詰められる。
c) 通信文又は通信行が物理的な1行の長さより大きくても,その残りの文字列は切り捨てられるわけ
ではない。物理的な1行の長さずつに区切って出力装置へと送信される。この処理は残りの文字列
がある限り次の行へと続く。
2) 受取り側通信装置(画面表示,他の計算機など)の通信文が可変長である場合,通信文又は通信行は
それぞれ,その通信装置の次の書出し可能文字位置から始まる。
3) SEND文の実行の一部分として,通信管理システムは,通信記述名1が指す領域のうち文字数を示す
データ項目(TEXT LENGTH)の内容を,一意名1のデータの中で,送り出す左端の文字の個数を利
用者が示したものと解釈する[A.1.2(通信記述項)参照]。
文字数を示すデータ項目(TEXT LENGTH)の内容がゼロであれば,一意名1のデータ項目の文字
列は転送されない。
文字数を示すデータ項目(TEXT LENGTH)の内容がゼロから一意名1のデータ項目の大きさまで
の範囲外にあれば,状態キーのデータ項目中には誤り条件を表す値が入り,データは転送されない[表
A.1(通信状態キー条件)参照]。
4) SEND文の実行の一部分として,通信記述名1の状態キーのデータ項目(STATUS KEY)の内容が,
通信管理システムによって更新される[A.1.2(通信記述項)参照]。
5) 一意名1のデータ項目中に特殊な制御文字がある場合の効果は,規定されない。
6) 書き方1のSEND文を1回実行すると,通信文の一部又は通信行の一部の1個が,通信管理システム
に引き渡される。
書き方2のSEND文を1回実行すると,一意名2のデータ項目の内容か,ESI,EMI,EGI終了符号
によって区切られた通信文又は通信行の1個か,いずれかが通信管理システムに引き渡される。
しかし,ある通信文の全体が引き渡されるまでは,通信管理システムが通信文の一部を通信装置に
伝送することはない。
7) 実行単位の実行中,終端にEMIもEGIもなくPURGE文の実行によって排除されてもいない通信文の
一部分があった場合,これの処置は規定されない。ただし,このような部分は通信管理システムにと
っては通信文ではないので,通信装置に伝送されることはない。
8) SEND文がいったん通信文の一部分を引き渡したら,その通信文の残りの部分を引き渡すSEND文は,
その実行単位中でこれ以降に実行されるものだけである。
書き方2
9) 一意名2のデータ項目の内容は,一意名1の指定があるとき,一意名1のデータ項目の内容に,通信
行終了符号,通信文終了符号,通信群終了符号,又は終了符号なし(通信文又は通信行の一部分であ
ることを表す)が附加されることを示す。一意名1の指定がないとき,終了符号だけが通信管理シス
テムに引き渡される。一意名2の内容によって指定される終了符号を,表A.3(SEND文の終了符号)
に示す。
501
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表A.3−SEND文の終了符号
一意名2の内容
一意名1に附加される終了符号
意味
0
なし
通信文又は通信行が未完
1
通信行終了符号 (ESI)
現在の通信行の終わり
2
通信文終了符号 (EMI)
現在の通信文の終わり
3
通信群終了符号 (EGI)
現在の通信群の終わり
1,2,3以外の文字は,0とみなされる。
一意名2のデータ項目の値が1,2,3以外で,一意名1の指定がない場合は,通信記述名1の領域
のうち状態キーを示すデータ項目に誤り条件を示す値が入り,データは伝送されない。
10) WITH EGI指定は,通信管理システムに通信群の終わりを知らせる。
WITH EMI指定は,通信管理システムに通信文の終わりを知らせる。
WITH ESI 指定は,通信管理システムに通信行の終わりを知らせる。
通信管理システムは,これらの終了符号を認識すると,通信行,通信文及び通信群を制御するため
に必要な処置をとる。
11) 終了符号の強さはEGI,EMI及びESIの順とする。EGIよりもESI又はEMIが先行する必要はない。
EMIよりもESIが先行する必要はない。
12) ADVANCING指定があると,縦の位置決めが可能な通信装置上で,通信文又は通信行の縦の位置決め
の制御ができる。通信装置上で縦の位置決めが不能な場合は,ADVANCINGの明示的な又は暗黙の指
定による縦の位置決めは,通信管理システムに無視される。
13) 一意名2の指定があって一意名2のデータ項目の内容がゼロであるとき,ADVANCING指定及び
REPLACING指定は,あっても通信管理システムが無視する。
14) 縦の位置決めが可能な通信装置上でADVANCING指定がない場合,利用者がAFTER ADVANCING 1
LINEを指定したのと同様に,実装系によって自動的な行送りを行う。
15) ADVANCINGの明示的又は暗黙に指定があり,縦の位置決めが可能なとき,次の規則を適用する。
a) 一意名3又は整数1があると,通信装置へ伝送された文字列は,一意名3のデータ項目又は整数1
の値に等しい行数だけ下へ位置決め変更される。
b) 一意名3のデータ項目の値が負のとき,その結果は規定されない。
c) 呼び名1の指定があるとき,通信装置へ伝送された文字列は,その機能と通信装置に対する実装者
定義の規則に従って位置決め変更される。
d) BEFORE指定を書いたとき,通信文又は通信行が通信装置に出力されるのは,a) 及びc) に従って
縦の位置決め変更が行われる前になる。
e) AFTER 指定を書いたとき,通信文又は通信行が通信装置に出力されるのは,a) 及びc) に従って縦
の位置決め変更が行われた後になる。
f)
PAGE指定を書いたとき,通信装置へ伝送された文字列が装置に出力されるのは,次のページへと
装置が位置決め変更される前又は後になる。ページが意味をもたない特定装置に対しては,BEFORE
又はAFTER(書いたほうの指定に従う。)ADVANCING 1 LINEを利用者が指定したのと同様に,実
装系によって自動的な行送りを行う。
16) 受取り側通信装置上では,同じ文字位置に複数個の文字を重ね打ち表示することができ,2文字目以
降を既に表示済みの文字に重ね打ち表示するか又は置換表示するかの選択が許される場合は,次の規
502
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
則を適用する。
a) REPLACING指定があると,SEND文で送信された文字列は,それ以前に同じ行の上へ送信済みの
文字列を,最左端文字位置から全て置換する。
b) REPLACING指定がないと,SEND文で送信された文字列は,それ以前に同じ行の上へ送信済みの
文字列に,最左端文字位置から重ね打ちされる。
17) 受取り側通信装置が文字の置換表示のできない装置の場合,REPLACING指定の有無に関係なく,
SEND文で送信された文字列は,それ以前に同じ行の上へ送信済みの文字列に,最左端文字位置から
重ね打ちされる。
18) 受取り側通信装置が文字の重ね打ちのできない装置の場合,REPLACING指定の有無に関係なく,
SEND文で送信された文字列は,それ以前に同じ行の上へ送信済みの文字列を,最左端文字位置から
全て置換する。
503
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書B
(規定)
言語要素一覧
B.1
実装者定義の言語要素一覧
この規格中にある言語要素であるが,その完全な仕様が実装者定義に依存するものの一覧を次に示す。
各要素は,“必須”,“選択可能”,“条件付き必須”のいずれかとして定義される。さらに,各要素は,利用
者向けの文書化を要求する(又は要求しない)ものとして定義される。用語の意味は,次による。
− 必須:その要素を実装者が提供しなければならない。要素が選択可能か又は処理系依存の機能の一部
である場合,その機能が実装されなければ,この箇条は必須ではない。
− 選択可能:その要素を提供するかどうかは,実装者の選択による。
− 条件付き必須:関連する機能又は言語要素を実装する場合,この要素も必須とする。
− 文書に明記要:その要素を実装者が提供する場合,実装者の利用者向け文書中に,その要素を明記す
るか,又はこの要求を満たす別な参考文書へ参照しなければならない。
簡単な見出し語句と,必要に応じて参考までに挿入した括弧付き語句は,この規格の本文中に存在する
規格仕様の詳細を分かりやすく読み替えて,読者に示したものである。全ての箇条には相互参照を付与し
てある。
1) ACCEPT文(データの変換) この要素は,必須とする。実装者の利用者向け文書に明記しなければ
ならない[14.8.1(ACCEPT文)の一般規則1) 及び14) 参照]。
2) ACCEPT文(FROM指定がないとき使用する装置) この要素は,必須とする。実装者の利用者向け
文書に明記しなければならない[14.8.1(ACCEPT文)の一般規則5) 参照]。
3) ACCEPT文の画面形式(画面項目が重なり合う場合の結果) この要素は,必須とする。実装者の利
用者向け文書に明記しなければならない[14.8.1(ACCEPT文)の一般規則22) 参照]。
4) ACCEPT文の画面形式(データ検証する場合の不適合データに対する振る舞い) この要素は,必須
とする。実装者の利用者向け文書に明記しなければならない[14.8.1(ACCEPT文)の一般規則20) 参
照]。
5) ACCEPT文(転送データの大きさ) この要素は,必須とする。実装者の利用者向け文書に明記しな
ければならない[14.8.1(ACCEPT文)の一般規則2) 参照]。
6) けたよせ(英数字集団項目の)(先頭基本項目との相対関係) この要素は,必須とする。実装者の利
用者向け文書に明記しなければならない[8.5.1.5.1(英数字集団及び用途DISPLAYのデータ項目のけ
たよせ)及び8.5.1.5.5(強い型付けの集団項目のけたよせ)参照]。
7) 効率を高めるためのデータのけたづめ(特殊な又は自動的なけたづめ:解釈,暗黙FILLER,文の意
味) この要素は,選択可能とする。実装する場合,実装者の利用者向け文書に明記しなければならな
い[8.5.1.5.4(実行用コードの効率を高めるための項目のけたづめ)及び13.16.53(SYNCHRONIZED
句)の一般規則9) 参照]。
8) ALPHABET句(固有文字集合の文字の順序番号) この要素は,必須とする。実装者の利用者向け文
書に明記しなければならない[12.2.6(特殊名段落)の一般規則6) 参照]。
9) 英数字定数(英数字1文字に対応付けられる16進数字のけた数) この要素は,必須とする。実装者
の利用者向け文書に明記しなければならない[8.3.1.2.1(英数字定数)の構文規則6) 参照]。
504
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
10) ASSIGN句のUSING指定(作用対象の意味と規則,整合規則) この要素は,選択可能とする。実装
する場合,実装者の利用者向け文書に明記しなければならない[12.3.4(ファイル管理記述項)の一般
規則4) 参照]。
11) BACKGROUND-COLOR句(既定値又は指定値が0〜7の範囲外である場合の背景色) この要素は,
必須とする。実装者の利用者向け文書に明記しなければならない[13.16.4(BACKGROUND-COLOR
句)の一般規則4) 参照]。
12) バイト(1バイト当たりのビット数) この要素は必須とする。実装者の利用者向け文書に明記しなけ
ればならない[8.1.1(計算機符号化文字集合)参照]。
13) CALL文(非COBOLプログラム名の形成規則) この要素は,条件付き必須とする。その条件は,非
COBOLプログラム呼出しの実装・提供の有無による。実装者の利用者向け文書に明記しなければな
らない[14.8.4(CALL文)の一般規則3) b) 参照]。
14) CALL文(確認される実行時資源) この要素は,必須とする。実装者の利用者向け文書に明記しな
ければならない[14.8.4(CALL文)の一般規則3) c) 参照]。
15) CALL文(非COBOLプログラムの所在を特定する規則) この要素は,条件付き必須とする。その条
件は,非COBOLプログラム呼出しの実装・提供の有無による。実装者の利用者向け文書に明記しな
ければならない[14.8.4(CALL文)の一般規則3) b) 参照]。
16) CALL文(非COBOLプログラム呼出し) この要素は,必須とする。実装者の利用者向け文書に明記
しなければならない[14.8.4(CALL文)の一般規則3) f) 参照]。
17) CALL文(CALL文のこれ以外の効果) この要素は,必須とする。実装者の利用者向け文書に明記し
なければならない[14.8.4(CALL文)の一般規則3) g) 2.参照]。
18) CANCEL文(活性プログラムの取消し結果,EC-PROGRAM-CANCEL-ACTIVEが有効でない場合) こ
の要素は,必須とする。実装者の利用者向け文書に明記しなければならない[14.8.5(CANCEL文)
の一般規則5) 参照]。
19) CANCEL文(非COBOLプログラムの取消し結果) この要素は,必須とする。実装者の利用者向け
文書に明記しなければならない[14.8.5(CANCEL文)の一般規則10) 参照]。
20) CHAR関数(複数個ある文字のうちどれを返すか) この要素は,必須とする。実装者の利用者向け
文書に明記しなければならない[15.13(CHAR関数)の関数の返却値2) 参照]。
21) CHAR-NATIONAL関数(複数個ある文字のうちどれを返すか) この要素は,必須とする。実装者の
利用者向け文書に明記しなければならない[15.14(CHAR-NATIONAL関数)の関数の返却値2) 参照]。
22) CLOSE文(ファイル閉じ操作) この要素は,必須とする。実装者の利用者向け文書に明記しなけれ
ばならない[14.8.6(CLOSE文)の一般規則3) c) 参照]。
23) COBOL文字レパートリ(符号化表現,対応付け,代替図形文字) この要素は,必須とする。実装者
の利用者向け文書に明記しなければならない[8.1.2(COBOL文字レパートリ)の一般規則1) 及び5)
参照]。
24) COBOL文字レパートリ(同一翻訳群に2種類以上の符号化表現があるとき,制御機能) 複数種類の
符号化表現は任意選択であり,制御機能も任意選択。この要素は,条件付き必須とする。その条件は,
一つの翻訳群中に複数の符号化表現が使えて,符号化表現を切り替える制御機能が定義されている実
装か否かによる。実装する場合は,実装者の利用者向け文書に明記しなければならない[8.1.2(COBOL
文字レパートリ)参照]。
25) 色彩番号(白黒端末での色属性の他属性への対応付け) この要素は,必須とする。実装者の利用者向
505
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
け文書に明記しなければならない[9.2.7(色彩番号)参照]。
26) 通信誤りキー この要素は,選択可能とする。実装する場合,実装者の利用者向け文書に明記しなけ
ればならない[A.1.2.5(誤りキーの値)及び表A.2(誤りキーの値)参照]。
27) 通信状態キー9x この要素は,選択可能とする。実装する場合,実装者の利用者向け文書に明記しな
ければならない[A.1.2.5(誤りキーの値)及び表A.2(誤りキーの値)参照]。
28) 翻訳指示IMP(構文規則及び一般規則) この要素は,条件付き必須とする。その条件は,翻訳指示
IMPを実装・提供するか否かによる。実装する場合,実装者の利用者向け文書に明記しなければなら
ない[7.2(翻訳指示)の構文規則9) 及び一般規則3) 参照]。
29) 計算機符号化文字集合(計算機の英数字符号化文字集合及び計算機の各国文字符号化文字集合に属す
る文字群とその文字集合の符号化表現,並びに用途DISPLAY及び用途NATIONAL向けの符号化表現)
この要素は,必須とする。実装者の利用者向け文書に明記しなければならない[8.1.1(計算機符号化
文字集合),8.3.1.2.1(英数字定数)の構文規則2) 及び8.3.1.2.4(各国文字定数)の構文規則2) 参照]。
30) 計算機符号化文字集合(英数字と各国文字の間の対応付け) この要素は,必須とする。実装者の利用
者向け文書に明記しなければならない[14.8.24(MOVE文)の構文規則5),8.8.4.1.1.6.2(現地特性に
基づく比較),15.21(DISPLAY-OF関数)の関数の返却値1) 及び3) 及び15.53(NATIONAL-OF関数)
の関数の返却値1) と3) 参照]。
31) 計算機符号化文字集合(定数に対して変換が起きる場合,翻訳時と実行時との文字集合の対応) この
要素は,条件付き必須とする。その条件は,翻訳時と実行時との計算機符号化文字集合の間での相違
の有無による。実装する場合,実装者の利用者向け文書に明記しなければならない[8.1.1(計算機符
号化文字集合)参照]。
32) 計算機符号化文字集合(英数字と各国文字とが合成符号化文字集合をなす場合,各々への文字の対応
付け) この要素は,条件付き必須とする。その条件は,英数字と各国文字を合成した符号化文字集合
を実装・提供するか否かによる。実装する場合,実装者の利用者向け文書に明記しなければならない
[8.1.1(計算機符号化文字集合)参照]。
33) 計算機符号化文字集合(符号化表現が2種類以上の場合,実行時に使用する符号化表現を選択する機
構) この要素は,条件付き必須とする。その条件は,計算機文字集合用の複数種類の符号化表現を実
装・提供するか否かによる。実装する場合,実装者の利用者向け文書に明記しなければならない[8.1.1
(計算機符号化文字集合)参照]。
34) 計算機符号化文字集合(UTF-8,又は英数字と各国文字との混合を,英数字字類の場合に許すか否か。
該当する構文規則及び一般規則) この要素は,条件付き必須とする。その条件は,字類が英数字の定
数及びデータ項目の中で,UTF-8,又は英数字と各国文字との混合を実装・提供するか否かによる。
実装する場合,実装者の利用者向け文書に明記しなければならない[8.1.1(計算機符号化文字集合)
及び8.3.1.2(英数字定数)の構文規則2) 及び一般規則3) 参照]。
35) COPY文(既定解釈の登録集原文を識別して所在を特定する規則) この要素は,必須とする。実装
者の利用者向け文書に明記しなければならない[7.1.2(COPY文)の構文規則5) 及び一般規則3) 参
照]。
36) CRT状態9xxx(実装者定義条件による不成功完了に対するxxxの値) この要素は,選択可能とする。
実装する場合,実装者の利用者向け文書に明記しなければならない[9.2.3(CRT状態)参照]。
37) カーソル(カーソルの位置を変えるキーの定義がある場合のカーソル動作) この要素は,選択可能と
する。実装する場合,実装者の利用者向け文書に明記しなければならない[9.2.4(カーソル)参照]。
506
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
38) データの記憶域(実装系の提供するデータの格納方法が複数種類ある場合に使用可能な表現形式) こ
の要素は,条件付き必須とする。その条件は,実装系が用意する格納方法の種類による。実装する場
合,実装者の利用者向け文書に明記しなければならない[8.5.1(機種によらないデータ記述)参照]。
39) DEFINE指示(翻訳変数名の値を操作環境から取得する機構) この要素は,必須とする。実装者の
利用者向け文書に明記しなければならない[7.2.9(DEFINE指示)の一般規則5) 参照]。
40) 同時呼出しを行ってもよい装置 この要素は,必須とする。実装者の利用者向け文書に明記しなけれ
ばならない[9.1.14(共用モード)参照]。
41) DISPLAY文(データ変換) この要素は,必須とする。実装者の利用者向け文書に明記しなければな
らない[14.8.10(DISPLAY文)の一般規則1) 参照]。
42) DISPLAY文(データ転送の大きさ) この要素は,必須とする。実装者の利用者向け文書に明記しな
ければならない[14.8.10(DISPLAY文)の一般規則2) 参照]。
43) DISPLAY文(標準の表示装置) この要素は,必須とする。実装者の利用者向け文書に明記しなけれ
ばならない[14.8.10(DISPLAY文)の一般規則7) 参照]。
44) ENTRY-CONVENTION句(入口規約名,その意味及び既定解釈) この要素は,選択可能とする。実
装する場合,実装者の利用者向け文書に明記しなければならない[11.8.5(ENTRY-CONVENTION句)
の一般規則2) 参照]。
45) EXIT文及びGOBACK文(非COBOL実行時要素への実行継続) この要素は,条件付き必須とする。
その条件は,非COBOLプログラムからの呼出しを実装・提供するか否かによる。実装者の利用者向
け文書に明記しなければならない[14.8.13(EXIT文)の一般規則4) 及び14.8.17(GOBACK文)の
一般規則1) 参照]。
46) べき乗(特定の作用対象の値に対する結果) この要素は,必須とする。実装者の利用者向け文書に明
記しなければならない[8.8.1.3.6(べき乗)の規則2) e) 参照]。
47) 外部リポジトリ(検査と更新とを行うか否か指定する機構) この要素は,必須とする。実装者の利用
者向け文書に明記しなければならない[8.13(外部リポジトリ)参照]。
48) 外部リポジトリ情報(必要な情報よりも余分な情報) この要素は,選択可能とする。実装する場合,
実装者の利用者向け文書に明記しなければならない[8.13(外部リポジトリ)参照]。
49) 外部公開名(形成規則及び対応付け規則) この要素は,必須とする。実装者の利用者向け文書に明記
しなければならない[8.3.1.1.1(利用者定義語)及び7.2.8(CALL-CONVENTION指示)の一般規則
2) a) 及び2) b) 参照]。
50) 致命的例外状態(翻訳時に検出されるか否か,及び検出される状況) この要素は,選択可能とする。
実装する場合,実装者の利用者向け文書に明記する必要はない[14.5.12.1.2(致命的例外状態)参照]。
51) 致命的例外状態(致命的例外状態の成立を引き起こすはずの事象が発生したが,その例外状態の検査
が有効ではない場合の,実行継続の可否,継続方法,及び受取り側に対する影響) この要素は,必須
とする。実装者の利用者向け文書に明記しなければならない[14.5.12.1.2(致命的例外状態)参照]。
52) ファイル管理記述項のASSIGN句(TO指定の意味と規則) この要素は,必須とする。実装者の利用
者向け文書に明記しなければならない[12.3.4(ファイル管理記述項)の構文規則5) 及び6)参照]。
53) ファイル管理記述項のASSIGN句(外部ファイル結合子の整合規則) この要素は,必須とする。実
装者の利用者向け文書に明記しなければならない[12.3.4(ファイル管理記述項)の一般規則1) 参照]。
54) ファイル管理記述項のASSIGN句(USING指定の意味と規則) この要素は,必須とする。実装者の
利用者向け文書に明記しなければならない[12.3.4(ファイル管理記述項)の一般規則4) 参照]。
507
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
55) 表意定数の値(ゼロ・空白・引用符の表現方法) この要素は,必須とする。実装者の利用者向け文書
に明記しなければならない[8.3.1.2.5(表意定数の値)参照]。
56) ファイル共用(他機能・他言語との相互作用) この要素は,選択可能とする。実装する場合,実装者
の利用者向け文書に明記しなければならない[9.1.14(共用モード)参照]。
57) ファイル共用(同時にファイルを呼び出してもよい装置は何か) この要素は,必須とする。実装者の
利用者向け文書に明記しなければならない[9.1.14(共用モード)参照]。
58) ファイル共用(指定がない場合の既定解釈のモード) この要素は,必須とする。実装者の利用者向け
文書に明記しなければならない[9.1.3(ファイル結合子),9.1.14(共用モード)及び14.8.26(OPEN
文)の一般規則22) 参照]。
59) ファイル固有属性(ファイル共用の機能はファイル固有属性か否か) この要素は,必須とする。実装
者の利用者向け文書に明記しなければならない[9.1.6(ファイル固有属性)参照]。
60) FLAG-85指示(警告機構) この要素は,必須とする。実装者の利用者向け文書に明記しなければな
らない[7.2.11(FLAG-85指示)の一般規則1) 参照]。
61) 浮動小数点数字項目(受取り側として用いる場合のけたよせ) この要素は,必須とする。実装者の利
用者向け文書に明記する必要はない[14.5.8(データ項目内でのデータのけたよせ)の規則2) 参照]。
62) 浮動小数点数字定数(指数部の許容値の最大と最小) この要素は,必須とする。実装者の利用者向け
文書に明記しなければならない[8.3.1.2.2.2(浮動小数点数字定数)の規則3) 参照]。
63) FOREGROUND-COLOR句(既定値又は指定値が0〜7の範囲外である場合の前景色) この要素は,
必須とする。実装者の利用者向け文書に明記しなければならない[13.16.21(FOREGROUND-COLOR
句)の一般規則4) 参照]。
64) FORMAT句(生成される表現) この要素は,必須とする。実装者の利用者向け文書に明記しなけれ
ばならない[13.16.22(FORMAT句)の一般規則10) 参照]。
65) FORMAT句(同一の内部表現への復元に関する除外対象) この要素は,選択可能とする。実装する
場合,実装者の利用者向け文書に明記しなければならない[13.16.22(FORMAT句)の一般規則11) 参
照]。
66) 形式検証(用途DISPLAY又はNATIONAL以外の項目を検査する規則) この要素は,必須とする。
実装者の利用者向け文書に明記しなければならない[13.16.38(PICTURE句)の一般規則14) 及び
13.16.58(USAGE句)の一般規則3) 参照]。
67) 関数一意名(関数原型名の指定がある場合の非COBOL関数の実行) この要素は,条件付き必須とす
る。その条件は,非COBOL関数呼出しを実装・提供するか否かによる。この要素は,実装者の利用
者向け文書に明記しなければならない[8.4.2.2(関数一意名)の一般規則5) d) 参照]。
68) 関数一意名(確認される実行時資源) この要素は,必須とする。この要素は,実装者の利用者向け文
書に明記しなければならない[8.4.2.2(関数一意名)の一般規則5) c) 参照]。
69) 関数一意名(EC-ARGUMENT-FUNCTION例外状態の検査が無効で引数規則に違反した場合の結果)
この要素は,必須とする。返却値を,実装者の利用者向け文書に明記する必要はない[15.2(引数)
参照]。
70) 機能キー(文脈依存機能キー,機能番号,有効化及び無効化の方法) この要素は,選択可能とする。
実装する場合,実装者の利用者向け文書に明記しなければならない[9.2.2(機能キー)参照]。
71) 関数の返却値(固有算術のときの特性,表現形式,返却値) この要素は,必須とする。返却値を実装
者の利用者向け文書に明記する必要はない[15.3.1(数字関数及び整数関数)参照]。
508
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
72) 16進英数字定数(存在しない文字への対応付け) この要素は,必須とする。実装者の利用者向け文
書に明記しなければならない[8.3.1.2.1(英数字定数)の一般規則4) 参照]。
73) 16進英数字定数(1文字が4ビットの倍数でない場合の対応付け) この要素は,条件付き必須とする。
その条件は,4ビットの倍数でない文字のある計算機符号化文字集合の有無による。実装する場合,
実装者の利用者向け文書に明記しなければならない[8.3.1.2.1(英数字定数)の一般規則4) 参照]。
74) 16進各国文字定数(存在しない文字への対応付け) この要素は,必須とする。実装者の利用者向け
文書に明記しなければならない[8.3.1.2.4(各国文字定数)の一般規則4) 参照]。
75) 16進各国文字定数(1文字が4ビットの倍数でない場合の対応付け) この要素は,条件付き必須とす
る。その条件は,4ビットの倍数でない文字のある計算機符号化文字集合の有無による。実装する場
合,実装者の利用者向け文書に明記しなければならない[8.3.1.2.4(各国文字定数)の一般規則4) 参
照]。
76) 実装者定義の例外状態EC-IMP-接尾辞(接尾辞の規定,意味) この要素は,選択可能とする。実装
する場合,実装者の利用者向け文書に明記しなければならない[表14(例外名及び例外状態)参照]。
77) INVOKE文(非COBOLメソッド呼出し時の振る舞い) この要素は,必須とする。実装者の利用者
向け文書に明記しなければならない[14.8.22(INVOKE文)の一般規則2) b) 参照]。
78) INVOKE文(確認される実行時資源) この要素は,必須とする。実装者の利用者向け文書に明記し
なければならない[14.8.22(INVOKE文)の一般規則7) d) 参照]。
79) 入出力状態(致命的例外状態に対して取る動作) この要素は,必須とする。実装者の利用者向け文書
に明記しなければならない[9.1.12(入出力状態)参照]。
80) 入出力状態(複数の値が該当する場合) この要素は,必須とする。実装者が用いる内部手続きを,実
装者の利用者向け文書に明記する必要はない[9.1.12(入出力状態)参照]。
81) 入出力状態(永続誤りの)(誤り回復の技法) この要素は,選択可能とする。実装する場合,実装者
の利用者向け文書に明記しなければならない[9.1.12(入出力状態)参照]。
82) 入出力状態0x(xの値) この要素は,選択可能とする。実装する場合,実装者の利用者向け文書に明
記しなければならない[9.1.12.2(実装者定義の成功完了)参照]。
83) 入出力状態24(ファイルの区域を定義する手段) この要素は,必須とする。実装者の利用者向け文
書に明記しなければならない[9.1.12.4(無効キー条件による不成功完了)参照]。
84) 入出力状態34(ファイルの区域を定義する手段) この要素は,必須とする。実装者の利用者向け文
書に明記しなければならない[9.1.12.5(永続誤り条件による不成功完了)参照]。
85) 入出力状態52(デッドロックを検出する条件) この要素は,必須とする。実装者の利用者向け文書
に明記しなければならない[9.1.12.7(レコード操作不整合条件による不成功完了)参照]。
86) 入出力状態9x(xの値) この要素は,選択可能とする。実装する場合,実装者の利用者向け文書に明
記しなければならない[9.1.12.9(実装者定義条件による不成功完了)参照]。
87) LEAP-SECOND指示(60以上の秒を返すか否か,返す場合は返す秒の最大値) この要素は,必須と
する。実装者の利用者向け文書に明記しなければならない[7.2.14(LEAP-SECOND指示)の一般規
則2),14.8.1(ACCEPT文)の一般規則11),15.16(CURRENT-DATE関数)の関数の返却値1) 及び
15.80(WHEN-COMPILED関数)の関数の返却値1) 参照]。
88) オブジェクトの生存期間(継続実行への関与を判断するタイミング及びアルゴリズム) この要素は,
必須とする。実装者の利用者向け文書に明記する必要はない[9.3.14.2(オブジェクトの生存期間)参
照]。
509
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
89) 連絡節(非COBOLプログラムから呼び出された場合に連絡節項目の参照が意味をもつか) この要素
は,条件付き必須とする。その条件は,非COBOLプログラムからのCOBOLプログラム呼出しを実
装・提供するか否かによる。実装する場合,実装者の利用者向け文書に明記しなければならない[13.6
(連絡節)参照]。
90) 印字出力(コンパイラによる生成の有無と生成の時点,論理的変換の効果) この要素は,必須とする。
実装者の利用者向け文書に明記しなければならない[6.4(論理的変換),箇条7(翻訳指示機能)及び
7.2.15(LISTING指示)の一般規則1) 参照]。
91) 現地特性仕様(利用者既定解釈とシステム既定解釈との定義方法。最低でも1種類の利用者既定解釈
と1種類のシステム既定解釈) この要素は,必須とする。実装者の利用者向け文書に明記する必要は
ない。実装者は,利用者既定解釈とシステム既定解釈とを同じと規定してもよい[8.2(現地特性)参
照]。
92) 現地特性仕様(実装の方法) この要素は,必須とする。最低でも1種類の既定解釈の現地特性が必要
だからである。実装者の利用者向け文書に明記する必要はない[8.2(現地特性)参照]。
93) 現地特性の切換え(非COBOL実行時モジュールによる切換えをCOBOLが認識するか) この要素は,
条件付き必須とする。その条件は,非COBOLの実行時モジュールの活性化を実装・提供するか否か
による。実装する場合,実装者の利用者向け文書に明記しなければならない[8.2(現地特性)参照]。
94) メソッド名段落(PROPERTY指定がある場合に用いられる実際のメソッド名) この要素は,必須と
する。実装者の利用者向け文書に明記しなければならない[11.6(メソッド名段落)の一般規則1) 参
照]。
95) 各国文字定数(各国文字1文字に対応付けられる16進数字のけた数) この要素は,必須とする。実
装者の利用者向け文書に明記しなければならない[8.3.1.2.4(各国文字定数)の構文規則5) 参照]。
96) 固有算術(用いる技法,中間データ項目) この要素は,必須とする。実装者の利用者向け文書に明記
する必要はない[8.8.1.2(固有算術),11.8.4(ARITHMETIC句)及び14.6.6(算術文)参照]。
97) 固有算術(作用対象又は算術式が整数である場合) この要素は,必須とする。実装者の利用者向け文
書に明記しなければならない[5.4(整数作用対象)参照]。
98) NULL(NULLの値) この要素は,必須とする。実装者の利用者向け文書に明記する必要はない[8.4.2.7
(NULL)の一般規則1),8.4.2.10(既定義アドレス)の一般規則1) 及び2) 参照]。
99) 実行用計算機段落(既定解釈の実行用計算機) この要素は,必須とする。実装者の利用者向け文書に
明記しなければならない[12.2.5(実行用計算機段落)の一般規則3) 及び4) 参照]。
100) 実行用計算機段落(計算機名及びそれが意味する機器構成) この要素は,選択可能とする。実装する
場合,実装者の利用者向け文書に明記しなければならない[12.2.5(実行用計算機段落)の一般規則
2) 参照]。
101) OCCURS句(指標がもつことのできる値の範囲) この要素は,必須とする。実装者の利用者向け文
書に明記しなければならない[13.16.36(OCCURS句)の一般規則2) 参照]。
102) OPEN文(ファイル固有属性の検証) この要素は,必須とする。実装者の利用者向け文書に明記し
なければならない[14.8.26(OPEN文)の一般規則8) 参照]。
103) OPEN文にOUTPUT指定付き(物理ページ境界を考慮した出力ファイルの位置付け) この要素は,
必須とする。実装者の利用者向け文書に明記しなければならない[14.8.26(OPEN文)の一般規則16)
参照]。
104) OPEN文にSHARING指定なし,かつ,ファイル管理記述項にSHARING句なし(各ファイル結合子
510
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
に対して確立する共用モードの定義) この要素は,必須とする。実装者の利用者向け文書に明記しな
ければならない[14.8.26(OPEN文)の一般規則22) 参照]。
105) 順序付け表(ISO/IEC 14651:2001に従った順序付け表を識別する定数に指定可能な内容) この要素
は,条件付き必須とする。その条件は,ISO/IEC 14651を実装・提供するか否かによる。実装する場
合,実装者の利用者向け文書に明記しなければならない[12.2.6(特殊名段落)の一般規則17) 参照]。
106) PADDING CHARACTER句(既定解釈の文字) この要素は,条件付き必須とする。その条件は,埋
め草を必要とする装置の有無による。実装する場合,実装者の利用者向け文書に明記しなければなら
ない[12.3.4.10(PADDING CHARACTER句)の一般規則5) 参照]。
107) パラメタ付きクラス及びパラメタ付きインタフェース(展開の時点) この要素は,必須とする。実
装者の利用者向け文書に明記する必要はない[箇条7(翻訳指示機能)参照]。
108) 手続き部見出しの規則(活性化する側又はされる側のいずれかが非COBOL実行時要素である場合)
(対象にできる全ての言語製品に関する,パラメタの対応,データ型の表現方法,値の返却,パラメ
タの省略などの制約及び機構の詳細) この要素は,条件付き必須とする。その条件は,COBOL以外
の言語との呼出しを実装・提供するか否かによる。実装する場合,実装者の利用者向け文書に明記し
なければならない[14.1(手続き部の構造)の一般規則13) 参照]。
109) プログラムアドレス一意名(アドレスと非COBOLプログラムとの間の関係) この要素は,条件付き
必須とする。その条件は,非COBOLプログラムの呼出しを実装・提供するか否かによる。実装者の
利用者向け文書に明記しなければならない[8.4.2.12(プログラムアドレス一意名)の一般規則2) 参
照]。
110) プログラム名(非COBOLプログラムに対する形成の規則) この要素は,選択可能とする。実装する
場合,実装者の利用者向け文書に明記しなければならない[8.3.1.1.1.20(プログラム名)参照]。
111) RANDOM関数(引数なしでの初回参照時に種子となる値) この要素は,必須とする。実装者が用い
る種子の値を,実装者の利用者向け文書に明記する必要はない[15.62(RANDOM関数)の引数規則
4) 参照]。
112) RANDOM関数(引数1の定義域の部分集合) この要素は,必須とする。実装者の利用者向け文書に
明記しなければならない[15.62(RANDOM関数)の関数の返却値3) 参照]。
113) RECEIVE文(データが使用可能ではない条件) この要素は,選択可能とする。実装する場合,実装
者の利用者向け文書に明記しなければならない[A.2.5(RECEIVE文)の一般規則5) 参照]。
114) RECORD句(記憶媒体上のレコード長を導く計算式) この要素は,必須とする。実装者の利用者向
け文書に明記しなければならない[13.16.41(RECORD句)の一般規則2) 参照]。
115) RECORD句(省略時の暗黙RECORD句) この要素は,必須とする。実装者の利用者向け文書に明
記しなければならない[13.16.41(RECORD句)の一般規則4) 参照]。
116) RECORD句(書き方3に対して生成するレコード形式は固定長か可変長か) この要素は,必須とす
る。実装者の利用者向け文書に明記しなければならない[13.16.41(RECORD句)の一般規則17) 参
照]。
117) RECORD DELIMITER句(外部ファイル結合子の整合規則) この要素は,条件付き必須とする。そ
の条件は,RECORD DELIMITED句に備わる機能名の有無による。実装する場合,実装者の利用者向
け文書に明記しなければならない[12.3.4(ファイル管理記述項)の一般規則1) c) 参照]。
118) RECORD DELIMITER句(機能名,及びそれに関連する可変長レコードの長さを決める方法) この
要素は,選択可能とする。実装する場合,実装者の利用者向け文書に明記しなければならない[12.3.4.11
511
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
(RECORD DELIMITER句)の構文規則2) 及び一般規則4) 参照]。
119) RECORD DELIMITER句(省略時に可変長レコードの長さを決める方法) この要素は,必須とする。
実装者の利用者向け文書に明記しなければならない[12.3.4.11(RECORD DELIMITER句)の一般規
則5) 参照]。
120) レコード施錠(論理レコードの施錠以外にレコードが施錠の状態となる状況) この要素は,条件付き
必須とする。その条件は,実装系におけるそのような状況の有無による。実装する場合,実装者の利
用者向け文書に明記しなければならない[9.1.15(レコード施錠)参照]。
121) レコード施錠(利用者が指定しない場合の既定解釈のモード) この要素は,必須とする。実装者の利
用者向け文書に明記しなければならない[12.3.4.8(LOCK MODE句)の一般規則1) 参照]。
122) レコード錠(ファイル結合子又は実行単位当たりで保持してもよいレコード錠の最大数) この要素は,
必須とする。少なくとも1でなければならない。実装者の利用者向け文書に明記しなければならない
[12.3.4.8(LOCK MODE句)の一般規則7) 参照]。
123) 正書法(自由形式の行中に書いてよい制御文字) この要素は,必須とする。実装者の利用者向け文書
に明記しなければならない[箇条6(正書法)の規則3) b) 参照]。
124) 正書法(自由形式及び固定形式の正書法における行と文字位置の意味) この要素は,必須とする。実
装者の利用者向け文書に明記しなければならない[箇条6(正書法)の規則1) c) 参照]。
125) 正書法(プログラム原文領域の最右端文字位置) この要素は,必須とする。実装者の利用者向け文書
に明記しなければならない[6.2(固定形式正書法)の境界Rを参照]。
126) 報告書ファイル(レコードの構造) この要素は,必須とする。実装者の利用者向け文書に明記しなけ
ればならない[13.3.4(ファイル記述項)の一般規則4) 参照]。
127) 報告書作成の印字可能項目(列と各国文字との間の決まった対応) この要素は,必須とする。実装者
の利用者向け文書に明記しなければならない[13.16.14(COLUMN句)の一般規則2) 参照]。
128) リポジトリ段落(外部リポジトリとクラス指定子とから使用クラスを決める方法) この要素は,必須
とする。実装者の利用者向け文書に明記しなければならない[12.2.7(リポジトリ段落)の一般規則
6) 参照]。
129) リポジトリ段落(外部リポジトリとインタフェース指定子とから使用インタフェースを決める方法)
この要素は,必須とする。実装者の利用者向け文書に明記しなければならない[12.2.7(リポジトリ段
落)の一般規則9) 参照]。
130) リポジトリ段落(AS指定が必要となる場合) この要素は,必須とする。実装者の利用者向け文書に
明記しなければならない[12.2.7(リポジトリ段落)の一般規則2) 参照]。
131) RESERVE句(省略時の入出力領域の個数) この要素は,必須とする。実装者の利用者向け文書に明
記しなければならない[12.3.4.14(RESERVE句)の一般規則1) 参照]。
132) RETRY指定(施錠ファイル又は施錠レコードへの呼出し権限の獲得を試みる再試行間隔) この要素
は,必須とする。実装者の利用者向け文書に明記しなければならない[14.6.8(RETRY指定)の一般
規則1) 参照]。
133) RETRY指定(処理中断期間の有意な最大値及び内部表現,再試行の頻度を決定する技法) この要素
は,必須とする。実装者の利用者向け文書に明記しなければならない[14.6.8(RETRY指定)の一般
規則2) 参照]。
134) 実行単位(非COBOL構成成分との関連付け及び相互作用) この要素は,条件付き必須とする。その
条件は,非COBOLモジュールとの関連付け及び相互作用を実装・提供するか否かによる。実装者の
512
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
利用者向け文書に明記しなければならない[14.5.1(実行単位の構成)参照]。
135) 実行単位の終了(現地特性を復元するか) この要素は,必須とする。実装者の利用者向け文書に明記
しなければならない[14.5.10(実行単位の正常終了)参照]。
136) SAME SORT/SORT-MERGE AREA句(割付けの程度) この要素は,必須とする。実装者が用いる
内部手続きを,実装者の利用者向け文書に明記する必要はない[12.3.6(SAME句)の一般規則3) b) 参
照]。
137) SEARCH ALL文(表引き操作の間に表引き指標を変更する方法) この要素は,必須とする。実装者
が用いる内部手続きを,実装者の利用者向け文書に明記する必要はない[14.8.34(SEARCH文)の一
般規則9) 参照]。
138) SECURE句(SECURE句を指定したフィールドへデータ入力する場合のカーソル動作) この要素は,
必須とする。実装者の利用者向け文書に明記しなければならない[13.16.48(SECURE句)の一般規
則4) 参照]。
139) SELECT WHEN句(CODE-SET及びFORMAT処理の場合以外の効果) この要素は,選択可能とす
る。実装する場合,実装者の利用者向け文書に明記しなければならない[13.16.49(SELECT WHEN
句)の一般規則5) 参照]。
140) SET文(プログラムポインタにアドレスを格納したプログラムに関するSETの効果) この要素は,
必須とする。実装者の利用者向け文書に明記しなければならない[14.8.35(SET文)の一般規則14) 参
照]。
141) SIGN句(PICTUREに文字"S"がありSIGN句がない場合の表現) この要素は,必須とする。実装者
の利用者向け文書に明記しなければならない[13.16.50(SIGN句)の一般規則4) 及び8.5.1.4(演算
符号)参照]。
142) SIGN句(SEPARATE CHARACTER指定がない場合の妥当な符号表現) この要素は,必須とする。
実装者の利用者向け文書に明記しなければならない[13.16.50(SIGN句)の一般規則5) b) 参照]。
143) けたあふれ条件(中間データ項目の許容値の範囲を検査するか否か) この要素は,必須とする。実装
者の利用者向け文書に明記しなければならない[14.6.4(SIZE ERROR指定及びけたあふれ条件)参照]。
144) 特殊名段落(指定できる現地特性名と定数値) この要素は,選択可能とする。実装する場合,実装者
の利用者向け文書に明記しなければならない[12.2.6(特殊名段落)の一般規則5) 参照]。
145) 特殊名段落のALPHABET句(STANDARD-2指定が示す符号化文字集合) この要素は,必須とする。
実装者の利用者向け文書に明記しなければならない[12.2.6(特殊名段落)の一般規則7) c) 参照]。
146) 特殊名段落のALPHABET句の符号名1(英数字の符号化文字集合と照合順序。文字の順序番号。固
有英数字文字集合との対応) この要素は,条件付き必須とする。その条件は,符号名の有無による。
実装する場合,実装者の利用者向け文書に明記しなければならない[12.2.6(特殊名段落)の一般規則
7) j) 参照]。
147) 特殊名段落のALPHABET句の符号名1及び符号名2(符号名1及び符号名2に書ける名前) この要
素は,選択可能とする。実装する場合,実装者の利用者向け文書に明記しなければならない[12.2.6
(特殊名段落)の構文規則15) 参照]。
148) 特殊名段落のALPHABET句の符号名2 (各国文字の符号化文字集合と照合順序。文字の順序番号。
固有各国文字集合との対応) この要素は,条件付き必須とする。その条件は,符号名の有無による。
実装する場合,実装者の利用者向け文書に明記しなければならない[12.2.6(特殊名段落)の一般規則
7) k) 参照]。
513
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
149) 特殊名段落のALPHABET句の定数指定(指定のない文字の順序番号) この要素は,必須とする。実
装者は,順序番号の割当てに用いる方法を,文書に明記しなければならない。ただし,1文字ずつ順
序番号を指定する程度までは必要ない[12.2.6(特殊名段落)の一般規則7) k) 4) 参照]。
150) 特殊名段落のALPHABET句のSTANDARD-1指定及びSTANDARD-2指定(固有文字集合との対応)
この要素は,必須とする。実装者の利用者向け文書に明記しなければならない[12.2.6(特殊名段落)
の一般規則7) c) 参照]。
151) 特殊名段落のALPHABET句のUCS-4指定,UTF-8指定及びUTF-16指定(固有文字集合との対応)
この要素は,必須とする。実装者の利用者向け文書に明記しなければならない[12.2.6(特殊名段落)
の一般規則7) g) 及び7) i) 参照]。
152) 特殊名段落の装置名(使用できる名前,使用上の制限) この要素は,選択可能とする。実装する場合,
実装者の利用者向け文書に明記しなければならない[12.2.6(特殊名段落)の構文規則7) 及び8) 参
照]。
153) 特殊名段落の機能名(使用できる名前,位置付け規則,使用上の制限) この要素は,選択可能とする。
実装する場合,実装者の利用者向け文書に明記しなければならない[12.2.6(特殊名段落)の構文規則
6) 及び8) 参照]。
154) 特殊名段落のスイッチ名(指定可能な名前,SET文に書いてよいスイッチ,有効範囲,及び変更用の
COBOL外部の機能) この要素は,選択可能とする。実装する場合,実装者の利用者向け文書に明記
しなければならない[12.2.6(特殊名段落)の構文規則8),一般規則2) 及び3) 参照]。
155) 標準中間データ項目(内部表現形式) この要素は,必須とする。実装者の利用者向け文書に明記しな
ければならない[8.8.1.3.1(標準中間データ項目)参照]。
156) STOP文(STATUS 定数の値に又はSTATUS 一意名のデータ項目の内容に関する制限) この要素は,
必須とする。実装者の利用者向け文書に明記しなければならない[14.8.38(STOP文)の一般規則5) 参
照]。
157) STOP文(エラー終了用の機構) この要素は,選択可能とする。実装する場合,実装者の利用者向け
文書に明記しなければならない[14.8.38(STOP文)の一般規則4) 参照]。
158) 添字(出現番号と指標との対応) この要素は,必須とする。実装者が用いる内部手続きを,実装者の
利用者向け文書に明記する必要はない[8.4.1.2(添字)の一般規則1) c) 参照]。
159) スイッチ名(外部スイッチを識別する) この要素は,選択可能とする。実装する場合,実装者の利用
者向け文書に明記しなければならない[8.3.1.1.2.9(スイッチ名)参照]。
160) SYNCHRONIZED句(基本項目と,それを包含するレコード又は集団とに関する効果,暗黙FILLER
生成) この要素は,必須とする。実装者の利用者向け文書に明記しなければならない[8.5.1.5.3(用
途ビットのデータ項目のけたよせ)及び13.16.53(SYNCHRONIZED句)の一般規則8) 参照]。
161) SYNCHRONIZED句(ファイルのレコードの取扱い方法) この要素は,選択可能とする。実装する
場合,実装者の利用者向け文書に明記しなければならない[13.16.53(SYNCHRONIZED句)の一般
規則10) 参照]。
162) SYNCHRONIZED句(RIGHTもLEFTもない場合の位置付け) この要素は,必須とする。実装者の
利用者向け文書に明記しなければならない[13.16.53(SYNCHRONIZED句)の一般規則2) 参照]。
163) システム名(システム名の形成規則) この要素は,選択可能とする。実装する場合,実装者の利用者
向け文書に明記しなければならない[8.3.1.1.2(システム名)参照]。
164) 端末画面(列と各国文字との間の対応) この要素は,必須とする。実装者の利用者向け文書に明記し
514
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
なければならない[9.2.1(端末画面)参照]。
165) 原文操作(LISTING指示及びPAGE指示,並びにCOPY〜SUPPRESS文を処理する段階) この要素
は,条件付きとする。その条件は,実装者が印字出力を生成する処理方法による。実装する場合,実
装者の利用者向け文書に明記する必要はない[7.1(原文操作)参照]。
166) 原文操作(パラメタ付きクラスの展開を処理する段階) この要素は,必須とする。実装者の利用者向
け文書に明記する必要はない[7.1(原文操作)参照]。
167) (VALUE句及びEVALUATE文の)THROUGH指定(符号系名の指定がない場合に値の範囲を決め
るために用いる文字照合順序) この要素は,必須とする。実装者の利用者向け文書に明記しなければ
ならない[14.6.7(THROUGH指定)の規則2) 参照]。
168) TURN指示(LOCATION指定がない場合の所在情報の使用可否) この要素は,必須とする。この要
素は,実装者の利用者向け文書に明記しなければならない[7.2.19(TURN指示)の一般規則5) 参照]。
169) USAGE BINARY句(データの記憶域割付け,けたよせ及び表現形式) この要素は,必須とする。実
装者の利用者向け文書に明記しなければならない[13.16.58(USAGE句)の一般規則4) 参照]。
170) USAGE BINARY-CHAR,BINARY-SHORT,BINARY-LONG及びBINARY-DOUBLE(規定の最低限
よりも広い範囲を許すか) この要素は,選択可能とする。実装する場合,実装者の利用者向け文書に
明記しなければならない[13.16.58(USAGE句)の一般規則11) 参照]。
171) USAGE BINARY-CHAR,BINARY-SHORT,BINARY-LONG,BINARY-DOUBLE,FLOAT-SHORT
及びFLOAT-LONG,FLOAT-EXTENDED(関連するデータ項目の表現形式及び長さ) この要素は,
必須とする。実装者の利用者向け文書に明記しなければならない[13.16.58(USAGE句)の一般規則
13) 参照]。
172) USAGE COMPUTATIONAL句(データのけたよせ及び表現形式) この要素は,必須とする。実装者
の利用者向け文書に明記しなければならない[13.16.58(USAGE句)の一般規則6) 参照]。
173) USAGE DISPLAY(文字の大きさ及び表現形式) この要素は,必須とする。実装者は選択機能を提供
して,翻訳単位ごとに大きさ又は表現形式を変えられるようにしてもよい。実装者の利用者向け文書
に明記しなければならない[13.16.58(USAGE句)の一般規則7) 参照]。
174) USAGE FLOAT-SHORT,FLOAT-LONG及びFLOAT-EXTENDED(大きさ及び許容値の範囲) この
要素は,必須とする。実装者の利用者向け文書に明記しなければならない[13.16.58(USAGE句)の
一般規則12) 参照]。
175) USAGE INDEX句(データのけたよせ及び表現形式) この要素は,必須とする。実装者の利用者向
け文書に明記しなければならない[13.16.58(USAGE句)の一般規則9) 参照]。
176) USAGE NATIONAL句(文字の大きさ及び表現形式) この要素は,必須とする。実装者は選択機能
を提供して,翻訳単位ごとに大きさ又は表現形式を変えられるようにしてもよい。実装者の利用者向
け文書に明記しなければならない[13.16.58(USAGE句)の一般規則8) 参照]。
177) USAGE OBJECT REFERENCE句(割付け記憶域量) この要素は,必須とする。実装者の利用者向
け文書に明記しなければならない[13.16.58(USAGE句)の一般規則14) a) 参照]。
178) USAGE PACKED-DECIMAL句(データの記憶域割付け,けたよせ及び表現形式) この要素は,必
須とする。実装者の利用者向け文書に明記しなければならない[13.16.58(USAGE句)の一般規則10)
参照]。
179) USAGE POINTER句(データのけたよせ,大きさ,表現形式及び値の範囲) この要素は,必須とす
る。実装者の利用者向け文書に明記しなければならない[13.16.58(USAGE句)の一般規則15) 参照]。
515
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
180) USAGE PROGRAM-POINTER句(データのけたよせ,大きさ及び表現形式,並びにアクセス可能な
言語) この要素は,必須とする。実装者の利用者向け文書に明記しなければならない[13.16.58(USAGE
句)の一般規則16) 参照]。
181) USE文(入出力状態が致命的例外状態を示す場合USE手続きを実行した後にとる動作) この要素は,
必須とする。実装者の利用者向け文書に明記しなければならない[14.8.45(USE文)の一般規則7),
12),及び9.1.12(入出力状態)参照]。
182) 利用者定義語(操作環境へ外部公開される利用者定義語に対する拡張文字の使用可否) この要素は,
必須とする。実装者の利用者向け文書に明記しなければならない[8.3.1.1.1(利用者定義語)参照]。
183) WRITE文(呼び名) この要素は,選択可能とする。実装する場合,実装者の利用者向け文書に明記
しなければならない[14.8.47(WRITE文)の構文規則17) 参照]。
184) WRITE文(呼び名を指定した場合のページ送り) この要素は,条件付き必須とする。その条件は,
WRITE文のための呼び名の有無による。実装する場合,実装者の利用者向け文書に明記しなければな
らない[14.8.47(WRITE文)の一般規則22) d) 参照]。
B.2
規定されない言語要素一覧
この規格中では規定されない,と明示されている言語要素を次に示す。
1) ALLOCATE文 ALLOCATE文に,INITIALIZED指定がなくて算術式1の指定がある場合,割り付け
られた記憶域の内容は,規定されない[14.8.3(ALLOCATE文)の一般規則8) 参照]。
2) ALLOCATE文 ALLOCATE文に,INITIALIZED指定がなくてデータ名1指定がある場合,割り付け
られた記憶域の内容は,字類がオブジェクト又はポインタのデータ項目を除けば,規定されない[14.8.3
(ALLOCATE文)の一般規則9) 参照]。
3) CALL文 不当なプログラムアドレスをもつプログラムポインタデータ項目をCALL文で用いた場合,
そのCALL文の実行は,規定されない[14.8.4(CALL文)の一般規則3) f) 参照]。
4) CANCEL文 プログラムポインタが取消し対象プログラムを指すよう設定されている場合,以降の
CALL文でそのプログラムポインタを参照した結果は,規定されない[14.8.5(CANCEL文)の一般
規則11) 参照]。
5) CLOSE文 UNIT指定のないCLOSE文が実行不成功になった場合,レコード領域が使用可能なまま
であるか否かは,規定されない[14.8.6(CLOSE文)の一般規則7) 参照]。
6) COLUMN句 報告書行を印字するとき,二つ以上の印字可能項目が同じ列位置を占めている場合に,
その行を印字した結果は,規定されない[13.16.14(COLUMN句)の一般規則4) 参照]。
7) 通信記述項 INITIAL句を欠いたプログラムの実行を通信管理システムが引き起こそうとした場合,
その結果は規定されない[A.1.2(通信記述項)の一般規則7) 及び29) 参照]。
8) カーソル DISPLAY画面文の実行中,カーソルの位置と目に見えるか否かは,規定されない[9.2.4
(カーソル)参照]。
9) カーソル位置指示子 ACCEPT画面文の実行が不成功になった後,カーソル位置指示子の値は,規定
されない[9.2.5(カーソル位置指示子)参照]。
10) カーソル位置指示子 ACCEPT画面文の実行が終了した時点で,目に見えるカーソルが999を超える
行番号又は列番号の位置にある場合,カーソル位置指示子の値は,規定されない[9.2.5(カーソル位
置指示子)参照]。
11) 例外状態 別の規定が特にない限り,ある文の実行中に二つ以上の例外が検出されたとき,いずれの
516
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
例外状態になるのかは,規定されない[14.5.12.1(例外状態)参照]。
12) 制御の明示移行及び暗黙移行 宣言節の内部で“次に実行可能な文”がない場合,次のいずれかの後,
制御の流れは規定されない。
− 最後の文に達したが,それを含む段落は別のCOBOL文の制御下で実行されていない。
− 最後の文に達したが,その文は異なる節中で実行された活性PERFORM文の範囲内にあり,かつ,
そのPERFORM文の出口である手続きの最後の文ではない。
[14.5.3(制御の明示移行及び暗黙移行)参照]。
13) ファイル節 ファイル節の中のデータ項目の初期値は,規定されない[13.3(ファイル節)の一般規
則1) 及び13.16.61(VALUE句)の一般規則2) 参照]。
14) FREE文 割付け解除される動的記憶域の範囲内にあるデータ項目の内容は,規定されない[14.8.14
(FREE文)の一般規則1) 参照]。
15) 関数一意名 省略された引数を活性化された関数の中で参照した場合,その関数の実行の結果は規定
されない[8.4.2.2(関数一意名)の一般規則7) 参照]。
16) 不適合データ 数字編集データ項目が逆編集MOVE文の送出し側作用対象であって,そのデータ項目
の内容が,いかなる編集操作でも結果として生じないはずの内容であるとき,そのMOVE操作の結果
は規定されず,EC-DATA-INCOMPATIBLE例外状態になる[14.5.12.2(不適合データ)参照]。
17) 不適合データ ある文の実行中にブール又は数字の送出し側作用対象の内容が参照され,その送出し
側作用対象の内容が,対応する字類検査で結果が偽値になるはずである場合,このような参照の結果
は規定されず,EC-DATA-INCOMPATIBLE例外状態になる。ただし,字類条件又はVALIDATE文で参
照された場合は除く[14.5.12.2(不適合データ)参照]。
18) 不適合データを部分参照で ある文の実行中に送出し側作用対象の内容が部分的に参照されない場合,
その参照されない部分中にある不適合データが検出されるか否かは,規定されない[14.5.12.2(不適
合データ)参照]。
19) 初期化対象 初期化プログラムの活性化のたびに自分専用の初期化対象の複製が生じるのか否かは,
規定されない[8.6.3(自動項目,初期化項目及び静的項目)参照]。
20) 初期状態 作業場所節,局所記憶節又は連絡節のデータ項目中にVALUE句を書かなければ,項類が
オブジェクト参照又は字類がポインタであるデータ項目を除き,データ項目の初期値は規定されない。
また,次に示す項目の初期値も規定されない:指標データ項目,基底付き項目,記述にEXTERNAL
句のある項目[13.16.61(VALUE句)の一般規則4) 参照]。
21) INITIALIZE文 受取り側項目と送出し側項目とが同じ領域を占めている場合,たとえそれらが同じ
データ記述項によって定義されていても,INITIALIZE文の実行結果は規定されない[14.8.19
(INITIALIZE文)の一般規則9) 参照]。
22) INSPECT文 次のいずれかの場合,INSPECT文の実行結果は規定されない。
a) CONVERTING指定があって,TOの前後の項目の大きさが等しくない場合
b) CHARACTERS指定があって,置換項目の大きさが1文字でない場合
c) REPLACING指定があってCHARACTERS指定がなく,置換前後の項目の大きさが等しくない場合
d) INSPECT一意名,ALL一意名,LEADING一意名,AFTER一意名又はBEFORE一意名のいずれか
の占める記憶域がTALLYING一意名と同じである場合
e) CHARACTERS BY一意名,ALL一意名,LEADING一意名,FIRST一意名,BY一意名,AFTER一
意名又はBEFORE一意名のいずれかの占める記憶域が,INSPECT一意名と同じである場合
517
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
f)
CONVERTING一意名,TO一意名,AFTER一意名又はBEFORE一意名のいずれかの占める記憶域
が,INSPECT一意名と同じである場合
[14.8.21(INSPECT文)の一般規則13),14),15),18),21) 及び22) 参照]。
23) 組込み関数 ALL添字を評価した結果は,少なくとも1個の引数を生じなければならない。さもなけ
れば,その関数一意名を参照した結果は,規定されない[15.2(引数)参照]。
24) 連絡節 連絡節中の仮パラメタ又は返却項目へのアクセスを行ったプログラムが,呼び出される側の
プログラムでない場合(例えば,オペレーティングシステムから活性化されたプログラムである場合),
そのアクセスの効果は,規定されない[13.6(連絡節)の一般規則3) 参照]。
25) 連絡節 連絡節を含んでいる実行時要素が,オペレーティングシステムから活性化された場合,連絡
節のデータ項目の初期値は,規定されない[13.6(連絡節)の一般規則5) 参照]。
26) LINE句 報告書がページに分割されるとき各報告集団が1ページ上に収まらなければ,その報告書
を印字した結果は,規定されない[13.16.33(LINE句)の一般規則2) 参照]。
27) LINE句 行又は行の組が互いに重なり合うことがある場合,報告集団を印字した結果は,規定され
ない。ただし,相対行番号をゼロとした相対指定の行の空白でない文字が,前の行の対応する文字を
重ね書きするのは例外とする[13.16.33(LINE句)の一般規則3) 参照]。
28) MERGE文 USINGファイル中のレコードが,ASCENDING KEY又はDESCENDING KEY指定及び
MERGE文に関連する文字照合順序に記述された順序に従って並んでいない場合,併合操作の結果は
規定されない[14.8.23(MERGE文)の一般規則6) 参照]。
29) MERGE文 相対ファイルでは,MERGE文の実行後,相対キーデータ項目の内容は規定されない
[14.8.23(MERGE文)の一般規則7) c) 参照]。
30) MERGE文 MERGE文が完了した後,USINGファイルのファイル記述項のRECORD IS VARYING句
のDEPENDING ON指定のデータ項目の値は,規定されない[14.8.23(MERGE文)の一般規則7) 参
照]。
31) MERGE文 出力手続きの範囲内で別なMERGE文,RELEASE文又はSORT文の実行が引き起こさ
れた場合,MERGE文の実行の結果は規定されない[14.8.23(MERGE文)の一般規則8) 参照]。
32) MERGE文 GIVING指定のあるMERGE文が完了した後,MERGEファイルの整列併合用ファイル
記述項のRECORD IS VARYING句のDEPENDING ON指定のデータ項目の値は,規定されない[14.8.23
(MERGE文)の一般規則12) 参照]。
33) MOVE文 送出し側データ項目の内容が,不適合データの規則に従って妥当ではない場合,MOVE
文の実行の結果は規定されない[14.8.24(MOVE文)の一般規則5) b),5) d),及び14.5.12.2(不適合
データ)参照]。
34) OCCURS句 文を実行することによって指標の値が,実装者の規定する許容値の範囲を外れた場合,
指標の値は規定されない[13.16.36(OCCURS句)の一般規則2) 参照]。
35) OCCURS句のDEPENDING ON指定 可変の表に対し,DEPENDING ON データ名のデータ項目の
値より大きい出現番号をもつデータ項目の内容は,規定されない[13.16.36(OCCURS句)の一般規
則7) 参照]。
36) 作用対象の重なり 次の状況では,重なり合った作用対象に関わる操作の結果は,規定されない[14.5.9
(作用対象の重なり)参照]。
a) ある文の送出し側と受取り側のデータ項目が,記憶域の一部又は全部を共有し,しかも同じデータ
記述項によって定義されてはいない場合
518
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
b) ある文の送出し側と受取り側のデータ項目が,同じデータ記述項によって定義され,かつ,その文
には作用対象の重なりを扱う規則が特にない場合
c) 一つ以上の作用対象が部分参照されている場合
37) PERFORM文 重なり合っているPERFORM文の実行の結果は規定されない[14.8.27(PERFORM文)
の一般規則11) 参照]。
38) 手続き部の見出し RETURNING データ名2の初期値は,規定されない[14.1(手続き部の構造)の
一般規則7) 参照]。
39) READ文 READ文の実行が不成功完了した時点でほとんどの場合,関連するレコード領域の内容は,
規定されない[14.8.29(READ文)の一般規則9) c) 及び15) 参照]。
40) READ文 READ文の実行が完了したとき,現在のデータレコードの範囲を越えた位置にあるデータ
項目の内容は,規定されない[14.8.29(READ文)の一般規則3) 参照]。
41) READ文 READ文の実行が不成功完了した時点でほとんどの場合,索引ファイルに対する参照キー
は,規定されない[14.8.29(READ文)の一般規則15) 参照]。
42) READ文 読み込んだレコードのバイト数が読込み中のファイルのレコード記述項で指定された最小
の大きさよりも小さいとき,読み込まれた最後の有効な文字よりも右にあるレコード領域の部分は,
規定されない[14.8.29(READ文)の一般規則13) 参照]。
43) RECORD句 論理レコード中の最終バイトを補完するために生成される暗黙のFILLERビット位置
の内容は規定されない[13.16.41(RECORD句)の一般規則4) 参照]。
44) RELEASE文 整列操作へ引き渡すバイト数がレコードのバイト数より大きい場合,このレコードの
終端を越えたバイトにある内容は,規定されない[14.8.30(RELEASE文)の一般規則6) 参照]。
45) RETURN文 RETURN文の実行が完了したとき,現在のデータレコードの範囲を越えた位置にある
データ項目の内容は,規定されない[14.8.32(RETURN文)の一般規則2) 参照]。
46) RETURN文 ファイル終了条件になった場合,レコード領域の内容は規定されない[14.8.32(RETURN
文)の一般規則3) 参照]。
47) RETURN文 現在の出力手続きの中で,ファイル終了条件が発生した後にRETURN文を実行しよう
とした場合,RETURN文の実行の結果は規定されない[14.8.32(RETURN文)の一般規則3) 参照]。
48) REWRITE文 ファイルへと書き出すバイト数がレコードのバイト数よりも大きい場合,このレコー
ドの終端を越えたバイトにある内容は規定されない[14.8.33(REWRITE文)の一般規則15) 参照]。
49) SEARCH ALL文 表引き指標の設定のうち,WHEN指定中に書かれた条件を全て満足するものが一
つ以上あるとき,次の条件が全て満足されない限り,表引きが該当する指標の識別に成功するか否か
は,規定されない[14.8.34(SEARCH文)の一般規則6) 参照]。
a) WHEN指定中で参照されるキーデータ項目の各々の内容が,この表の中において,そのキーデータ
項目に関連するASCENDING又はDESCENDINGの指定に従って並んでいる。
b) この表がOCCURS句のあるデータ記述項に一つ以上従属しているとき,WHEN指定中の複数の条
件が,この表に従属している同じキーデータ項目を参照している場合は,これらの条件を評価した
結果は,より上位の表のレベルに関連する添字のどれに対しても出現番号が同じである。
50) SEARCH ALL文 表引き指標の設定のうち,WHEN指定中に書かれた条件を全て満足するものが二
つ以上あるとき,表引き指標の最終設定に用いられるものがどれかは,規定されない[14.8.34(SEARCH
文)の一般規則7) 参照]。
51) SEARCH ALL文 許容範囲内で指標をどの値に設定しても,WHEN指定のどの条件も満足されない
519
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
とき,AT END指定があればその無条件文へ制御が移り,なければSEARCH文の終わりへ制御が移る。
いずれの場合も,表引き指標の最後の設定は規定されない[14.8.34(SEARCH文)の一般規則9) 参
照]。
52) SEND文 FROM一意名のデータ項目に特殊制御文字がある場合の効果は規定されない[A.2.6(SEND
文)の一般規則5) 参照]。
53) SEND文 実行単位の実行中,通信文の一部分がEMI又はEGIで終わっているのではなくPURGE文
の実行によって取り除かれているのでもない場合,どう取り扱われるかは,規定されない[A.2.6(SEND
文)の一般規則7) 参照]。
54) SEND文 ADVANCING一意名のデータ項目の値が負であるとき,ADVANCING動作の結果は規定さ
れない[A.2.6(SEND文)の一般規則15) b) 参照]。
55) SORT文 DUPLICATES指定がない場合,あるデータレコード又は表要素に関連するキーデータ項目
の内容が全て,他のデータレコード又は表要素に関連する対応キーデータ項目の内容と等しいとき,
これらのレコードの引取り順序又はこれら表要素の内容の相対順序は,規定されない[14.8.36(SORT
文)の一般規則4) 参照]。
56) SORT文 USING指定のファイルが開かれた状態のとき,ファイル用SORT文の実行の結果は規定さ
れない[14.8.36(SORT文)の一般規則8) a) 参照]。
57) SORT文 GIVING指定のファイルが開かれた状態のとき,ファイル用SORT文の実行の結果は規定
されない[14.8.36(SORT文)の一般規則8)c) 参照]。
58) SORT文 入力手続きの範囲内でMERGE文,RETURN文又はファイル用SORT文の実行が起きた場
合,SORT文の実行の結果は規定されない[14.8.36(SORT文)の一般規則9) 参照]。
59) SORT文 出力手続きの範囲内でMERGE文,RELEASE文又はファイル用SORT文の実行が起きた
場合,SORT文の実行の結果は規定されない[14.8.36(SORT文)の一般規則12) 参照]。
60) SORT文 相対ファイルに対し,USINGファイルをGIVING指定でも参照してはいないとき,SORT
文の実行後,相対キーデータ項目の内容は規定されない[14.8.36(SORT文)の一般規則11) c) 参照]。
61) SORT文 SORT文が完了した後,USINGファイルのファイル記述項のRECORD IS VARYING句の
DEPENDING ON指定のデータ項目の値は,規定されない[14.8.36(SORT文)の一般規則11) 参照]。
62) SORT文 GIVING指定のあるSORT文が完了した後,SORTファイルの整列併合用ファイル記述項の
RECORD IS VARYING句のDEPENDING ON指定のデータ項目の値は,規定されない[14.8.36(SORT
文)の一般規則14) 参照]。
63) START文 索引ファイルに対するSTART文の実行が不成功になった後,そのファイルの参照キーが
何であるかは,規定されない[14.8.37(START文)の一般規則7) 参照]。
64) STRING文 STRING一意名又はDELIMITED BY一意名の占める記憶域が,INTO一意名又はWITH
POINTER一意名と同じである場合,並びにINTO一意名の占める記憶域が,WITH POINTER一意名
と同じである場合,これらを同じデータ記述項によって定義していたとしても,STRING文の実行の
結果は規定されない[14.8.39(STRING文)の一般規則11) 及び14.5.9(作用対象の重なり)参照]。
65) UNSTRING文 UNSTRING一意名,DELIMITED BY一意名又はOR一意名の占める記憶域がINTO
一意名,DELIMITER一意名,COUNT一意名,POINTER一意名,TALLYING一意名のいずれかと同
じである場合,INTO一意名,DELIMITER一意名又はCOUNT一意名の占める記憶域がPOINTER一
意名又はTALLYING一意名と同じである場合,並びにPOINTER一意名の占める記憶域がTALLYING
一意名と同じである場合,これらを同じデータ記述項によって定義していても,UNSTRING文の実行
520
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
の結果は規定されない[14.8.44(UNSTRING文)の一般規則19) 及び14.5.9(作用対象の重なり)参
照]。
66) VALIDATE文 VALIDATE文の作用対象の要素のVARYING句に指定した算術式の評価が非整数値を
生じた場合,VALIDATE文の受取り側項目の内容は,規定されない[13.16.62(VARYING句)の一般
規則6) 参照]。
67) VARYING句 VARYING句に指定した算術式の評価が非整数値を生じたとき,印字行の内容は規定
されない[13.16.62(VARYING句)の一般規則5) 参照]。
68) WRITE文 ファイルへ書き出されるバイト数が,レコードのバイト数より大きい場合,このレコー
ドの終端を越えたバイトにある内容は規定されない[14.8.47(WRITE文)の一般規則12) 参照]。
69) WRITE文 WRITE文。順ファイルに対する複数のファイル結合子が,そのファイルを拡張モードで
開いた後,ファイル共用しながらレコードを追加する場合に,これらのレコードは,物理ファイルを
開いた時点でその中に存在するレコード群の直後に続けて書き出されるが,これ以外の点での順序は
規定されない[14.8.47(WRITE文)の一般規則19) 参照]。
70) WRITE文のADVANCING指定 ADVANCING一意名のデータ項目の値が負のとき,ADVANCING
操作の結果は,規定されない[14.8.47(WRITE文)の一般規則22) b) 参照]。
B.3
処理系依存の言語要素一覧
処理系は,翻訳群の翻訳又は実行単位の実行に用いられる,ハードウェアと,それに関連するソフトウ
ェアとからなる。
この規格で,特定の装置に依存するか,又は特定の処理系の能力,機能,アーキテクチャに依存する
COBOL言語要素を,次に示す。処理系依存の要素は,ハードウェア若しくはソフトウェア,又はその両
方の,能力若しくは機能に関係している場合がある。装置特定の用語を用いて記述した要素を実装する方
法は,ハードウェアによる方法,ソフトウェアによる方法,又は両方の組合せによる方法のいずれでもよ
い。
1) 特殊名段落のCURSOR句とCRT STATUS句,画面節,画面形式のACCEPT文,画面形式のDISPLAY
文は,処理系の機能に依存する。
2) 次の句によって指定する白黒/多彩その他の属性の可視化表現は,それらを実装・提供する端末装置
の能力に依存する。
BACKGROUND-COLOR / FOREGROUND-COLOR
BELL
BLINK
HIGHLIGHT / LOWLIGHT
REVERSE-VIDEO
UNDERLINE
3) 用途BINARYは,計算機アーキテクチャで2進データ形式を表現する機能に依存する。
4) 用途BINARY-CHAR,BINARY-SHORT,BINARY-LONG及びBINARY-DOUBLEは,計算機アーキテ
クチャで2進データ形式を表現する機能に依存する。
5) 用途FLOAT-SHORT,FLOAT-LONG及びFLOAT-EXTENDEDは,計算機アーキテクチャで浮動小数点
データ形式を表現する機能に依存する。
6) 用途PACKED DECIMAL句は,計算機アーキテクチャでパック10進データ形式を表現する機能に依
521
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
存する。
7) ハードウェア装置で位置決めができないとき,オペレーティングシステムは,DISPLAY文で明示的又
は暗黙に指定される位置決めを無視する。
8) STANDARD-COMPARE組込み関数と特殊名段落のORDER TABLE句とは,ISO/IEC 14651の実装に
依存する。実装者は,実装・提供を行わない場合でも,構文を受け入れてEC-ORDER-NOT-SUPPORT
例外状態にしなければならない。
9) PADDING CHARACTER句は,ファイルが割り当てられる装置において,埋め草文字が使用できるか
否かに依存する。
注記 PADDING CHARACTER句は,この規格の廃要素であり,規格COBOLの次回改正版では削
除される予定である。
10) RECORD DELIMITER句のSTANDARD-1指定は,リール形式の装置に依存する。
11) CODE-SET句は,装置が実装・提供する符号系に依存する。
12) CLOSE文のREEL/UNIT指定は,リール又は大容量記憶装置に依存する。
13) CLOSE文のFOR REMOVAL指定は,リール又は大容量記憶装置に依存する。
14) CLOSE文のWITH NO REWIND指定は,リール又は大容量記憶装置に依存する。
15) DELETE文は,大容量記憶装置に依存する。
16) OPEN文のI-O指定は,大容量記憶装置に依存する。
17) OPEN文のWITH NO REWIND指定は,リール又は大容量記憶装置に依存する。
18) OPEN文のEXTEND指定は,リール又は大容量記憶装置に依存する。
19) REWRITE文は,大容量記憶装置に依存する。
20) USE文のI-O指定は,大容量記憶装置に依存する。
21) WRITE文のBEFORE/AFTER ADVANCING指定は,縦の位置決め又は呼び名に対応する動作ができる
装置に依存する。
22) SEND文のBEFORE/AFTER ADVANCING指定は,縦の位置決め又は呼び名に対応する動作ができる
装置に依存する。
23) 拡張文字及び各国文字定数を用いてソースコードを作成・印字・表示することのできる機能,並びに
各国文字を含むデータを印字・表示することのできる機能は,実装者が実装・提供する符号化文字集
合を処理できる装置に依存する。
24) ファイル管理記述項のSHARING句及びOPEN文に関するSHARING指定は,処理系の能力に依存す
る。
25) READ文のPREVIOUS指定及びSTART文の比較演算子LESS,NOT GREATER又はLESS OR EQUAL
は,レコードを逆順に呼出しできる操作環境の機能に依存する。
26) RECORD KEY句にSOURCE指定を書ける機能は,その機能を実装・提供する操作環境に依存する。
27) 索引ファイルの主キー及び副キーに対して文字照合順序を指定できる機能は,COLLATING
SEQUENCE句に指定した符号系が特殊名段落中でLOCALE指定を又は定数の組を用いて定義したも
のである場合,そのような符号系を索引に用いる機能を実装・提供している処理系に依存する。
28) ファイル管理記述項のLOCK MODE句と,入出力文に関する全てのレコード施錠の指定とは,処理系
の能力に依存する。
29) 文化圏依存の文字照合順序を割り当てたり,複数の副レコードキーに異なる文字照合順序を割り当て
たり,主レコードキーと異なる文字照合順序を割り当てたりする機能は,処理系の能力に依存する。
522
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
30) 長さゼロのレコードを相対ファイル及び索引ファイルに対し指定でき,そのようなレコードを読み書
きできる機能は,処理系の能力に依存する。
31) 実行単位の異常終了を示す機能は,処理系の能力に依存する。
523
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書C
(規定)
利用者定義語に使用できる文字
この附属書は,利用者定義語に使用できる文字のレパートリを提示する。ここで文字に包含されるのは,
基本文字,拡張文字,表意文字,表音文字,数字,修飾符,結合符など,ISO/IEC TR 10176:2001の附属
書A中でプログラム言語の識別子に推奨されたものである。これらの文字を用いると,世界中の自然言語
の多くを書き表すことができる。
この規格では,ISO/IEC TR 10176:2001の規定以外に1文字,カタロニア語表記で用いる中点(00B7)
を追加する。
このレパートリには,基本文字,基本数字,基本のハイフンと下線文字とが含まれ,これらがCOBOL
文字レパートリのうち利用者定義語に使用できる基本的文字群である。このレパートリの残りの文字群を
拡張文字と呼び,これらも利用者定義語に使用できることは,COBOLの詳細規則の規定どおりである。
基本文字と拡張文字とを用いると,世界中の自然言語の多くを書き表すことができる。
注記 この規格の発行時点では,拡張文字の完全集合が広く実装されるにはまだ至っていないので,
利用者定義語に拡張文字を使用するとソースコードの移植性に影響する可能性がある点,注意
を喚起する。
C.1 記法
利用者定義語に使用できる文字のレパートリを定義するために,JIS X 0221に規定された文字を識別す
る16進コード値を用いる。文字の範囲を指定するにはnnnn-mmmmの形式を用いるが,nnnnは範囲内の先
頭文字を識別し,mmmmは範囲内の最終文字を識別する。
注記1 JIS X 0221のコード値は文字を識別する手段であるに過ぎず,JIS X 0221を実装することを
要請しているのではない。
注記2 JIS X 0221のコード値を参照するため慣習的に用いる文字"U"を,ここでは用いないことによ
って,コード値と範囲指定の読みやすさを高めた。
C.2 利用者定義語に使用できる文字のレパートリ
C.2.1 ISO/IEC TR 10176:2001の附属書Aに由来する文字
ISO/IEC TR 10176:2001の附属書Aで識別される,プログラム言語の識別子用に推奨された文字群を,
次の一覧に提示する。
注記 このレパートリには,JIS X 0221の実装水準2が規定する結合符が含まれている。実装水準3
の結合符は除いてあるため,利用者定義語の代替表現は回避されている。
用字又は文字の
分類
文字の範囲
ラテン
(Latin)
0041-005A, 0061-007A, 00AA, 00BA, 00C0-00D6, 00D8-00F6, 00F8-01F5, 01FA-0217,
0250-02A8, 1E00-1E9B, 1EA0-1EF9, 207F
524
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ギリシア (Greek)
0386, 0388-038A, 038C, 038E-03A1, 03A3-03CE, 03D0-03D6, 03DA, 03DC, 03DE, 03E0,
03E2-03F3, 1F00-1F15, 1F18-1F1D, 1F20-1F45, 1F48-1F4D, 1F50-1F57, 1F59, 1F5B,
1F5D, 1F5F-1F7D, 1F80-1FB4, 1FB6-1FBC, 1FC2-1FC4, 1FC6-1FCC, 1FD0-1FD3,
1FD6-1FDB, 1FE0-1FEC, 1FF2-1FF4, 1FF6-1FFC
キリール
(Cyrillic)
0401-040C, 040E-044F, 0451-045C, 045E-0481, 0490-04C4, 04C7-04C8, 04CB-04CC,
04D0-04EB, 04EE-04F5, 04F8-04F9
アルメニア
(Armenian)
0531-0556, 0561-0587
ヘブライ
(Hebrew)
05B0-05B9, 05BB-05BD, 05BF, 05C1-05C2, 05D0-05EA, 05F0-05F2
アラビア (Arabic)
0621-063A, 0640-0652, 0670-06B7, 06BA-06BE, 06C0-06CE, 06D0-06D3, 06D5-06DC,
06E5-06E8, 06EA-06ED
デーヴァナーガリ
(Devanagari)
0901-0903, 0905-0939, 093E-094D, 0950-0952, 0958-0963
ベンガル
(Bengali)
0981-0983, 0985-098C, 098F-0990, 0993-09A8, 09AA-09B0, 09B2, 09B6-09B9,
09BE-09C4, 09C7-09C8, 09CB-09CD, 09DC-09DD, 09DF-09E3, 09F0-09F1
グルムキー
(Gurmukhi)
0A02, 0A05-0A0A, 0A0F-0A10, 0A13-0A28, 0A2A-0A30, 0A32-0A33, 0A35-0A36,
0A38-0A39, 0A3E-0A42, 0A47-0A48, 0A4B-0A4D, 0A59-0A5C, 0A5E, 0A74
グジャラーティ
(Gujarati)
0A81-0A83, 0A85-0A8B, 0A8D, 0A8F-0A91, 0A93-0AA8, 0AAA-0AB0, 0AB2-0AB3,
0AB5-0AB9, 0ABD-0AC5, 0AC7-0AC9, 0ACB-0ACD, 0AD0, 0AE0
オリヤー (Oriya)
0B01-0B03, 0B05-0B0C, 0B0F-0B10, 0B13-0B28, 0B2A-0B30, 0B32-0B33, 0B36-0B39,
0B3E-0B43, 0B47-0B48, 0B4B-0B4D, 0B5C-0B5D, 0B5F-0B61
タミール (Tamil)
0B82-0B83, 0B85-0B8A, 0B8E-0B90, 0B92-0B95, 0B99-0B9A, 0B9C, 0B9E-0B9F,
0BA3-0BA4, 0BA8-0BAA, 0BAE-0BB5, 0BB7-0BB9, 0BBE-0BC2, 0BC6-0BC8, 0BCA-0BCD
テルグー (Telugu) 0C01-0C03, 0C05-0C0C, 0C0E-0C10, 0C12-0C28, 0C2A-0C33, 0C35-0C39, 0C3E-0C44,
0C46-0C48, 0C4A-0C4D, 0C60-0C61
カンナダ
(Kannada)
0C82-0C83, 0C85-0C8C, 0C8E-0C90, 0C92-0CA8, 0CAA-0CB3, 0CB5-0CB9, 0CBE-0CC4,
0CC6-0CC8, 0CCA-0CCD, 0CDE, 0CE0-0CE1
マラヤーラム
(Malayalam)
0D02-0D03, 0D05-0D0C, 0D0E-0D10, 0D12-0D28, 0D2A-0D39, 0D3E-0D43, 0D46-0D48,
0D4A-0D4D, 0D60-0D61
タイ
(Thai)
0E01-0E3A, 0E40-0E4E, 0E50-0E59
ラオ
(Lao)
0E81-0E82, 0E84, 0E87-0E88, 0E8A, 0E8D, 0E94-0E97, 0E99-0E9F, 0EA1-0EA3, 0EA5,
0EA7, 0EAA-0EAB, 0EAD-0EAE, 0EB0-0EB9, 0EBB-0EBD, 0EC0-0EC4, 0EC6, 0EC8-0ECD,
0EDC-0EDD
チベット
(Tibetan)
0F00, 0F18-0F19, 0F35, 0F37, 0F39, 0F40-0F47, 0F49-0F69, 0F71-0F84, 0F86-0F8B,
0F90-0F95, 0F97, 0F99-0FAD, 0FB1-0FB7, 0FB9
グルジア
(Georgian)
10A0-10C5, 10D0-10F6
525
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
平仮名 (Hiragana)
片仮名 (Katakana)
3041-3093
30A1-30F6, 30FB-30FC
注音字母
(Bopomofo)
3105-312C
CJK統合漢字
(CJK Unified
Ideographs)
4E00-9FA5
ハングル音節
(Hangul)
AC00-D7A3
数字
(Digits)
0030-0039, 0660-0669, 06F0-06F9, 0966-096F, 09E6-09EF, 0A66-0A6F, 0AE6-0AEF,
0B66-0B6F, 0BE7-0BEF, 0C66-0C6F, 0CE6-0CEF, 0D66-0D6F, 0E50-0E59, 0ED0-0ED9,
0F20-0F29
特殊文字
00B5, 02B0-02B8, 02BB, 02BD-02C1, 02D0-02D1, 02E0-02E4, 037A, 0559, 093D, 0B3D,
1FBE, 203F-2040, 2102, 2107, 210A-2113, 2115, 2118-211D, 2124, 2126, 2128,
212A-2131, 2133-2138, 2160-2182, 3005-3007, 3021-3029
C.2.2 その他の文字
特殊文字
002D(ハイフン・負号)
005F(下線文字)
00B7(中点)
526
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書D
(規定)
大文字から小文字への対応
この附属書は,COBOL文字レパートリ中の大文字から小文字への対応を示す。
D.1 記法
この附属書では,次に示す記法の規約を用いる。
1) Ummmm,ここでmmmmは数字0〜9と10〜15相当の英字A〜Fとを用いた4けたの16進数字表記である
が,これはJIS X 0221に規定された1文字を識別するコード値を表す。
注記 コード値の規定は,文字を識別する手段であるに過ぎず,JIS X 0221を実装することを要請し
ているのではない。
2) (<Uxxxx>,<Uyyyy>) は大文字Uxxxxから小文字Uyyyyへの対応を表す。
D.2 大文字・小文字の対応一覧
大文字から小文字への対応を次に列挙する。
D.2.1 一般的な大文字・小文字の対応
次の対応付けはISO/IEC TR 14652:2004(廃止規格)のカテゴリLC̲CTYPEのキーワード"tolower"によ
る。
注記1 一般的な大文字・小文字の対応は,小文字に同一視しても一意名の長さを変えないように定
義してある。ISO/IEC TR 14652(廃止規格)の"tolower"による大文字・小文字の対応は,Unicode
ConsortiumがデータベースUnicodeData.txtで定義する対応付けと互換性を保つことを意図し
ていた。実装者が規格外拡張として更に多くの文字を拡張文字の文字集合に追加する場合,
データベースUnicodeData.txtの大文字・小文字対応を用いることが望ましい。
注記2 次の大文字・小文字の対応は,ISO/IEC TR 14652:2004(廃止規格)から抜粋した。
1) ラテン(Latin)
(<U0041>,<U0061>);(<U0042>,<U0062>);(<U0043>,<U0063>);(<U0044>,<U0064>);
(<U0045>,<U0065>);(<U0046>,<U0066>);(<U0047>,<U0067>);(<U0048>,<U0068>);
(<U0049>,<U0069>);(<U004A>,<U006A>);(<U004B>,<U006B>);(<U004C>,<U006C>);
(<U004D>,<U006D>);(<U004E>,<U006E>);(<U004F>,<U006F>);(<U0050>,<U0070>);
(<U0051>,<U0071>);(<U0052>,<U0072>);(<U0053>,<U0073>);(<U0054>,<U0074>);
(<U0055>,<U0075>);(<U0056>,<U0076>);(<U0057>,<U0077>);(<U0058>,<U0078>);
(<U0059>,<U0079>);(<U005A>,<U007A>);(<U00C0>,<U00E0>);(<U00C1>,<U00E1>);
(<U00C2>,<U00E2>);(<U00C3>,<U00E3>);(<U00C4>,<U00E4>);(<U00C5>,<U00E5>);
(<U00C6>,<U00E6>);(<U00C7>,<U00E7>);(<U00C8>,<U00E8>);(<U00C9>,<U00E9>);
(<U00CA>,<U00EA>);(<U00CB>,<U00EB>);(<U00CC>,<U00EC>);(<U00CD>,<U00ED>);
(<U00CE>,<U00EE>);(<U00CF>,<U00EF>);(<U00D0>,<U00F0>);(<U00D1>,<U00F1>);
(<U00D2>,<U00F2>);(<U00D3>,<U00F3>);(<U00D4>,<U00F4>);(<U00D5>,<U00F5>);
(<U00D6>,<U00F6>);(<U00D8>,<U00F8>);(<U00D9>,<U00F9>);(<U00DA>,<U00FA>);
(<U00DB>,<U00FB>);(<U00DC>,<U00FC>);(<U00DD>,<U00FD>);(<U00DE>,<U00FE>);
(<U0100>,<U0101>);(<U0102>,<U0103>);(<U0104>,<U0105>);(<U0106>,<U0107>);
(<U0108>,<U0109>);(<U010A>,<U010B>);(<U010C>,<U010D>);(<U010E>,<U010F>);
(<U0110>,<U0111>);(<U0112>,<U0113>);(<U0114>,<U0115>);(<U0116>,<U0117>);
(<U0118>,<U0119>);(<U011A>,<U011B>);(<U011C>,<U011D>);(<U011E>,<U011F>);
(<U0120>,<U0121>);(<U0122>,<U0123>);(<U0124>,<U0125>);(<U0126>,<U0127>);
527
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
(<U0128>,<U0129>);(<U012A>,<U012B>);(<U012C>,<U012D>);(<U012E>,<U012F>);
(<U0130>,<U0069>);(<U0132>,<U0133>);(<U0134>,<U0135>);(<U0136>,<U0137>);
(<U0139>,<U013A>);(<U013B>,<U013C>);(<U013D>,<U013E>);(<U013F>,<U0140>);
(<U0141>,<U0142>);(<U0143>,<U0144>);(<U0145>,<U0146>);(<U0147>,<U0148>);
(<U014A>,<U014B>);(<U014C>,<U014D>);(<U014E>,<U014F>);(<U0150>,<U0151>);
(<U0152>,<U0153>);(<U0154>,<U0155>);(<U0156>,<U0157>);(<U0158>,<U0159>);
(<U015A>,<U015B>);(<U015C>,<U015D>);(<U015E>,<U015F>);(<U0160>,<U0161>);
(<U0162>,<U0163>);(<U0164>,<U0165>);(<U0166>,<U0167>);(<U0168>,<U0169>);
(<U016A>,<U016B>);(<U016C>,<U016D>);(<U016E>,<U016F>);(<U0170>,<U0171>);
(<U0172>,<U0173>);(<U0174>,<U0175>);(<U0176>,<U0177>);(<U0178>,<U00FF>);
(<U0179>,<U017A>);(<U017B>,<U017C>);(<U017D>,<U017E>);(<U0181>,<U0253>);
(<U0182>,<U0183>);(<U0184>,<U0185>);(<U0186>,<U0254>);(<U0187>,<U0188>);
(<U018A>,<U0257>);(<U018B>,<U018C>);(<U018E>,<U01DD>);(<U018E>,<U0258>);
(<U018F>,<U0259>);(<U0190>,<U025B>);(<U0191>,<U0192>);(<U0193>,<U0260>);
(<U0194>,<U0263>);(<U0196>,<U0269>);(<U0197>,<U0268>);(<U0198>,<U0199>);
(<U019C>,<U026F>);(<U019D>,<U0272>);(<U019F>,<U0275>);(<U01A0>,<U01A1>);
(<U01A2>,<U01A3>);(<U01A4>,<U01A5>);(<U01A6>,<U0280>);(<U01A7>,<U01A8>);
(<U01A9>,<U0283>);(<U01AC>,<U01AD>);(<U01AE>,<U0288>);(<U01AF>,<U01B0>);
(<U01B1>,<U028A>);(<U01B2>,<U028B>);(<U01B3>,<U01B4>);(<U01B5>,<U01B6>);
(<U01B7>,<U0292>);(<U01B8>,<U01B9>);(<U01BC>,<U01BD>);(<U01C4>,<U01C6>);
(<U01C5>,<U01C6>);(<U01C7>,<U01C9>);(<U01C8>,<U01C9>);(<U01CA>,<U01CC>);
(<U01CB>,<U01CC>);(<U01CD>,<U01CE>);(<U01CF>,<U01D0>);(<U01D1>,<U01D2>);
(<U01D3>,<U01D4>);(<U01D5>,<U01D6>);(<U01D7>,<U01D8>);(<U01D9>,<U01DA>);
(<U01DB>,<U01DC>);(<U01DE>,<U01DF>);(<U01E0>,<U01E1>);(<U01E2>,<U01E3>);
(<U01E4>,<U01E5>);(<U01E6>,<U01E7>);(<U01E8>,<U01E9>);(<U01EA>,<U01EB>);
(<U01EC>,<U01ED>);(<U01EE>,<U01EF>);(<U01F1>,<U01F3>);(<U01F2>,<U01F3>);
(<U01F4>,<U01F5>);(<U01FA>,<U01FB>);(<U01FC>,<U01FD>);(<U01FE>,<U01FF>);
(<U0200>,<U0201>);(<U0202>,<U0203>);(<U0204>,<U0205>);(<U0206>,<U0207>);
(<U0208>,<U0209>);(<U020A>,<U020B>);(<U020C>,<U020D>);(<U020E>,<U020F>);
(<U0210>,<U0211>);(<U0212>,<U0213>);(<U0214>,<U0215>);(<U0216>,<U0217>);
(<U0256>,<U0189>);(<U1E02>,<U1E03>);(<U1E04>,<U1E05>);(<U1E06>,<U1E07>);
(<U1E08>,<U1E09>);(<U1E0A>,<U1E0B>);(<U1E0C>,<U1E0D>);(<U1E0E>,<U1E0F>);
(<U1E10>,<U1E11>);(<U1E12>,<U1E13>);(<U1E14>,<U1E15>);(<U1E16>,<U1E17>);
(<U1E18>,<U1E19>);(<U1E1A>,<U1E1B>);(<U1E1C>,<U1E1D>);(<U1E1E>,<U1E1F>);
(<U1E20>,<U1E21>);(<U1E22>,<U1E23>);(<U1E24>,<U1E25>);(<U1E26>,<U1E27>);
(<U1E28>,<U1E29>);(<U1E2A>,<U1E2B>);(<U1E2C>,<U1E2D>);(<U1E2E>,<U1E2F>);
(<U1E30>,<U1E31>);(<U1E32>,<U1E33>);(<U1E34>,<U1E35>);(<U1E36>,<U1E37>);
(<U1E38>,<U1E39>);(<U1E3A>,<U1E3B>);(<U1E3C>,<U1E3D>);(<U1E3E>,<U1E3F>);
(<U1E40>,<U1E41>);(<U1E42>,<U1E43>);(<U1E44>,<U1E45>);(<U1E46>,<U1E47>);
(<U1E48>,<U1E49>);(<U1E4A>,<U1E4B>);(<U1E4C>,<U1E4D>);(<U1E4E>,<U1E4F>);
(<U1E50>,<U1E51>);(<U1E52>,<U1E53>);(<U1E54>,<U1E55>);(<U1E56>,<U1E57>);
(<U1E58>,<U1E59>);(<U1E5A>,<U1E5B>);(<U1E5C>,<U1E5D>);(<U1E5E>,<U1E5F>);
(<U1E60>,<U1E61>);(<U1E62>,<U1E63>);(<U1E64>,<U1E65>);(<U1E66>,<U1E67>);
(<U1E68>,<U1E69>);(<U1E6A>,<U1E6B>);(<U1E6C>,<U1E6D>);(<U1E6E>,<U1E6F>);
(<U1E70>,<U1E71>);(<U1E72>,<U1E73>);(<U1E74>,<U1E75>);(<U1E76>,<U1E77>);
(<U1E78>,<U1E79>);(<U1E7A>,<U1E7B>);(<U1E7C>,<U1E7D>);(<U1E7E>,<U1E7F>);
(<U1E80>,<U1E81>);(<U1E82>,<U1E83>);(<U1E84>,<U1E85>);(<U1E86>,<U1E87>);
(<U1E88>,<U1E89>);(<U1E8A>,<U1E8B>);(<U1E8C>,<U1E8D>);(<U1E8E>,<U1E8F>);
(<U1E90>,<U1E91>);(<U1E92>,<U1E93>);(<U1E94>,<U1E95>);(<U1EA0>,<U1EA1>);
(<U1EA2>,<U1EA3>);(<U1EA4>,<U1EA5>);(<U1EA6>,<U1EA7>);(<U1EA8>,<U1EA9>);
(<U1EAA>,<U1EAB>);(<U1EAC>,<U1EAD>);(<U1EAE>,<U1EAF>);(<U1EB0>,<U1EB1>);
(<U1EB2>,<U1EB3>);(<U1EB4>,<U1EB5>);(<U1EB6>,<U1EB7>);(<U1EB8>,<U1EB9>);
(<U1EBA>,<U1EBB>);(<U1EBC>,<U1EBD>);(<U1EBE>,<U1EBF>);(<U1EC0>,<U1EC1>);
(<U1EC2>,<U1EC3>);(<U1EC4>,<U1EC5>);(<U1EC6>,<U1EC7>);(<U1EC8>,<U1EC9>);
(<U1ECA>,<U1ECB>);(<U1ECC>,<U1ECD>);(<U1ECE>,<U1ECF>);(<U1ED0>,<U1ED1>);
(<U1ED2>,<U1ED3>);(<U1ED4>,<U1ED5>);(<U1ED6>,<U1ED7>);(<U1ED8>,<U1ED9>);
528
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
(<U1EDA>,<U1EDB>);(<U1EDC>,<U1EDD>);(<U1EDE>,<U1EDF>);(<U1EE0>,<U1EE1>);
(<U1EE2>,<U1EE3>);(<U1EE4>,<U1EE5>);(<U1EE6>,<U1EE7>);(<U1EE8>,<U1EE9>);
(<U1EEA>,<U1EEB>);(<U1EEC>,<U1EED>);(<U1EEE>,<U1EEF>);(<U1EF0>,<U1EF1>);
(<U1EF2>,<U1EF3>);(<U1EF4>,<U1EF5>);(<U1EF6>,<U1EF7>);(<U1EF8>,<U1EF9>);
(<U1F08>,<U1F00>);(<U1F09>,<U1F01>)
2) ギリシア(Greek)
(<U0386>,<U03AC>);(<U0388>,<U03AD>);(<U0389>,<U03AE>);(<U038A>,<U03AF>);
(<U038C>,<U03CC>);(<U038E>,<U03CD>);(<U038F>,<U03CE>);(<U0391>,<U03B1>);
(<U0392>,<U03B2>);(<U0393>,<U03B3>);(<U0394>,<U03B4>);(<U0395>,<U03B5>);
(<U0396>,<U03B6>);(<U0397>,<U03B7>);(<U0398>,<U03B8>);(<U0399>,<U03B9>);
(<U039A>,<U03BA>);(<U039B>,<U03BB>);(<U039C>,<U03BC>);(<U039D>,<U03BD>);
(<U039E>,<U03BE>);(<U039F>,<U03BF>);(<U03A0>,<U03C0>);(<U03A1>,<U03C1>);
(<U03A3>,<U03C3>);(<U03A4>,<U03C4>);(<U03A5>,<U03C5>);(<U03A6>,<U03C6>);
(<U03A7>,<U03C7>);(<U03A8>,<U03C8>);(<U03A9>,<U03C9>);(<U03AA>,<U03CA>);
(<U03AB>,<U03CB>);(<U03E2>,<U03E3>);(<U03E4>,<U03E5>);(<U03E6>,<U03E7>);
(<U03E8>,<U03E9>);(<U03EA>,<U03EB>);(<U03EC>,<U03ED>);(<U03EE>,<U03EF>);
(<U1F0A>,<U1F02>);(<U1F0B>,<U1F03>);(<U1F0C>,<U1F04>);(<U1F0D>,<U1F05>);
(<U1F0E>,<U1F06>);(<U1F0F>,<U1F07>);(<U1F18>,<U1F10>);(<U1F19>,<U1F11>);
(<U1F1A>,<U1F12>);(<U1F1B>,<U1F13>);(<U1F1C>,<U1F14>);(<U1F1D>,<U1F15>);
(<U1F28>,<U1F20>);(<U1F29>,<U1F21>);(<U1F2A>,<U1F22>);(<U1F2B>,<U1F23>);
(<U1F2C>,<U1F24>);(<U1F2D>,<U1F25>);(<U1F2E>,<U1F26>);(<U1F2F>,<U1F27>);
(<U1F38>,<U1F30>);(<U1F39>,<U1F31>);(<U1F3A>,<U1F32>);(<U1F3B>,<U1F33>);
(<U1F3C>,<U1F34>);(<U1F3D>,<U1F35>);(<U1F3E>,<U1F36>);(<U1F3F>,<U1F37>);
(<U1F48>,<U1F40>);(<U1F49>,<U1F41>);(<U1F4A>,<U1F42>);(<U1F4B>,<U1F43>);
(<U1F4C>,<U1F44>);(<U1F4D>,<U1F45>);(<U1F59>,<U1F51>);(<U1F5B>,<U1F53>);
(<U1F5D>,<U1F55>);(<U1F5F>,<U1F57>);(<U1F68>,<U1F60>);(<U1F69>,<U1F61>);
(<U1F6A>,<U1F62>);(<U1F6B>,<U1F63>);(<U1F6C>,<U1F64>);(<U1F6D>,<U1F65>);
(<U1F6E>,<U1F66>);(<U1F6F>,<U1F67>);(<U1F88>,<U1F80>);(<U1F89>,<U1F81>);
(<U1F8A>,<U1F82>);(<U1F8B>,<U1F83>);(<U1F8C>,<U1F84>);(<U1F8D>,<U1F85>);
(<U1F8E>,<U1F86>);(<U1F8F>,<U1F87>);(<U1F98>,<U1F90>);(<U1F99>,<U1F91>);
(<U1F9A>,<U1F92>);(<U1F9B>,<U1F93>);(<U1F9C>,<U1F94>);(<U1F9D>,<U1F95>);
(<U1F9E>,<U1F96>);(<U1F9F>,<U1F97>);(<U1FA8>,<U1FA0>);(<U1FA9>,<U1FA1>);
(<U1FAA>,<U1FA2>);(<U1FAB>,<U1FA3>);(<U1FAC>,<U1FA4>);(<U1FAD>,<U1FA5>);
(<U1FAE>,<U1FA6>);(<U1FAF>,<U1FA7>);(<U1FB8>,<U1FB0>);(<U1FB9>,<U1FB1>);
(<U1FBA>,<U1F70>);(<U1FBB>,<U1F71>);(<U1FBC>,<U1FB3>);(<U1FC8>,<U1F72>);
(<U1FC9>,<U1F73>);(<U1FCA>,<U1F74>);(<U1FCB>,<U1F75>);(<U1FCC>,<U1FC3>);
(<U1FD8>,<U1FD0>);(<U1FD9>,<U1FD1>);(<U1FDA>,<U1F76>);(<U1FDB>,<U1F77>);
(<U1FE8>,<U1FE0>);(<U1FE9>,<U1FE1>);(<U1FEA>,<U1F7A>);(<U1FEB>,<U1F7B>);
(<U1FEC>,<U1FE5>);(<U1FF8>,<U1F78>);(<U1FF9>,<U1F79>);(<U1FFA>,<U1F7C>);
(<U1FFB>,<U1F7D>);(<U1FFC>,<U1FF3>)
3) キリール(Cyrillic)
(<U0401>,<U0451>);(<U0402>,<U0452>);(<U0403>,<U0453>);(<U0404>,<U0454>);
(<U0405>,<U0455>);(<U0406>,<U0456>);(<U0407>,<U0457>);(<U0408>,<U0458>);
(<U0409>,<U0459>);(<U040A>,<U045A>);(<U040B>,<U045B>);(<U040C>,<U045C>);
(<U040E>,<U045E>);(<U040F>,<U045F>);(<U0410>,<U0430>);(<U0411>,<U0431>);
(<U0412>,<U0432>);(<U0413>,<U0433>);(<U0414>,<U0434>);(<U0415>,<U0435>);
(<U0416>,<U0436>);(<U0417>,<U0437>);(<U0418>,<U0438>);(<U0419>,<U0439>);
(<U041A>,<U043A>);(<U041B>,<U043B>);(<U041C>,<U043C>);(<U041D>,<U043D>);
(<U041E>,<U043E>);(<U041F>,<U043F>);(<U0420>,<U0440>);(<U0421>,<U0441>);
(<U0422>,<U0442>);(<U0423>,<U0443>);(<U0424>,<U0444>);(<U0425>,<U0445>);
(<U0426>,<U0446>);(<U0427>,<U0447>);(<U0428>,<U0448>);(<U0429>,<U0449>);
(<U042A>,<U044A>);(<U042B>,<U044B>);(<U042C>,<U044C>);(<U042D>,<U044D>);
(<U042E>,<U044E>);(<U042F>,<U044F>);(<U0460>,<U0461>);(<U0462>,<U0463>);
529
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
(<U0464>,<U0465>);(<U0466>,<U0467>);(<U0468>,<U0469>);(<U046A>,<U046B>);
(<U046C>,<U046D>);(<U046E>,<U046F>);(<U0470>,<U0471>);(<U0472>,<U0473>);
(<U0474>,<U0475>);(<U0476>,<U0477>);(<U0478>,<U0479>);(<U047A>,<U047B>);
(<U047C>,<U047D>);(<U047E>,<U047F>);(<U0480>,<U0481>);(<U0490>,<U0491>);
(<U0492>,<U0493>);(<U0494>,<U0495>);(<U0496>,<U0497>);(<U0498>,<U0499>);
(<U049A>,<U049B>);(<U049C>,<U049D>);(<U049E>,<U049F>);(<U04A0>,<U04A1>);
(<U04A2>,<U04A3>);(<U04A4>,<U04A5>);(<U04A6>,<U04A7>);(<U04A8>,<U04A9>);
(<U04AA>,<U04AB>);(<U04AC>,<U04AD>);(<U04AE>,<U04AF>);(<U04B0>,<U04B1>);
(<U04B2>,<U04B3>);(<U04B4>,<U04B5>);(<U04B6>,<U04B7>);(<U04B8>,<U04B9>);
(<U04BA>,<U04BB>);(<U04BC>,<U04BD>);(<U04BE>,<U04BF>);(<U04C1>,<U04C2>);
(<U04C3>,<U04C4>);(<U04C7>,<U04C8>);(<U04CB>,<U04CC>);(<U04D0>,<U04D1>);
(<U04D2>,<U04D3>);(<U04D4>,<U04D5>);(<U04D6>,<U04D7>);(<U04D8>,<U04D9>);
(<U04DA>,<U04DB>);(<U04DC>,<U04DD>);(<U04DE>,<U04DF>);(<U04E0>,<U04E1>);
(<U04E2>,<U04E3>);(<U04E4>,<U04E5>);(<U04E6>,<U04E7>);(<U04E8>,<U04E9>);
(<U04EA>,<U04EB>);(<U04EE>,<U04EF>);(<U04F0>,<U04F1>);(<U04F2>,<U04F3>);
(<U04F4>,<U04F5>);(<U04F8>,<U04F9>)
4) アルメニア(Armenian)
(<U0531>,<U0561>);(<U0532>,<U0562>);(<U0533>,<U0563>);(<U0534>,<U0564>);
(<U0535>,<U0565>);(<U0536>,<U0566>);(<U0537>,<U0567>);(<U0538>,<U0568>);
(<U0539>,<U0569>);(<U053A>,<U056A>);(<U053B>,<U056B>);(<U053C>,<U056C>);
(<U053D>,<U056D>);(<U053E>,<U056E>);(<U053F>,<U056F>);(<U0540>,<U0570>);
(<U0541>,<U0571>);(<U0542>,<U0572>);(<U0543>,<U0573>);(<U0544>,<U0574>);
(<U0545>,<U0575>);(<U0546>,<U0576>);(<U0547>,<U0577>);(<U0548>,<U0578>);
(<U0549>,<U0579>);(<U054A>,<U057A>);(<U054B>,<U057B>);(<U054C>,<U057C>);
(<U054D>,<U057D>);(<U054E>,<U057E>);(<U054F>,<U057F>);(<U0550>,<U0580>);
(<U0551>,<U0581>);(<U0552>,<U0582>);(<U0553>,<U0583>)
530
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書E
(参考)
概念
この附属書(参考)は,本体及び附属書(規定)に関連する事柄を補足するものであって,規定の一部
ではない。
この附属書では言語の主な機能について,機能の利用法の例示と機能の働きを説明する文章とを用いて
説明する。
E.1
ファイル
ファイル(file)とは,記憶媒体上に格納されたり,そこから取り出されたりするレコードの集まりであ
る。利用者は,ファイル編成だけではなく,ファイルの処理方法及び手順についても選択することができ
る。ファイルの編成及び処理方法は,順次記憶媒体では制約を受けるが,大容量記憶媒体では制約を受け
ない。
ファイルを操作するCOBOLプログラムの機能について記述するときは,次の用語を用いる。“ファイル
名”とはファイルを参照するのに用いられる利用者定義語である。“ファイル名によって参照されるファイ
ル”及び“ファイル”は,物理的なファイルを意味する用語であって,COBOLプログラム中で用いるフ
ァイル名と関係がない。“ファイル結合子”は,ファイルに関する情報をもつ実体を意味する。物理的なフ
ァイルへのアクセスは全て,ファイル結合子を介して行われる。実装系によっては,ファイル結合子のこ
とを“ファイル情報テーブル”,“ファイル制御ブロック”などと呼ぶこともある。
E.1.1 ファイル編成
E.1.1.1 順編成
順ファイルは,最後以外の各レコードに対してその直後のレコードが一意に決まり,先頭以外の各レコ
ードに対してその直前のレコードが一意に決まるように編成される。レコードの前後関係は,ファイルを
生成するときのWRITE文の実行の順序によって確定する。いったん確定した前後関係は,ファイルの最
後にレコードを追加する場合以外に変わることはない。
順編成の大容量記憶ファイルは,順次媒体上のファイルと論理構造が同じである。ただし,順編成の大
容量記憶ファイルなら,内容を置換しながら更新してもよい。この場合,新しいレコードをそのファイル
に挿入することはできず,置換される各レコードは元のレコードと同じ大きさでなければならない。
E.1.1.2 相対編成
相対編成のファイルは,相対レコード番号の値を与えることによって任意のレコードの格納又は取出し
をする大容量記憶ファイルである。
相対編成のファイルは,論理レコードを保持し得る領域の列と考えられる。これらの領域にはそれぞれ
相対レコード番号が割り振られ,相対ファイル中の各論理レコードはその記憶領域の相対レコード番号に
よって識別される。例えば,10番目のレコードは相対レコード番号10で番地付けされるものであり,1
番目から9番目のレコード領域にレコードを書き込んだか否かに関係なく,10番目のレコード領域に存在
する。
相対ファイルのレコード呼出しの効率を上げるため,ある論理レコードを格納するのに,データ部に記
述したそのレコードのバイト数とは異なるバイト数を媒体上に確保してもよい。
531
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
E.1.1.3 索引編成
索引編成のファイルは,レコードの中に指定されたキーの値を与えることによって任意のレコードを呼
び出す大容量記憶容量ファイルである。ファイルのレコードに対して定義された各キーデータ項目に対し
て,一つの索引(index)が設けられる。それぞれの索引は,各レコード中にある対応するキーデータ項目
の値の集まりを表す。このようにして,索引はファイル中の任意のレコードを呼び出す仕掛けを提供する。
各々の索引ファイルには主索引があり,そのファイル中の各レコードの主レコードキーを表す。各レコ
ードは主レコードキーの値に基づいてだけファイルに挿入され,変更され,ファイルから削除される。フ
ァイル中の各レコードの主レコードキーは一意でなければならず,その値をレコードの更新時に変更して
はならない。主レコードキーは,そのファイルのファイル管理記述項のRECORD KEY句で宣言される。
副レコードキーは,ファイル中のレコードを取り出すための代替手段を提供する。副レコードキーは,
ファイル管理記述項のALTERNATE RECORD KEY句で命名される。ALTERNATE RECORD KEY句に
DUPLICATES指定を書いたとき,その副レコードキーの値はファイル中で一意でなくてもよい。
E.1.1.4 論理レコード
論理レコードとは,ファイルから取り出されファイルへ格納されるデータの単位である。ファイル中に
存在するレコードの数は,記憶媒体の容量によって制限される。レコードには,固定長と可変長の2種類
の形式がある。ファイルの内容が固定長レコードになるか可変長レコードになるかは,そのファイルを生
成するときに宣言される。いずれの場合も,実装者が物理的な記憶媒体上のレコードに附加し得る情報(例
えば,レコード長見出し)によってレコード領域の内容が影響されることはなく,COBOLプログラムの
使用するレコード長がこれらの附加情報によって影響されることもない。
E.1.1.4.1 固定長レコード
固定長レコードに含まれるバイト数は,ファイル中の全てのレコードに対して同じでなければならない。
このファイルに関する入出力操作は全て,このレコード長で処理しなければならない。固定長レコードを
明示的に選択するには,そのファイルに対するファイル記述項に書き方1のRECORD句を指定すればよ
く,このとき個々のレコード記述は関係しない。
E.1.1.4.2 可変長レコード
可変長レコードに含まれるバイト数は,ファイル中のレコードごとに異なってもよい。可変長レコード
を明示的に定義するには,そのファイルに対するファイル記述項又は整列併合用ファイル記述項の
RECORD句にVARYING指定があればよい。このレコードの長さに影響を及ぼすものとしては,そのファ
イルに対するRECORD句のDEPENDING指定,OCCURS句のDEPENDING指定のデータ項目又はレコー
ド記述の長さがある。
E.1.1.4.3 実装者定義のレコード形式
ファイルに対するファイル記述項にRECORD句の指定がない場合又はRECORD句がバイト位置の範囲
を指定するものである場合,固定長レコードになるか可変長レコードになるかは,実装者定義とする。
E.1.2 ファイル処理
ファイルの処理には,個々のレコードを操作する処理もあり,ファイル全体を対象として操作する処理
もある。処理中に発生した異常条件は,その実行時要素に通知される。
E.1.2.1 レコード操作
ファイル記述項のACCESS MODE句によって,実行時要素は,ファイル中のレコードを操作する方法を
指定する。呼出し法には,順呼出し,乱呼出し,及び動的呼出しがある。
相対編成又は索引編成のファイルでは,その物理ファイルを作成するのに用いた呼出し法に関係なく,
532
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ファイルを呼び出すために3種類の呼出し法のどれを用いてもよい。順編成のファイルでは,用いてよい
呼出し法は順呼出し法だけとする。
報告書を出力する場合の編成,形式及び内容は,報告書作成機能によって規定してもよい[E.18(報告
書作成)参照]。
E.1.2.1.1 順呼出し法
ファイルはファイル編成に関係なく,順呼出しで処理してもよい。
順編成では順呼出しの順序は,元々のレコードを書き出した順序である。
相対編成では順呼出しの順序は,相対レコード番号の値に基づいた昇順である。ただし,現在ファイル
中に存在するレコードだけが使用可能になる。START文を用いて,それ以降の一連の順検索のための開始
点を設定してもよい。
索引編成では順呼出しの順序は,そのファイルに関連する文字照合順序に従い,参照キーの値に基づい
た昇順である。ファイルに関連するキーは,ファイルの処理中にいずれを参照キーとして設定してもよい。
参照キーの値が重複したレコードの組がある場合は,これらのレコードが書き出された順序で検索される。
START文を用いて,それ以降の一連の順検索の開始点を設定してもよい。
レコード群を,ファイル中に編成されたのと逆の順序で呼び出すことができる。そのためには,READ
文にPREVIOUS指定を書けばよい。
E.1.2.1.2 乱呼出し法
乱呼出し法でファイルを検索する場合,入出力文を用いると,プログラマが指定した順序でレコードを
呼び出す。乱呼出し法は,相対編成又は索引編成のファイルにだけ用いてよい。
相対編成のファイルでは,プログラマは,必要なレコードを指定するために,相対レコード番号を相対
キーデータ項目に入れる。索引編成のファイルでは,プログラマは,必要なレコードを指定するために,
そのレコードキーのうちいずれかの値を,主レコードキー又は副レコードキーのデータ項目に入れる。
E.1.2.1.3 動的呼出し法
動的呼出し法では,プログラマは,入出力文の該当する書き方を用いて,順呼出しと乱呼出しとを随意
に切り換えることができる。動的呼出し法は,相対編成又は索引編成のファイルにだけ用いてよい。
E.1.2.1.4 オープンモード
オープンモードは,そのファイルのレコードに関して行う動作と関連する。オープンモードとその目的
との関係はというと,入力(input)はレコードの取出し用であり,出力(output)はレコードの書出し用,
拡張(extend)は既存ファイルへのレコードの追加用で,入出力両用(I-O)はレコードの検索と更新用で
ある。オープンモードは,OPEN文に指定する。
オープンモードが入力のとき,ファイルを呼び出すのにREAD文を用いてもよい。ファイルが索引編成
又は相対編成であり呼出し法が順呼出し又は動的呼出しのときには,START文も用いてよい。
オープンモードが出力のとき,ファイルへのレコードの書込みはWRITE文,GENERATE文又は
TERMINATE文の発行によって行われる。
オープンモードが拡張の場合,ファイルの論理的な末尾への新たなレコードの追加はWRITE文,
GENERATE文又はTERMINATE文の発行によって行われる。
入出力両用モードで開いてよいのは,大容量記憶媒体上のファイルだけとする。大容量記憶装置の機能
のおかげで,同じ場所での置換によって更新することができる。この場合には,常にREAD文とREWRITE
文を使用する。大容量記憶ファイルは,順次記憶媒体上のファイルの更新と同様に,READ文とWRITE
文とを用いて,ファイル全体を別のファイルへ(通常,大容量記憶媒体上の別の場所へ)転記することに
533
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
よって更新してもよい。しかし,大容量記憶媒体上の特定の場所だけを更新したほうが効率的な場合もあ
る。この技法で大容量記憶ファイルを保守するにはREWRITE文を使用し,変更されたレコードだけを記
憶媒体上の元々あった場所に書き戻す。順編成のファイルの更新に用いてよいのは,READ文とREWRITE
文だけである。しかし,索引編成又は相対編成のファイルに対しては,この他の機能を適用してもよい。
− START文を用いて,順呼出し又は動的呼出しのときレコード検索の順序を変更してもよい。
− DELETE文を用いて,呼出し法に関係なくファイルから論理的にレコードを削除してもよい。
− WRITE文を用いて,乱呼出し又は動的呼出しのときファイルに新たなレコードを挿入してもよい。
E.1.2.1.5 現在ボリュームポインタ
現在ボリュームポインタ(current volume pointer)とは,順ファイルの現在の物理ボリュームを正確に指
定する便宜上,この規格の中で使用する概念上の実体である。現在ボリュームポインタの状態に影響を及
ぼす文は,CLOSE文,OPEN文,READ文及びWRITE文だけとする。
E.1.2.1.6 ファイル位置指示子
ファイル位置指示子(file position indicator)とは,一連の入出力操作の間に,ファイル中で次に呼び出
すレコードを正確に指定する便宜上,この規格の中で使用する概念上の実体である。ファイル位置指示子
の設定に影響を及ぼす文は,CLOSE文でREEL/UNIT指定のあるもの,OPEN文,READ文及びSTART
文だけとする。ファイル位置指示子の概念は,出力モード又は拡張モードで開かれた状態のファイルに対
しては意味をもたない。
E.1.2.1.7 行数の概念
印字形式の指定に,LINAGE句を用いてもよい。この句は論理ページの定義を行い,論理ページ内にお
ける上端の余白,下端の余白,及び脚書き領域を定義する。LINAGE句を使用すると,これに関連して一
意名LINAGE-COUNTER(行数カウンタ)が暗黙に定義されて,これがページ本体内部における行位置を
示すようになる。
E.1.2.2 ファイル操作
COBOLの文の中には,ファイル全体を操作したりファイルのレコードの集まりを操作したりするもの
がある。このような文には,CLOSE文,MERGE文,OPEN文及びSORT文がある。
E.1.2.2.1 整列と併合
SORT文及びMERGE文は,一つ以上のファイルのレコード群を編成し直して,レコード中のデータ項
目である特定のキーに基づいた順序にする。
SORT文は一つのファイルからのレコード群を並べ替えるが,これらは元々は望ましい順序になってい
なくてもよい。MERGE文は二つ以上のファイルからのレコード群を組み合わせるが,各々のファイル中
のレコード群は既に望ましい順序になっていなければならない。
E.1.2.2.1.1 整列
整列を行う多くの応用プログラムにおいては,整列ファイルの内容に対して何らかの特別な処理をする
ことが必要になる。特別な処理には,ファイル中の個々のレコードに対する追加,削除,作成,変更,編
集,その他の修正がある。このような特別の処理は,整列によってレコードを並べ替える前,後,又はそ
の両方で必要になる場合がある。COBOLの整列機能では,これらの手続き記述し,整列の前又は後を指
定して実行することができる。一つのCOBOLプログラムには整列処理が幾つあってもよく,各々の整列
処理に専用の入力手続き及び出力手続きがあってもよい。整列機能は,これらの手続きを自動的に指定さ
れた局面で実行する。
入力手続き内では,RELEASE文が整列ファイルにレコードを書き出す。すなわち,入力手続きが完了
534
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
した時点で,RELEASE文(WRITE文ではない)によって処理されたレコードの集まりが整列ファイルを
構成し,このファイルがSORT文でだけ使用可能になっている。SORT文が実行されると,整列ファイル
中のレコードの集まり全体がSORT文に指定したキーに従って並べ替えられる。整列ファイルの整列済み
レコードは,出力手続きの実行中にRETURN文によって使用可能になるか,又はGIVING指定に記述し
た一つ以上のファイルに自動的にレコードが書き出されることによって使用可能になる。
E.1.2.2.1.2 併合
応用プログラムによっては,併合されたファイルの内容に対して何らかの特別な処理をすることが必要
となることがある。特別な処理には,ファイル中の個々のレコードに対する追加,削除,作成,変更,編
集,その他の修正がある。COBOLの併合機能では,併合済みの出力が作成されるときに実行する出力手
続きを利用者が指定してもよい。併合済みレコードは,出力手続きの実行中にRETURN文によって,又は
GIVING指定によるファイルへの自動的なレコード書出しによって,併合ファイルから使用可能になる。
E.1.2.3 例外処理
どんな入出力動作でも,実行中に何らかの異常条件が発生して,動作の正常完了が妨げられることがあ
る。このような条件を実行時要素へ通知する手段には,FILE STATUS句に関連するデータ項目,例外宣言
手続き,例外関数,及び無条件文のある選択可能指定の4種類がある。
E.1.2.3.1 入出力状態
入出力状態(I-O status)とは,入出力動作の実行の状態を正確に指定する便宜上,この規格の中で用い
られる概念上の実体である。入出力状態の設定に影響を及ぼす文は,CLOSE文,DELETE文,OPEN文,
READ文,REWRITE文,START文,UNLOCK文及びWRITE文だけとする。ファイルの入出力状態の値
は,そのファイルに対する,ファイル管理記述項のFILE STATUS句に指定したデータ名を通じて,また
EXCEPTION-FILE関数又はEXCEPTION-FILE-N関数を通じて,実行時要素で使用可能となる。入出力状
態の値がこのデータ項目へ設定され,EXCEPTION-FILE関数及びEXCEPTION-FILE-N関数で使用可能に
なるのは,入出力文の実行中であって,その入出力文に関連する無条件文があればその実行の前,例外宣
言手続きがあればその実行の前となる。
E.1.2.3.2 例外宣言手続き
例外宣言手続き(USE AFTER EXCEPTION procedure)は,ファイルに対して指定されている場合に,入
出力動作が不成功になるような入力条件又は出力条件が発生するといつでも実行される。ただし,発生し
たのが無効キー条件でINVALID KEY指定があるとき,又は発生したのがファイル終了条件でAT END指
定があるときには,例外宣言手続きは実行されない。
E.1.2.3.3 例外関数
例外関数EXCEPTION-FILE又はEXCEPTION-FILE-Nは,例外宣言手続きの論理的範囲内の文の中で,
その例外宣言手続きの実行を引き起こした入出力動作の結果として生じる,入出力状態の値と,関連する
ファイル名とを決定するために参照してもよい。さらに,例外関数EXCEPTION-STATUSは,返却される
例外名(EC-I-O-AT-ENDなど)を決定するために参照してもよい。
E.1.2.3.4 選択可能指定
INVALID KEY指定を,DELETE文,READ文,REWRITE文,START文及びWRITE文に書いてもよい。
無効キー条件(invalid key)が起きるのは,要求されたキーがファイル中に存在しない場合(DELETE文,
READ文,START文),キーがファイル中に既に存在し重複が許されない場合(WRITE文),そしてキー
がファイル中に存在しないか又は直前に読まれたキーでない場合(REWRITE文)である。INVALID KEY
指定のある文の実行中に無効キー条件が発生すると,INVALID KEY指定に書かれた文が実行される。
535
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
AT END指定を,READ文に書いてもよい。ファイル終了(at end)条件が起きるのは順呼出しのファイ
ルにおいて,その次のレコードが存在しない場合,相対レコード番号の有効けた数が相対キーデータ項目
の大きさより大きい場合,又は不定(optional)ファイルが存在しない場合である。AT END指定のある文
の実行中にファイル終了条件が発生すると,AT END指定に書かれた文が実行される。
E.1.3 ファイル共用及びレコード施錠
ファイル共用及びレコード施錠は,複数の論理ファイルから同時呼出しされる物理ファイル中のデータ
の整合性を保証する方法を提供する。整合性が保証されるのは,その物理ファイルへの呼出しが全て,フ
ァイル共用及びレコード施錠の規約を適切に利用して行われた場合だけである。
ファイル共用(file sharing)とは,ある物理ファイルを異なる論理ファイルの間で共用する機能を提供
するものであって,これは,ファイル管理記述項にSHARING句を書くか,又はOPEN文にSHARING指
定を書くことで指定する。
レコード施錠(record locking)は,共用される物理ファイル中のレコード群への同時呼出しを制御する
機能を提供するものである。これは,ファイル管理記述項にLOCK MODE句を書くことで選択する。
ファイル共用及びレコード施錠の規則は,物理ファイルの共用を異なる実行単位の間で行う場合でも,
同一COBOL実行単位中にある異なる実行時要素の間で行う場合でも,同一COBOL実行時要素中にある
異なるファイル定義の間で行う場合でも,全て同じとする。
ファイル共用及びレコード施錠の処理方式は,COBOLの実行時要素と非COBOLの実行時要素の両方
にとって同時呼出しが管理されるような実装が推奨されている。しかしながら,この要求と仕様はCOBOL
仕様の適用範囲外である。この規格では,COBOLの文脈中でのファイル共用及びレコード施錠について
記述する。
コミット及びロールバックのようなトランザクション処理の機能は,この規格には含まれていない。
E.1.3.1 ファイル共用
ある物理ファイルを共用できるのは,その物理ファイルの存在する媒体が,その物理ファイルへの同時
呼出しを許している場合だけである。
ある特定の物理ファイルへの呼出しに対して,ファイル共用を選択するためには,論理ファイルを記述
するファイル管理記述項中に,又は論理ファイルを開くOPEN文中にSHARING句を書けばよい。OPEN
文に指定した共用モードは,ファイル管理記述項に指定した共用モードよりも優先する。許される共用の
種類と入出力の操作とは,OPEN文の入出力モードで更に規定される。
各々のOPEN文は,OPEN文自体に指定した共用モード又は入出力モードだけでなく,物理ファイルに
対して効果をもつ最も制約の強い共用モード及び入出力モードに基づいて,成功又は失敗となる。このと
き許される共用の種類は,論理ファイルを開閉する現在進行中の処理の共用モード及び入出力モードに基
づいて,動的に変化する。ある共用ファイルが既に開いている場合は,それ以降にそのファイルに対する
出力モードを指定したOPEN文は不成功となる。
オープン要求と共用モードとの詳細な相互連関の理解には,OPEN文に対する仕様[表20(現在開かれ
ている共用ファイルに対するOPENの可否)参照]を吟味するのがよい。次に簡略化した記述を示す。
− SHARING WITH NO OTHERは,排他的呼出しを確立する。別のどの論理ファイルからも,その物
理ファイルを開くことができない。この共用モードで論理ファイルを開く処理は,別の論理ファイ
ルがその物理ファイルを既に開いていれば,失敗することになる。
− SHARING WITH READ ONLYは,物理ファイルを,別の入力用論理ファイルが開いてもよい状態を
確立するが,それは別の論理ファイルの共用モードがこのOPEN文の共用及び入出力モードを許す
536
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
場合に限ってである。読取り専用共用モードでファイルを開く処理は,もし別の論理ファイルがそ
の物理ファイルをもっと制約の強い共用モード又は入出力モードで既に開いていれば,失敗するこ
とになる。正しい内容を反映したレコードを取り出すように同時呼出しを制御するには,レコード
施錠の機能を用いるのがよい。
− SHARING WITH ALL OTHERは,物理ファイルを共用モードREAD ONLY又は共用モードALL
OTHERの論理ファイルが開いてよい状態を確立する。同時呼出しは,更新用,検索用及び更新処
理中のレコードの検索用のいずれでもできる。更新を重ね書きしたり消失したりすることがなく,
正しい内容を反映したレコードを取り出すように同時呼出しを制御するには,レコード施錠の機能
を用いるのがよい。
以前のCOBOL規格との互換性のある振る舞いを許すために,既定解釈の共用モード(もしあれば)は,
実装者定義とする。
E.1.3.2 レコード施錠
レコード施錠は,ある共用される物理ファイル中の論理レコード群への同時呼出しを制御する機能を,
応用プログラム開発者に提供する。同時呼出しが起こり得るのは,同一の物理ファイルを二つ以上の論理
ファイルが開いている場合である。
物理ファイル中のレコード群の整合性を保証するため応用プログラムにとっては通常,更新又は削除の
処理中のレコード群への呼出しを制限する必要がある - もっともこれは応用プログラムの性質にもよる。
レコードへの呼出しを制限するための機構をレコード錠(record lock)と呼ぶ。
COBOLでは,レコード施錠の二つのモード,すなわち自動施錠(automatic locking)と手動施錠(manual
locking)とが提供されており,これを選択するためには,ファイル管理記述項にLOCK MODE句を書けば
よい。呼出し法と施錠モードとの組合せを,次に示す。
呼出し法
施錠モード
単一/複数レコード
順
自動又は手動
単一だけ
乱又は動的
自動又は手動
単一又は複数
SHARING WITH NO OTHER(排他的な共用)の指定がある場合,レコード施錠は該当せず,レコード
施錠を要求する構文は使用されていても無視される。
E.1.3.2.1 自動施錠
LOCK MODE AUTOMATICは,レコードの施錠に留意する管理元が実行時システムになることを示す。
自動施錠が有効な場合には,錠の獲得又は解放の行われる時点は,COBOL仕様で定義されるのであって,
応用プログラムで制御されるのではない。一方,同じ時点で,別の論理ファイルは,手動施錠又は自動施
錠を用いて,この物理ファイルを呼び出すことができる。
応用プログラムにとってはレコードへの同時呼出しを制御するのに自動施錠を用いるほうが手動施錠を
用いるより簡単であるが,それが全ての応用プログラムの要求に合致するとは限らない。
単一レコード又は複数レコードの自動施錠が選択できる。
単一レコード自動施錠を用いると,ある論理ファイルがある時点で保持する錠は1レコードに関する一
つだけとなる。READ文の実行が成功すると新たに読み込まれたレコードに関する錠が一つ確立する。
READ文,REWRITE文,WRITE文,DELETE文,UNLOCK文又はCLOSE文の実行によって,それ以前
に施錠されたレコードに関する錠が一つ解除される。
複数レコード自動施錠を用いると,新たに読み込まれたレコードは全て自動的に施錠される。また,あ
るレコードに対する錠は,そのレコードを削除するか,論理ファイルにUNLOCK文を実行するか,論理
537
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ファイルを閉じるかするまで持続する。
次に示す例では,ファイル管理段落に定義された論理ファイル (my-file) を説明しており,ここで物
理ファイル (accounts) は大容量記憶装置上に存在している。SHARING WITH READ ONLYは,物理フ
ァイルが,別の論理ファイルから読取り専用で開かれる限りは他と共用できることを示している。論理フ
ァイルmy-file自体が読取り専用と制限されるのではない。
FILE-CONTROL.
SELECT my-file ASSIGN TO accounts
…
SHARING WITH READ ONLY
LOCK MODE IS AUTOMATIC WITH LOCK ON MULTIPLE RECORDS.
単一レコード自動施錠を選択するには次のLOCK MODE句を指定する。
LOCK MODE IS AUTOMATIC
レコード錠の自動的な獲得と解除は,表E.1(レコード錠の獲得及び解除の要約)による。
E.1.3.2.2 手動施錠
LOCK MODE MANUALは,錠の獲得及び解放の有無とそれを行う時点とが,応用プログラムで完全に
制御されることを示す。ゆえにデータの整合性も応用プログラムで完全に制御される。手動施錠によって,
真に施錠を必要とするレコードだけを選択したり,都合のいい時点で錠を解除したり,融通が利くように
なる。手動施錠を使用するには,特定の物理ファイルへの呼出しを共用する全ての応用プログラムを注意
深く設計する必要がある。
応用プログラムは手動で,ある時点では単一レコードを,又はある時点では複数レコードを,施錠でき
る。
単一レコード手動施錠を用いると,各レコード錠の確立は入出力文にLOCK指定を書くことで行われ,
READ文,REWRITE文,WRITE文,DELETE文,UNLOCK文又はCLOSE文の次回の実行によって自動
的に解除される−これは単一レコードの自動施錠に対する解除の方法と同じである。
複数レコード手動施錠を用いると,各レコード錠は入出力文にLOCK指定を書くことによって確立され,
全ての錠は明示的に解除されるまで保持される。UNLOCK文又はCLOSE文の実行が成功すると,錠が全
て解除される。NO LOCK指定のある入出力文の実行が成功すると,その入出力文によって処理されたレ
コードに関する錠が一つ解除される。DELETE文の実行が成功すると削除されたレコードに関する錠が一
つ解除される。
入出力文には選択可能な指定がまだあり,通常は必要なくても特殊な状況では役に立つ動作を選べる。
READ ... ADVANCING ON LOCK :
*> 施錠されたレコードは読み飛ばして
*> その次の施錠のないレコードを,順次検索して取り出す。
READ ... IGNORING LOCK :
*> たとえ施錠されていても,そのレコードを取り出す。
次の例は,論理ファイル (my-file) を定義するファイル管理段落である。物理ファイル (accounts)
は大容量記憶装置上に存在すると仮定する。SHARING WITH ALL OTHERによって,この物理ファイルは,
別の論理ファイルと共用できるし,どの論理ファイルもレコードを更新できることを示している。
FILE-CONTROL.
SELECT my-file ASSIGN TO accounts
538
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
…
SHARING WITH ALL OTHER
LOCK MODE IS MANUAL WITH LOCK ON MULTIPLE RECORDS.
手動でのレコードの施錠及び解錠は,入出力文に関する選択可能指定,UNLOCK文及びCLOSE文によ
って制御される。これは,表E.1(レコード錠の獲得及び解除の要約)による。
表E.1−レコード錠の獲得及び解除の要約
入出力文
施錠モード
レコード錠の設定
同じ論理ファイルでの
錠が解除されるレコード
DELETE
自動−単一
なし
削除が成功したレコード(施錠があれば)
さもなければ,
以前に施錠されたあらゆるレコード
−複数
なし
削除したレコード(施錠があれば)
手動−単一
なし
削除が成功したレコード(施錠があれば)
さもなければ
以前に施錠されたあらゆるレコード
−複数
なし
削除したレコード(施錠があれば)
CLOSE
任意
なし
施錠された全てのレコード
自動−単一
見つけ出したレコードに
以前に施錠されたあらゆるレコード
READ
−複数
見つけ出したレコードに
なし
手動−単一
見つけ出したレコードに
(LOCK指定がある場合)
以前に施錠されたあらゆるレコード
−複数
見つけ出したレコードに
(LOCK指定がある場合)
見つけ出したレコード(施錠があれば
NO LOCK指定がある場合に)
OPEN
任意
なし
なし
REWRITE
自動−単一
なし
書き換えが成功したレコード(施錠があれば)
さもなければ
以前に施錠されたあらゆるレコード
−複数
なし
なし
手動−単一
書き換えたレコードに
(LOCK指定がある場合)
書き換えが成功したレコード(施錠があれば
ただしLOCK指定がない場合) 及び
以前に施錠されたあらゆるレコード
−複数
書き換えたレコードに
(LOCK指定がある場合)
書き換えたレコード(施錠があれば
NO LOCK指定がある場合に)
START
任意
なし
なし
自動−単一
なし
以前に施錠されたあらゆるレコード
WRITE
−複数
なし
なし
手動−単一
LOCK指定がある場合
以前に施錠されたあらゆるレコード
−複数
LOCK指定がある場合
なし
UNLOCK
自動−単一/複数
手動−単一/複数
どの施錠モードでも
施錠された全てのレコード
CLOSE文のLOCK指定は,レコード施錠と無関係である。
E.1.3.3 再試行
RETRY指定は,施錠されたファイル又はレコードを獲得するための待ちを指示する機能である。RETRY
指定は,秒単位の待ち時間又は操作を再試行する回数を指定できる。再試行の回数は数値でもよいし語
539
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
FOREVERでもよい。FOREVERの場合,何らかの外部要因でタスクが終了するか,又は施錠されていた
レコード若しくはファイルが使用可能になるか,いずれかの条件に変わるまで操作環境が再試行を試みる
ことを意味する。施錠状態が最後まで続いたとき又は施錠があるのにRETRY指定がないとき,操作環境
はファイル共用不整合条件又はレコード操作不整合条件の発生を,ファイル結合子に関連する入出力状態
に対応する値を設定して通知する。
E.2
表操作
表の形をしたデータは,事務データ処理の分野でも頻繁に用いられる。表を作ることは,同じレベル番
号をもち,同じ集団項目に従属するデータ項目を連続して記述しても可能ではあるが,この方法は次の二
つの理由によって不十分である。第一に,文書化という面からみて,各データ項目が均一であるというこ
とが,必ずしも明らかでない。第二に,実行時にならなければ表のどの要素を参照するか決まらないとき,
表の任意の要素を参照するのは困難である。
データ項目の表は,そのデータ記述項の中にOCCURS句を書いて定義する。この句は,その項目が反復
される回数を指定する。表要素の反復回数は,固定であってもよいし可変であってもよい。項目は表の一
要素とみなされ,その名前及びデータ記述はどの要素にも共通となる。これらの要素を全て集めたものが
表それ自体となる。
表要素のうち特定の要素を参照するための方法は唯一,表要素のデータ名,必要に応じて修飾語,その
後に要望する出現番号を指定することである。この出現番号を,添字と呼ぶ。
E.2.1 表の定義
表を定義するためには,表要素のデータ記述にOCCURS句を書く。そのようにして定義した表は,その
OCCURS句を記述した要素の全てを,その従属項目まで全て含めて,集めたものである。
例1では,表要素INDICATORのデータ記述,及びそうして定義した表の12番目の要素をMOVE文中
で参照する様子を示す。表の各要素は基本項目INDICATORである。表要素INDICATORは20個ある。し
かしながら,表を単位とする参照はできない。
例1
01 FULL-RECORD.
02 ANOTHER-ITEM
PIC X(10).
02 INDICATOR PIC XXX OCCURS 20 TIMES.
...
MOVE SPACES TO INDICATOR (12)
表全体を参照するには,ある集団項目の唯一の基本項目として表を定義する。例2では,例1と同じ表
を,今度は集団項目INDICATOR-TABLEの一部として定義して,その集団項目をMOVE文中で使用する
様子を示す。
例2
01 FULL-RECORD.
02 ANOTHER-ITEM
PIC X(10).
02 INDICATOR-TABLE.
03 INDICATOR
PIC XXX OCCURS 20 TIMES.
...
MOVE SPACES TO INDICATOR-TABLE
540
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
例3では,項目MONTHLY-REVENUESで定義した表を示す。それぞれの表要素は集団項目であり,二つ
の基本項目REV-SHOP-1とREV-SHOP-2とからなる。ここで,集団項目REVENUES-TABLEを参照する
と,表MONTHLY-REVENUES全体が参照される。
例3
01 REVENUES-TABLE.
02 MONTHLY-REVENUES OCCURS 12 TIMES.
03 REV-SHOP-1
PIC S9(8)V99.
03 REV-SHOP-2
PIC S9(8)V99.
例4では,二つの表が同じ集団項目の一部をなしていることを示す。ここで集団項目TABLESを参照す
ると,表MONTHLY-REVENUES全体と一緒に表MONTHLY-PROFITS全体が参照される。
例4
01 TABLES.
02 MONTHLY-REVENUES OCCURS 12 TIMES.
03 REV-SHOP-1
PIC S9(8)V99.
03 REV-SHOP-2
PIC S9(8)V99.
02 MONTHLY-PROFITS OCCURS 12 TIMES.
03 PRO-SHOP-1
PIC S9(8)V99.
03 PRO-SHOP-2
PIC S9(8)V99.
ある表を包含する集団項目のいずれかがその記述にまたOCCURS句をもつとき,その表は多次元であり,
さもなければ1次元である。これまでの例に示した表は全て1次元の表である。
例5では,2次元の表を示す。ここでMONTHLY-REVENUESの12個の反復はそれぞれが集団項目であり
基本項目の反復を100個ずつ包含している。
例5
01 A-TABLE.
02 MONTHLY-REVENUES OCCURS 12 TIMES.
03 REV-SHOP
PIC S9(8)V99 OCCURS 100 TIMES.
一般に,n次元の表を定義するためには,表要素のデータ記述,及びその要素を包含する (n ‒ 1) 個(レ
ベル)の集団項目の記述にOCCURS句を書く。
E.2.2 表の初期値
作業場所節及び局所記憶節における表要素の初期値は,次の方法のいずれかによって指定する。
1) 表は,全てが同一の集団項目に従属する一連の別々のデータ記述項と記述してもよい。この場合,各
データ記述項において,表要素を又は表要素の一部の値を指定すればよい。レコード及びそのレコー
ドの要素を定義するとき,必要に応じて任意のデータ記述句(USAGE,PICTUREなど)を用いて,
定義を完成させてもよい。表の階層構造は,REDEFINES記述項と,それに従属する記述項とによっ
て示される。このREDEFINE記述項に続く従属記述項は,OCCURS句によって反復されるが,VALUE
句を含んではならない。
2) 表の全ての次元には,その表の全体を定義している記述項にVALUE句を書くことによって初期値を
与えてもよい。それより低いレベルの記述項は,表の階層構造を表す。この低いレベルの記述項は
VALUE句を含んではならない。
3) VALUE句をTO指定付き又は指定なしで書くことによって選択した表要素に初期値を与えてもよい。
541
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
E.2.3 表項目の参照
利用者が表要素を又は表要素に関連付けられた条件名を参照するときは,SEARCH文又はSORT文で参
照する場合と,特定の組込み関数への引数として参照する場合とを除いて,常に表のどの出現を参照する
のかを指定しなければならない。1次元の表を参照するためには,要望する表要素の出現番号があれば十
分である。2次元以上の表を参照するためには,表のそれぞれの次元の出現番号が与えられなければなら
ない。例5で,MONTHLY-REVENUES (3) という参照は完全であるが,REV-SHOP (2) では不完全であ
り,それは REV-SHOPが添字二つを必要とするためである。正しくはREV-SHOP (5, 2) とするのであ
り,これはMONTHLY-REVENUESの5番目に含まれるREV-SHOPの2番目を指す。
E.2.4 添字付け
出現番号は,1個以上の添字をデータ名に附加することによって指定される。
添字を表現してもよいのは,整数結果を生成する算術式か,又は表に関連付けられた指標名とする。指
標名に続けて演算子の"+"又は"-"と整数とを書いて,それぞれの増減に用いてもよい。一つの添字並びの
中に算術式と指標名とを混用してもよい。
添字は,括弧で囲んで,表要素の名前の直後に書く。表要素を参照するには,その表の次元数と同じ数
だけの添字を付けなければならない。すなわち,添字はその表要素のデータ名を含む階層(そのデータ名
自体も階層に加える)にある各OCCURS句ごとに,一つずつ付けなければならない。
二つ以上の添字が必要なときは,その表の次元の低い方の添字から順に書く。多次元の表を,入れ子と
なった表が連続したものと考え,入れ子の最も外側にある表を最上位の表,最も内部にある表を最下位の
表とした場合,添字は最上位,中間及び最下位の順に左から右へ書く。
項目が表要素でも,表要素中の項目又は表要素に関連付けられた条件名でもない場合は,その項目を添
字を付けて参照してはならない。
指定できる最小の出現番号は1とする。指定できる最大の出現番号は,その項目のOCCURS句に指定し
た最大反復回数である。最大反復回数を超えた添字の値又はゼロ以下の添字の値は,例外宣言手続きで検
出してもよい。
E.2.4.1 指標名による添字付け
表引き及び特定の項目の操作を容易にするために,指標付けと呼ぶ技法が利用できる。この技法を使用
するためにプログラマは,データ記述項のOCCURS句を含む項目に対し,一つ以上の指標名を割り当てる。
指標名に関連付けられた指標は添字として働き,その値は指標名が関連付けた項目の出現番号に対応する。
INDEXED BY指定はOCCURS句の一部として指定することができ,それによって指標名が識別されそ
の表に関連付けられる。指標の定義は完全にハードウェアに依存しているので,それを記述するための独
立した記述項はない。実行時には,指標の内容はその指標が割り当てられた表の特定の次元の出現番号に
対応している。しかし,その対応の付け方は実装者が決める。実行時には,指標の初期値は不定であり,
用いる前に初期化しなければならない。指標の初期値は,VARYING指定のあるPERFORM文,ALL指定
のあるSEARCH文又はSET文で割り当てられる。
表要素又は表要素中の項目を参照するために,添字として算術式又はデータ名を用いても,その表に関
連付けられたどの指標も変更されない。
指標名は,その指標名を指定したINDEXED BY指定によって関連付けられた表を参照するためにだけ
用いてもよい。
表の形にまとめたデータは,頻繁に表引きの対象となる。SEARCH文は,逐次表引き及び非逐次表引き
(例えば,二分表引き)の機能を提供する。これによって,特定の条件を満足する表要素を探し,関連す
542
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
る指標の値がその表要素を指示するようにすることができる。
相対添字付けは,表要素又は表要素中の項目を参照するもう一つの方法である。表要素の名前に続けて
(指標名 +又は‒ 整数)の形の添字があるとき,参照に必要な出現番号は,参照の前に指標名を,SET文
によって整数値だけ増減した場合と同様に定められる。相対添字付けを用いても,指標の値の変更は引き
起こされない。
指標の値を指標データ項目に格納して,その値を実行時要素が知り得るようにしてもよい。指標データ
項目は,USAGE INDEX句を含むデータ記述項で記述する。指標の値は,SET文の実行で指標データ項目
に転記する。
E.2.4.2 添字付けの例
次のデータ定義によって,添字付けの例を示す。
02 XCOUNTER PIC S99.
02 YCOUNTER PIC S99.
02 BAKER OCCURS 20 TIMES INDEXED BY BAKER-INDEX ...
03 CHARLIE ...
03 DOG OCCURS 5 TIMES ...
04 EASY
88 MAX VALUE IS ...
04 FOX ...
05 GEORGE OCCURS 10 TIMES ...
06 HARRY ...
06 JIM ...
ここでBAKER及びCHARLIEを参照するには添字が一つだけ必要であり,DOG,EASY,MAX及びFOX
の参照には二つ,GEORGE,HARRY及びJIMには三つの添字が必要である。
最上位から最下位への順番は,例えば,次のように示すことができる。HARRY (18, 2, 7)は18番目
のBAKER中の,2番目のDOG中の,7番目のGEORGE中のHARRYを示す。
算術式と指標名を混用して,例えば,HARRY (BAKER-INDEX ‒ 3, 4, (XCOUNTER * 2) ‒ 3) の
ように用いてもよい。
単項演算子で始まる算術式を一意名の直後で使用するには,次のようにする。
DOG (XCOUNTER (- YCOUNTER))
内側の括弧の組を省略すると,この一意名の解釈は
DOG (XCOUNTER - YCOUNTER)
となるが,これでは添字が二つ必要な箇所に添字が一つしかなく,構文誤りとなる。
E.2.4.3 表引きの例
逐次表引き形式のSEARCH文にWHEN指定が二つある場合の動きを図E.1に示す。この図は実装方法
を規定するものではない。例文は次による。
SEARCH 表 AT END 無条件文1
WHEN 条件1
無条件文2
WHEN 条件2
無条件文3
END-SEARCH
543
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
開始
指標の設定値
> 最高出現番号 又は
≦ ゼロ
無条件文1
真(AT END)*
条件1
無条件文2
条件2
真
偽
偽
無条件文3
真
偽
*
*
一意名1用の指標名を
1増やす
指標名1(別の表の)
又は一意名2を1増やす
**
注*
これらの操作は,SEARCH文中に書かれたときだけ行われる。
** これらの無条件文がGO TO文で終了しない限り,SEARCH文の終わりに制御が移る。
図E.1−二つのWHEN指定をもつ書き方1のSEARCH文
E.2.5 表の整列
SORT文は,利用者の定義した順序に従って,表を整列するために使用できる。これはSEARCH ALLを
用いる表で,特に有用である。次の例で,この機能を説明する。
E.2.5.1 例1
データ項目tablのOCCURS句のキー定義を用いて,順に表を整列する単純な例である。elem-item2
が主キー(昇順)であり,elem-item1は副キー(降順)である。これでSEARCH ALL文を用いると,
全ての項目を要求した順序にできる。
01 group-item.
05 tabl OCCURS 10 TIMES INDEXED BY ind
ASCENDING elem-item2
DESCENDING elem-item1.
544
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
10 elem-item1 PIC X.
10 elem-item2 PIC X.
...
MOVE "l3n3m3p3o3x1x1x1x1x1" TO group-item.
SORT tabl.
SEARCH ALL tabl
AT END DISPLAY "Not Found"
WHEN ELEM-ITEM1 (IND) = "m"
IF (ELEM-ITEM1 (IND - 1) = "n")
AND (ELEM-ITEM1 (IND + 1) = "l")
DISPLAY "elem-item1 is descending order - 2nd key"
ELSE
DISPLAY "sort failed"
END-IF
END-SEARCH.
E.2.5.2 例2
表(データ項目tabl)の要素全体を用いて昇順に整列する,単純な整列の例である。
working-storage section.
01 group-item.
05 tabl OCCURS 10 TIMES.
10 elem-item1 PIC X.
10 elem-item2 PIC X.
...
procedure division.
...
SORT tabl ASCENDING .
IF tabl (1) ...
E.2.5.3 例3
指定されたキーデータ項目に従う整列の例である。OCCURS句のKEYに書かれていないが,主キーは
elem-item2である。副キーはelem-item3である。OCCURS句に書かれたASCENDINGよりも,SORT
文に書かれたDESCENDINGが優先されるため,elem-item3は,副キーである。
working-storage section.
01 group-item.
05 tabl OCCURS 10 TIMES
ASCENDING elem-item3
DESCENDING elem-item1.
10 elem-item1 PIC X.
10 elem-item2 PIC X.
10 elem-item3 PIC X.
...
545
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
procedure division.
...
SORT tabl DESCENDING elem-item2, elem-item3.
IF tabl (1) ...
E.2.5.4 例4
この例はtabl2の3番目の要素(tabl2(3))だけを整列する。修飾されたデータ項目(group2の
elem-item1)だけをキーとして用いる。通常の手続き部で参照するgroup2のelem-item1は,二つ
の次元の添字付け又は指標付けを必要とするが,この参照では,それら添字付け又は指標付けがない。同
様にtabl2は,通常一つの次元の添字付けを必要とするが,SORT文でデータ名2として添字付けするこ
とはできない。要素の整列を決定するために,t1-indの値を使用する。
working-storage section.
01 group-item.
05 tabl1 OCCURS 10 TIMES
INDEXED BY t1-ind, t2-ind.
10 tabl2 OCCURS 5 TIMES.
15 group1.
20 elem-item1 PIC X.
15 group2.
20 elem-item1 PIC 9.
...
procedure division.
...
SET t1-ind TO 3.
SORT tabl2 (t1-ind) DESCENDING elem-item1 OF group2.
IF groupl (3, 1) ...
E.3
主記憶領域の共用
この機能は,二つ以上のファイルが同じファイル領域及び入出力領域を共用することを許して,実行時
の主記憶空間を節約することを主なねらいとするものである。
選択可能なRECORD指定をSAME句に書くと,レコード領域だけが共用され,各ファイルの入出力領
域は独立したままである。この場合,レコード領域を共用している任意の数のファイルは同時に開かれて
いてもよい。これによって実行単位の実行速度が増すことがある。
例として,ファイルの保守を考える。プログラマが旧ファイルと新ファイルの両方に同じレコード領域
を割り当てたとすると,主記憶を節約するばかりでなく,各レコードの入力領域から出力領域への転記を
省くことができるので,結果としてかなりの実行時間を節約することになる。しかも,プログラマがこの
技法を用いれば,旧ファイルと新ファイルの両方に詳細なレコード定義を行う必要がないという,もう一
つの利点がある。すなわち,一方についてだけ完全なレコード定義を行い,他方では単にレベル01の記述
を行えばよい。これらのレコード領域は,実際には同じ領域になるので,一組の名前だけで,修飾を必要
とすることなく全ての処理要求を満たすことができる。
選択可能なRECORD指定をSAME句に書かないと,レコード領域だけでなく入出力領域も共用される。
546
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
その結果,同じ領域を共用するファイルのうち,ある時点で開いていてよいファイルは一つだけである。
この書き方は,一連のファイル群を実行単位中の異なる処理段階で使用するような応用プログラムのため
に設計された。この場合,プログラマはSAME句を用いて主記憶領域を節約してもよい。
E.4
翻訳群及び実行単位の構成及び連絡
データ処理に関する問題は,論理的に整合のとれた翻訳単位の組を開発することによって解決すること
が多い。これらの翻訳単位の組は,個別に翻訳してもよいし,一括で翻訳してもよい。コンパイラからの
出力物は実行に先立って,問題を解く完結した手段へと組み立てられる。COBOLの翻訳群及び実行単位
の構成は,大きな問題解決手段を,小さくて,より管理しやすく,独立にプログラミング及び妥当性確認
が可能な複数の部分へと分割する取り組み方を支援する。
E.4.1 翻訳群及び実行単位の構成
COBOLの環境においては,二つの段階が存在する。一つはソース段階であり,もう一つは実行段階で
ある。
E.4.1.1 ソース段階の構成
ソース段階において最も包括的な単位は翻訳群であって,これは一括してコンパイラに引き渡されるも
のの全てである。翻訳群の内容は,一連のソース単位を含む。
ソース単位の種類としては,クラス定義,ファクトリ定義,関数定義,関数原型,インタフェース定義,
メソッド定義,オブジェクト定義,プログラム定義及びプログラム原型がある。ソース単位はこの規格で
定めたCOBOL文の集合であって,見出し部と,その後へ必要に応じて環境部,データ部,及び手続き部
が続く。
ソース要素とは,あるソース単位からその内部の入れ子のソース単位を除いた部分を参照するために用
いられる用語である。
それ自体が他のソース単位に含まれないソース単位のことを,翻訳単位と呼ぶ。翻訳単位はコンパイラ
によって実行時モジュールへと翻訳され,それだけで又は他の実行時モジュールとまとまって,実行可能
となる。一般に,他のソース単位に含まれているソース単位が実行時モジュールに変換されることはない。
なぜなら,この規格では,他のソース単位に含まれているソース単位がそれを含むソース単位中のデータ
を参照することを,明示的に許しているからである。
関数・メソッド・プログラムの手続き部は,二つの種類の手続きの並びで構成される。宣言手続きは,
通常,宣言部分と呼び,実行時に特別の条件が発生したときだけ実行される手続きである。非宣言手続き
は,正常な制御の流れに従って実行される手続きである。宣言部分は他の非宣言手続きを含んでもよいが,
それらは,それらを含んでいる宣言部分が実行されるときだけ実行される。非宣言手続きは,他の非宣言
手続きを含んでもよいが,宣言部分を含んではならない。宣言手続きも非宣言手続きも,プログラムを含
むことはできない。つまり,COBOLの用語において,手続きとプログラムは,同義語ではない。
クラス,ファクトリ,インタフェース,メソッド及びオブジェクトに関しての,これ以上の議論は,E.17
(オブジェクト指向の概念)で説明する。
図E.2(翻訳群の構造の例)において,翻訳群の構造を説明する。ソース要素は全てソース単位でもあ
ることに注意。例示中には,一部だけを示してある。
547
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
*> 翻訳群の始まり
*> 翻訳単位 F-1 の始まり
*> ソース単位 F-1の始まり
FUNCTION-ID. F-1.
ソース要素の始まり
...
END FUNCTION F-1.
ソース要素の終わり
*> ソース単位 F-1の終わり
*> 翻訳単位 F-1 の終わり
*> 翻訳単位 P-1 の始まり
*> ソース単位 P-1の始まり
PROGRAM-ID. P-1.
...
PROGRAM-ID. P-1-1.
ソース要素の始まり
...
END PROGRAM P-1-1.
ソース要素の終わり
*> ソース単位 P-1-2の始まり
PROGRAM-ID. P-1-2.
...
PROGRAM-ID. P-1-2-1. ソース要素の始まり
...
END PROGRAM P-1-2-1. ソース要素の終わり
PROGRAM-ID. P-1-2-2. ソース要素の始まり
...
END PROGRAM P-1-2-2. ソース要素の終わり
END PROGRAM P-1-2.
*> ソース単位 P-1-2の終わり
END PROGRAM P-1.
*> ソース単位 P-1の終わり
*> 翻訳単位 P-1 の終わり
*> 翻訳単位 C-1 の始まり
*> ソース単位 C-1の始まり
CLASS-ID. C-1.
...
*> ソース単位 の始まり
FACTORY.
...
METHOD-ID. OM-1.
ソース要素の始まり
...
END METHOD OM-1.
ソース要素の終わり
END FACTORY.
*> ソース単位 の終わり
*> ソース単位 の始まり
OBJECT.
...
METHOD-ID. IM-1.
ソース要素の始まり
...
END METHOD IM-1.
ソース要素の終わり
METHOD-ID. IM-2.
ソース要素の始まり
...
END METHOD IM-2.
ソース要素の終わり
END OBJECT.
*> ソース単位 の終わり
END CLASS C-1.
*> ソース単位 C-1の終わり
*> 翻訳単位 C-1 の終わり
*> 翻訳群の終わり
図E.2−翻訳群の構造の例
図E.3(翻訳群及び実行単位の構造)は,一例を挙げて,翻訳群の構成部分とそれに対応する実行時の
548
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
実体との間の関係を図式的に示したものである。図では,同一の翻訳群中の複数個の翻訳単位から生成さ
れる複数個の実行時モジュールが同一の実行単位の一部である必要はなく,同一の実行単位中の複数個の
実行時モジュールが同一の翻訳群中の翻訳単位から生成される必要もないことも示している。
P-1-2-2
P-1-2-1
P-1-2
P-1-1
P-1
ソース要素
ソース単位
翻訳群
凡例:
翻訳単位
実行単位
実行時要素
実行時モジュール
別の実行単位へ
別の実行単位へ
別の翻訳群から
別の翻訳群から
図E.3−翻訳群及び実行単位の構造
E.4.1.2 実行段階の構成
実行段階で最も包括的な構成単位は,実行単位である。一つの実行単位は,実行時モジュールを一つ以
上,実行単位の実行に必要なその他の資源とともに内包する。
実行時モジュールとは,翻訳単位を翻訳した結果の生成物である。各々の実行時モジュールは実行時要
素を一つ以上,これらの実行時モジュールの実行に必要なその他の資源とともに内包する。
実行時要素とは,各々の関数・メソッド・プログラムを翻訳した結果の生成物である。
549
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
E.4.1.3 例題
これらの概念の幾つかに関する例を,次の翻訳群として示す。
FUNCTION-ID. factorial.
DATA DIVISION.
LINKAGE SECTION.
01 parm1
BINARY-LONG.
01 fact
SAME AS parm1.
PROCEDURE DIVISION USING parm1 RETURNING fact.
IF parm1 = 0
COMPUTE fact = 1
ELSE
COMPUTE fact = parm1 * factorial (parm1 - 1)
END-IF
EXIT FUNCTION.
END FUNCTION factorial.
PROGRAM-ID. program-1.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
REPOSITORY.
FUNCTION factorial.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 i BINARY-LONG.
PROCEDURE DIVISION.
COMPUTE i = factorial (10)
...
END PROGRAM program-1.
PROGRAM-ID. program-2.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
REPOSITORY.
FUNCTION factorial.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 i BINARY-LONG.
01 global-item PIC X(30) GLOBAL VALUE "The factorial is: "
PROCEDURE DIVISION.
COMPUTE i = factorial (11)
CALL display-it USING i
...
PROGRAM-ID. display-it.
LINKAGE SECTION.
01 n
BINARY-LONG.
PROCEDURE DIVISION USING n.
DISPLAY global-item, n
END PROGRAM display-it.
END PROGRAM program-2.
この翻訳群は,三つの翻訳単位からなっている。関数factorial,プログラムprogram-1,及びプロ
グラムprogram-2である。翻訳単位は各々,ソース単位でもある。ソース単位program-2の中には,
別のソース単位であるプログラムdisplay-itが含まれている。これら四つのソース単位は各々,ソース
要素でもある。ソース要素とソース単位との相違は,ソース要素program-2には入れ子のプログラムが
550
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
含まれないという点である。
これら三つの翻訳単位からそれぞれ,一つずつ個別な実行時モジュールがコンパイラによって生成され
る。主としてリンケージエディタを用いて,1回又は複数の翻訳から得られた実行時モジュール群を組み
合わせ,1個の実行単位が作られる。
関数factorial用の実行時モジュールの中身は,1個の実行時要素,つまり関数factorialである。
プログラムprogram-1用の実行時モジュールの中身は,1個の実行時要素である。プログラムprogram-2
用の実行時モジュールの中身は2個の実行時要素であり,一つはprogram-2用で一つはdisplay-it用
である。
この例題では,利用者定義関数のfactorialが組込み関数のfactorialを上書きする方法を示して
いる。もしリポジトリ段落にFUNCTION factorial INTRINSICの指定があった場合,コンパイラは組
込み関数のfactorialを使用しただろう。しかし,この例題ではINTRINSIC指定がないので,活性化
される関数は利用者定義関数のほうである。
E.4.2 再帰プログラム及び初期化プログラム
初期のCOBOLプログラムでは,データは,常にその直前使用状態であった。また,活性状態にあるプ
ログラムを呼び出すことは禁止していた。初期化プログラム及び再帰プログラムは,呼出しのたびにデー
タを初期化でき,再帰プログラムは,活性状態でもプログラムを呼び出すことができる。関数及びメソッ
ドは,常に再帰的である。
初期化プログラムとは,そのプログラムが呼び出される場合常に,作業場所節の内部データ項目及び内
部ファイル結合子がその初期状態に設定されるものである。データ項目及びファイル連結子のうち外部と
宣言されたものは,その直前使用状態のままとなる。初期化プログラムから(EXIT PROGRAM又は
GOBACKで)退出するとき,それが内包しているプログラムは全て(その各々に対しCANCEL文が実行
されたかのように)取り消されて,あらゆる内部ファイル結合子は閉じられる。この種のプログラムが最
もよく用いられるのは,ある呼出しから次の呼出しまでデータをそのままにしておく必要がない場合であ
る。特定のデータをそのままにしておくには,外部データ項目又は外部ファイル結合子を使用すればよい。
初期化プログラムの多くの実装方式では,作業場所は,空間を保持できるスタック上に割り付けられるが,
これはプログラム終了時になくなってしまうからである。
再帰的な関数・メソッド・プログラムは,それが活性状態にある場合であっても呼び出すことができる
ものである。例えば,プログラムAがBを呼び出して,そのBがまたAを呼び出すことができる。又は,
AがAを呼び出すこともできるが,これはE.4.1.3の例題において関数factorialが自分自身を呼び出
す説明と同様である。特徴的なことに,再帰プログラム内では局所記憶節が指定されて,定義されるデー
タはプログラム呼出しのたびに初期化される(これらのデータを自動データと呼ぶ)。作業場所データは静
的であり,それゆえ呼出しのたびに直前使用状態に設定される。このことは予期せぬ結果を招きかねない
ため,プログラマは注意することが望ましい。例えば,プログラムの再帰実行中に作業場所中のカウンタ
xyzに加算したとすると,別の再帰実行へと戻ったとき,それは以前より一つ増えている。これを利用し
たい場合も避けたい場合もあるだろう。
E.4.3 データ及びファイルの参照方法
ある種のデータ項目は,その値などの属性が,実行単位中の実行時要素のどこに表現されているかを決
定する上で,記憶の概念と関連付けられることがある。同様にファイル結合子は,ファイルの位置決め及
び状態に関する情報をはじめとするファイル処理の属性が,実行単位の実行時要素のどこで表現されてい
るかを決定する上で,記憶の概念と関連付けられる。
551
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
E.4.3.1 名前
データ名は,データ項目に名前を付ける。ファイル名は,ファイル結合子に名前を付ける。これらの名
前は,大域か局所かのいずれかに分類される。
大域名の確立は,ファイル記述項又はデータ記述項にGLOBAL句を書くことによって行われる。こう
した大域名は,それを宣言しているソース要素中,及びそのソース要素に直接又は間接に含まれるあらゆ
るソース要素中で,使用できる。ある大域名を使用した参照は全て,宣言しているソース要素中でその名
前とGLOBAL句とで規定された,ファイル記述項及びデータ記述項を参照する。
これに対して,局所名は,その局所名が宣言されているプログラム中から,その名前に関連付けられて
いる対象を参照するためにだけ用いてもよい。常に大域である名前もあり,常に局所である名前もある。
また,その名前が宣言されたプログラム中の指定によって局所か大域かが決まる名前もある。
GLOBAL句を指定したデータ名,ファイル名又は報告名は,大域名である。大域名に従属する全てのデ
ータ名は,大域名である。大域名に関連する全ての条件名は,大域名である。しかし,規則によっては,
データ記述項,ファイル記述項又はレコード記述項に対するGLOBAL句の指定が禁止される場合もある。
ファイル名が大域となるのは,それに対するファイル記述項にGLOBAL句を指定した場合とする。
データ名,ファイル名,又はデータ記述項で宣言した条件名が,大域でない場合は,局所名である。
E.4.3.2 項目
データ項目が使用可能であるためには,通常,データが一定の表現で記録されていることが必要である。
ファイル結合子には,通常,ファイルに関する一定の情報が記録されていなければならない。データ項目
又はファイル結合子に関連する記憶域は,その項目を宣言した実行時要素にとって外部又は内部のいずれ
かとする。
E.4.3.2.1 項目の種類
E.4.3.2.1.1 作業場所レコード
作業場所レコードは,作業場所節のレコード記述項を満足するのに十分な領域を割り当てたものである。
各々のレコード記述項は,異なる項目を宣言する。再命名及び再定義は,新しい項目を宣言しない。それ
らは,既に宣言されている項目に対して,別の集団分け又は記述の仕方を提供する。
E.4.3.2.1.2 ファイル結合子
ファイル結合子は,ファイルに関する情報を含む記憶領域で,ファイル名と物理ファイルの間及びファ
イル名とそれに関連するレコード領域の間を結び付けるために使用する。
E.4.3.2.1.3 ファイルのレコード領域
レコード記憶域は,ファイル節における特定のレコード記述項によって宣言されるものではない。関連
するあらゆるレコード記述項を満足させることができる最大の領域である。これらの記述項は,固定長と
可変長,いずれのレコードを記述するものでもよい。この規格では,次の二つの場合に,レコード記述項
は関連付けられるという。第1の場合は,複数のレコード記述項が同じファイル記述項に従属している場
合であり,それらは常に関連付けられる。第2の場合は,複数のレコード記述項が異なるファイル記述項
に従属し,これらのファイル記述項が同じSAME RECORD AREA句で参照されている場合である。この場
合,それら複数のレコード記述項は関連付けられる。全ての関連付けられたレコード記述項は,同じ記憶
領域の再定義である。
E.4.3.2.1.4 画面レコード
画面レコードは,一つ以上の画面記述項が互いに集められた概念上の実体である。各画面記述項は,異
なる画面項目で宣言される。画面レコードに記憶域は割り付けられない。
552
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
画面レコードは,二次元の枠組みを提供する。その中での画面項目の位置付けは,お互いを基準にした
相対位置で表されることも,端末ディスプレイの1行目の1列目からの相対位置で表されることもある。
画面レコード中の画面項目の位置付けは,画面レコードの参照方法に影響を受けない。表示する項目が,
画面レコード全体なのかその一部にすぎないのかには関係なく,端末画面上の同じ位置に現れる。
E.4.3.2.1.5 その他の項目
COBOLの関数及びプログラムで宣言される,その他の項目には,例えば,通信記述項,報告書記述項,
並びに通信節,連絡節及び報告書節に関連する制御情報がある。
E.4.3.2.2 項目の属性
データ項目又はファイル結合子は,外部項目又は内部項目のいずれかとする。外部項目に関連する記憶
領域は,実行単位の特定の実行時要素にではなく,実行単位に関連付けられる。外部項目は,その項目を
記述するどの実行時要素から参照されてもよい。異なる実行時要素からある外部項目を別々の記述項によ
って参照しても,常に同一の項目を参照することになる。名前の大文字/小文字を区別する必要がある場
合,又はCOBOLの名前の形成規則に従っていない場合,その環境において外部名を指定するために,定
数を用いてもよい。
ある項目に関連する記憶領域が,その項目を記述している実行時要素にだけ関連する場合,その項目は
内部であるという。内部項目は,自動属性のことも初期化属性のことも静的属性のこともある。ある項目
が自動属性又は初期化属性のとき,それを指定した実行時要素を起動するたびに毎回初期化される。ある
項目が静的属性のとき,次の起動までに再初期化の原因となるCANCEL文がない限り,項目の内容は保持
される。項目が自動属性か又は静的属性かの決定は,その項目を記述する節による。データ項目が初期化
プログラムの作業場所節又はファイル節において定義された場合,それは初期化項目である。
外部項目と内部項目は,大域名又は局所名のいずれかをもつ。
E.4.3.2.2.1 作業場所レコード
作業場所節で記述されるレコードは,そのデータ記述項にEXTERNAL句を書くと外部属性を与えられ
る。外部レコードを記述する記述項に従属する任意のデータ項目も,やはり外部属性をもつ。レコード又
はデータ項目が外部属性をもたなければ,それは,それを記述する実行時要素の内部データの一部である。
E.4.3.2.2.2 ファイル結合子
ファイル結合子は,関連するファイル記述項にEXTERNAL句を書くと外部属性が与えられる。ファイ
ル結合子が外部属性をもたなければ,それは,関連するファイル名が記述されている実行時要素に対して
内部となる。
E.4.3.2.2.3 その他の項目
実行時要素の連絡節,通信節,報告節又は画面節で記述されたレコード,それに従属するデータ項目及
び関連する様々な制御情報は,そのデータを記述している実行時要素に対して常に内部であるとみなされ
る。連絡節に記述されたレコードに対しては,他の実行時要素で参照されるデータ項目と関連付ける特殊
な処理が行われる[E.4.5.2(引数の受渡し)参照]。
E.4.3.3 名前の解決
他のプログラムに含まれるプログラムが,データ項目,条件及びファイル結合子に同じ名前を割り当て
ている場合に適用する規則がある。例えば,プログラムAがプログラムBを含み,プログラムBがプロ
グラムCを含む状況で,さらに,プログラムCを除いてプログラムA及びBには,データ部の中に
DUPLICATE-NAMEと命名された条件名,データ名又はファイル名の記述がある場合を考える。
1) いずれか一方のDUPLICATE-NAMEが内部属性をもつ項目を参照する場合,名前は同じであるが,二
553
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
つの異なる項目が存在する。両方のDUPLICATE-NAMEが外部属性をもつ項目を参照する場合,ただ
一つの項目が存在する。
2) プログラムAがDUPLICATE-NAMEを参照する場合,プログラムAが宣言した項目を常に参照する。
プログラムBがDUPLICATE-NAMEを参照する場合,プログラムBが宣言した項目を常に参照する。
3) プログラムAでもプログラムBでもDUPLICATE-NAMEが局所である場合,プログラムCがその名
前を参照することはできない。
4) プログラムB中のDUPLICATE-NAMEが大域名の場合は,プログラムA中のDUPLICATE-NAMEが
大域名か否かに関係なく,プログラムCはプログラムB中のDUPLICATE-NAMEで参照される項目
を参照してもよい。
5) DUPLICATE-NAMEが,プログラムA中では大域名であるが,プログラムB中では局所である場合,
プログラムCでのDUPLICATE-NAMEへの参照は,プログラムAで宣言された名前で参照される項
目である。
E.4.4 プログラムの属性
実行単位の一部を構成するCOBOLプログラムは,共通属性,初期化属性及び再帰属性をもたない場合
も,一つ以上もつ場合もある。
E.4.4.1 共通プログラム
共通プログラムは,別のプログラムに直接含まれているが,その“別のプログラム”に直接又は間接に
含まれている全てのプログラムから,呼び出してもよいものをいう。共通属性は,プログラムの見出し部
にCOMMON指定をすることによって得られる。COMMON指定によって,あるプログラムに含まれる全
てのプログラムによって用いられる副プログラムを書くことができる。
E.4.4.2 初期化プログラム
初期化プログラムは,プログラムが呼び出されたときに,プログラム状態が初期化される。すなわち,
プログラムの状態は,実行単位でのそのプログラムが最初に呼び出されたときと常に同じとなる。初期化
属性は,プログラムの見出し部にINITIAL句を書くことで与えられる。
E.4.4.3 再帰プログラム
再帰プログラムは,それが起動されているときに更に呼び出してもよいものである。再帰プログラムは
自分自身を呼び出してもよいし,再帰プログラムを呼び出したプログラムが制御の戻る前に,再びそれを
呼び出してもよい。再帰属性は,プログラムの見出し部にRECURSIVE句を書くことで与えられる。
E.4.5 プログラム間の連絡
データ処理の問題の解決手段が二つ以上の実行時要素に分割されるとき,それらの実行時要素は,互い
に連絡が可能になる。この連絡は,4種類の形態をとり得る(i)制御の移行,(ii)パラメタの受渡し,(iii)
共通データの参照,(iv)共通ファイルの参照,である。これらプログラム間連絡の4形態は,連絡し合う
実行時要素が別々に翻訳される場合及び連絡し合うプログラムの一つが他のプログラムに含まれる場合,
の両方に提供される(iii)と(iv)がもつ詳細な機構と(i)と(ii)がもつ詳細な機構とは異なっている。
例えば,別のプログラムに含まれているプログラムは,外側のプログラム中の大域名をもつあらゆるデー
タ名又はファイル名を参照してもよい[E.4.3.1(名前)参照]。
E.4.5.1 制御の移行
プログラムへの制御の移行は,CALL文によって起きる。関数への制御の移行は,関数一意名の参照に
よって起きる。メソッドへの制御の移行は,INVOKE文又は文内メソッド呼出しによって起きる。制御が
そこから移行する実行時要素のことを,活性化する側の実行時要素(activating runtime element)と呼び,
554
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
制御がそこへ移行する実行時要素のことを,活性化される側の実行時要素(activated runtime element)と呼
ぶ。
E.4.5.1.1 プログラムへの制御の移行
CALL文は,実行単位中のプログラムに制御を移し得る手段を提供する。呼び出されたプログラム自体
の中に,CALL文のようにまた別の実行時要素へ制御を移す文があってもよい。
呼び出されたプログラムへ制御が移るとき,呼び出されたプログラムの非宣言部分の最初の文から実行
が始まり,それに続く文が順次実行される。制御がSTOP文に到達すると,これは実行単位の論理的な終
わりを通知する。制御がEXIT PROGRAM文に到達すると,これは呼び出されたプログラムの論理的な終
わりを通知し,実行時要素を呼び出したCALL文の次に実行可能な文に制御が戻る。GOBACK文に制御
が到達してそのプログラムが既に呼び出されていると,EXIT PROGRAMと同様に制御が続く。さもなけ
れば,STOP文と同様に制御が続く。このように,EXIT PROGRAM文はそれが現れたプログラムだけの実
行を終了させ,STOP文は実行単位の実行を終了させる。GOBACK文は制御の移行元が別なプログラムで
あろうと又はオペレーティングシステムであろうと,そこへ制御を戻す。
CALL文は,COBOLで書かれていないプログラムを呼び出すために用いてもよいが,その場合の復帰機
構と,プログラム間のデータ連絡は,この規格では規定されない。また,COBOLで書かれていない実行
時要素からCOBOLプログラムを呼び出してもよいが,呼出しの機構と,プログラム間のデータ連絡とは,
この規格では規定されない。いずれの場合も,COBOLプログラムに適用するパラメタ受渡し機構の部分
だけを,この規格では規定する。
E.4.5.1.1.1 プログラムの名前
プログラムを呼び出すために,CALL文はプログラムの名前又はそのアドレスを識別する。別のプログ
ラムに直接又は間接に含まれるプログラムに付けられた名前は,その“別のプログラム”の中で一意でな
ければならない。
実行単位を構成する最も外側のプログラムの各々に付けられた名前は,実行単位中で一意でなければな
らない。名前の大文字と小文字との区別のある環境,又はCOBOLの名前には許されない文字を含む環境
では,外部に通知された名前を指定するために,リポジトリ段落中で定数を用いてもよい。
E.4.5.1.1.2 CALL文の有効範囲
どの実行時要素でも,実行単位の中の最も外側のプログラムを呼び出すことができる。再帰プログラム
である場合,自分自身を呼び出すことができる。
さらに,プログラムは,次を呼び出してもよい。
1) プログラムは,それを直接又は間接に含んでいるあるプログラム中に直接に含まれていて,共通属性
をもつ,任意のプログラムを呼び出してもよい。ただし,共通属性をもつ再帰でないプログラム内に
呼び出す側のプログラム自体が含まれていれば,この限りでない。
2) プログラムは,次のいずれかが真である場合,かつ,その場合に限って,共通属性をもたず翻訳単位
のプログラムでもないプログラムを呼び出してもよい。
a) 呼出し対象プログラムが,呼び出す側のプログラムに直接に含まれている。
b) 呼出し対象プログラムは,呼び出す側のプログラムに直接又は間接に含まれている再帰プログラム
である。
呼び出す側のプログラムは,いずれかのプログラム属性をもたなくても,一つ以上もっていてもよい。
翻訳単位のプログラムであっても,そうでなくてもよい。また,他のプログラムに含まれていても,他の
プログラムを含んでいてもよい。
555
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
E.4.5.1.1.3 プログラム名の有効範囲
実行単位中で,ある最も外側のプログラムが,別の最も外側のプログラムに指定したのと同一の名前を
もつプログラムを含んでいる場合,特定の規則を適用する。
プログラムAがプログラムBとプログラムDUPLICATE-NAMEとを含み,プログラムBがプログラム
BBを含み,プログラムDUPLICATE-NAMEがプログラムDDを含む場合を考える。
さらに,DUPLICATE-NAMEは,ある最も外側の名前でもあるとする。
1) プログラムA中の他のプログラムに含まれない部分がプログラムDUPLICATE-NAMEを呼び出す場合,
プログラムAに含まれているほうが呼び出される。
2) プログラムB又はプログラムBBがプログラムDUPLICATE-NAMEを呼び出す場合。
a) プログラムAに含まれるプログラムDUPLICATE-NAMEが共通属性をもつとき,それが呼び出され
る。
b) プログラムAに含まれるプログラムDUPLICATE-NAMEが共通属性をもたなければ,最も外側のプ
ログラムのほうが呼び出される。
3) プログラムDD又はプログラムAに含まれるプログラムDUPLICATE-NAMEが,プログラム
DUPLICATE-NAMEを呼び出す場合,最も外側のプログラムであるほうが呼び出される。ただし,
DUPLICATE-NAMEが再帰プログラムである場合はこの限りでない。
4) 実行単位中の最も外側のプログラム又はそのプログラムに含まれるプログラムが,プログラム
DUPLICATE-NAMEを呼び出す場合,最も外側のプログラムDUPLICATE-NAMEが呼び出される。
E.4.5.1.2 関数への制御の移行
関数への制御の移行は,それが関数一意名として参照されたときに起きる。
関数へ制御が移るとき,活性化された関数の非宣言部分の最初の文から実行が始まり,それに続く文が
順次実行される。制御がSTOP文に到達すると,これは実行単位の論理的な終わりを通知する。制御がEXIT
FUNCTION文又はGOBACK文に到達すると,これはその関数だけの論理的な終わりを通知し,この関数
を活性化した文に制御は戻る。このようにEXIT FUNCTION文又はGOBACK文はそれが現れた関数の実
行だけを終了させるのに対し,STOP文は実行単位の実行を終了させる。
COBOLで書かれていない関数を活性化してもよいが,その場合の復帰機構と,プログラム間のデータ
連絡は,この規格では規定されない。また,COBOLで書かれていない実行時要素からCOBOLの関数を
起動してもよいが,呼出しの機構と,プログラム間のデータ連絡は,この規格では規定されない。いずれ
の場合も,COBOLに適用するパラメタ受渡し機構の部分だけを,この規格では規定する。
E.4.5.1.2.1 関数の名前
関数を活性化するために,関数一意名は関数の名前を識別する。名前の大文字/小文字を区別のある環
境,又はCOBOLの名前には許されない文字を含む環境では,外部に通知された名前を指定するために,
リポジトリ段落中で定数を用いてもよい。
実行単位中を構成する関数の名前は,全て一意でなければならない。
E.4.5.1.2.2 関数一意名の有効範囲
どの実行時要素でも,実行単位の中の任意の関数を活性化してもよい。関数は全て再帰属性をもつ。関
数は,自分自身を活性化してもよく,さらに,活性状態の間に活性化してもよい。
E.4.5.1.3 メソッドへの制御の移行
メソッドへの制御の移行は,INVOKE文又は文内メソッド呼出しによって起きる。
メソッドへ制御が移るとき,活性化されたメソッドの非宣言部分の最初の文から実行が始まり,それに
556
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
続く文が順次実行される。制御がSTOP文に到達すると,これは実行単位の論理的な終わりを通知する。
制御がEXIT METHOD文又はGOBACK文に到達すると,これはそのメソッドだけの論理的な終わりを通
知し,このメソッドを活性化した文に制御が戻る。このようにEXIT METHOD文又はGOBACK文はそれ
が現れた関数の実行だけを終了させるのに対し,STOP文は実行単位の実行を終了させる。
COBOLで書かれていないメソッドを活性化してもよいが,その場合の復帰の機構と,プログラム間の
データ連絡は,この規格では規定されない。また,COBOLで書かれていない実行時要素からCOBOLの
メソッドを活性化してもよいが,活性化の機構と,プログラム間のデータ連絡は,この規格では規定され
ない。いずれの場合も,COBOLに適用するパラメタ受渡し機構の部分だけを,この規格では規定する。
メソッドは全て再帰属性をもつ。メソッドは,自分自身を呼び出してもよいし,活性状態である間に再
び呼び出されてもよい。
メソッドを呼び出すことに関しての,これ以上の詳細は,E.17(オブジェクト指向の概念)で説明する。
E.4.5.2 引数の受渡し
関数,プログラム又はメソッドは活性化され,活性化させる側の実行時要素に代わってデータ処理問題
の特定の部分を実行する。多くの場合,活性化する側の実行時要素は,問題解決の部分が必要とする特定
のデータの値を,活性化される実行時要素中で使用可能にする必要がある。これらのデータの値を使用可
能にする一つの方法は,ここで説明する引数の受渡しによるものである。もう一つの方法は,データを共
用する方法である[E.4.5.3(データの共用)参照]。引数としてデータの値が渡されることは,データが共
用されることと同じとも考えられる。したがって,この二つの方法は互いに無関係ではない。
E.4.5.2.1 引数の識別
他の実行時要素を活性化する実行時要素によって引数として受け渡されるデータ項目は,活性化される
側の実行時要素から参照が可能である。活性化される側の実行時要素の連絡節には,これらの引数の各々
の記述を書く。これを,仮パラメタと呼ぶ。
活性化する側の実行時要素を記述しているソース要素中では,受け渡される引数の値は,CALL文,
INVOKE文,文内メソッド呼出し又は関数一意名に,一意名,定数,算術式又はブール式の形態で引数を
列挙することで特定される。活性化される側の実行時要素を記述しているソース要素中では,要求される
仮パラメタの識別は,そのソース単位の手続き部見出しに仮パラメタを列挙することで行われる。これら
の引数の並びは,各々のソース単位で列挙した順に,実行時に対応付けを行う。つまり,第一の引数は第
一の仮パラメタに,第二の引数は第二の仮パラメタに,といった具合に対応が付く。例えば,呼び出され
るプログラムの中に次のコードを書き,
PROGRAM-ID. EXAMPLE.
PROCEDURE DIVISION USING NUM, PCODE, COST.
このプログラムを,次の文の実行によって呼び出すとする。
CALL "EXAMPLE" USING NBR, PTYPE, PRICE.
これによって引数の対応付けは,次のとおりとなる。
呼び出される側(EXAMPLE)
呼び出す側の実行時実体
NUM
NBR
PCODE
PTYPE
COST
PRICE
対応付けは,各データ名の位置によって行われるのであり,名前によるのではない。
557
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
E.4.5.2.2 引数渡しの機構
引数渡しの機構には,3種類がある。参照渡し(by reference),内容渡し(by content),そして−活性化
される要素に対する原型が使用可能な場合の−値渡し(by value)である。
参照渡し又は内容渡しの機構が指定(又は想定)されたとき,活性化された実行時要素では引数又はそ
の複写物の所在が使用可能になる。値渡しの機構が指定されたとき,活性化された実行時要素では,所在
ではなく値が使用可能になる。
引数が参照渡しであれば,活性化された側の実行時要素は,その引数の指すデータ項目の値をアクセス
し,変更してもよい。ただし,アドレス一意名は例外とする。
引数が内容渡し又は値渡しであれば,活性化された側の実行時要素は,活性化する側の実行時要素中に
あるそのデータ項目をアクセスしてもよいが,変更してはならない。使用可能な原型がある場合,この引
数の値が評価されて対応する仮パラメタの形式へと変換される。使用可能な原型がない場合,引数の複写
物が,参照渡しの引数であるかのように,活性化される実行時要素へと提供される。いずれの場合も,活
性化された実行時要素がその実行中にこの値を変更してもよいが,活性化した側の実行時要素の引数の値
は変更されない。
したがって,参照渡しの引数は,活性化された側の実行時要素が,結果を活性化した側の実行時要素に
返すために用いてもよいが,内容渡し又は値渡しの引数をそのように用いることはできない。
活性化される側の実行時要素を記述しているソース要素中では,手続き部見出しに指定した仮パラメタ
の並びが,引数を受け取るための機構を表している。仮パラメタ並びの中でBY REFERENCEを指定した
仮パラメタは,参照渡し又は内容渡しのどちらの引数を受け取ってもよい。BY VALUEを指定した仮パラ
メタは,値渡しの引数だけを受け取ってもよい。
E.4.5.2.3 アドレスの受渡し
アドレスの受渡しは特殊な事例である。なぜなら,定義されたデータ項目ではない他の一意名とは異な
り,アドレス一意名は非原型形式のCALL文の中で渡してもよく,3種類の引数渡し機構のうちいずれを
用いて渡してもよいからである。しかしながら,アドレス一意名は受取り側作用対象にはなり得ないので,
たとえ参照渡しされても決して更新されることはなく,内容渡しであるかのように動作する。
E.4.5.2.4 返却項目
返却項目は,関数呼出し及び文内メソッド呼出しに対しては必須であり,プログラム呼出し及びINVOKE
文を用いたメソッド呼出しに対しては任意指定である。ちょうど引数と同じように,返却項目は活性化す
る側の実行時要素中に割り付けられる。活性化される側の実行時要素を記述しているソース要素の連絡節
中には,仮パラメタと同様に,返却されるデータの記述を一つだけ書いておく。
活性化される側の実行時要素を記述するソース要素中では,返却項目は手続き部見出しのRETURNING
指定によって識別され,連絡節中にある記述を指している。活性化する側の実行時要素を記述するソース
要素中では,返却項目はCALL文若しくはINVOKE文のRETURNING指定によって識別されるか,又は
その返却項目が,関数一意名若しくは文内メソッド呼出しを評価した結果になる。
E.4.5.2.5 原型
プログラム原型,関数原型及びメソッド原型は,プログラム,関数又はメソッドが要求する引数及び返
却項目の型を指定する。この情報によってシステムは,渡された引数及び返却項目が,活性化される側の
実行時要素の要求するデータを記述している仮パラメタと,一致しているかを検査できる。手続き部の見
出しは必要なパラメタの個数と返却項目とを表す。連絡節にはパラメタ及び返却項目の記述を書いておく。
他のプログラム言語で書かれている関数・メソッド・プログラムとの連絡を容易にするために,システム
558
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
における既定解釈のCOBOL入口規約とは異なる入口規約を,原型に指定してもよい。
プログラムに対してはCALL文に原型を用いない形式と用いる形式とがある。関数呼出し及びメソッド
呼出しでは,常に原型を用いる。
内容渡し又は値渡しの機構を原型とともに使用すると,システムが活性化処理の間に引数を,活性化さ
れる側の関数・メソッド・プログラムの要求する形式へと変換するようにできる。また,データ項目を指
さない一意名を引数として受け渡したり,算術式及びブール式を引数として受け渡したりするようにもで
きる。
原型には,関数・メソッド・プログラムを参照する場合に省略できるパラメタはどれかを指定してもよ
い。実行時要素は,OMITTED(省略)検査によってパラメタの有無を判定できる。
原型の情報は,同じ翻訳群の中で,又は外部リポジトリの中で,使用可能になっていてもよい。CALL
文のNESTED指定で識別される,入れ子になっているプログラムに対する原型の情報は,呼出し対象の実
際のプログラムから抽出される。リポジトリ段落中で関数原型名又はプログラム原型名を指定すると,シ
ステムは原型を探して,翻訳群中に指定のない情報を,外部リポジトリ中に検索しに行く。メソッドに対
しての原型は,そのメソッドが中に定義されているクラス又はインタフェースを通じて提供される。
E.4.5.2.6 原型使用なしの場合の既定解釈
原型の使用がない場合(これはプログラム呼出しでだけ起こり得る)に,引数渡しの機構はCALL文か
ら完全に規定される。ある引数に対してBY REFERENCEもBY CONTENTも指定がないときはBY
REFERENCEが想定される。いずれかの指定があるときは,その指定がこれ以降,いずれかの指定が再び
現れるまでの引数の列にも適用される。つまり,この指定は推移的(transitive,次々と引き継がれる。)で
ある。
E.4.5.2.7 原型使用ありの場合の既定解釈
原型の使用がある場合,引数渡しの機構は基本的に,その原型仕様から決まる。ある引数に対してBY
REFERENCEもBY CONTENTもBY VALUEもないとき,引数渡しの機構は次のようにして決まる。
− 原型の中にBY VALUE指定があるとき,BY VALUEが想定される。
− 原型の中にBY REFERENCE指定があって,引数が受取り側作用対象になり得る項目(オブジェクト
プロパティは除外)の場合は,BY REFERENCEが想定される。
− 原型の中にBY REFERENCE指定があり,引数が受取り側作用対象になり得る項目以外であるとき,
BY CONTENTが想定される。
CALL文及びINVOKE文では,この既定解釈を上書きするためも,受取り側項目になり得る引数にBY
CONTENT指定を書いてもよい。この場合は,BY REFERENCEではなくBY CONTENTが採用される。
INVOKE文又は原型形式のCALL文にBY REFERENCE又はBY VALUEを指定しても,整合性検査と文
書化のほかには効果がないことに注意する。
さらに,原型を使用する場合は,引数渡しの機構は推移的に引き継がれないことに注意する。
E.4.5.3 データの共用
次の状況では,実行単位中の実行時要素は,共通なデータを参照してもよい。
1) 外部データレコードのデータの内容は,そのレコードを外部であると記述している任意の実行時要素
から参照してもよい。実行単位に関連するそのレコードの実体は一つである。
2) プログラムが別のプログラムに含まれているとき,両方のプログラムは,外側のプログラムで宣言さ
れたか,又は外側のプログラムを直接若しくは間接に含むプログラムで宣言された,大域属性をもつ
データを参照してもよい[E.4.3.1(名前)参照]。
559
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
3) 活性化する側の実行時要素から活性化される側の実行時要素へとパラメタ値を参照渡しで受渡しする
機構は,共通データ項目を確立する。活性化される側の実行時要素は,活性化する側の実行時要素に
あるデータ項目を参照してもよい。その場合に,異なる名前を用いてもよい。
4) 関数・メソッド・プログラムから値を返却データ項目に返却する機構は,共通データ項目を確立する。
活性化された実行時要素は,活性化した側の実行時要素にある返却データ項目に値を返却してもよい。
その場合に,異なる名前を用いてもよい。
E.4.5.4 ファイルの共用
ファイルは,実行単位の間でも,実行時要素の間でも,そして一つの実行時要素中の異なるファイル結
合子の間でも共用することができる[E.1.3(ファイル共用及びレコード施錠)参照]。
次の状況下では,実行単位中の二つの実行時要素が,共通なファイル結合子を参照してもよい。
1) 外部ファイル結合子は,そのファイル結合子を外部であると記述している任意の実行時要素から参照
してもよい。実行単位に関連するそのファイル結合子の実体は一つである。
2) プログラムが別のプログラム中に含まれているとき,両方のプログラムは,外側のプログラム中で宣
言されたか,又は外側のプログラムを直接若しくは間接に含むプログラム中で宣言された,大域ファ
イル名を参照することによって,関連するファイル結合子を共通に参照してもよい[E.4.3.1(名前)
参照]。
E.5
通信機能
通信機能は,通信文又はその一部をアクセスし,処理し,生成する機能を提供する。この機能によって,
通信管理システム(MCS: message control system)を通して通信装置と通信することが可能になる。
通信機能は,この規格の廃要素であり,次の規格COBOLの改正版から削除される予定である。
E.5.1 通信管理システム
通信機能を実現するには,実行単位の操作環境に通信管理システムが存在している必要がある。
通信管理システム(MCS)とは,実行単位を制御しているオペレーティングシステムとの論理的な連絡
をとる機構である。通信管理システムの主な機能には,次のものがある。
1) 実行単位と通信装置網との連絡をとる。これはオペレーティングシステムが実行単位と,プリンタ,
磁気テープ,大容量記憶装置などとの間で連絡をとる方法と同じである。
2) ダイヤル接続,ポーリング,同期処理なども含めた回線制御を行う。
3) 文字変換,制御文字の挿入など装置固有の操作を行い,装置に依存しないCOBOLプログラムを作成
可能にする。
第1の機能つまり実行単位と通信装置との連絡の必要性はCOBOL利用者にとって明白であろう。しか
し 第2・第3の機能の存在をCOBOL利用者は全く意識しなくてもよい。通信装置から入ってきた通信文
は,通信管理システムによって入力待ち行列に置かれ,実行単位によって処理されるのを待つ。実行単位
からの出力通信文は,通信管理システムによって出力待ち行列に置かれ,通信装置へと伝送されるのを待
つ。待ち行列の構造,形式及び記号名は,COBOL利用者が実行単位を実行するのに先立って,通信管理
システムに対して定義しておく。このとき,通信文の発信源及びあて先の記号名もまた定義しておく。
COBOL利用者がCOBOLプログラム中で指定する記号名は,通信管理システムにとって既知な記号名で
なければならない。
実行単位の実行中,通信管理システムは必要に応じて待ち行列の更新に必要な全ての処理を行う。
560
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
E.5.2 実行単位
実行単位は,データの送信,データの受信,又は通信管理システムによって作成され更新される種々の
待ち行列の状態の問合せが必要なときに,通信管理システムと連絡をとることができる。さらに,実行時
要素は,通信管理システムに指示して,通信装置と待ち行列構造の特定部分との間を論理的に接続したり
切り離したりしてもよい。物理的な接続を操作する方法は,通信管理システムの機能である。
E.5.3 実行時要素と通信管理システム及び通信装置との関係
データ部の通信節の通信記述項を用いて,次の二つの連絡をとることができる。
1) 実行時要素と通信管理システムとの間の連絡
2) 通信管理システムと通信装置との間の連絡
次に示す文は,通信管理システムとの連絡を制御する。
1) RECEIVE(受信)文。 待ち行列にあるデータを,実行時要素へと引き渡す。
2) SEND(送信)文。 実行時要素に関連するデータを,一つ以上の待ち行列へ引き渡す。
3) ACCEPT MESSAGE COUNT(通信文の個数)文。 通信管理システムに,待ち行列の特定部分にある
完結した通信文の個数を実行時要素へと通知させる。
次に示す文は,通信管理システムと通信装置との間の連絡を制御する。
1) ENABLE(接続)文。 通信管理システムと一つ以上の特定通信装置との間を論理的に接続する。
2) DISABLE(切離し)文。 通信管理システムと一つ以上の特定通信装置との間を論理的に切り離す。
これらの関係を図E.4(COBOL通信環境)に示し,E.5.5.2(待ち行列の接続及び切離し)で説明する。
561
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
……………
……………
RECEIVE
……………
……………
……………
……………
……………
RECEIVE
……………
……………
……………
……………
……………
SEND
……………
……………
……………
……………
……………
……………
SEND
……………
……………
……………
RECEIVE
……………
……………
……………
SEND
……………
……………
…………
…………
…………
…………
…………
…………
…………
…………
…………
…………
:
:
:
:
:
E
N
A
B
L
E
/
D
I
S
A
B
L
E
通
信
記
述
項
(
C
D
)
通信管理システム (MCS)
COBOLプログラム
通信装置
(待ち行列を使用した通信)
入力待ち行列
出力待ち行列
(トランザクションによる通信)
COBOLとMCSとの連絡
MCSと通信装置との連絡
図E.4−COBOL通信環境
E.5.3.1 実行単位の起動
通信機能を用いているCOBOL実行用プログラムを起動する方法には,予定された開始(scheduled
initiation)と通信管理システムによる起動(invocation by MCS)の2種類がある。これらは起動方法によら
ず,唯一の相違は,通信管理システムによる起動の場合に通信記述項中の特定の項目に値が設定されると
いう点だけである。
E.5.3.1.1 実行単位の予定された開始
通信機能を用いる実行単位は,ジョブ制御言語など,実行単位の操作環境で利用できる通常の方法で実
行開始を予定してもよい。この場合にソース要素中では,入力待ち行列の中でどのような通信文が使用可
能になっているかは,次の三つの方法によって決まる。
562
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
1) ACCEPT MESSAGE COUNT文
2) NO DATA指定のあるRECEIVE文
3) NO DATA指定のないRECEIVE文(この場合,使用可能データがなければ実行単位は待ち状態になる。)
E.5.3.1.2 実行単位の通信管理システムによる起動
仕事があるときにだけ,実行単位の実行を予定したい場合がある。この場合には,その通信文を処理す
るのに必要なプログラムを通信管理システムが決め,その後そのプログラムを含んでいる実行単位を実行
させる。実行単位の実行に先立ち,通信管理システムは,ソース要素から生成された実行時要素中の,FOR
INITIAL INPUT句の指定のある通信記述項の関連データ項目中へ,主待ち行列及び副待ち行列の記号名を
入れるか,又はFOR INITIAL I-O句の指定のある通信記述項に関連するデータ項目中へ,通信装置の記号
名を入れる。
これ以降その通信記述項を参照するRECEIVE文を実行すると,実行時要素に通信文が引き渡される。
E.5.3.1.3 起動方法の決定
ソース要素は,生成された実行単位が上記のいずれの方法で起動されても稼動できるように書いてもよ
い。次の手順は,その実行単位がいずれの方法で活性化されたかを確認するのに使用してもよい,一つの
方法である。
1) FOR INITIAL INPUT句又はFOR INITIAL I-O句の指定のある通信記述項を一つ書いておく。
2) FOR INITIAL INPUT句を指定した場合は,その通信記述項の主待ち行列名が全て空白か否かを検査す
ればよい。空白であれば,実行単位を起動したのは通信管理システムではない方法である。空白でな
ければ,実行単位を起動したのは通信管理システムであり,主待ち行列名の内容は,処理対象の通信
文の入っている待ち行列の記号名である。
3) FOR INITIAL I-O句を指定した場合には,その通信記述項の通信装置名が全て空白か否かを検査すれ
ばよい。空白であれば,実行単位を起動したのは通信管理システムでない方法である。空白でなけれ
ば,実行単位を起動したのは通信管理システムであり,通信装置名の内容は,処理対象の通信文の発
信源である通信装置の記号名である。
E.5.4 通信文及び通信行の概念
通信文は,ある任意の量の情報からなる。この情報は通常,文字データであり,その始まりと終わりは
明示的又は暗黙に定義されている。通信文は,COBOL通信環境のもとで処理されるデータの基本的な単
位であるが,もっと細かく分割することもできる。
通信文は論理的に,通信行と呼ぶ,より小さなデータの単位へと細分してもよい。通信行は通信行終了
符号(ESI)で区切られる。通信文は一つ以上の通信行からなり,通信文終了符号(EMI)で区切られる。
同様に,幾つかの通信文を通信群終了符号(EGI)で区切って,通信群としてもよい。COBOLプログラム
が通信文又は通信行を受信したとき,RECEIVE文の実行中に通信記述の連絡領域は通信管理システムよっ
て更新され,転送データの終了符号はいずれかを示す値が入る。出力の場合は,SEND文の実行中に通信
管理システムへ引き渡されるデータに附加される終了符号は,そのSEND文の指定による。ゆえに,これ
らの終了符号の存在は,通信管理システムと実行単位の両方によって識別され指定される。しかし,COBOL
プログラムが処理する通信データの中には,これらの終了符号は含まれていない。
終了符号EGI,EMI,ESIの間には強弱関係がある。EGIが最も強く,ESIが最も弱い。通信データ中に
強い終了符号があると,それより弱い終了符号も全てあったとみなされる。例えば,EGIがあると,EMI
及びESIもあったとみなされる。
563
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
E.5.5 待ち行列の概念
次の議論が適用されるのは,FOR I-O句以外の通信記述項を用いてCOBOL通信環境を確立した場合だ
けとする。
待ち行列(queue)は,一つ以上の通信装置とやりとりされる一つ以上の通信文を含み,実行単位と通信
管理システムとの間のデータ緩衝領域を形成する。入力待ち行列と出力待ち行列とは論理的に別物である。
通信管理システムが論理的に待ち行列に出し入れする通信文は,完結した通信文だけである。ある通信
文は,その全体を通信管理システムが利用できないうちに,その一部分だけが待ち行列に入ることは論理
的には起こらない。つまり,たとえCOBOLソースプログラム中でSEGMENT指定付きのRECEIVE文が
用いられたとしても,ある通信文の全ての通信行が入力待ち行列中にそろわない限りは,通信管理システ
ムは実行単位にその通信行を渡すことはない。出力通信文についても,ある通信文の全ての通信行が出力
待ち行列にそろわない限りは,通信管理システムがその通信文のどの通信行をも伝送することはない。待
ち行列の深さ,つまり,ある待ち行列中にある通信文の個数の問合せには,その待ち行列中にある完結し
た通信文の個数だけが反映する。
通信文を待ち行列に入れる処理を,行列入れ(enqueue)と呼び,待ち行列から取り出す処理を,行列出
し(dequeue)と呼ぶ。
E.5.5.1 独立した行列入れ及び行列出し
実行単位の実行よりも先に,通信管理システムが通信装置から通信文を受け取ることがあり得る。その
結果その通信文は,通信管理システムによって適切な(接続されている)入力待ち行列に入れ,実行単位
がRECEIVE文によって行列からの取り出しを要求するまでそこに入れておく。同様に,実行単位が出力
待ち行列に入れた通信文が,その実行単位の終了後まで通信装置には伝送されないこともあり得る。この
現象の発生する原因は一般に次の二つである。
1) 出力待ち行列が切り離されている場合。
2) 実行単位の通信文を作成出力する速度が,あて先の通信文を受け取る速度を超えている場合。
E.5.5.2 待ち行列の接続及び切離し
通常,通信管理システムによる待ち行列の接続及び切離しは,時刻,通信活動状況,そのほかCOBOL
プログラムとは無関係な要因に基づいて行われる。しかしながらCOBOLプログラム自体も,ENABLE文
及びDISABLE文を用いて,待ち行列の接続及び切離しを行うことができる。
E.5.5.3 行列入れ及び行列出しの方法
通信管理システムの機能の一部を利用者が指定できるシステムの下では,通信文を種々の待ち行列に入
れるために用いられる選択アルゴリズム及びその他の通信管理システムの機能を,利用者があらかじめ,
プログラムの実行に先立って定義しておかなければならないことがある。選択アルゴリズムの代表的な一
例として,“特定の発信源からの通信文は全て特定の入力待ち行列に入れ,特定のあて先へ送る通信文は全
て特定の出力待ち行列に入れる”というものが考えられる。
行列出し処理は,しばしば先入れ先出し(first in,first out)方式で行われる。ゆえに,入力用又は出力
用の待ち行列から取り出される通信文は最も長い間その待ち行列中で待機していたことになる。しかしな
がら,通信管理システムは,利用者が前もって指定すれば,例えば,優先度付きの待ち行列のような他の
方式で行列出しを行ってもよい。
E.5.5.4 待ち行列の階層構造
行列に出し入れされる通信文をより明示的に制御するために,通信管理システムの中に入力待ち行列の
階層構造を定義することができる。COBOLでは,利用者が使用可能な待ち行列は4階層まである。これ
564
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
らの待ち行列の階層を,強さの順に,主待ち行列,副待ち行列1,副待ち行列2及び副待ち行列3と呼ぶ。
待ち行列の完全な構造を,図E.5(待ち行列の階層構造)に示す。ここで,主待ち行列及び副待ち行列群
は英字のA〜Oで命名し,通信文は発信源を識別する英字(X,Y,Z)と通し番号とで命名してある。
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
Z1
X2
X3
X5
X4
X1
Y3
Y5
Z5
Z6
Z7
Y6
Y7
Y8
Y1
Y2
X6
Z2
Z3
Z4
Y4
主待ち行列
副待ち行列1
副待ち行列2
副待ち行列3
通信文
図E.5−待ち行列の階層構造
この通信管理システムが,次の待ち行列管理アルゴリズムの下で運用されているものと想定する。
1) 通信文の入れられる待ち行列は,各々の通信文中の特定のデータ領域の内容に基づいている。
2) RECEIVE文を用いる場合,あるレベルの副待ち行列を利用者が指定しなければ,通信管理システムが
そのレベルから副待ち行列を選ぶ方法は,ABC順とする。例えば,副待ち行列1を指定しなければ,
通信管理システムは副待ち行列1のBから取出しを行う。
このアルゴリズムの効果を,次の例で説明する[図E.5(待ち行列の階層構造)参照]。
プログラムがRECEIVE文を実行したとき,
1) 通信記述項の指定
− 主待ち行列
A
通信管理システムの取出し − 通信文
Z1
2) 通信記述項の指定
− 主待ち行列
A
副待ち行列1
C
通信管理システムの取出し − 通信文
Y7
3) 通信記述項の指定
− 主待ち行列
A
副待ち行列1
B
副待ち行列2
E
通信管理システムの取出し − 通信文
X1
4) 通信記述項の指定
− 主待ち行列
A
副待ち行列1
C
副待ち行列2
G
565
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
副待ち行列3
N
通信管理システムの取出し − 通信文
X6
COBOL利用者が,副待ち行列に関係なく主待ち行列の中の次の通信文を受け取りたい場合は,主待ち
行列の名前だけを指定すればよい。通信管理システムは通信文を引き渡すとき,該当する副待ち行列の名
前を全て,関連する通信記述項のデータ項目に設定して実行単位に知らせる。しかしながら,ある特定の
副待ち行列中の次の通信文を受け取りたい場合,利用者は主待ち行列の名前と該当する副待ち行列の名前
を全て,通信記述項に指定しておかなければならない。
出力については,COBOL利用者は通信文のあて先を指定するだけでよい。その通信文は通信管理シス
テムによって適切な待ち行列に入れられる。
通信装置と,発信源又はあて先との間には,1対1の対応は存在しない。一つの発信源又はあて先が,
一つ以上の物理的装置から構成されていてもよい。一つの発信源又はあて先を構成するこれら一つ以上の
装置は,通信管理システムに対してあらかじめ定義されている。
E.5.6 トランザクションによる通信の概念
既に説明した待ち行列による方法とは対照的に,通信装置と実行用プログラムとの間での直接対話が必
要となる場合がある。この場合,通信文は即時処理されるので,待ち行列に入れる必要はない。COBOL
ではFOR I-O句を指定した通信記述項を使用することで,この種の処理を指定することができる。FOR I-O
句を指定した通信記述項は,一つの端末とだけ通信してもよい。しかし,実行単位にはFOR I-O句を指定
した通信記述項が複数あってもよく,これらの通信記述項の通信相手は同じ端末であっても異なる端末で
あってもよい。INITIAL句のあるFOR I-O句を指定した通信記述項を書いた場合は,そのプログラムを通
信管理システムによって起動してもよい。
E.6
組込み関数機能
組込み関数機能は,特定のアルゴリズム又は幾つかの引数の評価から導かれる値を返す手段を提供する。
返されてくる値は,一時的なデータ項目とみなされるが,文字列,ビット列又は数値のいずれかである。
数値を返す関数は,算術式中でちょうど数字データ項目のように使用できる。
利用者が組込み関数を呼び出すには,語FUNCTIONを書き,続けて関数の名前を書き,続けて必要な
引数を括弧に入れて書く。例えば,次のように書く。
MOVE FUNCTION MAX (1, a) TO b
組込み関数名は,予約語ではない。予約語でなくてもよいように語FUNCTIONが使用される。しかし,
リポジトリ段落中で組込み形式の関数指定子を使用することによって,語FUNCTIONなしでも組込み関
数名を指定できる。例えば,ソース単位中で組込み関数名の前に語FUNCTIONを使用したくないとき,
リポジトリ段落を次のように指定すればよい。
REPOSITORY.
FUNCTION ALL INTRINSIC.
こうすれば全ての組込み関数名を,先行するFUNCTIONを付けずに参照できる。ただし,この例では,
リポジトリ段落の有効範囲内で組込み関数名を利用者定義語として用いようとしても,それはできない。
一つ以上の特定の組込み関数名の前でだけ語FUNCTIONを省きたいとき,組込み関数名を個別に指定し
て,例えば,次のようにすればよい。
REPOSITORY.
FUNCTION CURRENT-DATE, DAY-OF-INTEGER INTRINSIC.
組込み関数が利用者定義関数と異なるのは,利用者によって書かれるのではなくて,言語に組み込まれ
566
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ているという点である。COBOLの組込み関数の定義には,指定できる引数,その項類,その値の範囲,
及び関数の返却値を決めるのに用いられる方法が提示されている。
関数の幾つかは既知の値を返すので,引数をもたない。一つの例がCURRENT-DATE関数であって,こ
れは現時点の日付及び時刻と協定世界時との時差に関する情報を返すものである。例えば,次のように指
定してもよい。
MOVE FUNCTION CURRENT-DATE TO 日付情報
また,YYYYMMDDにだけ関心があるとき,次のように指定してもよい。
MOVE FUNCTION CURRENT-DATE (1: 8) TO 日付
これでYYYYMMDD形式の日付が得られる。文字列を返す関数は部分参照できることが分かる。引数
をもったりもたなかったりする関数の例としては,RANDOM関数がある。これには,擬似乱数の種子の
値を指定する引数が,あってもなくてもよい。いずれの場合も擬似乱数が返される。
可変個の引数が指定できる関数には,引数として表を指定してもよい。このときその表の全体が一連の
引数になる。一つの例がMAX関数であって,ここでは次のように指定してもよい。
MOVE FUNCTION MAX (ある表 (ALL)) TO ある変数
文字列の先頭部分にだけ関心があるとき(“ある表”をPIC X(10) 項目からなる表と想定しよう。),
次のように指定してもよい。
MOVE FUNCTION MAX (ある表 (ALL)) (1: 文字数) TO ある変数
こうすれば“ある表”の全項目から最大値が選び出される。FUNCTION ORD-MAX (ある表 (ALL)) を
用いて,表のどの要素が最大なのかを調べることもできよう。
例外名の中には関数に関連するものがあり,これを用いて引数が正しかったか否かを決定することがで
きる。例えば,次のように書くことができる。
>>TURN EC-ARGUMENT CHECKING ON
COMPUTE 日数の差分 = FUNCTION INTEGER-OF-DATE (第一の日付) -
FUNCTION INTEGER-OF-DATE (第二の日付)
IF FUNCTION EXCEPTION-STATUS = "EC-ARGUMENT"
...
*> ここで,何が悪かったのかを調べようとするのであろう
関数の中にはTEST-DATE-YYYYMMDD及びTEST-NUMVALのように,日付及び数値の関数に対する
引数を調べるものもある。
E.7
デバッグ
デバッグ行及び翻訳時スイッチは,デバッグのために用いてもよい簡単な条件翻訳機能を提供する。こ
の機能は廃要素である。条件翻訳を使用すれば同じ効果をより簡単な方法で達成できる。
デバッグ行はデバッグ標識で識別される[6.2.7(デバッグ行)及び6.3.4(デバッグ行)参照]。デバッ
グ行は,WITH DEBUGGING MODE句が翻訳用計算機段落の中に指定されていれば翻訳されるが,さもな
ければ,注記として扱われる。
次に示す固定形式正書法のコード断片で,デバッグ行の使用方法を説明する。この例ではDISPLAY文
が翻訳対象となる。
けた位置
1 78
.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. anykind DEBUGGING MODE.
567
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
.
.
PROCEDURE DIVISION.
.
.
D
DISPLAY "The value of X is: " x.
次に示す自由形式正書法のコード断片は,上の例と同じ機能を説明する。この例では,任意の文字位置
(通常は位置1)から書き始めることができる。
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. any-kind DEBUGGING MODE.
.
.
PROCEDURE DIVISION.
.
.
>>D DISPLAY "The value of X is: " x.
翻訳用計算機段落にDEBUGGING MODE句がないとき,デバッグ行は注記行として扱われる。
E.8
型
型(type)とは,あるデータ項目及びその従属項目の特徴を全て内包する,ひな型である。型の宣言及
び命名は,TYPEDEF句を指定することで行われる。ある型名によって識別される,その型の本質的な特
徴は,型宣言中で定義された基本項目群の相対位置と長さ,及びこれらの基本項目の各々に指定した
PICTURE句,USAGE句,SIGN句,SYNCHRONIZED句,JUSTIFIED句及びBLANK WHEN ZERO句で
ある。
型付き項目(typed items)には,次のとおり異なる三つの種類がある。
− 弱い型付けの基本項目(weakly typed elementary items)
− 弱い型付けの集団項目(weakly typed group items)
− 強い型付けの集団項目(strongly typed group items)
基本項目は強い型付けにできないことに注意。
型は強くても弱くても,特定の名前をもつ決まったデータ構造を定義するものであり,これを利用する
場合は,その定義されたデータ構造そのものを伴って利用される。これによってけたよせの相違及び上位
の集団レベルでのUSAGE指定によるデータ表現の変更といったことは,この構造に影響を及ぼさないこ
とが保証される。
E.8.1 弱い型付けの項目
弱い型付けの項目(weakly typed items)とは,STRONG指定のない型宣言を参照するもの及びそのよう
な型宣言に従属していないものである。弱い型付けの項目は,集団項目であることも基本項目のこともあ
る。
前述したデータ構造が保護される以外の点では,弱い型付けの項目は本質的に,型付けされていない項
目と全く同じように使用することができる。よって,そのTYPEDEFは実は,一連のデータ記述項の組を
“短縮記述”したものとみなし得る。
次の例で,TYPEDEF句とTYPE句とを用いて型を定義し使用する方法を説明する。
1 Feature TYPEDEF.
*> この記述で型名Feature (機能) を定義する
2 Feature-name PIC X(15) OCCURS 10.
1 Equipment.
*> (装置)
2 Equipment-id OCCURS 100.
568
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
3 Equipment-list TYPE Feature.
*> 型名Featureを使用する
この結果は,次に示す記述をもつレコードとなる。
1 Equipment.
*> (装置)
2 Equipment-id OCCURS 100.
3 Equipment-list PIC X(15) OCCURS 10.
型を展開すると,データ記述項に直接に書ける49レベルよりも深い階層構造を作ることができる。
E.8.2 強い型付けの集団項目
強い型付けの集団項目(strongly typed group items)とは,STRONG指定のある型宣言,又はそのような
型宣言によって記述されたものである。強い型付けにできるのは集団項目だけとする。なぜなら,基本項
目に対して強い型付けを許せばそのような項目に関して実質的に膨大な制約を課すことになり,その使い
方はほとんど実用に耐えないものになってしまうからである。
強い型付けを行う主な目的は,その型の定義するデータ構造を保護する以上に,データの内容の整合性
を防護するところにある。ゆえに,強い型付けの集団項目は正しく使用する限り,不正なデータすなわち
データの記述に不適合データの内容を生じるはずはない。この重要な帰結の一つとして,このようなデー
タ項目をより制約の少ないデータ記述で再定義することは,明示的にも暗黙にも禁止される。
集団項目は,1種の再定義と考えられる。明確には,その従属項目群を1個の項目−英数字,ビット又
は各国文字の集団項目−として再定義したものである。これが暗に意味するのは,強い型付けの集団又は
そのような集団を包含している集団に関する操作が,その集団の従属データ群の整合性に影響を及ぼさな
いものに制約される,ということである。ゆえに,強い型付けの集団項目を受取り側作用対象に使用する
唯一の方法は,送出し側も同じ型である場合であり,同じ型は,同じ名前で,かつ,前述した本質的な特
徴が同じである宣言で定義する。
基本項目に同種の制約を課する必要がないことに注意。なぜなら,基本項目に対する操作は,一般に受
取り側項目の内容を損なうものではないからである。
強い型付けの集団項目のアドレス及びそのようなアドレスを内容とするデータポインタも,同様の制約
を受ける[E.9(アドレス及びポインタ)参照]。
ただし,データの整合性を保護することが意味をもつのは,そもそもデータが正しいときだけである。
COBOL言語に規定された規則の違反を検知するためにCOBOL例外操作機能を使用すると,データの形
式が正しいことをプログラムが保証する手助けになる。
強い型付けの集団項目は,レベル1の集団項目か,STRONG指定のある型宣言に従属する集団項目かの
いずれかである。
強い型付けの集団項目に対する制約は,次のように要約される。
1) 強い型付けの集団項目のデータ記述項にVALUE句があってはならず,その項目が条件変数であって
はならない。
2) 強い型付けの集団項目及びそれに従属する基本項目には,次が禁止される。
a) 暗黙にも明示的にも再定義してはならない。
b) その全体をも一部をも再命名してはならない。
c) 部分参照してはならない。ただし,項類が英数字,ブール又は各国文字である基本項目に対しては
この限りでない。
3) 強い型付けの集団項目を受取り側作用対象として参照してもよいのは,次の箇所だけとする。
a) プログラム,関数又はメソッドの活性化の,仮パラメタ又は返却項目として
b) INITIALIZE文
569
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
c) MOVE文
d) READ文
e) RELEASE文でFROM指定のあるもの
f)
RETURN文
g) REWRITE文でFROM指定のあるもの
h) VALIDATE文の作用対象の要素に指定したDESTINATION句で参照されるデータ項目
i)
VALIDATE文の作用対象の要素を参照するVALIDATE-STATUS句をもつデータ記述項の左辺
j)
WRITE文でFROM指定のあるもの
4) 強い型付けの集団項目と比較ができる対象は,同じ型をもつ強い型付けの集団項目だけとする。
E.9
アドレス及びポインタ
アドレス及びポインタは,計算機の記憶域及びこの記憶域内の目印になる番地と関連がある。通常では,
事務用応用プログラムはこれらの機能を必要としない。しかし,システムプログラミングも含めた,汎用
言語の使用が増加したため,更にPOSIXのようなシステムとの間,並びにC及びC++のような言語との
間で相互運用性が必要とされたため,これらの機能をCOBOL言語にも追加することが望まれることとな
った。
しかしながら,アドレス及びポインタは,応用プログラム又はシステム環境が必要とする箇所にだけ限
って,十分に注意して使用するのがよい。応用プログラムの読解及び保守が困難になるようなプログラミ
ングスタイルになりやすいからである。
なぜなら,これらを乱用すると,プログラミングスタイルが変わって,その応用プログラムを読解も保
守も困難にしてしまうことが簡単に起き得るからである。
次のとおり,アドレスには2種類があり,これに伴ってポインタにも2種類がある。
− データアドレス及びデータポインタ
− プログラムアドレス及びプログラムポインタ
E.9.1 データアドレス及びデータポインタ
データアドレス(data-address)とは,データ項目の所在を識別する仮想実体である。これを参照するに
はデータアドレス一意名を指定する。データアドレス一意名を,受取り側作用対象にはできない。SET文
の受取り側作用対象にADDRESS OF指定を書いた場合,データアドレス一意名ではなくて,基底付き項
目のアドレスに送出し作用対象の値を設定するための構文上の記法であるとみなされる。
データポインタ(data-pointer)とは,データアドレスを格納するために用いるデータ項目である。
データアドレスは,データポインタに格納できる。基底付き項目のデータアドレスは,データポインタ
又はデータアドレス一意名から設定できる。データアドレス及びデータポインタは,他のソース要素へと
受け渡すことができ,データポインタは別のソース要素から受け取ることができる。
E.9.1.1 制限付きデータポインタ
制限付きデータポインタ(restricted data-pointer)は,ある特定の型のデータ項目のアドレスだけを内容
としてもってもよい。制限付きデータポインタを定義してもよいのは,型宣言の中だけである。
型の安全性(つまり,ある型のデータが別な型のデータのように扱われるのを回避すること)に備える
ためには,制限付きデータポインタの使用が不可欠である。
これは強い型付けの集団項目に対しては特別な意味となる。強い型付けの集団項目のアドレスは一種の
制限付きデータポインタとみなされる。それゆえ,これを代入できる先は同じ型に制限されたデータポイ
570
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ンタだけであり,これを使用できる用途は同じ型のデータ項目を指すだけである。逆に,強い型付けの基
底付き項目のアドレスに設定できる値は,同じ型のデータ項目のアドレスだけである。このように,強い
型付けの集団項目に整合性を強制するための既存の制約事項には,アドレス,ポインタ又は基底付き項目
を用いても抜け道はない。
E.9.1.2 例題
次のように,あるレコードへのポインタを返すプログラムのプログラム原型を考える。
PROGRAM-ID. get-next-record IS PROTOTYPE. *> これはレコードのアドレスを返す
DATA DIVISION.
LINKAGE SECTION.
01 ptr1
USAGE POINTER.
PROCEDURE DIVISION RETURNING ptr1.
END PROGRAM get-next-record.
クライアント(呼出し側)プログラムには,次のようなリポジトリ段落とデータ宣言を仮定しよう。
REPOSITORY.
PROGRAM get-next-record.
...
01 p USAGE POINTER.
01 my-wreck BASED.
02 name
PIC X(30).
02 addr
PIC X(30).
次に示す手続き部の文によって,プログラム原型に記述されたプログラムが呼び出される。
CALL get-next-record RETURNING p
ポインタpにはレコードの所在が入っているのでmy-wreckを介してデータにアクセスできる。
SET ADDRESS OF my-wreck TO p
MOVE "San Jones" TO name IN my-wreck
第2の例を考えよう。これは,多くの応用プログラムインタフェース(API)がポインタをパラメタと
して必要とする事実に基づくものである。データ部に,次の宣言がある例を考える。
01 p2 USAGE POINTER.
01 data-record.
*> レコードの体裁の全体を記述
02 ...
ポインタをプログラムprocess-recordへと渡したいときは,次のように書ける。
SET p2 TO ADDRESS OF data-record
CALL "process-record" USING p2
又は,次に示す単一文でdata-recordのアドレスを渡すこともできる。
CALL "process-record" USING ADDRESS OF data-record
E.9.2 プログラムアドレス及びプログラムポインタ
プログラムアドレス(program-address)は,プログラムの所在を識別するものである。これを参照する
にはプログラムアドレス一意名を指定する。プログラムアドレス一意名を受取り側作用対象にはできない。
プログラムポインタ(program-pointer)は,プログラムアドレスを格納するために用いるデータ項目で
ある。
プログラムアドレスはプログラムポインタに格納できる。プログラムポインタ又はプログラムアドレス
を用いて,プログラムを呼び出すことができる。プログラムアドレス及びプログラムポインタは,他のソ
ース要素へと受け渡すことができ,プログラムポインタは別のソース要素から受け取ることができる。
E.9.2.1 制限付きプログラムポインタ
制限付きプログラムポインタ(restricted program-pointer)は,そのプログラムポインタの定義で指定し
たプログラムと同じ呼出し情報をもつプログラムのアドレスだけを内容としてもってもよい。つまり,指
定したプログラムに対するプログラム原型の情報は,アドレスによって識別されるプログラムに全て当て
571
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
はまる。制限付きプログラムポインタを定義してもよいのは,型宣言の中だけである。
E.10 ブール機能及びビット操作
ブール機能という用語には,ブールの項類をもち,用途がBIT,DISPLAY又はNATIONALと記述され
たデータ項目に対して定義された,全ての機能が包括されている。ビット操作を行うにはブール項目の用
途をBITと記述すればよい。
項類がブールであるデータ項目は,ブール項目と呼び,PICTURE文字"1"で定義される。これは記憶域
中で,ビット列として表現することも文字列として表現することもでき,各々のビット又は文字は0又は
1の値を取るが,0は偽又はOFFであり,1は真又はONである。
ブール項目のデータ記述に指定できる用途は,BIT,DISPLAY又はNATIONALである。PICTURE記号
"1"の指定があって用途の指定がないとき,用途はDISPLAYと解釈される。用途DISPLAY又はNATIONAL
を指定すると,ブール項目の値を印字又は表示するのが簡単になる。3種類の表現形式は全て同じ方法で
操作できる。記憶域が問題でない場合は,用途のDISPLAY又はNATIONALを指定しておくと,印字又は
表示のためビット列を文字列に変換する不便が回避される。
ブール値を定数で指定することができる。例えばB"1110"のように左側の区切り記号にB"を用いると,
値がビット列で表される。例えばBX"E"のように左側の区切り記号にBX"を用いると,値が16進表記で
表される。
ブール演算子のB-AND,B-OR,B-XOR及びB-NOTを用いると,ブール項目を対象としたAND演算,
OR演算,排他的OR演算,及び否定演算を,それぞれ行うことができる。ブール演算子は,ブール式の
中で,次のように使用する。
例
01 My-flag PIC 1111 USAGE BIT VALUE B"0000".
01 My-flag-2 PIC 1111 USAGE BIT.
...
MOVE B"0011" TO My-flag-2
*> My-flag-2を初期化
...
COMPUTE My-flag = B-NOT My-flag-2 *> My-flagの中のビットに
*> My-flag-2の逆転値1100を設定
...
COMPUTE My-flag = My-flag B-AND B"0000"
*> My-flagの中のビットを全てoff
...
COMPUTE My-flag-2 = My-flag-2 B-OR BX"8" *> My-flag-2の第1ビットをonに
*> 他のビットはそのまま
代替方法として,最後のCOMPUTE文は次で置き換えてもよい。
MOVE B"1" TO My-flag-2(1:1)
*> 部分参照を用いて第1ビットをonに
各々のブール演算子に対するブール演算の結果を,表E.2(ブール演算の例)で説明する。
表E.2−ブール演算の例
ブール演算
作用対象の値
演算子
作用対象の値
結果
論理積
1100
B-AND
0101
0100
包括的論理和
1100
B-OR
0101
1101
排他的論理和
1100
B-XOR
0101
1001
論理否定
B-NOT
1100
0011
572
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ブール項目は,次に示す2種類の方法で検査できる。
1) ブール条件として,ただし,項目長が1ビットか1文字であるとき。
例
01 Single-bit-item PIC 1 USAGE BIT.
01 Multiple-bit-item pic 1(7) usage bit.
...
IF Single-bit-item THEN CALL a-program
*> Single-bit-itemが真 (1) なら呼出し
又は,部分参照を使用する。
例
IF Multiple-bit-item (4: 1) THEN ...
2) 比較条件として,“等しい”か“等しくない”かを検査する。
例
IF My-flag-2 EQUAL B"1000" THEN CALL a-program
ブール項目はINTEGER-OF-BOOLEAN組込み関数を用いて整数に変換できる。また,整数項目は
BOOLEAN-OF-INTEGER組込み関数を用いてブールに変換できる。
例
01 bit-item PIC 1(8) USAGE BIT.
01 integer-item
PIC 9(5) VALUE 544.
01 integer-item-2
PIC 9(3).
...
MOVE FUNCTION BOOLEAN-OF-INTEGER ( integer-item , 6 ) TO bit-item.
*> この関数は整数値を2進で表現した下6ビットを返す
*> MOVEはそれをbit-item中に転記し右に0を埋める
COMPUTE integer-item-2 = FUNCTION INTEGER-OF-BOOLEAN ( bit-item (1:6) ).
*> この関数は先頭6ビットの数値である32を返す
*> COMPUTEは032をinteger-item-2中に入れる
COBOLの規則では“文字位置”又は“ビット位置”という用語を用いている。記憶域の中でビットが
どのようにけたよせされるかを理解することは重要であるから,これ以降の説明では“バイト”という用
語を使用する。これは普通,英数字文字位置一つ分に相当する。
用途がBITである項目のけたよせは,データ記述項の書き方によって異なる。用途がBITの項目を再定
義するとき,又は用途がBITの項目で別な用途の項目を再定義するときには,けたよせの規則を知ってお
くことが,使用する処理系の記憶域の特性とともに,再定義の正否を左右することがある。これは,その
他の表現形式をもつ項目の場合と同様である。次に例を挙げてビットのけたよせを解説するが,ここでバ
イト中のビットには左から右へ向かって1〜8の番号が付けられ,1バイトは8ビットであると仮定してい
る。
最も単純なのは単一基本データ項目の場合である。先頭のビットはバイト境界にけたよせされ,以降の
ビットは連続して,必要があればバイト境界をまたいで対応付けられる。途中まで用いたバイトを埋める
遊びビットは生じない。これを次の例で説明する。ここで,割当てビット位置は1で表す。
例
ビット位置̲̲̲̲̲
項目中のバイト番号
1 2 3 4 5 6 7 8
77 Item-1 PIC 111 USAGE BIT.
1 1 1
1
01 Item-2 PIC 1(10) USAGE BIT.
1 1 1 1 1 1 1 1
1
1 1
2
Item-1の長さはブール位置3個分であり,Item-2の長さはブール位置10個分である。未使用のビットに
573
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
は,レベル1項目のREDEFINESを用いた場合を除き,アクセスできない。
ビット項目は,英数字集団項目内,強い型付けの集団項目内又はGROUP-USAGE BIT句のある集団内に
も定義できる。GROUP-USAGE BIT句を指定するとビット集団の定義となり,これはCOBOLの操作にお
いて基本ビットデータ項目の扱いとなる。ただし例外として,INITIALIZE文,MOVE CORRESPONDING
など,集団を特定の処理の対象とする操作においてはこの限りでない。
英数字,ビット,又は強い型付けの集団項目内では,先頭のビットデータ項目はバイト境界にけたよせ
され,以降のビットは次のいずれかになるまで連続して割り当てられる。
− 非ビット項目又は非ビット集団項目が現れた。
− 定義にALIGNED句のある項目に達した。
− その集団の終わりに達した。
次の例で,英数字集団項目内における暗黙FILLERの生成とバイト境界へのけたよせを説明する。
例
ビット位置̲̲̲̲̲
項目中のバイト番号
1 2 3 4 5 6 7 8
01 group-1.
1〜6
02 item-1 pic 11 usage BIT.
1 1
1
02 item-2 pic 1 usage BIT.
1
1
*> 暗黙FILLER ...
1 1 1 1 1
1 02 PIC 1(5)
02 item-3 PIC X(3).
2〜4
02 item-4 pic 1 usage BIT.
1
5
*> 暗黙FILLER ...
1 1 1 1 1 1 1
5 02 PIC 1(7)
02 group-2.
6
03 item-5 pic 1 usage BIT. 1
6
03 item-6 pic 1(4) usage BIT. 1 1 1 1
6
*> 暗黙FILLER ...
1 1 1
6 02 PIC 1(3)
生成されるFILLERは直前のデータの一部ではないが,それを含んでいる集団の一部ではある。例えば,
item-6の後に生成されるFILLERは,group-2及びgroup-1の一部ではあるが,item-6の一部ではない。こ
のFILLERがitem-6の後に追加されることによって,集団の終わりはバイト境界となっている。
仮にgroup-2の記述にGROUP-USAGE BIT句があった場合は,けたよせは違ったはずである。これは,
ビット項目に後続するビット集団に対しては自動的なけたよせが行われないためである。
例
ビット位置̲̲̲̲̲
項目中のバイト番号
1 2 3 4 5 6 7 8
01 group-1.
1〜5
02 item-1 pic 11 usage BIT.
1 1
1
02 item-2 pic 1 usage BIT.
1
1
*> 暗黙FILLER ...
1 1 1 1 1
1 02 PIC 1(5)
02 item-3 PIC X(3).
2〜4
02 item-4 pic 1 usage BIT.
1
5
02 group-2 GROUP-USAGE BIT.
5
03 item-5 pic 1 usage BIT. 1
5
03 item-6 pic 1(4) usage BIT. 1 1 1 1
5
*> 暗黙FILLER ...
1 1
5 02 PIC 1(2)
ALIGNED句を用いて標準のビットけたよせを変更することができる。次の例では,
例
ビット位置̲̲̲̲̲
項目中のバイト番号
1 2 3 4 5 6 7 8
01 group-1.
1〜2
02 item-1 pic 11 usage BIT.
1 1
1
*> 暗黙FILLER ...
1 1 1 1 1 1
1 02 PIC 1(6)
02 item-2 pic 1 ALIGNED
574
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
usage BIT.
1
2
*> 暗黙FILLER ...
1 1 1 1 1 1 1
2 02 PIC 1(7)
ALIGNED句を使用したことによって,item-2がバイト境界にけたよせされている。
プログラマは,ビット列を引数としてCALL文,INVOKE文,関数引用又は文内メソッド呼出し中に用
いる場合,及びADDRESS OF一意名にビット列を用いる場合に,そのビット列に対してバイト境界への
けたよせを保証しなければならない。これらの操作ではビット項目をバイト境界にけたよせして,直接に
位置指定可能にしなければならない。ALIGNED句を用いると,バイト境界へのけたよせを保証できる。
遊びビットがレコードの終わりに必要となる場合,そのFILLERのレベル番号はレコードの階層構造に
よって異なることになる。遊びビットのレベル番号は,最終データ項目が属する階層系列中のレベル1を
除く最高レベルであるか,そのような上位項目がないときはレコード中の最終データ項目と同じである。
これを次の二つの例で説明する。
例 *> 遊びビットは,レコード中の最終データ項目と同じレベル
1 G1.
2 G1-a
USAGE BIT PIC 1.
2 G1-b
USAGE BIT PIC 11.
*> 2 暗黙FILLER
USAGE BIT PIC 1(5).
例 *> 遊びビットは,レベル1を除く上位項目の最高レベル
1 G2.
2 Fld-1 PIC X.
2 Fld-2 GROUP-USAGE BIT.
3 G2-a.
5 B-1 PIC 1 USAGE BIT.
5 B-2 PIC 1 USAGE BIT.
*> 2 暗黙FILLER
USAGE BIT PIC 1(6).
E.11 文字集合
COBOLには,次に示す文字集合の概念がある。
1) COBOL文字レパートリ
2) 計算機文字集合
3) 符号系
COBOL文字レパートリに定義された文字群は,翻訳群を構成するCOBOLの語及び分離符を記述する
ために用いられる。この文字の組は抽象的実体としての文字群からなるのであって,その符号化表現には
依存しない。実装者はCOBOL文字レパートリから符号化表現への対応付けを規定して,文字の組の各文
字に一つ以上のビットパターンが割り当てられるようにする。この結果の符号化表現を符号化文字集合と
呼び,単に文字集合とも呼ぶ場合もある。
翻訳時に,注記の内容並びに非16進形式の英数字定数及び各国文字定数の内容には,実装者が符号化文
字集合中に定義済みの文字群のうち,自由形式の改行用のものを除いた,どの文字が含まれてもよい。
COBOLの語及び分離符はCOBOL文字レパートリ中の文字に制限されている。この点がCOBOL文字レパ
ートリと,翻訳時に用いる計算機符号化文字集合との大きな相違である。
実行時に,データは記憶域中においては実行時の計算機符号化文字集合で表現されるが,この文字集合
は,翻訳時に用いた符号化文字集合と同じであっても,異なっていてもよい。翻訳時と実行時とで用いる
符号化文字集合が異なるときには,英数字定数及び各国文字定数の内容が,翻訳時の符号化文字集合から
転換されて実行時の符号化文字集合になる。
外部媒体上のデータは,実行時計算機符号化文字集合で表現されていてもよいし,異なる符号化文字集
575
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
合で表現されていてもよい。符号化文字集合が異なる場合は,ファイル管理記述項にCODE-SET句を指定
しておけば,入力及び出力の時に,二つの符号化文字集合の間でデータの変換を行う。
符号系とは,翻訳群中にプログラマが書いたか,実装者が提供したか,国家規格又は国際規格で規定さ
れるかした文字集合を指す。実行時要素は文字照合順序を選択するため,又は入出力時のデータ変換で用
いられる符号化文字集合を指定するために,符号系を用いてよい。特殊名段落のALPHABET句は,翻訳
群中で用いてよい符号系を示すために用いられる。
E.11.1 文字集合の表現形式
文字集合の表現形式とは,計算機で処理したり外部媒体へ格納したりする文字を記録するために用いる
符号化の方法である。COBOLでは英数字(alphanumeric)と各国文字(national)という2種類の文字集合
表現が,それぞれ用途DISPLAYと用途NATIONALに対応して提供される。これらの2種類の表現形式の
実装は,次のいずれの形態であってもよい。
− 単一の文字集合で,論理的には英数字と各国文字との符号化文字集合が分離している。
− 二つの別個な文字集合であって,一つが英数字で一つが各国文字である。
用語“計算機符号化文字集合”は,文脈によって文字集合のいずれか片方又は両方を指す。
COBOLが使用する英数字という用語は典型的に,情報技術において最小限の,通常128個又は256個
の文字からなる集合を表現するために用いられる文字集合を指す。この種の文字集合の一例はISO/IEC
646である。各国文字という用語は,膨大な文字からなる集合を表現するために用いられる文字集合を指
す。各国文字集合の一つがJIS X 0221で定義される国際符号化文字集合(UCS)であり,これには世界中
の言語の記述形式で使用する文字の大半が含まれている。しかし,COBOLで用いてよい英数字文字集合
及び各国文字集合は,多数存在する。特定のCOBOL実装系が,どの文字集合を実装・提供するかは,実
装者定義とする。
COBOL文字レパートリの目的からすると翻訳群の構文中で使用する場合,ある文字は表現形式の種類
に関係なく同一の文字である。文字"A"は,英数字文字集合と各国文字集合の,いずれで表現されても同じ
意味をもつ。それはちょうど,小文字の"a"が大文字の"A"と同じ意味をもつのと同様である。
E.11.2 英数字データ及び各国文字データを使用するプログラミング
COBOLでは英数字(alphanumeric)及び各国文字(national)という2種類の文字データの字類が提供さ
れる。字類が英数字であるデータは,用途がDISPLAY(表示用)と記述されたデータ項目内で保持される。
字類が各国文字であるデータは,用途がNATIONAL(各国文字)と記述されたデータ項目内で保持される。
大半のプログラマは既に用途DISPLAYに精通しているので,この概念を用途NATIONALに適用する。
次に示すデータの項類は,用途NATIONALで表現できる。
− 各国文字(national)。PICTURE記号Nで記述されたもの。
− 各国文字編集(national-edited)。PICTURE記号N,B,0,/で記述され,そのPICTURE文字列中に少
なくともNが1個と他の記号が1個あるもの。
− 数字(numeric)。PICTURE記号9,P,S,Vで記述されたもの,数字のPICTUREと同じ。
− 数字編集(numeric-edited)。固定小数点数字編集項目を定義するPICTURE記号(0,9,V,Z,…)
で記述されたもの。
− ブール(boolean)。PICTURE記号1で記述されたもの。
用途がNATIONALのデータ項目を定義するためのデータ記述項を,次で説明する。
例 01 a-rec usage national.
02 nat-item
picture N(10).
*> 項類が各国文字
576
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
02 nat-edited-item picture NN/NN/NNNN. *> 項類が各国文字編集
02 num-item
picture 9(5).
*> 項類が数字
02 num-edited-item picture +99.99.
*> 項類が数字編集
02 bool-item
picture 1111.
*> 項類がブール
各国文字に対して必要な記憶量は,英数字文字を保持するのに必要な記憶量よりも大きいことがあるが,
各国文字項目の長さは,項目中の文字位置の個数として計数されるのであって,項目の保持に必要なバイ
ト数で計数されるのではない。この例では各国文字データがUTF-16などの16ビット文字で表現されてい
るとき,nat-itemに対して割り当てられる記憶域は20バイトであっても,そのデータ項目の長さは10
である。
字類が各国文字である定数は,定数の左側の区切り記号のN",又は16進定数用ならNX",のいずれか
で識別される。
例 NX"02A102A2"
用途が各国文字のデータ項目は,転記(move)ができ,比較ができ,検査(inspect),書出し(write),
読込み(read),表示(display)ができ,項類が数字なら計算(compute)に使用でき,そして全ての言語
構成のほとんど全ての点において,字類が英数字のデータ項目と同じように取り扱うことができる。相違
の一つは,DISPLAY-OF関数を用いた明示的な変換によってだけ,用途がNATIONALであるデータ項目を
用途がDISPLAYである項目へと転記できるという点である。
集団項目は,字類が各国文字のデータ項目を含んでいても,その集団に特に指定がない場合の字類及び
項類は英数字である。これはちょうど,その他のデータ項目を含んでいる集団項目に対してと同様である。
ある集団に従属するデータ項目が下位レベルの集団も含めて全て各国文字の字類及び項類をもっている場
合,その集団には明示的に各国文字の字類及び項類を付与することができる。それには,集団レベルのデ
ータ記述項にGROUP-USAGE NATIONAL指定を書けばよい。
例 01 Group-1 GROUP-USAGE NATIONAL.
02 subgroup-1.
03 elem-2 PIC NNN.
03 elem-3 PIC NN.
02 subgroup-2.
03 elem-4 PIC NNN.
03 elem-5 PIC N(5).
そして,各国文字集団項目を使用した場合,一般にこれは,英数字集団項目として扱われる代わりに,
各国文字基本データ項目として扱われる。MOVE CORRESPONDINGなど,集団項目内の各々の基本項目
に対して個別に作用する操作は,各国文字集団項目の場合も各々の基本項目に対して個別に作用すること
になる。INSPECTなど,各国文字データを含んでいる英数字集団に関しては必ずしも正しく使用できない
操作も,その集団を各国文字基本データ項目として扱うなら正しく作用することになる。
項類が英数字のデータ項目を,項類が各国文字のデータ項目へと転記する場合,又はこれら二者を比較
する場合,英数字のデータ項目は用途DISPLAYから用途NATIONALへと自動的に変換される。この逆は
真ならずで,各国文字の項目を英数字の項目へ転記するには,組込み関数のDISPLAY-OFを用いてデータ
を変換する必要がある。このような結果になる理由は,各国文字の文字集合に大抵の場合は英数字文字集
合に属する文字の全てが包含されているが,英数字文字集合には普通は各国文字集合に属する文字の全て
が包含されているわけではない,と想定されるからである。
577
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
E.11.3 ソースコードの移植性
自由形式正書法で書かれたソースコードは,文字集合を変換すれば,文字の幅が異なり制御機能の符号
化表現が異なる文字集合を利用しているシステムをまたいでも移植可能である。一方,固定形式正書法で
書かれたソースコードは,その文字位置による仕様によって移植がより困難であるかもしれない。
E.12 文字照合順序
文字照合順序はコンパイラによって翻訳群の処理中に用いられるほか,応用プログラムによって実行時
にも用いられる。従来は,両方の場合に同一の文字照合順序が使われた。また,その文字照合順序は大抵
の場合符号化文字集合中の文字群のビットパターンによって定義されていた。今日では,実行時に用いら
れる文字照合順序が翻訳時には判明していないということが,より広く普及しつつある。その一つの理由
は,複数の国又は文化圏において動作する応用プログラムの開発である。利用者は各自の国語又は文化圏
にふさわしい文字照合順序を必要とする。この要求を満たすために,翻訳時及び実行時に文字照合順序を
選択できる機能が,新たにCOBOLで提供された。
COBOLには,2種類の文字照合順序がある。
− 英数字
− 各国文字
英数字照合順序は,用途がDISPLAYと記述されたデータに適用される。この呼称は,英数字項類のデ
ータと関連付けられることにちなんで選ばれたが特殊文字,又は図形文字の割当てがないコードも対象で
ある。英数字データは大抵の場合,7ビット又は8ビットの符号化文字集合で表現される。用途がDISPLAY
と記述されたデータ項目に対して文字照合順序を選択するには,いろいろなCOBOL言語構成中で
COLLATING SEQUENCE FOR ALPHANUMERIC指定を書く。
各国文字照合順序は,用途がNATIONALと記述されたデータに適用される。この呼称は,特定の地域
(国)又は文化圏における利用者の視点から見ての“各国”言語と関連付けられることにちなんで選ばれ
た。このデータは大抵の場合(必ずではない。)16ビットの符号化文字集合で表現される。用途がNATIONAL
と記述されたデータ項目に対して文字照合順序を選択するには,いろいろなCOBOL言語構成中で
COLLATING SEQUENCE FOR NATIONAL指定を書く。
これら2種類の文字照合順序は,文字照合順序の表又は実装方式が,物理的に分離された2種類あるこ
とを必ずしも要求するものではない。UCS-4に関連する文字照合順序のような単一の文字照合順序を,英
数字と各国文字と両方の文字照合順序として参照すること,及びこれを用いて両方の文字照合順序を実
装・提供することができる。同じように,単一の現地特性で,用途DISPLAY及び用途NATIONALの文字
の組に対して,文字照合順序を提供することができる。
E.12.1 文字照合順序を定義する方法
COBOLで用いられる文字照合順序は,様々な方法で定義される。
1) COBOL実装者が文字照合順序の組を定義して,これに符号系名を付けてもよい。プログラマは,こ
の符号系名を特殊名段落中で符号系名に関連付けできる。
2) COBOLプログラマが特殊名段落中で文字照合順序の組を定義して,これに符号系名を付けてもよい。
3) 文字照合順序の組はCOBOLの外付けの“現地特性”で指定され,操作環境によって使用可能にされ
たものでもよい。これは特殊名段落中でLOCALEを符号系名に関連付けて参照する。
4) 文字照合順序の一つは,COBOLが認識する国際規格が定義し,特殊名段落中で符号系名に関連付け
られたものでもよい。ISO/IEC 646の7ビット符号化文字集合に対する,STANDARD-1及び
578
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
STANDARD-2がこれである。
ISO/IEC 646自体は,文字照合順序を規定したものではない。COBOLでは文字照合順序を,その符
号化文字集合中において文字群が定義された順序と規定している。
5) 文字照合順序の組は,応用プログラムの翻訳又は実行に使用する処理系のアーキテクチャによって定
義されたものであってもよい。特殊名段落中でNATIVEを符号系名に関連付けると参照される。
文字照合順序をだれがどのように定義したのかに関係なく,それを識別するための共通な機構が符号系
名である。文字照合順序を使用するには,COBOLプログラマはその文字照合順序に,特殊名段落中で符
号系名を付ければよい。するとその符号系名は,手続きコード中で使用したときその文字照合順序を指す
ようになる。
E.12.2 文字照合順序を選択する方法
E.12.2.1 既定の文字照合順序を使用
何もしないとき,既定の英数字照合順序及び各国文字照合順序が,比較及び順序付けに対して固有文字
照合順序になる。これは実装者定義であって,大抵の場合は,処理系中で用いる符号化文字集合の文字の
ビットパターンに基づいている。
環境によっては,文字照合順序が文化圏適応仕様になっていることもある−このとき応用プログラムは
他の処理系への移植を必要とせず,固有文字照合順序が利用者向けに適していることになる。
応用プログラムが他の処理系への移植対象である場合,又は異なる文化圏の利用者向けに設計されてい
る場合,既定の文字照合順序が適していることはまずないので,応用プログラムを設計するときは,特定
の文字照合順序を選択したり,文字照合順序を実行時に確定したりすることを許すCOBOLの機能を利用
する必要があるだろう。
E.12.2.2 特定の文字照合順序を使用
翻訳単位全体を通して,単一の英数字照合順序,単一の各国文字照合順序又は各々一つずつを選択する
だけでよい場合は,実行用計算機段落中でPROGRAM COLLATING SEQUENCE句を書く。これを次のコ
ード断片中で説明し,その場合には標準の文字照合順序を用いる。
例 PROGRAM-ID.
OrderParts.
...
ENVIRONMENT DIVISION.
...
OBJECT-COMPUTER.
PROGRAM COLLATING SEQUENCE FOR ALPHANUMERIC IS ASCII-Sort
FOR NATIONAL IS UCS-Sort.
...
SPECIAL-NAMES.
ALPHABET ASCII-Sort FOR ALPHANUMERIC IS STANDARD-1
ALPHABET UCS-Sort FOR NATIONAL IS UCS-4.
OrderPartsプログラム全体を通じて,これらの文字照合順序を比較,整列及び併合のために使用するた
めに,このほかに必要なことはない。
E.12.2.3 現地特性を使用
文字照合順序の実行時選択のため現地特性を使用する方法は,E.13.2.3(現地特性に基づく文字照合順序)
及びE.13.2.1.1(COBOL実行時モジュール中での現地特性切換え)による。
E.12.2.4 索引ファイル用に文字照合順序を選択
索引ファイルの主レコードキー及び副レコードキーに対する既定解釈の文字照合順序は,そのファイル
を生成した実行時モジュールに対する固有プログラム文字照合順序である。特定の文字照合順序を選択す
579
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
るためには,ファイル生成及びそれ以降のアクセス用のファイル管理記述項にCOLLATING SEQUENCE
を書けばよい。異なるキーに対しては異なる文字照合順序も使用できるが,この機能は,まだ広く実装・
提供されてはいない。
次のコード断片は,複数の副レコードキーを指定しているファイル管理記述項であり,独自の文字照合
順序をもつキーがある例である。
例
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SECTION File-1
ACCESS MODE IS RANDOM
ALTERNATE RECORD KEY IS altkey̲1
ALTERNATE RECORD KEY IS altkey̲2
ALTERNATE RECORD KEY IS altkey̲3
ALTERNATE RECORD KEY IS altkey̲4
RECORD KEY IS prim-key
...
COLLATING SEQUENCE OF altkey̲1 altkey̲2
FOR ALPHANUMERIC IS Universal-order
COLLATING SEQUENCE OF prim-key
FOR NATIONAL IS Universal-order
...
この例は,用途NATIONALと記述された主キーと,用途DISPLAYと記述された副キーとに対するもの
である。主キーと,副キーaltkey̲1及びaltkey̲2との文字照合順序は,符号系名Universal-orderに関連付け
られたものになる。altkey̲3又はaltkey̲4を指定するCOLLATING SEQUENCE句は存在しないので,それ
らのキーは固有文字照合順序を用いて並べられる。
二つ以上の文字を等価としている文字照合順序の選択を用いて,実際の2進符号化表現が異なる場合で
もキーが一致するようにみなすことができる。例えば,小文字と大文字とを等価とする場合,内容が"ABC"
のキーは"abc"に等しいことになる。
E.12.3 翻訳時文字照合順序
翻訳時に判明している文字照合順序は通常,実行時モジュールが翻訳されている処理系の固有文字照合
順序である。VALUE句又はEVALUATE文にTHROUGH指定を書いたとき,値の範囲の評価は,翻訳時に
行われることも実行時に行われることもあり実装系によって異なる。評価が翻訳時に行われるとき,実行
時文字照合順序が翻訳時の順序と異なるため,期待していた値が実行時の実際の値の範囲内に含まれない
ことがあるかもしれない。このような場合を扱うため,符号系名をTHROUGH指定中に書いて,実行時の
値の範囲が特定の値の集合になることを確実にすることができる。
例 ENVIRONMENT DIVISION.
...
SPECIAL-NAMES.
ALPHABET normal-range IS STANDARD-1.
...
DATA DIVISION.
...
01 a-condition
PIC X.
88 ok
VALUES ARE "1" THROUGH "G" IN normal-range.
この結果として,値の範囲は,STANDARD-1に関連する文字照合順序(符号化文字集合ISO/IEC 646)
によって指定される範囲−この場合は0〜9,特殊文字の幾つか,そして大文字のA〜Gとなる。この値の
範囲で規定される文字は実行時に,用いられる符号化文字集合及び文字照合順序には関係なく,条件ok
を満足させることになる。これによって応用プログラムの移植性が向上する。
580
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
STANDARD-1及びUCS-4は既定義の符号系名であり,移植可能な値の範囲を指定するのに使用できる。
符号系名を指定しない場合は,この値の範囲は,処理系によって空だったり処理系間で変化したりする
ことがある。なぜなら,実装者が選択した既定解釈の文字照合順序は,おそらく処理系によって異なるか
らである。
E.12.4 比較用の組込み関数
文化圏に適応した文字照合順序を,全ての比較で用いる必要はないが,特定の場面だけで用いたい場合,
比較用の組込み関数LOCALE-COMPAREを用いるとよい。これは,二つの引数を比較するために,現在
有効現地特性又は特定の現地特性を使用する。
複数の文化圏に適応した複雑な比較が必要になる場合,比較用の組込み関数STANDARD-COMPAREを
用いるとよい。これは,二つの引数を比較するために,ISO/IEC 14651:2001に合致した標準の順序付け表
を使用する。これを書いている時点で順序付けの規格は広く実装されてはいないが,漸次普及すると期待
されている。
E.13 文化圏特定,文化圏適応及び多言語対応の応用プログラム
文化圏特定の(culturally-specific)応用プログラムとは,その設計が,1種類の特定な言語又は文化圏の
要望向けのものである。
文化圏適応の(culturally-adaptable)応用プログラムは,設計と符号化とは一度だけであるが,複数個の
異なる言語又は文化圏の利用者向けであって,実行時に調整されて特定の言語又は文化圏に適した方法で
動作するものである。
多言語対応の(multilingual)応用プログラムは,設計と符号化とは一度だけであるが,実行中に1種類
以上の言語又は文化圏を扱うものである。
E.13.1 文化圏特定の応用プログラム
この規格中の機能で,一つの特定な言語又は文化圏向けの応用プログラムの開発を容易にするものは,
次のとおりである。
− 複数文字の通貨文字列及び大文字・小文字混交の通貨文字列
− 特別な符号系に属する文字群に対する字類検査
− 特定の現地特性の選択及び使用する機能の実現
複数文字の通貨文字列を定義するには,特殊名段落にCURRENCY SIGN句を書く必要がある。
例 SPECIAL-NAMES.
CURRENCY SIGN IS "EUR " with PICTURE SYMBOL "U". *> EURの後の空白に注意
このとき,PICTURE文字列中では英字の"U"を用いることができる。例えば,PIC U99.99−これで長
さ9の項目を定義する。値10.00に対する編集データ項目の内容は "EUR 10.00" になるだろう。
次に示すコード断片で,名称CYRILLICに関連する符号化文字集合を用いた字類検査を説明する。ここ
で名称CYRILLIC及びそれに関連する符号化文字集合は,実装者が規定済みであると仮定している。
例 SPECIAL-NAMES.
ALPHABET OK-data FOR ALPHANUMERIC IS CYRILLIC.
...
DATA DIVISION.
...
01 the-input-stream USAGE DISPLAY PIC N(80).
...
PROCEDURE DIVISION.
...
581
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
IF the-input-stream IS OK-data THEN ...
この字類検査が真になるのは,the-input-stream中の文字群が符号化文字集合CYRILLICにおいて
定義された文字群だけのときである。
E.13.2 文化圏適応の応用プログラム
文化圏適応の応用プログラムの本質は,一度書いたらそのソースコードを再翻訳する必要なしに,異な
る文化圏における同じ型の処理系上でその応用プログラムを使用できる,ということである。COBOLで
は,次に示す文化的要素に対しての文化圏適応性を実装・提供している。
− 金額の形式変換
− 数値の形式変換
− ファイル索引,整列/併合,及び比較の文字照合順序
− 大文字・小文字の字類分け
− 日付及び時刻の形式変換
ある応用プログラムを文化圏適応とするために,これら文化的要素の詳細仕様はCOBOLの外部で規定
され,実行時に容易に選択可能となっている。この詳細仕様は現地特性の中に規定する。現地特性は一組
の文化的規約の集合を包含しており,一般に,操作環境中でユーティリティによって構築するか,COBOL
実装者が供給しているか,又は操作環境の一環として供給されているか,のいずれかである。そのような
ユーティリティは,実装者が用意していることも,操作環境に由来していることも,購入が必要なことも
ある。実装者が組込み現地特性を幾つか用意していることもある。そのとき,現地特性を実装・提供する
各々の操作環境には,その地域の文化圏向けに定義されたシステム既定解釈現地特性(system-default
locale)が存在する。また大抵の場合は,各々の応用プログラムに利用者既定解釈現地特性(user-default
locale)をもたせる機能,及び応用プログラムの実行中に選択が可能な各種の現地特性をもたせるための機
能まで存在する。
この規格では,操作環境が現地特性を実装・提供していない場合を考慮して,COBOL実装者に少なく
とも1種類の現地特性を提供することを要求している。利用者は,応用プログラムで使用可能な現地特性
を知ることが必要になる。
ある応用プログラムを文化圏適応用に設計するときに検討する事項は,COBOLが実装・提供している
文化的要素以外にもたくさんある。例えば,様々な表記の金額を収納できるようにフィールドの大きさを
決める必要があるかもしれない。メッセージの文面はテーブル又はファイルに隔離して,容易に取り換え
られるようにしておくと役に立とう。設計上で意図している文化圏によって変化する可能性のある要素に
ついて,また,そのような要素の詳細仕様を翻訳時にではなく実行時に決定する方法についても,考えて
おく必要があろう。
E.13.2.1 現地特性の選択
起動時には利用者既定解釈現地特性が実行単位で使用可能になり,この現地特性は,SET文の実行で別
の現地特性に切換わるまで,その実行単位の全てのCOBOL実行時モジュールで,(特定の現地特性が示さ
れたデータ要素,関数又は文を除く)現地特性に基づく処理の全ての現地特性カテゴリに用いられる。
SET文を用いての現地特性の切換えは,単一のカテゴリに対してだけ行うことも,一度に全てのカテゴ
リに対して行うこともできる。例えば,システム既定解釈現地特性を金額の形式変換に対してだけ用いる
とき,SET文を次のように書くことができる。
SET LOCALE LC̲MONETARY TO SYSTEM-DEFAULT
現地特性を選択するための,これ以外の例は,後述とする。
582
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
E.13.2.1.1 COBOL実行時モジュール中での現地特性切換え
応用プログラム中において,システム既定解釈現地特性又は利用者既定解釈現地特性の代わりに,特定
の現地特性(の組)を用いるときは,現地特性は,特殊名段落の中,及びCOBOLの手続きコードで使用
するために設定される現地特性名から識別する必要がある。現地特性を識別する方法の詳細はCOBOL実
装者が規定する。名前付き現地特性を集めたライブラリが提供されることもあれば,データセットの所在
を定数で実装者が受け取ることもある。これらは一例であり,実装者が何を提供しているかを知るには,
COBOLコンパイラ用の利用者向け文書を参照されたい。
次に示すコード断片で,現地特性識別及び切換えを行うための書き方を説明する。ここでFrench-1及び
Swiss-2という名前の現地特性は,実装者が提供していると仮定する。
例 PROGRAM-ID.
IndexParts.
ENVIRONMENT DIVISION.
OBJECT-COMPUTER.
PROGRAM COLLATING SEQUENCE FOR NATIONAL IS Locale-Sort.
*> これで,各国文字照合順序は実行時に,現在有効現地特性つまり利用者既定値から決まる
*> この設定値は,SET文で別の値へ切換えされるまでそのままである
...
SPECIAL-NAMES.
*> 幾つかの現地特性に名前を付けておき,後でSET LOCALE文において使用
LOCALE French IS "D:¥LocaleLib¥French-1" *> ライブラリの例
LOCALE Swiss IS Swiss-2
*> もう一つの例,名前付き現地特性
...
*> 符号系名Locale-Sortを現地特性の機能に関連付け
ALPHABET Locale-Sort FOR NATIONAL IS LOCALE.
...
DATA DIVISION.
...
01 default-locale-pointer USAGE POINTER. *> 標準の現地特性の退避用
...
PROCEDURE DIVISION.
*> 利用者既定解釈現地特性を最初に有効にする。これを再び有効にするには,
*> 利用者既定解釈現地特性を識別しているポインタを退避しておく。
SET default-locale-pointer TO LOCALE USER-DEFAULT.
...
*> ここで,使いたい現地特性へと切換えを行う。
*> 全ての現地特性カテゴリを一度に切換えたくない場合,
*> 切り換えたいカテゴリごとにSET文を指定する。
SET LOCALE LC̲COLLATE TO Swiss *> プログラム文字照合順序の切換え
SET LOCALE LC̲MONETARY TO French *> 金額の形式変換の切換え
...
*> ここで,これら2種類の現地特性を使った処理が完了し,
*> しばらくの間は利用者既定解釈現地特性を使う。
SET LOCALE LC̲COLLATE TO USER-DEFAULT
SET LOCALE LC̲MONETARY TO USER-DEFAULT
...
*> ここで,利用者既定解釈現地特性を,名前を付けた現地特性に切り換える。
SET LOCALE USER-DEFAULT TO Swiss
...
*> ここで,Swiss現地特性での処理は済んだので,利用者既定解釈現地特性を復元する。
SET LOCALE USER-DEFAULT TO default-locale-pointer.
583
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
...
現在有効現地特性のアドレスは,以後の処理で不要であると判明しているのでない限り,新たな現地特
性へと切り換える前に退避しておくとよい。
E.13.2.1.2 COBOLの外部での現地特性切換え
実装者は,COBOLと別のプログラム言語(C言語など)の間で相互運用性を実装・提供してもよい。
実装・提供された場合,活性化された非COBOL実行時モジュールでの利用者既定解釈現地特性に対する
切換えを,COBOLへ復帰した時点で認識可能か否かは,実装者が決定する。実装・提供されるとしても,
COBOLでの認識は自動的に行われるのではなく,利用者既定解釈現地特性を指定しているSET文を
COBOLで実行する必要がある。例えば,新たな現地特性の全てのカテゴリにアクセスするには,次のよ
うにする。
SET LOCALE LC̲ALL TO USER-DEFAULT
E.13.2.2 現地特性に基づく金額及び数値の表記
現地特性に基づく金額又は数値の表記を行うには,データ項目のデータ記述項においてPICTURE句に
LOCALE指定を書く。
ある項目全体を,PICTURE仕様に関係なく現地特性に従って編集するためには,PICTURE文字列に
LOCALE指定を書かなければならない。LOCALE指定を用いる場合PICTURE文字列は,編集項目を保持
するのに必要なフィールドの大きさを指示するものではない。PICTURE句にSIZE指定には,プログラマ
が設計した,必要とされる最大の大きさを書くのがよい。
例えば,
01 US-amount PICTURE +¥9.9 LOCALE SIZE IS 10.
この結果は,符号付き数字編集フィールドで長さは10文字分,現地特性のカテゴリLC̲MONETARYに
従って編集されることになる。通貨文字列及びその配置,符号に関する規約,けたまとめ文字及びその配
置,並びに小数点文字及びその配置は,編集処理時点の現地特性から決まることになる。カテゴリ
LC̲MONETARYは金額表記であるかないかに関係なく,全ての数値表記に用いられる。
編集処理に特定の現地特性を用いるときは,特殊名段落中でそれに現地特性名を付ける必要がある−例
えば,次ではmy-localeが現地特性名である。
例 SPECIAL-NAMES.
LOCALE my-locale IS USA-1.
*> 実装者がUSA-1という名前の現地特性を定義又は参照する手段を提供していると仮定する。
...
DATA DIVISION.
...
01 US-amount PICTURE +¥9.9 LOCALE my-locale SIZE IS 10.
複数種類の現地特性を用いてもよい。例えば,報告書を書くとき,ある列には合衆国の通貨を用いて,
別の列にはイタリアの通貨を用いるには,次のように定義すればよい。
例 LOCALE my-US-locale IS USA-1
LOCALE my-Italian-locale IS Italian-1.
...
DATA DIVISION.
01 REPORT-DETAIL.
...
05 US-amount PICTURE +¥9.9 LOCALE my-US-locale SIZE IS 8.
...
05 Italian-amount PICTURE +¥9.9 LOCALE my-Italian-locale SIZE IS 18.
...
584
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
E.13.2.3 現地特性に基づく文字照合順序
ある現地特性によって規定される文字照合順序を,翻訳単位全体を通して使用するには,PROGRAM
COLLATING SEQUENCE句を書いて,現地特性の機能に関連する符号系名をそこに指定しなければならな
い。次に示すコード断片で,各国文字照合順序のための現地特性の選択と,標準の英数字照合順序の選択
とを説明する。
例 OBJECT-COMPUTER.
PROGRAM COLLATING SEQUENCE
FOR ALPHANUMERIC IS ASCII-Sort
FOR NATIONAL IS UCS-Sort
...
SPECIAL-NAMES.
ALPHABET ASCII-Sort FOR ALPHANUMERIC IS STANDARD-1
ALPHABET UCS-Sort FOR NATIONAL IS LOCALE
これによって,実行時の各国文字照合順序は実行中に,現在有効現地特性のカテゴリLC̲COLLATEで
規定される文字照合順序となる。英数字照合順序は,STANDARD-1に関連する文字照合順序である。
次に示すコード断片で,現地特性に基づく単一の文字照合順序をSORT文で使用する方法を説明する。
例 PROGRAM-ID. IndexParts.
...
SPECIAL-NAMES.
ALPHABET ucs-sort-a FOR ALPHANUMERIC IS LOCALE
ALPHABET ucs-sort-n FOR NATIONAL IS LOCALE
...
PROCEDURE DIVISION.
...
*> ファイルを整列する。現在有効現地特性を英数字と各国文字との両方のキーに適用する
SORT SortFile ASCENDING KEY key-item-a, key-item-n
COLLATING SEQUENCE
FOR NATIONAL IS ucs-sort-n
FOR ALPHANUMERIC IS ucs-sort-a
USING A-file
GIVING Another-file.
...
文字照合順序に用いる現地特性の切換えは,E.13.2.1.1(COBOL実行時モジュール中での現地特性切換
え)で説明した。
E.13.2.4 現地特性に基づく大文字・小文字の字類分け
大文字・小文字の字類分けを,現地特性のカテゴリLC̲CTYPEから決まるようにできる。カテゴリ
LC̲CTYPEは,文字の字類分け,大文字・小文字の変換,そのほか文字の性質を定義している。これを行
うには,実行用計算機段落にCHARACTER CLASSIFICATION句を指定しなければならない。
例 OBJECT-COMPUTER.
CHARACTER CLASSIFICATION IS German, Japanese.
*> GermanはUSAGE DISPLAYに,JapaneseはUSAGE NATIONALに適用
...
SPECIAL-NAMES.
LOCALE German IS "GER046"
LOCALE Japanese IS Japan-123.
この結果,実行時に現在有効現地特性を用いて,次に示す事項が決まることになる。
− 字類検査で,ある文字がALPHABETIC,ALPHABETIC-UPPER,又はALPHABETIC-LOWERである
か否か
585
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
− VALIDATE文で検査する場合,データ項目の内容がPICTURE文字列に整合しているか否か
− 組込み関数のUPPER-CASE又はLOWER-CASEを用いた変換で,ある文字が大文字又は小文字に該当
するか否か
現地特性に基づく大文字と小文字との変換を,UPPER-CASE関数又はLOWER-CASE関数を用いて行う
と,結果として返却される文字数が元の引数よりも多いか又は少ないことがある。ただし,これらの関数
を現地特性なしで用いた場合,返却される文字列は元の引数と常に同じ長さになる。
E.13.2.5 日付及び時刻の形式変換
現地特性に基づく日付及び時刻の形式変換は,それぞれ組込み関数のLOCALE-DATEとLOCALE-TIME
によって提供される。
ある日付フィールドをある現地特性に従って現地特性に基づく書式へ変換するには,LOCALE-DATE関
数を使用して,その現地特性の現地特性名を第2引数に指定する。
例 MOVE FUNCTION LOCALE-DATE (some-date-field, my-Italian-locale)
TO a-date-field
現在の日付を現在有効現地特性に従って現地特性に基づく書式へ変換するには,LOCALE-DATE関数を
用いて,現地特性を第2引数に指定しないでおく。
例 MOVE FUNCTION LOCALE-DATE ( CURRENT-DATE (1:8) ) TO a-date-field
同様にして,現地特性に基づく時刻は,LOCALE-TIME関数を使用すれば取得できる。
E.13.3 多言語対応の応用プログラム
多言語対応の応用プログラムは,UCSの形式のいずれかを実行時の計算機符号化文字集合として実装者
が実装・提供している場合は,より容易に開発できる。UCSでは世界中の言語の大半が提供されており,
UCSの開発の継続に伴って更に多くの言語の文字が追加されつつある。
これを書いている時点で,UCS-4及びUTF-16を実装・提供している装置は,まだ広く普及するには到
っていないが,国際的に使われる応用プログラムに対する要求によって,このような装置が普及してゆく
のは時間の問題である。利用者は,実装者の文書を調べて,用途DISPLAYか用途NATIONALのどちらか
でUCSが実行時の符号化文字集合として使用されているかどうかを確認する必要がある。大抵の場合,用
途NATIONALで使われることになるだろう。
Unicode ® の実装・提供はUCSの実装・提供と同義である。
UCS-4又はUTF-16を使用しただけでは,多言語対応の応用プログラムを開発するために十分だとは限
らない。応用プログラムが文化的に正しい金額及び数値の形式変換,日付及び時刻の形式変換,大文字・
小文字の字類分けを必要としているとき,現地特性に基づく機能[E.13.2(文化圏適応の応用プログラム)
参照]を使用する必要があるかもしれない。
E.14 外部スイッチ
外部スイッチ(external switch)とは,実装者によって命名され定義されたハードウェア又はソフトウェ
アの装置であり,二つの交互状態のうち一方を示すために用いられる。これらの交互状態は,関連する外
部スイッチのオン(on)状態及びオフ(off)状態として言及される。
外部スイッチの状態は,そのスイッチに関連する条件名を検査して確認してもよい。外部スイッチと条
件名との関連付け,及び利用者指定の呼び名と外部スイッチのスイッチ名との関連付けは,環境部の特殊
名段落において確立される。
特定のスイッチの状態は,SET文によって変更してもよい。
586
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
E.15 共通例外処理
例外処理とは,COBOL文の実行中に発生した例外を検出して処理するための方法である。
例外処理の手法は一種類ではない。古典的な手法には,いろいろな文に関してAT END,INVALID KEY,
ON EXCEPTIONなどの例外指定を書く手法,FILE STATUSを用いて状態値を検査する手法,並びに入出
力状態コード,オープンモード及びファイル名に基づいてUSE文の宣言手続きを呼び出す手法がある。古
典的な手法は全ていつでも常に有効であり,共通例外処理よりも優先し,以前の規格COBOLと全く同じ
方法で作動する。その他の例外処理の手法を,共通例外処理(common exception processing)と呼ぶ。これ
は例外状態に基づいており翻訳指示によって有効化も無効化もできる。共通例外処理について,以降の段
落において記述する。
例外の原因は,文の処理中に発生する誤り(error)でも,何らかの条件でもよい。例外が発生したとき,
関連する例外状態が成立する。例外状態が成立するとき,以降の段落で記述した処理を更に行う。
各々の例外状態には,例外名又は例外オブジェクトが関連付けられる。例外オブジェクトの概念は,
E.17.9(例外オブジェクト)による。これ以降の記述中では,例外名が表す既定義の例外状態を参照する。
これらの例外名は,例外状態を処理する構文で用いる。例外名を指定してもよい箇所は,TURN翻訳指示,
EXIT文又はGOBACK文のRAISING指定,RAISE文及びUSE文だけである。例外名には三つのレベルが
ある。レベル1は全てを包括する例外名EC-ALLである。レベル2は,特定の型に関連付けられた例外を
識別する。レベル2の例外名は,EC-ARGUMENT,EC-BOUND,EC-DATA,EC-FLOW,EC-I-O,EC-IMP,
EC-LOCALE,EC-OO,EC-ORDER,EC-OVERFLOW,EC-PROGRAM,EC-RAISING,EC-RANGE,EC-REPORT,
EC-SCREEN,EC-SIZE,EC-SORT-MERGE,EC-STORAGE,EC-VALIDATE及びEC-USERである。
レベル3の例外名は,レベル2の例外名の後に,実際の例外状態を識別する文字列を付けたものである。
レベル3の例外状態が引き起こされたとき,そうしたければ,その例外を処理するために,関連するレベ
ル2の例外名及びEC-ALLを使用してもよい。
利用者は,EC-USER-に接尾語を付けて例外を定義できる。例えば,EC-USER-OVERDRAWNに,口座
からの引き出し過ぎという意味をもたせてもよい。"RAISE EC-USER-OVERDRAWN"を実行すれば,利用
者は宣言手続きの実行を引き起こせることになる。
同様にして,実装者は,EC-IMP-に接尾語を付けて例外を定義できる。この場合,その例外の致命度,
例外の要因などは実装者定義とする。
例外の検査は,初期状態では全ての例外状態に対し無効であるが,翻訳時にTURN翻訳指示を用いて有
効化できる。例外状態の検査が有効なとき,TURN翻訳指示を用いて無効化できる。TURN翻訳指示には,
レベル3の例外名,関連するレベル2の例外名,又はEC-ALLのいずれを指定してもよい。
例外の検査は,明示指定すれば局所的に無効化される。例えば,SIZE ERROR指定を算術文に書くと,
EC-SIZE例外状態の発生がその文に対しては無効化される。ただし,項目識別中の検査は常に有効とする。
例外状態が成立して,その例外状態に対する検査が有効な場合は,例外状態が引き起こされ,直前例外
状態はその例外状態を示すように設定される。それ以降の処理は,明示的な指定又は該当する宣言手続き
の有無によって異なる。明示的な指定があれば,それが宣言手続き又は既定解釈の動作より優先する。例
えば,算術けたあふれが起きた場合,SIZE ERROR指定又はNOT SIZE ERROR指定があれば,その指定が
優先するのでEC-SIZE例外状態は発生しない。そのような指定がなければ,USE AFTER EXCEPTION
EC-SIZEのあるいずれかの宣言手続きが実行される。SIZE ERROR指定とNOT SIZE ERROR指定とは,
EC-SIZEの検査が有効でなくても機能する。
587
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
例外宣言手続きが実行される場合,その宣言手続きの終了方法は一つではない。利用者がEXIT …
RAISING文又はGOBACK RAISING文を実行すると,その宣言手続きを実行する原因となった例外
(RAISING LAST EXCEPTION)を,又はその他の例外(RAISING EXCEPTION例外名又はRAISING一意
名)を,活性化する側の関数・メソッド・プログラムに伝ぱ(播)させることができる。これによって,
活性化する側の実行時要素中に例外状態が成立するようになる。さらに,利用者がRESUME文を実行す
ると,その例外を引き起こした文の直後の文から(RESUME AT NEXT STATEMENT),又はそのソース要
素中の非宣言手続き部分にある手続き名から(RESUME AT手続き名),実行を再開させることができる。
最後の方法は,その宣言手続きの終わりまで順次実行することである。この場合,例外状態が致命的であ
れば,実行単位の実行は終了する。例外状態が致命的でなければ,RESUME AT NEXT STATEMENTを実
行したかのように実行は続く。
例外状態が有効でありその例外が成立するが,適用できる宣言手続きが存在せず文に対する明示的な指
定もない場合に行われる既定解釈の動作は,特定の例外状態及び他の要因によって異なる。例外状態が致
命的ではないと定義されているとき,文の規則の規定どおりに実行が続く。例えば,EC-I-O-AT-ENDが発
生すれば,READ文に続く次の実行可能文から実行が続くことになる。例外状態が致命的であると定義さ
れているとき,更に行われる処理はPROPAGATE翻訳指示によって異なる。PROPAGATE ONが有効なと
き,現在の実行時要素の実行が終了し,EXIT文又はGOBACK文のRAISING LAST EXCEPTION付きを指
定したかのように,発生した例外が呼出し元の実行時要素に伝ぱ(播)する。PROPAGATE ONが有効で
ないときは,実行単位の実行が終了する。
利用者は,主に利用者定義の例外に対し,RAISE文を実行して例外の発生を引き起こすことができる。
例外状態についてのこれ以上の情報は,一連の関数を用いて獲得する。これらの関数は直前例外状態に
ついての詳細な情報を返す。その関数及び返却値は,次のとおりである。
− EXCEPTION-FILEは,最新の入出力状態値及び直前例外状態の関連ファイルに関する情報を英数字列
で返す。
− EXCEPTION-FILE-Nは,最新の入出力状態値及び直前例外状態の関連ファイルに関する情報を各国文
字列で返す。
− EXCEPTION-LOCATIONは,直前例外状態に関連する例外を引き起こした文の所在情報を英数字列で
返す。文字列の一部は実装者定義とする。
− EXCEPTION-LOCATION-Nは,直前例外状態に関連する例外を引き起こした文の所在情報を各国文字
列で返す。文字列の一部は実装者定義とする。
− EXCEPTION-STATEMENTは,直前例外状態に関連する例外を引き起こした文を示す文の名前を返す。
− EXCEPTION-STATUSは,直前例外状態に関連した例外名を返す。
E.16 標準算術
標準算術が有効なとき,共通な算術演算のほとんどは予測可能で合理的で移植可能な結果を生成する。
この文脈で移植可能とは,異なる実装系でその結果が一致することを意味する。
これらを完遂するため,COBOLには標準算術を実現する幾つかの機能が含まれている。これには,次
のものが含まれる。
1) 見出し部のARITHMETIC句は,そのソース要素に対する算術モードを決定する。
2) 標準中間データ項目を用いて,算術式中の作用対象,並びにあらゆる算術演算,算術式,整数型及び
数字型の組込み関数の結果を格納する。標準中間データ項目は概念上のデータ項目であって,実装者
588
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
がそれを適宜に実装する。
3) 二項算術演算子 +,‒,*,/ 及びSQRT関数は,31けたまでは誤差のない結果を生成するように定義
されている。べき乗は,べき指数の値が ‒4,‒3,‒2,‒1,0,1,2,3,4 である場合には,31けた
までは誤差のない結果を生成するように定義されている。
4) 算術式の評価順序が定義されている。
5) 全ての算術文,SUM句,並びに多くの整数型及び数字型の関数は,算術式の表現で定義されている。
この算術式は,2) の標準中間データ項目と,3) の算術演算子とで構成されている。
6) 算術式の一部である単独演算の結果が標準中間データ項目に収まらない場合は常に,けたあふれ条件
が引き起こされてEC-SIZE-OVERFLOW例外状態になる。
7) けたあふれ条件の発生とEC-SIZE-OVERFLOW条件状態の成立とは,結果の一意名への転記に関して
起こるほか,除算及びべき乗の誤りに関しても起こる。
次の主な決定事項が標準算術に取り入れられた。詳細な理論的根拠はこの規格の範囲外であるが,利用
者にとっての機能の重要性,実行の負荷,及び合理的で予測可能な結果であることを考慮した。
1) 標準中間データ項目は,32けたからなる。
2) ゼロは,算術中間データ項目の特異な値である。
3) 標準中間データ項目は,仮数部が正規化された浮動小数点10進数形式で記述されるが,その表現は,
同じ結果が得られるならどのような形式であってもよい。
4) 標準中間データ項目の指数部は,999から ‒999までの範囲内の値をとる。
5) ある結果がゼロに近く標準中間データ項目で表現できないときは,丸められてゼロになる代わりに,
けたあふれ条件が発生してEC-SIZE-UNDERFLOW例外状態になる。
6) 2項演算及びSQRT関数で,有効数字32けた目を越えたけた位置は切り捨てられる。切捨ては,丸め
の方式の一つであり,“ゼロへの丸め”とも呼ぶ。
7) 1個以上の標準中間データ項目が関与する比較の前に,その結果は31けたに丸められる。
8) べき乗において,移植可能な結果が生成されるのは,たとえ底が移植可能な値であっても,べき指数
の値が ‒4,‒3,… 3,4の場合だけである。
標準算術を指定したとき,結果の移植可否には関係なく,その結果は次の2種類の予測を示す。
1) 実行時要素の一回の実行の中では,作用対象及び引数の値と指定順序とが同じである限り,算術文,
算術式,SUM句,並びに数字組込み関数及び整数組込み関数は,同じ算術結果を生成する。
2) ある算術を表現する等価な方法は,同じ算術結果を生成する。等価な方法が算術式で定義されている
場合にこれが当てはまる。例えば,次の三つの文は全て,同じ算術結果を生成する。
ADD A B C GIVING D
COMPUTE D = FUNCTION SUM (A B C)
COMPUTE D = A + B + C
標準算術で,先の二つは算術式 (A + B + C) と等価であると明示的に定義され,これは第三の
例で与えられる式と同じになる。
作用対象と演算子の順序には重大な意味が出てくることがあるので,気をつけることは重要である。特
に,一つの算術式中で複数の作用対象が表す数字けたの大きさに非常に差がある場合に,これが当てはま
る。例えば,次の二つの文が生成する結果は異なる可能性がある。
ADD A B C GIVING D
ADD C B A GIVING D
589
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
標準算術を指定したときにもう一つ気をつける点は,算術式の一部が実装者定義であるとき,その算術
式のほかの部分は該当する規則に従って評価されるということである。例えば,次の式で,
13 + A ** 0.4
実装者定義のA ** 0.4の値が何であろうと,式全体の結果は,算術式の評価に対する規則に従い,その
値と13を加えた正確な結果となる。A ** 0.4の値が103.698 974のとき,式全体の値は116.698 974である。
E.16.1 切捨て又は丸めによる最大誤差
ここでは,1個又は2個の作用対象が関与する基本演算に対して,下位けたの切捨て及び丸めによって
生じる,最大誤差を提示する。短縮形ulpは,最下位けたの単位を意味する。一般に,特定の状況を解析
することによって,切捨て又は丸めから予想される最大誤差を減らしたり,完全に排除したりできること
がある。
E.16.1.1 算術文
COMPUTE文については,後述するE.16.1.2(算術式中の算術演算)による。
E.16.1.1.1 ADD文及びSUBTRACT文
次の例について,
ADD A TO B
ADD C TO D GIVING E
SUBTRACT A FROM B
SUBTRACT C FROM D GIVING E
作用対象であるAとBとの対又はCとDとの対を合成したものが,32けたより少ない場合,かつ,そ
の送出し先であるBとEがそれぞれ,小数点の右側に,少なくとも作用対象の合成と同じけた数をもつ場
合,切捨て又は丸めによる誤差は生じない。その他の場合,ROUNDED指定があれば,丸めによる最大誤
差が送出し先の1/2 ulpとなり,ROUNDED指定がなければ,切捨てによる最大誤差が送出し先の1 ulpと
なる。
E.16.1.1.2 MULTIPLY文
次の例について,
MULTIPLY A BY B
MULTIPLY C BY D GIVING E
送出し元作用対象であるAとBとの対又はCとDとの対の,けた数を合計した値が32より少ない場合,
かつ,送出し先であるBとEとがそれぞれ,小数点の右側に,少なくとも送出し元作用対象の小数点の右
側のけた数の合計と同じけた数をもつ場合,切捨て又は丸めによる誤差は生じない。その他の場合,
ROUNDED指定があれば,丸めによる最大誤差が送出し先の1/2 ulpとなり,ROUNDED指定がなければ,
切捨てによる最大誤差は送出し先の1 ulpとなる。
E.16.1.1.3 DIVIDE文
次の例について,
DIVIDE A INTO C
DIVIDE A INTO B GIVING C
DIVIDE B BY A GIVING C
DIVIDE A INTO B GIVING C REMAINDER D
DIVIDE B BY A GIVING C REMAINDER D
商C又は剰余Dの切捨て又は丸めによる最大誤差は,商と剰余との両方に対して,送出し先の1 ulpを
590
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
超えることがある。
E.16.1.2 算術式中の算術演算
一般に,各基本演算に対しての切捨てによる最大誤差は,標準中間データ項目の1 ulpである。しかし,
特定の状況を解析することによって,最大誤差が減ったりなくなったりする場合を識別できることがある。
丸めは適用されない。
E.16.1.2.1 単項演算及び演算子なしの作用対象
次の例について,
+ A
‒ A
A
切捨てによる誤差は生じない。
E.16.1.2.2 加減算
次の例について,
A + B
A ‒ B
作用対象AとBとの合成が33けた未満のとき,切捨てによる誤差は生じない。
E.16.1.2.3 乗算
次の例について,
A * B
AとBとの有効けた数の合計が33未満のとき,切捨てによる誤差は生じない。
E.16.1.2.4 除算
次の例について,
A / B
被除数A又は除数Bのけた数を調べても,切捨て誤差を予測する方法はない。
E.16.1.2.5 べき乗
次の例について,
A ** B
次の場合,切捨てによる誤差は発生しない。
− Bの値が0である場合。
− Bの値が1である場合。
− Bの値が2であり,かつ,Aの有効けた数が17未満である場合。
− Bの値が3であり,かつ,Aの有効けた数が11未満である場合。
− Bの値が4であり,かつ,Aの有効けた数が9未満である場合。
E.16.1.2.6 SQRT関数
次の例について,
FUNCTION SQRT (A)
けた数を調べても,切捨てによる誤差を予測する方法はない。
E.16.2 例題
これらの例題では,標準算術の機能及び要求の幾つかを説明する。例題を簡単にするために,データ項
目の最大けた数には4を仮定し,標準中間データ項目は5けたの有効けた数をもつものと仮定する。切捨
591
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
て及び正規化を施す前の結果は,あり得る形式の一つに過ぎず,実際の実装系に必ずしも一致する必要は
ないが,切捨て後の代数値は,要求されるものである。
これ以降の例題で,"sidi" は“標準中間データ項目”,"ir-n" は“第n中間結果”を代表する。標準中間
データ項目及び中間結果を表記するには,理数系の表記を用いる。例えば,"+1.10000 E+4"と"+.11000 E+5"
とは,共に一万一千を表し,".06999 E+5"と"+.6999 E+4"とは,共に六千九百九十九を表す。
01 A PIC S9(4) VALUE +8000.
01 B PIC S9(4) VALUE +3000.
01 C PIC S9(4) VALUE ‒4001.
01 D PIC S9(4) VALUE is zero.
01 E PIC S99V99 VALUE +56.79
COMPUTE D = A + B + C.
Begin
ir-1 = A + Bを計算
Aをsidiに変換
+8.0000 E+3
Bをsidiに変換
+3.0000 E+3
加算 (あり得る表現の一つ)
+11.0000 E+3
正規化して切り捨て ir-1 に格納
+1.1000 E+4
ir-2 = ir-1 + Cを計算
ir-1の変換不要
+1.1000 E+4
Cをsidiに変換
‒4.0010 E+3
加算 (あり得る表現の一つ)
+0.6999 E+4
正規化 (切り捨て不要) ir-2 に格納
+6.9990 E+3
ir-2をDに格納
最終けたから丸め
+6.9990 E+3
Dへ転記
+ 6999
end
COMPUTE D ROUNDED = D + E
Begin
ir-1 = D + Eを計算
Dをsidiに変換
+6.9990 E+3
Eをsidiに変換
+5.6790 E+1
加算 (あり得る表現の一つ)
+7.05579 E+3
(正規化不要) 切り捨て ir-1へ格納
+7.0557 E+3
ir-1をDに格納
(ROUNDEDがあるのでsidiは丸めないが
Dが最大けた数をもつので効果は同じ)
ROUNDEDを適用
けたよせ
+ 7055.7
丸めでulpが1増加
+ 7056
Dへ転記
+ 7056
end
01 E PIC S9(4) VALUE +1291.
01 F PIC S9(3) VALUE +569.
COMPUTE E = E * F
Begin
ir-1 = E * Fを計算
Eをsidiに変換
+1.2910 E+3
Fをsidiに変換
+5.6900 E+2
592
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
乗算 (あり得る表現の一つ)
+0.734579 E+6
正規化し 切り捨て 格納
+7.3457 E+5
ir-1をEに格納
最終けたから丸め
+7.346 E+5
転記。SIZE ERROR
end
COMPUTE E = F * 0.754
Begin
ir-1 = F * 0.754を計算
Fをsidiに変換
+5.6900 E+2
0.754をsidiに変換
+7.5400 E‒1
乗算 (あり得る表現の一つ)
+4.29026 E+2
(正規化不要) 切り捨て ir-1へ格納
+4.2902 E+2
ir-1をEに格納
最終けたから丸め
+4.290 E+2
Eへ転記
+429
end
E.17 オブジェクト指向の概念
オブジェクト指向プログラミングでは,業務システムを,相互に作用し合うソフトウェアオブジェクト
の集まりとして開発し,実装する。
ソフトウェアオブジェクトは,自動車のような日常生活の大半のもの(object)と同様に,固有性(unique
identity)があり,何らかの属性と振る舞いをもっている。自動車であれば,固有の識別ができ,製造番号
があり,色,ドアの数,重さのように多くの属性がある。前進,後退,加速,変速といった振る舞いもあ
る。ソフトウェアオブジェクトは,実世界のものをモデル化するのに使われ,モデル化によって,実世界
のものの重要な概念をソフトウェアの中で抽象化する。例えば,自動車をモデル化するのに使われるソフ
トウェアオブジェクトであれば,固有性があり,色,重さ,長さのような属性,そして,前進及び後退の
ような振る舞いをもつだろう。
ソフトウェアオブジェクトは,ある問題領域に関係する,あらゆる概念をモデル化するのに使用できる。
例えば,銀行口座,従業員,部品,工程,プログラム,フィールド,ファイル,データ構造などを表現で
きる。
したがって,ソフトウェアオブジェクトとは,固有性,特定のデータ値,及び特定の振る舞い,すなわ
ちプログラムコードをもつ実体であるといってよい。プログラムコードは,小さなモジュールの集まりに
まとめられる。オブジェクト指向の用語では,これらモジュールはメソッドと呼ばれる。データは各オブ
ジェクトの内部にカプセル化され,そのオブジェクトのメソッドを使用することでしかアクセスできない。
E.17.1 クラス
業務システムに存在し得る何百から何千の異なったソフトウェアオブジェクトを扱いやすくするために,
オブジェクトはクラスにまとめられる。クラスは,共通のデータ構造をもち,同じメソッドを使うオブジ
ェクトのグループである。したがって,データ構造はクラスに定義できる。クラスの各オブジェクトは,
そのクラスの構造に従った,データ値の固有の組をもっている。同様に,メソッドもクラスのレベルで一
度だけ定義され,そのクラスの各オブジェクトによって使われる。
例
銀行業務システムでは,多数の個人口座が必要になる。各口座には,例えば口座残高や開設日のように,
593
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
関連するデータがある。また,各口座には,預け入れ,引き出し,残高照会といった,業務システムの他
の部分から個人口座へのアクセスを可能にするメソッドがある。当座預金口座のクラスは,全ての個人当
座預金口座のデータ割付け及びメソッドを定義するので,全ての口座は,同じように働き,同じ目的を果
たす。
E.17.2 オブジェクト
全てのオブジェクトは,それぞれただ一つのクラスに属し,あるクラスのオブジェクトは,ゼロ個以上
存在する。
E.17.2.1 オブジェクトのインスタンス化
クラスの個々の構成員をインスタンスオブジェクト,又は単に,インスタンスと呼ぶ。例えば,個々の
当座預金オブジェクトは,当座預金オブジェクトインスタンス又は当座預金インスタンスと呼ぶ。以後,
クラスの個々の構成員を指すのにインスタンスという用語を使う。
一つのクラスの全てのインスタンスは,同じデータ定義を共有するが,各インスタンスはそれぞれ独自
の値をもつ。
一つのクラスのインスタンスは,同じメソッドを共有する。メソッドはクラスで一回だけ定義されるが,
各インスタンスは,クラスで定義されたメソッドの唯一の所有者であるかのように振る舞う。メソッドは,
全てのインスタンスに共有され,全てのインスタンスによって使用される。各インスタンスのデータはそ
のクラスのメソッドからしかアクセスできないため,オブジェクト指向プログラミング環境のこの機能は,
各インスタンスのデータを隠す(カプセル化する)ことを可能にしている。
これ以降,コード部分及び銀行業務システム例では,次の規則を用いる。
− クラス名及びインタフェース名は,各単語の先頭を大文字にする。例えば,当座預金クラスは,
"CheckingAccount" とする。
− メソッド名は,最初の単語に小文字を使い,続く各単語の先頭を大文字にする。例えば,預け入れメ
ソッドは,"deposit" とし,手数料計算メソッドは,"calculateCharges" とする。
− データ項目名は,"-" で区切られた小文字の単語を最低2個もつ。例えば,顧客名は "customer-name"
とし,オブジェクトは "an-object" のようにする。
例
各当座預金口座は,それぞれ口座インスタンスが表現する。各インスタンスは,クラスによって記述さ
れた,顧客名,残高,口座開設日のデータのコピーをもつ。各インスタンスは,クラスで定義されたメソ
ッドを使って,例えば,預金メソッドで口座に入金するといった機能を果たす。
クラスを定義するプログラムのコードの中で,当座預金口座のクラスのインスタンスは次のように定義
できる。
...
OBJECT.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 checking-account.
*> 当座預金
03 customer-name
PIC X(35).
*> 顧客名
03 current-balance
PIC S9(9)V99.
*> 現在残高
03 date-opened
PIC 9(8).
*> 開設日付
...
PROCEDURE DIVISION.
METHOD-ID. deposit.
*> 預け入れ
594
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
<<メソッドコード>>
END METHOD deposit.
...
METHOD-ID. withdraw.
*> 引き出し
<<メソッドコード>>
END METHOD withdraw.
...
END OBJECT.
E.17.2.2 オブジェクトデータ定義
インスタンスオブジェクトはそれぞれが別個のものなので,生成される時に実行時システムが作る各イ
ンスタンスへの一意な参照値をもつ。オブジェクトの参照値は,そのインスタンスへのポインタとして使
える。オブジェクトの参照値は,特定のインスタンスを見分けるキーと考えられる。USAGE句は,オブ
ジェクトの参照値を保持するオブジェクト参照というデータ項目を定義する手段を提供する。次の例では,
データ項目a-checking-account及びan-accountがオブジェクト参照である。
例 OBJECT.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 checking-account.
03 customer-name
PIC X(35).
03 current-balance
PIC S9(9)V99.
03 date-opened
PIC 9(8).
01 a-checking-account
USAGE OBJECT REFERENCE.
01 an-account
USAGE OBJECT REFERENCE.
PROCEDURE DIVISION.
...
データ項目a-checking-accountは,特定のインスタンスの参照に使用できる。オブジェクト参照として定
義されたデータ項目は,次のようにSET文を使って,オブジェクト参照として定義された別のデータ項目
と等しい値に設定できる。
SET an-account TO a-checking-account.
この文は,a-checking-accountのオブジェクト参照からan-accountにオブジェクト参照の値を転記する。
E.17.2.3 オブジェクト参照
オブジェクト参照は,オブジェクトへの参照を保持するデータ項目である。オブジェクト参照の内容は,
オブジェクトの位置,及び関係する情報を特定するために使われる。
業務システムは,あるクラス,例えば従業員クラスのオブジェクトが,口座のような関係のないクラス
のオブジェクトとして使われることがないことを,翻訳時に保証してもよい。これは,クラス名,インタ
フェース名又はACTIVE-CLASS指定を付けて記述されたオブジェクト参照を使うことで保証される。ク
ラス名指定すると,E.17.4.1(継承)で説明するように,指定されたクラス及びそのクラスの下位クラスの
オブジェクトだけを参照することに使える。インタフェース名を指定すると,E.17.4.4(インタフェースに
よる多態性)で説明するように,指定されたインタフェースをIMPLEMENTS句で参照するオブジェクト
だけを参照することに使える。ACTIVE-CLASS指定を書くと,メソッドが呼出されるときに使われたオブ
ジェクトのクラスと同じクラスのオブジェクトだけを参照することに使える。ACTIVE-CLASSへのオブジ
ェクト参照は,返却項目の場合に特別な重要性をもつ。この機能は,Newメソッドを,適合規則に違反せ
ずにBASEクラスで定義するのに必要であり,また,この機能によって,クラス階層の定義に適合しなが
らオブジェクトを生成する利用者メソッドを書くことができる。
595
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
別の方法として,業務システムは,非限定オブジェクト参照という,いかなるオブジェクトでも参照で
きるオブジェクト参照を使ってもよい。USAGE句のOBJECT REFERENCE指定に何も指定しないことで,
データ項目は非限定オブジェクト参照になる。14.7(パラメタ及び返却項目の適合)で説明するように,
オブジェクトが正しいインタフェースをもっていることを保証するのに実行時の検証を使ってもよいが,
この方法は,より多くの実行時資源を必要とする。
例
CheckingAccount(当座口座)クラス又はその下位クラスのオブジェクトだけを参照できるデータ項目の
定義は,次のとおりである。
01 an-account
USAGE OBJECT REFERENCE CheckingAccount.
いかなるオブジェクトへの参照でも保持できるデータ項目の定義は,次のとおりである。
01 an-object
USAGE OBJECT REFERENCE.
E.17.2.4 ファクトリオブジェクト
既述のとおり,クラスは,そのクラスの各インスタンスオブジェクトのデータを記述し,そのクラスの
各インスタンスが使うことができるメソッドを定義する。各クラスにはファクトリオブジェクトというオ
ブジェクトが一つあり,クラスの新しいインスタンスを生成したり,そのクラスの全てのインスタンスに
関係するデータを管理したりする機能を請け負う。
ファクトリオブジェクトは,特別なクラスのインスタンスと考えることができ,データ(ファクトリデ
ータ)とメソッド(ファクトリメソッド)をもつ。ファクトリオブジェクトのデータとメソッドは,クラ
ス定義の一部として定義される。あるクラスの全てのインスタンスは,そのクラスのファクトリオブジェ
クトによって生成される。オブジェクトが生成される時,インスタンス用の記憶域の割付けに,クラスの
中のデータ記述が使われる。
例
次の当座預金口座クラスは,当座預金口座ファクトリオブジェクトと呼ばれるファクトリオブジェクト
を定義している。当座預金口座のインスタンスを生成するために,当座預金口座ファクトリオブジェクト
のメソッドが使われる。当座預金口座インスタンスの数を常に押さえておくために,ファクトリオブジェ
クト内のデータ項目を使うことができる。新しいインスタンスが生成されれば,値に1を加え,インスタ
ンスが削除されれば,値から1を引く。
当座預金口座ファクトリオブジェクトのサンプルコードは次のようになる。
CLASS-ID. CheckingAccount INHERITS Base.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
REPOSITORY.
CLASS Base.
FACTORY.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 number-of-accounts
PIC 9(5).
*> 口座数
PROCEDURE DIVISION.
METHOD-ID. newAccount.
*> 口座新設
create-account.
ADD 1 TO number-of-accounts.
...
END METHOD newAccount.
END FACTORY.
596
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
OBJECT.
...
END CLASS CheckingAccount.
E.17.3 メソッド
メソッドは,クラスの全てのインスタンスが必要とする特定の機能を定義する手続きコードである。メ
ソッドはモジュール又は副プログラムと考えることができる。クラスは,そのクラスで定義されるデータ
を管理するのに必要な数だけメソッドを定義する。メソッドは,わずか数行の手続きコードであることが
多いが,特定の機能を実現するために必要なだけの行数があってよい。
インスタンスオブジェクトのメソッドの一つを呼び出すために,インスタンスオブジェクトが使われる。
この機能は,プログラムの呼出し機能と似ている。従来のコーディング技法では,プログラムが別のプロ
グラムを,呼出し(call)によって活性化する。オブジェクト指向プログラミング技法では,オブジェクト
が別のオブジェクトを,呼出し(invoke)によって活性化する。
メソッドは,その名称だけで区別される。一つのクラスには,同じ名前のメソッドを複数定義できない。
継承されるクラスのメソッドと同じ名前のメソッドを下位クラスで定義するとき,継承するクラスのメソ
ッドは,継承されるメソッドを置き換える。
E.17.3.1 メソッド呼出し
プログラムとメソッドは,オブジェクトに働きかけるためにメソッドを呼び出すことができる。呼出し
文に指定されたメソッドの名前が,実行されるメソッドである。呼出し文には,メソッドに渡す実引数を
指定でき,メソッドから結果を返却することができる。
例
業務システムは,オブジェクトを使う必要があるとき,メソッドを呼び出してインスタンスオブジェク
トに働きかける。ここで,CheckingAccount(当座預金口座)クラスに,deposit(預け入れ)メソッド,withdraw
(引き出し)メソッド,及びbalance(残高照会)メソッドがあり,an-account が Account(口座)クラス
のインスタンスを参照しているとする。ある金額を口座に預け入れるための構文は,次のとおりである。
INVOKE an-account "deposit" USING in-amount
同様に,口座の現在の残高を知る構文は,次のとおりである。
INVOKE an-account "balance" RETURNING current-balance
文内メソッド呼出しを使った等価な文は,次のとおりである。
MOVE an-account ::"balance" TO current-balance
業務システムが,特定の口座の残高を知る必要があるとき,従来のプログラム又はメソッドは,インス
タンスにbalance(残高照会)メソッドを活性化するよう要求を出す。これを実現するコード例は,次のと
おりである。
ここでは,プログラムは,当座預金口座の残高を確認したいと仮定しよう。
プログラムコード
WORKING-STORAGE SECTION.
01 a-checking-account-object USAGE OBJECT REFERENCE CheckingAccount.
...
77 the-balance
PIC S9(8)V99 VALUE ZERO.
...
PROCEDURE DIVISION.
...
INVOKE a-checking-account-object "balance" RETURNING the-balance.
597
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
*> a-checking-account-objectの指す内容は,
*> 調べたい口座への参照であるとする。
当座預金口座クラス
...
OBJECT.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 checking-account.
*> 当座預金
03 customer-name
PIC X(35).
*> 顧客名
03 current-balance
PIC S9(9)V99.
*> 現在残高
03 date-opened
PIC 9(8).
*> 開設日付
...
PROCEDURE DIVISION.
...
METHOD-ID. balance.
*> 残高照会
DATA DIVISION.
...
LINKAGE SECTION.
01 ls-balance
PIC S9(8)V99.
*> 残高
...
PROCEDURE DIVISION RETURNING ls-balance.
return-balance.
MOVE current-balance TO ls-balance
EXIT METHOD.
END METHOD balance.
...
E.17.3.2 メソッド原型
メソッド原型は,骨組みだけのメソッドであり,メソッド名,引数,並びに,REPOSITORY段落及び
SPECIAL-NAMES段落に指定されるような特性の記述に必要な情報を定義する。手続きコードは含まない。
メソッドを呼び出すのに必要な情報を全て提供する。メソッド原型は,インタフェースを指定するので,
インタフェース定義の中で指定される。
例
SavingsAccount(普通預金口座)クラスのcalculateInterest(利息計算)メソッドに対するメソッド原型は,
次のとおりである。
METHOD-ID. calculateInterest.
*> 利息計算
DATA DIVISION.
LINKAGE SECTION.
01 interest-rate
PIC S9(3)V9999.
*> 利率
01 interest-amount
PIC S9(9)V99.
*> 利息額
PROCEDURE DIVISION USING interest-rate RETURNING interest-amount.
END METHOD.
E.17.4 その他のオブジェクト指向プログラミング機能
その他の機能には,継承(Inheritance),インタフェース(Interface)及び多態性(Polymorphism),並び
に適合(Conformance)がある。
E.17.4.1 継承
オブジェクト指向言語を,従来のプログラム言語と分ける言語機能の一つは,クラスの階層を展開して
いく能力であり,図E.6(管理者クラス)の例を示す。
598
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
Person
Employee
Manager
… 個人
… 従業員
… 管理者
図E.6−管理者クラス
管理者クラスは従業員クラスの下位クラスであり,従業員クラスは個人クラスの下位クラスである。逆
方向からいえば,従業員クラスは管理者クラスの上位クラスであり,個人クラスは従業員クラスの上位ク
ラスである。どの階層にあっても,あるクラスの上方のクラスは,上位クラス,すなわち祖先であり,下
方のクラスは,下位クラス,すなわち子孫である。下位クラスでは,全て祖先の全ての能力を包含してい
て,そこに更に能力を追加したり,祖先の能力を上書きしたりしてもよい。例えば,管理者クラスのイン
スタンスでは,そのクラスで定義されたメソッドだけでなく,個人クラス及び従業員クラスのメソッドが
使用可能である。
継承(inheritance)は,クラス階層を展開する機構である。
継承は,クラスを階層化していて,全ての下位クラスのインスタンスは,上位クラスのインスタンスで
あるかのように使用できる。例えば,管理者オブジェクトは,従業員オブジェクトであるかのように使用
できるし,従業員オブジェクトは,個人オブジェクトであるかのように使用できる。これがクラス間の適
合性の原則である。クラスが適合するとき,あるクラスのオブジェクトへの参照として宣言されたデータ
項目は,実際には,そのクラスの子孫であるクラスのオブジェクトを参照していてもよい。
継承は,二つのクラスが "AはBの一種である" という関係であることを表し,高位のクラスを特殊化
する手段である。図E.6(管理者クラス)では,管理者は従業員 "の一種である" し,従業員は個人 "の一
種である"。上位クラスである個人及び従業員に記述された全てのオブジェクトデータの定義と,それに加
えて,管理者クラスそれ自体に記述されたオブジェクトデータが,管理者クラスのインスタンスを生成す
るときに使用される。さらに,上位クラスで定義されたメソッドは下位クラスによって継承され,管理者
のインスタンスを直接操作するために使用される。
別のクラスを継承するクラスは,全ての祖先クラスのファクトリ及びインスタンスのデータ及びメソッ
ドを継承する。
継承が下位クラスを定義するのに使用されるとき,上位クラスで定義されたデータ項目は下位クラスで
定義されたメソッドが直接アクセスしてはならないため,上位クラスのデータはカプセル化されている。
全ての下位クラスは,上位クラスで定義されたデータ項目にアクセスするのに上位クラスで定義されたメ
ソッドを使う必要がある。例として,従業員クラスが "従業員名" というデータ項目を定義しているとき,
下位クラスが従業員名を取り出せるようにするには,従業員クラスは "氏名取得" というようなメソッド
を内包しなければならない。
クラスは,二つ以上のクラスから継承してもよく,これを多重継承と呼ぶ。
599
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
単独継承の例
銀行の口座には種類の異なるものがあるが,ただし,全て口座であることには変わりない。当座預金
(checking account)と普通預金(savings account)とを考えてみると,幾つか共通な機能があり,両方に名
義と残高とがある。異なる機能も幾つかあって,一方では小切手が使用でき,他方では利子が付く。そこ
で,共通部分を含む基本的な口座クラスを設けておき,継承を用いて当座預金及び普通預金を下位クラス
として定義することは道理にかなっている。ゆえに,口座クラスでは全ての口座に共通する部分を定義し,
当座預金クラスでは当座預金に特有な部分を定義し,普通預金クラスでは普通預金に特有な部分を定義す
る。
口座クラスに加えられた変更点は,継承する側のクラスでも自動的に取り上げられることになる。この
ような関係は,次の図E.7(銀行業務の階層)に示すように表現できる。
Account
account-number
balance
date-opened
deposit
withdraw
balance
データ項目
メソッド
SavingsAccount
interest-rate
calculateInterest
CheckingAccount
charges
displayCharges
calculateCharges
… 普通預金
当座預金 …
… 利率
… 利息算出
手数料表示 …
手数料算出 …
手数料 …
… 口座
… 口座番号
… 差引残高
… 開設日付
… 預け入れ
… 引き出し
… 残高照会
図E.7−銀行業務の階層
この例では,当座預金の各インスタンスが生成されると,口座番号・残高・開設日付及び手数料という
属性に対して,記憶域が自動的に割り当てられる。さらに,口座クラスから継承した預け入れ・引き出し・
残高照会のメソッドと,当座預金で定義した手数料表示・手数料算出のメソッドとで,各インスタンスを
操作することができる。普通預金の各インスタンスが生成されると,口座番号・残高・開設日付及び利率
という属性に対して,記憶域が自動的に割り当てられる。普通預金の各インスタンスは,口座クラスから
継承した預け入れ・引き出し・残高照会メソッドにも自クラス用に定義した利息算出メソッドにもアクセ
スできる。
口座クラス及び当座預金クラスに対するちょっとした例題を,次に示す。
口座クラス
CLASS-ID. Account INHERITS Base.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
REPOSITORY.
600
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
CLASS Base.
FACTORY.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 number-of-accounts
PIC 9(5).
*> 口座総数
PROCEDURE DIVISION.
METHOD-ID. newAccount.
*> 口座新設
<<メソッドコード>>
END METHOD newAccount.
...
END FACTORY.
OBJECT.
WORKING-STORAGE SECTION.
01 account-information.
*> 口座情報
03 account-number
PIC X(12).
*> 口座番号
03 balance
PIC S9(9)V99. *> 残高
03 date-opened
PIC 9(8).
*> 開設日付
...
PROCEDURE DIVISION.
METHOD-ID. deposit.
*> 預け入れ
...
END METHOD deposit.
METHOD-ID. withdraw.
*> 引き出し
...
END METHOD withdraw.
METHOD-ID. balance.
*> 残高照会
...
END METHOD balance.
...
END CLASS Account.
当座預金口座クラス
CLASS-ID. CheckingAccount INHERITS Account.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
REPOSITORY.
CLASS Account.
...
OBJECT.
WORKING-STORAGE SECTION.
01 checking-account.
*> 当座預金口座情報
03 charges
PIC S9(9)V99. *> 手数料
...
PROCEDURE DIVISION.
METHOD-ID. displayCharges.
*> 手数料表示
...
END METHOD displayCharges.
METHOD-ID. calculateCharges.
*> 手数料算出
...
END METHOD calculateCharges.
...
END CLASS Account.
E.17.4.2 FINAL句による継承及び変更の制限
クラスによっては,継承を介しても拡張を行いたくないことがある。これは例えば,ライブラリの提供
601
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
者がクラスの実装方式を管理しておきたい場合などに必要とされる。この機能を提供するために,クラス
の定義が完全であってその下位クラスを必要としないときは,そのクラスを“終端(final)”と宣言してお
いてもよい。終端クラスの名前を他のクラス宣言のINHERITS句に書くと,翻訳時エラーとなる。これは
“終端”クラスが下位クラスをもち得ないことを意味している。
終端クラスは下位クラスを絶対にもたないので,終端クラスのメソッドは絶対に上書きされない。これ
は,場合によっては行き過ぎかも知れず,幾つかのメソッドだけを上書きしないでおきたいこともある。
このためには,“終端”属性をあるクラスのメソッドに適用すると,そのクラスの下位クラスが,メソッド
を上書きするのを防止できる。この属性は,冗長ではあるが,終端クラスのメソッドに適用してもよい。
メソッドを上書きから制約することは,あるクラス内部でのメソッドの対を作成する手助けにもなる。
一例を挙げると:クラスAにはメソッド"bar"の定義があって,同じクラスに定義された別のメソッド"foo"
を呼び出すものとしよう。下位クラスBにも"foo"の定義があるときは,クラスBに属するオブジェクトを
対象としてメソッド"bar"を呼び出すと,(クラスAから継承された)"bar"は,元の"foo"ではなくて,Bで
定義された"foo"のほうを呼び出すことになる。しかし,クラスAの"foo"にFINAL句を指定すれば,これ
をクラスBでは上書きできないので,"bar"が呼び出す"foo"が常に同じでものあることを,プログラマは保
証できる。
FINAL属性の扱いは多重継承を処理する場合,慎重にしなければならない。二つのクラスAとBとが
同名のメソッドを定義していて,かつ,その両者をクラスCが継承している場合,このメソッド定義には
FINAL句を指定してはならない。しかしながら,同じメソッドが二つのクラスを介して継承され,その二
つのクラスがもつ同一の上位クラス中でそのメソッドが定義されているのであれば,そのメソッドの定義
中にはFINAL句を指定してもよい。これが起きるのは,ひし(菱)形(diamond shaped)の多重継承の場
合,つまりクラスAをクラスBとCとが継承して,かつ,クラスBとCの両者をクラスDが継承してい
る場合である。クラスAにはFINAL句の指定のあるメソッドがあってもよく,DではFINAL句のある同
名のメソッドを二つ継承することになったとしても,これらが同一のメソッド実装である限りはそれでも
よい。
E.17.4.3 適合
適合(conformance)によってコンパイラは,業務システムのコードの検査を行い,実行時にクラス階層
中で不整合の生じる可能性の有無を判定できるようになる。データ項目に制約を課して,あるオブジェク
ト参照が特定クラス又はその下位クラスのオブジェクトだけを指すようにできるが,それにはUSAGE
OBJECT REFERENCE句の後にクラス名を挿入すればよい。さらに,コンパイラは,メソッドに渡される
引数が,手続き部見出しのUSING指定に書いたパラメタに整合しているか否かを判定できる。適合を保
証するには引数がパラメタと全く一致しなければならない。
例
銀行業務システムのある部分は,どの種類の口座をも取り扱うように記述できる。データ項目を次のよ
うに宣言しておくと,
01 an-account USAGE OBJECT REFERENCE Account.
口座クラスのオブジェクト又は口座クラスを継承しているクラスのオブジェクトならどれでも参照でき
る。適合の規則によって,口座クラスの下位クラスのオブジェクトを,口座クラス自体のオブジェクトと
全く同じやり方で使用できることは,保証される。下位クラスの実装は元のクラスと異なるかもしれない
が,インタフェースに互換性があることは保証される。
銀行業務システムの別の部分は特定の種類の口座だけを取り扱うように記述できる。例えば,データ項
602
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
目an-accountを次のように定義しておくと,ここに入るのは,当座預金オブジェクト又は当座預金クラス
を継承しているクラスのオブジェクトへの参照である。ただし,この例では当座預金クラスを継承してい
るクラスがない。
01 an-account USAGE OBJECT REFERENCE CheckingAccount.
当座預金オブジェクトが入ると宣言してあるデータ項目に口座オブジェクトへの参照を入れようとする
コードが,ソース要素に含まれていれば,コンパイラは誤りの可能性がある旨を利用者に警告する。ただ
し,コンパイラの判定は誤りの可能性だけであって,必ずしも本当に誤りというわけではない。また,コ
ンパイラは引数とパラメタとの整合を保証する検査もできる。
適合検査の方針は,防御的であり,警戒過剰に失するきらいがある。
ここで制約の例を幾つか示す。これらの制約を課するのは翻訳時の適合検査であって,たとえ実行時に
適合の違反が実際には起きないとしても,翻訳時には制約が課される。
1) クラスA,その下位クラスA1,及び次に示す定義をもつソース要素があると仮定しよう。
01 or-1 object reference A.
01 or-2 object reference A1.
ここで
Set or-2 to or-1
この文は正しくない。なぜなら,例えばor-1の内容はクラスAへの参照であってもよく,これは,
or-2の内容としては正しくないからである。実行時のor-1の内容は,実際にはクラスA1への参照
であって,or-2の内容として正しいのかも知れない。しかしながら,これを翻訳時に予期すること
はできない。したがってSETの規則としては,送出し側作用対象のクラスは(この場合はA)受取り
側作用対象のクラス(A1)と同じクラスか,その下位クラスであってもらわなければならない。もっ
ともこの例ではそうなっていない。
2) ACTIVE-CLASSのオブジェクト参照を従属項目にもつ強い型付けの集団項目は,引き渡すことも返却
することもしてはならない。実行時に,呼び出す側のメソッドのクラスが,呼び出される側のメソッ
ドのクラスと同じであるとは限らない。つまり二つのオブジェクト参照は異なるクラスに制約されて
いる。これもまた翻訳時に知ることはできない(オブジェクト参照を,強い型付けでない集団項目の
従属項目にはできないことに注意)。
Class A.
...
Method-Id. M-A.
...
01 or-1 object reference b.
01 t-a typedef strong.
02 ...
02 or-a object reference active-class.
01 a-a type t-a.
...
Procedure Division.
...
Invoke B "New" returning or-1
Set or-a to self
Invoke or-1 "M-B" using a-a *> 不当な引数
...
End Method M-A.
End Class A.
603
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
Class B.
...
Method M-B.
...
Working-Storage Section.
...
01 t-a typedef strong.
02 ...
02 or-b object reference active-class.
...
Linkage Section.
...
01 a-b type t-a.
...
Procedure Division using a-b.
...
Exit method.
End Method M-B.
End Class B.
この誤っている例では,or-aがクラスAに,or-bがクラスBに制約されているので,通常なら
or-aにとって正しい内容はどれもor-bにとって正しくなく,逆もまた真である。
3) ACTIVE-CLASSのオブジェクト参照は,たいていは返却してもよいが,翻訳時検査の要請から制限は
存在する。コンパイラには,メソッド呼出しに用いられるオブジェクトは分からないが,メソッドを
呼び出すのに用いたオブジェクト参照が,返却するオブジェクト参照を含んでいることは分かる。コ
ンパイラは,返却される項目の情報を引き出すことができる。
次のクラスを考える。
Class-id. C inherits B.
Factory.
Method-id. M
Linkage section.
01 or-1 object reference active-class.
Procedure division returning or-1.
End method M.
End factory.
End class C.
そして次の文を考える。
Invoke C "M" returning anObj.
コンパイラには,メソッドMの返却するオブジェクトがクラスCの又はCの下位クラスのいずれ
かに属すると分かる。これを用いて誤りを検出できる。例えば,次に示すクラス階層を想像してみる。
B
|
C
|
D
そして次の文を考える。
01 or-B object reference B.
01 or-C object reference C.
01 or-D object reference D.
Invoke C "M" returning or-B
Invoke C "M" returning or-C
Invoke C "M" returning or-D
604
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
コンパイラは次のことを静的に判断できる。つまり第一と第二のinvokeは正しいが,第三のinvoke
は正しくない,というのはこれが,C型のオブジェクトをD型のオブジェクト参照へと入れる結果を
招きかねないからである。
4) 原則的に,実行時に識別される特定のオブジェクトを対象とするメソッド呼出しは,そのオブジェク
トに定義されたどのメソッドを呼び出してもよい。しかし,翻訳時検査は,適格なメソッドを翻訳時
に分かっているメソッドに制限する。例えば,呼出しに指定されたオブジェクト参照が特定のクラス
に制限されているとき,この呼出しに指定した名前をもつメソッドが,オブジェクト参照の記述に指
定したクラスに定義されていなければならない。ゆえに,指定クラスの下位クラスで定義された上書
きメソッドを呼び出すことはできるが,下位クラスでだけ定義され親クラスには定義のないメソッド
を呼び出すことはできない。
クラスC-1が下位クラスC-2があるクラスであり,クラスC-1の中にはメソッドM-1があり,C-2
の中にはメソッドM-2があるものとしよう。さらに,クライアント(呼出し側の)プログラム又はメ
ソッドの中には次のコードがあると仮定しよう。
01 or-1 object reference C-1.
Invoke or-1 "M-1"
これは正しい。たとえor-1が実際にはC-2に属するオブジェクトを指していても,問題はない。
なぜならやはりクラスC-1中のM-1という点は同じだからである。また,C-2中にM-1が定義されて
これがC-1中のM-1を上書きしていても,問題はない。なぜならこの上書きM-1は呼出し情報が同じ
だからである。しかし,
Invoke or-1 "M-2"
これは正しくない。たとえor-1が実際にはC-2に属するオブジェクトを指しているとしても問題
がある。なぜならメソッドM-2の呼出し情報は翻訳時には分からず,翻訳時に適合検査を行うすべが
ないからである。
しかし,オブジェクトビューを用いれば,型の安全性を保ったM-2へのアクセスが可能になること
に注意せよ。この場合は適合検査が実行時に行われる。
Invoke or-1 as C-2 "M-2"
E.17.4.4 インタフェースによる多態性
多態性(polymorphism)は一般に,クラス継承を介して使用可能となる。COBOLではインタフェース
(interface)を用いた多態性も使用可能である。
インタフェース定義は,そのインタフェースを実装しているクラスのメソッドからなる部分集合を定義
する。これはそのクラスに対して呼び出し得るメソッドの一覧を提供するものであって,各メソッドの名
前及びパラメタ仕様が含まれている。すなわち,インタフェース定義のソース単位中にはメソッド原型だ
けが記述される。
一つのクラスが数種類のインタフェースを実装していてもよい。各々のインタフェースは,そのクラス
に対して定義されたメソッドの一つ以上を取り込んでいてもよい。
あるインタフェースに定義されたメソッドを全て実装したオブジェクトは,そのインタフェースに適合
する。業務システムのクラス階層は,適合し合うインタフェースからなる階層を形成している。
例
銀行業務システムはAccount(口座)クラス中に,各インスタンス関連のデータ値(例えば現在の名義
と残高など)の印字を行うメソッドを定義しておいてもよい。さらに,Customer(顧客)クラス中のある
605
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
メソッドは,それが表す顧客の氏名及び住所を印字できる。印字を行うルーチンを一般化して適切なペー
ジ形式変換を附加する必要があるとき,印字関連メソッドを含んでいるインタフェースを定義することが
できる。このインタフェースを実装したあらゆるオブジェクトは,このルーチンで印字できる。これで多
態性を解説する。
Print(印字)インタフェース用のコード例を次に示す。
INTERFACE-ID. PrintReport.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
PROCEDURE DIVISION.
METHOD-ID. printRpt.
END METHOD printRpt.
...
...
END INTERFACE PrintReport.
E.17.5 オブジェクト管理
E.17.5.1 オブジェクト
前述したように,オブジェクトは実行時に割り付けられて,オブジェクト参照を介してだけアクセスさ
れる。オブジェクトを生成するには,ファクトリオブジェクト中のメソッドを呼び出す。オブジェクトは,
それ以上アクセスできない状態になるまでは,存在し続ける。オブジェクトがそれ以上アクセスできない
状態とは,そのオブジェクトを参照するオブジェクト参照データ項目がなくなった場合である。
E.17.6 クラスライブラリ
小規模なクラスライブラリが提供されており,これを実務上の問題解決に使用し,拡張し,統合しても
よい。BASEクラスはクラスライブラリの頂点に位置するノードであり,オブジェクトの生成,初期化,
そのほかオブジェクトに有用な基礎的な機能を提供・実装するメソッドを含んでいる。
E.17.7 パラメタ付きクラス
パラメタ付きクラス(parameterized class)とは,クラスの骨組みであって,適切なパラメタが渡される
と,与えられた機能を遂行するため特別あつらえの新たなクラスが生成される。パラメタ付きクラスによ
って開発者は,共通な振る舞いをするクラス群を生成することができる。例えば,単一のパラメタ付きコ
レクションクラス(parameterized collection class)を用いて,多くの種類のコレクションクラス群を定義で
きる。
例
決まったクラスのオブジェクトを指す参照を維持するのに用いられる,コンテナ(container)クラスの
幾つかについて考えてみよう。銀行業務システムでは,特定の種類のコンテナクラス(例えば
AccountCollection)を用いて当座預金の各々のオブジェクトを指す識別子のリストを維持することができ
る。当座預金オブジェクトの識別子だけを維持管理する機能をもつコレクションクラスを生成するには,
コレクションクラスを生成する場合のパラメタとしてクラス名CheckingAccountを指定する。
AccountCollectionをパラメタ付きクラスとし,その定義はどこか他にあるものと仮定する。そのクラス
定義の一部は,次のとおりとする。
CLASS-ID. AccountCollection INHERITS Base USING X.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
REPOSITORY.
CLASS X
CLASS Base.
606
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
...
END CLASS AccountCollection.
別のソース単位中では,次によって,当座預金のコレクションであるクラスと,この新たなクラス型に
対するオブジェクト参照とが生成されることになる。
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
REPOSITORY.
CLASS CheckingAccountCollection
EXPANDS AccountCollection USING CheckingAccount.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 a-checking-account-collection
USAGE OBJECT REFERENCE CheckingAccountCollection.
...
E.17.8 オブジェクト指向でのファイル
オブジェクトを指向した業務システム中のファイルは,次の2種類の異なった方法で指定できる。
1) インスタンスオブジェクト中のファイル
2) ファクトリオブジェクト中のファイル
E.17.8.1 インスタンスオブジェクト中のファイル
あるインスタンスオブジェクト中にファイルが指定されている,とは,インスタンス定義中にファイル
管理段落とファイル節とがあることを意味する。一つ以上のインスタンスメソッド中にOPEN,CLOSE,
READ,WRITEなどのファイル入出力文があることになる。ファイルに関連するレコードには,全てのイ
ンスタンスメソッドからアクセス可能である。
インスタンス定義中にファイルの指定のあるクラスが継承された場合は,直接又は間接の子孫のそれぞ
れもまた,そのファイルの指定を継承する。これらの下位クラスの各々のインスタンスは,EXTERNAL
句の指定がファイルにない限り,各自に固有なファイル結合子をもつ。動的ファイル割当て又はファイル
共用によって,これらのファイル結合子に関連する物理ファイルへのアクセスで競合を解消してもよい。
動的ファイル割当てをファイル管理記述項中に指定すると,あるクラスをある構造の論理ファイルを定
義するのに用いることができ,各インスタンスは,それぞれ異なる物理ファイルをインスタンス固有のフ
ァイル結合子と関連付けて,その物理ファイルに対して入出力を行うことができる。
動的ファイル割当てに対するコードの一例を,次に示す。MOVE文のもつ意味は,その後にあるOPEN
文がファイル結合子に対して実行された場合の動的割当てに関してだけ有効であることに注意する。
CLASS-ID. Employee INHERITS Base.
...
OBJECT.
...
FILE-CONTROL.
SELECT Employee-file ASSIGN USING file-ref.
DATA DIVISION.
FILE SECTION.
FD Employee-file
...
WORKING-STORAGE SECTION.
01 file-ref
PIC X(16) VALUE SPACES.
...
PROCEDURE DIVISION.
METHOD-ID. readFile
607
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
...
WORKING-STORAGE SECTION.
01 EmplRcd.
03 SSN
PIC 9(9).
03 NAME
...
...
PROCEDURE DIVISION.
...
MOVE 'external-ref01' TO file-ref
OPEN INPUT Employee-file
...
READ Employee-file NEXT RECORD INTO EmplRcd
CLOSE Employee-file
...
MOVE 'external-ref02' TO file-ref
OPEN INPUT Employee-file
...
READ Employee-file NEXT RECORD INTO EmplRcd
...
E.17.8.2 ファクトリオブジェクト中のファイル
ファクトリ中にファイルを指定する場合,これはファクトリ定義中にファイル管理段落とファイル節と
があることを意味する。一つ又はそれ以上のファクトリメソッド中にOPEN,CLOSE,READ,WRITEな
どのファイル操作文があることになる。全てのファクトリメソッドはEXTERNAL句を用いなくても,フ
ァイルに関するデータにアクセス可能である。
継承ファクトリオブジェクト定義
重要な注意点として,ファクトリオブジェクト定義中にファイルの指定のあるクラスが継承された場合,
直接又は間接の子孫のそれぞれもまた,ファイルの指定を継承するということがある。前述した継承オブ
ジェクト定義の場合と同じように,これらの下位クラスの各々のファクトリオブジェクトは,EXTERNAL
句の指定がファイルにない限り,各自に固有なファイル結合子をもつ。動的ファイル割当て又はファイル
共用によって,これらのファイル結合子に関連する物理ファイルへのアクセスが衝突し合うことを解消し
てもよい。
E.17.9 例外オブジェクト
例外オブジェクトは,例外名に関連付けられた既定義の例外状態と同じように用いられる。しかし,例
外オブジェクトを用いると,既定義の又は利用者定義の例外状態に比べて,柔軟性が増し,例外状況を解
決するためのより多様な情報にアクセスすることができる。特にオブジェクト指向の業務システムではそ
うである。
原則的に,どのクラスに属するどのオブジェクトでも,例外オブジェクトとしての役割を果たそうとす
ればできるが,たいていの場合,特定の種類の例外に対して特定のクラスを置くことになるだろう。こう
すると,業務システムは,特定の例外を扱うように仕立てたメソッドを呼び出すことができる。
例えば,INVALID-ACCOUNT(不当な口座)というクラスが存在して,それに属するオブジェクトは“口
座が不当”という条件に個別に対応している,ということが考えられる。業務システムは,不当な口座番
号をもつ取引を検知した場合に,このようなオブジェクトを生成して“引き起こす”ことができる。この
オブジェクトを指しているオブジェクト参照をan-invalid-accountと呼ぶものとしよう。業務システムのメ
ソッド(プログラムでなくメソッドであるとする)は,誤りを検知すると直ちに,RAISE an-invalid-account
文を実行するか,又はその例外を呼出し側の実行時要素へとEXIT METHOD文かGOBACK文のRAISING
608
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
an-invalid-account指定で投げ返すことができる。後者の場合は制御が呼出し側の実行時要素へと戻って,
呼出し側の要素における例外状態の取扱いは,メソッドを呼び出した文の直後にRAISE an-invalid-account
文があったのと同様になる。
RAISE文又はINVOKE文の書かれている実行時要素の中にもし該当する宣言手続き,例えば
INVALID-ACCOUNT クラス用の宣言手続きがあるとき,そのときはこの宣言手続きが実行される。この
手続きはおそらくは,その例外オブジェクト−これは一意名のEXCEPTION-OBJECTで参照できる−を対
象として適切な例外操作メソッドを呼び出して,誤りに関する警告を発行することになろう。
該当する宣言手続きがない場合,>>PROPAGATE指示が有効なとき,例外は呼出しの階層系列の上位の
レベルに伝ぱ(播)されることもある。
EXIT METHOD文又はGOBACK文のRAISING an-invalid-account指定によって例外が呼出し側の実行時
要素へと返されるのは,クラスINVALID-ACCOUNT(又はその上位クラスのいずれか)をEXIT文又は
GOBACK文のあるメソッドの手続き部見出しに書いておき,そのクラスを用いていることが“告知”され
ている場合だけであるということに注意する。さもなければ,既定義の例外状態EC-OO-EXCEPTIONが代
わりに伝ぱ(播)されることになって,呼出し側の実行時要素では問題を詳細に解析することが不可能に
なる。
宣言手続きをクラスに対してではなく代わりに特定のインタフェースに対して指定してあってもよい。
この場合,引き起こされた例外オブジェクトに対して宣言手続きが適格になるのは,オブジェクトの記述
中に,そのインタフェースを参照するIMPLEMENTS句があるときである。
同様にして,クラス名ではなくインタフェース名を,RAISING指定付きのEXIT文又はGOBACK文の
あるソース要素の手続き部見出しに指定してあってもよい。この場合,伝ぱ(播)に対して適格になるに
は,引き起こされるオブジェクトの記述中に,指定したインタフェースを参照するIMPLEMENTS句がな
ければならない。
E.17.10 業務システムの例
次は,1個の主プログラムとAccount(口座)クラスとで構成された,非常に単純な銀行業務システムの
例題である。ただし,COBOLのオブジェクト指向の全機能をここで解説しているわけではない。
E.17.10.1 主プログラム
大半の場合オブジェクト指向の業務システムには処理を開始するために,従来の書き方のプログラムが
1個ある。この例題の銀行業務システムではBANKMAINがこの役割を果たしている。
PROGRAM-ID. BANKMAIN.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
REPOSITORY.
CLASS Account.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 an-object
USAGE OBJECT REFERENCE Account.
PROCEDURE DIVISION.
go-now.
INVOKE Account "newAccount" RETURNING an-object.
INVOKE an-object "displayUI".
SET an-object to NULL.
END PROGRAM BANKMAIN.
609
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
E.17.10.2 口座クラス
口座クラス用のソースコードを,次に示す。このクラスには,ファクトリメソッドが3個ある。
− newAccountは,口座オブジェクトの新しいインスタンス1個を生成する。
− addAccountは,1を“口座の総数”の値に加える。
− removeAccountは,1を“口座の総数”の値から引く。
口座クラスには,また,インスタンスメソッドが5個ある。
− displayUIは,口座残高の値の表示その他の機能を,利用者の要求に基づいて行う。
− balanceは,口座の残高を照会する。
− depositは,ある金額を,口座の現残高に加える。
− withdrawは,ある金額を,口座の現残高から引く。
− initializeAccountは,初期値をインスタンスデータに転記する。
CLASS-ID. Account INHERITS Base.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
REPOSITORY.
CLASS Base.
FACTORY.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 number-of-accounts PIC 9(5) VALUE ZERO.
*> 口座総数
PROCEDURE DIVISION.
METHOD-ID. newAccount.
*> 口座新設
DATA DIVISION.
LOCAL-STORAGE SECTION.
LINKAGE SECTION.
01 an-object
USAGE OBJECT REFERENCE ACTIVE-CLASS.
PROCEDURE DIVISION RETURNING an-object.
begin-here.
INVOKE SELF "new" RETURNING an-object.
INVOKE an-object "initializeAccount" USING BY CONTENT number-of-accounts.
EXIT METHOD.
END METHOD newAccount.
METHOD-ID. addAccount.
*> 口座追加
PROCEDURE DIVISION.
method-start.
ADD 1 TO number-of-accounts.
EXIT METHOD.
END METHOD addAccount.
METHOD-ID. removeAccount.
*> 口座削除
PROCEDURE DIVISION.
main-entry.
SUBTRACT 1 FROM number-of-accounts.
EXIT METHOD.
END METHOD removeAccount.
END FACTORY.
OBJECT.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 account-balance
PIC S9(9)V99.
*> 口座残高
01 account-number
PIC X(5).
*> 口座番号
01 the-date
PIC 9(8).
*> 日付
PROCEDURE DIVISION.
METHOD-ID. displayUI. *> 利用者インタフェース表示
610
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
DATA DIVISION.
LOCAL-STORAGE SECTION.
01 in-data.
03 action-type
PIC X.
*> 取扱種別
03 in-amount
PIC S9(9)V99.
*> 取扱金額
03 in-wrk
PIC X(12).
PROCEDURE DIVISION.
method-start.
DISPLAY "預け入れ(D),残高照会(B),引き出し(W)のいずれかを入れてください"
ACCEPT in-data
EVALUATE action-type
WHEN "D"
PERFORM get-amount
INVOKE SELF "deposit" USING in-amount
*> 預け入れ
WHEN "W"
PERFORM get-amount
INVOKE SELF "withdraw" USING in-amount *> 引き出し
WHEN "B"
INVOKE SELF "balance"
*> 残高照会
WHEN OTHER
DISPLAY "正しい取扱い種別を入れてください。"
EXIT METHOD
END-EVALUATE
EXIT METHOD.
get-amount
DISPLAY "金額を9(9).99で入れてください"
ACCEPT in-wrk
COMPUTE in-amount = FUNCTION NUMVAL (in-wrk).
END METHOD displayUI.
METHOD-ID. balance.
*> 残高照会
DATA DIVISION.
LOCAL-STORAGE SECTION.
01 display-balance
PIC ¥ZZZ,ZZZ,ZZ9.99B‒.
*> 残高表示
PROCEDURE DIVISION.
disp-balance.
MOVE account-balance TO display-balance
DISPLAY "あなたの口座残高は: " display-balance
EXIT METHOD.
END METHOD balance.
METHOD-ID. deposit.
*> 預け入れ
DATA DIVISION.
LINKAGE SECTION.
01 in-deposit
PIC S9(9)V99.
*> 預け入れ額
PROCEDURE DIVISION USING in-deposit.
make-deposit.
ADD in-deposit TO account-balance
EXIT METHOD.
END METHOD deposit.
METHOD-ID. withdraw.
*> 引き出し
DATA DIVISION.
LINKAGE SECTION.
01 in-withdraw
PIC S9(9)V99.
*> 引き出し額
PROCEDURE DIVISION USING in-withdraw.
withdraw-start.
IF account-balance >= in-withdraw
SUBTRACT in-withdraw FROM account-balance
ELSE
611
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
DISPLAY "あなたの残高は不十分です"
END-IF
EXIT METHOD.
END METHOD withdraw.
METHOD-ID. initializeAccount.
*> 口座初期化
DATA DIVISION.
LINKAGE SECTION.
01 new-account-number PIC 9(5).
*> 新口座番号
PROCEDURE DIVISION USING new-account-number.
Begin-initialization.
MOVE ZERO TO account-balance
MOVE new-account-number TO account-number
MOVE FUNCTION CURRENT-DATE (1:8) TO the-date
EXIT METHOD.
END METHOD initializeAccount.
END OBJECT.
END CLASS Account.
E.18 報告書作成機能
報告書作成機能(report writer)とは印字出力を作成するための機能であり,その重点は,報告書の作成
に必要な手続きの詳細にではなく報告書の構成,書式及び内容に置かれている。報告書作成機能の言語仕
様にはデータ部の簡明な構文が含まれており,これを用いて報告書の構造を定義した場合には,印字出力
を作成するために必要な手続き部の記述は比較的少ない量で済む。なぜなら通常ならプログラマが行うは
ずの手続き部のプログラミングの大半は自動的に用意されるからである。プログラマは,印字行の組立て,
データの転記,ページ上の行数の勘定,ページの番号付け,頭書き及び脚書きの作成,論理データの縦の
範囲の終わりの検知,合計値の累計,表の印字,条件の検査などを行うための手続きを記述する厄介な仕
事から解放される。
E.18.1 報告書及び報告書ファイル
報告書は,報告書頭書き,報告書脚書き,ページ頭書き及びページ脚書きの基本的なレイアウトがあり,
これに制御切れと制御集団という階層的な構成が加わった印字出力である。同じ報告書ファイルに対して
二つ以上の報告書を記述し別々の報告書のページを必要な順序で印字することによって,もっと複雑な印
字出力を実現することもできる。あるファイル名の指す外部ファイル結合子,及び複数のファイル結合子
によって共用されるファイルについては,同一のファイルに対して,別個の実行時要素が異なる報告書を
指定してもよい。
各々の報告書は複数の行ごとにまとめられて幾つかの報告集団となる。報告集団は印字行の集まりであ
り,単一操作によって作成され,一つの報告集団が2ページ以上にまたがることはない。
報告書ファイルが他の出力ファイルと異なるのは,そのファイル記述項にREPORT句はあるがレベル1
のレコード記述はないという点,及びその内容は全て報告書作成の手続き文つまりINITIATE文,
GENERATE文及びTERMINATE文を通して書き出されるという点においてである。これ以外の方法でレ
コードを報告書ファイルへ書き出してはならない。ファイル管理記述項,ファイル記述項,OPEN文及び
CLOSE文は,報告書ファイルに対しても他の出力ファイルに対してと同じ機能を実行する。一つのソース
単位中に2種類以上の報告書ファイルがあってもよい。次の例では,二つの報告書が定義されている。
FD SUMMARY-PRINT-FILE
REPORTS ARE DETAIL-LISTING, SUMMARY-PRINT.
612
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
E.18.2 報告書記述項
各々の報告書記述項は,報告書に名前を割り付け,その一般的な特性を記述する。そこで選択可能な句
は,次のとおりである(図E.8参照)。
E.18.2.1 PAGE
PAGE句は物理的な報告書の体裁を定義する。COLUMNS指定はページの横幅を定義する。ページ上の
印字可能な最初の行を1行目とみなし,その他の指定は全てここからの相対位置に基づく。LINES指定は
ページ上の最後の印字行の位置を定義する。
HEADING指定は,ページ頭書き又は報告書頭書きの最初の行が印字される位置を定義する。HEADING
指定がないとき印字は1行目から始まる。制御集団の最初の行が印字される位置は,FIRST DETAIL指定
に書かれた行か,最後に印字された報告書頭書き又はページ頭書きの最後の行の1行あとか,いずれか大
きいほうである。
LAST CONTROL HEADING指定及びLAST DETAIL指定は,ページ送りが起きる場合を定義する。次に
印字する項目が制御頭書きであるとき,その制御頭書きを印字するために必要な行数と,その時点でのペ
ージ内の行番号とを加えた値が,LAST CONTROL HEADING指定に書かれた行を超えるとき,ページ送り
が起きる。次に印字する項目が明細報告集団であるとき,その明細報告集団を印字するために必要な行数
と,その時点の行番号とを加えた値が,LAST DETAIL指定に書かれた行を超えるとき,ページ送りが起
きる。
FOOTING指定には異なる二つの機能がある。
1) 次に印字する項目が制御脚書きであるとき,その制御脚書きを印字するために必要な行数と,その時
点での行番号とを加えた値が,FOOTING指定に書かれた行を超えるとき,ページ送りが起きる。
2) ページ送りが起きる場合,行番号はまずFOOTING指定に書かれた位置又は次の行のいずれか大きい
ほうまで進められてから,該当するページ脚書き及び報告書脚書きが印字される。
613
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
PAGE句の指定
報告書の制御
物理的な
用紙の上限
印字可能な最初の行位置
< 空白 >
論理的な
用紙の上限
HEADING
報告書頭書き又はページ頭書きの最初の行位置
<(先頭ページだけ)報告書頭書き行 >
< ページ頭書き行 >
FIRST DETAIL
本体集団の最初の行位置
< 制御頭書き行 >
< 明細行 >
< 制御脚書き行 >
< 制御頭書き行 >
< 明細行 >
< 制御脚書き行 >
:
:
:
< 制御頭書き行 >
< 明細行 >
< 制御脚書き行 >
< 制御頭書き行 >
LAST CONTROL HEADING 制御頭書きを印字してもよい最後の行位置
< 明細行 >
LAST DETAIL
明細行が印字される最後の行位置
< 制御脚書き行 >
FOOTING
制御脚書きの最後の行位置 又は
報告書脚書き又はページ脚書きの最初の行位置
< ページ脚書き行 >
<(最終ページだけ)報告書脚書き行 >
論理的な
用紙の下限
PAGE LIMIT
論理ページの最後の行位置
物理的な
用紙の下限
< 空白 >
印字可能な最後の行位置
図E.8−ページ体裁の例
E.18.2.2 CONTROL
CONTROL句はデータ名の階層を定義するものであり,その値が制御切れの検知に用いられる。FINAL
で最上位レベルの制御を指定してもよい。各データ名に対しては制御頭書き集団と制御脚書き集団を一つ
ずつ指定してもよく,これらはそのレベルか又は上位のレベルの制御切れが検出されるたびに,自動的に
印字される。
E.18.2.3 CODE
CODE句は印字されない情報を指定するものであって,その情報は,同一ファイルへ書き出される複数
の報告書を分別するために用いてもよいが,印字装置の機能修正に必要とされることもある。例えば,二
つの報告書を同一ファイルへ書き出して,一方に対しては"A"を,もう一方に対しては"B"を指定するもの
としよう。システムがその報告書ファイルを読み込んでよいとき,ファイルを読み込んで二つの報告書を
分離することができる。それには先頭文字を除去して,"A"の行をある場所へ,"B"の行を別の場所へと送
614
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ればよい。
E.18.2.4 例
次に,これら報告書記述(RD)項の中で選択可能な句の実例の一つを示す。
RD SUMMARY-PRINT
PAGE LIMITS ARE 60 LINES
HEADING 2
FIRST DETAIL 5
LAST DETAIL 56
FOOTING 58
CONTROLS ARE FINAL, WS-YEAR, WS-MONTH
CODE IS REFERENCE-NO.
E.18.3 基本的な報告集団記述
E.18.3.1 TYPE
報告書記述(RD)項の後には任意の個数の報告集団記述が続き,その先頭にはTYPE句のあるレベル1
記述項を書く。TYPE句は,その報告集団が報告書の中でどのように用いられるかを定義する。報告集団
記述を書く順序に意味はない。
E.18.3.2 LINE及びNEXT GROUP
報告集団の行は,報告書記述中のLINE句に対応している。LINE句は入れ子にはならず,従属レベルに
記述される(とはいえ,単一行の報告集団を記述するのに,LINE句をレベル1記述項で用いてもよい。)。
LINE句の作用対象は,ページ上での行の縦方向の位置付けを指定する。行は絶対指定にも相対指定に
もできる。絶対指定の行は,整数を書いて定義し,NEXT PAGE指定も選択可能である。相対指定の行は,
整数の前に語PLUS又は+を書いて表す。絶対形式が印字ページの上端からの行番号を指定するのに対し
て,相対形式の主な効果は直前の行からある間隔だけ縦方向に移動させることである。報告集団の印字が
完了した後の更なる行送りを,NEXT GROUP句を用いて指示してもよい。これにもLINE句と同様に絶対
形式と相対形式とがあり,更にNEXT PAGE指定もある。
E.18.3.3 COLUMN
COLUMN句は,基本項目の横方向の位置を指定する。COLUMNを短縮してCOLと書いてもよい。記
述項中にCOLUMN句のある項目を,印字可能項目と呼ぶ。PRESENT WHEN句の結果として不在になら
ない限り,印字可能項目のある報告集団が印字されるとき,その中の印字可能項目は常に印字される。
COLUMN句に,整数を書けば絶対指定となり,整数の前に語PLUS又は+を書けば相対指定になる。絶対
形式が印字ページ左端からの列番号を指定するのに対して,相対形式は項目を直前の印字可能項目の最後
の文字からある間隔だけ横方向に移動させる。未使用の列は全て空白になる。記述項中にCOLUMN句の
ない基本項目を,印字不能項目と呼ぶ。これは印字されないが,合計処理のためにSUM句で参照しても
よい。
E.18.3.4 SOURCE,VALUE及びPICTURE
基本報告項目の内容の確立は,手続き部の文によってでなく,報告書節のSOURCE句,SUM句及び
VALUE句で指示する。SUM句に関しての詳細は,E.18.6(合計処理)による。
SOURCE句は,暗黙のMOVE文又はCOMPUTE文の送出し側データ項目を指定するものであり,その
句のある報告書項目が,受取り側の印字可能項目を定義する。
VALUE句は,決まった定数を印字可能項目に割り当てる。このような項目の内容は,PRESENT WHEN
句によってだけ変更されてもよい。
PICTURE句は,それ以外の受取り側データ項目と同じ方法で,印字可能項目に必要な編集を表すために
615
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
用いられる。基本項目にVALUE IS定数という書き方の句があるとき,PICTURE句は省略可能である。
E.18.3.5 例
次の例で,基本的な報告集団記述の句を説明する。
01 TYPE PAGE HEADING.
05 LINE 2.
07 COL CENTER 40
VALUE "NAME OF MY COMPANY".
07 COL 74
VALUE "Page".
07 COL RIGHT 80
PIC ZZ9 SOURCE PAGE-COUNTER.
05 LINE + 2.
07 COLS 5 30 40
VALUES "Description" "Date" "Value".
01 ORDER-LINE TYPE DETAIL.
05 LINE + 2.
07 COL 5
PIC X(20) SOURCE ORDER-DESCRIPTION.
07 COL 30
PIC 9(6) SOURCE ORDER-DATE.
07 COL 40
PIC ZZZ,ZZ9.99-
SOURCE (ORDER-VALUE - SPECIAL-DISCOUNT) / 100.
E.18.4 報告集団の体裁の変更
E.18.4.1 PRESENT WHEN
PRESENT WHEN句は条件を一つ指定する。その条件が偽であれば,この報告集団のその回に対して,
報告集団,行単位,基本項目単位,又はその中間レベルといった点には関係なく,報告書節の記述項の処
理が抑止される。抑止されるのが基本項目でなければ,それに従属する項目もまた全て抑止される。
項目の抑止という概念は,空白列の印字を意味するものではない。というよりむしろ,ある項目を抑止
する効果とはすなわちその回に限って,あたかもその項目の記述が報告書記述からまるごと省略されたか
のように報告書が振る舞う,ということである。この原則から,次の効果が導かれる。
1) 不在の行は印字されず,LINE-COUNTERを変更せず,ページ内収納検査が実行される場合の対応す
る報告集団の縦方向の大きさには寄与しない。
2) 不在の印字可能項目は現在の行の水平カウンタを変更しない。結果として,記述項中にPRESENT
WHEN句のある印字可能項目は,それに後続する相対指定の印字可能項目が同じ報告書行の中にあれ
ば,その列位置に影響を及ぼす。
3) 報告集団中で,複数の行が見かけ上は重なり合ったり,ページ上の許容領域からはみ出したりしても
よい。ただし,これらの行のLINE句が,互いに背反な条件を指定した複数のPRESENT WHEN句の
制御下にあって,不在の行を取り除いた後にはそのような重なり合い又ははみ出しが起きない,とい
う場合に限る。
4) 行中で,複数の印字可能項目が見かけ上は重なり合ったり,相対のとき見かけ上はページ幅を超えた
りしてもよい。ただし,これらの項目のCOLUMN句が,互いに背反な条件を指定した複数のPRESENT
WHEN句の制御下にあって,不在の項目を取り除いた後にはそのような重なり合い又ははみ出しが起
きない,という場合に限る。
行又は印字可能項目が不在になる場合を定義するために,代わりの空白行又は空白印字可能項目を指定
する必要はない。なぜなら,ページ上の占有されない行及び行中の占有されない列は常に空白になるから
である。
PRESENT WHEN句を,次の例で説明する。FIRST-NAMEの内容が "UNKNOWN"であるとき,SURNAMEは
絶対指定の25列目に印字されるので25列目まではFIRST-NAMEの代わりに空白が印字される。しかし
MEMBER-FLAGの内容が1でないときは,MEMBER-NOもMEMBER-TYPEも両方が消え,CITY はそのCOLUMN
616
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
句が相対指定なので47列目に印字される。
05 LINE + 2.
07 COL 1
PIC X(20)
SOURCE FIRST-NAME
*> 名前
PRESENT WHEN FIRST-NAME NOT = "UNKNOWN".
07 COL 25 PIC X(20)
SOURCE SURNAME.
*> 名字
07 PRESENT WHEN MEMBER-FLAG = 1.
*> 会員フラグ
09 COL 51 PIC X(6)
SOURCE MEMBER-NO.
*> 会員番号
09 COL 61 PIC X(10)
SOURCE MEMBER-TYPE.
*> 会員種別
07 COL + 3 PIC X(10)
SOURCE CITY.
*> 市町村
その次の例で,BANK-FLAGが1でないとき2番目の行はまるごと抑止される。これらの行が本体集団の
一部であるとき,ページ内収納検査を行う場合には抑止される行は本体集団の縦方向の大きさに含まれな
い。これとは対照的に,LINE句が絶対指定であったとすれば,抑止される行の代わりに空白行が結果と
して生じるはずである。
05 LINE + 2.
07 COL 1 PIC 9999
SOURCE PAYMENT. など
05 LINE + 1 PRESENT WHEN BANK-FLAG = 1.
07 COL 1 PIC X(8)
SOURCE BLANK-ACCOUNT. など
E.18.4.2 GROUP INDICATE
GROUP INDICATE句は,データ項目(特に制御データ項目)の印字を,制御切れ又はページ切れのあと
一度だけ,明細報告集団の並びのうち先頭に対してだけ行えるように設計された。この句はPRESENT
WHENの特別な場合として振る舞う。
E.18.5 繰返し
E.18.5.1 OCCURS
OCCURS句を使用すると,レベル1の下の記述項で定義された報告集団の一部を,行単位,基本項目単
位又はその中間レベルといった点には関係なく,固定の又は可変の回数だけ繰り返すことができる。
OCCURS句を入れ子にして,多次元の表を印字してもよい。STEP指定は,項目の間の横方向又は縦方向
の進め方を指定するものであって,項目の位置が(横方向又は縦方向に)絶対指定で与えられているとき
は,必ず書かなければならない。
03 LINE 4
OCCURS 4 STEP 1.
* VALUE句は各々の繰返しに適用される
05 COL 1 OCCURS 5 STEP 10
VALUE "PAY".
03 LINE + 1 OCCURS 2.
* SOURCE句も各々の繰返しに適用される
05 COL + 6 OCCURS 3 PIC X(4)
SOURCE IS WS-CODE.
E.18.5.2 LINE,COLUMN,SOURCE及びVALUEの複数指定形式
OCCURS句を記述する代わりにプログラマは,複数指定のCOLUMN句又はLINE句を書いてもよい。
この機能は,項目の間隔が不規則であるとき欠かすことができない。
03 LINES ARE 4, 5, 7, + 1.
05 COLUMNS ARE 1, 11, 22, +5 ...
一連の記述項に 異なる値又は異なる源泉データ項目を割り当てるために,複数指定のSOURCE句又は
VALUE句を用いてもよい。繰返しを確立するため使用した句が,OCCURS句であっても複数指定のLINE
句又はCOLUMN句であっても,この書き方は妥当である。
03 LINES 2, 3.
05 COLS ARE 13, 35, 56
VALUES ARE "THIS", "NEXT", "SOME", "YEAR", "YEAR", "DAY".
03 LINE + 1.
05 COL 12 OCCURS 3 STEP 22 PIC ZZZ9
617
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
SOURCES ARE WS-PAY WS-BONUS WS-REFUND.
E.18.5.3 VARYING
複数指定のLINE句,複数指定のCOLUMN句又はOCCURS句と一緒にVARYING句を用いて,繰返し
カウンタを確立してもよい。このカウンタはその後,添字に又はその他の目的に用いてもよい。
03 LINES 2, 3, 4
VARYING RS-LINE-NO FROM 6 BY 6.
05 COL 1 STEP 10 OCCURS 6
VARYING RS-ENTRY-NO FROM RS-LINE-NO BY -1
PIC ZZZ9
SOURCE IS WS-PAY-TABLE (RS-ENTRY-NO)
PRESENT WHEN WS-PAY-TABLE (RS-ENTRY-NO) >= 0.
E.18.6 合計処理
印字可能項目の記述中には,SOURCE句又はVALUE句の代わりに,SUM句を書いてもよい。これによ
って,指定された数字データ項目が,内部の合計カウンタへと累積される。この数値データ項目が印字さ
れる場合,累積された値は,印字可能項目へと転記され(RESET指定がある場合を除き)その報告集団記
述中の残りの記述項の処理が完了するたびにゼロへと再設定される。
合計カウンタとは内部的な割付け場所であり,自動的に定義される。その整数部と小数部のけた数は,
SUM句と一緒に用いられるPICTURE句によって暗黙に決まる。合計カウンタは常に符号付きである。一
つのプログラムに合計カウンタは幾つあってもよい。
SUM句の作用対象は,報告書節で定義されたデータ項目であっても,データ部の他の部分で定義された
データ項目であってもよい。SUMの作用対象が報告書節で定義されたものであれば,それを中で定義して
いる報告集団が印字されるたびに,作用対象が合計カウンタへと加算される。SUM句の作用対象が報告書
節で定義されたものでなければ,この報告書に対しGENERATE文が実行されるたびに,作用対象が合計
カウンタへと加算される。後者の場合のために,加算を引き起こすGENERATE文とそうでないものとを
制御するUPON指定が提供されている。
SUMの作用対象が配列(繰返しデータ項目)のとき,SUMの記述項は同じ大きさの配列であってもよ
い(この場合は合計値の配列が形成される。)。そうではなく,単一データ項目であるかSUMの作用対象
より次元数の少ない表であるとき,一つ以上の(縦又は横)方向に,繰返し記述項の全てを足し合わせる
ことになる。
RESET指定を用いて合計カウンタの再設定を遅延させ,累計を求めてもよい。
SUM句のある記述項は印字不能(COLUMN句なし)であってもよく,そうすれば合計は作成されても
すぐには印字されない。合計カウンタの現在値を得るには,その記述項のデータ名を参照すればよい。
次の例では,SUM句を用いて二つのレベルの小計を作成している。
RD PAY-REPORT
CONTROLS ARE WS-YEAR WS-MONTH.
01 EMPLOYEE-PAYMENT
TYPE DETAIL.
*> 従業員の給与
03 LINE + 1.
05 RS-PAY COL 4 STEP 10 OCCURS 4 TIMES
* この繰返し記述項ではSOURCE (源泉データ) として表を代わりに用いて
* 前述のVARYINGの例のように添字としてデータ名をVARYING (変化) させる手段もある
PIC Z(3)9 *> 給与 賞与 特別手当 償還
SOURCE WS-PAY WS-BONUS WS-EXTRA WS-REFUND.
* この記述項では四つの項目を集計して単一の合計値とする
05 RS-EMPLOYEE-TOTAL-PAY COL 51 PIC Z(6)9
*> 支給総額
SUM OF RS-PAY.
01 TYPE CF FOR WS-MONTH.
*> 月次処理
618
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
03 LINE + 1.
* この記述項では四つの項目をそれぞれ縦方向に加算して四つの合計値を求める
05 COL 1 STEP 10 OCCURS 4 PIC Z(6)9
SUM OF RS-PAY.
05 RS-MONTH-TOTAL-PAY COL 51 PIC Z(6)9
*> 月次支給総額
* ここでの処理は,SUM OF RS-PAYでも同じ結果が得られるはずである
SUM OF RS-EMPLOYEE-TOTAL-PAY.
* この記述項では累計を印字する
05 RS-MONTH-CUMULATIVE-PAY COL 1 PIC Z(7)9
*> 当月支給累計
SUM OF RS-EMPLOYEE-TOTAL-PAY RESET ON WS-YEAR.
01 TYPE CF FOR WS-YEAR.
*> 年次処理
03 LINE + 1.
* 次の項目は印字不能である
05 RS-YEAR-TOTAL-PAY PIC Z(7)9
* ここでの処理はSUM OF RS-EMPLOYEE-TOTAL-PAYでも同じ結果が得られるはずである
SUM OF RS-MONTH-TOTAL-PAY.
* この記述項では年次合計を源泉データに用いて,位取りを下げている
05 COL 1
PIC Z(5)9.99
SOURCE IS RS-YEAR-TOTAL-PAY / 100 ROUNDED.
E.18.7 手続き部の文
報告集団の記述及び報告書の物理的・論理的な構成の大半はデータ部の要素を用いて定義するとはいえ,
これらの記述は,手続き部のINITIATE文・GENERATE文・TERMINATE文の実行中を除けば,報告書の
処理に関して何の効果ももたない。報告書の処理は次に示す5段階からなる。
1) 報告書に関連するファイル結合子は開いておかなければならない。
2) INITIATE文を実行して報告書の処理を初期化する。
3) いったん報告書を初期化したら,GENERATE文を用いて報告書の様々な部分を生成する。各々の
GENERATE文は明細集団の一つを印字させる(ただし“GENERATE 報告書名”の書き方の文を使用
した場合は除く。)。場合によっては,直前に制御切れ又はページ内収納検査の結果として別な型の報
告集団が現れることもある。
4) 報告書が完成したら,TERMINATE文を実行して締めくくる。
5) ファイル結合子を閉じる。これ以降の報告書のため開いたままでもよい。
典型的な実行の流れは次のとおりになるだろう。
OPEN OUTPUT 報告書ファイル
INITIATE 報告書名
入力データレコードを取得
PERFORM UNTIL <入力データの終わり>
GENERATE 明細A
GENERATE 明細B
など
入力データレコードを取得
END-PERFORM
TERMINATE 報告書名
CLOSE 報告書ファイル
E.18.8 報告書カウンタ
PAGE-COUNTERとLINE-COUNTERとの一意名は,各々の報告書記述項に対して自動的に作成される
割付け場所を参照する。これらの内容はそれぞれ,現在のページ番号及びページ内の現在の行番号である。
619
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
E.19 検証機能
検証(validation)機能は,主な手続き文であるVALIDATE文と,関連する幾つかのデータ部の句とを提
供して,データに対するいろいろな誤り及び整合性の検査を,高度で理解しやすい方法で行えるようにす
るものである。
VALIDATE文を用いて,ファイル節,作業場所節,局所記憶節又は連絡節中で定義された任意のデータ
項目に関する検証を行うことができる。データ項目はそのデータ記述に整合しているか検査される。プロ
グラマの選んだ通知又はフラグが応答として発行されることもある。データ項目を自動的にあて先の場所
へと格納することもできる。
VALIDATE文が請け負う処理の詳細を完全に確立するものは,参照されるデータ項目の記述であって,
手続き部でのコードではない。PICTURE句のような一般のデータ部の句のほかに,VALIDATE文の動作を
制御する句には,追加の句が含まれることがあるが,これらの句はVALIDATEの制御以外の点では効果を
もたない。
データ項目は集団でも基本項目でもよく,長さ又は複雑さはどうあってもよい。VALIDATE文の動作は
幾つかの段階に分割される。各々の段階が,データ項目の全体に対して,全ての従属項目までを含めて完
了してから,その次の段階が開始する。検証のある段階で,ある基本データ項目が不合格になっても,そ
の項目がそれ以降の段階で拒絶されることはない。検査が失敗になっても処理の中断はなく,代わりに,
プログラマの定義した通知又は指示子が格納されることで誤りが指摘される。これらの段階は,次による。
− 形式検証 (Format validation)
− 入力配布 (Input distribution)
− 内容検証 (Content validation)
− 関係検証 (Relation validation)
− 誤り通知 (Error indication)
E.19.1 形式検証
この段階ではPICTURE句を用いて(SIGN句及びUSAGE句によって意味が変わることもあるが),各々
のデータ項目の内容が期待どおりのデータ形式であるか否かを検査する。この検査で失格する基本項目及
び用途がDISPLAY又はNATIONALで内容が全て空白である基本項目には,既定解釈値(default value)が
割り当てられる。これ以降にその項目を参照するとその既定解釈値が用いられる。集団項目にもDEFAULT
句があってよい。
この段階に関連のある句は,PICTURE,DEFAULT,USAGE,SIGN及びVARYINGである。
E.19.2 入力配布
この段階では,データ項目に対して定義されたDESTINATION句が起動されて,項目が指示のあて先の
場所へと格納される。既定解釈値のおかげで,あて先の場所が受け取るデータはいつでも妥当である。た
だし,DEFAULT NONEの指定がある場合は別で,そのときあて先の場所は内容が変わらないままになる。
この段階に関連のある句は,DESTINATION及びVARYINGである。
E.19.3 内容検証
この段階では,それぞれのデータ項目の値が許容範囲内にあるかを調べる。88レベルの記述項を用いて
データ項目の値を丸ごと検査してもよく,CLASS句を用いてデータ項目の値を文字ごとに検査してもよい。
88レベルのデータ記述項に指定した値の範囲は,条件の指定次第で変えることもできる。
この段階に関連のある句は,CLASS,VALUE及びVARYINGである。
620
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
E.19.4 関係検証
この段階では,データ項目の値がそれ以外のデータ項目との関係において適切であるかを調べる。この
段階は,“フィールド間検査”又は“フィールド相互検証”とも呼ばれる。データ項目の内容は,指定され
た条件の真理値次第で不当とみなされることがあってもよい。例えば,"ITEM-A INVALID WHEN ITEM-B
> 35" という句は,ITEM-Bの値が35を超えている場合はいつも,ITEM-Aの内容を不当とみなすことを
意味する。
この段階に関連のある句は,INVALID及びVARYINGである。
E.19.5 誤り通知
この最終段階では,拒絶された項目があればその項目が識別できるように,定義されている
VALIDATE-STATUS句を使って,プログラマが指定した通知又は指示子を設定する。この段階で,拒絶の
理由が3種類(形式・内容・関係)のいずれなのかを区別することもできる。VALIDATE-STATUS句の指
定箇所は,検証の作用対象データ項目中ではなく,このデータ部中の別な箇所である。
この段落に関連のある句は,VALIDATE-STATUS及びVARYINGである。
E.19.6 検証の更に複雑な形式
データ記述には,OCCURS句のある従属記述項があってもよい。そのデータ項目の繰返しはそれぞれ,
別々に検査でき,別々にあて先を指定でき,別々に誤りの通知又は指示子の割当てができる。そのデータ
項目に複数の代替形式があるとき,これらの代替形式を記述するためにREDEFINES句を使用でき,その
うち適切な記述を選択するにはPRESENT WHEN句を使用できる。
これらの形式に関連のある句は,PRESENT WHEN,REDEFINES,OCCURS及びVARYINGである。
E.19.7 検証の例
この例の中に書いた注記は,いろいろな句の用法及び効果を説明するものである。
E.19.7.1 用途がDISPLAYである項目の検証の例
01 INPUT-RECORD.
* PIC 99で,IN-TYPEが2けたの数字であるかを検査
03 IN-TYPE
PIC 99
* IN-TYPEはPICTURE検査で失格すれば 1と想定される
* DEFAULT句がなければ ここでの想定値は0になったはず
DEFAULT 1.
* PRESENT WHENで,この形式が使用される条件を記述
03 IN-REC-FORMAT-1 PRESENT WHEN IN-TYPE = 0 OR 1 OR 2.
* PICTURE A(20) で,20個の英字 (又は空白) であるかを検査
05 IN-NAME
PIC A(20)
* PRESENT WHEN句で,この項目に検証の句が適用される場合を定義
PRESENT WHEN IN-TYPE = 0 OR 1
* CLASSで,各文字が,特殊名段落で定義した字類に適合するかを検査
CLASS IS ALPHA-UPPER
* DESTINATIONで,この項目 (非英字なら空白) をOUT-NAMEに転記
DESTINATION OUT-NAME.
* PRESENT WHEN句で,項目がこの条件下で空白であるかを検査
05 FILLER REDEFINES IN-NAME
PIC X(20)
PRESENT WHEN IN-TYPE = 2
DESTINATION OUT-NAME
VALID VALUE SPACES.
* IN-WEEKの値が非降順であるかを検査
05 IN-WEEK
PIC 99 OCCURS 5
621
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
VARYING IN-WEEK-NO FROM 1, IN-NEXT-WEEK-NO FROM 2
INVALID WHEN IN-WEEK-NO < 5
AND IN-WEEK (IN-WEEK-NO) > IN-WEEK (IN-NEXT-WEEK-NO)
* OUT-WEEK (1)…(5) にはIN-WEEK (1)…(5) の値が入ることになる
* ただし,形式 (PICTURE) 検査で失格したものにはゼロが入ることに
DESTINATION OUT-WEEK (IN-WEEK-NO).
* 88レベルのINVALID記述項で,不当な値の範囲にあるかを検査
88 VALUES 0, 53 THRU 99 ARE INVALID.
* REDEFINEと 第2のPRESENT WHENとで,代替形式を定義
03 IN-REC-FORMAT-2 REDEFINES IN-REC-FORMAT-1
PRESENT WHEN IN-TYPE > 2.
* IN-PAYの挿入文字は,入力時に必ず指定すること
05 IN-PAY
PIC ZZ,ZZZ.ZZ.
* 88レベルのVALID記述項で,妥当な値の範囲にあるかを検査
* 条件名は,指定があれば,通常の方法で用いてよい
* 次ではDECIMAL-POINT IS COMMAがないことを想定している
88 IN-PAY-OK VALUES "10,000.00" THRU "20,000.00" ARE VALID.
* 88レベルの記述項には付帯条件があってもよい
88
VALUES "20,000.01" THRU "30,000.00" ARE VALID
WHEN IN-TYPE = 8.
* PRESENT WHEN句で例外的な場合を指定できる。
05 IN-CODE
PIC AX(3)9(4)
PRESENT WHEN IN-CODE NOT = "UNKNOWN".
*****************************************************************
* あて先レコードの記述
*****************************************************************
* この設定は,入力レコードに定義されたDESTINATION句による
* 形式誤りが見つかったとき,代わりに既定解釈値が格納される
01 TARGET-AREA.
05 OUT-NAME
PIC X(20).
05 OUT-WEEK
PIC 99 COMP OCCURS 5.
*
*****************************************************************
* 誤り通知の記述
*****************************************************************
* 誤り通知又は誤りフラグの設定/解除はVALIDATE文を実行するとき自動的に行われる。
* あて先及び内容はプログラマが選択する。この例のようにまとめて記述する必要はない。
01 VALIDATE-MESSAGES.
03
PIC X(40) VALIDATE-STATUS "Unknown Record Type - 1 assumed"
WHEN ERROR FOR IN-TYPE
* 記述項一つに,VALIDATE-STATUS句の指定が二つ以上あってもよい
* NO ERROR指定で,項目が妥当である場合の通知を生成
VALIDATE-STATUS "Record Type Accepted"
WHEN NO ERROR FOR IN-TYPE.
* VALIDATE-STATUS句で,検査不合格となった段階を正確に指摘できる。
03
PIC X(40) VALIDATE-STATUS "Name not alphabetic"
WHEN ERROR ON FORMAT FOR IN-NAME;
VALIDATE-STATUS "Lower-case not allowed in name"
WHEN ERROR ON CONTENT FOR IN-NAME;
VALIDATE-STATUS "Name not allowed in this case"
WHEN ERROR ON RELATION FOR IN-NAME.
* これらの場合では,通知が格納されないときは空白が格納される。
622
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
* 誤りは,フラグで指摘してもよい。入力項目の配列を指してもよい。
03 W-ERROR-FLAG
PIC 9 COMP OCCURS 5
VALIDATE-STATUS 1 WHEN ERROR FOR IN-WEEK.
* VALIDATE文で不当条件が見つかるとEC-VALIDATE (非致命的) 例外も設定される。
*
*****************************************************************
* VALIDATE文の実行
*****************************************************************
PROCEDURE DIVISION.
...
* 一つのVALIDATE文で,データ記述に暗示された動作が全て実行される。
VALIDATE INPUT-RECORD
* この文の実行が完了した後に:
* (1) その入力レコードは変わっていない。
* (2) 入力項目はあて先の場所へと自動的に移されている。
* (3) 誤り通知はプログラム中のどこに指定されていようと設定済みである。
*
E.19.7.2 用途がDISPLAYでない項目の検証の例
01 MIXED-GROUP
TYPEDEF STRONG.
05 FLD-1 PIC S9(4)
USAGE COMP.
05 FLD-2 PIC S9(4)
USAGE PACKED-DECIMAL.
05 FLD-3 PIC 1(8)
USAGE BIT ALIGNED.
05 PTR-1 USAGE INDEX.
05 PTR-2 USAGE OBJECT REFERENCE.
05 TXT-1 PIC N(12)
USAGE NATIONAL.
01 MY-MIXED-GROUP TYPE MIXED-GROUP.
PROCEDURE DIVISION.
...
* VALIDATE-STATUS句の代わりに宣言節を用いてもよい(特に誤りが予測不能のとき)。
>> TURN EC-VALIDATE CHECKING ON
VALIDATE MY-MIXED-GROUP
E.20 条件式
次の図E.9〜図E.12は,条件式がどのように評価されるかを説明するものである。
623
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
条件1を
評価
条件2を
評価
条件nを
評価
条件1が yes
偽
no
条件2が yes
偽
no
条件nが yes
偽
no
〜〜
〜〜
真理値が
真
真理値が
偽
図E.9−条件1 AND 条件2 AND … 条件n の評価
624
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
条件1を
評価
条件2を
評価
条件nを
評価
条件1が yes
真
no
条件2が yes
真
no
条件nが yes
真
no
〜〜
〜〜
真理値が
偽
真理値が
真
図E.10−条件1 OR 条件2 OR … 条件n の評価
625
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
条件1を
評価
条件2を
評価
条件3を
評価
条件1が yes
真
no
条件2が
偽
no
真理値が
偽
真理値が
真
yes
条件3が
偽
no
yes
図E.11−条件1 OR 条件2 AND 条件3 の評価
626
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
条件1を
評価
条件2を
評価
条件3を
評価
条件1が yes
真
no
条件4が
偽
no
真理値が
偽
真理値が
真
yes
条件3が
偽
no
yes
条件4を
評価
条件2が yes
真
no
図E.12−(条件1OR NOT 条件2) AND 条件3 AND 条件4 の評価
E.21 INSPECT文の実行の例
次に示すINSPECT文の例の各々においてCOUNT‒nは,その文の実行の直前にゼロになっているものと
想定する。最後の例を除けば,各々の例に対して先に二つのINSPECT文を続けて実行する例を示し,そ
の後に実行結果を示した。
例1
INSPECT ITEM TALLYING
COUNT-0 FOR ALL "AB", ALL "D"
COUNT-1 FOR ALL "BC"
COUNT-2 FOR LEADING "EF"
COUNT-3 FOR LEADING "B"
COUNT-4 FOR CHARACTERS;
INSPECT ITEM REPLACING
ALL "AB" BY "XY", "D" BY "X"
ALL "BC" BY "VW"
LEADING "EF" BY "TU"
627
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
LEADING "B" BY "S"
FIRST "G" BY "R"
FIRST "G" BY "P"
CHARACTERS BY "Z"
ITEMの初期値
COUNT-0
COUNT-1 COUNT-2 COUNT-3 COUNT-4
ITEMの最終値
EFABDBCGABCFGG
3
1
1
0
5
TUXYXVWRXYZZPZ
BABABC
2
0
0
1
1
SXYXYZ
BBBC
0
1
0
2
0
SSVW
例2
INSPECT ITEM TALLYING
COUNT-0 FOR CHARACTERS
COUNT-1 FOR ALL "A";
INSPECT ITEM REPLACING
CHARACTERS BY "Z"
ALL "A" BY "X"
ITEMの初期値
COUNT-0 COUNT-1
ITEMの最終値
BBB
3
0
ZZZ
ABA
3
0
ZZZ
例3
INSPECT ITEM TALLYING
COUNT-0 FOR ALL "AB" BEFORE "BC"
COUNT-1 FOR LEADING "B" AFTER "D"
COUNT-2 FOR CHARACTERS AFTER "A" BEFORE "C";
INSPECT ITEM REPLACING
ALL "AB" BY "XY" BEFORE "BC"
LEADING "B" BY "W" AFTER "D"
FIRST "E" BY "V" AFTER "D"
CHARACTERS BY "Z" AFTER "A" BEFORE "C"
ITEMの初期値
COUNT-0 COUNT-1 COUNT-2
ITEMの最終値
BBEABDABABBCABEE
3
0
2
BBEXYZXYXYZCABVE
ADDDDC
0
0
4
AZZZZC
ADDDDA
0
0
5
AZZZZZ
CDDDDC
0
0
0
CDDDDC
BDBBBDB
0
3
0
BDWWWDB
例4
INSPECT ITEM TALLYING
COUNT-0 FOR ALL "AB" AFTER "BA" BEFORE "BC";
INSPECT ITEM REPLACING
ALL "AB" BY "XY" AFTER "BA" BEFORE "BC"
ITEMの初期値
COUNT-0
ITEMの最終値
ABABABABC
1
ABABXYABC
例5
INSPECT ITEM CONVERTING
"ABCD" TO "XYZX" AFTER QUOTE BEFORE "#".
このINSPECT文は,次のINSPECT文と等価である。
INSPECT ITEM REPLACING
ALL "A" BY "X" AFTER QUOTE BEFORE "#"
ALL "B" BY "Y" AFTER QUOTE BEFORE "#"
628
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ALL "C" BY "Z" AFTER QUOTE BEFORE "#"
ALL "D" BY "X" AFTER QUOTE BEFORE "#".
ITEMの初期値
ITEMの最終値
AC"AEBDFBCD#AB"D AC"XEYXFYZX#AB"D
例6
INSPECT ITEM CONVERTING "ABCDEFGHIJKLMNOPQRSTUVWXYZ"-
"abcdefghijklmnopqrstuvwxyz"
TO ALL "?"
ITEMの初期値
ITEMの最終値
415-245-1212
415-245-1212
415-CH5-1212
415-??5-1212
20%Numeric
20%???????
E.22 PERFORM文の実行の例
VARYING指定のあるPERFORM文の幾つかの動作を,次の図に示す。
− 図E.13(PERFORM文にTEST BEFORE指定があり VARYING指定中の条件が一つの場合)
− 図E.14(PERFORM文にTEST BEFORE指定があり VARYING指定中の条件が二つの場合)
− 図E.15(PERFORM文にTEST AFTER指定があり VARYING指定中の条件が一つの場合)
− 図E.16(PERFORM文にTEST AFTER指定があり VARYING指定中の条件が二つの場合)
これらは実装方法を指図するものではない。
一意名2をFROMの
現在値に等しくする
指定された文の組
を実行する
一意名2にBYの
現在値を加える
条件1
真
偽
入口
出口
図E.13−PERFORM文に TEST BEFORE指定がありVARYING指定中の条件が一つの場合
629
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
一意名2をFROMの
現在値に等しくする
指定された文の組
を実行する
一意名5にBYの
現在値を加える
条件1
真
偽
入口
出口
一意名5をFROMの
現在値に等しくする
条件2
真
偽
一意名2にBYの
現在値を加える
一意名5をFROMの
現在値に等しくする
図E.14−PERFORM文にTEST BEFORE指定がありVARYING指定中の条件が二つの場合
630
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
一意名2をFROMの
現在値に等しくする
指定された文の組
を実行する
一意名2にBYの
現在値を加える
条件1
真
偽
入口
出口
図E.15−PERFORM文にTEST AFTER指定がありVARYING指定中の条件が一つの場合
631
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
一意名2をFROMの
現在値に等しくする
指定された文の組
を実行する
一意名5にBYの
現在値を加える
条件1
入口
出口
一意名5をFROMの
現在値に等しくする
条件2
真
偽
一意名2にBYの
現在値を加える
真
偽
図E.16−PERFORM文にTEST AFTER指定がありVARYING指定中の条件が二つの場合
E.23 自由形式正書法の例
次は自由形式正書法の例である。自由形式正書法は,先頭行を除く各行が1列目から始まることを想定
するが,任意の列位置から開始することができる。
* >>SOURCE FORMAT IS FREE
IDENTIFICATION DIVISION.
PROGRAM-ID. Free-form-example.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 a-long-item PIC X(100) VALUE "The first part continued on the next"-
"line - simple enough."
01 num-item PIC 9(10).
PROCEDURE DIVISION.
a-paragraph-name.
632
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
*> これは注記行である - 注記標識に先行するものは何もない
MOVE 0 TO num-item *> これは行内注記 - 原文が先行
MOVE "a literal that is concatenated to make a " &
"longer one" TO a-long-item
>>D ADD 1 TO num-item *> これはデバッグ行
. *> 段落の終わりには終止符がやはり必要
>>SOURCE FORMAT IS FIXED
*> ここから固定正書法 - 左側の空きは無駄
b-paragraph-name.
MOVE 1 TO num-item *> 行内注記は用いてよい
>>SOURCE FORMAT IS FREE
*> ここから自由正書法に戻る - 翻訳指示が8列目にあることに注意せよ.
c-paragraph-name.
ADD 1 TO num-item *> 本来は字下げが必要でないことに注意せよ - A領域も B領域も
*> いかなる領域の概念も存在しない
MOVE "abc" TO a-long-item *> しかしながら,プログラムが読みやすくはなる
STOP RUN.
E.24 条件翻訳
条件翻訳は,DEFINE指示に指定した定数の値に従ってソースコード中のある行を選択的に取り込んだ
り省略したりする手段を提供する。この方法によって,一連のソースコードを別々に分けて保守すること
なく,同一プログラムの変形を複数種類生成してもよい。
条件翻訳に用いられる翻訳指示は,DEFINE指示,EVALUATE指示及びIF指示である。DEFINE指示は
名前つき定数を定義するのに使用され,それがEVALUATE指示又はIF指示の中で参照されて,翻訳時に
翻訳の対象又は省略の対象となるコードの行が選択される。
次に,例を挙げて条件翻訳の使用方法を示す。
>>DEFINE compile-this AS 1
>>DEFINE system-number AS 14
>>DEFINE system-type AS "type A"
IDENTIFICATION DIVISION.
PROGRAM-ID. A-program.
DATA DIVISION.
>>EVALUATE system-type
>>WHEN "type A"
02 type-item PIC X(10) VALUE "System A".
>>WHEN "type B"
02 type-item PIC X(10) VALUE "System B".
>>WHEN OTHER
02 type-item PIC X(10) VALUE "Bad system".
>>END-EVALUATE
...
PROCEDURE DIVISION.
Start-t.
>>IF compile-this IS DEFINED
633
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
DISPLAY "something" *> compile-this指定があるときだけ翻訳
>>END-IF
...
>>IF compile-this IS NOT DEFINED
DISPLAY "something else"
*> compile-this指定がないときだけ翻訳
>>END-IF
...
>>IF (compile-this = 1 AND system-type = "type A") OR (compile-this = 2 AND system-type = "type Q")
PERFORM something
>>ELSE
PERFORM something-else
>>END-IF
>>IF system-number IS > 10 AND system-number IS < 20
MOVE x TO y
>>ELSE
MOVE z TO y
>>END-IF
E.25 CALL-CONVENTION指示
CALL-CONVENTION指示は,これ以降に現れるINVOKE文,文内メソッド呼出し,CALL文,CANCEL
文又はプログラムアドレス一意名に定数で指定されたプログラム名又はメソッド名を,コンパイラが処理
する方法を指示する。これを用いて実装者が呼出しの別な解釈を指示してもよい。既定解釈は
CALL-CONVENTION IS COBOLを指定したのと同じである。呼出し規約名1の指定があるときは,実装
者定義の規約が用いられる。
次の例で,呼出し規約名1がC言語の名前を表すとき,AS句なしの名前は全てC言語の名前として扱
われて大文字と小文字とが区別される。
>> CALL-CONVENTION IS COBOL *> 大文字と小文字との区別なし
CALL "A-COBOL-PROGRAM" USING ...
...
>> CALL-CONVENTION IS c-type-names *> 大文字と小文字との区別あり
CALL "A̲C̲program" USING …
...
>> CALL-CONVENTION IS COBOL
*> ここでCOBOLの名前に復帰する
E.26 ENTRY-CONVENTION句
ENTRY-CONVENTION句は,COBOL実行時要素が制御を受け取る場合に標準COBOL規約とは異なる
規約を使用することを指定する。これを関数又はプログラムの選択肢段落に指定して,その実行時要素が
制御を受け取る方式を指示してもよい。これをクラスの選択肢段落に指定して,そのクラスのメソッドが
制御を受け取る方式を指示してもよい。また,これをインタフェース又は原型の選択肢段落に指定して,
参照されるメソッド,関数又はプログラムへの的確な制御の移行を認可してもよい。
ENTRY-CONVENTION句の効果は実装者定義であり,その効果には,呼出し手順,スタックの処理開始
方法,呼出し対象プログラムの名前の変換などの実装系の解釈が含まれていることがある。
634
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書F
(参考)
実質的な変更点一覧
この附属書は,本体及び附属書(規定)に関連する事柄を補足するものであって,規定の一部ではない。
この附属書の内容は,改正前の規格 JIS X 3002:1992とこの規格との間の変更点の一覧である。F.1には,
既存のCOBOLプログラムに影響を及ぼす可能性のある変更点を示し,F.2には,影響を及ぼさない変更点
を示す。
また,JIS X 3002:1992には反映されていなかった,ISO 1989:1985(COBOL),追補2:1994(正誤表及び
明確化)による変更点について,F.3には,既存のCOBOLプログラムに影響を及ぼす可能性のある変更点
を示し,F.4には,影響を及ぼさない変更点を示す。附属書Fでは,ISO 1989:1985(COBOL),追補2:1994
を追補2と呼ぶ。
JIS X 3002:1992は,その前の規格(JIS X 3002:1988)に,ISO 1989:1992(COBOL),追補1:1992(組込
み関数)を追加した改正版であり,附属書Fではこれを第三次規格と呼ぶ。また,JIS C 6205:1980を第二
次規格と呼ぶ。
F.1
既存プログラムに影響を及ぼす可能性のある変更点
1) 廃要素 第三次規格で廃要素と分類された,次の項目は,この規格では削除した。
− 1文字を2文字で表現する機能
− ALL定数と数字項目又は数字編集項目(複数文字のALL定数と数字項目又は数字編集項目との
関連付け)
− AUTHOR,INSTALLATION,DATE-WRITTEN,DATE-COMPILED,SECURITY段落
− MEMORY SIZE句
− RERUN句
− MULTIPLE FILE TAPE句
− LABEL RECORDS句
− VALUE OF句
− DATA RECORDS句
− ALTER文
− DISABLE文のKEY指定
− ENABLE文のKEY指定
− ENTER文
− GO TO文中の手続き名1の省略
− OPEN文のREVERSED指定
− STOP 定数文
− 区分化機能単位
− デバッグ機能単位
理由 それぞれの項目について機能を削除するに到った理由は,第三次規格で提示した。これらの機
能は,外付け(ハードウェア又はソフトウェア)の実装,又は新しい構造化プログラミング機能によ
635
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
って取り扱うほうがよい。さらに,これらの機能の大半はほとんど実装されなかったか,又は実装者
定義であったため,移植性を高めるものではなかった。
この変更によって影響を受けるような,第三次規格の廃要素を用いたプログラムは,ほとんどない
と確信する。ここで,廃要素に依存している利用者のために,削除された機能に対応する仕様拡張を
実装者が提供してもよい。
2) 入出力状態 ファイル共用不整合条件とレコード操作不整合条件とに対して新たに入出力状態の値を
追加した。入出力状態23と42とは意味を拡張した。
理由 ファイル処理機能は,ファイル共用,レコード施錠及びSTART文の機能拡張を包含するよう
に拡張された。これらの新たな機能に関して情報を提供するため,入出力状態の新たな値が追加され,
既存の値は意味が拡張された。以前は,実装者が,多様な状態を網羅するために実装者定義の入出力
状態の値の組を多様な方法で別々に規定していた。
この規格では,これら未規定だった入出力状況に対して入出力状態の値を規定した。これによって
利用者は,標準的な方法で誤り条件を検査したり,特定の誤り条件に対し適切な箇所で修正を処置し
たりしてもよい。
一般に,この追加によって影響を受ける可能性のあるプログラムは,次のとおりである。
a) 今回規定した条件を検出するため特定の実装者定義の入出力状態値を検査しているプログラム
b) この規格で規定した条件のいずれかに対して,成功完了の入出力状態の値になることを前提にし
ているプログラム
c) 新たに規定した条件のいずれかが発生したとき,プログラム異常終了などの何か実装者定義の動
作が行われることを前提にしているプログラム
この変更は,特定の入出力状態の値を検査するプログラムに実質的な影響を及ぼす可能性がある。
影響を受ける個別の入出力状態の値は,以降の段落に記述するとおりである。
入出力状態=5X。 不成功完了を伴うレコード操作不整合条件
a) 入出力状態=51。入出力文が不成功,現在で別の実行単位が施錠しているレコードを呼出ししよ
うとして。
b) 入出力状態=52。入出力文が不成功,デッドロックのため。
c) 入出力状態=53。入出力文が不成功,レコード錠を要求したが,実装者が許す最多数の錠を実行
単位が保持しているため。
d) 入出力状態=54。入出力文が不成功,レコード錠を要求したが,実装者が許す最多数の錠をファ
イル結合子が保持しているため。
e) 入出力状態=55。READ文が,同じファイル結合子を介して,既に施錠済みのレコードに施錠を要
求した。
入出力状態=6X。 不成功完了を伴うファイル共有不整合条件
a) 入出力状態=61。ある物理ファイルに関してOPEN文を試みたが,別のファイル結合子がその物
理ファイルをこの要求と整合しない方法で既に開いているため,ファイル共用不整合条件が成立
する。起こり得る違反は次のとおりである。
1. 物理ファイルを開こうとしたが,別のファイル結合子がそれを排他モードの共用で現在開い
ている。
2. 排他モードの共用で物理ファイルを開こうとしたが,別のファイル結合子がそれを現在開い
ている。
636
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
3. 入出力両用モード又は拡張モードで物理ファイルを開こうとしたが,別のファイル結合子が
読取り専用モードの共用でその物理ファイルを現在開いている。
4. 読取り専用モードの共用で物理ファイルを開こうとしたが,別のファイル結合子が入出力共
用モード又は拡張モードでその物理ファイルを現在開いている。
5. 出力モードで物理ファイルを開こうとしたが,別のファイル結合子がその物理ファイルを現
在開いている。
入出力状態 23は,次の場合を含むように拡張された: START文を実行しようとしたが,キー長の
指定が正しくない,順ファイルの中にレコードが一つもない,順ファイルが先頭レコードへ又は最終
レコードへの位置付けができない。
入出力状態 42は,開かれていないファイルをUNLOCKしようとした場合を含むように拡張された。
3) 入出力状態 48 (明示的又は暗黙に)ACCESS IS SEQUENTIAL句を書いて定義され入出力両用モー
ドで開かれたファイルに対してWRITE文を実行しようとすると,結果として入出力状態の値48が設
定される。
理由 第三次規格では,ACCESS IS SEQUENTIAL句で定義され入出力両用モードで開いたファイル
に対するWRITE文を実行してはならないことを規定していた。しかしこの規則に違反したときにど
のような入出力状態が返されるかを規定してはいなかった。この規格は,この違反を,入出力状態の
値48が設定される結果となる状況の規定に追加する。
多くの実装系では既に入出力状態の値48を採用して,既存の制限に違反したことを示している。こ
の条件を示すために実装系が提供した別な入出力状態の値を明示的に検査しているプログラムは,コ
ードの書き直しが必要になる。
この変更は,第三次規格の解釈に対する要求結果として行われた。この変更によって影響を受ける
プログラムは,ほとんどないと確信する。
4) ファイルのレコード領域 ファイルに対する最大の記憶域割付けは,明示的なRECORD句によって
決まる。
理由 この変更は,ファイルに対する最大の記憶域割付けが明示的なRECORD句によって決まり,
関連するレコード記述での指定内容にはかかわらないことを規定するものである。
第三次規格では,明示的なRECORD句が示す文字数がレコード記述の最大数と異なるとき,その
ファイルに関連する最大の記憶域量を割り付けるためにいずれの量が採用されるかを規定していなか
った。
この規格のこの変更によって,この状況を取りさばく方法が一種類に定まり,プログラム移植性が
高まる。この変更は第三次規格の解釈に対する要求の結果として行われた。この変更によって影響を
受けるプログラムは,ほとんどないと推定している。
5) 局所ファイル記述をもつ大域ファイルレコード 外側のプログラムのファイル記述又は報告書記述
にGLOBAL句がない限り,そのファイルを直接又は間接に参照する入出力文を,内側のプログラム
中に書いてはならない。
理由 第三次規格では,外側のプログラムで定義され,ファイルレコードは大域的だがファイル記述
は局所的なファイルがあるとき,そのファイルを参照する入出力文を,内側のプログラム中に書ける
か否かを規定していなかった。さらに,そのような入出力文を書いてもよい実装系で,どのファイル
関連項目(ファイル状態など)が入出力文によって更新されるのかを規定していなかった。
この変更によって影響を受けるプログラムは,ほとんどないと推定している。これを禁止するため
637
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
の意向は,第三次規格の解釈の中で文書化されていた。そのため,大半の実装系では既にこの構文を
制限しているか,又はこの規格の実装系でも継続してもよい拡張仕様として追加している。
6) 予約語 次の予約語が追加された。
ACTIVE-CLASS
ADDRESS
ALIGNED
ALLOCATE
ANYCASE
AS
B-AND
B-NOT
B-OR
B-XOR
BASED
BINARY-CHAR
BINARY-DOUBLE
BINARY-LONG
BINARY-SHORT
BIT
BOOLEAN
CLASS-ID
COL
COLS
COLUMNS
CONDITION
CONSTANT
CRT
CURSOR
DATA-POINTER
DEFAULT
EC
END-ACCEPT
END-DISPLAY
EO
EXCEPTION-OBJECT
FACTORY
FLOAT-EXTENDED
FLOAT-LONG
FLOAT-SHORT
FORMAT
FREE
FUNCTION-ID
GET
GOBACK
GROUP-USAGE
INHERITS
INTERFACE
INTERFACE-ID
INVOKE
LOCAL-STORAGE
LOCALE
METHOD
METHOD-ID
MINUS
NATIONAL
NATIONAL-EDITED
NESTED
NULL
OBJECT
OBJECT-REFERENCE
OPTIONS
OVERRIDE
PRESENT
PROGRAM-POINTER
PROPERTY
PROTOTYPE
RAISE
RAISING
REPOSITORY
RESUME
RETRY
RETURNING
SCREEN
SELF
SHARING
SOURCES
SUPER
SYSTEM-DEFAULT
TYPEDEF
UNIVERSAL
UNLOCK
USER-DEFAULT
VAL-STATUS
VALID
VALIDATE
VALIDATE-STATUS
>>
*>
&
::
理由 いずれの場合も,予約語を追加して新たな機能が使用可能になる利便のほうが,利用者定義語
の版図からこの語を削除することによって生じる不便さにまさる。
7) 特殊名段落のSTANDARD-1 ALPHABET句のSTANDARD-1指定によって参照される符号化文字集
合を,ANSI X3.4:1978 からISO/IEC 646に変更する。
理由 ANSI X3.4:1978は廃止規格なのでこの変更が必要だった。COBOLは国際的に広範に用いられ
るので,引用する規格には,各国規格ではなく国際規格を採択する。
COBOL実装系は,おそらく廃止版のANSI X3.4を実際に実装・提供していないので,このANSI
X3.4:1978からの変更によって,影響を受ける既存プログラムはないと確信する。実装者は,FLAG-85
指示にALL又はSTANDARD-1の指定がある場合に備えて,翻訳時診断を提供しなければならない。
8) 特殊名段落のSTANDARD-2 ALPHABET句のSTANDARD-2指定によって参照される符号化文字集
合を,発行年と版の未定なISO/IEC 646から実装者が版を指定するISO/IEC 646に変更する。
理由 第三次規格では,ISO/IEC 646の発行年が規定されず,国際基準版と各国版とのいずれを選択
するかの点も規定されなかった*。実装者はどの発行年と版を使用するか規定を要求されなかった。こ
のため STANDARD-2の意味は曖昧なままであった。
638
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
注*
COBOL規格JIS X 3002:1988では,ISO/IEC 646の国際基準版と規定。
実装者は,現行版のISO/IEC 646を実装・提供する必要があるが,以前に実装・提供した版を引き
続き実装・提供してもよい。廃止版を実装・提供している実装系はまずありそうにないので,この変
更で影響を受ける既存プログラムはありそうにない。実装者は,FLAG-85指示にALL又は
STANDARD-2の指定がある場合に備えて,翻訳時診断を提供しなければならない。
9) 特殊名段落のCURRENCY SIGN句 PICTURE文字列の記号として今では文字"N"及び"n"を用いる。
これらの文字はもはやCURRENCY SIGN句に通貨記号として指定できない。
理由 各国文字データのために,PICTURE記号が追加された。この目的のための拡張仕様として,多
くのコンパイラでは文字"N"を用いている。
この変更によって既存プログラムが影響を受けるか否かは不明である。しかし,多くの実装系が既
にこれを拡張仕様として実装・提供済みである事実,及び文字"N"をCURRENCY SIGN句に指定すれ
ばコンパイラの診断メッセージが発行されるという事実によって,影響の可能性は低くなっている。
10) 特殊名段落のCURRENCY SIGN句 PICTURE文字列の記号として今では文字"E"及び"e"を用いる。
これらの文字はもはやCURRENCY SIGN句に通貨記号として指定できない。
理由 浮動小数点数字編集データ項目のため,PICTURE記号が追加された。浮動小数点表記には,共
通に文字"E"が使われている。
この変更によって既存プログラムが影響を受けるか否かは不明である。しかし,多くの実装系が既
に記号"E"を用いて浮動小数点数字編集データ項目を実装・提供済みである事実,及び文字"E"を
CURRENCY SIGN句に指定すればコンパイラの診断メッセージが発行される事実によって,影響の可
能性は低くなっている。
11) SAME句 SAME句で参照されるファイル名は,そのSAME句を書いたソース要素の* ファイル管理
段落で記述しなければならない。
理由 第三次規格は,含まれるソース要素中のSAME句が,含む側のソース要素中で記述されたファ
イルを参照してもよいかどうかについて不明確であった。そのような参照の意味も不明確であった。
この規格は,SAME句で参照されるファイルは,そのSAME句を含んでいるソース要素中で指定する
必要があることを規定する。
意味の定義が欠けていた参照を許していた実装者はいそうにないので,この変更点によって影響を
受ける既存プログラムは,ほとんどないと推定している。
12) 致命的入出力例外状態の後の実行継続 致命的入出力例外状態が発生した後の動作として,実装者が
実行単位の強制終了ではなく実行継続を選択した場合,例外状態を引き起こした入出力文の終わりに
後続する,次に実行可能な文から実行が続くことになる。
理由 第三次規格では,どの箇所から実行が続くのかを規定していなかった。何が起こるかは実装者
定義であったため,どこからでも実行が継続できた。また,NOT AT END指定又はNOT INVALID KEY
指定が実行されるか否かは不明確であった。この変更点はこのような状況を明確にした。
13) 実行可能コードの生成 検査の有効でない致命的な例外状態をコンパイラが検出した場合に,実装者
が実行可能な目的プログラムを生成する必要はない。
理由 第三次規格では,このような場合に実装者が実行可能コードを生成する必要があるのか否かを
規定していなかった。例えば,添字に指定した定数が表の範囲外となる場合,実装者によって実行可
能コードを生成したり,しなかったりしていた。以前の実装系との互換性を強く要望する場合,実装
者は実行可能コードを生成するほうを選択できる。
639
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
14) べき乗 べき指数の式の値がゼロ未満のとき,べき指数に対して次の条件が真でなければならない。
(FUNCTION FRACTION-PART (べき指数) = 0)
さもなければ,EC-SIZE-EXPONENTIATION例外が成立して,けたあふれ条件が発生する。
理由 第三次規格では,べき乗計算の評価結果として実数が存在しない場合,けたあふれが発生する
ものとしていた。どの場合に実数が存在するかを決定するのは,実装者次第であった。
数学的には,奇数の逆数の整数倍であるべき指数は,負の作用対象から実数の結果を得る。例えば,
‒2 ** 3 = ‒8
‒8 ** (1/3) = ‒2
‒8 ** (2/3) = +4
‒2 ** 5 = ‒32
‒32 ** (1/5) = ‒2
‒32 ** (2/5) = +4
‒2 ** 7 = ‒128
‒128 ** (1/7) = ‒2
‒128 ** (2/7) = +4
第三次規格では実装者は,分数のべき指数は正確に表現できない(2進の浮動小数点を用いる場合
は正しい)と主張することが可能であり,したがって任意の動作が規格に合致していた。
実装者によっては,0.2の倍数によって,負の値のべき乗演算が数学的に正しい結果を得るように実
装していることはあり得る。しかし,そのような実装系を知らない。
けたあふれ条件が起こる場合が規定されて,この変更によるCOBOLプログラムの移植性は高まる
だろう。この変更によって影響を受ける規格合致プログラムは,ほとんどないと推定している。
15) SIZE ERROR指定なしのけたあふれ条件 SIZE ERROR指定もNO SIZE ERROR指定もない文でけた
あふれが発生し,関連する宣言手続きがないとき,実行単位が終了するか,それとも不当な値のまま
実行が続くかは,実装者定義とする。
理由 第三次規格では,けたあふれの場合に,規定されない値のままで実行が続くことになっていた。
しかし,どこから実行が続行するのか(特に条件文中で)が不明確であった。さらに,実行の継続が
不当な値を伴うということは,多くの重要な応用プログラムにとって許容できないことであった。そ
れが,データベースを不当に改変したり,プログラムの不当な実行を引き起こしたり,その他にも多
くの誤りを引き起こしかねないからである。プログラムを変更して影響のある文全てに対してON
SIZE ERRORを追加することなど,できるものではなかった。利用者の要請に応えて,幾つかの実装
者はこの状況で実行単位を異常終了させていた。場合によっては,実装者が翻訳指示に基づいて終了
の選択を許していたこともあった。
この状況で終了していた応用プログラムの多さと重要さは,この仕様変更に対して強力な正当化の
理由を与えるものである。実装者たちは彼らなりの第三次規格の実装に従い,処理の継続及び終了か
ら自由になるので,この変更による既存プログラムへの影響はほとんどないと推測している。
16) CORRESPONDINGの順序と項目識別 CORRESPONDING指定のあるADD文,MOVE文及び
SUBTRACT文の,対応する作用対象に対して生成される暗黙の文の実行順序は,語CORRESPONDING
に後続する集団中の作用対象の指定順序で定義される。第三次規格は,順序を規定していなかった。
さらに,暗黙の文に対する添字の評価は,実際のADD文,MOVE文及びSUBTRUCT文の実行開始
時に一度だけ行われる。第三次規格はこれを暗示していたが,規定してはいなかった。
理由 第三次規格では,これらの状況が明確に定義されていなかった。この変更点は移植性を高める
ので正当化される。実装者は,FLAG-85指示にALL又はCORRESPONDINGの指定がある場合に備
えて,翻訳時診断を提供しなければならない。
17) DIVIDE文の剰余の計算 剰余の計算で,値は,商の受取り側項目の符号の有無には依存しない。
理由 第三次規格では,被除数と除数とが異なる符号をもつとき,剰余として得られる値は商の受取
り側項目の符号の有無によって異なる。これは数学的に不当な結果と考えられる。新たな規則は,商
640
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
の受取り側項目の符号の有無に関係なく,剰余として同一の値を与える。
移植性の利点のほうが,上位互換性の問題にまさるものと確信する。実装者は,FLAG-85指示に
ALL又はDIVIDEの指定がある場合に備えて,翻訳時診断を提供しなければならない。
18) USE文 USE文のファイル名1は,整列併合用ファイルであってはならない。
理由 これは第三次規格では許されていたが,それに対する意味規則はなく,このような参照を含む
USE文が実行されることはなかった。これを不当とすることによって,プログラムが明確になる。
このような文は意味がないので,影響を受ける既存プログラムはない。そのような文があれば,実
装者は構文エラーを用意するだろうから,移植性の向上がこの変更を正当化する。
19) WRITE文,RELEASE文及びREWRITE文 新しい構文規則では,FROM指定に書いた一意名を送
出し側データ項目としレコード名を受取り側とするMOVE文が妥当でなければならない。
理由 第三次規格は,FROM指定のあるWRITE文,RELEASE文及びREWRITE文のことを,その一
意名及びレコード領域を送出し側と受取り側の項目にそれぞれ指定したMOVE文と等価であると規
定していた。しかし,そのようなMOVE文に対して一意名が妥当であることを要求する構文規則は存
在せず,結果は規定されなかった。
20) 省略可能な引数をもつ関数 ある関数の引数が省略可能であるとき,組込み関数名に後続する左括弧
は,その関数の引数並びの左分離符とする。
理由 第三次規格では,RANDOM関数に後続する括弧の中にある項目の解釈の規定が不明確だった。
RANDOM関数には引数がなくてもよいため,次の例において,(a) がMAX関数の第2引数なのか,
それともRANDOM関数の引数なのか,不明確だった。
FUNCTION MAX(FUNCTION RANDOM (a) b)
この規格では,この場合の (a) はRANDOM関数の引数であると規定する。
この変更点によって影響を受ける既存プログラムは,ほとんどないと推測している。第一に,引数
を区切るつもりでなくてRANDOM関数の後に左括弧を書くことはまずないだろうし,第二に,多く
の実装系では既に,この変更に従うようにこの特殊な場合を解釈している。実装者は,ALL又は
FUNCTION-ARGUMENTの指定のあるFLAG-85指示が指定されていて,かつ,複数の引数をとる組
込み関数の引数に,RANDOM関数の直後に算術式が続く場合,翻訳時診断を出さなければならない。
21) MOVE文,31文字を超える英数字の送出し側 非数字の項目又は定数が数字項目へ転記され送出し
側が31文字長を超えている場合,右端の31文字が用いられる。
理由 第三次規格では,このような操作に対する意味が規定されていなかった。整数が用いられると
明記はされていたが,言語が許す整数は最大18けただった。用いられる部分は右端と左端のいずれの
18けたか,又はその間にある何かなのか,は明記されていなかった。この規格では,右端の31文字
が用いられると規定する(数字定数及び数字データ項目の最大けた数はこの規格では18けたから31
けたに拡張された)。影響を受ける既存プログラムはなかろうと予測される。全てとはいかないが,ほ
とんどの実装系では右端のけたが使用されている。実装者は,FLAG-85指示にALL又はMOVEの指
定がある場合に備えて,翻訳時診断を提供しなければならない。
22) 略記組合せ比較条件中のNOT “以上(より大きい又は等しい)”及び“以下(より小さい又は等し
い)”を意味する比較演算子の前に語NOTは禁止される。
理由 第三次規格では,略記組合せ比較条件中の語NOTの後に,現在では拡張比較演算子となって
いるGREATER THAN OR EQUAL TO及びLESS THAN OR EQUAL TO がある場合の動作が不明確で
あった。ある実装系はこれをエラーとし,他の実装系ではこの曖昧な構文に対して実装が異なり,結
641
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
果として移植性を欠いていた。
この規格では,この不明確性が生じかねない状況において語NOTは禁止される。全ての実装者は
この使用方法に診断を出さなければならないので,移植性は向上する。この変更は,第三次規格の解
釈に対する要望の結果として行われた。このようなNOTの使用方法に対してコンパイラが診断を出
すことになるので,実行に相違はなくなるだろう。この変更点によって影響を受けるプログラムは,
ほとんどないと推定している。
23) 送出し側作用対象及び受取り側作用対象 用語“送出し側作用対象”及び“受取り側作用対象”を
規定した。
理由 第三次規格では,ある項目が,どのような場合に送出し側作用対象であり,どのような場合に
受取り側作用対象であるか,が明記されていなかった。可変長集団項目に対してはこれが長さを決定
する要因となる場合がある。
この規格では,ある作用対象が送出し側作用対象である場合と受取り側作用対象である場合とが明
記され,これによってプログラムの移植性が向上する。
この変更は,第三次規格の解釈に対する要望の結果として行われたものである。この変更点によっ
て影響を受けるプログラムは,ほとんどないと確信している。
24) 不適合データ 不適合データ条件を引き起こす条件が明確に規定された。これらはブール,数字及び
数字編集の送出し側作用対象に限定される。
理由 第三次規格では,不適合データに対する規則を,“データ項目の内容が参照され,そのデータ項
目の内容がPICTURE句で規定される字類に矛盾する場合,その参照の結果は規定しない”ものとし
ていた。だが,どういう場合に“データ項目の内容が参照された”ことになるのか,どういう場合に
“不適合データの条件の原因”になるのか,を規定している規則は存在しなかった。この決定方法は
実装者に任され,ここに規定される状況とは異なる状況において不適合データの条件が指定されても
構わなかった。
この規格では,不適合データの検出される場合が規定されて,これによってプログラムの移植性が
向上する。新規導入の共通例外処理の一部であるEC-DATA-INCOMPATIBLE例外状態は,この例外の
操作を制御する手段をプログラマに提供している。
この変更は,第三次規格の解釈に対する要望の結果として行われたものである。この変更点によっ
て影響を受けるプログラムは,ほとんどないと確信している。
25) EVALUATE文の実行の順序 選択主体及び選択対象の評価の順序が左から右へであり,選択対象は
各WHEN指定が処理されるに従って評価される,と定義している。WHEN指定が選択されてしまえ
ば,それ以上の選択対象は評価されない。
理由 第三次規格では,EVALUATE文中の選択主体及び選択対象の評価順序を定義していなかった。
あたかも,それらが全て一度に評価されるか又は何か未規定の順序で評価されるか,のようだった。
また,この規則は,たとえ前のほうのWHEN指定のいずれかが選択されるとしても,評価は全ての選
択対象に対して行われることを示していた。新しい規則で違いが生じるであろう唯一の箇所は,選択
対象のいずれかの中にRANDOM関数が指定されてそれが評価されなくなる場合である。さらに,現
仕様では,幾つかの添字境界条件又はその他のエラーが起こらなくなるかもしれない。
新しい規則では全ての選択主体がEVALUATE文の実行開始時点で評価されるとしているので,こ
の評価の最中に,以前は起こらなかったかもしれない幾つかの添字境界条件又はその他のエラーが,
起きるようになるかもしれない。
642
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
この変更は,第三次規格の解釈に対する要望の結果として行われたものである。この変更点によっ
て影響を受けるプログラムは,ほとんどないと確信している。
26) NUMVAL関数及びNUMVAL-C関数 この規格は,NUMVAL関数及びNUMVAL-C関数の引数1と
CR及びDBとの突合せを大文字・小文字を区別せずに行い,CR及びDBがあることで関数の返却値が
負になると規定している。NUMVAL-C関数の“通貨記号”引数に,曖昧となる文字を指定してはなら
ない。
理由 第三次規格では,NUMVAL関数及びNUMVAL-C関数の引数1中のCR及びDBの突合せで,
大文字・小文字の区別を意識するのか否かを規定していなかった。この突合せで大文字・小文字の区
別を意識しないと規定することによって,利用者はPICTURE句で慣れ親しんできたのと同じ融通性
を獲得する。
第三次規格では,NUMVAL関数及びNUMVAL-C関数の引数1におけるCR及びDBの意味を規定
していなかった。この規格ではCR及びDBに,PICTURE文字列中での意味と同じ意味を与える。こ
れによって値は負となる。
第三次規格では,NUMVAL-C関数の“通貨記号”引数に制約を設けてはいなかった。しかし,その
規格を解釈すれば,幾つかの文字は曖昧となり,したがって,これらの文字を用いた場合の意味は規
定されていなかった。これら曖昧となる文字の使用を禁止することによって,失われる機能は何もな
い。
結果が予測可能になることと移植性とが,この変更によって生まれる利点である。この変更で既存
の実装系又はプログラムのどれだけが影響を受けることになるのかは,分かっていない。
27) OCCURS句,指標の範囲に関する最大限の下限値及び最低限の上限値 この規格では,指標に対して
次のように規定している。
− 実装者が実装・提供しなければならない最大の下限は,(1−関連する表の最大反復回数)の値
− 実装者が実装・提供しなければならない最低の上限は,(2× 関連する表の最大反復回数)の値
理由 第三次規格では,指標に格納してもよい値に限界を設けていなかった。しかしながらPERFORM
文の規則において,次のように記述していた。“後述のように,これ以降に指標名1又は指標名3を増
加させた結果として,関連する指標に指標名1又は指標名3と関連する表の範囲外の値が設定される
ことがあってはならない。ただし,例外として,PERFORM文の終了時点で指標名1に関連する指標
の内容が,関連する表の範囲よりも,増分値又は減分値,一つ分だけ外にある値であってもよい”。こ
の記述には,“増分値と減分値とに関しては限界がないのだから,指標の値に関しても限界はない”と
いう解釈も,“指標は表の範囲より,表要素の大きさ一つ分だけ外にあってもよい”という解釈もあっ
た。
今回の変更でプログラムの移植性は向上する。なぜなら,最大反復回数が1でない限り,
PERFORM … VARYING … FROM 2 BY 2
のような構成が書けることが保証されるからである。
この変更点によって既存プログラムはほとんど影響を受けないと推測している。なぜなら,表の大
きさを超えている増分値/減分値などに現実的な価値はほとんどなく,実装者がより大きな指標の値が
使えるように実装・提供し続けるのは自由だからである。
28) SET 条件変数 条件設定形式の SET文中で参照された可変長条件変数の長さは,OCCURS句の規則
から決まる。
理由 第三次規格では,条件設定形式の SET文中で参照された可変長条件変数の長さを決定するた
643
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
めの規則は規定されていなかった。この規格では,長さを決定するためにOCCURS句の規則が用いら
れると規定する。
この規格の今回の変更によって,この長さを決定する方法が一つ定義され,それによってプログラ
ムの移植性の程度が向上する。
この変更は,第三次規格の解釈に対する要望の結果として行われたものである。この変更点によっ
て影響を受けるプログラムは,ほとんどないと推定している。
29) 長さゼロの項目 長さゼロの項目に対する規則が,明確に示された。また,レコードが可変である場
合の相対ファイル又は順ファイルの最小レコード長はゼロであってよい。そのようなファイルへと書
き出されるか更新されるレコードは長さゼロであってよい。そのようなレコードが読み込まれた場合,
その長さはゼロになる。
理由 第三次規格では,長さゼロの項目に対する明示的な規則がなかったので,実装者が仕様を解釈
した結果が,この規格での仕様と異なることがあった。ファイル中の長さゼロのレコードの場合は,
ある実装系ではそのようなレコードを読み飛ばした。また,そのようなレコードを全く認めない実装
系もあった。
この規格では,長さゼロの項目及びファイル中の長さゼロのレコードを扱うと,どのような動作が
起きるかを規定している。長さゼロのレコードを実装・提供しない実装系は,この規格に合致するた
めに,そうした変更を行う必要はない。
この変更は,第三次規格の解釈に対する要望の結果として行われたものである。この変更点によっ
て影響を受けるプログラムは,ほとんどないと確信している。さらに,長さゼロのレコードが使用さ
れている箇所に,FLAG-85指示を用いて翻訳時診断を出すことができる。
30) END-OF-PAGE指定及びNOT END-OF-PAGE指定 これらの指定中に書かれた無条件文の処理方法
が明確に規定された。また,ページ終了条件とページあふれ条件との関係が明確に規定された。
理由 第三次規格では,ページあふれ条件及びページ終了条件が成立した場合に何が起きるのか,が
規則中で明確に規定されてはいなかった。以前の規則はEND-OF-PAGE指定中とNOT END-OF-PAGE
指定中に書かれた無条件文が両方とも実行されることを暗に意味していた。この規格では,
END-OF-PAGE 指定の無条件文だけが実行される,と明記している。
第三次規格の実装系で,無条件文の並びを両方とも実行させているものは,分かっている限りでは
一つもない。この変更点によって影響を受けるプログラムは,ほとんどないと確信している。
31) MERGE文及びSORT文 新たな規則によって,整列又は併合処理中に非致命的な入出力例外状態が
発生したあとのこれらの文の振る舞いが規定された。その振る舞いは,その次のレコード,次のファ
イル又は次の処理段階から,これらの文の実行が続行するように規定されている。また,整列又は併
合の操作が活性状態の間に呼び出されたUSE手続きが通常完了しない場合に,これらの操作が終了し
なければならないことも明確化された。
理由 第三次規格では,多くのエラーの場合の振る舞いは規定されていなかった。入力ファイルを閉
じようとする場合に発生するエラーに対しては例外状態の規定が存在しないので,実装者定義の状態
が設定されてもよかった。ファイルからデータを全て取得してしまった時点でエラーが発生するのだ
から,この文の実行を継続しても害はないであろう。入力ファイルに対しては,非致命的な例外状態
を示す新たなファイル状態値("0x")を返すこともできる。これらの例外状態に対する振る舞いもま
た,規定する必要がある。これらは一般的に参考としての状態であって,整列又は併合の操作は中止
しないほうがよい。さらに,プログラマは,そうすることが適切であれば,これらの例外をUSE手続
644
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
きで処理してこの操作を終わらせることもできる。
この変更点によって影響を受けるプログラムはほとんどなく,この振る舞いの利点のほうが上位互
換性の問題にまさるものと確信している。
32) MERGE文 MERGE文が終了させられ,その原因となった例外状態の結果として,ある宣言手続き
が呼び出されるとき,宣言手続きの呼出しはMERGE文の終了に先立って行われることが規定された。
理由 第三次規格では,暗黙の機能の実行中に該当するUSE手続きが実行されることがあると記され
ているが,MERGE文が終了させられる場合に,この文の終了がUSE手続きの実行の前になるか後に
なるかは規定されていなかった。これによって明らかに振る舞いは影響を受け,ある場合にはファイ
ルが開いた状態であり,別の場合には閉じた状態である,ということが起こり得る。この点は,SORT
に対しては規定済みであり,MERGEに対して規定がないのは規格の誤りであったと考えられる。
この新規の振る舞いが今まで最もありそうな振る舞いであろうから,この変更点によって影響を受
けるプログラムはほとんどないと確信している。
33) BLANK WHEN ZERO句 PICTURE文字列中に記号"S"の含まれている数字項目に対して,BLANK
WHEN ZERO句を指定してはならない。
理由 第三次規格では,PICTURE文字列中に記号"S"のある数字項目に対するBLANK WHEN ZERO
句が構文上で妥当か否かの規定はなかったが,この句によって数字項目の項類が数字編集項目とみな
されることの規定はあった。この曖昧さのため,実装系によって異なる振る舞いが導かれることがあ
った。この規格では,BLANK WHEN ZERO句が数字項目に指定した場合PICTURE記号"S"は不当で
あると規定する。
この変更は,第三次規格を解釈した一つの結果である。この変更点によって影響を受ける既存プロ
グラムがあるか否かは,分かっていない。実装者は今後このような用法が現れればエラーにすること
になり,移植性の向上がこの変更を正当化する理由になる。
34) SEARCH ALL文 ある表の要素が順序どおりには並んでいない場合,SEARCH ALL文によって要素
が一つ識別されるか否か,又は例外状態になるか否か,ということは規定されない。要素が識別され
るとき,実行は正常に続く。
理由 第三次規格では,この場合の動作について規定はなかった。また,これ以降の実行に関しての
制限もなかった。この規格では,要素が見つかる場合の動作を規定する。要素が見つからない場合,
この規格では例外状態になるものと規定する。この変更によって応用プログラムの信頼性が向上する
ものと思われる。この変更点によって影響を受ける既存プログラムは,ほとんどないと推測している。
35) SEARCH ALL文 表の要素のうちでSEARCH ALL文のWHEN指定に書かれた条件の全てを満足す
るものは複数個あってもよい。SEARCH文の実行によってこれらの要素のいずれかが識別される,し
かし,これらの要素のうち,いずれが識別されるのかは規定されない。
理由 第三次規格では,キーデータ項目の内容が,表要素を一意に識別するのに十分ではない場合,
SEARCH ALL文の結果は規定されないと明示されていた。しかしながらほとんどの実装系では,表引
き指標の設定はこれらのうちの一つになって処理は正常に続く,という結果であった。この変更点に
よって影響を受ける既存プログラムは,ほとんどないと推測している。
36) REDEFINES句 再定義する側の項目に必要とされるけたよせは,再定義される側の項目のけたよせ
と同じでなければならない。
理由 第三次規格では,けたよせの差違をどう扱うかについて規定はなかった。例えば
01 A.
645
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
03 Item-1 PIC X.
03 Item-2 PIC X(4).
03 Item-3 redefines Item-2 PIC 9(7) usage binary.
実装系によってはItem-3の開始位置が文字境界だったり半語境界だったり全語境界だったりする
だろう。再定義の目的によっては予期せぬ再定義結果又は移植性の欠落を生じるだろう。
新たな規則では,例題中のItem-3のけたよせがItem-2のけたよせと同じでなければならない。
特定の実装系でけたよせが同じでなければ構文誤りになる。そのとき,プログラマはけたよせを同じ
にするようデータ記述項を修正するだろう。
ビット及び各国文字が追加されて,けたよせがプログラムに影響しそうな場合は更に増えた。
この変更点によって影響を受けるプログラムはほとんどなく,結果が予期でき移植性が向上する利
点のほうが上位互換性の問題にまさるものと確信している。
37) CANCEL文 この文に指定したファイル群に対する暗黙のCLOSE文は,たとえファイルのいずれか
を閉じる処理中に誤りが発生したとしても,各ファイルに対して実施される。
理由 第三次規格では,ファイルのいずれかを閉じる処理中に不成功になる場合の意味付けについて
規定はなく,実装者に任されていた。この規格では,これらの暗黙のCLOSE文は,たとえCLOSE文
の組の実行中に誤りが発生しても,関連する全てのファイルに対して実行されると規定する。
この変更点によって影響を受けるプログラムがどれだけあるかは不明である。
38) STOP文 この文に指定したファイル群に対する暗黙のCLOSE文は,たとえ,ファイルのいずれかを
閉じる処理中に誤りが発生したとしても,各ファイルに対して実施される。
理由 第三次規格では,ファイルのいずれかを閉じる処理中に不成功になる場合の意味付けについて
規定はなく,実装者に任されていた。この規格では,これらの暗黙のCLOSE文は,たとえCLOSE文
の組の実行中に誤りが発生しても,関連する全てのファイルに対して実行されると規定する。
この変更点によって影響を受けるプログラムがどれだけあるかは不明である。
39) MERGE文及びSORT文 整列処理又は併合処理の処理対象ファイルは,順呼出し法又は動的呼出し
法でなければならない。
理由 第三次規格では,整列処理又は併合処理の処理対象ファイルの呼出し法について規定はないが,
一般規則には,NEXT指定とAT END指定とのあるREAD文を実行したのと同様にレコードの読込み
が行われる,と記述されていた。したがって,乱呼出し法のファイルについては結果が規定されない
状態だった。
この規格では,このようなファイルの呼出し法を,順呼出し又は動的呼出しでなければならないと
規定する。
40) SIZE ERROR指定 算術式を含む文にSIZE ERROR指定があるとき,その算術式の中間結果の評価
中にけたあふれが検出されると,けたあふれ条件になる。
理由 第三次規格ではこの状況(中間結果の評価)でけたあふれ条件になることを要求しなかった。
その代わりに,規定されない値が返されるはずであった(規定外だと示すことなしに)。多くの重大な
応用プログラムにとって,これは許容できないことであった。
この誤りを検出する利点のほうが,上位互換性の問題にまさるものと確信する。
F.2
既存プログラムに影響を及ぼさない変更点
1) ACCEPT画面 ACCEPT文が仕様拡張されて,画面節に指定した画面項目を,端末上での操作員によ
る入力に用いることができるようになった。
646
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
2) ACCEPT文 グレゴリオ暦の4けた年号にアクセスするための機能が,ACCEPT文に追加された。
3) アポストロフィを引用記号として使用 アポストロフィ文字(')を引用符(")とともに英数字定数,
ブール定数及び各国文字定数の両端を囲む区切りとして用いてもよい。定数にはアポストロフィと引
用符とのいずれを用いてもよいが,開始と終了とに用いる文字は同じでなければならない。いずれの
文字を用いるにしても,定数の内部でその文字1個を表現するにはその文字を2個重ねなければなら
ない。一つのソース要素中で両方の書き方を用いてもよい。
4) ARITHMETIC句 STANDARD指定は,特定の算術がきちんと規定された方法で実行され,移植性
のある結果が得られることを指定する。標準算術が有効な場合に作用対象の合成に制約はない。
5) 算術演算子
左括弧と単項演算子の間又は単項演算子と左括弧の間に,空白は要らない。
6) AT END指定なしのREAD文
該当するUSE文がない場合であっても,AT END指定を書かなくてよい。
7) 2進データ及び浮動小数点データ 算術データに2種類の新たな表現形式が導入された。値の10進範
囲に制約されないデータを計算機規定の方式で保持する2進表現形式と浮動小数点表現形式とである。
浮動小数点型には,計算機規定の表現をもつ数値形式と数値編集形式との両方が存在する。
8) ビット/ブール機能 ビット文字列の定義とブール値の設定/検査とを行う機能が追加された。字類
及び項類がブールであるデータを,ビット,英数字又は各国文字で表現するには,それぞれ用途にBIT,
DISPLAY又はNATIONALを指定すればよい。ブールデータ項目は,記号"1"を含んだPICTURE文字
列で指定する。ブール文字列は区切り記号のB",B',BX"又はBX' で識別する。ブール演算子B-XOR,
B-AND,B-OR及びB-NOTが,ブール式の中で使用のために提供されている。
9) ブール関数 ブール項目を処理するため,BOOLEAN-OF-INTEGER及びINTEGER-OF-BOOLEAN組
込み関数が用意された。これらの関数は,数字項目とブール項目の間の変換を行う。
10) CALL引数のレベル番号 CALLの引数は,任意のレベル番号をもつ基本項目又は集団項目であって
よい。以前は,基本項目であるか又はレベル番号が1若しくは77でなければならなかった。
11) CALL BY CONTENTパラメタの相違 内容渡しのパラメタは,呼び出される側のプログラムの対応
するパラメタと同じ記述をもつ必要はない。
12) CALLパラメタの定義にOCCURS DEPENDING ON 定義にOCCURS DEPENDING ONのある引数
又は仮パラメタには,最大長が用いられる。
13) CALLパラメタの長さの相違 引数と仮パラメタのいずれかが集団項目であるとき,CALL文の
USING指定の引数の大きさは,対応する仮パラメタの大きさより大きくてもよい。以前は,大きさが
同じである必要があった。
14) CALLを再帰的に 活性状態のCOBOLプログラムを呼び出す機能がCOBOLに追加された。
15) CALL文 新しい書き方のCALL文の引数に,算術式及び定数を用いてもよい。
16) 字類条件検査を符号系名で データ項目の内容を,符号系名で命名された符号化文字集合と比較して
検査できる。
17) 字類条件検査をNUMERICで 演算符号付き数字項目を含む集団項目を禁止する規則は除去された。
18) COBOLの語 COBOLの語の最大長が,30文字から31文字に増加した。
19) 文脈依存のCOBOL語 COBOL規格に追加された幾つかの特定の語は,それらが指定された文脈中
だけで予約されるものであり,予約語一覧には追加されなかった。
20) CODE句 報告書記述項のCODE句に,一意名の指定が用意された。
647
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
21) 各国文字データ用の符号化文字集合 国際符号化文字集合(UCS)を参照するための,既定義の符号
名 UCS-4,UTF-8,及びUTF-16が特殊名段落に追加された。さらに,各国文字符号化文字集合用の
符号名を,実装者が定義したり,プログラマが特殊名段落で定義したりできる。
22) CODE-SET句 特殊名段落中において定数によって定義された符号系を,CODE-SET句に指定してデ
ータの入出力変換に使用することができる。
23) CODE-SET句 CODE-SET句には,ISO/IEC 646などの単オクテット(英数字)符号化文字集合及び
JIS X 0221などの多オクテット(各国文字)符号化文字集合を規定した符号系を書いてもよい。
24) 各国文字データに対する文字照合順序 JIS X 0221に関連した文字照合順序を参照するために用いる
既定義の符号系UCS-4が,特殊名段落に追加された。そのほかにも,各国文字照合順序用の符号系名
を,実装者が定義したり又はプログラマが特殊名段落で定義したりできる。文字照合順序を用いる各々
の場面に対して,英数字照合順序と各国文字照合順序とのいずれか又は両方を指定する書き方が用意
されている。
25) COLUMN句 PLUS 整数を用いる相対表記が,LINE句との類推で用意された。COLUMN RIGHTと
COLUMN CENTERとが用意されており,印刷可能項目を右端又は中央にそろえることができる。
COLUMNの同義語としてCOL,COLS及びCOLUMNSを書いてもよい。
26) COLUMN句,LINE句,SOURCE句及びVALUE句 報告集団記述項での,これらの句に複数個の
作用対象を指定してもよい。
27) 翻訳群中の注記行 注記行は,見出し部見出しの前をも含めた,翻訳群中の任意の行に書いてよい。
28) 共通例外処理 利用者は,添字の範囲外,部分参照の範囲外,CALLパラメタの不一致などの,規格
の一般規則の違反に対する例外検査を選択してもよい。これは,TURN翻訳指示と USE文に対する
変更とによって可能になる。
29) 翻訳指示 翻訳指示は,翻訳時に特定の動作を行うよう,コンパイラに指示する。次の機能に対して
翻訳指示が用意されている。
− ソース印字出力を制御する。
− 以前の規格と現行の規格との間で非互換の可能性のある構文にフラグ立てを要求する。
− 改ページを指定する。
− 活性化する側の実行時要素へ例外状態を伝ぱ(播)させる。
− 以降のソース原文又は登録集原文の正書法が固定形式か自由形式かを指定する。
− 特定の例外状態に対する検査のオン/オフを切り換える。
− 条件によって特定の原文行を注記の扱いとする。
− データ部の定数記述項で用いてよい値を定義する。
− うるう秒が返されることを許可する。
− 実装者定義のオプションを指定する。
− 標準算術が有効な場合に固有算術にする可能性のある構文にフラグ立てを要求する。
30) 計算機名を翻訳用計算機/実行用計算機段落中で省略 計算機名を省略して,その他の句を指定して
もよい。
31) 連結式 連結式は,同じ字類の二つの定数に作用して,それらの値を連結する。
32) 条件翻訳 翻訳指示が幾つか用意されて,そこで参照される定数の値に従い特定のソース行を取込み
又は省略できる。
33) 条件指定 ACCEPT,ADD,CALL,COMPUTE,DELETE,DISPLAY,DIVIDE,MULTIPLY,READ,
648
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
RECEIVE,REWRITE,START,STRING,SUBTRACT,UNSTRING及びWRITEといった文中に条件
指定を書く場合,その順序は,NOT付き指定が後でも先でもよい。
34) 名前つき定数 利用者は,データ部中の定数記述項によって,名前つき定数を定義してもよい。
35) 制御データ名 制御データ名は,定義する制御が一つだけのとき,TYPE CH又はTYPE CFに書かな
くてもよい。
36) 変換で2けた年号から4けた年号へ 2けた年号から4けた年号への変換のための関数が三つある。
DATE-TO-YYYYMMDD,DAY-TO-YYYYDDD,YEAR-TO-YYYYはそれぞれYYnnnnからYYYYnnnn,
YYnnnからYYYYnnn,YYからYYYYへの変換を行う。
37) COPY文 原文名1又は登録集名1の位置に,英数字定数を指定してもよい。
38) COPY文 二つ以上のCOBOL登録集が参照される場合,既定解釈の登録集に登録集原文が存在して
いるならその原文名は修飾しなくてもよい。
39) COPY文 COPY文を入れ子にする機能が用意された。REPLACING指定のないCOPY文の処理の結
果取り込まれる登録集原文の中に,REPLACING指定のないCOPY文があってもよい。
40) COPY文 COPY文の処理の結果として取り込まれるライブラリ原文の印字出力を抑止するための
SUPPRESS PRINTING指定がCOPY文に追加された。
41) COPY文及びREPLACE文の部分語置換 COPY文のREPLACING指定及びREPLACE文の,
LEADING指定及びTRAILING指定によって,ソース原文中及び登録集原文中の部分語を置換しても
よい。これは接頭語及び接尾語を附加するために有用である。
42) 文化圏適応性及び多言語対応 言語及び文化によって異なる,現地特有の規約(文化的規約)を用い
るための機能が提供された。現地特性(locale)の内容は,文化的規約の仕様である。ここで実装・提
供される機能は,文字照合順序,日付及び時刻の表記形式,金額及び数値の表記形式,並びに大文字・
小文字の対応付けである。
43) 文化的規約の切換え 現地特性と呼ぶ,実行時に有効となる,文化的規約の組を切り換える機能が,
SET文に対して提供された。
44) 通貨記号の拡張 CURRENCY SIGN句が機能拡張され,各国文字が使えるようになった。また,任意
の長さをもつ複数種類の異なる通貨記号が使えるようになった。
45) DISPLAY画面 DISPLAY文が仕様拡張され,画面節に指定した画面項目を,端末操作員への出力に
用いることができるようになった。
46) DISPLAY文 DISPLAY文中に書く定数が数字である場合,それは符号付きであってもよい。
47) 動的な記憶域割付け ALLOCATE文及びFREE文が,動的に記憶域を確保するために提供された。こ
の記憶域はデータポインタでアドレス付けされる。
48) EVALUATE文,部分式 EVALUATE文中の選択対象として,今では部分式を用いてもよい。部分式
とは,それに対応する選択主体と組み合わせたとき,完全な形式の条件式になる記述である。
49) EXIT文 うちPERFORM文,段落又は節から直ちに抜け出す機能が追加された。
50) EXIT PROGRAM,最後の文以外としての指定を許容 EXIT PROGRAMは,一連の無条件文の並び
の中の,最後の文以外として現れてもよい。
51) EXTERNAL AS 定数 COBOLの語として正しくないか,又は大文字と小文字との区別が必要な外部
名のために,EXTERNAL句の中に定数を指定するという選択機能が追加された。
52) ファイル共用 ファイル共用は,同時に並存するファイル結合子が同一の物理ファイルへ呼び出すの
を,利用者が許可したり拒否したりしてもよいような,協同作業環境を提供する。
649
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
53) FILLER 報告節中にFILLERを書いてもよい。
54) 固定形式正書法からA領域及びB領域を除去 第三次規格の正書法のA領域及びB領域を統合して,
プログラム原文領域と呼ぶ一つの領域にした。A領域及びB領域の制約はなくなった。第三次規格の
正書法は完全に上位互換である。
55) 固定小数点数字項目 数字定数中に,又は数字若しくは数字編集のデータ項目を記述するPICTURE
文字列中に書いてよい最大のけた数が,18けたから31けたに増えた。
56) FLAG-85指示 第三次規格と現規格との間で非互換の可能性がある言語要素に対してコンパイラの
フラグ立てを引き起こす,FLAG-85指示が追加された。
57) FORMAT句 順編成のファイルに対してFORMAT句は,データの表現を人間が読める形式にする機
能を提供する。これを,外部媒体形式と呼ぶ。この形式には,操作環境がデータを印字又は表示する
のに必要な,例えば,多オクテットデータに対して必要になるような,特殊な符号化が含まれる。
58) 自由形式正書法 自由形式正書法によってソース行は可変長になり,1行上のソースコードの配置に
関して最小限の制約を設けただけで,ソース原文及び登録集原文を書いてもよい。翻訳指示によって
自由形式又は固定形式の正書法を選択又は混合してもよいが,既定解釈は固定形式である。
59) FUNCTIONキーワード リポジトリ段落に組込み関数名又はALLの指定があるとき,キーワード
FUNCTIONは関数参照から省略してもよい。
60) 関数の用途の拡張 数字型及び整数型の関数を使用できる箇所は算術式中に限られていたという制約
は解除され,同時に,符号なし整数が必要な箇所で整数型の関数が使用できなかったという制約も解
除された。数字型及び整数型の関数を今では,数字の送出し側を用いてよい箇所であればどこで用い
てもよいし,整数形式のABS関数を今では,符号なし整数が必要な箇所で用いてもよい。
61) 連絡節中のGLOBAL句 GLOBAL句を,連絡節中のレベル1データ記述項に指定してもよい。
62) GOBACK文 オペレーティングシステム又は呼出し元実行時要素にいつでも制御を戻す,GOBACK
文が追加された。
63) 16進定数 16進(基数16)の記法を用いて英数字定数,ブール定数及び各国文字定数を指定する機
能が追加された。
64) HIGHEST-ALGEBRAIC関数及びLOWEST-ALGEBRAIC関数 HIGHEST-ALGEBRAIC関数及び
LOWEST-ALGEBRAIC関数は,数字データ項目を操作する機能を提供する。この方式は英数字データ
項目でHIGH-VALUES及びLOW-VALUESが許している方法に類似しているが,それらの表意定数に
関連するデータの非互換という危険性はない。
65) 見出し部の見出し 見出し部の見出しは,書かなくてもよい。
66) 実装者定義の成功完了の入出力状態コード 実装者が入出力文の成功完了に伴う状態を表すために
使用する入出力状態コードの範囲が割り当てられた。
67) 暗黙の修飾を同一集団内のデータ名に あるデータ記述項の中で参照されるデータ名は,同一集団内
において記述項の左辺として定義されている場合,修飾する必要はない。ただし,その集団内で一意
にするため修飾語が必要な場合は,この限りでない。
68) 行内注記 ある行に書いたソース原文又は登録集原文の任意の文字列の後に続けて,その行に注記を
書いてもよい。行内注記の始まりは,隣接する2文字"*>"で表される。
69) 指標データ項目 指標データ項目を,BYTE-LENGTH関数,LENGTH関数,MAX関数,MIN関数,
ORD-MAX関数又はORD-MIN関数の引数として参照してもよい。
70) 指標データ項目 指標データ項目の定義に,SYNCHRONIZED句があってもよい。
650
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
71) 表の初期化 VALUE句を用いて,選択した表要素だけを特定の値で初期化してもよい。
71a) INITIALIZE文 構文が拡張されて,INITIALIZE文の単一REPLACING指定中に複数の項類を書ける
ようになった。
72) INITIALIZE文のFILLER指定 INITIALIZE文を用いて,FILLERデータ項目を初期化してもよい。
73) INITIALIZE文のVALUE指定 INITIALIZE文中にVALUE指定を書いて,基本データ項目を初期化
してもよい。その値は,関連データ記述項のVALUE句に書いた定数の値になる。その項類がデータ
ポインタ,オブジェクト参照又はプログラムポインタであればNULLになる。
74) INITIALIZE文の可変長の表 INITIALIZE文を用いて,可変長の表を初期化してもよい。
75) INSPECT CONVERTING文 INSPECT CONVERTING文中の TO 定数として,ALL表意定数を指定
してもよい。
76) INSPECT CONVERTING文 TOの左側の一意名のデータ項目又はTOの左側の定数の中に,同一の
文字が複数回現れてもよい。文字が重複している場合には,最初に現れたほうが使われて,繰返しが
あっても無視される。
77) 組込み関数機能 以前は,組込み関数が他と分離した機能単位であり実装は任意であった。現在は,
組込み関数が仕様書に統合されており,規格合致実装系には必ず実装されていなければならない。
78) 組込み関数 新しい組込み関数は,次のとおりである。
ABS
EXCEPTION-STATEMENT
NUMVAL-F
BOOLEAN-OF-INTEGER
EXCEPTION-STATUS
PI
BYTE-LENGTH
EXP
SIGN
CHAR-NATIONAL
EXP10
STANDARD-COMPARE
DATE-TO-YYYYMMDD
FRACTION-PART
TEST-DATE-YYYYMMDD
DAY-TO-YYYYDDD
HIGHEST-ALGEBRAIC
TEST-DAY-YYYYDDD
DISPLAY-OF
INTEGER-OF-BOOLEAN
TEST-NUMVAL
E
LOCALE-COMPARE
TEST-NUMVAL-C
EXCEPTION-FILE
LOCALE-DATE
TEST-NUMVAL-F
EXCEPTION-FILE-N
LOCALE-TIME
YEAR-TO-YYYY
EXCEPTION-LOCATION
LOWEST-ALGEBRAIC
EXCEPTION-LOCATION-N
NATIONAL-OF
79) INVALID KEY指定 該当するUSE文がない場合でも,INVALID KEY指定を書かなくてよい。
80) 局所記憶節 関数・メソッド・プログラムを活性化するたびに初期値に設定されるデータを定義する
機能が追加された。このようなソース要素の実体(instance)は,それぞれが局所記憶節のデータの自
分用の複製をもつ。
81) 各国文字操作 ソース原文及び登録集原文中で,並びに実行時のデータ中で,JIS X 0221などの巨大
な文字集合を使用する機能が追加された。字類の各国文字及び項類の各国文字と各国文字編集は,記
号"N"を含んだPICTURE文字列で指定され,各国文字定数は,分離符のN",N',NX"又はNX' で識
別される。用途NATIONALは,データの表現形式が各国文字集合であることを指定する。利用者定
義語には拡張文字が含まれてもよい。字類が各国文字であるデータの処理は,細かい相違が幾つかあ
るものの,字類が英数字のデータの処理にたとえられる。英数字字類と各国文字字類の間のデータ変
換は,組込み関数で提供される。
82) オブジェクト指向 オブジェクト指向プログラミングの機能が追加された。
83) OCCURS句 報告書作成機能に対して,縦方向又は横方向の繰返しとSTEP指定とが追加された。
651
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
84) OCCURS句,KEY指定 OCCURS句のあるデータ記述項と,そのOCCURS句のKEY指定に書かれ
たデータ項目の記述項の間にある,ある記述項は,KEY指定に書かれたデータ項目の属する階層系列
中にある集団項目ではない限りにおいて,それ自体がOCCURS句を含んでいてもよい。
85) 補助語OF SUMの後に書いてもよい。
86) 補助語FOR及びON TYPE CH又はTYPE CFの後に書いてもよい。
87) (CONTROL HEADING指定の)OR PAGE指定 これによって,制御切れの後だけでなく各ページ
の先頭でも,制御頭書きが印字されるようにできる。
88) ページ脚書き報告集団 このような集団のLINE句が全て相対指定であってもよい。
89) PAGE LIMIT句 各々の報告行の横の印字位置の最大番号を定義するため COLUMNS指定が新たに
提供され,また,LAST CONTROL HEADING指定が追加された。
90) 段落名 手続き部又は節の始まりに段落名を書かなくてもよい。
91) PERFORM文 うちPERFORMにAFTER指定を書いてもよい。
92) PERFORM文 活性状態の複数のPERFORM文が,共通の出口をもってもよい。
93) PERFORM VARYING文 BYの値はゼロであってもよく,FROMの値はPERFORM文の実行開始時
に表の要素に対応しなくてもよく,指標を増した結果が関連する表の範囲外の値になってもよい。
94) PICTURE句 PICTURE文字列に指定してもよい最大の文字数が30文字から50文字に増加した。
95) PICTURE句 PICTURE記号"A"で記述する文字位置の内容が英字でなくてもよい。が,VALIDATE
文の形式検査段階においては,この限りでない。
96) PICTURE句 データ記述項又は報告集団記述項にVALUE句が英数字定数・ブール定数・各国文字定
数付きで指定された場合,PICTURE句は指定しなくてもよい。
97) PICTURE句 PICTURE文字列中で通貨編集用記号はその末尾に指定してもよい。さらに,その直後
に記号"+","-","CR"又は"DB"を指定してもよい。
98) PICTURE句 PICTURE文字列中で記号"1"を用いてブールデータ項目を指定できる。
99) PICTURE句 PICTURE文字列中で記号"E"を用いて浮動小数点数字編集データ項目を指定できる。
100) PICTURE句 PICTURE文字列中で記号"N"を用いて各国文字又は各国文字編集のデータ項目を指定
できる。
101) PICTURE句 PICTURE文字列の最後の記号が,ピリオド又はコンマであるとき,後続する分離符の
終止符の前に一つ以上の空白があってもよい。第三次規格では,この文脈で空白が分離符の終止符に
先行できるか否かが明確でなかった。
102) PLUSとMINUS COLUMN句及びLINE句の中で記号"+"又は"-"は,それぞれPLUS又はMINUSと
同義である。
103) ポインタデータ ポインタ型という,データの新しい字類が導入された。これは,データ及びプログ
ラムのアドレスを,計算機依存又はシステム依存の方式で保持するものである。
104) PRESENT WHEN句 PRESENT WHEN句を用いると,印字行,印刷可能項目,又はこれらの組を,
条件の真理値に従って印字したりしなかったりすることができる。
105) プログラム名 AS 定数 COBOL語として正しくないか,又は大文字と小文字との区別が必要な外部
名のために,外部公開されるプログラム名として定数を指定する選択機能が追加された。
106) プログラム原型 プログラム原型中でプログラムのインタフェースと特性を定義する。これによって,
パラメタの値渡し,パラメタの省略,引数の型検査及び強制,並びにCOBOL用の既定解釈とは異な
る呼出し規約の使用を可能にする。
652
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
107) 修飾の制限 修飾語は50個まで,という以前あった制限は取り除かれた。
108) 修飾付き指標名 データ名及び条件名と同じように,指標名も修飾してもよい。修飾なしでの参照が
一意であっても修飾してもよい。
109) READ文のPREVIOUS指定 READ文が機能拡張され,ファイル位置指示子の指すレコードの直前
のレコードを読むことができる。
110) RECORD KEY及びALTERNATE RECORD KEY 索引ファイル用のキーは,幾つかの構成成分から
なっていてもよい。
111) レコード施錠 レコード施錠によって,共用ファイルに対するレコードの呼出しを制御してもよい。
レコード錠を用いて,レコードを別のファイル結合子が呼び出すのを防止する。
112) RELATIVE KEY句 RELATIVE KEY指定をファイル管理記述項中に書く場合,独立した句としても
よい。以前は,ACCESS MODE句の一部としなければならなかった。
112a) RELEASE文 レコード名1と一意名1が同じ記憶領域を参照することを禁止する規則は除去され
た。結果は定義されず,作用対象の重なりの規則に従う。
113) REPLACE文の構文緩和 REPLACE文は,翻訳単位中で,文字列又は定数の終了区切り記号以外の
分離符を書いてよい箇所にはどこに指定してもよい。以前はREPLACE文が最も外側のプログラムの
先頭の文でない場合,分離符の終止符が先行しなければならなかった。
114) REPLACE文の入れ子 直前のREPLACE文の効果を取り消すことなしに,REPLACE文を指定し,
終了させてもよい。
115) 報告書作成機能 以前の報告書作成機能は,分離独立した機能単位であり,実装するか否かは選択可
能だった。今では報告書作成機能は仕様に統合され,規格合致実装系では実装されなければならない。
さらに,次の変更が行われ,既存プログラムに影響を及ぼさない変更点一覧中の別な箇所に書かれて
いる。
− CODE IS 一意名の構文が追加される。
− COLUMN句に幾つかの追加がある。
− COLUMN句,LINE句,SOURCE句及びVALUE句には複数の作用対象を指定してもよい。
− 制御データ名は省略してもよい。
− FILLERを報告書節中に指定してもよい。
− 各国文字を報告書節中に指定してもよい。
− OCCURSで縦方向又は横方向の繰返し,及びSTEP指定を書いてもよい。
− 幾つかの句の補助語OF,FOR,ON。
− OR PAGE指定(CONTROL HEADING指定の)。
− ページ脚書きの LINE句は相対指定だけでもよい。
− PAGE LIMITに COLUMN指定を含める。
− PLUS又はMINUSは,それぞれ記号"+"又は"-"でもよい。
− PRESENT WHEN句が追加される。
− SIGN句は報告書節中でSEPARATE指定を要求しない。
− SOURCEに,算術式,関数,ROUNDED指定を許す。
− SUM句に多くの変更がされている。
− USE BEFORE REPORTINGが変更されている。
− VARYING句を,OCCURS句,複数指定LINE句又は複数指定COLUMN句とともに用いてよい。
653
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
− WITH RESET指定がNEXT PAGEに追加されている。
116) 報告書作成機能の各国文字機能 報告書中に各国文字と英数字とを混在して印刷する機能が提供され
た。
116a) RETURN文 レコード名1の記憶領域とファイル名1のレコード領域とが同じ記憶領域であること
を禁止する規則は除去された。結果は定義されず,作用対象の重なりの規則に従う。
117) SAME AS句 SAME AS句は,データ項目の記述が,他の項目と同一であることを示す。
118) 画面節 画面節は,端末上に現れる画面項目,その位置及び様々な属性を宣言するための,非手続き
型の手段を提供する。画面項目は,入力に用いられることも出力に用いられることもあり,データ部
内の他の節で記述されたデータ項目と関連付けてもよい。
119) SELECT句 SELECT句にデータ名を指定して,ファイルを動的に割り当ててもよい。
120) SELECT WHEN句 レコード記述のSELECT WHEN句によって,ファイル節中の幾つかのレコード
記述項から一つを入出力操作時に選択することができる。選択されたレコード記述項は,レコード中
の個々のデータ項目を処理するために,CODE-SET句又はFORMAT句と一緒に用いられる。
121) SET 指標名 指標に設定した結果は,関連する表の範囲外になってもよい。また,TO指定中の指標
に設定されている値は,関連する表の範囲内でなくてもよい。
122) SET 画面名 SET文が仕様拡張され,画面項目の属性を動的に指定してもよい。
123) (報告書記述項中の)SIGN句 SEPARATE指定は,もう報告書記述項中では必要なく,SIGN句を集
団レベルに指定してもよい。
124) (集団項目の)SIGN句 SIGN句は,どの集団項目に指定してもよい。以前は集団項目内に数字項目
がなければならなかった。
125) SORT文 表を整列するために SORT文を用いてもよい。この整列を実行する場合に用いるキーは,
表を定義するKEY指定中に書かれたフィールド,表の要素全体,又は指定されたキーデータ項目の
いずれであってもよい。
126) SORT文 SORT文のGIVINGファイル群を,同じSAME RECORD AREA句の中に指定してもよい。
127) (報告書記述項中の)SOURCE句 送出し側データ項目は,関数一意名であってもよい。
128) (報告書記述項中の)SOURCE句 作用対象として算術式を書いてもよい。ROUNDED指定が追加
された。
129) START文のFIRST指定,LAST指定及びLESS THAN指定 START文が機能拡張されて,キーより
前のレコードへの位置付け,及びファイルの先頭又は最終レコードへの位置付けができるようになっ
た。
130) START文を順ファイルに START文が機能拡張されて,FIRST指定又はLAST指定を書けば,順フ
ァイルに対してもSTART文の指定ができるようになった。
131) STOP WITH STATUS文 STOP文にWITH STATUS指定が追加されて,実行単位がオペレーティング
システムへ値を返すことができるようになった。
132) STRING文 STRING文中のDELIMITED指定は書いても書かなくてもよい。DELIMITED BY SIZE
が想定される。
133) 添字付けを算術式で “データ名 + 整数”及び“データ名 - 整数”の書き方だけでなく,算術式を
添字に用いてもよい。
134) (報告書記述項中の)SUM句 SUM句に対して,次の拡張が行われた。
654
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
− 繰返し記述項を合計するための拡張。
− 制御脚書きだけでなく,報告書集団のあらゆる型に指定できる。
− 算術式の形式のSUM。
− 合計処理中の合計カウンタのオーバフローに対する検査。
− 合計カウンタだけでなく,報告書節の数字項目は合計処理に指定してもよい。
− ROUNDED指定。
135) システム名 計算機名は,今では他の種類のシステム名と異ならなくてもよい。原文名及び登録集名
は,今では利用者定義語ではなくシステム名なので,利用者定義語及びその他の種類のシステム名と
異ならなくてもよい。
136) (VALUE句及びEVALUATE文中の)THROUGH指定 文字照合順序をTHROUGH指定中で識別し
て,値の範囲を決定するのに用いることができる。これによって,いろいろな実装系間で,移植可能
な範囲指定を用いることができる。また,現地特性によって範囲指定を決めることもできるが,異な
る現地特性を使用する場合に移植可能であるとは限らない。
137) TYPE句及びTYPEDEF句 TYPEDEF句は,利用者定義の型を作り出す型宣言を識別する。TYPE
句は,この利用者定義の型をデータ項目の記述に適用するために用いられる。型宣言に対して記憶域
は割り付けられない。
138) 下線文字(̲) COBOL文字レパートリ中の基本特殊文字を拡張し,下線文字(̲)を取り込んで,COBOL
の語の形成に使えるようにした。
139) UNSTRING文 送出し側項目を部分参照してもよい。
140) USE BEFORE REPORTING 報告書記述中のGLOBAL及びUSE宣言手続きの効果が,以前より明確
化された。
141) USE文の書き方 語PROCEDUREは,以前は必須語だったが,現在は補助語である。
142) 利用者定義関数 組込み関数と類似の方法で活性化される関数を書くための機能が追加された。この
呼出しの一部として語FUNCTIONは指定されない。
143) 検証機能 新たにVALIDATE文が追加され,包括的なデータ検証の機能が付与された。新たにデータ
部の句CLASS,DEFAULT,DESTINATION,INVALID,PRESENT WHEN,VALIDATE-STATUS及び
VARYINGも追加された。ここで,PRESENT WHEN句とVARYING句は,報告節中のそれと類似の機
能をもつ。これらの句が,レベル88 VALUE句のVALID/INVALID指定及びWHENの指定とともに,
VALIDATE以外の文の作用対象であるデータ記述中に現れた場合,これらは無視される。
144) VALUE句,データ部中のWHEN SET TO FALSE指定 WHEN SET TO FALSE指定によって,FALSE
条件の値の指定ができる。関連する条件名に対してSET TO FALSE文が実行されるとき,関連する条
件変数にはこの値が転記される。
145) VALUE句を外部データ項目中,連絡節中及びファイル節中では無視 データ項目形式及び表形式の
VALUE句を,連絡節中又はファイル節中のデータ記述に指定してもよく,EXTERNAL句付きで記述
された項目に対して指定してもよい。明示的又は暗黙のINITIALIZE文の実行中以外の場合,これら
のVALUE句は無視される。
146) VARYING句 検証機能及び報告書作成機能に対してOCCURS句と一緒に用いるVARYING句が提供
された。
147) WITH RESET指定 NEXT GROUP句のNEXT PAGE指定にこの指定が追加されて,ページカウンタ
を元の1に戻すことができるようになった。
655
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
148) ファイルへ定数を書出し WRITE文,RELEASE文又はREWRITE文を用いると,定数をレコードに
書き出すことができる。WRITE文のFILE指定を用いると,英数字定数,各国文字定数,ブール定数
及び表意定数SPACEを書き出すことができる。FILE指定を用いない場合は,任意の定数を書き出す
ことができる。
149) レコード名なしの書出し WRITE文又はREWRITE文のFILE指定によって,対応するレコード記述
項がファイル節中になくても,作業場所節からレコードを書き出すことができる。
F.3
既存のプログラムに影響を及ぼす可能性のある相違点(ISO 1989:1985,追補2:1994による相違点)
1) 予約語FUNCTION 第三次規格改正版では機能単位に依存する予約語だったFUNCTIONが,追補2
では予約語となった。
理由 語FUNCTIONは第三次規格改正版では機能単位に依存する予約語と規定されていた。追補2
では,機能単位に依存する予約語という分類を排除して語FUNCTIONを予約語と認識する。
この変更で一時的に問題が起きても,結局はこの変更がもたらす利便性で相殺されて余りあると考
えている。
2) 表意定数 長さゼロの集団項目に関連する表意定数の長さは1であると定義する。
理由 第三次規格では,長さゼロの集団項目に関連付けられた場合に表意定数の長さはゼロとなる。
この定義は長さゼロの項目と表意定数との間の比較で等しいか否かの判定に誤った結果をもたらす。
第三次規格で次のデータ記述があるとする。
DATA DIVISION.
01 K PIC 9 VALUE IS 0.
01 A.
02 B PIC X OCCURS 0 TO 3 TIMES DEPENDING ON K.
条件 A = ZERO は真となる。
条件 A = 0 は偽となる。
条件 A = ALL "1" は真となる。
条件 A = "1" は偽となる。
追補2では,長さゼロの集団項目に関連付けられた場合に表意定数の長さは1であると定義する。
この新たな定義によれば,上の例における長さゼロの集団項目の比較は全て結果が偽となる。これと
同じ結果を長さゼロの集団項目の字類検査に対しても与えることにする。これこそが多くの利用者の
期待にかなうと信じる。この明確化によって,利用者が問題を経験することがあっても,結局はこの
変更がプログラムの移植性を向上させると考えている。
3) RECORD句 RECORD CONTAINS 整数1 CHARACTERS句を用いて指定したファイルは常に固定形
式ファイルであり固定長レコードだけをもつ。
理由 第二次規格では,RECORD CONTAINS 整数1 CHARACTERS句を用いて指定したファイルに
関連付けた場合に全てのレコードが同じ長さでなければならないことは明らかであった。しかし,そ
の関連するファイルを固定形式ファイルと扱うのか否かは明らかでなかった。第三次規格ではこの状
況を,(1)整数1は各レコードに含まれる文字位置の個数を規定しなければならない,(2)ファイル
は固定長レコードを含まなければならない(すなわち,固定形式ファイル),と規定することで明確化
した。
この明確化は,同じ長さのレコードだけをもつ可変形式ファイルで処理している処理系に影響する
656
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
かもしれない。この書き方のRECORD句を用いたファイルは,第二次規格では可変形式と固定形式
のいずれであってもよかったものの,第三次規格では固定形式でなければならない。
幾つかの処理系は既にこの書き方のRECORD句を用いたファイルを固定形式ファイルとして処理
している。ゆえに,この変更が影響を及ぼす原始プログラムは,次に示す条件が重なった状況でこの
書き方のRECORD句を用いたものだけである。
(a) 処理系は,長さが全て同じであるレコードをもつ可変形式ファイルを処理していた。
(b) この書き方のRECORD句を用いて指定したファイルは可変形式ファイルで実装していた。
(c) この書き方のRECORD句を用いる第二次規格COBOLプログラムと,この書き方のRECORD
句を用いる第三次規格COBOLプログラムの両方が同じファイルを呼び出さなければならない
(又は,第三次規格COBOLプログラムが,第二次規格COBOLの外部実装者ファイル定義と
連絡をとらなければならない。)。
この明確化からもたらされる移植性の向上は,引き起こされる互換性の問題を正当化すると考えて
いる。
4) 浮動挿入編集 PICTURE文字列中の全ての数字けた位置を浮動挿入文字で表したときは,小数点の左
側に少なくとも一つの挿入文字がなければならない。
理由 第二次規格では,PICTURE文字列を指定するのに,全てを浮動挿入文字で表して,実小数点又
は想定小数点の左側に文字位置を置かなくてもよかった。しかしながら,そのデータ項目がゼロ値を
もつ場合又は有効数字を小数点の右側にもつ場合,出力には編集文字が用いられなかった。
次の書き方は第二次規格COBOLでは妥当であったが,プログラマが期待した結果を生成すること
は多分なかっただろう。
01 FIELD-A PIC V+(5).
01 FIELD-B PIC .$$.
PROCEDURE DIVISION.
MOVE ZERO TO FIELD-A
MOVE .123 TO FIELD-B
この構文は,正しいものの,期待される結果を生成することはなかった。したがって,この構文は
第三次規格では明確に禁止されている。この構文を用いるプログラムは変更しなければならない。
多くの処理系で既にこの変更を取り込み済み又は以前の構文を使えるよう機能拡張済みであるので,
第三次規格のこの変更によって影響を受ける規格合致のプログラムはほとんどないだろうと考えてい
る。
5) 指標名に関する規則 指標に適用される外部属性への言及は削除された。
理由 第三次規格は外部属性をもつ表に関連付けられた指標もまた外部属性をもつと規定している。
しかしながら,第三次規格は外部属性をもつ指標の対応付けが実行時にどのように確立されるのかを
明記していない。連絡節中で定義した表に対しては,第三次規格は呼ぶ側のプログラムと呼ばれる側
のプログラムの間で指標の対応がつかないと特に規定している。
追補2では,指標に適用される外部属性への言及は削除された。対応付けの規則を定義するよりも,
むしろ指標を外部属性としないほうが標準化の目的にかなうと信じる。この見方によって,外部デー
タレコードに関連する指標の取扱いは,呼ばれるプログラムへ渡されるパラメタに関連する指標の取
扱いと整合性があるものになる。多くの処理系は対応規則がなくて困難に感じているので,外部属性
をもつ指標の存在に依存する既存プログラムはほとんどないだろうと考えている。
657
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
6) 指標名に関する比較 指標名と文字データ項目又は文字定数との比較はしてはならない。
理由 第三次規格COBOLでは,指標名とデータ項目又は定数とに関する比較の規則には,指標名と
文字データ項目又は文字定数との比較を許していると解釈できる余地があった。
追補2では,比較の規則は指標名と文字データ項目又は文字定数との比較を許していない。指標名
と文字データ項目又は文字定数との比較を当てにするプログラムは,追補2のこの変更によって影響
を受けるだろう。
この種類の比較を実際に許している処理系はほとんどないので,影響を受ける既存プログラムはほ
とんどないだろうと考えている。
7) 字類条件 長さゼロの集団項目に適用されるあらゆる字類検査の結果は,
(a) 語NOTが字類条件の一部であるなら常に真とする。
(b) さもなければ常に偽とする。
理由 長さゼロの集団項目に適用される字類検査の結果は第三次規格に定義がない。長さゼロの集団
項目にはどの字類に属する文字も含まれないので,追補2は次のとおり定義する。すなわち,長さゼ
ロの集団項目に適用される場合に語NOTがないあらゆる字類検査の結果は,常に偽とする。
長さゼロの集団項目に適用される場合に語NOTがあるあらゆる字類検査の結果は,常に真とする。
例えば,第三次規格は次のコードを実行した場合に何が起きるかを定義していない。
01 GROUP-ITEM-1.
05 ODO-DEPEND PIC 9.
05 ODO-TABLE.
10 ELEM OCCURS 0 TO 9 TIMES DEPENDING ON ODO-DEPEND
PIC X.
PROCEDURE DIVISION.
MOVE ZERO TO ODO-DEPEND
IF ODO-TABL ALPAHBETIC
DISPLAY "MAYBE"
ELSE
DISPLAY "YES"
END-IF
IF ODO-TABL NOT ALPAHBETIC
DISPLAY "YES"
ELSE
DISPLAY "MAYBE"
END-IF
IF ODO-TABL NUMERIC AND ODO-TABL ALPAHBETIC
DISPLAY "MAYBE"
ELSE
DISPLAY "YES"
END-IF
EVALUATE ODO-TABL NOT NUMERIC
WHEN NOT ODO-TABL NUMERIC
DISPLAY "YES"
WHEN OTHER
DISPLAY "MAYBE"
658
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
END-EVALUATE
第三次規格での規格合致処理系はおそらく0個,1個,2個,3個又は4個の語MAYBEを表示した
であろう。修正後の第三次規格では,規格合致処理系は4個とも語YESを表示しなければならない。
この変更によって影響を受けるプログラムはほとんどないだろうと考えている。このような字類検
査にその他の結果を期待しているプログラムは変更しなければならない。
8) ON SIZE ERROR指定なしのけたあふれ条件 けたあふれ条件が起こってON SIZE ERROR指定がな
いと,プログラムは実行継続して,けたあふれの起こった結果の一意名の値は規定されない。
理由 第二次規格では,けたあふれ条件が起こってON SIZE ERROR指定がない場合に,制御の移行
に対する規則が明確ではなかった。この状況に対する規則は第三次規格で明記されて,制御の移行に
対する標準の規則を用いて実行が継続することが保証された。例えば,
01 DIGIT1 PIC 9 VALUE 9.
01 DIGIT2 PIC 99 VALUE 9.
01 VALUE-ZERO PIC 9 VALUE 0.
PROCEDURE DIVISION.
STATEMENT-1.
ADD +1 TO DIGIT1 DIGIT2.
STATEMENT-2.
DIVIDE VALUE-ZERO INTO DIGIT1 DIGIT2.
第二次規格で,多くの処理系は,段落STATEMENT-1の文を実行した後もプログラムが実行を継続
することを許認していた。しかしながら,幾つかの処理系は,段落STATEMENT-2の文を実行する間
に実行を終了させていた。第三次規格COBOLでは,規則が明記されて,これらの両方の文の後でも
プログラムが実行を継続することが保証された。さらに,今では次のことが明確に規定されている。
すなわち,STATEMENT-1を実行した後のDIGIT2の値は10であり,その一方STATEMENT-1の実行
後のDIGIT1の値並びにSTATEMENT-2の実行後のDIGIT1及びDIGIT2は規定されない。
この明確化によって,利用者が問題を経験することがあっても,結局はこの変更がプログラムの移
植性を向上させると考えている。
9) 算術文における複数個の結果 複数個の受取り側フィールドをもつ算術文の評価においては常に一時
的なデータ項目が用いられる。
理由 第三次規格で,複数個の受取り側フィールドをもつ算術文の評価には常に一時的なデータ項目
が用いられる。ゆえに,
MULTIPLY NUM-1 BY NUM-1 NUM-2
という文の結果は次の文の組と等価である。
MOVE NUM-1 TO temp
MULTIPLY temp BY NUM-1
MULTIPLY temp BY NUM-2
ゆえに,NUM-1の初期値が2でNUM-2の初期値が3であるならNUM-2の結果は6になるという
のが第三次規格の仕様である。
第二次規格では,中間結果を得るため算術を必要としない場合に一時的なデータ項目が用いられる
か否かを定義していなかった。ゆえに,第二次規格の処理系は
MULTIPLY NUM-1 BY NUM-1 NUM-2
659
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
という文の結果を次の文の組と等価であると解釈する余地があった。
MULTIPLY NUM-1 BY NUM-1
MULTIPLY NUM-1 BY NUM-2
ゆえに,NUM-1の初期値が2でNUM-2の初期値が3であるならNUM-2の結果は12になるという
のが この例における第二次規格の処理系の仕様である。
第三次規格でなされたこの変更は,未定義だった状況を,明白に定義された結果をもつ類似の文と
整合性するような形に定義したものである。影響を受けるプログラムは,複数個の受取り側作用対象
をもつ算術文中において同じ項目を送出し側と受取り側の両方の作用対象として指定しており,かつ,
複数個の結果を第2の例示のように取り扱う処理系上で走るプログラムだけである。多くの処理系が
既にこの仕様を採用しているので,この変更によって影響を受けるプログラムはないだろうと考えて
いる。
10) CLOSE文 REEL/UNIT指定のあるCLOSE文を実行した後のファイル位置指示子の状態が定義され
た。
理由 第三次規格は,REEL/UNIT指定のあるCLOSE文を実行した後のファイル位置指示子の状態を
定義していなかった。
追補2では,REEL/UNIT指定のあるCLOSE文を実行した後のファイル位置指示子の状態を定義し
ている。入力ファイル又は入出力両用ファイルに対する次のリール又はユニットが存在するとき,フ
ァイル位置指示子は,新たな現在ボリューム上に在る先頭レコードの番号より1小さい値になる。入
力ファイル又は入出力両用ファイルに対する次のリール又はユニットが存在しないとき,ファイル位
置指示子は,次のリール又はユニットが存在しないことを示す。以前は未定義だった状況に対するこ
の定義は,多くの利用者の期待にかなうだろうと考えている。
11) COPY文 原文語に用いた場合に英小文字は対応する英大文字と等価であるとみなす。
理由 第三次規格は,原文語に用いた場合に英小文字は対応する英大文字と等価であるとみなすとは
明確に規定していなかった。
追補2では,原文語の中の英小文字をCOBOLの語との整合性がとれるように取り扱うことを明記
している。多くの処理系が既にこの仕様を採用しているので,この変更によって影響を受けるプログ
ラムはないだろうと考えている。
12) COPY REPLACING文 文字の右括弧と左括弧は,分離符でない場合でも第三次規格では常に原文語
とする。したがって,これらはCOPY REPLACING文では個別の原文語として処理される。
理由 次に示す登録集原文が原文名COPY-1をもつという例を考える。
01 TABL.
05 TABL-ENTRIES OCCURS 3 TIMES.
10 ELEM PIC X(01).
PROCEDURE DIVISION.
MAINLINE.
MOVE ALL "N" TO TABL.
MOVE ALL "Y" TO ELEM (01).
さらに,原始プログラムには次に示す部分があるとする。
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY COPY-1 REPLACING ==(01)== BY ==(02)==.
660
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
IF TABL = "NYN"
DISPLAY "SECOND STANDARD COBOL"
ELSE IF TABL = "NNYYNN"
DISPLAY "THIRD STANDARD COBOL".
STOP RUN.
第二次規格では(1)文字の右括弧と左括弧を原文語に含めるのはこれらが分離符である場合だけで
あり,(2)PICTURE句の中の句読文字は分離符でないと明示してあるから,第二次規格合致処理系が
“(01)”の置換えを行うのはこの例の複写される手続き部の原文中だけであって,複写されるデータ部
の原文中ではこの置換えを行わないだろう。
しかしながら,第三次規格合致処理系は括弧がどこに現れてもこれらを原文語として処理しなけれ
ばならない。したがって,複写される原文中の三つの原文語“(”,“01”,“)”を仮原文“(02)”で置換する
処理は,データ部の中でも手続き部の中でも行われるだろう。
第三次規格のこの変更で,括弧の扱い方の定義はこれらをどこで用いても唯一の方法となった。こ
の変更で影響を受ける既存の規格合致プログラムはほとんどないだろうと考えている。
13) EXIT PROGRAM文 GLOBAL指定を書いた宣言手続きの範囲内を実行している間にEXIT
PROGRAM文を実行してはならない。ただし,その宣言手続きの範囲内を実行している間に呼ばれた
プログラムの内部は除外する。
理由 第三次規格では,EXIT PROGRAMを含むGLOBALではない宣言手続き中の段落をGLOBAL
な宣言手続きからPERFORM文で実行しているとき,終了するプログラム又はプログラム群はどれで
あるのかが不明瞭である。追補2はこの状況を明確化して,GLOBALな宣言手続きの範囲内を実行し
ている間にEXIT PROGRAM文を実行してはならない,ただしその宣言手続きの範囲内を実行してい
る間に呼ばれたプログラムの内部は除外する,と規定した。
宣言手続き中にEXIT PROGRAMを含み,かつ,GLOBALでない宣言手続き中の段落又は節を
GLOBALな宣言手続きからPERFORM文で実行するプログラムは,この明確化によって影響を受ける
可能性がある。しかしながら,多くの処理系はこの状況下で予期せぬ結果をもたらした。この変更は
プログラムの移植性を向上させるものであり,影響を受けるプログラムはほとんどないだろう少数だ
ろうと考えている。
14) IF文 IF文の中のIF文は,左から右に向かってIF,ELSE,END-IFの組合せを作っているものとみ
なす。ELSEが現れると,それに対応するのは,その左側にあってほかのELSEとはまだ組になって
いないか又は暗黙にも明示的にも終了していないIFのうちで,最も右側にあるIFとする。END-IFが
現れると,それに対応するのは,その左側にあって暗黙にも明示的にも終了していないIFのうちで,
最も右側にあるIFとする。
理由 第三次規格はEND-IFと暗黙に終了したIFとの対応を明確には禁止していない。一つのELSE
又はEND-IFには,その左側にあってほかのELSE又はEND-IFとはまだ組になっていないIFのうち
最も右側にあるIFが対応する。しかし,左側にあるIFのうち最も右側にあるIFは,その外側のIF
文のELSE指定によって既に暗黙に終了していることがある。例えば,
IF 条件1
IF 条件2
661
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
IF 条件3 文1
ELSE 文2
ELSE 文3
END-IF
この例では2番目のELSEが3番目のIF文を暗黙に終了させている。END-IFにとって左側にある
IFのうちで最も右側にあるIFとは3番目のIFであるが,プログラマ及び実装者がEND-IFに対応す
ると期待するものは,終了している3番目のIFではなく,終了していない2番目のIFのほうであろ
う。
追補2では,ELSE又はEND-IFに対応するのは,その左側にあって暗黙にも明示的にも終了してい
ないIFだけである,と規定した。さらに,追補2はELSEとEND-IFの両方が同じIFに対応し得るこ
とを明記している。
第三次規格を厳密に実装した処理系では,ほかの規則と矛盾を生じてIF文の入れ子が直感的なもの
と異なってしまっただろう。ゆえに,この明確化によって影響を受ける既存プログラムはないだろう
と考えている。
15) INSPECT文 長さの決定では,全ての書き方においてINSPECT文の一意名1は,あたかも送出し側
データ項目であるかのように扱われる。
理由 ある集団項目の従属項目の記述中にOCCURS句のDEPENDING ON指定があって,かつ,その
DEPENDING ON指定に書いた項目もまたその集団項目に含まれている場合,第三次規格の規定では,
送出し側項目である場合と受取り側項目である場合とで,集団項目の長さを評価する方法が異なる。
送出し側項目である場合,その長さはDEPENDING ON指定に書いた項目の値に基づいて評価され,
受取り側項目である場合,その長さは集団の最大の長さとなる。
第三次規格は,INSPECT文の一意名1を送出し側項目と受取り側項目のいずれとみなすのかを規定
していない。ゆえに,上記の場合は集団項目の長さに関する規定がない。
追補2では,長さの決定では,全ての書き方においてINSPECT文の一意名1は,あたかも送出し
側データ項目であるかのように扱われる。これによって,長さの評価は,OCCURS句のDEPENDING
ON指定に書いた項目の値に従うことになる。次の例において,INSPECT文中で参照された時の
GROUP-ITEMの長さは10となる。
01 GROUP-ITEM.
02 TABLE-SIZE PIC S9(5) VALUE IS 5.
02 TABLE-ITEM PIC X OCCURS 1 TO 20 TIMES
DEPENDING ON TABLE-SIZE.
PROCEDURE DIVISION.
INSPECT GROUP-ITEM ...
これ以外の解釈を当てにするプログラムは,追補2のこの変更によって影響を受けるだろう。多く
の処理系が既にこの解釈を実装しているので,この変更によって影響を受ける既存の規格合致プログ
ラムはほとんどないだろうと考えている。
16) MERGE文 MERGE文に書いた併合用ファイル又はGIVINGファイルの記述にRECORD IS
VARYING句がある場合,そのファイル中の各レコードは,USINGファイル又は併合用ファイルから
読み込まれた時点の長さがそのまま保たれる。
理由 第三次規格では併合用ファイル又はGIVINGファイルの記述にRECORD IS VARYING句がある
場合,そのファイル中のレコードの長さについては定義がない。DEPENDING ON指定に書いた項目
662
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
の機能についても定義はない。追補2は,この状況下でファイル中のレコードの長さを決めるために
はDEPENDING ON指定に書いた項目の値を用いない,と明記している。また,文の実行が終わった
時点のこの項目の値は規定しない,とも明記している。追補2の定義では,ファイルの記述にRECORD
IS VARYING句がある併合用ファイル又はGIVINGファイル中の各レコードの長さを,USINGファイ
ル又は併合用ファイルから読み込まれたレコードの長さと,それぞれ同じとしてある。ゆえに,固定
長レコードのファイルに書き出さない限り,レコード長は併合操作全体を通して元のまま保たれる。
この新たな定義は,可変長レコードのファイルを併合するプログラムの移植性を向上させるので,
多くの利用者の期待にかなうものだと考えている。
17) OPEN文 OPEN文の実行中に検査確認されるファイル固有属性が何であるかは実装者が定義する。
ファイル固有属性の検査確認はファイルの編成及び/又は記憶媒体によって変わってもよい。
理由 第三次規格では,ファイルを開く時点でのファイル固有属性不整合の検出は必須であった。し
かしながら,入出力システム中には全種類のファイル固有属性不整合を検出できないものもある。ま
た,第二次規格に合致するCOBOL処理装置によって生成されたファイルの属性不整合を検出するこ
とが常に可能なわけではない。したがって,処理系の間でプログラムを移植する場合は,ファイル固
有属性不整合が起きる可能性のある状況下では動作が異なることがある。
追補2では,OPEN文の実行中に検査確認されるファイル固有属性が何であるかは実装者が定義す
る。OPEN文の実行中に検査確認されるファイル固有属性は,実装者が定義すると明確にすることで
影響を受ける既存プログラムはほとんどないだろうと考えている。
18) REPLACE文 原文語に用いた場合に英小文字は対応する英大文字と等価であるとみなす。
理由 第三次規格は,原文語に用いた場合に英小文字は対応する英大文字と等価であるとみなすとは
明確に規定していなかった。
追補2では,原文語の中の英小文字をCOBOLの語との整合性がとれるように取り扱うことを明記
している。多くの処理系が既にこの仕様を採用しているので,この変更によって影響を受けるプログ
ラムはないだろうと考えている。
19) SORT文 SORT文に指定した整列用ファイル又はGIVINGファイルの記述にRECORD IS VARYING
句がある場合,そのファイル中の各レコードは,USINGファイル又は整列用ファイルから読み込まれ
た時点の長さがそのまま保たれる。
理由 第三次規格では整列用ファイル又はGIVINGファイルの記述にRECORD IS VARYING句がある
場合,そのファイル中のレコードの長さについては定義がない。DEPENDING ON指定に書いた項目
の機能についても定義はない。追補2は,この状況下でファイル中のレコードの長さを決めるために
はDEPENDING ON指定に書いた項目の値を用いない,と明記している。また,文の実行が終わった
時点のこの項目の値は規定しない,とも明記している。追補2の定義では,ファイルの記述にRECORD
IS VARYING句がある整列用ファイル又はGIVINGファイル中の各レコードの長さを,USINGファイ
ル又は整列用ファイルから読み込まれたレコードの長さと,それぞれ同じとしてある。ゆえに,固定
長レコードのファイルに書き出さない限り,レコード長は整列操作全体を通して元のまま保たれる。
追補2は可変長レコードのファイルを整列するプログラムの移植性を向上させるので,この新たな
定義は多くの利用者の期待にかなうものだと考えている。
20) WRITE文 NOT END-OF-PAGE指定に書いた無条件文2が実行されるのは,WRITE文の実行がペー
ジ終了条件を起こさずに成功した後だけとする。
理由 第三次規格1)では,WRITE文の実行が不成功の場合もNOT END-OF-PAGE指定に書いた無条件
663
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
文2が実行されると規定していた。この仕様は,ほかの入出力文におけるNOT AT END指定及びNOT
INVALID KEY指定のような相似な指定に対する仕様と整合しない。さらに,この規則は,重大でな
い誤りに対するUSE文の規則,すなわち,誤りを発生させた入出力文に続く次に実行可能な文へと制
御が移るという規則に矛盾していた。また,重大な誤りに対して取る動作を実装者が決定するという
USE文の規則にも矛盾していた。
追補2は,WRITE文のNOT END-OF-PAGE指定に対する仕様を,ほかの入出力文における相似な
指定に対する規則と整合するように規定することによって,この矛盾を取り除いた。
不成功のWRITE文に対する無条件文2の実行に依存する既存プログラムは変更が必要になるだろ
う。しかし,USE文の規則と矛盾し,WRITE文がほかの入出力文と整合しないため,そのようなプ
ログラムはほとんどないと考えている。
注1) ISOの第三次規格での該当箇所は次のとおりであり,対応するJISとは文面が異なっていた。
7.4.7.4 WRITE文の一般規則
(9) NOT END-OF-PAGE指定のあるWRITE文の実行中にページ終了条件が起きないと
き,制御は次のとおり適切な時点で無条件文2に移る。
(a) WRITE文の実行が成功したときは,レコードが書き出された後,かつ,レコー
ド名1に関連するファイル名の入出力状態を更新した後。
(b) WRITE文の実行が不成功のときは,レコード名1に関連するファイル名の入出
力状態を更新した後,かつ,レコード名1に関連するファイル名に該当する
USE AFTER STANDARD EXCEPTION PROCEDURE文の指定があるとき,その
手続きを実行した後。
21) WRITE文 NOT INVALID KEY指定に書いた無条件文2が実行されるのは,WRITE文の実行が無効
キー条件を起こさずに成功した後だけとする。
理由 ISOの第三次規格2)では,WRITE文の実行が無効キー条件以外の理由で不成功の場合もNOT
INVALID KEY指定に書いた無条件文2が実行されると規定していた。この仕様は,ほかの入出力文
中でのNOT INVALID KEY指定に対する仕様と整合しない。さらに,この規則は,重大でない誤りに
対するUSE文の規則,すなわち,誤りを発生させた入出力文に続く次に実行可能な文へと制御が移る
という規則に矛盾していた。また,重大な誤りに対して取る動作を実装者が決定するというするUSE
文の規則にも矛盾していた。
追補2は,WRITE文のNOT INVALID KEY指定に対する仕様を,ほかの入出力文における同じ指
定に対する規則と整合するように規定することによって,この矛盾を取り除いた。
不成功のWRITE文に対する無条件文2の実行に依存する既存プログラムは変更が必要になるだろ
う。しかし,USE文の規則と矛盾し,WRITE文がほかの入出力文と整合しないため,そのようなプ
ログラムはほとんどないと考えている。
注2) ISOの第三次規格での該当箇所は次のとおりであり,対応するJISとは文面が異なっていた。
8.4.9.4又は9.4.9.4 WRITE文の一般規則
(9) NOT INVALID KEY指定のあるWRITE文の実行中に無効キー条件が起きないとき,
制御は次のとおり適切な時点で無条件文2に移る。
(a) WRITE文の実行が成功したときは,レコードが書き出された後,かつ,レコー
ド名1に関連するファイル名の入出力状態を更新した後。
(b) WRITE文の実行が無効キー条件以外の理由で不成功のときは,レコード名1
に関連するファイル名の入出力状態を更新した後,かつ,レコード名1に関連
664
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
するファイル名に該当するUSE AFTER STANDARD EXCEPTION
PROCEDURE文の指定があるとき,その手続きを実行した後。
22) 入出力状態=37 永続誤りが起きた。OPEN文を,あるファイルに対して実行しようとしたが,その
ファイルではOPEN文に指定されたモードを使えない。
理由 この新しい入出力状態値が返されるのは,ファイルでOPEN文に指定されたモードを使えない
場合である。例えばカード読取り機に割り当てたファイルを出力モードで開く場合などが該当する。
第二次規格はこの場合に何が起きるか規定していなかった。新たな入出力状態値37によって利用者は
このような条件を検査できるようになった。
23) 組込み関数 関数を引用した時に引数の値が規定の制限に従っていないとき,又は語ALLの添字を評
価した結果1個も引数を指定しないことになったとき,そのような引用の結果は規定しない。
理由 第三次規格改正版は,上記の状況では関数の返却値を規定しないとしていた。これは,関数の
引数が規定の制限に違反した場合でも処理系は常に返却値を返して処理を継続しなければならない,
と解釈することが可能だった。追補2ではこの点を明確化して,修正後の第三次規格の処理系がこの
状況下で処理を終了させることを許可した。これこそが多くの利用者の期待にかなうであろうと信じ
る。処理の継続を当てにしているプログラムは,関数の引数が正しいことを保証するように変更しな
ければならないかもしれない。
この明確化からもたらされるデータの信頼性の向上は,利用者が問題を経験することがあっても,
引き起こされる互換性の問題を正当化すると考えている。
F.4
既存プログラムに影響しない相違点(ISO 1989:1985,追補2:1994による相違点)
次に示す項目は,追補2に含まれる相違点のうち,既存のプログラムに影響を与えない,新しい特徴を
挙げたものである。
1) INSPECT文 書き方1のINSPECT文では,一意名1は送出し側データ項目とする。
2) INSPECT文 REPLACING CHARACTERS指定付きINSPECT文のBEFORE/AFTER指定に書く項目
は,長さが1文字より大であってもよい。
3) MAX関数 二つ以上の引数を指定するとき,英字と英数字の引数が混在してもよい。
4) MIN関数 二つ以上の引数を指定するとき,英字と英数字の引数が混在してもよい。
5) ORD-MAX関数 二つ以上の引数を指定するとき,英字と英数字の引数が混在してもよい。
6) ORD-MIN関数 二つ以上の引数を指定するとき,英字と英数字の引数が混在してもよい。
665
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書G
(参考)
旧式言語要素及び廃要素
この附属書は,本体及び附属書(規定)に関連する事柄を補足するものであって,規定の一部ではない。
G.1
旧式言語要素
旧式言語要素を規定する目的は,信頼性に欠け,プログラム書法がつたなく,定義が適切でない機能を
新規プログラム中で用いないように誘導することである。規格COBOLでは,よりよいプログラミング技
法を利用できる。これらの要素は,規格COBOLの次期改正版からの削除を認めるには,既存プログラム
での使われ方が広範すぎるようなので,廃要素ではなく旧式言語要素と分類したものである。
旧式言語要素はCOBOL規格の次期改正版でも削除しない予定である。旧式言語要素を削除する計画は
ないが,使用するプログラム資産が少なくなれば,将来のCOBOL規格の設計者は,旧式言語要素を廃要
素に指定することを考慮するかもしれない。
旧式言語要素は,次のとおりとする。
1) COBOLの語の継続 固定形式正書法においてCOBOLの語を継続するには,一つの語を複数行にわ
たって書くが,それではプログラムが読みづらく保守しづらい。この機能は現在ほとんど使われてお
らず,自由形式正書法には存在しない。
2) 英数字表意定数の数字項目への転記 MOVE文では,SPACE以外の表意定数を整数数字項目に転記で
きる。また,どの表意定数でも整数でない数字項目に転記できる。英数字表意定数を数字データ項目
へ転記した結果が,規定された(例外を引き起こす以外の)結果又は利用者が期待した結果を生起す
ることは,たとえあってもまれであるため,このような転記操作は用いないほうがよい。
新設の組込み関数HIGHEST-ALGEBRAIC及びLOWEST-ALGEBRAICを用いると,数字データ項目
の内容を,その項目が取り得る最大の値又は最小の値に簡単に正しく設定でき,長大なけた数の数字
定数を書くという誤りやすいことをしなくてもよい。これらの関数を用いると,プログラムの修正で
データ項目の長さを変更することもまた,より簡単になり,より間違えにくくなる。
HIGH-VALUE又はLOW-VALUEがたまたま数字の場合,及びALL定数の定数が全て数字の場合を
除けば,数字項目へ英数字表意定数(ALL定数,HIGH-VALUE,LOW-VALUE及びQUOTE)を転記
すると,EC-DATA-INCOMPATIBLE例外状態が成立し,転記の結果は規定されなくなる。プログラム
文字照合順序のせいでHIGH-VALUE又はLOW-VALUEがたまたま数字であっても(両方とも数字の
ことはまずない。),文字照合順序が変われば,数字作用対象には不正なデータが転記される可能性が
ある。さらに,プログラマの多くがHIGH-VALUEを実は99…99だと考え,この思い込みが,
HIGH-VALUEの不正使用と様々な不正結果とを引き起こす。ALL "9"を非整数へ転記するのは,多く
の利用者誤りの元である。例えば,項目がPIC 99V99である場合は,得られる結果は99.00であって
99.99ではない。
受取り側数字項目に転記するものを,表意定数から,必要とされる正しい値をもった表意定数以外
の英数字定数へと変更すれば,規定された結果に到達できる。
3) IF文及びSEARCH文のNEXT SENTENCE指定 この指定は混乱を招きやすい。特に,範囲明示文
中にある場合がこれに当てはまる。制御の移行先は,この後のどこかにある分離符の終止符ではなく
666
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
て明示範囲符の直後の位置であるというのが,利用者間の共通意見である。さらに,これは誤りの元
となりやすい。特に,実際に範囲を終了させる分離符の終止符よりも前に,保守プログラマが不用意
に終止符を挿入してしまう場合がこれに当てはまる。同じ機能を果たすにはCONTINUE文及び範囲明
示文が使用でき,その構成は明確で,誤りが起こりにくい。
4) CALL文のON OVERFLOW指定 通常発生する例外原因条件はけたあふれ条件と関連がないため,
この指定は誤解を招きやすい。唯一起こり得る例外として,呼出し対象プログラムの呼出しに使用可
能な記憶域が不十分なことによる記憶域あふれがあるが,これは非常にまれであって,多くの実装系
ではまず起こり得ない。代わりにON EXCEPTION指定が同一の役割を果たす。その指定はより意味
がとりやすい。
5) COPY文の一意名n(原文n) COPY文のREPLACING指定での一意名の使用は,誤解を招きやすい。
実際の処理では,一意名を囲む仮原文区切り記号が挿入され,一意名でない単なる語の列として処理
される。例えば "a IN b" が "a OF b" と一致することはない。もう一つの例としては,仮に一意
名が関数名のいずれか(例えばSIN)と同じに定義されたとき,"REPLACING SIN BY ==xyz==" と
いう指定は,"FUNCTION sin (nnn)"のような関数呼出しまでも"FUNCTION xyz (nnn)"に変更し
てしまう。一意名には新たな書き方が数多く追加されたが,これらを全てCOPY文中で解析するのは
非常に困難であろうから,COPY文に書ける一意名の書き方は以前の規格COBOLが許していた書き
方だけとされた。
G.2
廃要素
廃要素とは,もう必要でなくなったか又はほとんど使用されていないため,国際規格の次期改正版から
は削除することが予定されている言語要素である。削除による影響を制限するため,このような言語要素
は廃要素と指名され,これらを削除する意図を通告する役を果たす。
国際規格の次期改正版から削除が予定されている言語要素は,先行する版の規格においてまずは廃要素
と指名される。
廃要素は,この規格中で今まで追加又は変更の対象になっておらず,これからも保守の対象にならない。
廃要素とそれ以外の言語要素との間の相互作用は,この規格に特に指定がない限り,規定されない。
規格合致実装系は廃要素のうち,選択可能な要素又は処理系依存の言語要素を除く要素を実装・提供し
なければならない。
COBOL規格の廃要素は,次のとおりである。
1) 通信機能 現行の通信機能は,多重の待ち行列モデルに従っている。新しい通信環境では,今までと
異なる機能及びアプローチが必要となる。このため,通信機能は使用を制限する。
2) デバッグ行及びDEBUGGING MODE句 デバッグ行及びDEBUGGING MODE句は,利用者にとっ
て難しく,用いられることはまれである。問題の一つは,デバッグ行の有効化及び無効化を行うには,
翻訳用計算機段落の変更というソースプログラム修正が必要な点である。もう一つの問題は,COPY
及びREPLACEとの相互作用の定義が不十分であり,予期せぬ動作をすることがある点である。条件
翻訳は,より使いやすく,デバッグ行の機能を備えており,定義が明確であり,より強固なので,デ
バッグ行又はDEBUGGING MODE句を活用する必要は,もはやなくなっている。
3) PADDING CHARACTER句 PADDING CHARACTER句は今まできちんと規定されてはいないうえ
に,その動作はむしろ外付けの仕様にふさわしい。これを注記扱いにしない実装系は分かる限りでは
存在しなかった。
667
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書H
(参考)
規格中の既知の誤り
この附属書は,本体及び附属書(規定)に関連する事柄を補足するものであって,規定の一部ではない。
H.1 理論的根拠
誤りのある規格の確立を意図したわけではないとはいえ,COBOLの機能の幾つかには誤りが含まれて
いることが,既に分かっている。そのような誤りを全て解決しようと試みが行われてはきた。しかし,次
の一つ以上に該当する誤りが存在する。
− 誤りの解決案が容認できない非互換性を引き起こす。
− 誤りの解決案が過度に複雑になる。
− 誤りのあるCOBOL機能が,旧式言語要素であるか又は廃要素である。
H.2 誤りの一覧
この規格中の既知の誤りは次のとおりである。
1) COPY及びREPLACEとデバッグ行との相互作用 COPY文及びREPLACE文による連結又は埋め込
みを使用するとき,規格は,デバッグ行をどのように扱うか不明確である。この誤りは,デバッグ行
が廃要素であるため,解決を見送った。
2) デバッグ行の翻訳用計算機段落との相互作用 デバッグ行は,翻訳用計算機段落の後ならソース単位
中のどこに書いてもよい。翻訳用計算機段落が存在しなくても,ソース単位中にデバッグ行を書くこ
とができた。この誤りは,デバッグ行が廃要素であるため,解決を見送った。
3) RECORD句及び入出力状態04−READ文の一般規則13) の明確化 READ文の一般規則13)は現在,
次のとおりである。
“読み込んだレコードのバイト数が,ファイル名1のレコード記述項で指定された最小の大きさよ
り小さい場合,読み込んだ最後の有効な文字の右にあるレコード領域の部分は規定しない。読み込ん
だレコードのバイト数が,ファイル名1のレコード記述項で指定された最大の大きさよりも大きい場
合,レコードは右側が切り捨てられて最大の大きさになる。いずれの場合も,READ文は成功し,入
出力状態はレコード長の不整合を示すように設定される。”
READ文の一般規則13) の結果として生成する状態コードが何か,規格は不明確である。
入出力状態04を返す場合と状況について規格は曖昧である。
この誤りは,受け入れ難い非互換を引き起こしかねないので,解決を見送った。
4) PADDING CHARACTER句の多バイト英数字文字集合との相互作用 埋め草文字は英数字でなけれ
ばならない。英数字の大きさが2バイト以上である場合に,あるブロックの未使用部分のバイト数が,
英数字の大きさで割り切れないことが起こり得る。その場合PADDING CHARACTER句の一般規則1)
が要求するとおり,そのブロックを“全て埋め草文字で満たす”ことはできない。明確な解決法は存
在せず,それは以前のCOBOL規格も同様であった。この誤りは,PADDING CHARACTER句それ自
体が廃要素であるため,解決を見送った。
668
X 3002:2011 (ISO/IEC 1989:2002)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書I
(参考)
参考文献
次の文献は,引用規格に加えて,この規格の実装者及びユーザに役に立つ参考文献である。
ISO/IEC TR 14652:2004,Information technology−Specification method for cultural conventions
(廃止規格)