COBOL2002　言語　拡張仕様編

文法書

4010-1J-805

前書き

対象製品

P-1M36-1141 COBOL2002 Net Server Suite 04-70（適用OS：AIX V7.1，AIX V7.2，AIX 7.3）

P-1M36-1241 COBOL2002 Net Server Suite(64) 04-70（適用OS：AIX V7.1，AIX V7.2，AIX 7.3）

P-2636-2354 COBOL2002 Net Developer 05-00（適用OS：Windows 10(x64)，Windows 11，Windows Server 2019，Windows Server 2022）

P-2436-6354 COBOL2002 Net Server Suite 05-00（適用OS：Windows Server 2019，Windows Server 2022）

P-2636-4354 COBOL2002 Net Client Suite 05-00（適用OS：Windows 10(x64)，Windows 11）

P-2936-2354 COBOL2002 Net Developer(64) 05-00（適用OS：Windows 10(x64)，Windows 11，Windows Server 2019，Windows Server 2022）

P-2936-6354 COBOL2002 Net Server Suite(64) 05-00（適用OS：Windows Server 2019，Windows Server 2022）

P-9W36-1241 COBOL2002 Net Server Suite(64) 04-70（適用OS：Linux Server 7 (64-bit x86_64)，Linux Server 8 (64-bit x86_64)，Linux Server 9 (64-bit x86_64)）

P-2636-7354 COBOL2002 Developer Professional 05-00（適用OS：Windows 10(x64)，Windows 11，Windows Server 2019，Windows Server 2022）

P-2936-7354 COBOL2002 Developer Professional(64) 05-00（適用OS：Windows 10(x64)，Windows 11，Windows Server 2019，Windows Server 2022）

これらのプログラムプロダクトのほかにもこのマニュアルをご利用になれる場合があります。詳細は「リリースノート」でご確認ください。

COBOL2002は，COBOL2002規格（ISO/IEC 1989:2002）の主な機能に対応しています。COBOL85互換機能（コンパイラオプション）指定時，COBOL2002は，COBOL85規格（ISO85，ANSI85，JIS88，JIS92）の上位水準に準拠します。

輸出時の注意

本製品を輸出される場合には、外国為替及び外国貿易法の規制並びに米国輸出管理規則など外国の輸出関連法規をご確認の上、必要な手続きをお取りください。

なお、不明な場合は、弊社担当営業にお問い合わせください。

商標類

記載の会社名，製品名などは，それぞれの会社の商標もしくは登録商標です。

本書には，X/Openの許諾に基づきX/Open CAE Specification COBOL Language（XO/CAE/91/200 ISBN 1-872630-09-X）Copyright （C） December 1991, X/Open Company Limitedの内容が含まれています。

事前に著作権所有者の許諾を得ずに，本書の該当部分を複製，複写および転記することは禁じられています。

発行

2025年2月　4010-1J-805

著作権

All Rights Reserved. Copyright (C) 2025, Hitachi, Ltd.

はじめに

このマニュアルは，次に示すプログラムプロダクトの機能およびCOBOL言語の文法について説明したものです。

P-1M36-1141 COBOL2002 Net Server Suite

P-1M36-1241 COBOL2002 Net Server Suite(64)

P-2636-2354 COBOL2002 Net Developer

P-2436-6354 COBOL2002 Net Server Suite

P-2636-4354 COBOL2002 Net Client Suite

P-2936-2354 COBOL2002 Net Developer(64)

P-2936-6354 COBOL2002 Net Server Suite(64)

P-9W36-1241 COBOL2002 Net Server Suite(64)

P-2636-7354 COBOL2002 Developer Professional

P-2936-7354 COBOL2002 Developer Professional(64)

対象読者

このマニュアルは，COBOL2002の機能を知りたい方，またはCOBOL2002の日立拡張仕様の文法規則を知りたい方を対象としています。また，COBOLの基本的な言語仕様と，UNIXまたはWindowsの操作方法について理解していることを前提としています。

X/Open仕様情報の記述個所

次の部分でX/Openの仕様情報を記述しています。

「12.　画面節（SCREEN SECTION）による画面機能」

サポート機能一覧

規格

機能

製品種別

AIX COBOL2002

Linux COBOL2002

Windows COBOL2002

基本機能

○

○

○

順ファイル

○

○

○

相対ファイル

○

○

○

索引ファイル

○

○

○

整列併合

○

○

○

プログラム間連絡

○

○

○

組み込み関数

○

○

○

オブジェクト指向

○

○

○

共通例外処理

○

○

○

再帰呼び出し

○

○

○

利用者定義関数

○

○

○

局所場所節(LOCAL-STORAGE SECTION)

○

○

○

原始文操作

○

○

○

自由形式正書法

○

○

○

TYPEDEF句とSAME AS句

○

○

○

翻訳指令

○

○

○

区分化※

○

○

○

（凡例）

○：サポートしている

注※

覚え書きとしてサポートしている。

X/Open

機能

製品種別

AIX COBOL2002

Linux COBOL2002

Windows(x86) COBOL2002

Windows(x64) COBOL2002

テキストファイル

○

○

○

○

ファイル共用（ファイルシェア）

順ファイル

○

○

○

○

相対ファイル

○

○

○

○

索引（ISAM）ファイル

○

○

○

○

テキストファイル

○

○

×

×

Btrieveによる索引ファイル

−

−

○

×

コマンド行および環境変数へのアクセス

○

○

○

○

画面節（SCREEN SECTION）による画面操作

○

×

○

○

C言語インタフェース

○

○

○

○

インターナショナリゼーション※

○

○

−

−

（凡例）

○：サポートしている

×：サポートしていない

−：該当しない

注※

詳細については，マニュアル「COBOL2002　使用の手引　手引編」の-Internationalオプションの説明を参照のこと。

拡張機能

機能

製品種別

AIX(32) COBOL2002

AIX(64) COBOL2002

Linux(x86) COBOL2002

Linux(x64) COBOL2002

Windows(x86) COBOL2002

Windows(x64) COBOL2002

日本語

○

○

○

○

○

○

ブール（ビット処理）

○

○

○

○

○

○

アドレス操作

○

○

○

○

○

○

1バイト2進およびCOMP-X項目

○

○

○

○

○

○

浮動小数点データ

○

○

○

○

○

○

索引（ISAM）ファイル機能の拡張（合成キー，逆順読み）

○

○

○

○

○

○

CSVファイル

○

○

○

○

○

○

HiRDBによる索引ファイル

○

○

×

×

○

○

Btrieveによる索引ファイル

−

−

−

−

○

×

リモートファイルアクセス

×

×

×

×

○

×

ラージファイル入出力

順ファイル

○

○

○

○

○

○

相対ファイル

×

×

×

×

×

×

索引（ISAM）ファイル

×

×

×

×

○

×

テキストファイル

○

○

○

○

○

○

CSVファイル

○

○

○

○

○

○

HiRDBによる索引ファイル

×

×

×

×

×

×

Btrieveによる索引ファイル

−

−

−

−

×

×

COBOL入出力サービスルーチン

○

○

○

○

○

○

バイトストリーム入出力サービスルーチン

○

○

○

○

○

○

ファイル入出力拡張機能

ファイルサイズがレコード長の整数倍でない固定長形式の順ファイル入出力

○

○

○

○

×

×

ファイルバッファサイズ指定機能

○

○

○

○

×

×

画面節（WINDOW SECTION）による画面操作

画面節（WINDOW SECTION）

○

○

×

×

○

○

JCPOPUPサービスルーチン

○

○

×

×

○

○

通信節による画面操作（XMAP3）

○

×

×

×

○

○

COPY文の接頭辞／接尾辞

○

○

○

○

○

○

プリンタへのアクセス

XMAP3による印刷

○

×

×

×

○

×

GDIモード印刷

−

−

−

−

○

○

ESC/Pモード印刷

−

−

−

−

○

○

ファイルのディスク書き込み保証

（書き込み時）

順ファイル

○

○

○

○

○

○

相対ファイル

○

○

○

○

○

○

索引（ISAM）ファイル

○

○

○

○

○

○

テキストファイル

×

×

×

×

×

×

CSVファイル

×

×

×

×

×

×

HiRDBによる索引ファイル

×

×

×

×

×

×

Btrieveによる索引ファイル

−

−

−

−

×

×

ファイルのディスク書き込み保証

（クローズ時）

順ファイル

○

○

○

○

○

○

相対ファイル

○

○

○

○

○

○

索引（ISAM）ファイル

○

○

○

○

×

×

テキストファイル

○

○

○

○

×

×

CSVファイル

○

○

○

○

○

○

HiRDBによる索引ファイル

×

×

×

×

×

×

Btrieveによる索引ファイル

−

−

−

−

×

×

報告書作成機能

○

○

○

○

○

○

MIOS7 COBOL85との互換機能

×

×

×

×

○

△

イベントログファイル／syslogファイル出力機能

×

×

×

×

○

○

データコミュニケーション機能

○

○

○

○

○

○

データベース操作機能（ODBCインタフェース）

−

−

○

○

○

○

XDMによるデータベースシミュレーション機能

構造型データベース（XDM/SD）

○

○

○

○

○

○

リレーショナルデータベース（XDM/RD）

○

○

○

○

○

○

OLE2オートメーション機能

クライアント機能

−

−

−

−

○

○

CGIプログラム作成支援機能

○

×

×

×

×

×

マルチスレッド環境

作成と実行

○

○

○

○

○

○

デバッグ

△

△

△

△

○

○

MSMQアクセス機能

−

−

−

−

○

○

エンディアン切り替え

×

×

○

○

○

○

Unicode機能

○

○

○

○

○

○

数字項目のけた拡張機能

×

○

×

○

×

○

動的長基本項目機能

○

○

○

○

○

○

定数長拡張機能

英数字定数長の拡張

○

○

○

○

○

○

Javaプログラム呼び出し機能

×

×

×

×

○

○

（凡例）

○：サポートしている

×：サポートしていない

△：サポートしている機能であるが，使える機能に一部制限がある

−：該当しない

デバッグ機能

機能

製品種別

AIX COBOL2002

Linux COBOL2002

Windows COBOL2002

実行時デバッグ機能

○

○

○

テストデバッグ機能

GUIモード

×

×

○

バッチモード

○

○

○

ラインモード

○

○

×

カバレージ機能

GUIモード

×

×

○

バッチモード

○

○

○

（凡例）

○：サポートしている

×：サポートしていない

連携機能

機能

製品種別

AIX(32) COBOL2002

AIX(64) COBOL2002

Linux(x86) COBOL2002

Linux(x64) COBOL2002

Windows COBOL2002

XML連携機能

○

○

○

○

○

Cosminexus連携機能

×

○

×

○

○

（凡例）

○：サポートしている

×：サポートしていない

使用を推奨しない機能について

次の機能は，旧製品との互換を維持するために提供しています。前提となるソフトウェアは販売を終了しています。COBOL2002の新しい機能への移行を推奨します。

Btrieve（Pervasive.SQL）による索引編成ファイル

MIOS7 COBOL85との互換機能

文法の記号

このマニュアルの構文の説明で使用する記号については，マニュアル「COBOL2002　言語　標準仕様編」を参照してください。

プログラム例について

このマニュアルのプログラム例は，断り書きがない場合はWindows(x86) COBOL2002用です。プログラム例をWindows(x86) COBOL2002以外で使用するには，プログラムの記述に変更が必要な場合がありますのでご注意ください。

COBOL規格仕様について

COBOLは，事務処理用に最も使用されているプログラミング言語です。当初はビジネス向けプログラミング言語として開発されましたが，第1次規格（ANSI68，ISO72，JIS72），第2次規格（ANSI74，ISO78，JIS80），第3次規格（ISO85，ANSI85，JIS88，JIS92），第4次規格（ISO/IEC 1989:2002，JIS X3002:2011）と規格の改訂を重ね，現在ではビジネス向けだけでなく，汎用プログラミングにも広がっています。

なお，COBOLに関する公式の規格は，ISO（国際規格），ANSI（アメリカ規格），およびJIS（日本工業規格）で決められています。

1　日本語機能

この章では，日本語機能について説明する。

1.1　日本語機能とは

日本語機能は，利用者が日本語を用いてプログラミングしたり，日本語データを処理したりするためにサポートした機能である。すなわち，この機能を用いると，データ名やファイル名，手続き名などを日本語で記述し，日本語データを定義，操作できる。

日本語で記述したプログラム例を次に示す。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. SAMPLE00.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
       SELECT 得意先マスタ ASSIGN TO SYS010
              ORGANIZATION IS SEQUENTIAL.
       DATA DIVISION.
       FILE SECTION.
       FD 得意先マスタ RECORDING MODE IS F.
       01 得意先レコード.
         02 得意先コード PIC X(5).
         02 得意先名     PIC N(20).
          :
       WORKING-STORAGE SECTION.
       77 得意先数   PIC 9(4) COMP VALUE 0.
       01 得意先一覧.
         02 得意先名 PIC N(20) OCCURS 100.
          :
       PROCEDURE DIVISION.
       開始処理.
           OPEN INPUT 得意先マスタ.
       入力処理.
           READ 得意先マスタ
                AT END GO TO 終了処理.
           PERFORM 得意先レコード処理.
           GO TO 入力処理.
       得意先レコード処理.
           ADD 1 TO 得意先数.
           MOVE 得意先名 OF 得意先レコード
                TO 得意先名 OF 得意先一覧(得意先数).
          :
       終了処理.
           CLOSE 得意先マスタ.
           STOP RUN.

この章では，日本語を取り扱う上で追加される言語仕様を述べる。

1.2　全般規則（日本語機能）

日本語文字は，シフトJIS標準漢字コードの2バイトコードで表される。日本語文字1文字は，原始文上で，または記憶領域上で，標準データ形式の2文字分の位置を占める。

-UniObjGenオプションを指定した場合，日本語文字は，UTF-16の2バイトコードで表される。日本語文字1文字は，記憶領域上で，標準データ形式の2文字分の位置を占める。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

このシステムでは，日本語文字を用いて比較する場合，比較は日本語文字集合のコード値の照合順序に従う。

1.2.1　日本語文字集合（日本語機能）

標準仕様編の文字集合で記述した文字に加え，日本語文字および日本語空白を用いることができる。

このシステムでは，シフトJIS標準漢字コードで決められた漢字を日本語文字として扱う。

-UniObjGenオプションを指定した場合，UCS-4の範囲（UCS-2の範囲を含む）を日本語文字として扱う。日本語空白は，IDEOGRAPHIC SPACE（X'3000'）とする。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

注意

バイトオーダがリトルエンディアンの場合，日本語空白はX'0030'を表す。Unicode機能のバイトオーダの指定方法については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.1　文字集合」

1.2.2　文字列（日本語機能）

文字列に日本語文字を使用できる。

(1)　利用者定義語

日本語文字を用いて，利用者が定義できる語には，次のものがある。

アドレス名（address-name）

符号系名（alphabet-name）

通信記述名（cd-name）

クラス名（class-name）

字類名（class-name）

翻訳変数名（compilation-variable-name）

構成要素ビュー名（component-view-name）

合成キー名（composite-key-name）

条件名（condition-name）

定数名（constant-name）

データ名（data-name）

ファイル名（file-name）

指標名（index-name）

インデクス名（index-name）

インタフェース名（interface-name）

メソッド名（method-name）

呼び名（mnemonic-name）

OLEメソッド（OLE method）※

OLEオブジェクト（OLE object）※

OLEプロパティ（OLE property）※

段落名（paragraph-name）

パス名（path-name）

プログラム名（program-name）

プロパティ名（property-name）

レコード名（record-name）

レコードビュー名（record-view-name）

報告書名（report-name）

手順名（routine-name）

画面名（screen-name）

節名（section-name）

親子集合ビュー名（set-view-name）

記号文字（symbolic-character）

型名（type-name）

利用者定義関数名（user-function-name）

注※

UNIX COBOL2002では，使用できない。

日本語文字集合の英文字，数字，特殊文字は英数字文字集合の対応する英文字，数字，特殊文字と等価とみなされる。

-UniObjGenオプションを指定した場合，プログラム名およびメソッド名にUTF-8で多バイトとなる文字が含まれてはならない。また，-UniObjGenオプションの指定が前提であるLinux COBOL2002では，プログラム名，クラス名，インタフェース名，利用者定義関数名，メソッド名，およびプロパティ名にUTF-8で多バイトとなる文字が含まれてはならない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

(2)　定数

(a)　日本語文字定数

日本語文字定数は次に示す形式で表された1文字以上160文字以下の文字列である。

日本語文字定数の長さは，実行用プログラム中のその表現に適用される。

形式

構文規則

文字1は日本語文字集合の任意の文字とする。

文字1が引用符を表すならば，引用符の1文字を表すのに連続する2字の日本語文字集合の引用符を用いなければならない。

一般規則

実行用プログラム中の日本語文字定数の値は，文字1によって表される値とする。

日本語文字定数の項類は，日本語となる。

日本語文字定数を囲む分離符の引用符は，日本語文字定数の一部ではない。

(b)　16進日本語文字定数

16進日本語文字定数は，次に示す形式で表された長さが1文字以上160文字以下で4の倍数の文字列である。

形式

構文規則

文字1は16進数字の'0'〜'9'，'A'〜'F'の16種類である。

長さは160文字までで，4の倍数でなければならない。

NXをVALUE句に指定する場合，文字1はPICTURE句で指定したサイズを超えてはならない。

一般規則

実行用プログラム中の16進日本語文字定数の値は，文字1によって表される値とする。

すべての16進日本語文字定数の項類は，日本語となる。

16進日本語文字定数を囲む分離符の引用符は，16進日本語文字定数の一部ではない。

-UniObjGenオプションを指定した場合，UTF-16のコード値はバイトオーダがリトルエンディアンであってもUTF-16BEで指定する。なお，UTF-16BEで指定した16進日本語文字定数のコード値は，-UniEndianオプションの指定に従い，UTF-16LE，またはUTF-16BEに変換される。-UniObjGenオプション，-UniEndianオプション，およびUnicode機能のバイトオーダの指定方法については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

(c)　表意定数

次に示す表意定数を用いることができる。

表1‒1　日本語機能の表意定数

予約語

値

[ALL] ZERO

[ALL] ZEROS

[ALL] ZEROES

数値ゼロ（0），または日本語文字集合の何文字かの文字ゼロ（0）を表す。

-UniObjGenオプションを指定した場合，UTF-16のFULLWIDTH DIGIT ZERO（X'FF10'）を表す。

[ALL] SPACE

[ALL] SPACES

日本語文字集合の何文字かの空白を表す。

-UniObjGenオプションを指定した場合，UTF-16のIDEOGRAPHIC SPACE（X'3000'）を表す。

[ALL] HIGH-VALUE

[ALL] HIGH-VALUES

特殊名段落の中で使用される場合を除いて，その計算機の文字の照合順序で最高の位置を占める日本語文字集合の文字の何文字かを表す。

[ALL] LOW-VALUE

[ALL] LOW-VALUES

特殊名段落の中で使用される場合を除いて，その計算機の文字の照合順序で最低の位置を占める日本語文字集合の文字の何文字かを表す。

注意

バイトオーダがリトルエンディアンの場合，ZERO(ZEROS，ZEROES)はX'10FF'を，SPACE (SPACES)はIDEOGRAPHIC SPACE（X'0030'）を表す。Unicode機能のバイトオーダの指定方法については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

組み込み関数の引数として指定された表意定数の扱いについては，マニュアル「COBOL2002　言語　標準仕様編」　「11.2　引数」を参照のこと。

1.2.3　分離符（日本語機能）

標準仕様編の分離符で記述した文字に加え，直後に句読文字の引用符が続く文字「N」，「NC」，「ND」および「NX」も分離符とする。これらの分離符の直前は，空白，または左括弧でなければならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.2.2　分離符」

1.2.4　データ項目の字類と項類（日本語機能）

日本語文字データの字類は日本語と定義する。また，それを扱う日本語集団項目の項類は日本語，基本項目の項類は日本語，および日本語編集と定義する。

項類が日本語，または日本語編集である基本項目を含む集団項目で日本語集団項目以外の字類は英数字とする。

日本語を含めた字類と項類との関係を次に示す。

表1‒2　データ項目の項類と字類

項目のレベル

字類

項類

基本項目

英字

英字

数字

数字

英数字

数字編集

英数字編集

英数字

日本語

日本語

日本語編集

集団項目

固定長集団項目

日本語集団項目

日本語

日本語

英数字集団項目

英数字

英数字

可変長集団項目

英数字集団項目

1.2.5　標準けた寄せ規則（日本語機能）

日本語文字は左端を基準にして，1文字単位にけた寄せをする。そして必要に応じて右端に空白を補ったり右端を切り捨てたりする。

集団項目のけた寄せは，先頭項目のけた寄せと必ず一致する。

例

     01 A-RECORD.
        05 A-NDATA1     PIC N(2).
        05 FILLER       PIC X(1).
        05 A-GROUP GROUP-USAGE NATIONAL.
          10 A-NDATA2   PIC N(1).
          10 FILLER     PIC N(1).

図1‒1　記憶域内の配置

1.3　コーディング規則（日本語機能）

1.3.1　行と文字位置（日本語機能）

固定形式正書法の場合，原始プログラムは，英数字1文字を1個分の文字位置，日本語文字を2個分の文字位置として80個の文字位置で構成される行中に記述される。

原始プログラムの1行は次のように表現される。

図1‒2　COBOL原始プログラムの領域

上図に示す8文字目から72文字目までが，原始プログラムを記述する領域である。

1.3.2　行の継続（日本語機能）

日本語文字定数は，複数行にわたって定義できる。

1.3.3　注記行（日本語機能）

注記行には，日本語文字を用いて注釈を記述できる。

1.4　見出し部（日本語機能）

見出し部の注記項に日本語文字を使用してもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「7.　見出し部（IDENTIFICATION DIVISION）」

1.5　環境部（日本語機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.　環境部（ENVIRONMENT DIVISION）」

1.5.1　特殊名段落（日本語機能）

日本語機能内での特殊名段落の記述についての一般規則を次に示す。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.2.6　特殊名段落（SPECIAL-NAMES）」

(1)　符号系名句

NATIVE（計算機固有文字集合）を書くと，符号系名はJIS8単位コード符号系を表す。このシステムに固有な日本語文字集合のシフトJIS標準漢字コード符号系を表すものではない。

STANDARD-1（英数字文字集合）を書くと，符号系名はJIS X 0201-1976符号系を表す。標準日本語文字集合であるJIS X 0208-1983符号系を表すものではない。

(2)　CURRENCY SIGN句

この句で指定する通貨編集用文字には，「N」は使用できない。

1.5.2　入出力管理段落のAPPLY FORMS-OVERLAY句（日本語機能）

形式

機能

詳細は「14.1.1　入出力管理記述項（書式印刷機能）」を参照のこと。

1.6　データ部（日本語機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.　データ部（DATA DIVISION）」

1.6.1　CHARACTER TYPE句（日本語機能）

形式

機能

GDIモード印刷機能，またはXMAP3を使用したプリンタ出力機能では，印刷制御付きの行データを出力できる。CHARACTER TYPE句はESC/Pモード印刷には有効とならない。このため，レコード中に機能コードを設定して印刷制御をする必要がある。

XMAP3を使用したプリンタ出力機能を使用する場合，-XMAP,LinePrintオプションを指定すること。-XMAP,LinePrintオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のコンパイラオプションを参照のこと。

構文規則

CHARACTER TYPE句の指定がある項目を含むレコード記述項中に，GROUP-USAGE句を指定してはならない。

1.6.2　GROUP-USAGE句（日本語機能）

形式

機能

GROUP-USAGE句にNATIONALを指定したものは，記述項の左辺で定義される集団項目の扱いが特に指定のない限り，用途がNATIONALで項類が日本語の基本項目になることを指定する。

構文規則

GROUP-USAGE句は，記述項の左辺が集団項目でなければならない。

NATIONAL指定がある場合，記述項の左辺にはUSAGE NATIONALが仮定される※。ただし，記述項の左辺にUSAGE句を指定してはならない。記述項の左辺に従属している基本項目はすべて日本語項目または日本語編集項目のどちらかでなくてはならない。従属している集団項目はすべて明示的にまたは暗黙的にGROUP-USAGE NATIONALと記述されている必要がある。

注※

-JPN,Alnumオプションまたは-JPN,V3JPNオプションが有効な場合，記述項の左辺にUSAGE NATIONALは仮定しない。

GROUP-USAGE句が指定された集団項目およびその従属項目に，TYPE句およびSAME AS句を指定してはならない。

表1‒3　GROUP-USAGE句とTYPE句またはSAME AS句との組み合わせ

TARGETの条件

TARGETにTYPE句を指定

TARGETにTYPEDEF句を指定

TARGETにSAME AS句を指定

SAME ASで参照するデータ名1としてTARGETを指定

GROUP-USAGE句の指定がある集団項目

（例）

01 TARGET 〜
  GROUP-USAGE NATIONAL.
  03 DATA1 〜.

組み合わせて使用できない。

GROUP-USAGE 句の指定がある集団項目の従属項目

（例）

01 GRP-N
  GROUP-USAGE NATIONAL.
  03 TARGET 〜.

組み合わせて使用できない。

01レベル以外にTYPEDEF句を指定できない。

組み合わせて使用できない。

TARGETが集団項目の場合，組み合わせて使用できない。

TARGETが基本項目の場合，組み合わせて使用できる。

GROUP-USAGE 句の指定がある集団項目を従属項目に持つ集団項目

（例）

01 TARGET.
  03
  GROUP-USAGE NATIONAL.
    05 DATA1 〜.

TYPE句を指定した項目の下位にデータ項目は定義できない。

組み合わせて使用できない。

SAME AS句を指定した項目の下位にデータ項目は定義できない。

組み合わせて使用できない。

可変長集団項目またはその従属項目にGROUP-USAGE句を指定してはならない。

CHARACTER TYPE句の指定がある項目を含むレコード記述項中に，GROUP-USAGE句を指定してはならない。

画面節（SCREEN SECTIONおよびWINDOW SECTION），報告書節，およびサブスキーマ節の記述項に，GROUP-USAGE句を指定してはならない。

画面節（SCREEN SECTION）による画面機能のACCEPT文またはDISPLAY文の一意名に，GROUP-USAGE句を含む集団項目を指定してはならない。

CSVファイルのレコード記述項にGROUP-USAGE句を含んでいてはならない。

CSVファイル入出力機能のACCEPT文またはDISPLAY文の一意名に，GROUP-USAGE句を含む集団項目を指定してはならない。

CSVファイル入出力機能のWRITE文のFROMに指定した一意名に，GROUP-USAGE句を含む集団項目を指定してはならない。

CSVファイル入出力機能のREAD文のINTOに指定した一意名に，GROUP-USAGE句を含む集団項目を指定してはならない。

一般規則

NATIONAL指定を書いた場合

（a）記述項の左辺は日本語集団となり，その字類と項類は日本語となる。

（b）特に指定がない限り日本語集団は，一個の基本データ項目であるかのように扱われる。その用途はNATIONALで字類と項類は日本語であり，記述はPICTURE N(m)となる。ここで，mはその集団の長さである。

（c）-JPN,Alnumオプションが有効な場合，記述項の左辺は英数字集団となる。-JPN,Alnumオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」を参照のこと。

（d）-JPN,V3JPNオプションが有効な場合，記述項の左辺は英数字集団となる。ただし，STRING文，UNSTRING文，INSPECT文，LENGTH関数で参照するときは，日本語項目であるかのように扱われる。また，部分参照の字類と項類は英数字とするが，最左端の文字位置と長さは日本語文字数を表す。-JPN,V3JPNオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」を参照のこと。

注

GROUP-USAGE NATIONALの指定が必要とされる理由は，日本語だけを含む集団に対して，切り捨てや日本語の空白詰めが適正に行えるようにする，およびINSPECT等の操作が間違いなく行えるようにするためである。GROUP-USAGE NATIONALの指定がないとすると，そのような集団項目の内容は，項類が英数字の扱いが半角文字列となってしまうので，データの砕裂や不正操作を招くおそれが高い。

強く型付けされていない集団項目に対して，GROUP-USAGE句の指定も仮定もなければ，その集団項目は英数字集団項目となる。

1.6.3　JUSTIFIED句（日本語機能）

形式

機能

けた寄せ基準位置を右端に変更することを指定する。

構文規則

JUSTIFIED句は基本項目レベルにだけ指定してもよい。

JUSTはJUSTIFIEDの略記である。

JUSTIFIED句は日本語項目および日本語編集項目に指定してもよい。

一般規則

受け取り側作用対象の記述にJUSTIFIED句がある場合，日本語文字データの転記は右端から1文字単位に行われる。必要に応じて左端に日本語空白を補ったり，左端を切り捨てたりする。

JUSTIFIED句の指定がない場合は，標準けた寄せ規則が適用される。詳細は，「1.2.5　標準けた寄せ規則（日本語機能）」を参照のこと。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.36　JUSTIFIED句」

1.6.4　PICTURE句（日本語機能）

形式

機能

日本語項目および日本語編集項目を定義する。

構文規則

日本語文字データを扱う基本項目に対してのPICTURE文字列は，「N」および「B」の組み合わせで構成する。

日本語文字データを扱う基本項目に対して次の句を書くことはできない。

（a）BLANK WHEN ZERO句

（b）SIGN句

（c）USAGE句（DISPLAY指定およびNATIONAL指定を除く）

一般規則

日本語項目

（a）PICTURE文字列は，「N」だけから成る。

（b）文字「N」は，日本語文字1文字（2バイト）を示す。項目の内容は，標準データ形式で表したとき，一つ以上の日本語文字でなければならない。

（c）項目のサイズは，16,383文字以下でなければならない。

（d）項目の内容は標準データ形式で表したとき，一つ以上の日本語文字でなければならない。

日本語編集項目

（a）PICTURE文字列は，「N」と「B」から成り，それぞれ少なくとも一つずつ含まなければならない。

（b）文字「N」は，日本語文字1文字（2バイト）を示し，「B」は，日本語空白1文字（2バイト）を示す。

それぞれ項目の内容は，標準データ形式で表したとき，一つ以上の日本語文字でなければならない。

（c）項目のサイズは，16,383文字以下でなければならない。

（d）編集は，MOVE文でこの項目へ転記するときに行われる。文字「B」の部分には日本語文字集合の空白が挿入される。

使用例

       03 A1 PIC N(4).
       03 B1 PIC NBNBNBN.
       03 B2 PIC BNNNNB.
       03 B3 PIC BNBNBNBNB.

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.54　PICTURE句」

1.6.5　USAGE句（日本語機能）

形式

機能

計算機の記憶領域内でのデータ項目の表現形式を指定する。

構文規則

NATIONALを指定するUSAGE句を持つ基本項目，またはそのようなUSAGE句を持つ集団項目に従属する基本項目は，日本語項目，または日本語編集項目を記述するPICTURE句の文字列によって宣言されなければならない。すなわち，PICTURE句の文字は「N」および「B」だけから成っていなければならない。

一般規則

項類が日本語または日本語編集である基本項目，またはそれを含む集団項目にUSAGE句が指定されなければ，用途は暗黙的にNATIONALとなる。

明示的，または暗黙的に指定されたUSAGE IS NATIONAL句は，計算機の記憶領域内で日本語項目を表すために日本語文字集合が用いられること，およびデータ項目が英数字文字集合のバイト境界にけた寄せされることを指定する。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.86　USAGE句」

1.6.6　VALUE句（日本語機能）

形式

書き方1　データ項目の初期値を指定する場合

書き方2　条件名で表す値を指定する場合

機能

データ項目の初期値，または条件名で表す値を指定する。

構文規則

VALUE句を用いて，日本語集団項目，日本語項目，または日本語編集項目に，初期値および条件名で表す値を指定できる。この場合，定数は日本語文字定数または表意定数のSPACE（S）でなければならない。

日本語項目または日本語編集項目のVALUE句に指定された日本語文字定数は，明示的なPICTURE句で示される大きさを超えてはならない。日本語集団項目のVALUE句に指定された日本語文字定数は，その集団項目の大きさを超えてはならない。

集団レベルにVALUE句を指定する場合，その集団内の従属項目の記述にJUSTIFIED句やSYNCHRONIZED句があってはならない。

一般規則

項目の項類が日本語，または日本語編集の場合，VALUE句の定数はすべて日本語文字定数でなければならない。

VALUE句に指定された定数は，「1.2.5　標準けた寄せ規則（日本語機能）」に従って関連データ項目に収納される。ただし，初期化はJUSTIFIED句の影響を受けないし，編集も行われない。

PICTURE文字列の「B」に対応する文字位置を日本語文字集合の空白にする場合は，利用者の責任でそのような定義を書かなければならない

使用例

PICTURE句の指定

VALUEの指定

設定する初期値

N(4)

N'報告書'

報告書△

NNBNN

N'株式会社'

株式会社△

（株式△会社とはならない）

（凡例）

△：日本語文字集合の空白

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.88　VALUE句」

1.7　手続き部（日本語機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

1.7.1　単純条件（日本語機能）

比較条件で日本語集団項目，日本語項目，日本語編集項目，および日本語文字定数を作用対象として指定できる。

(1)　両方の作用対象が日本語の場合

比較は日本語文字集合の照合順序に従って行う。

作用対象の長さとは，その作用対象が含む標準データ形式の日本語の文字位置の個数で表される。両方の作用対象の長さが等しい場合と等しくない場合について，比較の方法を次に示す。

両方の作用対象の長さが等しい場合

両方の作用対象の対応する日本語文字を最左端から最右端に向って一組ずつ順に比較する。それぞれの対応する日本語文字がすべて等しいとき，これらの二つの作用対象は等しいものとする。

等しくない日本語文字が初めて現れたとき，照合順序でより高い位置の日本語文字集合の文字を含む作用対象をより大きいものとする。

作用対象の長さが等しくない場合

短い方の作用対象の右側に，長い方の作用対象の長さに等しくなるまで日本語文字集合の空白があるものとみなして前項と同じように比較をする。

(2)　作用対象の一方だけが日本語の場合

作用対象の一方は英数字集団項目でなければならない。

比較は日本語作用対象を英数字文字位置に換算し，この文字位置の個数のサイズを英数字作用対象として英数字比較する。

1.7.2　INITIALIZE文（日本語機能）

形式

機能

日本語項目または日本語編集項目に初期値を設定する。

一般規則

一意名1が日本語集団項目を指し示している場合，一意名1は集団項目として処理される。一意名2が日本語集団項目を指し示している場合，一意名2は基本項目として処理される。

初期設定は次のようにする。

（a）REPLACING指定がない場合，日本語文字集合の空白を設定する。

（b）REPLACING指定がある場合，一意名2，または定数の内容を設定する。

使用例

REPLACING指定がある場合の，初期設定をするコーディングを次に示す。

       INITIALIZE REPLACING
         NATIONAL DATA BY ALL N'　'.

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.24　INITIALIZE文」

1.7.3　INSPECT文（日本語機能）

形式

形式は標準仕様と同じ。

機能

日本語項目中の文字や文字列の出現回数を数えたり，それらをほかの日本語文字列で置き換えたりする。

構文規則

一意名1は日本語集団項目，または用途が明示的または暗黙的にNATIONALと記述された基本項目でなければならない。

一意名1の用途が明示的または暗黙的にNATIONALのとき，一意名3から一意名7は用途が明示的または暗黙的にNATIONALと記述された基本項目でなければならない。

定数はすべて日本語文字定数でなければならない。日本語文字定数は一意名1の用途がNATIONALのときだけ指定できる。

一般規則

一意名1，一意名3から一意名7の用途がNATIONALのデータ項目のとき，これら一意名のデータ項目の内容は日本語文字集合の文字列とみなされる。

一意名2が数え上げるのは日本語文字の個数であり，バイト数ではない。

この文に関するその他の規則は，標準仕様に従う。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.25　INSPECT文」

1.7.4　MOVE文（日本語機能）

形式

形式は標準仕様と同じ。

機能

日本語集団項目，日本語項目，日本語編集項目，または日本語文字定数を，日本語集団項目，日本語項目，または日本語編集項目へ転記する。

一般規則

送り出し側作用対象が日本語集団項目，日本語項目，日本語編集項目，または日本語文字定数で，受け取り側作用対象が，日本語集団項目，日本語項目，または日本語編集項目であるとき「1.2.5　標準けた寄せ規則（日本語機能）」に従って転記される。

次の表意定数を日本語集団項目，日本語項目，または日本語編集項目に転記するときは，その項類は日本語とする。

・SPACE（SPACES）

・ZERO（ZEROS，ZEROES）

・HIGH-VALUE（HIGH-VALUES）

・LOW-VALUE（LOW-VALUES）

日本語項目および日本語編集項目以外の基本データ項目を，日本語集団項目，日本語項目，または日本語編集項目に転記してはならない。

日本語集団項目，日本語項目，または日本語編集項目を，日本語項目および日本語編集項目以外の基本項目に転記してはならない。

書き方1のMOVE文中では，日本語集団項目は基本項目として扱われる。日本語項目，日本語編集項目，日本語文字定数から日本語集団項目への転記，および日本語集団項目から日本語項目，日本語編集項目への転記は基本項目転記となる。

書き方2のMOVE文中では，日本語集団項目は集団項目として処理される。日本語集団項目に従属する項目が選択されて転記される処理は，「COBOL2002　言語　標準仕様編」　「10.6.5　CORRESPONDING指定」に規定された規則に従う。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.28　MOVE文」

1.7.5　SEARCH文（日本語機能）

形式

形式は標準仕様と同じ。

機能

指定した条件を満足する日本語集団項目，日本語項目，または日本語編集項目の表要素を探し，対応する指標の値がその表要素を指すようにする。

一般規則

条件は日本語集団項目，日本語項目，日本語編集項目および日本語文字定数の比較条件に従って検査される。

この文に関するその他の規則は，標準仕様に従う。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.41　SEARCH文」

1.7.6　STRING文（日本語機能）

形式

形式は標準仕様と同じ。

機能

幾つかの日本語項目の内容の一部または全部をつなぎ合わせて，一つの日本語項目に移す。

構文規則

一意名3の用途がNATIONALのとき，定数は日本語文字定数でなければならない。

一意名3の用途がNATIONALのとき，一意名4以外の一意名の用途は，明示的または暗黙的にNATIONALと記述されていなければならない。

一般規則

一意名3の用途がNATIONALのとき，定数1または定数2に表意定数を使うと，それは用途がNATIONALである暗黙的な長さ1のデータ項目とみなされる。

一意名3の用途がNATIONALのとき，定数1または一意名1のデータ項目の内容が，日本語から日本語への転記の規則に従って，一意名3のデータ項目に転記される。

一意名4が示すものは受け取り側作用対象中の相対文字位置であって，相対バイト位置ではない。

この文に関するその他の規則は，標準仕様に従う。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.47　STRING文」

1.7.7　UNSTRING文（日本語機能）

形式

形式は標準仕様と同じ。

機能

送り出し側作用対象の連続した日本語データを分解し，幾つかの受け取り側作用対象に入れる。

構文規則

一意名1の用途がNATIONALのとき，定数1および定数2は，日本語文字定数または表意定数SPACEでなければならない。

一意名1の用途がNATIONALのとき，一意名2から一意名5は，明示的または暗黙的に項類が日本語のデータ項目として記述されていなければならない。

一般規則

区切り文字に表意定数を用いると，長さ1の日本語文字定数とみなされる。

一意名1の用途がNATIONALのとき，一意名1のデータ項目の内容が，MOVE文の転記の規則に従って，一意名4のデータ項目に転記される。

一意名7が示すものは受け取り側作用対象中の相対文字位置であって，相対バイト位置ではない。

この文に関するその他の規則は，標準仕様に従う。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.52　UNSTRING文」

2　テキストファイル機能

この章では，テキストファイル機能の形式について説明する。

2.1　テキスト編成

テキストファイルとは，テキストエディタによって作成されたファイルである。テキストファイルの各行（テキスト行）は，改行文字（Windows COBOL2002ではX'0D0A'，UNIX COBOL2002ではX'0A'）で区切られた文字の並びであるが，COBOLで扱うレコード長は，ファイル記述項（FD）のレコード定義およびテキスト行の長さによって決まる。

このシステムでは，テキストファイルを順ファイルの拡張仕様としてサポートする。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「5.1.7(1)　順編成」

2.2　環境部（テキストファイル機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.　環境部（ENVIRONMENT DIVISION）」

2.2.1　ファイル管理段落（テキストファイル機能）

形式

Windows COBOL2002では，テキストファイルでのファイル共用に関する指定は覚え書きとする。UNIX COBOL2002では，ファイル全体の施錠は有効であるが，レコード施錠に関する指定は覚え書きとする。

形式で示された指定については，次を除いて順ファイルの規則と同じである。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.3.3　ファイル管理段落（FILE-CONTROL）」

(1)　ORGANIZATION IS LINE SEQUENTIAL句

機能

ORGANIZATION IS LINE SEQUENTIAL句は，ファイルの論理的構成がテキストファイルであることを指定する。

一般規則

ORGANIZATION IS LINE SEQUENTIAL句は，ファイルの論理的構成がテキストファイルであることを指定する。ファイル編成は，ファイルを生成するときに定まり，後で変更できない。

テキストファイルは，順編成と同じでレコードがファイルに書き出されるときに定まる前後の関係によって一意となる永続的な論理ファイル構造である。

ORGANIZATION IS LINE SEQUENTIAL句が指定されたとき，ファイルはおのおのデータを一行ずつ含む可変長レコードの集まりとして扱われる。一行とは文字の並びであり，その終わりはレコード終端コードである。終端コードは，レコードの長さに含まれない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.3.4(9)　ORGANIZATION句」

2.3　データ部（テキストファイル機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.　データ部（DATA DIVISION）」

2.3.1　ファイル記述項（テキストファイル機能）

形式

形式で示された指定については，順ファイルと異なる規則だけを記述する。

構文規則

-UniObjGenオプションを指定した場合，ファイル記述項に従属するレコード記述は，用途がDISPLAYの項目に統一しなければならない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.3.4　ファイル記述項（file description entry）」

2.4　手続き部（テキストファイル機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

2.4.1　CLOSE文（テキストファイル機能）

ここでは，順ファイルと異なる規則だけを記述する。

構文規則

REEL／UNIT指定は覚え書きとみなされる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.6　CLOSE文」

2.4.2　OPEN文（テキストファイル機能）

ここでは，順ファイルと異なる規則だけを記述する。

構文規則

REVERSED句，NO REWIND句は指定できない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.30　OPEN文」

2.4.3　READ文（テキストファイル機能）

READ文については，順ファイルの規則と同じである。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.33　READ文」

2.4.4　REWRITE文（テキストファイル機能）

REWRITE文については，順ファイルの規則と同じである。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.39　REWRITE文」

2.4.5　WRITE文（テキストファイル機能）

WRITE文については，順ファイルの規則と同じである。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.55　WRITE文」

2.5　入出力状態の値（テキストファイル機能）

順ファイルと異なる値だけ記述する。

入出力状態 = 04

入力したレコードの長さが，そのファイル固有属性に従っていない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「5.1.12　入出力状態」

3　ファイル共用機能

この章では，ユーザ間のファイルの共用について説明する。

3.1　環境部（ファイル共用機能）

CSVファイル，およびHiRDBによる索引ファイルでは，ファイル共用に関する指定は覚え書きとする。

テキストファイルのファイル共用に関する指定は，Windows COBOL2002では覚え書きとする。UNIX COBOL2002では,ファイル全体の施錠は有効であるが，レコード施錠に関する指定は覚え書きとする。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.　環境部（ENVIRONMENT DIVISION）」

3.1.1　ファイル記述項（ファイル共用機能）

形式

書き方1　順ファイル

書き方2　索引ファイル

書き方3　相対ファイル

（備考）

このシステムでは，RELATIVE KEY句をACCESS MODE句から独立した一個の句として記述してもよい。

書き方4　テキストファイル

機能

LOCK MODE指定は，ファイルに対して使われる施錠方法を指示する。

Windows COBOL2002では，テキストファイルでのファイル共用に関する指定は覚え書きとする。UNIX COBOL2002では,ファイル全体の施錠は有効であるが，レコード施錠に関する指定は覚え書きとする。

なお，詳細については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のファイル共用の説明を参照のこと。

一般規則

LOCK MODE指定を省略すると，ファイルがINPUTモードで開かれていないかぎり排他となる。INPUTモードでは，OPEN文が成功すると，ファイルは共用となる。

LOCK MODE指定がEXCLUSIVEのとき，OPEN文が成功するとファイルは排他となる。

LOCK MODE指定がAUTOMATICまたはMANUALのとき，OPEN文が成功するとファイルは共用となる。

WITH LOCK ON RECORDは覚え書きである。

LOCK MODE指定がAUTOMATICのとき，READ文の実行が成功するとレコード施錠が要求され，その直後の入出力文が成功するとレコード施錠を解放する。ただし，START文についてはレコード施錠を解放しない。

LOCK MODE指定がMANUALのとき，WITH LOCK指定のあるREAD文によってレコード施錠される。

LOCK MODE指定がEXCLUSIVEで開かれたファイルは，ほかの実行単位から開くことはできない。LOCK MODE指定がEXCLUSIVEのINPUTモードで開かれたファイルに対し，ほかの実行単位がINPUTモードであっても開くことはできない。

共用モードで開かれたファイルは，排他モードを要求しない複数の実行単位から共用できる。

整列併合用ファイルに対してLOCK MODE指定はできない。

3.2　手続き部（ファイル共用機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

3.2.1　CLOSE文（ファイル共用機能）

一般規則

CLOSE文の実行が成功すると，閉じられたファイルのレコード施錠，ファイル施錠はすべて解放される。

（備考）

CLOSE文のWITH LOCK指定はファイル共用の機能ではない。つまり，ファイルに対してレコード施錠やファイル施錠を保持しているのではない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.6　CLOSE文」

3.2.2　DELETE文（ファイル共用機能）

一般規則

DELETE文は，削除するレコードがほかの実行単位に施錠されているとき成功しない。

DELETE文の実行が成功すると，削除したレコードのレコード施錠は解放される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.10　DELETE文」

3.2.3　OPEN文（ファイル共用機能）

形式

書き方1（順ファイル）

書き方2（相対ファイル，索引ファイル）

一般規則

WITH LOCK指定があるとき，OPEN文でファイル全体の施錠が要求される（ファイル管理記述項でLOCK MODE IS EXCLUSIVEを指定したときと同様）。

ファイル管理記述項でLOCK MODE指定がEXCLUSIVEまたはOPEN文でWITH LOCK指定があるとき，OPEN文の実行が成功するとファイルはその実行単位によって排他される。OPEN文が施錠されているために失敗したとき，入出力状態には'93'が設定される。

LOCK MODE指定がAUTOMATICまたはMANUALで，OPEN文にWITH LOCK指定がないとき，ファイルは共用される。共用されたファイルは複数の実行単位で開ける。OPEN文が施錠されているために失敗したとき，入出力状態には'93'が設定される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.30　OPEN文」

3.2.4　READ文（ファイル共用機能）

形式

書き方1

書き方2

構文規則

READ文のLOCK指定は，LOCK MODE指定がEXCLUSIVEのとき指定できない。

一般規則

ファイルがINPUTモードで開かれているとき，READまたはREAD WITH LOCK文でレコードを施錠することはできない。

暗黙的または明示的に施錠を要求するREAD文は，呼び出そうとするレコードがほかの実行単位によって施錠されていないときだけ成功する。レコードがほかの実行単位によって施錠されているとき，READ文は不成功となり，入出力状態には'99'が設定され，ファイル位置指示子の変更はしない。

READ文を実行するときに次のレコードが存在しないとき，ファイルの共用にかかわらず，AT END状態を返す。この状態は，例えば，ほかの実行単位でEXTENDモードで開かれているファイルに対して発生する。LOCK MODE指定がAUTOMATICまたはMANUALのとき，ほかの実行単位でEXTENDモードで追加されるレコードを読むことができる。LOCK MODEの指定がないときは保証しない。

LOCK MODE指定がAUTOMATICのとき，それぞれのレコードは読み込みによって施錠され，START文の規則の記述を除き，その実行単位の入出力文の呼び出しで解放される。WITH NO LOCK指定のあるREAD文はレコード施錠を要求しない。

LOCK MODE指定がMANUALのとき，その実行単位のREAD文にWITH LOCK指定があるときだけレコード施錠を要求する。指定がなければ，レコード施錠は要求しない。

（備考）

LOCK MODE指定がAUTOMATICまたはMANUALで共用によって開かれているファイルについては，オープンモードに関係なくREAD文でレコード施錠の検知をする。LOCK MODEの指定がなくINPUTモードで共用によって開かれているファイルについては，READ文でレコード施錠の検知は行わない。

施錠されているレコードを再読したとき，次の結果になる可能性がある。

・レコードがまだ施錠されている。または再び施錠された。

・レコードが削除された場合，KEY指定のあるREAD文は無効キー状態を返す。

・レコードが削除された場合，READ NEXT文はファイルの終わり状態を返すか，または先のREAD文と異なるレコードを読み込もうとする。

・ファイル位置指示子を選択した個所に，新しいレコードが挿入されたとき，そのレコードが施錠されていなければ，READ NEXT文で新しいレコードが読み込まれる。

ただし，このシステムでは，このような位置に新しくレコードが挿入されてもファイル位置指示子が示すレコードは，施錠されたレコードのままで，新しく挿入されたレコードをポイントし直すということはない。そのため，この場合のREAD NEXT文では，常に同じレコードを読み込もうとする。すなわち，新しく挿入されたレコードが読み込まれることはない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.33　READ文」

3.2.5　REWRITE文（ファイル共用機能）

一般規則

書き換えられるレコードが，ほかの実行単位によって施錠されているときはREWRITE文は成功しない。

LOCK MODE指定がAUTOMATICのとき，REWRITE文が成功すると，存在するレコード施錠は解放される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.39　REWRITE文」

3.2.6　START文（ファイル共用機能）

一般規則

START文は，レコード施錠を要求することも，検知することもしない。LOCK MODE指定がAUTOMATICのとき，同じ実行単位で取得されたレコード施錠を解放しない。

（備考）

START文によってレコードに位置づけられた直後のREAD NEXT文で，「ファイルの終わり」または「レコード施錠」状態が返される可能性がある。それはSTART文とREAD NEXT文の間に，ほかの実行単位によってレコードが削除または施錠された場合である。READ文によってキーを取得し，その直後に取得したキーを使ってKEY EQUALまたはNOT LESS指定をしたSTART文も同様で，「無効キー」状態が返される可能性がある。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.45　START文」

3.2.7　UNLOCK文（ファイル共用機能）

形式

機能

UNLOCK文は，指定されたファイルに対して実行単位によって取得したすべてのレコード施錠を解放する。

一般規則

ファイル名1で参照されるファイルは，OPEN文ですでに開かれていなければならない。

UNLOCK文は，施錠されていなくても成功する。

3.2.8　WRITE文（ファイル共用機能）

一般規則

二つまたはそれ以上の実行単位でEXTENDモードで開かれ，共用している相対ファイルに対しレコードを追加するとき，追加するレコードの相対キーの値は必ずしも連続していないが，昇順になっている。

二つまたはそれ以上の実行単位でEXTENDモードで開かれ，共用している索引ファイルに対しレコードを追加するとき，ALTERNATE RECORD KEY句にDUPLICATES指定があれば追加するレコードの副レコードキーの重複を許す。DUPLICATES指定がなければ許さない。

LOCK MODE指定がAUTOMATICのとき，WRITE文が成功すると存在しているレコード施錠は解放される。

（備考）

主レコードキーが一意で昇順のときでも，二つまたはそれ以上の実行単位でEXTENDモードで開かれ共用されている索引ファイルに対し，WRITE文を実行すると，「不当キー，順序エラー」を返し，失敗となる可能性がある。したがって，利用者は，索引ファイルをEXTENDモードで開くとき，排他を指定するべきである。

二つまたはそれ以上の実行単位で追加するレコードの相対キーは，必ずしも追加された位置とは同一でない可能性がある。したがって，利用者は相対ファイルをEXTENDモードで開く場合，排他を指定するべきである。

順ファイルをEXTENDモードで開き，二つまたはそれ以上の実行単位でレコードを追加するとき，実際の書き出し位置はファイルシステムに依存している。

したがって，利用者は順ファイルをEXTENDモードで開く場合，排他を指定するべきである。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.55　WRITE文」

4　索引ファイル機能の拡張

この章では，索引ファイル機能の拡張の概要とそれを実現するための規則について説明する。

4.1　機能概要（索引ファイル機能の拡張）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「5.1.7(3)　索引編成」

4.1.1　合成キー

レコードのフィールドに対し，複数のインデクスを定義すると，複数のレコードキーを利用して目的に応じたレコードを検索できる。また，レコードの複数のフィールドを組み合わせてインデクスを定義すれば，それらのフィールドを一つのレコードキーとして扱える。これを合成キーという。

4.1.2　レコード下降順アクセス機能

レコードのフィールドに対してインデクスを定義して，位置づけをしたレコードからレコードキーの下降順（大きい値から小さい値）に呼び出せる。これをレコード下降順アクセス機能という。

4.2　環境部（索引ファイル機能の拡張）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.　環境部（ENVIRONMENT DIVISION）」

4.2.1　ファイル管理記述項（FILE-CONTROL）（索引ファイル機能の拡張）

ここでは，ALTERNATE RECORD KEY句と，RECORD KEY句について説明する。

合成キーを使用する場合の索引ファイルのファイル管理記述項の書き方を次に示す。

形式

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.3.4　ファイル管理記述項」

(1)　ALTERNATE RECORD KEY句（索引ファイル機能の拡張）

形式

機能

索引ファイルのレコードに副レコードキーによるアクセス経路を指定する。このとき，合成キーを副レコードキーとして定義できる。

構文規則

データ名1を指定した場合，合成キーを使用できない。通常の副レコードキーとして処理される。

合成キーを使用する場合は，合成キー名1を指定する。

合成キー名1は，先頭が英字の31文字以内の英数字でなければならない（利用者定義語の規則に従う）。

データ名2は，基本項目でなければならない。集団項目であってはならない。

データ名2は，添字付けが必要な基本項目であってはならない。

データ名2は，修飾してもよいが，部分参照してはならない。

データ名2は，1〜8個まで指定できる。

データ名2の項目の長さの合計は，255バイト以下でなければならない。

索引ファイルが可変長項目レコードを含むとき，データ名2のサイズは，そのファイルの最小レコードの範囲内に含まれていなければならない。

データ名2は，再定義項目またはその従属項目であってもよい。ただし，領域が重なってはならない。

データ名2は，ALTERNATE RECORD KEY句が書かれたファイル名に関連するレコード記述項中で定義されていなければならない。

データ名2は，可変長項目の後にある項目であってはならない。

データ名2は，英数字編集項目，日本語編集項目，ブール項目，アドレスデータ項目，指標データ項目，可変長項目，オブジェクト参照データ項目，外部10進項目，内部10進項目，外部浮動項目，数字編集項目，英字項目，日本語項目であってはならない。

データ名2は，8バイトの2進項目であってはならない。

合成キーを構成するフィールドの順は，データ名2で指定された順に従う。

データ名2の指定は，レコード記述項中の並びに関係しない。順不同である。

データ名2がCOMP-X項目のときの規則については，「25.6.2　COMP-X項目」の「(6)　COMP-X項目が2進項目として扱われる個所」と「25.6.2　COMP-X項目」の「(9)　索引ファイルとCOMP-X項目」を参照のこと。

一般規則

合成キー名1は，START文，READ文のKEY句だけで参照できる。

データ名2は，レコード中での相対位置，長さおよびデータの属性をファイル生成のときに定義したものと同じにしなければならない。

データ名2を記述する個数は，ファイル生成のときに定義したものと同じにしなければならない。

ファイルに二つ以上のレコード記述項があるとき，データ名2はこれらのレコード記述項の一つだけに記述する必要がある。データ名2が二つのレコード記述項にわたっている場合の動作は保証しない。

ファイルに二つ以上のレコード記述項があるとき，データ名2が記述されているレコード記述項以外のレコード記述項でもデータ名2と同じ文字位置が，暗黙的にキーとして参照される。

関連するファイル結合子が外部ファイル結合子のとき，その実行単位でそのファイル結合子に関連するすべてのファイル記述項では，データ名2に対して関連するレコード中の同じ相対位置に同じデータ記述項を指定しなければならない。

レコードキーの一致，不一致の判定は，マニュアル「COBOL2002　言語　標準仕様編」のALTERNATE RECORD KEY句を参照のこと。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.3.4(5)　ALTERNATE RECORD KEY句」

(2)　RECORD KEY句（索引ファイル機能の拡張）

形式

機能

索引ファイルのレコードに主レコードキーによるアクセス経路を指定する。このとき，合成キーを主レコードキーとして指定する。

構文規則

データ名1を指定した場合は，合成キーを使用できない。通常のレコードキーとして処理する。

合成キーを使用する場合は，合成キー名1を指定する。

合成キー名1は，先頭が英字の31文字以内の英数字でなければならない（利用者定義語の規則に従う）。

データ名2は，基本項目でなければならない。

データ名2は，添字付けが必要な基本データ項目であってはならない。

データ名2は，修飾してもよいが，部分参照してはならない。

データ名2は，1〜8個まで指定できる。

データ名2の項目の長さの合計は，255バイト以下でなければならない。

索引ファイルが可変長項目レコードを含むとき，データ名2のサイズは，そのファイルの最小レコードの範囲内に含まれていなければならない。

データ名2は，再定義項目またはその従属項目であってもよい。ただし，領域が重なってはならない。

データ名2は，RECORD KEY句で書かれたファイル名に関連するレコード記述項中で定義されていなければならない。

データ名2は，可変長項目の後にある項目であってはならない。

データ名2は，英数字編集項目，日本語編集項目，ブール項目，アドレスデータ項目，指標データ項目，可変長項目，オブジェクト参照データ項目，外部10進項目，内部10進項目，外部浮動小数点数字項目，数字編集項目，英字項目，日本語項目，日本語集団項目であってはならない。

データ名2は，8バイトの2進項目であってはならない。

合成キーを構成するフィールドの順は，データ名2で指定された順に従う。

データ名2の指定は，レコード記述項中の並びに関係しない。順不同である。

データ名2がCOMP-X項目のときの規則については，「25.6.2　COMP-X項目」の「(6)　COMP-X項目が2進項目として扱われる個所」と「25.6.2　COMP-X項目」の「(9)　索引ファイルとCOMP-X項目」を参照のこと。

一般規則

合成キー名1は，START文，READ文のKEY句だけで参照できる。

データ名2は，レコード中での相対位置，長さおよびデータの属性をファイル生成のときに定義したものと同じにしなければならない。

データ名2を記述する個数は，ファイル生成のときに定義したものと同じにしなければならない。

ファイルに二つ以上のレコード記述項があるとき，データ名2はこれらのレコード記述項の一つだけに記述する必要がある。データ名2が二つのレコード記述項にわたっている場合の動作は保証しない。

ファイルに二つ以上のレコード記述項があるとき，データ名2が記述されているレコード記述項以外のレコード記述項でもデータ名2と同じ文字位置が，暗黙的にキーとして参照される。

関連するファイル結合子が外部ファイル結合子のとき，その実行単位でそのファイル結合子に関連するすべてのファイル記述項では，データ名2に対して関連するレコード中の同じ相対位置に同じデータ記述項を指定しなければならない。

レコードキーの一致，不一致の判定は，マニュアル「COBOL2002　言語　標準仕様編」のRECORD KEY句に従う。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.3.4(14)　RECORD KEY句」

4.3　データ部（索引ファイル機能の拡張）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.　データ部（DATA DIVISION）」

4.3.1　DATA FORMAT句（索引ファイル機能の拡張）

形式

機能

DATA FORMAT句は，外部記憶装置上のデータ表現に使うデータ形式を指定する。

UNIX COBOL2002では，DATA FORMAT句は使用できない。

構文規則

DATA FORMAT句は，索引ファイルにだけ指定できる。

DATA FORMAT句は，固定長レコードのファイルにだけ指定できる。

NATIVE指定以外のDATA FORMAT句を指定したファイルに従属するレコード記述は一つでなければならない。

DATA FORMAT句は，レコード記述中にREDEFINES句がある場合，被再定義項目と再定義項目の両方に2進項目があってはならない。

一般規則

STANDARDは，2進データがビッグエンディアンであることを示す。

REVERSEは，2進データがリトルエンディアンであることを示す。

NATIVEは，2進データがシステムの固有形式であることを示す。

ファイルにDATA FORMAT句を書かないと，NATIVEを指定したものとみなす。

4.4　手続き部（索引ファイル機能の拡張）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

4.4.1　READ文（索引ファイル機能の拡張）

形式

書き方1　順アクセスのREAD文

書き方2　乱アクセスのREAD文

機能

順アクセスのREAD文は，START文で決定したアクセス順序に従い，ファイルの次の，または前のレコードを使用できるようにする。

乱アクセスのREAD文は，大記憶ファイルの指定されたレコードを使用できるようにする。

構文規則

一意名1の記憶領域とファイル名1のレコード領域とは，同じであってはならない。

データ名1は，ファイル名1に関連するレコードキーとして指定されたデータ項目でなければならない。

合成キー名1は，SOURCE指定，または=指定のあるRECORD KEY句，SOURCE指定，FOR指定，または=指定のあるALTERNATE RECORD KEY句に書かれた合成キー名を指定する。

データ名1は，修飾してもよい。合成キー名1は，ファイル名で修飾できる。

順アクセス法のファイルにアクセスするときには，書き方1を用いる。

動的アクセス法のファイルのレコードを順アクセスするときには，NEXT指定またはPREVIOUS指定を書かなければならない。

動的アクセス法のファイルのレコードを乱アクセスするときには，書き方2を用いる。

動的アクセス法のファイルを乱アクセスした後，NEXT指定によって順アクセスする場合，これ以降レコードのアクセスはキーの上昇順に行われる。

ファイル名1にUSE手続きがないときは，INVALID KEY指定またはAT END指定を書かなければならない。

一般規則

ファイル名1のファイルは，READ文を実行する前に入力モードまたは入出力両用モードで開いておかなければならない。

順アクセス法の索引ファイルに対して，NEXTを指定した場合，またはNEXT指定およびPREVIOUS指定のどちらも省略した場合は，START文による指定に従って，そのファイルから次の，または前のレコードにアクセスする。PREVIOUSを指定した場合は，START文による指定に関係なく，そのファイルから前のレコードにアクセスする。

READ文の実行によって，ファイル名1に関連する入出力状態の値が更新される。

無条件文2または無条件文4を指定すると，レコードはその実行前に使用できるようになる。無条件文2または無条件文4を指定しないと，レコードはREAD文に続く文の実行前に使用できるようになる。

このファイルにレコード記述項が二つ以上あるときには，それらのレコードは再定義の規則に従って記憶領域中の同じレコード領域を共用する。READ文の実行が完了したときの，現在レコードの範囲を超えた位置にあるデータ項目の内容は保証しない。

INTO指定のあるREAD文の実行結果は，次に示す規則の順に適応したものと等しい。

（a）INTO指定のないREAD文の実行。

（b）現在レコードがCORRESPONDING指定のないMOVE文の規則に従って，レコード領域から一意名1の領域へ転記される。現在レコードのサイズは，RECORD句の規則で定める。暗黙の転記は集団項目転記となる。

このレコードは，入力レコード領域と一意名1のデータ項目の両方で使用できるようになる。READ文の実行が不成功になったときには，この転記はされない。一意名1に付けた添字は，レコードを読んだ後で転記する直前に評価される。

ファイル位置指示子が，次のレコードがないことを示しているとき，次の順序で動作する。

（a）ファイル位置指示子の設定に従って，ファイル終了条件を示す値が，ファイル名1に関連する入出力状態に設定される。

（b）READ文にAT END指定を書くと，AT END指定の無条件文1が実行される。ファイル名1に関連するUSE手続きは実行されない。

（c）READ文にAT END指定を書かないと，ファイル名1に関連するUSE手続きを書かなければならず，USE手続きが実行される。その手続きからは，READ文に続く次の実行文に復帰する。ファイル終了条件になると，その条件を起こしたREAD文の実行ができなくなる。

READ文の実行でファイル終了条件または無効キー条件のどれも起こらなかったとき，AT END指定またはINVALID KEY指定があっても無視され，次のように動作する。

（a）ファイル位置指示子が設定され，そのファイル名1に関連する入出力状態が更新される。

（b）ファイル終了条件または無効キー条件のどれでもない例外条件になったとき，ファイル名1に関連するUSE手続きが実行された後，USE文の規則に従って制御が移される。

（c）例外条件にならなかったとき，レコードは，レコード領域で使用できるようになり，INTO指定があれば暗黙に転記される。制御は，READ文の終わり，または無条件文2が指定されていれば，そこに移る。後者の場合，無条件文2で指定されている各文の規則に従って実行が続く。明示的な分岐または条件文が実行されたとき，制御はその文の規則に従って移され，その他では，無条件文2の実行の完了によって，制御がREAD文の終わりに移る。

READ文の実行ができなくなった後の，関連するレコード領域の内容および索引ファイルの参照キーは規定しない。ファイル位置指示子には，有効な次のレコードが確立しなかったことが設定される。

書き方1のREAD文の実行が開始されるときのファイル位置指示子の設定値は，次の規則に従って，使用できるレコードを定めるために使用される。

索引ファイルでのレコードの比較は，現在の参照キーの値による。

（a）ファイル位置指示子が，有効な次のレコードがないことを示しているとき，READ文の実行は不成功となる。

（b）先に実行されたOPEN文またはSTART文によってファイル位置指示子が設定されているとき，そのファイル位置指示子より大きいかまたは等しい（レコード下降順アクセスのときは小さいかまたは等しい）キー値を持つレコードが選択される。

（c）先に実行されたREAD文によってファイル位置指示子が設定されているときで，かつ現在の参照キーが重複を許さない索引ファイルに対してのとき，そのファイル位置指示子より大きい（レコード下降順アクセスのときは小さい）キー値を持つレコードが選択される。

（d）先に実行されたREAD文によってファイル位置指示子が設定されているときで，かつ現在の参照キーが重複を許す索引ファイルに対してのとき，選択されるレコードは次のどれかである。

・キー値がファイル位置指示子に等しく，かつ，その重複したレコードキー値を持つレコードの組の中で，先に実行されたREAD文で使用できるようになったレコードの論理的に直後（レコード下降順アクセスのときは直前）にあるレコード

・キー値がファイル位置指示子より大きい（レコード下降順アクセスのときは小さい）最初のレコード

　上記の規則を満たすレコードが見つかると，そのレコードがファイル名1に関連するレコード領域で使用できるようになる。

　上記の規則を満たすレコードが見つからないとき，ファイル位置指示子は次のレコードが存在しないことを示すように設定され，一般規則7に従って実行が続けられる。

　レコードが使用できるようになると，ファイル位置指示子には使用できるようになったレコードのレコード番号またはキー値が設定される。

読み込んだレコードのサイズがファイル名1のレコード記述項で指定された最小のサイズより小さいとき，読み込まれた最後の有効な文字の右にあるレコード領域の部分の内容は不定である。読み込んだレコードのサイズがファイル名1のレコード記述項で指定された最大のサイズより大きいとき，レコードは右側が切り捨てられて最大のサイズとなる。どの場合も，入出力状態はレコード長の不整合を示すように設定される。

END-READ指定は，READ文の範囲を区切る。

動的アクセス法の索引ファイルに対して，NEXT指定のある書き方1のREAD文を書くと，START文による指定に従って，そのファイルから次の，または前のレコードにアクセスする。PREVIOUSを指定した場合は，START文による指定に関係なく，そのファイルから前のレコードにアクセスする。

副レコードキーを参照キーとして順アクセスするときに，その値で指定されるレコードは重複して存在することがある。その場合の順アクセスのREAD文は，WRITE文またはREWRITE文で重複した値を持つレコードを書き出した順に従って，（レコード下降順アクセスのときは書き出した順とは逆の順に）レコードにアクセスする。

書き方1のREAD文の参照キーは，関連するファイルに対して直前に実行されたOPEN，READまたはSTART文によって定まる。

書き方2のREAD文でKEY指定を書くと，そのデータ名1，または合成キー名1がこのREAD文の参照キーとなる。動的アクセス法の場合，そのファイルに対するそれ以降の書き方1のREAD文は，別の参照キーが指定されるまで，この参照キーを使用する。

書き方2のREAD文でKEY指定を書かないと，主レコードキーがこの文の参照キーとなる。動的アクセス法の場合，そのファイルに対するそれ以降の書き方1のREAD文は，別の参照キーが指定されるまで，この参照キーを使用する。

書き方2のREAD文を実行すると，ファイル位置指示子に参照キーの値が設定される。この値は，ファイルのレコード中の対応するデータ項目の値と一致する最初のレコードが見つかるまで比較される。副レコードキーが重複した値を持つとき，最初に見つかるレコードは，大記憶管理システムに渡された重複した副レコードキー値を持つ一連のレコードの最初（レコード下降順アクセスのときは最後）のものである。一致するレコードがあると，ファイル名1に関連するレコード領域で使用できるようになる。一致するレコードがないとき無効キー条件になり，READ文の実行ができなくなる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.33　READ文」

4.4.2　START文（索引ファイル機能の拡張）

形式

書き方1

書き方2

機能

レコードを順アクセスするために，ファイルを論理的に位置づけ，アクセス順序を決定する。

構文規則

ファイル名1は，順アクセス法または動的アクセス法の索引ファイルの名前でなければならない。

データ名1は，修飾してもよい。

合成キー名1は，ファイル名で修飾できる。

ファイル名1に関連するUSE手続きがないときは，INVALID KEY指定を書かなければならない。

KEY指定を書くとき，データ名1は次のどれかでなければならない。

（a）ファイル名1に関連する主レコードキーまたは副レコードキーとして指定されたデータ項目。

（b）ファイルのレコード中の項類が英数字または数字のデータ項目で，ファイル名1に関連する主レコードキーまたは副レコードキーと左端の文字位置を共有し，そのレコードキーの長さより大きくないもの。ただし，この数字項目のデータ属性およびレコード中での相対位置はファイルを生成したときのものと同じでなければならない。

合成キー名1は，SOURCE指定，または=指定のあるRECORD KEY句，SOURCE指定，FOR指定，または=指定のあるALTERNATE RECORD KEY句に書かれた合成キー名を指定する。

データ名1は，部分参照してはならない。

一般規則

ファイル名1のファイルは，START文を実行する前に入力モードまたは入出力両用モードで開いておかなければならない。

KEY指定を書かないと，比較演算子「IS EQUAL TO」が指定されたものとみなす。

START文の実行によって，レコード領域の内容は変わらないし，ファイル名1に関連するRECORD句のDEPENDING ON指定で書かれたデータ名のデータ項目の内容も変わらない。

KEY指定の比較演算子で指定された比較は，ファイル名1のファイルのレコードに関連するキーと，一般規則5で指定されるデータ項目との間で比較される。つまり，そのファイルの文字の照合順序に従って，昇順に並んでいる参照キーについて比較される。作用対象の長さが異なる場合，短い方と同じ長さになるように長い方の右側を切り捨てて文字比較をする。

（a）ファイル位置指示子は，キーの値が比較条件を満たす最初のレコードの位置に設定される。

（b）ファイル中のどのレコードに対しても比較条件が満たされない場合，無効キー条件になり，START文の実行はできない。

一般規則4による比較では，次のデータ項目が使用される。

（a）KEY指定を書くと，データ名1または合成キー名1で参照されるデータ項目。

（b）KEY指定を書かないと，RECORD KEY句に書かれたデータ項目。

START文の実行によって，ファイル名1に関連する入出力状態の値が更新される。

START文の実行の成功または不成功による制御の移行は，START文のINVALID KEYおよびNOT INVALID KEY指定の有無による。

START文を実行できなくなると，ファイル位置指示子は有効な次のレコードがないことを示すように設定される。参照キーは規定しない。

END-STARTは，START文の範囲を区切る。

参照キーは，次のとおりに定める。

（a）KEY指定を書かないと，ファイル名1に対して指定した主レコードキーが参照キーになる。

（b）KEY指定を書き，データ名1または合成キー名1がファイル名1のレコードキーである場合，そのレコードキーが参照キーになる。

（c）KEY指定を書き，データ名1がファイル名1のレコードキーでない場合，データ名1のデータ項目と左端の文字位置を共有するレコードキーが参照キーになる。この参照キーが，START文の位置決めに使用される（一般規則4参照）。START文を実行すると，この参照キーは後続の順アクセスのREAD文にも使用される。

重複した副レコードキー値を持つレコードがあるときは，その中で論理的に先頭（レコード下降順アクセスのときは最後）にあるレコードに位置づける。

比較演算子「EQUAL TO」または「=」を指定した場合，ファイル位置指示子はデータ名1の値と等しいキーを持つレコードキーに位置づける。これ以後のレコードは，キーの昇順にアクセスされる。

比較演算子「GREATER THAN」または「>」を指定した場合，ファイル位置指示子はデータ名1の値より次に大きいキーを持つレコードに位置づけられる。これ以後のレコードは，キーの上昇順にアクセスされる。

比較演算子「NOT LESS THAN」「NOT <」を指定した場合，ファイル位置指示子はデータ名1の値と等しいキーを持つレコードに位置づける。等しいキーがなければ，次に大きいキーを持つレコードに位置づける。

これ以後のレコードは，キーの上昇順にアクセスされる。

比較演算子「LESS THAN」または「<」を指定した場合，ファイル位置指示子はデータ名1の値より次に小さいキーを持つレコードに位置づける。

これ以後のレコードは，キーの下降順にアクセスされる。

比較演算子「LESS THAN OR EQUAL TO」または「<=」を指定した場合，ファイル位置指示子はデータ名1の値と等しいキーを持つレコードに位置づける。等しいキーがなければ，次に小さいキーを持つレコードに位置づける。

これ以後のレコードは，キーの下降順にアクセスされる。

比較演算子「GREATER THAN OR EQUAL TO」または「>=」を指定した場合，ファイル位置指示子はデータ名1の値と等しいキーを持つレコードに位置づける。等しいキーがなければ，次に大きいキーを持つレコードに位置づける。

これ以後のレコードは，キーの上昇順にアクセスされる。

書き方2のSTART文でLAST RECORDを指定した場合，ファイル位置指示子は最大のキーを持つレコードに位置づける。

これ以後のレコードは，キーの下降順にアクセスされる。

このとき，データ名1の内容は比較の対象にならない。

書き方2のSTART文でFIRST RECORDを指定した場合，ファイル位置指示子は最小のキーを持つレコードに位置づける。これ以後のレコードは，キーの上昇順にアクセスされる。

このとき，データ名1の内容は比較の対象にならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.45　START文」

5　ブール形式データを扱う機能

各けたの値が0と1だけから成るデータをブールデータという。このシステムでは，ブール項目とブール定数を扱うことができる。

このシステムのブール項目の仕様は，1978年版のCODASYL COBOLに準拠している。

この章では，ブール定数とブール項目の規則について説明する。

5.1　ブール定数（ブール形式データを扱う機能）

ブール定数を表す規則は，次のとおりである。

1文字から160文字までのブール文字（0または1）を引用符で囲み，その左に文字Bを付けて構成する。

ブール定数の値は，文字Bと引用符を外したブール文字列そのものである。各ブール文字の1けたのサイズはデータ記述項のUSAGE句の指定によって，1ビットまたは1バイトとなる。

ブール定数の例を次に示す。

（例）

ブール定数

値

B'1111'

長さが4でブール文字1だけから成るブール定数を表す。

B'0000'

長さが4でブール文字0だけから成るブール定数を表す。

B'0101'

ブール文字0と1を含むブール定数を表す。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.2.1(2)(c)　ブール定数」

5.2　表意定数（ブール形式データを扱う機能）

表意定数のZERO，ZEROS，ZEROESは，文脈によってブール文字0を表す。

ALL ブール定数と書くと，このブール定数のブール文字列を何回か反復したものを表す。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.7.2　ブール式（Boolean expressions）」

5.3　データの表現形式（ブール形式データを扱う機能）

ブール項目に適用される項類および字類は，標準仕様編で述べた分類に当てはまらない，まったく独立したものである。ブール項目の項類はブール，字類もブールと定める。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.4.2　データ項目や定数の字類と項類」

5.3.1　ブール項目（ブール形式データを扱う機能）

ブール項目は，PICTURE句の文字列が文字'1'だけから成るもので，ブール文字の列を表す。ブール文字は，USAGE（用途）がBIT（ビット）かDISPLAY（表示用）かによって，おのおの1ビットまたは標準データ形式の1文字を表示する。

ビットから成るブール項目を内部ブール項目，文字から成るブール項目を外部ブール項目という。

外部ブール項目を部分参照する場合，そのブール項目と同じ長さの英数字項目に再定義されたものとみなす。

内部ブール項目は部分参照してはならない。

内部ブール項目の指定方法および形式を次に示す。

表5‒1　ブール項目の指定方法および表現形式

PICTURE句の指定

USAGE句の指定

表現形式

ブール（文字'1'だけの文字列）

DISPLAY

1バイトで1ブール文字（0か1）を表現する。

BIT

1ビットで1ブール文字（0か1）を表現する。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.54　PICTURE句」

「COBOL2002　言語　標準仕様編」　「9.16.86　USAGE句」

5.3.2　標準けた寄せ規則（ブール形式データを扱う機能）

ブール項目は，最左端のブール位置をそろえて収め，必要なら右側にブール文字0を補ったり，右側を切り捨てたりする。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.5.7　データ項目内でのデータのけた寄せ」

5.3.3　データ配置の方法（ブール形式データを扱う機能）

USAGE句でBITを指定すると，PICTURE句で指定したビット数を占める。USAGE句でDISPLAYを指定すると，英数字項目と同じように配置され，PICTURE句で指定したバイト数を占める。

5.4　データ部（ブール形式データを扱う機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.　データ部（DATA DIVISION）」

5.4.1　JUSTIFIED句（ブール形式データを扱う機能）

JUSTIFIED句をブール項目に対して指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.36　JUSTIFIED句」

5.4.2　OCCURS句（ブール形式データを扱う機能）

形式

一般規則

KEY IS指定に書くデータ名2は，ブール項目を指すものであってはならない。

用途がBITのブール項目に対してINDEXED BY指定を書くときは，そのブール項目に対してSYNCHRONIZED句を指定しなければならない。

（備考）

INDEXED BY指定があるブール項目にSYNCHRONIZED句を指定しないと，このシステムではSYNCHRONIZED句を仮定する。

DEPENDING ON指定

USAGE句でBITを指定したブール項目に，SYNCHRONIZED句を指定していないときは，そのブール項目には，DEPENDING ON指定のあるOCCURS句を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.51　OCCURS句」

5.4.3　PICTURE句（ブール形式データを扱う機能）

PICTURE文字列では，標準仕様に加えてブール項目も指定できる。

(1)　ブール項目の指定方法

PICTURE文字列は，文字「1」およびその反復回数を表す数字を括弧で囲んだものだけから成る。

項目の内容は，ブール文字0と1の組み合わせでなければならない。

PICTURE文字列中の「1」は，1個のブール文字を含む1個のブール位置を示し，項目のサイズに数える。

PICTURE文字「1」の前に書けるものは，「1」だけである。

ブール項目では，挿入編集もゼロ抑制編集もできない。

項目のサイズは，2,034以下でなければならない。PICTURE文字列の指定と項目の表す値の例を次に示す。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.54　PICTURE句」

5.4.4　REDEFINES句（ブール形式データを扱う機能）

形式

一般規則

データ名2が，用途がBITでSYNCHRONIZED句指定のないブール項目の場合，データ名1は同じ属性でなければならない。すなわち，用途がBITのブール項目で，かつSYNCHRONIZED句指定のない項目でなければならない。

再定義項目，または被再定義項目が内部ブール項目のとき，両方の項目のサイズを同じにするか，または再定義項目を小さくしなければならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.60　REDEFINES句」

5.4.5　RENAMES句（ブール形式データを扱う機能）

形式

一般規則

RENAMES句でTHRUを用いた場合，THRUの前後のデータ名2とデータ名3はどちらもその用途がBITであってはならない。すなわち，内部ブール項目であってはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.61　RENAMES句」

5.4.6　SYNCHRONIZED句（ブール形式データを扱う機能）

一般規則

SYNCHRONIZED句を指定した内部ブール基本項目は，バイト境界にけた詰めされたビット位置を占める。

SYNCHRONIZED句を集団項目に指定すると，その集団に含まれる基本項目で，用途がBITである項目すべてにSYNCHRONIZEDの指定が適用される。

遊びビット

用途がBITの項目とそれ以外のデータ項目が交互に並ぶと，バイト境界に合わせて項目を配置する。このとき，前者（用途がBIT）の項目との間にすき間ができることがある。これを遊びビットという。

（a）遊びビットが生じる場合

・レコードの中で，用途がBITでSYNCHRONIZED句指定のないブール項目の後ろにそれ以外の項目が続くとき，この二つの項目の間に生じる。

・集団項目の最後の項目が，用途BITでSYNCHRONIZED句指定のないブール項目のとき，その項目の後ろに生じる。

（b）遊びビットの挿入と仮定

・出力ファイルまたは作業場所節中のレコード記述項では，用途がBITでSYNCHRONIZED句指定のないブール項目を除いて，その他の項目がバイト境界に置かれるようにレコード内遊びビットを挿入する。

・入力ファイルまたは連絡節中のレコード記述項では，用途がBITでSYNCHRONIZED句指定のないブール項目を除いて，その他の項目の境界を正しくするために，遊びビットが渡されるデータの中にあるものとみなす。

（c）遊びビットの数と位置の決定

遊びビットが必要かどうかを決定し，必要な場合には加えるべき遊びビットの数と位置を決めるためにこのシステムは次のようにする。

・バイト境界に配置しなければならない項目，すなわち用途がBITでSYNCHRONIZED句指定のないブール項目以外の項目の直前，または集団項目の最後の二つの場所のどちらかにある一連の用途BITでSYNCHRONIZED句指定なしのブール項目が占めるブール位置の合計を求め，この値を8で割る。この除算の余り（r）が0のときは遊びビットは不要で，余りが0でないときは加えられるべき遊びビットは8-rである。これらの遊びビットは，上記の一連の用途BITでSYNCHRONIZED句指定なしのブール項目の直後にあるものとして各レコードに加えられる。レコード内遊びビットは，その直前のブール項目のレベル番号と等しいレベル番号を持つ項目であるかのように定義され，そのブール項目が属する集団のサイズに含まれる。レコード中に，ブール項目でない項目SYNCHRONIZED句が指定された項目があるときには，遊びビットのほかに遊びバイトも追加される。

遊びビットの挿入例を次に示す。

（例）

   01 A.
     05 B.
       10 C      PIC 1(5) BIT.
       10 FILLER PIC 1(3) BIT.　…(1)
       10 D      PIC 9(3).
       10 E      PIC 1(7) BIT.
       10 FILLER PIC 1    BIT.　…(2)
       10 F      PIC 1      DISPLAY
       10 G      PIC 1(6) BIT.
       10 FILLER PIC 1(2) BIT.　…(3)
     05 H.
       10 I      PIC 1(6) BIT.
       10 J      PIC 1(6) BIT.
       10 FILLER PIC 1(4) BIT.　…(4)

(1)〜(4)のFILLER項目は，次の規則に従って挿入される遊びビットである。

(1)数字項目の前

(2)用途がDISPLAYのブール項目の前

(3)集団項目の前

(4)レコードの最後

・表要素内の遊びビット

OCCURS句が指定されている集団項目に用途がBITのブール項目が属している場合も遊びビットが加えられる。すなわち，表要素の各繰り返しを集団項目と見て前項の遊びビットに関する規則を適用する。

表要素内の遊びビットの挿入例を次に示す。

（例）

   01 A.
     05 B.       OCCURS 2 TIMES
       10 C      PIC 1(7) BIT.
       10 FILLER PIC 1    BIT.…(1)
       10 D      PIC 9(5).
       10 E      PIC 1    BIT.
       10 FILLER PIC 1(7) BIT.…(2)

(1)と(2)のFILLER項目が，挿入される遊びビットである。

(1)数字項目の前

(2)集団項目の最後

・用途BITの表要素間の遊びビット

OCCURS句が，SYNCHRONIZED句指定なしの用途BITのブール項目に対して指定されている場合は，表要素の各繰り返しの間には遊びビットは挿入されない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.80　SYNCHRONIZED句」

5.4.7　USAGE句（ブール形式データを扱う機能）

ブール項目に書けるUSAGE句は，DISPLAYまたはBITだけである。

BIT指定は，ブール項目を表現するのにビットを使うことを指定する。ブール項目を定めるPICTURE句を持つ項目にBITと指定すると，内部ブール項目となる。

DISPLAY指定は，ブール項目を表現するのに標準データ形式の文字を使うことを指定する。ブール項目を定めるPICTURE句を持つ項目にDISPLAYと指定すると，外部ブール項目となる。

（例1）

（例2）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.86　USAGE句」

5.4.8　VALUE句（ブール形式データを扱う機能）

形式

書き方1

書き方2

機能

初期値を設定する（書き方1）。

条件名に対応する値を指定する（書き方2）。

一般規則

書き方1に関する規則

定数1はブール定数または表意定数ZERO，ZEROS，ZEROESでなければならない。

定数1がブール定数の場合，定数1の値は，標準けた寄せ規則に従って収められる。

（例）

なお，上例では用途の指定がないので，用途はDISPLAYとみなされ5バイトとなる。もし，用途をBITと指定すると5ビットとなるが，その場合には，上例のブール定数は3ビットの「1」を意味することになる。標準けた寄せ規則は用途BITの場合もDISPLAYの場合と同様に適用される。

書き方2に関する規則

ブール項目を条件変数とする条件名では，定数1はブール定数または表意定数ZERO，ZEROS，ZEROESでなければならない。

定数1 THRU 定数2 という書き方はできない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.88　VALUE句」

5.5　手続き部（ブール形式データを扱う機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

5.5.1　文に共通な規則（ブール形式データを扱う機能）

(1)　ブール式

(a)　ブール式の定義

ブール式とは，ブール値を表現するものであり，次のどれかである。

ブール項目を参照する一意名，ブール定数，ALLブール定数または表意定数ZERO（ブール要素と呼ぶ）。

ブール要素の前に単項ブール演算子NOTを付けたもの（符号付きブール要素と呼ぶ）。

ブール要素や符号付きブール要素を二項ブール演算子でつないだもの。

ブール式の前に単項ブール演算子NOTを付けたもの。

複数のブール式を二項ブール演算子でつないだもの。

ブール式を括弧で囲んだもの。

上記1〜6のブール式は次の規則に従う。

ブール式中の左括弧と右括弧と1対1に対応し左括弧に対応する右括弧は右側になければならない。

ブール式は，左括弧，ブール要素またはブール演算子NOTで始め，右括弧はブール要素で終わらなけばならない。

ブール式中に，ブール項目やブール定数が合わせて2個以上含まれるときには，それらはすべて同じ長さでなければならない。ただし，ALLブール定数は除く。

(b)　ブール演算子

ブール演算子は，単項ブール演算子と二項ブール演算子に分けられる。

単項ブール演算子

単項ブール演算子には，ブール否定を表すNOTがある。

二項ブール演算子

二項ブール演算子の種類と意味は次のとおりである。

二項ブール演算子

意味

AND

ブール積

OR

ブール和

EXOR

排他ブール和

ブール演算子は予約語であり，語の前後に空白を空けなければならない。

(c)　ブール式の計算順序

ブール式の各要素の計算順序は次の規則に従う。

2個のブール式がAND，ORまたはEXORだけでつながれているとき，または1個のブール式の直前にNOTがあるときは常にAND，OR，EXORまたはNOTはブール演算子である。

括弧を使ってブール式中の要素の評価順序を指定できる。括弧がある場合には，括弧内のブール式が最初に計算される。括弧が入れ子になっている場合には，最も内側の括弧から外側の括弧へと計算される。

括弧がない場合，または括弧で囲まれたブール式が包含関係で同じ水準にある場合，その計算は次の順位に従う。

1番目：否定（NOT）

2番目：積（AND）

3番目：和（ORとEXOR）

(2)　条件式

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.7.4　条件式（Conditional expressions）」

(a)　比較条件

比較条件では，ブール項目やブール定数を作用対象として比較をすることができる。ブール作用対象の比較は次の規則に従う。

一般規則

比較条件の右辺および左辺にはブール要素だけを書くことができる。

比較条件中にブール演算子が現れてはならない。

（備考）

比較条件中のAND，ORおよびNOTは論理演算子とみなされる。

ブール項目の用途は何でもよい。つまり，外部ブール項目，内部ブール項目のどちらであってもよい。

比較条件の左辺がブール作用対象なら，右辺もブール作用対象でなければならない。

比較演算子は次のどちらかでなければならない。

IS ［NOT］ EQUAL TO

IS ［NOT］ =

両辺の対応するブール文字位置のブール文字が，最左端から最右端に至るまですべて等しいとき，両辺は等しいものとみなされる。

両辺の長さは等しくなければならない。

(b)　条件名条件

条件名条件には，ブール項目に関連づけられた条件名を指定できる。

(c)　字類条件

作用対象の字類が，ブールであるかを調べることができる。

形式

一般規則

BOOLEAN指定

一意名1のデータ項目のブール検査をする。

・作用対象である一意名1のデータ項目の用途は，表示用（DISPLAY）のブール項目，英数字項目または集団項目でなければならない。

・検査の対象となる項目が，0または1のブール文字だけから成るときに限ってブール検査の結果は真となる。

5.5.2　ブール形式データが書ける文（ブール形式データを扱う機能）

(1)　ACCEPT文（ブール形式データを扱う機能）

一般規則

書き方1のACCEPT文（ハードウェア装置からデータを読み込んでデータ項目に入れる文）に書く一意名1のデータ項目がブールならば，その用途は表示用（DISPLAY）でなければならない。

書き方2のACCEPT文（仮想データ項目DATE，DAY，TIMEまたはDAY-OF-WEEKの値をデータ項目に入れる文）に書く一意名のデータ項目は，ブール項目であってはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.1　ACCEPT文」

(2)　COMPUTE文（ブール形式データを扱う機能）

形式

機能

ブール式の値をデータ項目に収める。

構文規則

等号「=」の前後には，一つ以上の空白を空ける。

一意名1は，ブール項目でなければならない。

一般規則

ブール式の値は，MOVE文の規則に従って，一意名1のデータ項目に転記される。一意名1のデータ項目を複数指定しているときは，それぞれの一意名1のデータ項目にブール式の値が転記される。

ブール式の書き方や計算順序については，「5.5.1　文に共通な規則（ブール形式データを扱う機能）」を参照のこと。ブール式の値をデータ項目に転記する例を次に示す。

（例）

       01 A PIC 1(3) VALUE B'111'.
       01 B PIC 1(3) VALUE B'101'.
       01 C PIC 1(3).
           :
           COMPUTE C = A AND B.

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.8　COMPUTE文」

(3)　DISPLAY文（ブール形式データを扱う機能）

一般規則

一意名1として外部ブール項目および内部ブール項目を指定できる。

外部ブール項目は，表示するときに変換しない。内部ブール項目は，表示するときに外部ブール形式に変換する。転送する項目のサイズは，どちらもPICTURE句で指定したサイズである。

ハードウェア装置へ転送するデータとしてブール定数を指定できる。定数指定のブール定数は，表示するときに変換しない。転送する項目のサイズは，定数の表すサイズである。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.12　DISPLAY文」

(4)　EVALUATE文（ブール形式データを扱う機能）

形式

構文規則

一意名1〜2はブール項目の名前であってもよい。定数1〜2はブール定数であってもよい。このとき，範囲式は指定できない。

条件1または条件2は，ブール項目やブール定数を用いた比較条件，ブール項目に関連づけられた条件名条件，ブール検査の字類条件およびそれらを用いた複合条件であってもよい。

選択主体や選択対象の中に，ブール演算子が現れてはならない。

一般規則

一意名，または定数は，比較条件の規則に従って比較される。

条件式は，その評価された真理値がTRUE，FALSE，または対応する条件式の真理値と比較される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.18　EVALUATE文」

(5)　INITIALIZE文（ブール形式データを扱う機能）

形式

一般規則

REPLACINGにBOOLEANを指定した場合，定数1はブール定数またはブール値を表す表意定数でなければならない。

一意名1にブール項目を指定できる。

REPLACINGを指定しない場合，一意名1のブール項目にはゼロが初期設定される。

REPLACINGを指定した場合，一意名1のブール項目は，一意名2または定数1の値で初期設定される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.24　INITIALIZE文」

(6)　INSPECT文（ブール形式データを扱う機能）

TALLYING指定の一意名2（計算用の整数項目）を除くすべての一意名に，用途がDISPLAYであるブール項目（ブール定数を除く）を指定できる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.25　INSPECT文」

(7)　MOVE文（ブール形式データを扱う機能）

(a)　項目間の転記の規則

受け取り側作用対象が英数字項目のときは，送り出し側作用対象はブール項目またはブール定数であってもよい。その場合，受け取り側作用対象の英数字項目は外部ブール項目とみなされる。

受け取り側作用対象が英数字編集項目のときは，送り出し側作用対象はブール項目であってはならない。

受け取り側作用対象がブール項目のときは，送り出し側作用対象はブール項目，ブール定数，0か1から成る英数字項目または表意定数のZEROでなければならない。送り出し側作用対象が英数字項目の場合，その英数字項目を外部ブール項目とみなして転記する。

このとき項目の転記は，標準的なけた寄せの規則に従って転記される。すなわち，最左端を合わせて収めた上で，送り出し側作用対象の項目が短いときは受け取り側作用対象の右端にブール文字0が補われる。送り出し側作用対象の項目が長いときは，右側の余った文字は切り捨てられる。

（例）

         05 A PIC 1(5).
         05 B PIC X(3).
         05 C PIC X(3).
             :
           MOVE B TO A.…(1)
           MOVE C TO A.…(2)

Bの内容：111

Cの内容：000

のとき，(1)と(2)のMOVE文を実行すると，ブール項目Aの内容は次のとおりになる。

(1)の場合11100

(2)の場合00000

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.28　MOVE文」

(8)　プログラム間連絡，利用者定義関数，メソッドのUSING指定と返却項目

呼び出し先プログラム，利用者定義関数，メソッドの手続き部見出し，ENTRY文，CALL文，INVOKE文のUSING指定の作用対象とRETURNING指定の返却項目にブール項目を書ける。ただし，引数が参照渡しまたは内容渡しの場合，呼び出し元と呼び出し先の双方でバイト境界に調整しておかなければならない。また，INVOKE文のRETURNINGに指定した返却項目もバイト境界に調整しておかなければならない。

6　浮動小数点形式データを扱う機能

この章では，浮動小数点形式データを扱う機能について説明する。

6.1　浮動小数点数字定数

COBOLの標準仕様では，数字定数には固定小数点数字定数しかない。このシステムでは，固定小数点数字定数に加えて，浮動小数点数字定数を扱うことができる。

（備考）

1984年 CODASYL COBOLには，外部浮動小数点数字項目と浮動小数点数字定数の仕様が入った。

浮動小数点数字定数を表す規則は次のとおりである。

仮数部E指数部の形式で表す。仮数部，指数部ともに，0〜9の数字，正号（+），負号（-）の文字が使用できる。小数点（.）は仮数部だけに使用できる。

仮数部は1けた以上16けたまでの数字を含む。指数部は1けた以上2けたまでの数字を含む。

仮数部，指数部ともに，符号文字を複数個書けない。符号を書くときは，仮数部の符号は仮数部の左端に，指数部の符号は指数部の左端におく。符号がない場合は正とみなされる。

仮数部には小数点が必ず一つ含まれていなければならない。小数点は，符号文字の左側以外であれば仮数部の任意の文字位置に書いてもよい。

浮動小数点数字定数の値は，指数部を10の肩にあげたものを仮数部に掛けることによって得られる。値の範囲は絶対値で，10⁻⁹⁹〜10⁹⁹，または0でなければならない。

浮動小数点数字定数の例を次に示す。

（例）

浮動小数点数字定数

値

1.2E03

.12E4

それぞれ1.2×10³と0.12×10⁴を表す。表現は異なるが値は同じである。

-13.E-2

-13.0×10⁻²を表す。

3.14E0

3.14×10⁰を表す。

1.2△E△3

誤り。間に空白があるので，1.2と3は固定小数点数字定数，Eは語とみなされる。

12E03

誤り。仮数部に小数点がないので，語の12E03とみなされる。

6.2　表意定数（浮動小数点形式データを扱う機能）

表意定数のZEROが浮動小数点形式の数字項目に転記，または比較されるとき，ZEROは浮動小数点形式データとしてのZEROを意味する。

6.3　データの表現形式（浮動小数点形式データを扱う機能）

数字項目に格納される数値の表現方法の一つに浮動小数点形式がある。

6.3.1　外部浮動小数点形式

PICTURE句で外部浮動小数点の数字と指定された項目は，外部浮動小数点形式で表現される。その項目の内容は，次の規則に従う。

外部浮動小数点形式の数字項目のUSAGEは，DISPLAYである。

数字を表す文字位置には0〜9の数字が現れなければならない。

符号を表す文字位置には「+」，「-」，または空白が現れなければならない。

小数点を表す文字位置には「.」が現れなければならない。

仮想部と指数部を区切る文字位置には「E」が現れなければならない。

（注意）

外部浮動小数点形式で表現された数字項目は，そのままでは計算機の機械語命令で演算の対象とすることはできない。このシステムは，外部浮動小数点形式をいったん内部浮動小数点形式などに変換する機械語命令を作り出す。このため実行効率が幾分悪くなるので，計算によく使われる項目は，内部浮動小数点形式のほうがよい。

6.3.2　内部浮動小数点形式

USAGE句でCOMPUTATIONAL-1，またはCOMPUTATIONAL-2と指定された項目は，内部浮動小数点形式で表現される。このとき，PICTURE句を指定してはならない。内部浮動小数点数字項目に割り当てられる記憶領域のサイズは，USAGE句の指定によって異なる。この関係を次に示す。

表6‒1　USAGE句の指定とバイト数

USAGE句の指定

項目が占めるバイト数

COMPUTATIONAL-1

4バイト

COMPUTATIONAL-2

8バイト

4バイトの内部浮動小数点数字項目を単精度内部浮動小数点数字項目，8バイトの内部浮動小数点数字項目を倍精度内部浮動小数点数字項目と呼ぶ。

浮動小数点数が表現できる値の範囲は，COMPUTATIONAL-1のときは，絶対値で約1.2×10⁻³⁸〜3.4×10⁺³⁸および0で，COMPUTATIONAL-2のときは，絶対値で約2.2×10⁻³⁰⁸〜1.8×10⁺³⁰⁸および0である。また，有効けた数は，単精度と倍精度では異なる。この関係を次に示す。

表6‒2　内部浮動小数点数の有効けた数

USAGE句の指定

有効けた数

COMPUTATIONAL-1

約7けた

COMPUTATIONAL-2

約16けた

（注意1）

内部浮動小数点形式は，数値を仮数部と指数部に分けて表現したものである。符号や小数点位置などの表現方法は，10進数値の場合とは異なる。ただし，利用者は，その内部表現形式を考慮する必要はなく，標準データ形式での浮動小数点数（+10.5×10⁶など）を使用する場合と同様に考えればよい。

（注意2）

一般に浮動小数点数は，数値を正確に表現したものではなく，概略の値を表現するもので誤差を含むことが多い。このため，正確な値が要求される事務計算には，浮動小数点数を使用しないほうがよい。浮動小数点数は，小数点位置を固定小数点では明示できない数や，FORTRANプログラムに受け渡す指数部を持った数（FORTRANでの実数）を取り扱う場合に限って使用するとよい。

（注意3）

マシンやOSの種別によって，浮動小数点の演算結果が異なる場合がある。これは，システムの内部浮動小数点演算の精度，および丸め制御の相違によるものである。丸め制御については，「6.8.1　文に共通な指定と規則（浮動小数点形式データを扱う機能）」の「(7)　浮動小数点の丸め制御」を参照。

6.4　算術符号（浮動小数点形式データを扱う機能）

数字項目が主記憶装置上で表現されるときには，算術符号（operational sign）を表すためのビット位置を持つ。

内部浮動小数点形式では，最左端の1ビットが算術符号を表現するのに用いられる。

外部浮動小数点形式では，仮数部の左側の1バイトに符号を表す文字の「+」か「-」かで算術符号が表現される。

6.5　標準けた寄せ規則（浮動小数点形式データを扱う機能）

項目の転記は標準けた寄せ規則に従う。

浮動小数点形式データには，数字項目の標準けた寄せ規則が適用される。

内部浮動小数点項目から固定小数点形式の数字項目（外部10進項目，内部10進項目，または2進項目）への転記で，固定小数点形式の数字項目のけた数が内部浮動小数点数の有効けた数より大きい場合，数字項目の標準けた寄せ規則に従い，小数点位置を合わせる。この小数点位置を合わせることによって，内部浮動小数点数が格納先のデータ型で表現できない場合は，格納先のデータ型で表現可能な数値へ丸められる。このため，固定小数点形式の数字項目には内部浮動小数点数の有効けたを超える下位のけたに誤差を含んだ値が転記され，演算や比較で使用すると期待する結果にならないことがある。この場合，受け取り側作用対象の固定小数点形式の数字項目に内部浮動小数点項目の有効けた数未満のけた数を指定すること。

小数点位置合わせによって，誤差を含んだ値が転記されるプログラム例を次に示す。このプログラムでは，18けたの固定小数点形式の数字項目に対し，内部浮動小数点数として表現できない値998765432100000000を表現可能な998765432100000128に丸めたあと，転記する。

（例）

  01 A  USAGE COMP-2    VALUE 9.987654321E+0.
  01 B  PIC 9(1)V9(9).
  01 C  PIC 9(1)V9(17).
         ：
  COMPUTE B = A.
  COMPUTE C = A.
         ：

（出力結果）

  B = +9987654321
  C = +998765432100000128

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.5.7　データ項目内でのデータのけた寄せ」

6.6　データの配置（浮動小数点形式データを扱う機能）

6.6.1　データ配置の方法

内部浮動小数点形式の数字項目が，記憶域に占めるバイト数は，USAGE句の指定で，COMPUTATIONAL-1のときは4バイト，COMPUTATIONAL-2のときは8バイトである。

外部浮動小数点形式の数字項目は，PICTURE句で指定したサイズを占める。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.54　PICTURE句」

6.6.2　語長の境界と効率

内部浮動小数点形式の数字項目は，それぞれ項目の語長の境界に位置づけられていると効率良く操作される。データ項目を語長の境界に位置づけるには二つの方法がある。

SYNCHRONIZED句を使う。

必要なデータ項目が語長境界に位置づけられるよう，あらかじめデータの構造を決めておく。

SYNCHRONIZED句を指定したときの項目の配置方法については標準仕様を参照のこと。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.80　SYNCHRONIZED句」

6.7　データ部（浮動小数点形式データを扱う機能）

ここではおのおのの句で，浮動小数点形式の数字項目に当てはまる規則について記述する。

6.7.1　PICTURE句（浮動小数点形式データを扱う機能）

内部浮動小数点形式の数字項目にはPICTURE句を指定してはならない。

外部浮動小数点形式の数字項目をPICTURE句で次のように指定する。

PICTURE文字列は，文字「+」，「-」，「9」，「.」，「V」および「E」の組み合わせから成り，次の形式でなければならない。

仮数部および指数部の前に文字「+」または「-」がなければならない。

仮数部の後に文字「E」がなければならない。

仮数部は，文字「9」および「.」または「V」の組み合わせから成る。少なくとも1個以上，16個以下の「9」を含まなければならない。仮数部の先頭，間，または終わりに，文字「.」または「V」のどちらか一方を書かなければならない。

指数部は，文字「9」を二つ書いたものから成る。

項目の値は，｛±｝仮数部×10｛±｝指数部である。値の範囲は，絶対値で単精度の場合1.2×10⁻³⁸〜3.4×10⁺³⁸，または0でなければならない。

PICTURE文字列の指定と項目の表す例を次に示す。

（例）

PICTURE文字列

項目の内容

実際の値

+.9999E+99

+.1234E+06

+0.1234×10⁶

-.1234E-02

-0.1234×10⁻²

+V9999E+99

+1234E+03

+0.1234×10³

-1234E+00

-0.1234×10⁰

-999.99E-99

△123.45E△02

+123.45×10²

-123.45E-04

-123.45×10⁻⁴

-999V99E-99

△12345E△08

+123.45×10⁸

-12345E△03

-123.45×10³

（備考）

一般にPICTURE文字列に「+」，「-」，または「.」を指定すると数字編集項目になるが，外部浮動小数点項目の場合，項類は数字であり計算に使用できる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.54　PICTURE句」

6.7.2　SYNCHRONIZED句（浮動小数点形式データを扱う機能）

SYNCHRONIZED句を指定したとき，計算機の記憶領域でのデータ項目の表現形式（USAGE句）によって項目の配置方法は異なる。内部浮動小数点形式の数字項目を配置するときの規則を次に示す。

USAGE句

配置される語長の境界

項目が占めるバイト数

COMPUTATIONAL-1

4バイト境界

4バイト

COMPUTATIONAL-2

8バイト境界

8バイト

（注意）

SYNCHRONIZED句を省略するときは，バイト境界になるように割り付けられる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.80　SYNCHRONIZED句」

6.7.3　USAGE句（浮動小数点形式データを扱う機能）

形式

機能

計算機の記憶領域内でのデータ項目の表現形式が浮動小数点形式であることを指定する。

構文規則

COMP-1，COMP-2はそれぞれ，COMPUTATIONAL-1，COMPUTATIONAL-2の同義語である。

一般規則

DISPLAY指定

数字項目を外部浮動小数点形式で表現するときには，USAGE句を省略するか，またはUSAGE IS DISPLAYを指定する。

COMPUTATIONAL-1／COMPUTATIONAL-2指定

内部浮動小数点形式の数字項目であることを指定する。

（a）COMPUTATIONAL-1のときは4バイトに，COMPUTATIONAL-2のときは8バイトにそれぞれ収められる。

（b）内部浮動小数点形式のときは，PICTURE句を指定してはならない。

（例）

03 A USAGE COMP-1.

03 B USAGE COMP-2.

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.86　USAGE句」

6.7.4　VALUE句（浮動小数点形式データを扱う機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.88　VALUE句」

(1)　内部浮動小数点形式の初期値

VALUE句で内部浮動小数点形式の数字項目に初期値を設定する場合，次の規則に従う。

定数は，浮動小数点数字定数，または表意定数のZEROでなければならない。

定数の値は，項目が取り得る値の範囲内になければならず，ゼロでない数字の切り捨てを引き起こしてはならない。

（例）

03 A USAGE COMP-1 VALUE 1.2E03.

03 B USAGE COMP-2 VALUE ZERO.

(2)　外部浮動小数点形式の初期値

外部浮動小数点形式の数字項目には，初期値設定用のVALUE句を指定できない。

(3)　条件名

形式

一般規則

条件名を定義するVALUE句は，内部および外部浮動小数点形式のどちらにも指定できる。

浮動小数点項目を条件変数とする条件名では，定数は浮動小数点定数か表意定数のZEROでなければならない。

6.8　手続き部（浮動小数点形式データを扱う機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

6.8.1　文に共通な指定と規則（浮動小数点形式データを扱う機能）

(1)　算術式

算術式で，数字項目が書けるところならば，どこにでも浮動小数点項目や浮動小数点数字定数を指定できる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.7.1　算術式（Arithmetic expressions）」

(2)　条件式

(a)　比較条件

比較条件に浮動小数点形式データを指定できる。その比較方法は，一般の数字項目の場合に準ずる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.7.4　条件式（Conditional expressions）」

作用対象の組み合わせの可否および比較方法を「表6‒3　作用対象の組み合わせによる比較方法」に示す。

(b)　条件名条件

条件名条件に内部，または外部浮動小数点項目に関連づけられた条件名を指定できる。

(c)　字類条件

字類条件には，浮動小数点項目を指定できない。

表6‒3　作用対象の組み合わせによる比較方法

左辺（右辺）

右辺（左辺）

外部浮動

小数点項目

内部浮動

小数点項目

集団項目

A

A

英字項目

△

×

英数字項目

△

×

英数字編集項目

△

×

数字編集項目

△

×

表意定数（ZERO除く）

△

×

表意定数（ZERO）

N

N

英数字定数

△

×

数字定数

N

N

外部10進項目

N

N

内部10進項目

N

N

2進項目

N

N

外部浮動小数点項目

N

N

内部浮動小数点項目

N

N

（凡例）

A：文字作用対象として比較

N：数字作用対象として比較

△：書いてもよいが一般に互換性がないので使用しない方がよい。

　　比較する場合は，文字作用対象として比較する。

×：組み合わせが不可能

注

指標データ項目，ブール項目，オブジェクト参照データ項目，強く型付けされた集団項目との比較はできない。

(3)　ROUNDED指定

算術文で結果を受け入れる項目が，内部，または外部浮動小数点数字項目のときには，その項目に対してROUNDED指定を書いてはならない。

(4)　ON SIZE ERROR／NOT ON SIZE ERROR指定

除算およびべき乗を含まない算術文で結果を受け入れる項目が，内部，または外部浮動小数点数字項目のときは，ON SIZE ERROR指定やNOT ON SIZE ERROR指定を書いてはならない。

(5)　演算の中間結果についての注意事項

浮動小数点項目や浮動小数点数字定数が算術演算の対象に指定されている場合は，浮動小数点演算が行われる。この場合には中間結果のデータ項目は適用されない。ただし，浮動小数点項目を作用対象に持つ算術演算で浮動小数点項目が受け取りデータ項目としてだけ指定された場合，算術演算は浮動小数点演算とはならない。

演算の中間結果についてはマニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」を参照のこと。

(6)　けたあふれ条件についての注意事項

(a)　算術文の結果の絶対値が無限大（Infinity）の場合

関連する結果のデータ項目が浮動小数点項目以外のとき，けたあふれ条件が発生する。

(b)　算術文の結果の絶対値が非数（Not-a-Number）の場合

けたあふれ条件は発生しない。

(7)　浮動小数点の丸め制御

浮動小数点数が固定小数点項目で表現できない場合，固定小数点項目で表現可能な数値へ丸められる。丸めをする際の方法（丸めモード）を次の表に示す。例えば，固定小数点項目で表現できない元の浮動小数点数をbとし，固定小数点項目で表現可能な数のうちbの上下で最も近い数をaとc（a，b，cの値はa < b < c の関係にある）とすると，各丸めモードで丸めた結果は次の表のようになる。

表6‒4　丸めモード

丸めモード

丸め処理をした結果

最近値

aとcのうちbに近い方。中間なら偶数の方（結果の最下位が必ず偶数になる）。

切り捨て（0方向）

aとcの絶対値が小さい方。

注記：a < b < c，aとcは連続した表現可能な数，bは表現できない数

COBOLではアーキテクチャで最適な演算命令を使用していて，この命令の丸めモードがシステムによって異なる。このため，システムによって切り捨てまたは最近値の丸めモードに従った動作となり，結果として丸められた値が異なる場合がある。浮動小数点数4.5E0および5.5E0を小数部がない浮動小数点形式以外の数字項目に代入した結果を次の表に示す。

表6‒5　丸めモードにより結果が異なる例

浮動小数点数

丸められた結果

最近値

切り捨て（0方向）

4.5E0

4

4

5.5E0

6

5

なお，システムによって，内部浮動小数点形式データ自体の精度，および丸め制御は異なる（COBOLの仕様ではなく，ハードウェアの浮動小数点形式の演算方法や表現形式の違いによるもの）。このため，丸めモードを合わせたとしても，浮動小数点形式を使用した演算，および転記結果は完全に一致するものではない。

(8)　演算結果や転記結果についての注意事項

無限大（+INF，-INF），非数（NaN），および受け取り側作用対象が格納できる範囲を超える浮動小数点数の値については，演算および転記結果は保証しない。

6.8.2　浮動小数点形式データが書ける文

(1)　ACCEPT文（浮動小数点形式データを扱う機能）

特定の装置からデータを受け取る場合および日付，または時間をシステムから受け取る場合，ACCEPT文の作用対象に浮動小数点形式の数字項目が書ける。

ただし，特定の装置からデータを受け取る場合の作用対象は内部浮動小数点形式の数字項目であってはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.1　ACCEPT文」

(2)　ADD文（浮動小数点形式データを扱う機能）

ADD文の作用対象に，浮動小数点形式の数字項目，または浮動小数点数字定数が書ける。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.2　ADD文」

(3)　CALL文（浮動小数点形式データを扱う機能）

CALL文で指定するUSINGの作用対象に浮動小数点形式の数字項目が書ける。ただし，内部浮動小数点項目の場合は，呼び出し元プログラムと呼び出し先プログラムの双方でそれぞれの項目を語長の境界に調整しておかなければならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.4　CALL文」

(4)　COMPUTE文（浮動小数点形式データを扱う機能）

算術演算のCOMPUTE文の作用対象に，浮動小数点形式の数字項目，または浮動小数点数字定数が書ける。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.8　COMPUTE文」

(5)　DISPLAY文（浮動小数点形式データを扱う機能）

DISPLAY文の作用対象に，浮動小数点形式の数字項目，または浮動小数点数字定数が書ける。

内部浮動小数点形式の数字項目は，表示するときに，外部浮動小数点形式の数字項目に変換される。

表示するデータの項目のサイズは次のとおりである。

COMP-1のとき

PICTURE句で-.9(8)E-99と指定した場合と同じサイズ。

すなわち，仮数部が8けた，指数部が2けたである。

COMP-2のとき

PICTURE句で-.9(17)E-99と指定した場合と同じサイズ。

すなわち，仮数部が17けた，指数部が2けたである。

指数部が2けたをオーバしたときは，指数部を3けた表示する。

絶対値が無限大（Infinity）の場合は次のように表示する。

値が非数（Not-a-Number）の場合は次のように表示する。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.12　DISPLAY文」

(6)　DIVIDE文（浮動小数点形式データを扱う機能）

DIVIDE文の作用対象に，浮動小数点形式の数字項目，または浮動小数点数字定数が書ける。

ただし，REMAINDER指定がある文の作用対象に浮動小数点形式の数字項目は書けない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.13　DIVIDE文」

(7)　EVALUATE文（浮動小数点形式データを扱う機能）

EVALUATE文の作用対象に，浮動小数点形式の数字項目，または浮動小数点数字定数が書ける。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.18　EVALUATE文」

(8)　INITIALIZE文（浮動小数点形式データを扱う機能）

INITIALIZE文の作用対象に，浮動小数点形式の数字項目，または浮動小数点数字定数が書ける。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.24　INITIALIZE文」

(9)　INVOKE文（浮動小数点形式データを扱う機能）

INVOKE文で指定するUSINGの作用対象とRETURNINGの返却項目に浮動小数点形式の数字項目が書ける。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.26　INVOKE文」

(10)　MOVE文（浮動小数点形式データを扱う機能）

MOVE文で，浮動小数点項目，または浮動小数点数字定数を用いた場合の可能な組み合わせを「表6‒6　浮動小数点項目，または浮動小数点数字定数を用いた場合の可能な組み合わせ」に示す。なお，項目間の転記の規則は，標準仕様編のMOVE文に記述してある数字項目の規則に従う。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.28　MOVE文」

「COBOL2002　言語　標準仕様編」　「表10‒9　MOVE文の種類の妥当性」

表6‒6　浮動小数点項目，または浮動小数点数字定数を用いた場合の可能な組み合わせ

送り出し側作用対象

受け取り側作用対象

浮動小数点項目

または浮動小数点数字定数

集団項目

数字編集項目※2

数字項目（固定小数点形式の数字項目）※2

数字項目（浮動小数点項目）

集団項目

数字項目（固定小数点形式の数字項目）

数字項目（浮動小数点項目）

英数字項目※1

数字編集項目

表意定数ZERO

数字項目（固定小数点）

数字項目（浮動小数点）

数字定数（固定小数点）

数字定数（浮動小数点）

浮動小数点項目

注※1

送り出し側作用対象を符号なし外部10進項目とみなして転記する。この組み合わせは一般に互換性がないので使用しない方がよい。

注※2

システムによる丸め制御の相違によって，浮動小数点の転記の結果が異なる場合がある。丸め制御については，「6.8.1　文に共通な指定と規則（浮動小数点形式データを扱う機能）」の「(7)　浮動小数点の丸め制御」を参照のこと。

注

受け取り側作用対象が浮動小数点項目のとき，送り出し側作用対象に，0〜9の数字だけから成る英数字定数や，ALL定数は指定できない。

(11)　MULTIPLY文（浮動小数点形式データを扱う機能）

MULTIPLY文の作用対象に，浮動小数点形式の数字項目，または浮動小数点数字定数が書ける。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.29　MULTIPLY文」

(12)　PERFORM文（浮動小数点形式データを扱う機能）

VARYING指定のPERFORM文に，浮動小数点形式の数字項目，または浮動小数点数字定数が書ける。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.31　PERFORM文」

(13)　SUBTRACT文（浮動小数点形式データを扱う機能）

SUBTRACT文の作用対象に，浮動小数点形式の数字項目，または浮動小数点数字定数が書ける。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.48　SUBTRACT文」

(14)　SEARCH文（浮動小数点形式データを扱う機能）

SEARCH文の作用対象に，浮動小数点形式の数字項目，または浮動小数点数字定数が書ける。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.41　SEARCH文」

(15)　手続き部見出し

呼び出し先プログラムや利用者定義関数やメソッドの手続き部見出しで指定するUSINGの作用対象とRETURNINGの返却項目に浮動小数点形式の数字項目が書ける。

7　報告書作成機能の拡張

この章では，報告書作成機能の拡張機能について説明する。

7.1　報告書作成機能のVOS3 COBOL85からの移行用オプション（-CompatiV3）

ここでは，VOS3 COBOL85からの移行用オプション（-CompatiV3）で，報告書作成機能を使用することによる相違点だけを記述する。-CompatiV3オプションの有無に関係なく，共通な一般形式については「COBOL2002　言語　標準仕様編」　「13.1　報告書作成機能とは」を参照のこと。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「13.1　報告書作成機能とは」

7.1.1　特殊レジスタ（報告書作成機能の拡張）

報告書作成機能によって生成される特殊レジスタはプログラム，利用者定義関数，ファクトリ定義，インスタンス定義ごとに報告書記述項に対して生成される。また，報告書作成機能によって生成される特殊レジスタは大域属性を持つ静的データである。

(1)　PAGE-COUNTER特殊レジスタ

PAGE-COUNTERは，報告書記述項にPAGE LIMIT句の指定がある報告書ごとに作られる特殊レジスタで，報告書作成機能が報告書のページを数えるのに用いる。

PAGE-COUNTERは，3バイトの符号なし内部10進形式の数字項目で，1〜9999の範囲を表せる。そのけたの数は，PAGE-COUNTERをSOURCE句の源データ項目に持つ基本項目のPICTURE句によって決まる。一つの報告書にPAGE-COUNTERを源データ項目に持つ基本項目が複数個あるときには，それらのPICTURE句が表す数字のけた数は同じでなければならない。

PAGE-COUNTERは，報告書節および手続き部で参照してもよい。

(2)　LINE-COUNTER特殊レジスタ

LINE-COUNTERは，報告書記述項にPAGE LIMIT句の指定がある報告書ごとに作られる特殊レジスタで，報告書作成機能が印刷行の表示位置や行送りの数を決めたりページ中の行番号を保持したりするときに用いる。

LINE-COUNTERは，3バイトの符号なし内部10進形式の数字項目で，1〜9999の範囲を表せる。そのけた数は，LINE-COUNTERをSOURCE句の源データ項目に持つ基本項目のPICTURE句によって決まる。

LINE-COUNTERは，報告書節および手続き部で参照してもよい。手続き部の文でLINE-COUNTERの内部を変更した場合，報告書作成機能が管理しているページの体裁がどうなるかは保証しない。

7.1.2　環境部（報告書作成機能の拡張）

(1)　特殊名段落

形式

機能

一つのファイルに複数個の報告書を収めるときに，各報告書の行を識別するための定数を指定する。

一般規則

定数は，一つのファイルに複数個の報告書を収めるときに，各報告書の行を識別するためのものであり，識別名を呼び名で指定する。

・定数は，長さ1文字の英数字定数を書く。ただし，-UniObjGenオプション指定時は，UTF-8で多バイトとなる文字を使用できない。

・定数で英字「E」を指定したときには，PICTURE句で「E」，すなわち浮動小数点数を指定してはならない。

・値の等しい定数を2回以上指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.　環境部（ENVIRONMENT DIVISION）」

7.1.3　データ部（報告書作成機能の拡張）

形式

構文規則

ファイル節の構成は，一般のファイルと同じである。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.　データ部（DATA DIVISION）」

(1)　ファイル記述項

形式

構文規則

REPORT句を指定したとき，LINAGE句は指定できない。

REPORT句を指定したとき，データ記述項を指定してもよい。

一般規則

DATA RECORD句

REPORT句を指定したファイル記述項にDATA RECORD句を指定すると，すなわち，このファイル記述項の後にレコード記述を続けて書くと，一つのファイルに報告書作成機能が作成するレコードと利用者が書き出すレコードの両方を含めることができる。このとき，利用者自身がレコードを書き出すときには，AFTER ADVANCINGを指定したWRITE文を使用しなければならない。

RECORD句（「固定長」形式および「固定長あるいは可変長」形式）

印刷行の行送りを制御するための制御用文字の1バイトと，CODE句を指定したときには印刷行を識別するための文字の1バイトを，データレコードのサイズに含める。RECORD句を省略すると，コンパイラはレコードのサイズとして133バイトを仮定する。

可変長レコードでは，各印刷行のサイズはRECORD句で指定したレコード長の最大値であり，空白行のサイズは10バイトである。固定長レコードでは，各印刷行および空白行のサイズがRECORD句で指定したレコード長の最大値となる。

(2)　REPORT句（報告書作成機能の拡張）

一般規則

報告書名

同じ報告書名を最大二つのREPORT句で指定できる。すなわち，一つの報告書を最大二つのファイルに収められる。

(3)　報告書記述項

形式

構文規則

報告書記述項にはGLOBAL句は指定できない。

(4)　CODE句（報告書作成機能の拡張）

形式

一般規則

呼び名

一つのファイルに複数個の報告書を収めるときに，各報告書の行を識別するための文字と関連づける。

（a）呼び名は，環境部の特殊名段落で長さ1文字の英数字定数に関係づけた名前でなければならない。

(5)　CONTROL句（報告書作成機能の拡張）

形式

一般規則

データ名は，添字付けできる。

このシステムでは，CONTROL HEADING FINALやCONTROL FOOTING FINALの報告集団を指定するときでもCONTROL句でFINALを書く必要はない。

(6)　PAGE LIMIT句（報告書作成機能の拡張）

形式

一般規則

報告書作成とPAGE LIMIT句

・PAGE LIMIT句を指定しないとき

・報告書作成機能は，この報告書に対してPAGE-COUNTERとLINE-COUNTERの特殊レジスタを作成しない。

・すべての報告集団に相対行番号を指定しなければならない。

・この報告書にページ頭書き報告集団が定義されると，最初のGENERATE文によって表示される報告書頭書き報告集団の後に1回だけ表示される。また，ページ脚書き報告集団が定義されると，TERMINATE文によって表示される報告書脚書き報告集団の前に1回だけ表示される。

各整数は符号のない1以上の整数で4けた以下でなければならない。

(7)　報告集団記述項

形式

書き方1

書き方2

書き方3

書き方4

報告集団の完全な記述は，次のとおりである。

構文規則

RESET句を指定するときには，SUM句を指定しなければならない。

一般規則

データ名

書き方1のデータ名には，報告集団名を指定する。その他の書き方のデータ名には，報告書の項目名を指定する。データ名は次の場合以外は，指定する必要はない。指定があってもこのデータ名を環境部，データ部および手続き部で参照できない。

・GENERATE文で参照する明細報告集団の名前。

・SUM句のUPONで参照する明細報告集団の名前。

・USE BEFORE REPORTING文で参照する明細以外の報告集団の名前。

・報告書節のSOURCE句，SUM句または手続きの文で参照する合計カウンタの名前。

・制御脚書き報告集団中の合計カウンタの修飾語として参照する報告集団の名前。

報告集団記述項の書き方と各句の関連は次のとおりである。

・書き方1の場合

・報告集団の型をTYPE句で指定する。

・書き方2の場合

・報告集団が複数個の行から成り，各行が複数個の項目を含むとき，この集団項目記述項のLINE NUMBER句で従属する基本項目の行番号を指定する。

・この集団項目記述項でLINE NUMBER句を指定しないで従属する記述項に合計カウンタがないときは，覚え書きとみなす。

・書き方3の場合

・印刷行中の印刷表示しなければならない項目を指定するのに用いる。この場合には，COLUMN NUMBER句とPICTURE句を指定しなければならない。さらに，SOURCE句，VALUE句のうちどれか一つを指定しなければならない。

・明細報告集団中の基本項目で，その報告集団を印刷表示するときに合計値を求める必要がある基本項目を指定するのに用いる。この場合COLUMN NUMBER句とPICTURE句とSOURCE句を指定する。合計項目は印刷表示しない項目であってもよい。

印刷表示しない項目のときは，COLUMN NUMBER句，PICTURE句とを指定しない。

・制御脚書き報告集団中の基本項目で合計カウンタであることを指定するのに用いる。この場合，SUM句とPICTURE句を指定しなければならない。

・書き方4の場合

報告集団が一つの基本項目から成る「書き方3の場合」のどれかの項目であることを指定する。

(8)　LINE NUMBER句（報告書作成機能の拡張）

形式

構文規則

絶対行番号および相対行番号指定は，すべての報告集団の最初のLINE NUMBER句で指定できる。

NEXT PAGE指定は，報告書の本文と報告書脚書き報告集団の最初のLINE NUMBER句で指定できる。

一般規則

報告集団との関連

各型の報告集団に対してLINE NUMBER句の機能と規則を次の表に示す。

整数1，整数2

符号のない1以上の整数でなければならない。また，4けた以下でなければならない。

表7‒1　報告集団の型とLINE NUMBER句の関連（-CompatiV3）

報告集団

絶対行番号

（整数1）指定

相対行番号（整数2）指定

NEXT PAGE指定

報告書頭書き報告集団

報告集団の最初の行に指定できる。

報告集団の最初の行に指定できる。

相対行番号を指定すると，PAGE句のHEADING整数2を基準に数えた相対行番号に最初の行を印刷する。

指定できない。

ページ頭書き報告集団

報告集団の最初の行に指定できる。

報告集団の最初の行に指定できる。

相対行番号を指定すると，表示しようとするページに，すでに報告書頭書き報告集団が表示されていれば，LINE-COUNTERの値と相対行番号との和で示される行番号に最初の行を印刷する。その他の場合には，PAGE句のHEADING整数2を基準に数えた相対行番号に最初の行を印刷する。

指定できない。

報告書の本文（制御頭書き，明細，制御脚書き報告集団）

報告書最初の行に指定できる。

LINE-COUNTERの値がLINE句の整数1より小さいと，報告集団行の最初の行を現在のページの整数1の行に印刷表示する。LINE-COUNTERの値が，LINE句の整数1の値に等しいか大きいと，ページを送って報告集団最初の行を新しいページの整数1の行に印刷表示する。

報告集団の最初の行に指定できる。

現在のページにすでに報告書の本文を印刷表示してあるときには，LINE-COUNTERの値にLINE句の整数2の値を加えた行に報告集団の最初の行を印刷する。ただし，このページに報告集団全体を印刷表示できないときはページを送って報告書の最初の行を新しいページのPAGE句のFIRST DETAIL整数3の行に印刷表示する。

現在のページにまだ報告書の本文を印刷表示してないときには，報告集団の最初の行を現在のページのPAGE句のFIRST DETAIL整数3の行に印刷する。ただし，LINE-COUNTERの値がPAGE句のFIRST DETAIL整数3の値に等しいか大きいと，報告集団の最初の行を現在のページのLINE-COUNTERの値に1を加えた行に印刷表示する。

このページに報告集団全体を印刷できないときは，ページを送って報告集団の最初の行を新しいページのPAGE句のFIRST DETAIL整数3の行に印刷表示する。LINE-COUNTERの値がPAGE句のFIRST DETAIL整数3の値に等しいか大きくなるのは，直前に印刷した報告書の本文のNEXT GROUP句で絶対行番号を指定した場合，またはPAGE句のFIRST DETAILで1を指定した場合である。

指定できる。

ページを送って報告集団の最初の行をPAGE句のFIRST DETAIL整数3の行に印刷表示する。ただし，LINE-COUNTERの値がFIRST DETAIL整数3の値に等しいか大きいと，報告集団の最初の行をLINE-COUNTERの値に1を加えた行に印刷表示する。このページに報告集団を印刷できないときは，ページを送って報告集団の最初の行を新しいページのPAGE句のFIRST DETAIL整数3の行に印刷表示する。

LINE-COUNTERの値がPAGE句のFIRST DETAIL整数3の値に等しいか大きくなるのは，直前に印刷表示した報告書の本文のNEXT GROUP句で絶対行番号を指定した場合である。

ページ脚書き報告集団

報告書の最初の行に指定できる。

報告集団の最初の行に指定できる。

相対番号を指定すると，PAGE句のFOOTING 整数5に1を加えた相対行番号に最初の行を印刷表示する。

指定できない。

報告書脚書き報告集団

報告書の最初の行に指定できる。

報告集団の最初の行に指定できる。

相対番号を指定すると，LINE-COUNTERの値かまたはPAGE句のFOOTING 整数5の値のどちらか大きい方を基準として数えた相対行番号に報告集団の最初の行を印刷表示する。LINE-COUNTERの値がPAGE句のFOOTING 数整5の値よりも大きくなるのは，ページ脚書き報告集団をこのページに印刷した場合である。

NEXT PAGE指定を書くと，報告書脚書き報告集団だけで単独のページを構成する。

新しいページのPAGE句のHEADING整数2の行に印刷表示する。

(9)　NEXT GROUP句（報告書作成機能の拡張）

構文規則

LINE NUMBER句の指定がなくても，NEXT GROUP句の指定はできる。

一般規則

報告集団との関連

ページ頭書き報告集団，ページ脚書き報告集団または報告書脚書き報告集団にはNEXT GROUP句を指定してはならない。

整数は4けた以下でなければならない。

(10)　RESET句（報告書作成機能の拡張）

ここでは，RESET句とSUM句は独立した句として扱う。

形式

構文規則

RESET句は制御脚書き報告集団中でだけ指定でき，SUM句と対にして用いなければならない。

一般規則

データ名1

データ名1で指定した制御用データ項目の制御の切れ目で合計カウンタをゼロに戻す。

・データ名1は，この報告書のCONTROL句で指定したデータ名（制御用データ項目の名前）でなければならない。

・データ名1は，このRESET句を指定した制御脚書き報告集団に関する制御用データ項目よりも，より上位のレベルの制御用データ項目の名前でなければならない。

(11)　SOURCE句（報告書作成機能の拡張）

一般規則

一意名

一意名の代わりに特殊レジスタのTALLY，PAGE-COUNTER，LINE-COUNTERを書いてもよい。

(12)　SUM句（報告書作成機能の拡張）

形式

構文規則

SUM句は，制御脚書き報告集団中の基本項目にだけ指定できる。

SUM句を書いた記述項には，PICTURE句を指定しなければならない。PICTURE句で編集用の文字を指定してもよいし，BLANK WHEN ZERO句などの編集用の句を指定してもよい。これらの編集は合計カウンタを印刷表示するときにだけする。これ以外の場合は，合計カウンタはいつも数字項目を表す。

合計カウンタのサイズは，合計値を求める項目（一意名）の整数部分のけた落ちが生じないよう十分大きくしなければならない。また，関連するデータ項目のけた数+2とする（英数字項目，または英数字編集項目のときは，2となる。数字項目のときは，けた数+2または18けたのどちらか小さい方となる）。

SUM句を印刷項目の記述項に書くと，その合計カウンタが源データ項目となり，報告書作成機能は，この合計カウンタの値を表示するために，MOVE文の規則に従って，印刷項目に転記する。

一般規則

一意名1

合計値を求めるデータ項目の名前を指定する。

・一意名は，ファイル節，作業場所節，局所場所節，連絡節の数字項目の名前で，かつ源データ項目か，または同じ報告書節の合計カウンタの名前でなければならない。

・UPON指定を省略し，かつSUM句中の一意名が合計カウンタである場合には，その一意名はこのSUM句を含んでいる同じ制御脚書き報告集団か，同じ報告書中のこれより低いレベルの制御脚書き報告集団の，どれかで定義されていなければならない。

・UPON指定したときには，一意名は合計カウンタの名前であってはならない。

・一意名は部分参照できない。

UPON指定

UPON指定を書くと，明細集計を選択的にするときに指定する。一つの合計カウンタに対して合計値を求める項目（SOURCE句で源データ項目指定）を複数の明細報告集団中に指定したとき，特定の明細報告集団の処理中にだけ合計値を求める場合には，UPONのデータ名1で，その特定の明細報告集団の名前を指定する。

データ名1は次の規則に従う。

・データ名1は，明細報告集団の名前でなければならない。

・データ名1は，報告書名で修飾してもよい。

報告書作成機能とSUM句

・SUM句の指定があると報告書作成機能は仮想データ項目である合計カウンタを作成する。この合計カウンタは数字項目であり，実行時にこの合計カウンタに一意名1の値を加算する。この加算はADD文の規則による。

・GENERATE文またはTERMINATE文の実行中に報告書作成機能は，一意名1の値を合計カウンタに加算する。合計カウンタへの加算の時点は一意名1の特性で異なり，明細集計（subtotaling），横の集計（crossfooting）および縦の集計（rolling counters forward）の三つの場合がある。

（i）一意名1がより低いレベルの制御脚書き報告集団の合計カウンタであるとき，合計カウンタとその一意名1との加算を縦の集計と呼ぶ。これは，制御の切れ目によって，低いレベルの制御脚書き報告集団が処理されるときにされる。

（ii）一意名1が合計カウンタの名前でこのSUM句を書いた制御脚書き報告集団中で定義してあるときは横を集計する。

横の集計は，制御の切れ目が起きたとき，この制御脚書き報告集団の処理中にする。横の集計は，合計カウンタの値を制御脚書き報告集団中で記述した順序（上から下へ，左から右への順序）に従って加算する。すなわち，制御脚書き報告集団の最初の合計カウンタに対して，すべての加算がされ，次に制御脚書き報告集団の2番目の合計カウンタに対して，すべての加算がされる。この手続きは，すべての横の集計が終わるまで繰り返される。

（iii）一意名1が合計カウンタでないとき，合計カウンタとその一意名1との加算を，明細集計と呼ぶ。

SUM句中にUPON指定を書くと，その一意名1は，指定された明細報告集団に対するGENERATE文が実行されるたびに加算される。ただし，一意名1がこの明細報告集団中のSOURCE句の源データ項目でないときには，合計カウンタへの加算はされない。

SUM句中にUPON指定を書かなければその一意名1は，SUM句が書かれた報告書に対するデータ名を指定したすべてのGENERATE文が実行されるたびに加算される。

(13)　TYPE句（報告書作成機能の拡張）

一般規則

PAGE HEADING指定

この報告集団がページ頭書き報告集団であることを指定する。

・一つの報告書には，ページ頭書き報告集団は一つしか指定できない。

・報告書作成機能は，ページ頭書き報告集団を各ページの先頭に1回ずつ印刷表示する。ただし，次の場合は例外である。

（例外1）

報告書頭書き報告集団または報告書脚書き報告集団がそれだけで1ページを構成する場合には，そのページにページ頭書き報告集団を印刷表示しない。

（例外2）

報告書頭書き報告集団がそれだけで1ページを構成しない場合には，ページ頭書き報告集団を報告書頭書き報告集団に続く2番目の報告集団として印刷表示する。

（例外3）

PAGE LIMIT句を指定しないとき，最初のGENERATE文によって印刷表示される報告書頭書き報告集団の後に1回だけ印刷表示される。

・ページ頭書き報告集団のSOURCE句は，源データ項目の現在値を用いる。

DETAIL指定

この報告集団が明細報告集団であることを指定する。

・一つの報告書には，複数個の明細報告集団を指定してもよい。

・明細報告集団の印刷表示は，利用者が手続き部のGENERATE文で指定する。

・明細報告集団中のSOURCE句は，源データ項目の現在値を用いる。

CONTROL FOOTING指定

この報告集団が制御脚書き報告集団であることを指定する。

・一つの報告書には，制御脚書き報告集団は，各制御用データ項目およびFINALに対してそれぞれ一つずつしか指定できない。

・報告書作成機能は，制御脚書き報告集団を制御用データ項目に対応する制御集団の最後に1回ずつ印刷表示する。FINALを指定するとTERMINATE文の実行時に総制御脚書き報告集団を総制御集団の最後に1回だけ印刷表示する。

・GENERATE文の実行中に制御の切れ目が起こると1番低いレベルの制御脚書き報告集団から始めて，制御の切れ目を起こしたレベルの制御脚書き報告集団までをすべてこの順に印刷表示する。

TERMINATE文を実行すると，すべての制御脚書き報告集団を次に示す順序で印刷表示する。

・小制御脚書き

・中制御脚書き

　　:

・総制御脚書き（報告書中で1回だけ）

・制御脚書き報告集団中のSOURCE句は，源データ項目の現在値を用いる。ただし，源データ項目が制御用データ項目の場合は変化する前の値（その制御集団の最後の明細報告集団に属する値）を用いる。総制御脚書き報告集団の場合は，TERMINATE文実行時に源データ項目の値を用いる。

PAGE FOOTING指定

この報告集団がページ脚書き報告集団であることを指定する。

・一つの報告書には，ページ脚書き報告集団は一つしか指定できない。

・報告書作成機能は，ページ脚書き報告集団を各ページの最後に1回ずつ印刷表示する。ただし，次の場合は例外である。

（例外1）

報告書頭書き報告集団または報告書脚書き報告集団がそれだけで1ページを構成する場合には，そのページにページ脚書き報告集団を印刷表示しない。

（例外2）

報告書脚書き報告集団がそれだけで1ページを構成しない場合には，そのページでは，ページ脚書き報告集団を報告書脚書き報告集団に先行する報告集団として印刷する。

（例外3）

PAGE LIMIT句を指定しないとき，TERMINATE文によって印刷表示される報告書脚書き報告集団の前に1回だけ印刷表示される。

・ページ脚書き報告集団のSOURCE句は，源データ項目の現在値を用いる。

REPORT FOOTING指定

この報告集団が報告書脚書き報告集団であることを指定する。

・一つの報告書には，報告書脚書き報告集団は一つしか指定できない。

・報告書に対してGENERATE文が少なくとも1回実行されていれば，報告書作成機能は，TERMINATE文の実行中に，報告書脚書き報告集団を報告書の最後に1回だけ印刷表示する。

・報告書脚書き報告集団中のSOURCE句は，TERMINATE文実行時の源データ項目の値を用いる。

報告集団の制御用データ項目の参照値

制御用データ項目を参照したときの値は，次による。

なお，報告書作成機能が制御の切れ目の検出に使った制御用データ項目の保存された値を，古い値という。

・制御脚書き報告集団の制御の切れ目の処理中に，SOURCE句で制御用データ項目を参照すると，古い値が使われる。

・TERMINATE文が実行されたとき，報告書作成機能は，最も高いレベルの制御の切れ目が検出されたとみなす。そして，制御脚書き報告集団中のSOURCE句で制御用データ項目を参照すると，古い値が使われる。ただし，総制御脚書き報告集団の場合は，TERMINATE文実行時の源データ項目の値を用いる。

・制御脚書き報告集団のUSE手続きで制御用データ項目を参照すると，古い値が使われる。

・報告集団でデータ項目を参照すると上記以外は，すべてその報告集団が処理されるときにそのデータ項目に含まれている現在の値が使われる。

制御脚書き報告集団の処理手順

（処理手順1）

合計カウンタの横を集計する。すなわち，この報告集団中で定義された合計カウンタであって，同じ報告集団中のSUM句の作用対象でもある合計カウンタをすべて，SUM句の主体である合計カウンタに加える。

（処理手順2）

合計カウンタの縦を集計する。すなわち，この報告集団中で定義された合計カウンタであって，これよりもレベルの高い制御脚書き報告集団中のSUM句の作用対象でもあるものをすべて，そのレベルの高い制御脚書き報告集団中の合計カウンタに加える。

（処理手順3）

報告集団のデータ名を参照しているUSE BEFORE REPORTING手続きがあれば，USE手続きを実行する。

（処理手順4）

SUPPRESS文が実行されたか，または報告集団が印刷用でなければ，次に処理手順6を処理する。

（処理手順5）

SUPPRESS文が実行されないで，報告集団が印刷用であれば，印刷行を作成し，報告集団の表示規則に従って，報告集団を表示する。

（処理手順6）

制御階層中のこのレベルを処理するときに，必要によって合計カウンタにゼロを設定する。

明細報告集団の処理手順

明細報告集団は，利用者がGENERATE文でその処理時点を指定する。明細以外の報告集団は，報告書作成機能が自動的に処理する。

報告書名を指定したGENERATE文に対応して行う明細に関する処理は，処理手順1による。

（処理手順1）

合計カウンタの明細集計をする。

（処理手順2）

SUPPRESS文が実行されたか，または報告集団が印刷用でなければ，報告集団に対する処理を終了する。

（処理手順3）

明細報告集団の処理が報告書名を指定したGENERATE文による場合，報告集団に対する処理を終了する。

処理手順2でも処理手順3でもなければ，印刷行を作成し，報告集団の表示規則に従って，報告集団を表示する。

(14)　VALUE句（報告書作成機能の拡張）

構文規則

記号文字を指定してはならない。

7.1.4　手続き部（報告書作成機能の拡張）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

(1)　GENERATE文（報告書作成機能の拡張）

一般規則

報告書名を指定すると，報告書作成機能は必要なすべての操作を自動的にするが，明細報告集団の指定数に関係なく明細報告集団の書き出しだけはしない。

(2)　SUPPRESS文（報告書作成機能の拡張）

一般規則

特定の報告集団のUSE手続き中でSUPPRESS文を実行すると，その報告集団の印刷表示をしない。つまり，MOVE 1 TO PRINT-SWITCH文を実行したときと同じである。USE手続き以外の手続き中でSUPPRESS文を実行した場合，印刷表示の抑止は保証しない。

自分自身，または自分の上位プログラムに報告書節がないときは，SUPPRESS文は使用できない。

(3)　USE文（報告書作成機能の拡張）

報告書作成機能に関するUSE文には，報告書作成手続きを指定するUSE BEFORE REPORTING文がある。

(a)　USE BEFORE REPORTING文

形式

一般規則

一意名

一意名は，報告書節の明細報告集団以外の報告集団の名前でなければならない。

USE手続きでの報告書作成機能

制御脚書き報告集団のUSE手続きで制御用データ項目を参照すると，変化する前の値を用いる。制御用データ項目以外のデータ項目を参照すると，項目の現在値を用いる。

7.2　報告書作成機能のHITAC8000シリーズからの移行用オプション（-Cblctr）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「13.1　報告書作成機能とは」

7.2.1　CBL-CTR特殊レジスタ（報告書作成機能の拡張）

CBL-CTR特殊レジスタは，手続き部とCOBOLの報告書作成機能との間の連絡に使用するために，COBOLが内部的に作成するデータ名であり，次の二つの機能がある。

(1)　報告書作成機能から利用者への報告書の状態の通知

この機能は宣言節のUSE BEFORE REPORTING文（以下USE文と略記する）を指定した節中で指定しなければならない。報告書作成機能は制御の切れ目（control break）を起こしたレベルを表す調整をCBL-CTRに設定する。利用者は，USE手続きの中でCBL-CTRの内容を参照でき，その内容によって適当な処置を取ることができる。例えば，USE文の制御頭書き処理でCBL-CTRの内容が0ならば，最初のGENERATE文が実行され，最初の制御の切れ目（FINAL）の処理がされている。また，USE文の制御脚書き処理でCBL-CTRの内容が0でないならば，その内容は，報告書作成中に制御の切れ目を起こした制御のレベルを示す整数である。すなわち，その整数がnならば，CONTROL句に書いたFINALを除く，第n番目の制御用データ項目に対応する制御の切れ目が起きていることを示している。

USE文のページ頭書きまたはページ脚書き処理でCBL-CTRの値を参照すると，制御の切れ目が生じた場合の改ページであれば，そのレベルの値（CBL-CTR = 1〜254の整数）が入っていて，制御の切れ目なしに改ページが起きた場合はCBL-CTR = 255が入っている。この機能を用いると，利用者はページ頭書きまたはページ脚書きの処理中にCBL-CTRを参照し，制御の切れ目が生じた場合，その制御情報を次のページまで続行するかどうかの処理を自由に選択できる。また，制御の切れ目が生じている間はページ頭書きまたはページ脚書きの出力を抑止できる。

(2)　利用者から報告書作成機能への報告書形式の指定

この機能は，原始プログラムの手続き部の中で報告書のINITIATE文実行後から最初のGENERATE文を実行する前までに，MOVE文で整数1，2または3のどれかをCBL-CTRに設定すると使用できる。

(a)　MOVE 1 TO CBL-CTR

CBL-CTRに1を設定しない場合，制御脚書きでSOURCE句によって制御用データ項目を参照すると，制御の切れ目処理では制御の切れ目によって変更された新しい値が入っている。すなわち，制御用データ項目の値が変わることによって制御の切れ目が生じ，その時点では制御用データ項目の内容は元の値ではなく新しい値が入っている。

ところが，CBL-CTRに1を設定すると，制御の切れ目が生じても，制御脚書きの制御用データ項目には元の値が入る。このためUSE BEFORE REPORTING節中，またはSOURCE句で制御用データ項目を参照すると，制御用データ項目には制御の切れ目を起こした新しい値ではなく，元の値が入っている。

(b)　MOVE 2 TO CBL-CTR

CBL-CTRに2を設定しない場合，あるレベル制御の切れ目が起きると，制御の切れ目が起きたレベルの制御脚書きを印刷する前に，それより低いレベルの制御用データ項目を持った制御脚書きを印刷する際に，指定されているNEXT GROUP句をすべて実行する。

ところが，CBL-CTRに2を設定すると，印刷する制御脚書きのうち最もレベルの高い制御脚書きのNEXT GROUP句だけを有効とし，レベルの低いものに関しては制御脚書きの印刷だけをして，NEXT GROUP句を無視する。

(c)　MOVE 3 TO CBL-CTR

CBL-CTRに1と2を設定した場合の両方の処理をすることを指定する。

CBL-CTR特殊レジスタの機能一覧を次に示す。

表7‒2　CBL-CTR特殊レジスタの機能一覧

使用

値

NEXT GROUP句

SOURCE句

設定

CBL-CTRに値を設定しない

すべて有効

CF：新しい値

CH：新しい値

USE手続き：新しい値

CBL-CTR=1

すべて有効

CF：元の値

CH：新しい値

USE手続き：制御脚書きのときだけ元の値

CBL-CTR=2

制御の切れ目を生じたCFに対するNEXT GROUP句だけ有効

CF：新しい値

CH：新しい値

USE手続き：新しい値

CBL-CTR=3

制御の切れ目を生じたCFに対するNEXT GROUP句だけ有効

CF：元の値

CH：新しい値

USE手続き：制御脚書きのときだけ元の値

参照

CBL-CTR=0〜n

制御の切れ目のレベルを示す。

−

（凡例）

−：該当しない

8　データコミュニケーション機能

データコミュニケーション機能は，種々の端末またはコンピュータシステムとメッセージの受け渡しをする機能である。

この章では，データコミュニケーション機能の形式と機能概略について説明する。

この機能に関する-OpenTP1オプションは，Windows COBOL2002で使用できる。

8.1　データコミュニケーション機能とは

データコミュニケーション機能は，オンラインコントロールプログラムを経由して，端末，ファイル，またはほかのプログラムとメッセージの受け渡しをする機能である。ただし，このシステムでは，OpenTP1を対象とする。また，各構文の厳密な意味についてはオンラインコントロールプログラム側で規定しており，この章では，このシステムで行う構文解析についてだけを記述する。

各構文の厳密な意味については，マニュアル「OpenTP1 プログラム作成リファレンス COBOL言語編」を参照のこと。

8.2　データ部（データコミュニケーション機能）

形式

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.1.1　一般形式」

8.2.1　通信記述項（CD）（データコミュニケーション機能）

COBOLプログラムでは，通信記述項が，通信節の最高のレベルを表す。通信節の見出しの次にレベル指示語のCD，通信記述項および一連の独立した句から成る通信記述項を書く。

形式

機能

通信記述項は，オンラインコントロールプログラムとCOBOLプログラムの間の論理的な連絡領域を定める。

構文規則

通信記述項の最初にレベル指示語CDを書き，その後に通信記述名1を書かなければならない。

通信記述名1の後に書く句の順序は任意とする。

通信記述中のFOR句で，次の組み合わせを行ってはならない。

・INPUTとCOMMAND

・INPUTとPROGRAM

・INPUTとJOURNAL

・I-OとJOURNAL

DETAIL MODE句のデータ名は，8個を超えてはならない。

通信節は，最外側プログラムまたは利用者定義関数だけに指定できる。

ACTIVE句およびWAITING TIME句は，二つ以上同時に指定してはならない。

一般規則

通信記述項は，通信記述名1をオンラインコントロールプログラムとの連絡領域に関連づける。

通信記述名1の後に書く各句の意味は，オンラインコントロールプログラム側で定める。

FOR句のINPUT，OUTPUT，またはI-Oに続く指定を省略した場合，メッセージの受信またはメッセージの送信を行う指定となる。

8.3　手続き部（データコミュニケーション機能）

データコミュニケーション機能の手続き部に書く各文の意味は，オンラインコントロールプログラムが定めるため，このマニュアルでは，各文の形式と構文規則についてだけ記述する。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

8.3.1　COMMIT文（データコミュニケーション機能）

形式

構文規則

COMMIT文は，通信記述項のないプログラムに書いてもよい。また，特定の通信記述名には関連しない。

8.3.2　DISABLE文（データコミュニケーション機能）

形式

構文規則

通信記述名1には，DISABLE文に対応する通信記述項の通信記述名を指定する。

通信記述名1で参照する通信記述項は，OUTPUT，INPUT FILE，OUTPUT FILE，I-O FILE，I-O STORAGE，またはI-Oの指定がなければならない。

一意名１には，次のデータ名は指定できない。

・指標データ項目

・アドレスデータ項目

・ブール項目

・オブジェクト参照データ項目

・オブジェクトプロパティ

・関数一意名

一意名1は部分参照してはならない。

8.3.3　ENABLE文（データコミュニケーション機能）

形式

構文規則

通信記述名1には，ENABLE文に対応する通信記述項の通信記述名を指定する。

通信記述名1で参照する通信記述項は，OUTPUT，I-O STORAGE，INPUT FILE，I-O FILE，OUTPUT FILE，またはI-Oの指定がなければならない。

一意名１には，次のデータ名は指定できない。

・指標データ項目

・アドレスデータ項目

・ブール項目

・オブジェクト参照データ項目

・オブジェクトプロパティ

・関数一意名

一意名1は部分参照してはならない。

8.3.4　RECEIVE文（データコミュニケーション機能）

形式

構文規則

通信記述名1には，RECEIVE文に対応する通信記述項の通信記述名を指定する。

通信記述名1で参照する通信記述項は，I-O PROGRAM，INPUT，I-O，INPUT FILE，I-O FILE，INPUT STORAGEまたはI-O STORAGEの指定がなければならない。

一意名1には，次のデータ名は指定できない。

・指標データ項目

・アドレスデータ項目

・ブール項目

・オブジェクト参照データ項目

・オブジェクトプロパティ

・関数一意名

一意名1は部分参照してはならない。

8.3.5　ROLLBACK文（データコミュニケーション機能）

形式

構文規則

ROLLBACK文は，通信記述項のないプログラムに書いてもよい。また，特定の通信記述名には関連しない。

8.3.6　SEND文（データコミュニケーション機能）

形式

構文規則

通信記述名1には，SEND文に対応する通信記述項の通信記述名を指定する。

通信記述名1で参照する通信記述項は，I-O PROGRAM，OUTPUT，I-O，OUTPUT FILE，I-O FILE，OUTPUT COMMAND，I-O COMMAND，OUTPUT STORAGE，I-O STORAGE，OUTPUT PROGRAMまたはOUTPUT JOURNALの指定がなければならない。

一意名1，一意名2，一意名3および一意名4には，次のデータ名は指定できない。

・指標データ項目

・アドレスデータ項目

・ブール項目

・オブジェクト参照データ項目

・オブジェクトプロパティ

・関数一意名

一意名1，一意名2および一意名3は部分参照してはならない。

9　データベースアクセス機能

この章では，データベースアクセス機能について説明する。

この機能は，Windows COBOL2002，Linux COBOL2002で使用できる。

9.1　概説（データベースアクセス機能）

データベースアクセス機能は，リレーショナルデータベース管理システム（RDBMS）やそれ以外のデータベース管理システム（DBMS）上のデータにデータアクセス用の標準言語である構造化照会言語（SQL）を使ってアクセスする機能である。

SQLをCOBOLプログラムに記述したプログラムをSQL埋め込みCOBOLプログラムといい，プログラム中にSQLの文を埋め込むために埋め込みSQL文を用いる。

ただし，接続するデータベースによって，使用できる機能に制限を持つことがある。

アクセスするデータベースがCOBOL言語用プリコンパイラを用意している場合は，ODBCインタフェース機能と比べ，使用できる構文が多いため，プリコンパイラの使用を推奨する。

AIX COBOL2002でデータベースにアクセスする場合は，アクセスするデータベースが用意しているCOBOL言語用プリコンパイラを使用のこと。

9.2　埋め込みSQL文（データベースアクセス機能）

形式

機能

COBOLプログラム中にSQL文を記述する。

構文規則

COPY文によって展開する原文中，COPY文中およびREPLACE文中にEXEC，SQLおよびEND-EXECを指定してはならない。

埋め込みSQL文は，REPLACE文の対象とはならない。

埋め込みSQL文でCOBOLプログラムに埋め込むことができるSQLの文を次に示す。

表9‒1　埋め込みSQL文でCOBOLプログラムに埋め込むことができるSQLの文

種類

分類

SQL文

概要

宣言系

埋め込みSQL宣言節

BEGIN DECLARE SECTION

埋め込みSQL開始宣言。

END DECLARE SECTION

埋め込みSQL終了宣言。

埋め込み例外宣言

WHENEVER

埋め込み例外宣言。

カーソル

DECLARE CURSOR

カーソル宣言。

制御系

コネクション

CONNECT

コネクションを確立する。

DISCONNECT

コネクションを解除する。

SET CONNECTION

現行コネクションを変更する。

トランザクション

COMMIT

コミットでトランザクションを終了させる。

ROLLBACK

ロールバックでトランザクションを終了させる。

操作系

静的

SELECT

表の指定された行から値を取り出す。

INSERT

表中に新しい行を作成する。

DELETE

表から行を削除する。

UPDATE

表の行を更新する。

カーソル

OPEN

カーソルを開く。

FETCH

カーソルを表の次の行に位置づけ，その行を取り出す。

CLOSE

カーソルを閉じる。

ストアドプロシージャ

CALL

ストアドプロシージャを呼び出す。

動的

EXECUTE IMMEDIATE

動的SQLを準備し，実行する。

PREPARE

動的SQLを準備する。

DEALLOCATE PREPARE

準備した動的SQLを解放する。

EXECUTE

動的SQLを実行する。

埋め込みSQL開始宣言は，埋め込みSQL宣言節の始まりを表し，埋め込みSQL終了宣言は，埋め込みSQL宣言節の終わりを表す。埋め込みSQL宣言節については「9.4　データ部（埋め込みSQL宣言節）（データベースアクセス機能）」を参照のこと。

埋め込みSQL開始宣言および埋め込みSQL終了宣言以外の埋め込みSQL文は，手続き部の文が書けるところにならばどこにでも書ける。手続き部に書けるSQL文については，「9.6　手続き部（宣言系）（データベースアクセス機能）」，「9.7　手続き部（制御系）（データベースアクセス機能）」および「9.8　手続き部（操作系）（データベースアクセス機能）」を参照のこと。

語 EXEC，SQLおよびEND-EXECの前後は空白で区切られていなければならない。ただし，END-EXECとそれに接続する分離符の終止符との間には空白はなくてもよい。

9.3　SQLの概要（データベースアクセス機能）

埋め込みSQL文でCOBOLプログラムに埋め込むことができるSQLについて説明する。

SQLは，COBOLの言語仕様とは異なる 独自の言語仕様を持っている。ただし，動的に準備し，実行するSQL文については接続するデータベースの規定に従う。

埋め込みSQL文によるデータベースアクセスの方法は，SQLをCOBOLプログラム中に埋め込み実行する方法（静的な方法）と，実行時に埋め込みSQLの埋め込み変数に設定して実行する方法（動的な方法）がある。

また，埋め込みSQL文のSELECT文は，表から1行分の値を取り出す文（SELECT文：単一行）であり，複数行の値を取り出すにはカーソルを使用する。カーソルには静的な方法と動的な方法による書き方がある。

その他にストアドプロシージャを呼び出し，一連の手続きを行う方法もある。

9.3.1　概念（データベースアクセス機能）

(1)　データベース

データベース（database）は，DBMSにあるすべてのデータの集まりとする。また，DBMSによっては，ストアドプロシージャと呼ぶ一連の手続きをDBMS上に存在させることができる。

(2)　表

表（table）は，行（row）と列（column）で表されるデータの集まりとする。

また，表には次のような形態がある。

表9‒2　表の形態

形態

説明

実表（base table）

表定義によって定義される名前付きの表

導出表（derived table）

問い合わせ指定の評価によって，一つ以上の表から直接または間接に導出される表

ビュー表（viewed table）

ビュー定義によって定義される名前付きの導出表

グループ表（grouped table）

GROUP BY句の評価中に導出されるグループの集合

グループビュー（grouped view）

グループ表から導出されるビュー表

(3)　結果

結果（result）は，問い合わせ式，問い合わせ指定および SELECT文によって導出される表のデータとする。

導出される表のデータは，空であってもよい。

(4)　ナル値

ナル値（null value）は，データが存在しない未定の値のこととする。

9.3.2　全般規則（データベースアクセス機能）

SQLの規則とCOBOL言語の規則の異なる部分について説明する。

文字集合で次に示す特殊文字は使用できない。

引用符（"），通貨記号（¥），セミコロン（;），アンパサンド（&）

識別子

識別子は，利用者定義語の規則に従い定義する。また，DBMSによって規定される場合もある。

識別子には，次に示す種類がある。

識別子

内容

認可識別子

表名およびプロシージャ名を修飾するDBMSで規定された名前とする。認可識別子が暗であっても陽であっても，二つの表名が等しいということは，それらの表名と認可識別子は同じであることとする。

表名

表名とは，表に付けられた名前とする。

列名

列名とは，表の列に付けられた名前とする。

相関名

相関名とは，SELECT文，副問い合わせ指定，または問い合わせ指定で使用され，その指定された FROM句の有効範囲で表名の別名として付けられた名前とする。

カーソル名

カーソル名とは，カーソルの名前とする。

プロシージャ名

プロシージャ名とは，ストアドプロシージャに付けられた名前とする。

SQL文名

動的に準備するSQL文に付けられた名前とする。

コネクション名

確立されたコネクションに付けられた名前とする。

表名およびプロシージャ名は，次の形式で修飾できる。

識別子を構成する文字は，31字を超えてはならない。

予約語は，COBOLの予約語に加え次に示す語が，SQLでは予約語とする。

斜体の語は，COBOLの予約語である。

頭文字

予約語

A

ALL，AND，ANY，AS，ASC，AUTHORIZATION，AVG，ABSOLUTE，ADA，ADD，ALLOCATE，ALTER，ARE，ASSERTION，AT

B

BEGIN，BETWEEN，BY，BIGINT，BINARY，BIT，BIT_LENGTH

C

CHAR，CHARACTER，CHECK，CLOSE，COBOL，COMMIT，CONTINUE，COUNT，CREATE，CURRENT，CURSOR，CALL，CASCADE，CASCADED，CASE，CAST，CATALOG，CHAR_LENGTH，CHARACTER_LENGTH，COALESCE，COLLATE，COLLATION，COLUMN，CONNECT，CONNECTION，CONSTRAINT，CONSTRAINTS，CONVERT，CORRESPONDING，CURRENT_DATE，CURRENT_TIME，CURRENT_TIMESTAMP

D

DEC，DECIMAL，DECLARE，DEFAULT，DELETE，DESC，DISTINCT，DOUBLE，DATA，DATA_TYPE，DATE，DAY，DEALLOCATE，DEFERRABLE，DEFERRED，DESCRIBE，DESCRIPTOR，DIAGNOSTICS，DICTIONARY，DISCONNECT，DISPLACEMENT，DOMAIN，DROP

E

END，ESCAPE，EXEC，EXISTS，ELSE，END-EXEC，EXCEPT，EXCEPTION，EXECUTE，EXTERNAL，EXTRACT

F

FETCH，FLOAT，FOR，FOREIGN，FORTRAN，FOUND，FROM，FALSE，FIRST，FULL

G

GO，GOTO，GRANT，GROUP，GET，GLOBAL

H

HAVING，HOLDLOCK，HOUR

I

IN，INDICATOR，INSERT，INT，INTEGER，INTO，IS，IDENTIFIED，IDENTITY，IGNORE，IMMEDIATE，INCLUDE，INDEX，INITIALLY，INNER，INPUT，INSENSITIVE，INTERSECT，INTERVAL，ISOLATION

J

JOIN

K

KEY

L

LANGUAGE，LIKE，LAST，LEFT，LENGTH，LEVEL，LOCAL，LONG，LOWER

M

MAX，MIN，MODULE，MATCH，MINUTE，MONTH，MUMPS

N

NATIONAL，NCHAR，NOT，NULL，NUMERIC，NAME，NAMES，NEXT，NONE，NULLABLE，NULLIF

O

OF，ON，OPEN，OPTION，OR，ORDER，OCTET_LENGTH，OFF，ONLY，OUTER，OUTPUT，OVERLAPS

P

PASCAL，PLI，PRECISION，PRIMARY，PRIVILEGES，PROCEDURE，PUBLIC，PAPAMTER_TYPE，PARTIAL，PERFORM，POSITION，PREPARE，PRESERVE，PRIOR

R

REAL，REFERENCES，ROLLBACK，RESTRICT，REVOKE，RIGHT，ROWS

S

SCHEMA，SECTION，SELECT，SET，SMALLINT，SOME，SQL，SQLCODE，SQLERROR，SUM，SCALE，SCROLL，SECOND，SEQUENCE，SIZE，SQLCA，SQLSTATE，SQLWARNING，STOP，SUBSTRING，SYSTEM

T

TABLE，TO，TEMPORARY，THEN，TIME，TIMESTAMP，TIMEZONE_HOUR，TIMEZONE_MINUTE，TINYINT，TRANSACTION，TRANSLATE，TRANSLATION，TRUE，TYPE

U

UNION，UNIQUE，UPDATE，USER，UNKNOWN，UNSIGNED，UPPER，USAGE，USING

V

VALUES，VIEW，VALUE，VARBINARY，VARCHAR，VARYING

W

WHENEVER，WHERE，WITH，WORK，WHEN

Y

YEAR

定数は，英数字定数，数字定数および浮動小数点数字定数とする。

（a） 英数字定数の長さは，1〜160字とする。

（b） 連結式を書くことはできない。

（c） 数字定数のけた数は，1〜18けたとする。

（d） 仮数のけた数は，1〜16けた，指数のけた数は，1〜2けたとする。

注意事項

SQLの英数字定数はアポストロフィ（'）でしか囲むことができないため，アポストロフィ（'）を英数字定数に含むときはアポストロフィ（'）を2回続けなければならない。

（例）

A'B'Cという5文字の英数字定数は次のように指定する。

'A''B''C'

行内注記

行内注記は，注釈導入子で始まり，行の最後の文字で終わる。注釈導入子とは，分離符の空白に続く二つ以上の連続するハイフン（-）の並びとする。

この行内注記は，SQL文中の分離符の空白が許される個所であればどこに現われてもよい。

分離符の句読文字のコンマ（,）は，構文で規定された個所以外に用いることはできない。

（a） 非区切りトークンの後ろにハイフン（-）および注釈導入子を続けてはならない。また，ハイフンの後ろに非区切りトークンを続けてはならない。

算術演算子では，二項演算子のべき乗（**）を使用できない。

比較演算子を次に示す。

比較演算子

意味

=

等しい

<>

等しくない

<

より小さい

>

より大きい

<=

より小さいか，または等しい

>=

より大きいか，または等しい

浮動指示子

COBOLの場合と同様に，埋め込みSQL文中に次に示す浮動指示子を使用できる。ただし，-SQL,ODBC,NoContオプションを指定した場合には，定数継続指示子は無効にし，定数の右閉じアポストロフィとハイフンとして処理する。

指示子

意味

*>

注記指示子

>>

翻訳指令指示子

'-

定数継続指示子（ "- は指示子にならない）

>>D

デバッグ指示子

修飾

修飾語と被修飾語をピリオド（.）で連結して修飾する場合，被修飾語が次の形式のときは，直前のピリオド（.）との間に空白を置かなければならない。

[ 数字 ] E [ - ] 数字 [ - [ 利用者定義語構成文字 ] ] または 数字 - 利用者定義語構成文字

なお，修飾の形式については，表名およびプロシージャ名は「2. 識別子」，埋め込み変数は「9.4.2　埋め込み変数（データベースアクセス機能）」，列名は「9.5.2　列指定（データベースアクセス機能）」をそれぞれ参照のこと。

9.4　データ部（埋め込みSQL宣言節）（データベースアクセス機能）

データ部では，SQLCODE変数，埋め込み変数および標識変数を定義するデータ記述項を埋め込みSQL宣言節に記述する。

形式

機能

手続き部で使用するSQLCODE変数，埋め込み変数および標識変数を定義する。

構文規則

埋め込みSQL宣言節は，埋め込みSQL開始宣言で始まり，埋め込みSQL終了宣言で終わる。

埋め込みSQL宣言節は，ファイル節，作業場所節，局所場所節および連絡節に指定できる。

埋め込みSQL宣言節は，データ部の異なる節にわたってはならない。すなわち，一つの節中で完結していなければならない。

埋め込みSQL開始宣言は，01または77レベルの直前でなければならない。

埋め込みSQL終了宣言は，77レベルの直後またはレコード記述の最後の基本項目の直後でなければならない。

SQLCODE変数定義，埋め込み変数定義および標識変数定義は，指定したファイル節，作業場所節，局所場所節，または連絡節で有効なデータ記述項でなければならない。

一般規則

埋め込みSQL宣言節に記述するデータ項目には，次に示す項目を記述してもよいが，特に指定がないかぎり手続き部の埋め込みSQL文では使用できない。

REDEFINES句を指定した再定義項目

OCCURS句を指定した表要素

集団項目

外部浮動小数点数字項目

数字編集項目

英数字編集項目

日本語編集項目

外部ブール項目

内部ブール項目

英字項目

指標データ項目

指標名

アドレスデータ項目

アドレス名

66レベルの再命名定義

78レベルの定数名

88レベルの条件名

FILLER項目

VARIANTデータ項目

OLEオブジェクト参照データ項目

オブジェクト参照データ項目

［SIGN IS］ LEADING SEPARATE CHARACTERの指定がない外部10進形式の数字項目

日本語項目

9.4.1　SQLCODE変数（データベースアクセス機能）

機能

埋め込みSQL文の実行が正常に終了したかどうかを示す状態コードが設定される。

構文規則

SQLCODE変数は，レベル番号が01か，または77でデータ名がSQLCODEの9けたの符号付き2進形式でなければならない。

（例）

一般規則

SQLCODE変数には，宣言系でない埋め込みSQL文の実行結果によって次の値が設定される。

SQLCODE変数に設定される値

意味

0

実行は成功した。

100

該当行が存在しない。

負数（<0）

実行は失敗し，エラーメッセージを出力した。

上記以外

実行は成功したが警告メッセージを出力した。

9.4.2　埋め込み変数（データベースアクセス機能）

機能

手続き部の埋め込みSQL文中に指定する変数によってデータベースに値を渡す，またはデータベースから値を取得する。

構文規則

埋め込み変数定義に指定できるデータ記述項は次のどれかでなければならない。ただし，集団項目は下位項目のデータ構造が次のどれかでなければならない。

データ項目

条件

英数字項目

なし

数字項目

外部10進形式

[SIGN IS] LEADING SEPARATE CHARACTERの指定があること

2進形式

項目が占めるバイト数が 1バイト，2バイトおよび 4バイトであり，小数点指定がないこと

内部浮動小数点形式（4バイト）

なし

内部浮動小数点形式（8バイト）

なし

集団項目

可変長型形式

L2 xxxx　PIC S9(9) USAGE COMP.
L2 xxxx　PIC X(n).

ビット型形式

L2 xxxx　PIC 1(7)  USAGE BIT.
FILLER　PIC 1(1)  USAGE BIT.

日付型形式

L2 xxxx　PIC S9(4)  USAGE COMP.
L2 xxxx　PIC  9(4)  USAGE COMP.
L2 xxxx　PIC  9(4)  USAGE COMP.

時刻型形式

L2 xxxx　PIC  9(4)  USAGE COMP.
L2 xxxx　PIC  9(4)  USAGE COMP.
L2 xxxx　PIC  9(4)  USAGE COMP.

日付／時刻型形式

L2 xxxx　PIC S9(4)  USAGE COMP.
L2 xxxx　PIC  9(4)  USAGE COMP.
L2 xxxx　PIC  9(4)  USAGE COMP.
L2 xxxx　PIC  9(4)  USAGE COMP.
L2 xxxx　PIC  9(4)  USAGE COMP.
L2 xxxx　PIC  9(4)  USAGE COMP.
L2 xxxx　PIC  9(9)  USAGE COMP.

（凡例）

L2：下位項目のレベル番号

xxxx：任意のデータ名

n：データ長

このシステムでは，COBOLの規則に従っていれば，ほかの句を指定してもよい。

注1　JUSTIFIED句の機能はSQL文では無効となる。

注2　BLANK WHEN ZERO句を指定した項目は，SQL文に指定できない。

注3　OCCURS句を指定してもよいが，表要素はSQL文に指定できない。

一般規則

埋め込み変数は，指定する埋め込みSQL文で対応する列，式，またはパラメタのデータ型に対し，有効な埋め込み変数の型でなければならない。

埋め込み変数の型とデータ項目の対応を次に示す。

埋め込み変数の型

データ項目

-SQL,ODBC

オプション指定

文字列型

固定長形式

英数字項目

○

可変長形式

集団項目　可変長型形式

○

数値型

数字項目　外部10進形式

○

集団項目　数値型形式

×

整数型

符号付き1バイト2進形式

1バイト英数字項目

○

数字項目　2進形式

（1バイト，符号付き）

○

符号なし1バイト2進形式

数字項目　2進形式

（1バイト，符号なし）

○

符号付き2バイト2進形式

数字項目　2進形式

（2バイト，符号付き）

○

符号なし2バイト2進形式

数字項目　2進形式

（2バイト，符号なし）

○

符号付き4バイト2進形式

数字項目　2進形式

（4バイト，符号付き）

○

符号なし4バイト2進形式

数字項目　2進形式

（4バイト，符号なし）

○

符号付き8バイト2進形式

20バイトの英数字項目

○

符号なし8バイト2進形式

20バイトの英数字項目

○

浮動

小数点型

単精度形式

数字項目　内部浮動小数点形式

（4バイト）

○

倍精度形式

数字項目　内部浮動小数点形式

（8バイト）

○

バイナリデータ型

固定長形式

英数字項目

○

可変長形式

集団項目　可変長型形式

○

可変長形式

集団項目　バイナリデータ型形式

×

ビット列型

集団項目　ビット型形式

○

日時型

日付形式

集団項目　日付型形式

○

時刻形式

集団項目　時刻型形式

○

日付／時刻形式

集団項目　日付／時刻型形式

○

集団項目　Signメンバ付日付時間型形式

×

（凡例）

　　　○：使用できる

　　　×：使用できない

埋め込み変数を手続き部の埋め込みSQL文に指定する場合，次の形式で指定する。

: [ データ名1 . ] … データ名2

このデータ名を添字付けおよび部分参照してはならない。ただし，修飾はピリオド（.）でデータ名1を連結することでデータ名2を修飾できる。例えば，:AAA.BBBと記述した場合，COBOLの言語規則の BBB OF AAAと表されたとみなされる。

9.4.3　標識変数（データベースアクセス機能）

機能

対応する埋め込み変数の値がナル値かどうかを示す。

構文規則

標識変数定義は，4バイトの符号付き 2進形式でなければならない。

（例）次のように定義する。

同じ名前の埋め込み変数，標識変数を複数回定義してもよい。

プログラムが入れ子構造になっている場合，埋め込みSQL文中の埋め込み変数，標識変数の参照は，COBOLとして有効な参照でなければならない。

一般規則

INSERT文またはUPDATE文の実行によって，挿入値または更新値にナル値を指定したい場合は，標識変数に-1を設定する。これによって，指定された値はナル値とみなされる。

SELECTまたはFETCH文の実行によって取り出した結果の値がナル値の場合，標識変数には-1が設定される。

標識変数を手続き部の埋め込みSQL文に指定する場合，次の形式で指定する。

: [ データ名1 . ] … データ名2

このデータ名を添字付けおよび部分参照してはならない。ただし，修飾はピリオド（.）でデータ名1を連結することでデータ名2を修飾できる。例えば，:AAA.BBBと記述した場合，COBOLの言語規則の BBB OF AAAと表されたとみなされる。

9.5　手続き部（共通要素）（データベースアクセス機能）

9.5.1　値指定と相手指定（データベースアクセス機能）

形式

値指定

相手指定

機能

値指定（value specification）と相手指定（target specification）は，一つ以上の値または変数を指定する。

構文規則

埋め込み変数および標識変数は 埋め込みSQL宣言節で定義していなければならない。

一般規則

値指定は，表から選択されない値を指定する。

相手指定は，値が代入される埋め込み変数を指定する。または，埋め込み変数の値を渡したい場合に指定する。

USERは，接続データベースの規定による値を持つ文字列とする。

埋め込み変数，ならびに標識変数の定義および値については「9.4　データ部（埋め込みSQL宣言節）（データベースアクセス機能）」を参照。

9.5.2　列指定（データベースアクセス機能）

形式

機能

列指定（column specification）は，修飾できる列名を指定する。

一般規則

列指定のデータは，列名で識別される表の列のデータとする。

列名を表名または相関名で修飾する場合，修飾する表名および相関名は，その文中の有効範囲内でなければならない。

9.5.3　集合関数指定（データベースアクセス機能）

形式

機能

集合関数指定（set function specification）は，関数の適用によって導出される値を指定する。

一般規則

DISTINCT指定の場合の引数の値は，列指定のすべての値からナル値および重複する値を取り除いた値の集合とする。

ALL指定の場合，引数で指定された値式のナル値を含まない値の集合とする。

各関数の機能を次に示す。

関数

機能

COUNT(*)

該当するすべての行の数を返す。

AVG

DISTINCT，ALL指定の引数で指定された列指定，値式の平均値を返す。

MAX

DISTINCT，ALL指定の引数で指定された列指定，値式の最大値を返す。

MIN

DISTINCT，ALL指定の引数で指定された列指定，値式の最小値を返す。

SUM

DISTINCT，ALL指定の引数で指定された列指定，値式の合計値を返す。

COUNT

DISTINCT指定の引数で指定された列指定の値の数を返す。

各関数の引数および結果のデータ型は，接続データベースによって規定される。

9.5.4　値式（データベースアクセス機能）

形式

機能

値式（value expression）は，値を指定する。

一般規則

DISTINCT指定の集合関数を含む値式は，どの二項演算子も含んではならない。

値式中の値指定，列指定および集合関数指定のデータ型が文字列の場合，値式に算術演算子を含めてはならない。

値式にナル値が含まれる場合，その値式の結果はナル値とする。

除数は，0であってはならない。

括弧を使って，値式中の評価順序を指定できる。括弧の中の値式が先に評価される。括弧がない場合，単項演算子，乗除算，加減算の順に左から右へ評価される。

値式の結果のデータ型は，接続データベースによって規定される。

9.5.5　述語（データベースアクセス機能）

機能

述語（predicate）は，真，偽，または不定の真偽値を与える評価ができる条件を指定する。

構文規則

述語は，次のどれかとする。

比較述語

BETWEEN述語

IN述語

LIKE述語

NULL述語

限定述語

EXISTS述語

一般規則

述語の結果は，それを表の与えられた行に適用することによって導出される。

9.5.6　比較述語（データベースアクセス機能）

形式

機能

比較述語（comparison predicate）は，二つの値を比較する。

一般規則

比較演算子の左辺の値式のデータ型と，右辺の値式または副問い合わせのデータ型は，互いに比較できるデータ型でなければならない。

副問い合わせの結果は，一つの値でなければならない。

比較演算子の左辺の値式または右辺の値式がナル値の場合，もしくは右辺の副問い合わせの結果が空の場合，比較述語の結果は不定となる。値式とナル値を比較するときは，NULL述語を使用すること。

9.5.7　BETWEEN述語（データベースアクセス機能）

形式

機能

BETWEEN述語（between predicate）は，範囲比較をする。

一般規則

BETWEEN左辺の値式のデータ型と，右辺の値式およびAND値式のデータ型は，互いに比較できるデータ型でなければならない。

次に示す例は，左右どちらも同じ結果となる。

x BETWEEN y AND z

x >= y AND x <= z

x NOT BETWEEN y AND z

NOT ( x BETWEEN y AND z )

9.5.8　IN述語（データベースアクセス機能）

形式

機能

IN述語（in predicate）は，値の集合にその値が含まれるかを比較する。

一般規則

IN左辺の値式のデータ型と，右辺のすべての値指定または副問い合わせのデータ型は，互いに比較できるデータ型でなければならない。

次に示す例は，左右どちらも同じ結果となる。

x IN ( SELECT a FROM A )

x = ANY ( SELECT a FROM A )

x NOT IN ( SELECT a FROM A )

NOT ( x IN ( SELECT a FROM A ) )

9.5.9　LIKE述語（データベースアクセス機能）

形式

機能

LIKE述語（like predicate）は，パターン照合比較する。

一般規則

列指定のデータ型，LIKE右辺の値指定およびESCAPE指定の値指定のデータ型は，文字列でなければならない。

LIKE左辺の列指定，または右辺の値指定がナル値の場合，結果は不定となる。

LIKE右辺の値指定には，パターン照合比較するための文字列パターンを指定する。文字列パターンでは，下線（_）は，任意文字指示子を表し，パーセント（%）は，任意文字列指示子を表す。下線（_）でも，パーセント（%）でもない文字は，それ自身を表す。次にその例を示す。

列指定のデータ

'A'

…1

'ABC'

…2

'ABCD'

…3

'BCD'

…4

文字列パターン

真となるデータ

'ABC'

2

'%A%'

1，2，3

'_BC%'

2，3

'_C_'

4

ESCAPE指定の値指定は，文字列パターンでの下線（_），パーセント（%）をそれ自身を表す文字と認識するための1文字のエスケープ文字を指定する。例えば，'%A'という文字列で始まるデータを持つ列xをパターン照合比較する場合は，次のように指定すれば真となる。

x LIKE '¥%A%' ESCAPE '¥'

注意事項

文字列パターンを文字列型固定長形式の埋め込み変数で指定する場合，変数の長さより短い文字列パターンを設定すると，右側の空白を含めて文字列パターンとなるため注意が必要である。

例えば，'ABCD'というデータを持つ列xをパターン照合比較した場合，次のように文字列パターン'AB%'では結果が真とならない。

01  STR001   PIC X(4).
  :
MOVE 'AB%' TO STR001.
EXEC SQL
   SELECT  ....   x LIKE :STR001  .... 列xのデータ'ABCD'との
                                       比較結果は偽

  :
MOVE 'AB%%' TO STR001.
EXEC SQL
   SELECT  ....    x LIKE :STR001  .... 列xのデータ'ABCD'との
                                        比較結果は真

9.5.10　NULL述語（データベースアクセス機能）

形式

列指定 IS [ NOT ] NULL

機能

NULL述語（null predicate）は，ナル値比較する。

一般規則

列指定が，ナル値の列xの場合，x IS NULLの結果は真となる。

9.5.11　限定述語（データベースアクセス機能）

形式

機能

限定述語（quantified predicate）は，限定された値の集合を比較する。

一般規則

比較演算子左辺の値式のデータ型と，右辺の副問い合わせのデータ型は，互いに比較できるデータ型でなければならない。

ALLを指定した場合，副問い合わせの結果が空か，または副問い合わせの結果のすべての値と値式が，比較演算子で真となるならば限定述語は真となり，一つでも比較演算子で偽となるならば限定述語は偽となる。

SOMEとANYは同義語とし，副問い合わせの結果の値と値式が，一つでも比較演算子で真となるならば限定述語は真となり，副問い合わせの結果が空か，または副問い合わせの結果のすべての値と値式が比較演算子で偽となるならば限定述語は偽となる。

限定述語が真でも偽でもない場合は，不定となる。

9.5.12　EXISTS述語（データベースアクセス機能）

形式

EXISTS  副問い合わせ

機能

EXISTS述語（exists predicate）は，空集合比較する。

一般規則

副問い合わせの結果が空でない場合，EXISTS述語は真となる。結果が空の場合は偽となる。

9.5.13　探索条件（データベースアクセス機能）

形式

機能

探索条件（search condition）は，指定される条件に論理演算子を適用した結果によって真，偽，または不定の真偽値を与える。

一般規則

NOTを指定した述語または（探索条件）の結果による，探索条件の結果を次に示す。

述語または（探索条件）の結果

NOT指定の探索条件の結果

真

偽

偽

真

不定

不定

AND，またはORを指定した場合の右辺と左辺の結果による，探索条件の結果を次に示す。

右辺

左辺

AND指定の探索条件の結果

OR指定の探索条件の結果

真

真

真

真

真

偽

偽

真

真

不定

不定

真

偽

真

偽

真

偽

偽

偽

偽

偽

不定

偽

不定

不定

真

不定

真

不定

偽

偽

不定

不定

不定

不定

不定

括弧の中が最初に評価され，NOT，AND，ORの順に左から右に評価される。

9.5.14　表式（データベースアクセス機能）

形式

FROM 表名 [ AS 相関名 ] [ 接続データベース固有指示子 ]
[ , 表名 [ AS 相関名 ] [ 接続データベース固有指示子 ] ] …
[ WHERE 探索条件 ]
[ GROUP BY 列指定 [ , 列指定 ] … ]
[ HAVING 探索条件 ]

機能

表式（table expression）は，表またはグループ表を指定する。

構文規則

表式での接続データベース固有指示子は，HOLDLOCKとする。

一般規則

FROM句で識別される表がグループビューならば，表式にWHERE句，GROUP BY句，またはHAVING句のどれも指定してはならない。

FROM句は，一つ以上の表から導出される表とする。

（a） 表名，相関名の有効範囲は，FROM句が含まれる表式を含む最も内側の副問い合わせ，問い合わせ指定，またはSELECT文とする。

（b） 接続データベース固有指示子とは，表名の後に指定するオプションのことである。データベースによっては表名の後に，ある特定のオプションを指定できる。例えば，MicrosoftのSQL Serverでは，ロック手法などのオプションを指定できる。

（c） 接続データベース固有指示子の構文，機能およびその動作については，現行コネクションで接続しているデータベースに従う。

WHERE句は，先行するFROM句の結果に探索条件を適用することによって導出される表を規定する。

GROUP BY句は，先行するFROM句，またはWHERE句で導出される表の行を指定した列が同じ値を持つグループに分割したグループ表とする。

（a） 各列指定は，先行するFROM句およびWHERE句で導出されるの表中の列を一意に参照しなければならない。

HAVING句は，先行するFROM句，WHERE句，またはGROUP BY句の結果である複数のグループ表に対し，探索条件の結果が真となるようなグループのグループ表とする。

9.5.15　副問い合わせ（データベースアクセス機能）

形式

機能

副問い合わせ（subquery）は，表式の結果から導出される値のマルチ集合とする。

一般規則

副問い合わせのデータ型は，値式のデータ型とする。星印（*）を指定した場合，表式の結果から導出される表の列のデータ型とする。

DISTINCTを指定しなかった場合，表式から導出される表の値式の値のマルチ集合とする。

DISTINCTを指定した場合，表式から導出される表の値式の値から重複値を取り除いた値のマルチ集合とする。

星印（*）を指定した場合，表式の結果から導出される表の列は，単独の列を参照しなければならない。ただし，EXISTS述語に指定される副問い合わせならば，表式の結果から導出される表の列は，単独でない列を参照していてもよい。

値式中に指定する列指定は，表式の結果から導出される表の列を一意に参照する列名でなければならない。

9.5.16　問い合わせ指定（データベースアクセス機能）

形式

機能

問い合わせ指定（query specification）は，表式の結果から導出される表とする。

一般規則

DISTINCTを指定しなかった場合，表式の結果から導出される表とする。

DISTINCTを指定した場合，表式の結果から導出される表の重複行を取り除いた行の表とする。

星印（*）を指定した場合，表式の結果から導出される表の列がすべて指定されたものとする。

値式中に指定する列指定は，表式の結果から導出される表の列を一意に参照する列名でなければならない。

9.5.17　問い合わせ式（データベースアクセス機能）

形式

機能

問い合わせ式（query expression）は，複数の問い合わせ指定から導出される表の行のマルチ集合の表とする。

一般規則

UNIONを指定しなかった場合，問い合わせ指定の結果から導出される表とする。

UNIONを指定した場合，左辺の問い合わせ式と右辺の問い合わせ指定または問い合わせ式から導出される表の行のマルチ集合の表とする。左辺と右辺で導出される表の列は，左辺と右辺，同じのデータ型の並びでなければならない。またその表の列の数は異なっていてはならない。

ALLを指定しなかった場合，重複するすべての行を取り除いた行の表とする。

9.6　手続き部（宣言系）（データベースアクセス機能）

手続き部（宣言系）では，手続き部に宣言系とする埋め込みSQL文で記述できるSQL文について記述する。

宣言系とするSQL文には，埋め込み例外を宣言するWHENEVER文とカーソルを宣言するDECLARE CURSOR文がある。

9.6.1　WHENEVER（埋め込み例外宣言）文（データベースアクセス機能）

形式

機能

埋め込み例外宣言（embedded exception declaration）は，SQL文に例外が生じるときに取られる動作を規定する。

構文規則

NOT FOUND指定をした場合，STOPを指定してはならない。

手続き名に段落名を指定した場合，節名では修飾できない。

埋め込み例外宣言の有効範囲は，プログラム単位，関数単位およびメソッド単位とする。

GOTOとGO TOは，同義語であり，どちらを書いてもよい。

一般規則

埋め込み例外宣言は，プログラムの実行の流れには関係なく，原始プログラム上に記述された位置によって決まる。すなわち，ある一つの埋め込み例外宣言で指定された処理は原始プログラム上の出現順で次に現れた同じ指定の埋め込み例外宣言までにある，宣言系とする埋め込みSQL文を除くすべての埋め込みSQL文に対して有効となる。

次にその有効範囲の例を示す。

(a)のSELECT文の場合

SQLERROR条件のときだけGO TO文が実行される。

(b)のSELECT文の場合

SQLERROR条件のときはGO TO文が実行され，NOT FOUND条件のときはPERFORM文が実行される。

(c)のSELECT文の場合

NOT FOUND条件のときだけPERFORM文が実行される。

各指定によって，有効範囲のSQL文実行で各動作が有効となる契機を次に示す。

指定

有効となる契機

SQLERROR

SQLCODE変数に負の値が設定される契機

SQLWARNING

SQLCODE変数に100でない正の値が設定される契機

NOT FOUND

SQLCODE変数に100が設定される契機

SQLCODE変数の詳細については「9.4.1　SQLCODE変数（データベースアクセス機能）」を参照。

各指定が，有効となる条件を満たした場合のSQL文実行後の動作を次に示す。

動作

意味

CONTINUE

各指定の有効範囲の終わりを指示し，以前の同じ指定の動作を以降のSQL文の実行に適用しない。

STOP

COBOLの STOP RUN文を実行することを指示する。

GOTO またはGO TO

COBOLの GO TO文を実行することを指示する。

PERFORM

COBOLの PERFORM文を実行することを指示する。

9.6.2　DECLARE CURSOR（カーソル宣言）文（データベースアクセス機能）

形式

書き方1　静的

書き方2　動的

DECLARE  カーソル名  CURSOR FOR SQL文名

機能

カーソル宣言（declare cursor）は，カーソルを定義する。

構文規則

カーソル名は，プログラム単位，利用者定義関数単位およびメソッド単位で一意でなければならない。

同一のプログラム，利用者定義関数およびメソッド中に同じカーソル名を指定したOPEN文がなければならない。

書き方2は，同一プログラム，利用者定義関数およびメソッド中に同じSQL文名を指定したPREPARE文がなければならない。

注

カーソル名は，同一SQL埋め込みホストプログラム中のどのカーソル宣言で指定されるカーソル名とも同一であってはならない。プログラムが入れ子構造になっている場合，カーソル名は，プログラム単位で一意でなければならない。

一般規則

書き方1は，問い合わせ式によって導出される表とカーソルを関連づける。

ORDER BY句は，行の並べ替えを指示する。カーソルは，問い合わせ式によって導出される表の行をORDER BY句の列を基に並べ替えた表を関連づける。

ORDER BY句の符号なし整数は，問い合わせ式によって導出される表の列の位置とする。

ORDER BY句に符号なし整数，または列指定にDESCを指定すると並べ替えは降順となる。DESCを指定しない場合は，昇順となる。

書き方2は，同じSQL文名を指定したPREPARE文の動的SQLとカーソルを関連づける。

9.7　手続き部（制御系）（データベースアクセス機能）

手続き部（制御系）では，制御系とする埋め込みSQL文で記述できるSQL文について記述する。

制御系とするSQL文には，コネクション管理のCONNECT，DISCONNECT，SET CONNECTION文とトランザクション管理のCOMMIT，ROLLBACK文がある。

9.7.1　コネクション（データベースアクセス機能）

SQL文を使用してDBMS上のデータへアクセスできる状態にすることをコネクションを確立するといい，アクセスできる状態をアクセスできない状態にすることをコネクションを解除するという。

一つまたは複数のコネクションを確立でき，コネクションごとにトランザクションは管理される。

コネクションを確立する方法として，接続先データベース名を使用する方法と接続文字列を使用する方法がある。接続先データベース名，接続文字列の詳細については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のODBCインタフェース機能の説明を参照のこと。

9.7.2　トランザクション（データベースアクセス機能）

トランザクション（transaction）は，データベース操作を含む操作の並びとし，回復（recovery）および並行性（concurrency）の基本単位となる。

トランザクションは，SQL文が実行されたとき，活性状態にあるトランザクションがなければ初期化され，COMMIT文またはROLLBACK文によって終了する。

このシステムでは，表に対する排他制御の定義は，DBMSの定義による。

(1)　コミット

トランザクションをコミットすると，そのトランザクションで行われたデータベースに対するすべての変更は，すべての並行トランザクションからアクセスできるようになる。

(2)　ロールバック

トランザクションをロールバックすると，そのトランザクションで行われたデータベースに対するすべての変更が取り消される。ただし，コミットされた変更を取り消すことはできない。

9.7.3　CONNECT文（データベースアクセス機能）

形式

書き方1

書き方2

機能

CONNECT文は，コネクションを確立する。

注

コネクション名は，同一プログラム中でだけ有効である。コネクション名をほかのプログラムにわたって使用することはできない。

構文規則

すべての埋め込み変数は，文字列型でなければならない。

一般規則

埋め込み変数1には，接続するユーザIDを設定しておかなければならない。

埋め込み変数2には，接続するユーザIDのパスワードを設定しておかなければならない。

埋め込み変数3には，次の形式でユーザIDとパスワードを設定しておかなければならない。

"ユーザID/パスワード"

埋め込み変数4には，接続先データベース名を設定しておかなければならない。

埋め込み変数5には，接続文字列を設定しておかなければならない。

埋め込み変数1〜4が次の場合，省略したものとする。埋め込み変数5は次の値であってはならない。

（a） 文字列型可変長形式で長さが0以下

（b） 空白文字列

各埋め込み変数を省略した場合の仮定値を次に示す。

埋め込み変数

仮定値

埋め込み変数1

ログインユーザ

埋め込み変数2

パスワードなし

埋め込み変数3

ユーザIDを省略した場合，ログインユーザ名

パスワードを省略した場合，パスワードなし

埋め込み変数4

"default"

すでに同じコネクション名を使用してコネクションを確立している場合，再度コネクションを確立することはできない。また，すでにコネクション名を指定しないでコネクションを確立している場合，再度コネクション名を指定しないでコネクションを確立することはできない。

CONNECT文を実行しないで次に示す操作系のSQL文を実行した場合，暗黙に埋め込み変数を省略したコネクション名を指定しないCONNECT文を実行する。

小分類

SQL文

静的

DELETE（探索），UPDATE（探索），INSERT，SELECT

カーソル

OPEN（静的）

動的

EXECUTE IMMEDIATE，PREPARE

ストアドプロシージャ

CALL

確立したコネクションに対し，コネクション名で名前が付けられる。

コネクションが確立された場合，確立されたコネクションが現行コネクションとなり，以降のSQL文は現行コネクションに対し実行される。

埋め込み変数1〜5に設定された値の後ろに半角空白がある場合，半角空白は削除される。

9.7.4　DISCONNECT文（データベースアクセス機能）

形式

機能

DISCONNECT文は，コネクションを解除する。

構文規則

同一プログラム，利用者定義関数，メソッド中に同じコネクション名を使用したCONNECT文がなければならない。

DISCONNECT文に，コネクション名，DEFAULT，ALL，CURRENTのどの指定もない場合，CURRENT指定が仮定される。

一般規則

コネクション名指定は，同じコネクション名で確立されたコネクションを解除する。

DEFAULT指定は，コネクション名を指定しないで確立されたコネクションを解除する。

ALL指定は，確立しているすべてのコネクションを解除する。

CURRENT指定は，現行コネクションを解除する。

現行コネクションを解除した後の接続先は，不定となる。

トランザクションは，おのおののコネクションに対して次のように終了する。

（a） トランザクション中にSQLCODE変数に負の値が設定される契機がなかった場合，コミットして終了する。

（b） トランザクション中にSQLCODE変数に負の値が設定される契機があった場合，ロールバックして終了する。

DISCONNECT文を実行しないでプログラム，利用者定義関数，メソッドの実行が終了した場合，実行の終了処理で暗黙にDISCONNECT ALLを実行する。

9.7.5　SET CONNECTION文（データベースアクセス機能）

形式

機能

SET CONNECTION文は，現行コネクションを変更する。

構文規則

同一プログラム，利用者定義関数，メソッド中に同じコネクション名を使用したCONNECT文がなければならない。

一般規則

コネクション名指定は，コネクション名で確立されたコネクションに現行コネクションを変更する。

DEFAULT指定は，コネクション名を指定しないで確立されたコネクションに現行コネクションを変更する。

変更するコネクションは，確立されていなければならない。

9.7.6　COMMIT文（データベースアクセス機能）

形式

COMMIT WORK

機能

COMMIT文は，コミットでトランザクションを終了させる。

一般規則

トランザクション中に開かれたすべてのカーソルを閉じる。

トランザクション中に行われたデータベースへのすべての変更をコミットしてトランザクションを終了する。

9.7.7　ROLLBACK文（データベースアクセス機能）

形式

ROLLBACK WORK

機能

ROLLBACK文は，ロールバックでトランザクションを終了させる。

一般規則

トランザクション中に開かれたすべてのカーソルを閉じる。

トランザクション中になされたデータベースへのすべての変更をロールバックしてトランザクションを終了する。

9.8　手続き部（操作系）（データベースアクセス機能）

9.8.1　手続き部（操作系）の概要（データベースアクセス機能）

手続き部（操作系）では，操作系とする埋め込みSQL文で記述できるSQL文について記述する。操作系とするSQL文は，次に示す四つに分類できる。

分類

SQL文

概要

静的

SELECT

表の指定された行から値を取り出す

INSERT

表に新しい行を挿入する

DELETE

表から行を削除する

UPDATE

表の行を更新する

カーソル

OPEN

カーソルを開く

FETCH

カーソルを表の次の行に位置づけ，その行を取り出す

CLOSE

カーソルを閉じる

ストアドプロシージャ

CALL

ストアドプロシージャを呼び出す

動的

EXECUTE IMMEDIATE

動的にSQL文を準備し，実行する

PREPARE

動的にSQL文を準備する

DEALLOCATE PREPARE

動的に準備したSQL文を解放する

EXECUTE

動的に準備したSQL文を実行する

(1)　静的に行う方法

静的に行う方法とは，埋め込みSQL文でSQL文を指定する方法である。このため実行時は，変数の値以外，そのSQL文自体の構文を変更できない。

埋め込みSQL文中に埋め込み変数を指定することで変数を使用できる。

(2)　カーソル

カーソル（cursor）は，DECLARE CURSOR（カーソル宣言）文で宣言し，OPEN文で開かれ，FETCH文を複数回実行することで表から複数行の値を取り出すことができ，CLOSE文で閉じられる。

また，カーソルをFETCH文によって行に位置づけた場合，UPDATE文，DELETE文の位置づけの構文を使用することで行を更新，削除できる。

このシステムでは，カーソル宣言が，カーソル宣言のカーソル名を参照するSQL文よりも，原文中で後方にあってもよい。プログラムが入れ子構造になっている場合，カーソル宣言は，カーソル宣言のカーソル名を参照するSQL文と同一のプログラム中になければならない。

(3)　ストアドプロシージャ

ストアドプロシージャ（stored procedure）は，データベースに格納された一連の手続きとする。ストアドプロシージャを呼び出すことによってその一連の手続きを実行する。ストアドプロシージャを使用すると，ユーザ宣言の変数，条件付き実行などのプログラミング機能をデータベース内で使用できる。

(4)　動的に行う方法

動的に行う方法とは，実行時に動的に SQL文を構成する方法である。この実行時に構成するSQL文を，以降では動的SQLとする。動的SQLは，接続データベースによって構文，機能およびその動作が規定される。

動的SQL中にパラメタマーカと呼ぶ疑問符（?）を指定し，これにUSING句で埋め込み変数を対応づけることで変数を使用できる。

9.8.2　SELECT文（単一行）（データベースアクセス機能）

形式

機能

SELECT文は，表の指定された行から値を取り出す。

一般規則

DISTINCTを指定しなかった場合，表式の結果から導出される表とする。

DISTINCTを指定した場合，表式の結果から導出される表の重複行を取り除いた行の表とする。

星印（*）を指定した場合，表式の結果から導出される表の列がすべて指定されたものとする。

値式中に指定する列指定は，表式の結果から導出される表の列を一意に参照する列名でなければならない。

相手指定の数と順序は，値式，または星印（*）で参照される列の並びに対応する。

相手指定のデータは，各列のデータ型で有効なデータ型でなければならない。

表式によって導出される行が空の場合，SQLCODE変数に100を設定する。

表式によって導出される行が空でない場合，値式，または星印（*）で参照される列のデータを相手指定に設定する。

9.8.3　INSERT文（データベースアクセス機能）

形式

機能

INSERT文は，表に行を挿入する。

一般規則

列名を省略した場合，表の列がすべて指定されたものとする。

値指定の数と順序は，列名の並びに対応する。

値指定のデータは，対応する各列のデータ型に有効な値のデータでなければならない。

VALUES指定に，各値指定の値，またはNULLが指定された場合はナル値で表に新しい行を挿入する。

問い合わせ指定によって導出される表の列の数と順序は，列名の並びに対応する。

問い合わせ指定によって導出される表の列のデータは，対応する各列のデータ型で有効な値のデータでなければならない。

問い合わせ指定を指定した場合，問い合わせ指定によって導出される表のすべての行を表に挿入する。

問い合わせ指定によって導出される表が空の場合，SQLCODE変数に100を設定する。

9.8.4　DELETE文（データベースアクセス機能）

形式

書き方1　探索

DELETE FROM  表名 [ WHERE 探索条件 ]

書き方2　位置づけ

DELETE FROM  表名 WHERE CURRENT OF カーソル名

機能

DELETE文は，表から行を削除する。

構文規則

カーソル名は，同一プログラム，利用者定義関数，メソッド中にDECLARE CURSOR文でカーソルが宣言されていなければならない。

一般規則

書き方1は，表から探索条件が真となるすべての行を削除する。

また，探索条件を指定しない場合は表のすべての行を削除する。

書き方2は，FETCH文で位置づけられた行を削除する。

書き方2の表名は，カーソル宣言のFROM句で指定した表でなければならない。

書き方2のカーソルは，行に位置づけられていなければならない。

9.8.5　UPDATE文（データベースアクセス機能）

形式

書き方1　探索

書き方2　位置づけ

機能

UPDATE文は，表の行を更新する。

構文規則

カーソル名は，同一プログラム，利用者定義関数，メソッド中のDECLARE CURSOR文で宣言されなければならない。

値式に集合関数指定を含んではならない。

一般規則

書き方1は，表から探索条件が真となるすべての行を更新する。また，探索条件を指定しない場合は表のすべての行を更新する。

書き方2は，FETCH文で位置づけられた行を更新する。

書き方2の表名は，カーソル宣言のFROM句で指定した表でなければならない。

書き方2のカーソルは，行に位置づけられていなければならない。

値式のデータは，対応する列のデータ型に有効な値のデータでなければならない。

各値式のデータで行の各列のデータが更新される。ただし，NULLを指定した場合は，ナル値で更新される。

9.8.6　OPEN文（データベースアクセス機能）

形式

書き方1　静的

OPEN  カーソル名

書き方2　動的

OPEN  カーソル名 [ USING 相手指定  [ , 相手指定 ] … ]

機能

OPEN文は，カーソルを開く。

構文規則

カーソル名は，同一プログラム，利用者定義関数，メソッド中のDECLARE CURSOR文で宣言されていなければならない。

書き方2のカーソル名は，同一プログラム，利用者定義関数，メソッド中に DECLARE CURSOR文の書き方2でカーソルが宣言されていなければならない。

一般規則

カーソルは，閉じられていなければならない。

書き方2は，動的SQLをカーソルで実行する場合に使用する。

（a）動的SQLは，準備しておかなければならない。

（b）動的SQLは，DELETE，INSERTおよびUPDATE文であってはならない。

（c）USINGの相手指定の数および順序は，パラメタマーカの並びに対応し，各相手指定のデータは，各パラメタマーカに対応する列，または式のデータ型に有効な値のデータでなければならない。なお，パラメタマーカに対応する列，または式のデータ型が固定長形式の型の場合，データの長さを合わせる必要がある。

カーソルが開かれた場合，カーソルは，先頭行の前に位置づけられる。

9.8.7　FETCH文（データベースアクセス機能）

形式

静的／動的

FETCH  カーソル名  INTO  相手指定 [ , 相手指定 ] …

機能

FETCH文は，カーソルを表の次の行に位置づけ，その行の値を取り出す。

構文規則

カーソル名は，同一プログラム，利用者定義関数，メソッド中のDECLARE CURSOR文で宣言されていなければならない。

一般規則

カーソルは，開かれていなければならない。

INTOの相手指定の数および順序は，取り出す行の列の並びに対応し，各相手指定の変数の型は，返される結果の値を格納できる変数の型でなければならない。

取り出す行が存在する場合，行の各列の値が，対応する相手指定に設定される。

カーソル宣言によって導出される表が空の場合，またはカーソルが最終行もしくは最終行の次に位置づけられている場合は，カーソルを最終行の次に位置づけ，SQLCODE変数に100が設定される。

9.8.8　CLOSE文（データベースアクセス機能）

形式

静的／動的

CLOSE カーソル名

機能

CLOSE文は，カーソルを閉じる。

構文規則

カーソル名は，同一プログラム，利用者定義関数，メソッド中に DECLARE CURSOR文でカーソルが宣言されていなければならない。

一般規則

カーソルは，開かれていなければならない。

9.8.9　CALL文（データベースアクセス機能）

形式

CALL プロシージャ名 [ ( 相手指定 [ , 相手指定 ]… ) ]

機能

CALL文は，ストアドプロシージャを呼び出す。

一般規則

指定した相手指定の数および順序は，ストアドプロシージャのパラメタの並びに対応する。

入力，入出力パラメタと定義されたパラメタに対応する相手指定のデータは，対応するパラメタのデータ型に有効な値のデータでなければならない。

出力，入出力パラメタと定義されたパラメタに対応する相手指定の埋め込み変数の型は，プロシージャで設定される値を格納できる埋め込み変数の型でなければならない。

ストアドプロシージャの戻り値は，受け取れない。

ストアドプロシージャ内のSELECT文の結果は，受け取れない。

9.8.10　EXECUTE IMMEDIATE文（データベースアクセス機能）

形式

機能

EXECUTE IMMEDIATE文は，SQL文を動的に準備し，実行する。

構文規則

埋め込み変数の型は，文字列型でなければならない。

一般規則

埋め込み変数，英数字定数には，動的SQLを指定しておかなければならない。

動的SQLには，パラメタマーカを含めてはならない。

動的SQLに SELECT文を指定してはならない。

動的SQLがDELETE文，INSERT文，またはUPDATE文で該当の行が存在しない場合，SQLCODE変数に100が設定される。

9.8.11　PREPARE文（データベースアクセス機能）

形式

機能

PREPARE文は，実行のためにSQL文を準備する。

構文規則

埋め込み変数の型は，文字列型でなければならない。

注

SQL文名は，同一プログラム中でだけ有効である。SQL文名をほかのプログラムにわたって使用することはできない。

一般規則

埋め込み変数，英数字定数には，動的SQLを指定しておかなければならない。

SQL文名にカーソルを関連づけている場合，カーソルは閉じられていなければならない。

同じSQL文名を使用してすでにPREPARE文を実行している場合，暗黙にDEALLOCATE PREPARE文が実行される。

9.8.12　DEALLOCATE PREPARE文（データベースアクセス機能）

形式

DEALLOCATE PREPARE SQL文名

機能

DEALLOCATE PREPARE文は，PREPARE文で準備したSQL文を解放する。

構文規則

同一プログラム，利用者定義関数およびメソッド中に同じSQL文名を使用したPREPARE文がなければならない。

一般規則

同じSQL文名を使用してPREPARE文を実行しておかなければならない。

SQL文名にカーソルを関連づけている場合，カーソルは閉じられていなければならない。

9.8.13　EXECUTE文（データベースアクセス機能）

形式

機能

EXECUTE文は，準備されたSQL文を実行する。

構文規則

同一プログラム，利用者定義関数，メソッド中に同じSQL文名を使用したPREPARE文がなければならない。

一般規則

動的SQLは，準備しておかなければならない。

USINGの相手指定の数および順序は，パラメタマーカの並びに対応し，各相手指定のデータは，各パラメタマーカに対応する列，または式のデータ型に有効な値のデータでなければならない。なお，パラメタマーカに対応する列，または式のデータ型が固定長形式の型の場合，データの長さを合わせる必要がある。

動的SQLがSELECT文の場合，結果を受け取るためにINTO指定を記述しなければならない。

INTOの相手指定の数および順序は，取り出す行の列の並びに対応し，各相手指定の埋め込み変数の型は，返される結果の値を格納できる埋め込み変数の型でなければならない。

動的SQLがSELECT文で，導出される表が空の場合，または，動的SQLがDELETE文，INSERT文，またはUPDATE文で該当の行が存在しない場合，SQLCODE変数に100が設定される。

10　コマンド行のアクセス

コマンド行のアクセス機能は，コマンド行の引数へのアクセスおよび環境変数へのアクセスができる。

この章では，コマンド行のアクセス機能について説明する。

10.1　コマンド行，環境変数へのアクセス

コマンド行のアクセス機能は，コマンド行の引数へのアクセスおよび環境変数へのアクセスができる。

コマンド行の引数へのアクセスは，実行可能ファイルが起動されたコマンド行の引数や，その個数を求めることができる。

環境変数へのアクセスは，環境変数の値を設定することや，値を求めることができる。

10.1.1　環境部（SPECIAL-NAMES）（コマンド行，環境変数へのアクセス）

形式

構文規則

呼び名の規則に関しては，マニュアル「COBOL2002　言語　標準仕様編」　「8.2.6　特殊名段落（SPECIAL-NAMES）」を参照のこと。

10.1.2　手続き部（コマンド行，環境変数へのアクセス）

形式

書き方1　コマンド行に現れた引数の個数を読み込む

書き方2　コマンド行から引数を次々に読み込む

書き方3　コマンド行から引数を位置で読み込む

書き方4　環境変数から値を読み込む

書き方5　環境変数へ値を書き出す

構文規則

書き方1の一意名9および書き方3の一意名7は，符号なし整数項目として記述されたデータ項目を参照するものでなければならない。

次に示すものは英数字データ項目を参照するものでなければならない。

・書き方2の一意名8

・書き方3の一意名8

・書き方4の一意名8および一意名10

・書き方5の一意名8および一意名9

書き方3の整数4は符号なし整数でなければならない。

書き方4の定数2および書き方5の定数2，3は英数字定数でなければならない。

-UniObjGenオプションを指定した場合，書き方4の定数2および書き方5の定数2，定数3にUTF-8で多バイトとなる文字が含まれてはならない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

一般規則

ARGUMENT-NUMBER（引数の番号）は，書き方1のACCEPTで使う場合，コマンド行に含まれる引数の個数を一意名9に求める。また，書き方3のDISPLAYで使う場合，一意名7の内容または整数4をコマンド行上の引数の位置に設定する。

書き方3のDISPLAYを使わないと，コマンド行の初期位置は先頭の引数に設定される（書き方2を参照）。

書き方2または書き方3のACCEPT文の実行後に位置は1個進められる。

ARGUMENT-VALUE（引数の値）は，書き方2または書き方3のACCEPT文で使用する場合，コマンド行上の引数の値を一意名8に求める。

ENVIRONMENT-NAME（環境変数の名称）は，書き方4または書き方5のDISPLAYで使用する場合，一意名8の内容または定数2を環境変数名に設定する。

ENVIRONMENT-VALUE（環境変数の値）は，書き方4のACCEPTで使用する場合，環境変数の値を一意名10に求める。また，書き方5のDISPLAYで使用する場合，環境変数の内容に一意名9の内容または定数3を設定する。

一意名7の内容または整数4は，0から99の範囲であること。また，COBOLプログラムのコマンド行に現れる引数やスイッチおよびフラグを参照してもよい。

無条件文3が実行されるのは，書き方2でコマンド行の最後の引数を超えて読み込みをしようとしたとき，または書き方3で引数が存在しないときである。

無条件文5が実行されるのは，書き方4のDISPLAY文による環境変数名の設定が未実行のとき，または指定した環境変数が存在しないときである。

書き方5で無条件文3が実行されるのは，書き方5のDISPLAY文による環境変数名の設定が未実行のとき，または指定した環境変数を格納するための十分な空き領域の割り当てができないときである。

無条件文4，無条件文6が実行されるのは，例外が発生しないときである。

書き方2，書き方3および書き方4のACCEPT文または書き方5のDISPLAY文に，ON EXCEPTION指定を書かないで例外が発生したときは，実行単位が異常終了する。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

10.2　コマンド行へのアクセス（一括取得）

10.2.1　環境部（SPECIAL-NAMES）（コマンド行へのアクセス（一括取得））

形式

構文規則

呼び名の規則に関しては，標準仕様編の特殊名段落（SPECIAL-NAMES）を参照のこと。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.2.6　特殊名段落（SPECIAL-NAMES）」

10.2.2　手続き部（コマンド行へのアクセス（一括取得））

(1)　ACCEPT COMMAND-LINE

形式

機能

ACCEPT文の実行時に，コマンド行の引数の値を取得する。ARGUMENT-VALUEと異なり，空白で区切られた複数の引数も1回のACCEPT文で一括して取得できる。

一般規則

一意名に書ける項目は，機能名CONSOLEと同等である。

コマンド行バッファ内の連続する空白文字は，空白文字一つにまとめる。ただし，DISPLAY COMMAND-LINEを実行した後では，連続する空白文字を一つにまとめない。

COMMAND-LINEとARGUMENT-VALUEは互いに影響しない。ACCEPT ARGUMENT-VALUEで引数の一部を読み込んだ後に，ACCEPT COMMAND-LINEで引数を読み込むと，引数の全体が読み込まれる。

ACCEPT COMMAND-LINEを連続して指定した場合，最初の1回だけが有効となり，2回目以降では引数は読み込まれない。

（備考）

一意名が数字項目，数字編集項目，外部浮動項目または内部浮動項目の場合，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」の-NumAcceptオプションに関する記述も参照のこと。

(2)　DISPLAY COMMAND-LINE

形式

機能

DISPLAY文の実行時に，一意名または定数で指定された内容を，コマンド行の引数の値を格納しているコマンド行バッファに上書きする。

DISPLAY COMMAND-LINEの実行後にACCEPT COMMAND-LINEを実行すると，DISPLAY COMMAND-LINEで設定した値が取り出される。

一般規則

一意名に内部ブール項目，可変長集団項目，指標データ項目，オブジェクト参照項目，およびアドレスデータ項目は指定できない。

DISPLAY 一意名UPON COMMAND-LINEを実行すると，一意名の内容でコマンド行バッファの内容を書き換える。ただし，COMMAND-LINEのコマンド行バッファとARGUMENT-VALUEで使用するバッファは別のバッファとする。すなわち，DISPLAY COMMAND-LINEで書き込んだデータは，ACCEPT COMMAND-LINEでだけ取り出すことができる。

DISPLAY 一意名 UPON COMMAND-LINEの作用対象は一つだけしか許されない。一意名の中に空白で区切られたデータが格納されていた場合は，空白を含んだ全体を一つの作用対象とみなす。

11　通信節による画面機能

この章では，通信節を用いて画面データをディスプレイに表示したり，利用者が入力したデータをディスプレイから読み込んだり，帳票データをプリンタに出力したりする機能について説明する。

この機能はAIX(64) COBOL2002およびLinux COBOL2002では使用できない。

AIX(64) COBOL2002およびLinux COBOL2002でこの機能を使用した場合，XMAP3のライブラリが存在しないため，リンク時にエラーとなる。

11.1　データ部（通信節による画面機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.　データ部（DATA DIVISION）」

11.1.1　通信記述項（CD）（通信節による画面機能）

形式

機能

通信種別などを指定する。

構文規則

帳票出力用の通信記述項と画面入出力用の通信記述項はおのおのプログラムに1回だけ定義できる。

通信記述項の各データ名に対して，データ項目が次の形式で暗黙に定義される。また，これらの領域はこのシステムによって自動的に割り当てられる。

通信記述名1の構成規則は，利用者定義語の構成規則による。

通信節は最外側プログラム，利用者定義関数，ファクトリ定義およびインスタンス定義に指定できる。

画面入出力用の通信記述項には，MAP NAME句を書かなければならない。

一般規則

FOR句は，通信種別を指定する。通信種別と意味を次に示す。

OUTPUT WS：送信先が，プリンタである。

I-O WS：送受信先が，ディスプレイである。

MAP NAME句のデータ名1は，出力用物理マップ名を設定する項目である。

MAPPING MODE句のデータ名2は，画面表示の形態を指定する。データ名2に指定する値と画面表示の形態を次に示す。

'△'，'0'

論理項目または制御項目に指定したデータを用いて画面表示をする。ただし，表示属性の変更指示を行わない項目属性については，画面定義時に指定した表示属性となる。

'2'

論理項目または制御項目に指定したデータを用いて画面表示をする。ただし，表示属性の変更指示を行わない項目属性については，前画面の表示属性となる。

'3'

論理項目または制御項目に指定したデータを無視して画面定義時の情報だけで画面表示をする。

データ名2に'2'を設定しているとき，表示動作がERASEモードとなる通信文を発行してはならない。この通信文を発行した場合，動作は保証しない。

MAPPING MODE句を省略した場合，次を仮定する。

・初めての送受信要求または直前の指定と異なる物理マップ名の送受信要求のとき，データ名2に'△'，'0'が指定されたものとして画面表示をする。

・同じ物理マップ名を使用した送受信要求のとき，データ名2に'2'が指定されたものとして画面表示をする。ただし，同じ物理マップ名を使用した送受信要求でも，表示動作がERASEモードの場合は，データ名2に，'△'，'0'を仮定し，画面表示をする。

MAPPING MODE句は，FOR句でI-O WSを指定しているときだけ有効である。FOR句でOUTPUT WSを指定しているとき，常にデータ名2に'△'，'0'が指定されたものとして画面表示をする。

（注意）

論理項目とは，プリンタまたはディスプレイ間で，可変なデータを送信または送受信するためのデータ項目である。

制御項目とは，COBOLプログラムとディスプレイまたはプリンタを制御するためのデータ項目である。

DATA ABSENCE CODE句のデータ名3は，データ有無コードを指定する。データ有無コードとは，論理項目に値を設定しているかどうかを区別するためのコードである。データ名3で指定したコードを論理項目の先頭1バイトに設定することで，その論理項目へ値を設定しないことを指示する。

通信文の実行で異常が発生した場合，STATUS KEY句の指定がないと，次のどちらかの動作になる。

（a）通信文で実行継続できない異常状態が発生すると，エラーメッセージを出力して終了する。

（b）通信文で実行継続できる異常状態が発生すると，エラーメッセージを出力して続行する。

通信文の実行で異常が発生しても処理を続行させたい場合，STATUS KEY句を指定する。データ名4には，通信文の実行状態を表す長さ5文字のコードが設定される。

5文字のコードと意味を次に示す。

STATUS KEY句の指定は，異常状態の発生時，ファイルのクローズなどの後処理をしてからプログラムを終了させたいときに有効である。ただし，STATUS KEY句を指定していても，データ名4の値がすべて空白のとき，STATUS KEY句の指定は無視される。

INITIAL句指定のプログラムでEXIT PROGRAM文またはGOBACK文を実行した場合，この機能で開かれたファイルは閉じられる。

SYMBOLIC TERMINAL句のデータ名5

（a）FOR句でOUTPUTを指定したときは，メッセージの送信先の仮想端末名称を指定する。仮想端末とは，COBOLプログラムで扱う論理的な端末である。

（b）FOR句でI-Oを指定したときは，画面データの送受信先を指定する。画面データの送受信先はディスプレイである。

詳細は，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」の通信節による画面入出力機能の説明とXMAP3のマニュアルを参照のこと。

11.2　手続き部（通信節による画面機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

11.2.1　SEND文（通信節による画面機能）

形式

機能

ディスプレイに対してメッセージを送信する。このときメッセージを受信しない。

ディスプレイに対してメッセージを送受信する。このとき，送信されたメッセージに対する受信の完了を待たない。

プリンタへメッセージを送信する。

構文規則

通信記述名1には，SEND文に対応する通信記述項の通信記述名を指定する。

一意名1には，送信メッセージ格納領域（出力論理マップ）を指定する。

プリンタに対するSEND文では，NO REPLY指定をしてはならない。

一意名1には，次のデータ名は指定できない。

・指標データ項目

・アドレスデータ項目

・ブール項目

・オブジェクト参照データ項目

・オブジェクトプロパティ

・関数一意名

一意名1は，部分参照してはならない。

一般規則

SEND文を実行する前に，通信記述項のMAP NAME句で指定したデータ名1のデータ項目に出力物理マップ名を設定しなければならない。

ディスプレイに対するNO REPLY指定のあるSEND文を実行すると，メッセージが送信される。このとき，RECEIVE文によってメッセージを受信することはできない。

ディスプレイに対するNO REPLY指定のないSEND文を実行すると，メッセージが送受信される。このとき，RECEIVE文を実行して，メッセージを受け取らなければならない。NO REPLY指定のないSEND文からRECEIVE文の間にディスプレイに対する送受信以外の文を実行できる。

プリンタに対するSEND文を実行すると，メッセージが送信される。

送信メッセージ格納領域には，SEND文の実行前に論理データや制御データを設定しておかなければならない。

11.2.2　RECEIVE文（通信節による画面機能）

形式

機能

SEND文によるメッセージ送受信要求の完了を待ち，受信したメッセージを受け取る。

構文規則

通信記述名1には，RECEIVE文に対応する通信記述項の通信記述名を指定する。

一意名1には，受信メッセージ格納領域（入力論理マップ）を指定する。

一意名1には，次のデータ名は指定できない。

・指標データ項目

・アドレスデータ項目

・ブール項目

・オブジェクト参照データ項目

・オブジェクトプロパティ

・関数一意名

一意名1は，部分参照してはならない。

一意名1には強く型付けされた集団項目を指定できない。

一般規則

RECEIVE文は，NO REPLY指定のないSEND文に続いて実行しなければならない。NO REPLY指定のないSEND文からRECEIVE文の間に，ディスプレイに対する送受信以外の文を実行できる。

受信メッセージ格納領域は，受信の成功したRECEIVE文の実行後に参照できる。

11.2.3　TRANSCEIVE文（通信節による画面機能）

形式

機能

ディスプレイに対してメッセージの送信および受信をする。メッセージ受信の完了を待つ。また，送信だけをすることはできない。

構文規則

通信記述名1には，TRANSCEIVE文に対応する通信記述項の通信記述名を指定する。

一意名1には，送信メッセージ格納領域（出力論理マップ）を指定する。

一意名2には，受信メッセージ格納領域（入力論理マップ）を指定する。

一意名1および一意名2には，次のデータ名は指定できない。

・指標データ項目

・アドレスデータ項目

・ブール項目

・オブジェクト参照データ項目

・オブジェクトプロパティ

・関数一意名

一意名1および一意名2は，部分参照してはならない。

一意名2には強く型付けされた集団項目を指定できない。

一般規則

TRANSCEIVE文実行前に，通信記述項のMAP NAME句で指定したデータ名1のデータ項目に出力物理マップ名を設定しなければならない。

送信メッセージ格納領域は，TRANSCEIVE文の実行前に論理データや制御データを設定しておかなければならない。

受信メッセージ格納領域は，受信の成功したTRANSCEIVE文の実行後に参照できる。

11.2.4　DISABLE文（通信節による画面機能）

形式

機能

ディスプレイに出力された画面を消去する。

プリンタを閉じる。

構文規則

通信記述名1には，DISABLE文に対応する通信記述項の通信記述名を指定する。

一般規則

DISABLE文は，SEND文またはTRANSCEIVE文に続いて実行しなければならない。

12　画面節（SCREEN SECTION）による画面機能

この章では，画面節（SCREEN SECTION）を用いて画面データをディスプレイに表示したり，利用者が入力したデータをディスプレイから読み込んだりする機能について説明する。

この機能は，Linux COBOL2002では使用できない。Linux COBOL2002でこの機能に関する次に示す構文を記述した場合，重大エラーを出力する。

・SCREEN SECTION

・ACCEPT文（書き方4）

・DISPLAY文（書き方3）

この章で記載している終了キーとは，ACCEPT文の実行において，データの入力を終了するときに打鍵するキーであり，[Enter]キー，[実行]キー，[PF]キーが使用できる。

12.1　環境部（SCREEN SECTION）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.　環境部（ENVIRONMENT DIVISION）」

12.1.1　特殊名段落（SPECIAL-NAMES）（SCREEN SECTION）

形式

機能

各句の規則を12.1.2以降で述べる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.2.6　特殊名段落（SPECIAL-NAMES）」

12.1.2　CONSOLE IS CRT句（SCREEN SECTION）

形式

機能

「12.3.1　ACCEPT文（SCREEN SECTION）」および「12.3.2　DISPLAY文（SCREEN SECTION）」の書き方2で示される形式を許す。

一般規則

作用対象が画面項目でないACCEPT文またはDISPLAY文を書き方2で扱うようにする。この句がなければ標準仕様のACCEPT文またはDISPLAY文として扱われる。

12.1.3　CURSOR句（SCREEN SECTION）

形式

機能

ACCEPT文が用いるカーソルアドレスを格納するデータ名を指定する。これによって，ACCEPT文実行時のカーソルの初期位置を指定できる。また，プログラム中でACCEPT文終了時のカーソル位置を保持できる。

構文規則

データ名1は，そのプログラム，利用者定義関数，ファクトリ定義およびインスタンス定義の作業場所節または局所場所節で宣言されていなければならない。また，データ名1は，4文字長か6文字長でなければならない。

データ名1は，暗黙的にまたは明示的にUSAGE IS DISPLAYとして記述された符号なし整数基本項目を記述するものか，またはそのような項類の基本データ項目から成る集団項目を記述するものでなければならない。

一般規則

CURSOR句が指定されていない場合は，ACCEPT文実行時のデフォルトのカーソル位置は，画面上の最初の入力フィールドまたは更新フィールドの先頭となる。

データ名1が4文字長の場合，先頭の2文字は行番号，残る2文字はカラム番号と解釈される。

データ名1が6文字長の場合，先頭の3文字は行番号，残る3文字はカラム番号と解釈される。

カーソルアドレスが入力フィールドまたは更新フィールド中の位置を示していない場合，カーソルの初期位置は未定義として扱われ，最初の入力フィールドまたは更新フィールドの先頭に位置づけられる。

このシステムでは，カーソルの初期位置が未定義のときに，ACCEPT文終了時のカーソル位置をデータ名1に格納する。また，データ名1に不当な値が入っていた場合，カーソルの初期位置は未定義として扱われる。

CURSOR句は複数定義してはならない。

12.1.4　CRT STATUS句（SCREEN SECTION）

形式

機能

ACCEPT文の動作の終了の原因を表す値を格納するデータ名を指定する。

構文規則

データ名2は，そのプログラム，利用者定義関数，ファクトリ定義およびインスタンス定義の作業場所節または局所場所節で宣言されていなければならない。また，データ名2は，3文字長の集団項目でなければならない。

一般規則

CRT STATUS句が指定されている場合，データ名2は各ACCEPT文終了後，そのつど更新される。

データ名2の先頭の文字はCRT状態キー1であり，PICTURE 9 USAGE DISPLAYと記述されたものでなければならない。

CRT状態キー1は，ACCEPT文の動作の終了の原因を表す値であり，「表12‒1　CRT状態キー1，CRT状態キー2の意味」に示す値を取り得る。

データ名2の2番目の文字はCRT状態キー2であり，PICTURE Xと記述されたものでなければならない。

CRT状態キー2は，ACCEPT文の動作の終了の原因について，より詳細な情報を与える値であり，CRT状態キー1との組み合わせで「表12‒1　CRT状態キー1，CRT状態キー2の意味」に示す値を取り得る。

データ名2の3番目の文字は，CRT状態キー3であり，PICTURE Xと記述されたものでなければならない。

Windows COBOL2002では，CBLADTRMサービスルーチンによって終了キーを登録した場合，CRT状態キー2，3に終了キーコードが設定される。CBLADTRMサービスルーチンの詳細については，マニュアル「COBOL2002　ユーザーズガイド」のCBLADTRMサービスルーチンの説明を参照のこと。

CRT STATUS句は複数指定してはならない。

表12‒1　CRT状態キー1，CRT状態キー2の意味

CRT状態キー1

CRT状態キー2

CRT状態キー3

CRT状態キー1の意味

CRT状態キー2および3の意味

0

0

未使用

正常終了した（Enterキーが押されたかあるいは最終フィールド外にオートスキップした）。

Enterキーが押された。

1

未使用

最終フィールド外にオートスキップした。

1

X'00'〜X'FF'

未使用

ファンクションキーが押された。

ファンクションキー番号。

2

X'00'〜X'FF'

未使用

実行キーが押されたかあるいはCBLADTRMサービスルーチンで定義した終了キーが押された。

CBLADTRMサービスルーチンで定義した終了キーが押された（1バイトコード）。

X'80'

X'00'〜X'FF'（X'7E'は除く）

CBLADTRMサービスルーチンで定義した終了キーが押された（2バイトコード）。

X'80'

X'7E'

実行キーが押された。

9

X'00'

未使用

エラーが発生した。

エラー発生のため転記する項目がない。

12.2　データ部（SCREEN SECTION）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.　データ部（DATA DIVISION）」

12.2.1　画面節（SCREEN SECTION）

形式

機能

ACCEPT文とDISPLAY文で用いる画面操作機能を提供する。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.1.1　一般形式」

12.2.2　画面記述項（SCREEN SECTION）

形式

書き方1

書き方2

書き方3

機能

参照される画面項目の属性，動作，サイズ，位置を指定する。

構文規則

画面記述項はそれぞれ，01〜49または77のレベル番号で始まらなければならない。

基本画面記述項はそれぞれ，以下の句のうちのどれかを含まなければならない。

PICTURE，VALUE，BELL，BLANK，COLUMN，LINE

一つの画面項目に対して2回以上同じ句が指定された場合，階層的に最下位のレベルで指定されたものが有効となる。

画面名1または予約語FILLERのどちらかを指定する場合，各画面記述項のレベル番号の直後に記述しなければならない。

画面名1は画面記述項で記述される画面項目に名前を割り当てるものであり，利用者定義語の規則に従っていなければならない。

画面名1または予約語FILLERを省略する場合，記述される画面項目はFILLERが指定されたものとして扱われる。

画面名1およびFILLERの後に書く各句の順序は任意である。

予約語FILLERは画面項目名として使われてもよい。ただし，どんな環境下でもFILLER項目を明示的に参照することはできない。

レベル01の項目には，それぞれ画面名を指定しなければならない。

画面項目はACCEPT文とDISPLAY文でだけ参照できる。

ACCEPT文，DISPLAY文以外に画面項目が指定された場合エラーとする。

SCREEN SECTIONはプログラム，利用者定義関数，ファクトリ定義およびインスタンス定義だけに指定できる。

FROM，TO，USING指定で用いるデータ項目は，画面項目と関係している。USING指定は，FROMとTO指定の組み合わせでそれぞれに同じ一意名を指定することと等価である。

一般規則

書き方1は集団を記述するものである。

書き方2は定数画面項目に用いるものである。

書き方3はデータ項目である画面項目に用いるものである。

・入力フィールドは，記述項にTO指定を持つ画面項目である

・出力フィールドは，記述項にFROM指定を持つ画面項目である

・更新フィールドは，記述項にUSING指定を持つ画面項目である

・FROM指定およびTO指定と，USING指定は同時に指定してはならない。

更新フィールドの規則は，記述項にFROMとTO指定の両方を持つ画面項目にも適用される。ここで，FROMとTO指定は同じ一意名を参照していてもよい。

書き方1でSECURE句が指定されている場合，その指定はその集団項目に従属する入力フィールドそれぞれに対して適用される。

書き方1でAUTO，FOREGROUND-COLOR，BACKGROUND-COLOR，FULL，REQUIRED句が指定されている場合，その指定はその集団項目に従属する入力フィールドと更新フィールドそれぞれに対して適用される。

画面記述項にLINEとCOLUMN句を記述する場合，画面上で重なり合ったり，端末に即して規定されているCOLSやLINESの外にはみ出してしまうような指定をしてはいけない。ただしこのシステムでは65,536以上をエラーとする。

書き方2のVALUE句と書き方3のPICTURE句を同時に指定してはならない。

12.2.3　AUTO句（SCREEN SECTION）

形式

機能

ACCEPT文の実行中に，入力フィールドまたは更新フィールドの最後の文字が入力されたとき，カーソルを自動的に次のフィールドに移動させる。

構文規則

AUTOとAUTO-SKIPは同義語である。

AUTO句は定数画面項目の記述項に指定してはいけない。

一般規則

AUTO句が集団のレベルに指定された場合，その指定はその集団に従属する入力フィールドまたは更新フィールドそれぞれに対して適用される。

AUTO句はACCEPT文の実行中にだけ有効であり，DISPLAY文の実行中には無視される。

AUTO句は基本出力フィールドでは無視される。

入力フィールドが唯一の場合または現在のフィールドが集団に従属する最後のフィールドの場合，ACCEPT文は完了する。

12.2.4　BACKGROUND-COLOR句（SCREEN SECTION）

形式

機能

画面項目の背景色を指定する。

構文規則

BACKGROUND-COLORとBACKGROUND-COLOURは同義語である。

この句はあらゆる画面項目に指定してよい。

この句が集団のレベルに指定された場合，その指定はその集団のすべての基本従属項目に対して適用される。

整数5は0〜7の値でなければならない。

一般規則

この句はカラー画面でだけ有効である。

整数5は画面項目の背景色を指定する。値と色の関係は次に示すとおり。

値

色

0

黒

1

青

2

緑

3

空色

4

赤

5

紫色

6

黄

7

白

12.2.5　BELL句（SCREEN SECTION）

形式

機能

画面項目が表示開始されるとき，警告音を鳴らす。

構文規則

BELLとBEEPは同義語である。

BELL句は基本画面記述項にだけ指定できる。

一般規則

この句を指定することで，DISPLAY文の実行中，指定された画面項目の表示開始時に警告音が鳴る。

12.2.6　BLANK句（SCREEN SECTION）

形式

機能

画面項目が表示されるとき，画面の1行または画面全体をクリアする。

構文規則

BLANK SCREEN句は，どんな画面記述項に対しても指定できる。

BLANK LINE句は，基本画面記述項に対してだけ指定できる。

一般規則

BLANK SCREEN句は，同一記述内のほかの句よりも優先して画面項目のDISPLAY文実行前に実行される。この句が指定された場合，画面はクリアされる。

BLANK LINE句が指定された場合，この句を記述した画面項目が指定された行の1カラム目からその行の終わりまでがクリアされる。

BLANK句とERASE句のどちらも指定されなかった場合，画面項目が表示されるときには，その画面項目に対応する文字位置だけ書き換えられ，残りの部分の内容はそのまま保存される。

BLANK SCREEN句は，画面を標準値の背景色と前景色に戻す。

BLANK句はACCEPT文中では無視される。

12.2.7　BLANK WHEN ZERO句（SCREEN SECTION）

形式

機能

データ項目の値が0のとき，空白を表示する。

一般規則

BLANK WHEN ZERO句は，基本入力フィールドについては無視される。

ただし，このシステムでは有効とする。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.7　BLANK WHEN ZERO句」

12.2.8　BLINK句（SCREEN SECTION）

形式

このシステムではBLINK句を覚え書きとする。

機能

画面項目が画面上に表示されるとき，その画面項目を明滅させる。

構文規則

BLINK句はどんな画面記述項にも指定できる。

12.2.9　COLUMN句（SCREEN SECTION）

形式

機能

画面項目の画面上の水平方向の座標を指定する。

構文規則

COLUMNとCOLは同義語である。

PLUSと+は同義語である。

COLUMN句は基本画面記述項に対してだけ指定できる。

整数3は0以外の符号なし整数でなければならない。

一意名3は整数基本データ項目として記述されたものでなければならない。

一意名3は部分参照されてはならない。

一意名3はファイル節，作業場所節，局所場所節または連絡節で定義されなければならない。

一般規則

COLUMN句は，ACCEPT文またはDISPLAY文の動作時に画面項目が表示される位置のカラム番号を指定する。

COLUMN句に一意名または整数の指定はあるが，PLUS，+，-のどんな指定もない場合，この句は絶対カラム番号を与える。

COLUMN句でPLUS，+，-のどれかの指定がなされた場合，カラム番号は，その文が画面節（SCREEN SECTION）で定義されている一つ前の画面項目を画面に表示したかどうかにかかわらず，画面節（SCREEN SECTION）で定義されている一つ前の画面項目が終わる位置からの相対位置となる。これは，PICTUREまたはVALUE句で導かれる項目の現在の長さに依存する。

レベル01の場合，カラム番号の計算は画面の1カラム目から再スタートする。

ACCEPT文またはDISPLAY文で参照される最初の画面項目のカラム番号は，相対カラム番号で指定してはいけない。最初の画面項目が相対カラム番号で指定された場合は画面の1カラム目を基準として計算される。

LINE句を指定してCOLUMN句を省略した場合，COLUMN 1が仮定される。

LINE句，COLUMN句をともに省略した場合，次の規則が適用される。

・先行する画面項目が定義されていない場合，LINE 1，COLUMN 1が仮定される。

・先行する画面項目が定義されている場合，先行する画面項目の行およびCOLUMN PLUS 1が仮定される。

NUMBER指定を省略すると，PLUS 1が仮定される。

12.2.10　ERASE句（SCREEN SECTION）

形式

機能

行の一部またはカーソル位置以降の画面をクリアする。

構文規則

ERASE句は基本画面記述項に対してだけ指定できる。

一般規則

ERASE EOLが指定された場合，クリアはこの句が指定された画面項目の行および列の座標から始まり，その行の終わりまで続く。

ERASE EOSが指定された場合，クリアはこの句が指定された画面項目の行および列の座標から始まり，その画面の終わりまで続く。

BLANK句もERASE句も指定されていない場合，画面項目が表示されるときには，その画面項目に対応する文字位置だけ書き換えられ，残りの部分の内容はそのまま保存される。

ERASE句はACCEPT文中では無視される。

12.2.11　FOREGROUND-COLOR句（SCREEN SECTION）

形式

機能

画面項目の前景色を指定する。

構文規則

FOREGROUND-COLORとFOREGROUND-COLOURは同義語である。

この句はあらゆる画面項目に指定してよい。

この句が集団のレベルに指定された場合，その指定はその集団のすべての基本従属項目に対して適用される。

整数4は0〜7の値でなければならない。

一般規則

この句はカラー画面でだけ有効である。

整数4は画面項目の前景色を指定する。値と色の関係は次に示すとおり。

値

色

0

黒

1

青

2

緑

3

空色

4

赤

5

紫色

6

黄

7

白

この句が指定されていない場合，前景色はシステム依存の色となる。

HIGHLIGHT句が同時に指定された場合，前景色は明度と輝度を増す。例えば，黒は灰色になる。

12.2.12　FULL句（SCREEN SECTION）

形式

機能

フィールドを完全に空白のままにしておくか，またはそのフィールドをデータで満たすかのどちらかでなければならないことを指定する。

構文規則

FULLとLENGTH-CHECKは同義語である。

画面記述項にFULL句が指定された場合，JUSTIFIED句は指定してはならない。

FULL句は，入力フィールドまたは更新フィールドに対してだけ有効である。

この句が集団のレベルに指定された場合，その指定は従属するすべての入力フィールドまたは更新フィールドに適用される。

一般規則

FULL句は，画面項目を入力させるあらゆるACCEPT文の実行中に有効である。ただし，入力受け付け中の画面項目に，カーソルが位置づけられていること。

この句が満足されるまで，終了キーのタイプは拒否される。

画面項目が英数字の場合，この句を満たすためには，完全に空白であるかまたは最初と最後の文字が共に空白以外の文字であるかのどちらかでなければならない。

画面項目が数字または数字編集の場合，この句を満たすためには，値が0であるかまたはゼロ抑制が実施されるけた位置がないかのどちらかでなければならない。

更新フィールドにFULL句が指定された場合，PICTURE句のFROMまたはUSING指定で参照される一意名の内容またはオペレータの入力データのどちらかがこの句を満たすまで終了キーのタイプは拒否される。

入力待ちの状態を終了させるためにファンクションキーが用いられた場合は，FULL句は必ずしも有効ではない。

FULL句とREQUIRED句を同時に指定した場合，オペレータに常にフィールドを全部満たすことを要求するものとなる。

FULL句は，基本出力フィールドについては無視される。

12.2.13　GRID句（SCREEN SECTION）

形式

機能

画面項目が画面上に表示されるとき，その画面項目の各文字の左側に縦線を施す。

構文規則

GRID句はどんな画面記述項に対しても指定できる。

12.2.14　HIGHLIGHT句（SCREEN SECTION）

形式

機能

画面項目を画面上に最高明度で表示する。

構文規則

HIGHLIGHT句はどんな画面記述項に対しても指定できる。ただし，同じ画面項目に対しHIGHLIGHT句とLOWLIGHT句を同時に指定してはならない。

12.2.15　JUSTIFIED句（SCREEN SECTION）

形式

機能

画面項目にデータが転記されるとき，標準的でないけた寄せが行われる。

構文規則

JUSTIFIED句は，定数画面項目の記述項に指定してはならない。

JUSTIFIED句は，英数字編集項目，数字項目，数字編集項目および日本語編集項目に指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.36　JUSTIFIED句」

12.2.16　LEFTLINE句（SCREEN SECTION）

形式

機能

画面項目が画面上に表示されるとき，その画面項目の最左端の文字の左側に縦線を施す。

構文規則

LEFTLINE句はどんな画面記述項に対しても指定できる。

12.2.17　LINE句（SCREEN SECTION）

形式

機能

画面項目の画面上の垂直方向の座標を指定する。

構文規則

PLUSと+は同義語である。

LINE句は基本画面記述項に対してだけ指定できる。

整数2は0以外の符号なし整数でなければならない。

一意名2は整数基本データ項目として記述されたものでなければならない。

一意名2には部分参照があってはならない。

一意名2はファイル節，作業場所節，局所場所節または連絡節で定義されなければならない。

一般規則

LINE句は，COLUMN句とともに用いることで，画面項目の開始座標を確定する。LINE句は，垂直座標を指定する。

PLUS，+，-のどれも指定されていない場合，画面項目の画面上の絶対行番号を指定する。

PLUS，+，-のどれかが指定された場合，直前に定義された画面項目を含む行に対する相対行番号を指定する。

ACCEPT文またはDISPLAY文で参照される最初の画面項目の行番号は，相対行番号で指定してはいけない。

LINE句を省略した場合，以下の規則が適用される。

・先行する画面項目が定義されていない場合，LINE 1が仮定される。

・先行する画面項目が定義されている場合，先行する画面項目の行が仮定される。

NUMBER指定を省略するとPLUS 1が仮定される。

12.2.18　LOWLIGHT句（SCREEN SECTION）

形式

機能

画面項目を画面上に最低明度で表示する。

もし2段階の明度しか使用できない場合，通常の明度とLOWLIGHT句による明度とは同一となる。

構文規則

LOWLIGHT句はどんな画面記述項に対しても指定できる。ただし，同じ画面項目に対しHIGHLIGHT句とLOWLIGHT句を同時に指定してはならない。

12.2.19　OVERLINE句（SCREEN SECTION）

形式

機能

画面項目が画面上に表示されるとき，その画面項目の各文字の上側に横線を施す。

構文規則

OVERLINE句はどんな画面記述項に対しても指定できる。

12.2.20　PICTURE句（SCREEN SECTION）

形式

機能

基本画面項目の一般的な性質と編集要求を記述する。また，この基本画面項目が画面に表示されるときに内容が表示されるべきデータ項目，およびこの基本画面項目に入力または更新されたときに内容が格納されるべきデータ項目を指定する。

構文規則

各PICTURE句は，FROM，TOまたはUSING指定を含んでいなければならない。

一意名4，一意名5および一意名6は，ファイル節，作業場所節，局所場所節または連絡節で定義されなければならない。一意名4，一意名5および一意名6には部分参照があってはならない。

picture文字列にブール形式および外部浮動小数点形式を指定してはならない。

-UniObjGenオプションを指定した場合，定数1に日本語文字定数およびUTF-8で多バイトとなる文字を含む英数字定数を指定してはならない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

一般規則

データが一つのデータ項目から編集されて画面に転記され，異なるデータ項目に格納されるとき，画面項目のPICTURE句にはFROMとTO指定が共に記述されなければならない。

データが（ファイルのレコードの読み出し，更新，再書き込みのように）編集されて画面に転記され，同じデータ項目に格納されるとき，画面項目のPICTURE句にはUSING指定が記述されなければならない。

一意名4，一意名5，一意名6および定数1は，PICTURE句が用いる画面項目と同じ長さである必要はない。

データはMOVE文の規則に従って転記される。MOVE文の規則に合わない場合はエラーとする。

FROM指定がある場合，次の規則が適用される。

（a）DISPLAY文実行中，データは，picture文字列1に従って編集された後，一意名5または定数1から転記され，画面上に表示される。表示は，LINE句，COLUMN句またはDISPLAY文のAT指定で明示的または暗黙的に定義された画面上の位置から始まる。

（b）FROM指定は，ACCEPT文の実行中は何の意味も持たない。

TO指定がある場合，次の規則が適用される。

（a）ACCEPT文の実行が完了することによって，画面項目に対して入力されたデータは，picture文字列1に従って編集された後，一意名6に転記される。画面から画面項目に転記される順序は，ACCEPT文で参照される画面の画面記述項で画面項目が指定された順序である。

（b）TO指定は，DISPLAY文の実行中は何の意味も持たない。

USING指定またはFROMとTO指定がある場合，次の規則が適用される。

（a）DISPLAY文実行中，データは，一意名4，一意名5または定数1から一般規則4の（a）に記述されたように転記される。

（b）ACCEPT文の実行が完了することによって，画面項目に対して入力されたデータは，一意名4または一意名6に，一般規則5の（a）に記述されたように転記される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.54　PICTURE句」

使用方法

プログラムの記述にあたっては，非整数画面項目については，数字編集PICTURE文字列を指定することが推奨されている。つまり，省略された小数点を含む画面項目の表現はシステムに依存するので，記号「V」を使用しないことが望ましい。

12.2.21　PROMPT句（SCREEN SECTION）

形式

機能

ACCEPT文実行中に画面項目の空白の文字位置に印を付ける。

構文規則

PROMPT句は入力フィールドおよび更新フィールドに指定できる。出力フィールドに指定された場合は，このPROMPT句を無視する。

一意名1は1文字の英字項目，英数字項目または日本語項目でなければならない。また，一意名1には添字付けおよび部分参照があってはならない。

定数1は1文字の英数字定数，日本語文字定数または表意定数でなければならない。

-UniObjGenオプションを指定した場合，定数1に日本語文字定数およびUTF-8で多バイトとなる文字を含む英数字定数を指定してはならない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

一意名1はファイル節，作業場所節，局所場所節または連絡節で定義されなければならない。

PROMPT句は，英字項目，英数字項目および日本語項目に指定できる。その他の項目に指定された場合は，このPROMPT句を無視する。

一般規則

PROMPT句とSECURE句を同時に指定するとPROMPT句は無視される。

ACCEPT文が終了するとPROMPT文字は空白に置き換わる。

日本語フィールドに日本語項目または日本語文字定数以外を指定してはならない。

日本語以外のフィールドに日本語項目または日本語文字定数を指定してはならない。

12.2.22　REQUIRED句（SCREEN SECTION）

形式

機能

入力フィールドまたは更新フィールドに，少なくとも一つの文字を入力しなければならないことを指定する。

構文規則

REQUIREDとEMPTY-CHECKは同義語である。

集団項目にREQUIRED句が指定された場合，その指定は集団に従属するすべての入力フィールドまたは更新フィールドに対して適用される。

一般規則

REQUIRED句は，画面項目を入力させるあらゆるACCEPT文の実行中に有効である。ただし，入力受け付け中の画面項目に，カーソルが位置づけられていること。

この句が満足されるまで，終了キーのタイプは拒否され，カーソルはその画面項目の先頭に再度位置づけられる。

この句を満たすためには，英数字画面項目は少なくとも一つの空白（日本語項目の場合は倍角の空白）以外の文字を含み，数字画面項目は0でない値を持たなければならない。

更新フィールドにREQUIRED句が指定された場合，PICTURE句のFROMまたはUSING指定で参照される一意名の内容またはオペレータの入力データのどちらかがこの句を満たすまで終了キーのタイプは拒否される。

入力待ちを終了させるためにファンクションキーが用いられた場合，REQUIRED句は必ずしも有効ではない。

FULL句とREQUIRED句を共に指定した場合，フィールドが利用者によって常に全部満たされることを要求するものとなる。

REQUIRED句は，出力フィールドについては無視される。

12.2.23　REVERSE-VIDEO句（SCREEN SECTION）

形式

機能

デフォルトの前景色と背景色または指定された前景色と背景色を入れ換えた状態で画面項目を表示する。

構文規則

REVERSE-VIDEO句はどんな画面記述項に対しても指定できる。

12.2.24　SECURE句（SCREEN SECTION）

形式

機能

カーソルがこの句を指定した入力フィールド内にある間，オペレータがキーボードから入力したデータを画面上に表示しない。

構文規則

SECUREとNO-ECHOは同義語である。

SECURE句はどんなフィールドに対しても指定できる。ただし，出力フィールドに指定された場合，この句は無視される。

一般規則

SECURE句が集団のレベルに指定された場合，すべての入力フィールドおよび更新フィールドに対して適用される。

SECURE句が指定されたときは，入力フィールドまたは更新フィールドに入力された文字は画面上に表示されない。

12.2.25　SIGN句（SCREEN SECTION）

形式

機能

演算符号の表示の位置とモードを明示的に記述する必要がある場合，それらを指定する。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.73　SIGN句」

使用方法

プログラムの記述にあたっては，あらゆる符号付き数字画面項目のSIGN句の記述でSEPARATE CHARACTER句を指定することが推奨されている。

12.2.26　SIZE句（SCREEN SECTION）

形式

機能

画面項目のサイズを指定する。

構文規則

SIZE句は数字項目，数字編集項目以外の画面項目に対して指定できる。ただし，集団項目に指定した場合，この句は無視される。

一意名1は符号なしの整数項目でなければならない。一意名1には部分参照があってはならない。

整数1は符号なしでなければならない。

一意名1はファイル節，作業場所節，局所場所節または連絡節で定義されていなければならない。

一般規則

SIZE句は画面項目のバイト数を指定する。

SIZE句はゼロを指定すると無効となる。

SIZE句で指定された値が画面項目で指定されたPICTURE句またはVALUE句の値より小さい場合，画面項目の左側の部分だけが画面に表示される。

SIZE句で指定された値が画面項目で指定されたPICTURE句またはVALUE句の値より大きい場合，SIZE句で指定された値は無効となる。

SIZE句は最後に評価される。

12.2.27　UNDERLINE句（SCREEN SECTION）

形式

機能

画面項目が画面上に表示されるとき，その画面項目の各文字に下線を施す。

構文規則

UNDERLINE句はどんな画面記述項に対しても指定できる。

12.2.28　USAGE句（SCREEN SECTION）

形式

機能

計算機の記憶装置中のデータ項目の表現形式を指定する。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.86　USAGE句」

12.2.29　VALUE句（SCREEN SECTION）

形式

書き方1（データ項目）

機能

定数画面項目の定数値を定義する。

構文規則

定数1は英数字定数，日本語文字定数，記号文字または表意定数でなければならない。ただし，ALL定数が指定されても無視され，定数の繰り返しは行われない。

VALUE句は基本画面記述項にだけ指定できる。

-UniObjGenオプションを指定した場合，定数1に日本語文字定数およびUTF-8で多バイトとなる文字を含む英数字定数を指定してはならない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.88　VALUE句」

12.2.30　ZERO-FILL句（SCREEN SECTION）

形式

機能

フィールド中のユーザ入力のなかった文字位置の値が空白の場合，ゼロで置き換える。

構文規則

ZERO-FILL句は英字または英数字の入力フィールドおよび更新フィールドに指定できる。

一般規則

ZERO-FILL句はデータを画面項目から受け取り側作用対象のデータ項目へ転記するときに，値が空白の場合ゼロで置き換える。

12.3　手続き部（SCREEN SECTION）

画面操作機能に関係する手続き部の文は，ACCEPT文とDISPLAY文である。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

12.3.1　ACCEPT文（SCREEN SECTION）

形式

書き方4（画面節（SCREEN SECTION））（画面名）

書き方4（画面節（SCREEN SECTION））（一意名）

機能

データ項目の内容を画面に表示した後，画面からデータを取り込み，指定されたデータ項目に転記する。このACCEPT文の書き方は，画面節（SCREEN SECTION）で定義された画面項目と関係し，画面操作機能を提供する。

構文規則

画面名，一意名に指定できる属性を次に示す。

表12‒2　画面名と一意名に指定できる属性

属性

画面名と一意名　書き方4（画面名）

画面名と一意名　書き方4（一意名）

可変長集団項目

−

−

固定長集団項目

○

○

外部10進項目

○

○

内部10進項目

−

△

内部2進項目

−

△

外部浮動小数点項目

−

−

内部浮動小数点項目

−

−

数字編集項目

○

○

英字項目

○

○

英数字項目

○

○

英数字編集項目

○

○

外部ブール項目

−

−

内部ブール項目

−

−

指標データ項目

−

−

日本語項目

○

○

日本語編集項目

○

○

アドレスデータ項目

−

−

オブジェクト参照データ項目

−

−

（凡例）

　　　○：指定可

　　　△：集団項目が指定され，その基本従属項目の場合は無視される。

　　　−：指定不可

画面名1は，添字，部分参照されてはならない。書き方4（一意名）の一意名1は，部分参照されてはならない。一意名1が集団項目の場合，OCCURS句を含んではならない。

書き方4（一意名）の一意名1は，強く型付けされた集団項目であってはならない。

書き方4（画面名）の画面名1は少なくとも一つの入力フィールドまたは更新フィールドがなければならない。

書き方4（画面名）の一意名3および書き方4（一意名）の一意名4はPIC 9(4)またはPIC 9(6)のデータ項目でなければならない。また，一意名3，一意名4は，部分参照されてはならない。

書き方4（画面名）の整数3および書き方4（一意名）の整数3は，4けたまたは6けたでなければならない。

書き方4（画面名）の一意名1および一意名2，書き方4（一意名）の一意名2および一意名3は整数項目でなければならない。

書き方4（画面名）の一意名1，一意名2および一意名3は，部分参照されてはならない。

書き方4（画面名），書き方4（一意名）の整数1および整数2は符号なし整数でなければならない。ただし，符号がある場合はその値の絶対値を有効とする。

一般規則

AT指定は，ACCEPT文の動作を開始する位置の画面上での絶対アドレスを与える。

ON EXCEPTION指定がある場合，無条件文1はACCEPT文の動作が異常終了したときにだけ実行される。

NOT ON EXCEPTION指定がある場合，無条件文2はACCEPT文の動作が正常終了したときにだけ実行される。

AT指定がない場合，ACCEPT文の動作は画面の1行1カラム目から開始される。

書き方4（画面名）の一意名3および整数3，書き方4（一意名）の一意名4および整数3が4けたの場合，最初の2けたは行を，次の2けたはカラムを表す。6けたの場合は最初の3けたが行を，次の3けたがカラムを表す。

AT指定の行およびカラムがともにゼロの場合は，直前に実行されたACCEPT文またはDISPLAY文の終了した場所の行，次のカラムから実行される。

AT指定の行がゼロでAT指定のカラムがゼロでない場合は，直前に実行されたACCEPT文またはDISPLAY文が終了した行の指定したカラムから実行される。

AT指定のカラムがゼロでAT指定の行がゼロでない場合は，直前に実行されたACCEPT文またはDISPLAY文の終了した場所の次のカラムの指定した行から実行される。

カラム位置が画面の範囲内に入らない場合，そのフィールドは次の行に継続される。ただし，次の行に継続すると行番号が画面の範囲内に入らなくなる場合は，継続されない。

行番号が画面の範囲内に入らない場合，画面の範囲外のフィールドは無視される。

作用対象が一意名で，AT指定があるACCEPT文は，書き方4（一意名）として扱われる。

ただし，AT指定がなくても，特殊名段落でCONSOLE IS CRTが指定されている場合は，書き方4（一意名）として扱われる。

書き方4（一意名）で，一意名1が集団項目の場合，その基本項目はデータ部の記述に書いた順番に画面上に表示され，ACCEPT操作が受け付けられる。

ただし，基本項目の属性が外部10進項目，数字編集項目，英字項目，英数字項目，英数字編集項目，日本語項目，日本語編集項目でないか，無名項目（FILLER）であるときは，その項目の長さだけ，空白が表示され，ACCEPT操作は無視される。

すべての基本項目がACCEPT操作を無視される項目であるときにON EXCEPTION指定がされていた場合，ON EXCEPTIONの後に記述された無条件文1が実行される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.1　ACCEPT文」

12.3.2　DISPLAY文（SCREEN SECTION）

形式

書き方3（画面節（SCREEN SECTION））（画面名）

書き方3（画面節（SCREEN SECTION））（一意名／定数）

機能

指定されたデータ項目から画面にデータを転記する。このDISPLAY文の書き方は，画面節（SCREEN SECTION）で定義された画面項目と関係し，画面操作機能を提供する。

構文規則

画面名，一意名に指定できる属性は，ACCEPT文と同じである。「表12‒2　画面名と一意名に指定できる属性」を参照のこと。

画面名1は，添字，部分参照されてはならない。また，一意名1は，部分参照されてはならない。

書き方3（一意名／定数）の一意名は，強く型付けされた集団項目であってはならない。

書き方3（画面名）の画面名1は，少なくとも一つの出力フィールドまたは更新フィールドがなければならない。

書き方3（画面名）の一意名3および書き方3（一意名／定数）の一意名4はPIC 9(4)またはPIC 9(6)のデータ項目でなければならない。また，一意名3および一意名4は部分参照されてはならない。

書き方3（画面名）の整数3および書き方3（一意名／定数）の整数3は，4けたまたは6けたでなければならない。

書き方3（一意名／定数）の一意名1に画面名を指定してはならない。

書き方3（一意名／定数）の定数1にブール定数，浮動小数点定数，小数点を含む数字定数を指定してはならない。

書き方3（画面名）の一意名1および一意名2，書き方3（一意名／定数）の一意名2および一意名3は整数項目でなければならない。

書き方3（画面名）の一意名1，一意名2および一意名3は部分参照されてはならない。

書き方3（画面名），書き方3（一意名／定数）の整数1および整数2は符号なし整数でなければならない。ただし，符号がある場合は，その値の絶対値を有効とする。

書き方3（一意名／定数）の一意名1は，部分参照してはならない。

-UniObjGenオプションを指定した場合，書き方3（一意名／定数）の定数1に日本語文字定数およびUTF-8で多バイトとなる文字を含む英数字定数を指定してはならない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

一般規則

AT指定は，DISPLAY文の動作を開始する位置の画面上での絶対アドレスを与える。

AT指定がない場合，DISPLAY文の動作は，画面の1行1カラム目から開始される。

また，書き方3（一意名／定数）で2番目以降に指定した一意名1または定数1にAT指定がない場合，おのおの，前のデータ項目の後に残された現カーソル位置から始まる。

書き方3（画面名）の一意名3および整数3，書き方3（一意名／定数）の一意名4および整数3が4けたの場合，最初の2けたは行を，次の2けたはカラムを表す。6けたの場合は最初の3けたが行を，次の3けたがカラムを表す。

AT指定の行およびカラムがともにゼロの場合は，直前に実行されたACCEPT文またはDISPLAY文が終了した行の次のカラムから実行される。

AT指定の行がゼロで，AT指定のカラムがゼロでない場合は，直前に実行されたACCEPT文またはDISPLAY文が終了した場所の次の行の指定したカラムから実行される。

AT指定のカラムがゼロで，AT指定の行がゼロでない場合は，直前に実行されたACCEPT文またはDISPLAY文が終了した場所の次のカラムの指定した行から実行される。

カラム位置が画面の範囲内に入らない場合，そのフィールドは次の行に継続される。ただし，次の行に継続すると行番号が画面の範囲内に入らなくなる場合は，継続されない。

行番号が画面の範囲内に入らない場合，画面の範囲外のフィールドは無視される。

書き方3（一意名／定数）の一意名1はUSAGE DISPLAYでなければならない。

書き方3（一意名／定数）の定数1が以下の表意定数の場合，特別な効果を持つ。

SPACE：指定したカーソル位置から画面の終わりまでを消去する。

LOW-VALUE：カーソルを指定した位置へ移動する。

作用対象が一意名または定数で，AT指定があるDISPLAY文は，書き方3（一意名／定数）として扱われる。ただし，AT指定がなくても，特殊名段落でCONSOLE IS CRTが指定されている場合は，書き方3（一意名／定数）として扱われる。

書き方3（一意名／定数）で，一意名1が集団項目の場合，その基本項目はデータ部の記述に書いた順番に画面上に表示される。

ただし，基本項目の属性が外部10進項目，数字編集項目，英字項目，英数字項目，英数字編集項目，日本語項目，日本語編集項目でないときは，これを英数字項目として，その項目の長さだけ表示される。

また，基本項目が無名項目（FILLER）であるときは，属性によらず，項目の長さだけ，空白が表示される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.12　DISPLAY文」

13　画面節（WINDOW SECTION）による画面機能

この章では，画面節（WINDOW SECTION）を用いて画面データをディスプレイに表示したり，利用者が入力したデータをディスプレイから読み込んだりする機能について説明する。

この機能は，Linux COBOL2002では使用できない。Linux COBOL2002でこの機能に関する次に示す構文を記述した場合，重大エラーを出力する。

・WINDOW SECTION

・ACCEPT文（書き方5）

・CANCEL文（書き方2）

・DISPLAY文（書き方4，書き方5）

・ERASE文

・EXIT文（書き方7）

・REPLY文

・SET文（書き方13〜書き方16）

・USE文（書き方5，書き方6）

・WAIT文

この章で記載している終了キーとは，ACCEPT文およびREPLY文の実行において，データの入力を終了するときに打鍵するキーであり，[Enter]キー，[実行]キー，[PF]キーが使用できる。

13.1　概説（WINDOW SECTION）

画面節（WINDOW SECTION）による画面機能は，データ部の画面節（WINDOW SECTION）で画面の各フィールドの位置や属性を指定し，ACCEPT，DISPLAYまたはREPLY文によって簡単にデータを入出力する。

画面節（WINDOW SECTION）では画面の各フィールドをレベル構造を用いて指定する。つまり，上位のレベルで画面の行番号を指定し，下位のレベルでその行に含まれるフィールドのカラム番号と属性を指定する。手続き部ではREPLY文などによって，一つまたは幾つかのフィールドを一度に表示したり入力したりする。

画面入出力機能の簡単なプログラム例を次に示す。

〔プログラム例〕

       DATA       DIVISION.
       WORKING-STORAGE SECTION.
       77 TANKA PIC 9(5).
       WINDOW SECTION.…(1)
       01 GAMEN.…(2)
         02 LINE 5.…(3)
           03 OUTPUT COLUMN 15         PIC N(3)
                             VALUE NC'商品名'.…(4)
           03 SHOHIN INPUT COLUMN 30   PIC X(10).…(5)
         02  LINE  8.
           03 OUTPUT COLUMN 15         PIC N(3)
                             VALUE NC'数  量'.
           03 SURYO INPUT COLUMN 30    PIC 9(5).…(6)
         02 LINE 11.
           03 OUTPUT COLUMN 15         PIC N(3)
                             VALUE NC'金  額'.
           03 KINGAKU OUTPUT COLUMN 30 PIC ¥(11)
                             VALUE SPACE.…(7)
       PROCEDURE DIVISION.
             ERASE ALL WINDOW.…(8)
             REPLY GAMEN  UPON WINDOW.…(9)
             COMPUTE KINGAKU = TANKA * SURYO.…(10)
             DISPLAY KINGAKU UPON WINDOW.…(11)

(1)画面の各フィールドは画面節で指定する。

(2)画面全体に名前を付ける。

(3)画面の行番号（5行目）を指定する。

(4)5行，15列の位置に出力フィールドを指定する。このフィールドには「商品名」を表示する。

(5)5行，30列の位置に入力フィールドを指定する。このフィールドから商品名を入力する。

(6)8行，30列の位置に入力フィールドを指定する。このフィールドから数量を入力する。

(7)11行，30列の位置に出力フィールドを指定する。このフィールドには金額を編集して表示する。

(8)画面全体を消去する。

(9)初期画面を表示して，商品名と数量を入力する。つまり，入力した商品名の単価を，TANKAに求める処理，出力フィールドをすべて表示した後，入力フィールドへデータを入力する。

(10)画面節のデータ名は，一般の文で直接参照できる。

(11)COMPUTE文で計算した金額を表示する。

（例）

次の形式の初期画面を表示する。

商品名と数量のデータを入力する。

商品名に対応する単価を求め，

金額 = 単価×数量

を計算して画面のフィールドに表示する。

13.2　言語の基本概念（WINDOW SECTION）

13.2.1　画面入出力機能特殊レジスタ

画面入出力機能特殊レジスタ（WINDOW-STATUS，WINDOW-KEY，WINDOW-CURSORおよびWINDOW-KEYCODE）は，画面節（WINDOW SECTION）があるプログラムごと（プログラム単位，利用者定義関数単位，ファクトリ単位およびオブジェクト単位）に生成する。

画面入出力機能特殊レジスタは大域属性を持つ静的データである。

(1)　WINDOW-STATUS特殊レジスタ（WINDOW SECTION）

WINDOW-STATUS（終了状態）は画面節に対して作成する特殊レジスタの名前であり，暗に次の記述を持つ。

01 WINDOW-STATUS PIC 9(2).

WINDOW-STATUSには，ACCEPT文などの画面入出力文の終了状態が入る。

次に終了状態の値とその意味を示す。

表13‒1　終了状態の値とその意味

値

意味

00

画面入出力文の実行は正常終了した。

01

フィールド状態表示子（STATUS-n）がオンになる条件が発生した。

（注意）

フィールド状態表示子は，入出力を実行した各フィールドの特別な状態を示すものであり，入力データエラーなどを検出した場合にオンになる。この表示子はフィールド状態条件を指定したIF文で判定できる。ただし，このシステムでは常に00になる。フィールド状態条件の詳細については，「13.5.1　フィールド状態条件（WINDOW SECTION）」を参照のこと。

(2)　WINDOW-KEY特殊レジスタ（WINDOW SECTION）

WINDOW-KEY（終了キー）は，画面節に対して作成する特殊レジスタの名前であり，暗に次の記述を持つ。

01 WINDOW-KEY PIC 9(2).

WINDOW-KEYには，ACCEPTまたはREPLY文を実行してデータを入力したときに，オペレータが押した終了キーの種類を示す値が入る。

次に終了キーの値とその意味を示す。

表13‒2　終了キーの値とその意味

値

意味

00

[Enter] [実行]

01

[PF1]

:

:

24

[PF24]

25

未使用

:

:

99

未使用

注1

SET文でバックカーソルキーに設定したファンクションキーPFnは，終了キーとして使用できない。

注2

ユーザポップアップHELP動作中は，ヘルプキーに設定したファンクションキーPFnは，終了キーとして使用できない。

（例）WINDOW-KEYの参照

       ACCEPT GAMEN FROM WINDOW.
       EVALUATE WINDOW-KEY
         WHEN 1 THRU 5 PERFORM SHORI
         WHEN 6 THRU 9 PERFORM HYOJI
         WHEN 10       PERFORM TOKUI
         WHEN OTHER    PERFORM OWARI
       END-EVALUATE.

(3)　WINDOW-KEYCODE特殊レジスタ（WINDOW SECTION）

UNIX COBOL2002では，WINDOW-KEYCODE特殊レジスタ（WINDOW SECTION）は使用できない。

WINDOW-KEYCODE（終了キーコード）は，画面節に対して作成される特殊レジスタの名前であり，暗に次の記述を持つ。

01 WINDOW-KEYCODE PIC X(2).

WINDOW-KEYCODEには，WINDOW SECTIONのACCEPT文およびREPLY文を実行してデータを入力したときにオペレータが押した終了キーのコードが入る。

通常は[Enter]キー，[実行]キーおよび[PF]キーを終了キーとして使用できるが，CBLADTRMサービスルーチンを使用すると任意のキーを終了キーとして追加できる。追加された終了キーを押した場合は，押した終了キーに対応するコードが設定される。終了キーのコードが1バイトコードの場合は，WINDOW-KEYCODE特殊レジスタの前1バイトに終了キーのコードが設定され，後ろの1バイトには0（X'00'）が設定される。

CBLADTRMサービスルーチンの詳細については，マニュアル「COBOL2002　ユーザーズガイド」を参照のこと。

(4)　WINDOW-CURSOR特殊レジスタ（WINDOW SECTION）

WINDOW-CURSOR（終了カーソル位置）は画面節に対して作成される特殊レジスタの名前であり，次の記述を持つ。

01 WINDOW-CURSOR PIC 9(5).

WINDOW-CURSORには，ACCEPTまたはREPLY文を実行したときに，入力操作を終了した時点の画面上カーソル位置（0〜19,199）を設定する。

（注意）

画面上の1行1カラム目のカーソル位置を0とする。

13.2.2　データ項目のサイズ（WINDOW SECTION）

画面節のデータ項目は，PICTURE句とSIGN句の一般的な規則によってサイズが決まる。

日本語項目にLETTER IS FREE句の指定がある場合も，指定がない場合と同様のサイズとなる。

LETTER IS FREE句は，日本語項目に日本語と英数字のデータが混在することを示す。

（例）日本語のサイズ

PICTURE文字列

項目のサイズ（バイト）

FREE句なし

FREE句あり

N(10)

20

20

N(11)

22

22

13.2.3　画面フィールドの種類とそのサイズ（WINDOW SECTION）

画面フィールドは，画面節で指定したデータ項目のPICTURE句に従って次の3種類に分類される。

数字フィールド：数字（外部10進）および数字編集項目

英数字フィールド：英字，英数字，英数字編集項目

日本語フィールド：日本語，日本語編集項目

これらのフィールドは，各データ項目と1対1に対応する。つまり，画面節でデータ項目を指定すると，それが画面フィールドとなる。また，不当なデータは入力できない。

（例）データ項目とフィールドの関係

また，各フィールドはその使い方によって次のように分類できる（FIELD TYPE句で指定する）。

入力フィールド：データを入力する。

出力フィールド：データを表示する。

入出力フィールド：データを表示した後，入力する。

（例）フィールドの使い方による分類

これらのフィールドのサイズは，データ項目のサイズに等しい場合と異なる場合がある。サイズの決め方を次に示す。ただし，拡大文字の指定がある場合は，「表13‒3　フィールドのサイズの決め方」に示すフィールドのサイズの2倍となる。USING句と拡大文字の指定が同時にある場合は，USING句で求まるフィールドのサイズの2倍となる。

(1)　数字フィールドのサイズ

PICTURE文字列の「S」と「V」を含めてフィールドのサイズに数える。ただし，「V」が文字列の右端にあるときはフィールドのサイズに数えない。

（注意1）

この規則は符号と小数点をデータとして入力するときに有効である。

（注意2）

PICTURE文字列には文字「P」を書いてはならない。

（例）数字フィールドのサイズ

PICTURE文字列

SIGN SEPARATE

データ項目のサイズ

（バイト）

フィールドのサイズ

（バイト）

9(6)

なし

6

6

S9(6)

なし

6

7

S9(6)V

なし

6

7

S9(5)V9

なし

6

8

S9(5)

あり

6

6

S9(5)V9

あり

7

8

¥¥,¥¥9.9

−

8

8

(2)　英数字フィールドのサイズ

フィールドのサイズはデータ項目のサイズに等しい。

（例）英数字フィールドのサイズ

PICTURE文字列

データ項目のサイズ

（バイト）

フィールドのサイズ

（バイト）

X(20)

20

20

X(4)BX(5)

10

10

(3)　日本語フィールドのサイズ

フィールドのサイズは，PICTURE文字列の「N」と「B」はそれぞれ2バイト（日本語1文字）として計算した値に等しい。つまり，LETTER IS FREE句の有無に関係なくフィールドのサイズは同じである。

（例）日本語フィールドのサイズ

PICTURE文字列

LETTER IS FREE

データ項目のサイズ

（バイト）

フィールドのサイズ

（バイト）

N(10)

なし

20

20

N(11)

なし

22

22

N(3)BN(4)

なし

16

16

N(10)

あり

20

20

N(11)

あり

22

22

LETTER IS FREE句の有無によってデータ項目のサイズおよびフィールドのサイズは変わらない。

規則（1）〜（3）のまとめを次に示す。

表13‒3　フィールドのサイズの決め方

フィールドの種類

フィールドのサイズ

数字

数字項目

PICTURE文字列の文字「9」および「S」と「V」の個数。ただし，右側の「V」はフィールドのサイズに数えない。

数字編集項目

PICTURE文字列の各文字の個数。つまり，データ項目のサイズに等しい。

英数字

PICTURE文字列の各文字の個数。つまり，データ項目のサイズに等しい。

日本語

PICTURE文字列の文字「N」と「B」の個数×2。つまり，データ項目のサイズに等しい。

13.3　環境部（WINDOW SECTION）

13.3.1　特殊名段落（SPECIAL-NAMES）（WINDOW SECTION）

形式

機能

特殊名段落は，このシステムが定めた機能名と利用者が使う呼び名との関係，通貨編集用に使う文字およびコンマと小数点の機能の交換を指定する。

一般規則

機能名1としてWINDOW，PFn（n:1〜24）を書ける。

WINDOWは画面の名前である。WINDOWに関係づけた呼び名3は，ACCEPT文，DISPLAY文またはREPLY文で使用できる。

PFnはそれぞれ対応するファンクションキー[Fn]を意味する。PFnに関連づけた呼び名3はUSE文またはSET文で使用できる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.2.6　特殊名段落（SPECIAL-NAMES）」

13.3.2　入出力管理段落（WINDOW SECTION）

(1)　APPLY WINDOW-CONTROL-1句

形式

このシステムではAPPLY WINDOW-CONTROL-1句を覚え書きとみなす。

機能

SET（FIELD）文を使用してフィールドの属性を変更するときに，画面内容の変更をSET文の実行と同時にしないことを指定する。

一般規則

APPLY WINDOW-CONTROL-1句を指定した場合，SET文はフィールド属性の変更情報を内部的に退避し，次の画面入出力文（ACCEPT文，DISPLAY文，ERASE文，REPLY文）で画面に反映させる（画面入出力文はSET文で指定したフィールドを含まなくてもよい）。

この句は，最外側のプログラムで指定されたときだけ有効となり，内側のプログラムで指定されたときは無視される。

13.4　データ部（WINDOW SECTION）

画面節（WINDOW SECTION）で画面の様式を定義する。画面に対する入出力をする場合は，必ず画面節を定義しなければならない。

画面節はプログラム定義，利用者定義関数，ファクトリ定義およびインスタンス定義にだけ指定できる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.　データ部（DATA DIVISION）」

13.4.1　データ記述項（WINDOW SECTION）

形式

書き方1

書き方2

書き方3

書き方4

書き方5

注※

各句のそれぞれの書き方を示す。

書き方6

機能

データ記述項は，データ項目と画面のフィールドの性質を指定する。

規則

データ名の後に書く各句の順序は任意である。

書き方1と書き方2は集団項目を指定する。書き方2のレベル番号は02〜48でなければならない。

書き方3は基本項目を指定する。書き方3のレベル番号は02〜49でなければならない。

書き方4は77レベル記述項を指定する。

書き方5はPICTURE句のない基本項目を指定する。書き方5のレベル番号は02〜49でなければならない。PICTURE句のない基本項目およびPICTURE句のない基本項目だけから成る集団項目は，77レベル記述項と同じ扱いになる。

画面のフィールドは次の規則に従って2〜3段階の階層で記述する。

1画面のフィールドの全部または一部を記述する最初の記述項は書き方1でなければならない。

書き方1の記述項に続けて，書き方2，3の記述項を書ける。

書き方2の記述項を書いたときは，それに続けて少なくとも一つの書き方3の記述項を書くこと。

（注意）

書き方2の記述項の下位項目に別の書き方2の記述項を書いてもよい。この場合は4段階以上の階層になる。ただし，2〜3段階の階層で記述するのが一般的な使い方である。

（例）階層構造を用いた画面の定義

フィールドは3段階（A，B）または2段階（C）の階層で記述する。

書き方2の規則を次に示す。

LINE NUMBER句とREPEAT LINE句を同時に指定してはならない。

RULE LINE句を含む記述項には，REPEAT LINE句も指定すること。

この場合のRULE LINE句はRULE LINE TABLE句だけ指定できる。

書き方3の各句は次に示す組み合わせで指定すること。なお，表にない句の組み合わせは任意である。

表13‒4　書き方3の句の組み合わせ

句の組み合わせ

COLOR

HIGH-INTENSITY

LETTER

RESET

REVERSE

RULE LINE

SECRET

FREE

FREE以外

COLOR

×

×

○

○

○

○

○

×

HIGH-INTENSITY

×

×

○

○

○

○

○

×

LETTER

FREE

○

○

×

×

×

○

○

○

FREE以外

○

○

×

×

×

○

○

○

RESET

○

○

×

×

×

○

○

○

REVERSE

○

○

○

○

○

×

○

○

RULE LINE

○

○

○

○

○

○

×

○

SECRET

×

×

○

○

○

○

○

×

（凡例）

○：組み合わせ可能

×：組み合わせ不可能

書き方4および5の規則を次に示す。

書き方4の記述項には，COLUMN NUMBER句とLINE NUMBER句およびその他の句を少なくとも一つは書くこと。

書き方4，5の各句は「表13‒5　書き方4および5の句の組み合わせ」に示す組み合わせで指定すること。

書き方4，5は，画面に引くけい線やフィールドの属性を指定するものである。このため，データ項目には記憶域を割り当てない。したがって，書き方4，5のデータ名はDISPLAY（WINDOW）文またはERASE文だけで参照できる。

書き方5の記述項の上位項目にREPEAT LINE句，REPEAT COLUMN句があってはならない。また，下位項目があってもならない。

表13‒5　書き方4および5の句の組み合わせ

句の組み合わせ

COLOR

HIGH-INTENSITY

LETTER FREE以外

REVERSE

RULE LINE

SECRET

COLOR

×

×

○

○

○

×

HIGH-INTENSITY

×

×

○

○

○

×

LETTER FREE以外

○

○

×

○

○

○

REVERSE

○

○

○

×

○

○

RULE LINE

○

○

○

○

×

○

SECRET

×

×

○

○

○

×

（凡例）

○：組み合わせ可能

×：組み合わせ不可能

書き方6は条件変数に対応する条件名を指定する。書き方6の記述項は，書き方5の直後および下位項目が書き方5だけの集団項目の直後には指定できない。書き方6の規則については，標準仕様編を参照のこと。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.88　VALUE句」

画面節のデータを画面の入出力文（ACCEPT文，DISPLAY文，USE文，REPLY文）で部分参照はできない。画面節のデータを画面の入出力文以外の文で部分参照はできる。

画面節のデータ記述項にはEXTERNAL句を書けない。

画面節のデータ記述項にADDRESSED句を書くことはできない。また，画面節のデータ記述項にアドレスデータ項目は指定できない。

画面節のデータ記述項にPROPERTY句，SAME AS句，TYPE句，TYPEDEF句およびUSAGE OBJECT REFERENCE句を指定してはならない。

一つのフィールドおよび文字に対し，異なる属性を指定したときの動作は，保証しない。

13.4.2　BLANK WHEN ZERO句（WINDOW SECTION）

形式

機能

BLANK WHEN ZERO（ゼロならば空白）句は，項目の値がゼロのときにそれを空白にする。

規則

BLANK WHEN ZERO句は，数字または数字編集の基本項目に指定できる。

BLANK WHEN ZERO句を書いた項目にMOVE文やSOURCE句でデータを転記するときと，画面からデータ入力したときに項目の値がゼロのとき，この項目の値は空白になる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.7　BLANK WHEN ZERO句」

13.4.3　BLINK句（WINDOW SECTION）

形式

このシステムではBLINK句を覚え書きとみなす。

機能

BLINK（点滅）句は，フィールドのデータを点滅して表示する。

一般規則

BLINK句は基本項目，77レベル記述項およびPICTURE句のない基本項目に指定できる。

13.4.4　COLOR句（WINDOW SECTION）

形式

機能

COLOR（色）句は，フィールドのデータの色を変えて表示する。

規則

COLOR句は基本項目，77レベル記述項およびPICTURE句のない基本項目に指定できる。

COLOR句を書いた項目を表示したり入力したりすると，そのフィールドのデータは次の色で表示する。

GREEN：緑色

WHITE：白色

RED：赤色

BLUE：青色

MAGENTA：紫色

SKY-BLUE：空色

YELLOW：黄色

BLACK：黒色

なお，白黒のディスプレイに表示した場合はシステムに依存する。

COLOR句の指定がないときは，システムで定義された文字の色となる。また，けい線の色と背景色は常にシステムで定義された色となる。

（例）COLOR句の指定

       01 GAMEN.
         02 A PIC N(3) VALUE N'エラー'
              COLOR RED 〜
              :
           DISPLAY A UPON WINDOW.

DISPLAY文を実行すると，「エラー」の文字を赤色で表示する。このフィールドの色を再び変更するときは，SET文を使うとよい。

13.4.5　COLUMN NUMBER句（WINDOW SECTION）

形式

書き方3

書き方4

機能

COLUMN NUMBER（カラム番号）句は，画面の行の上でのカラム番号を指定する。

一般規則

書き方3のCOLUMN NUMBER句は，基本項目，77レベル記述項およびPICTURE句のない基本項目に指定する。

書き方4のCOLUMN NUMBER句は，77レベル記述項およびPICTURE句のない基本項目に指定する。

各整数は符号のない1〜3けたの数字でなければならない。整数は画面の行の上でのカラム番号を指定する。1行の最初のカラム番号は1であり，最後のカラム番号は，Windows COBOL2002では160，UNIX COBOL2002では80である。

書き方3の整数5は相対カラム番号を示す。なお，次の規則を適用する。

整数5の値はWindows COBOL2002では1〜159，UNIX COBOL2002では1〜79でなければならない。

整数5を指定すると，そのカラム番号は直前のカラム番号に整数5の値を加えた位置になる。

カラム番号は，Windows COBOL2002では160けた，UNIX COBOL2002では80けたを超えてはならない。

書き方3のデータ名は，カラム番号を可変に定義することを示す。なお，次の規則を適用する。

データ名は修飾してもよいが，添字付けしてはならない。

データ名は整数項目でなければならない。

データ名の値はWindows COBOL2002では1〜160，UNIX COBOL2002では1〜80でなければならない。それ以外の値のとき，実行時にカラム番号不正で実行時エラーとなる。

データ名を指定した項目の上位に，REPEAT LINE句およびREPEAT COLUMN句があってはならない。

書き方3

整数4は，フィールドの左端のカラム番号を示す。

整数4の値は，Windows COBOL2002では0または1〜160であること。0を指定した場合，そのフィールドは画面入出力文の対象外となる。UNIX COBOL2002では0または1〜80であること。0を指定した場合，そのフィールドは画面入出力文の対象外となる。

（例）0を指定した場合

       01 MAP0.
         02 MAP1 LINE 10.
           03 F1 COLUMN 10〜.…(1)
           03 F2 COLUMN 15〜.
         02 MAP2 LINE 10.
           03 F3 COLUMN 40〜.
           03 F4 COLUMN 50〜.

(1)を03 F1 COLUMN 0 にすると，

       PROCEDURE DIVISION.
            :
           MOVE SPACE TO F1.         …(2)
            :
           DISPLAY MAP0 UPON WINDOW. …(3)
            :
           ACCEPT MAP1 FROM WINDOW.  …(4)

(2)　F1にSPACEが設定される。

(3)　F1は対象外のため表示されない。

(4)　F1は対象外のためF2に対してデータを入力する。

（例）書き方3のデータ名の指定

       WORKING-STORAGE SECTION.
       77 I PIC 9(3).
                :
       WINDOW SECTION.
       01 GAMEN LINE 5.
         02 A OUTPUT COLUMN I PIC X(3).
                :
           MOVE 5 TO I.
           MOVE 'ABC' TO A.
           DISPLAY GAMEN UPON WINDOW.
           MOVE 10 TO I.
           MOVE 'XYZ' TO A.
           DISPLAY GAMEN UPON WINDOW.

一つのレベルの集団で，最初のCOLUMN NUMBER句には，絶対カラム番号を指定しなければならない。

1行中のフィールドは，任意の順序で書いてもよいが，その行の左のものから右のものへ順に指定するのが一般的な書き方である。なお，各フィールドは，重ならないように指定すること。

カラム番号の指定方法を次に示す。

図13‒1　書き方3のCOLUMN句のカラム番号

（例）書き方3のCOLUMN NUMBER句の指定

       01 GAMEN LINE 5.
         02 A OUTPUT COLUMN 10 PIC N(3) VALUE NC '商品名'.
         02 B INPUT  COLUMN 20 PIC X(15).
                 :
           REPLY GAMEN UPON WINDOW.

カラム番号は，フィールドの左端の文字位置を指定する。

書き方4

書き方4のCOLUMN NUMBER句は画面に引くけい線のカラム番号を指定する。この句とRULE LINE句およびLINE NUMBER句を組み合わせて自由なけい線を引ける。さらに，特定のフィールドに関係しないフィールド属性を定義するときにも，その列指定を指定する。

各整数の値は，Windows COBOL2002では1〜160でなければならない。ただし，整数6は0でもよい。UNIX COBOL2002では1〜80でなければならない。ただし，整数6は0でもよい。0を指定した場合，そのフィールドは画面入出力文の対象外となる。また，次の大小関係を満足しなければならない。

整数6<整数7≦整数8<整数9・・・

けい線の引き方を次に示す。なお，整数6，7に関する規則は，整数8，9およびこれらの繰り返しにも適用する。なお，けい線指定の詳細については，「13.4.20　RULE LINE句（WINDOW SECTION）」を参照のこと。

（a）整数6と整数7を指定した場合

横けい線（上または下）は，整数6のカラム番号の左端から整数7のカラム番号の左端まで引く。

（例）横けい線の指定

縦けい線は，整数6のカラム番号と整数7のカラム番号に引く。ただし，THROUGH指定をして縦けい線を引くのは一般的な用い方ではない。

（b）整数6だけを指定した場合

横けい線（上または下）は，整数6のカラム番号に引く。ただし，THROUGH指定を省略して縦けい線を引くのは一般的な用い方ではない。

縦けい線は，整数6のカラム番号に引く。縦けい線の行番号はLINE NUMBER句で指定する。

（例）縦けい線の指定

（例）PICTURE句のない基本項目による横けい線の指定

       01 GAMEN LINE 5.
         02 A OUTPUT COLUMN 10 PIC N(3) VALUE NC '商品名'.
         02 KEISEN-A COLUMN 10 THRU 16 RULE UNDER.
           :
           DISPLAY GAMEN UPON WINDOW.

           表示結果
                      商品名

13.4.6　記述項名句（WINDOW SECTION）

形式

書き方1（データ名）

機能

記述項名句は，記述するデータの名前を指定する。

一般規則

01レベルには，データ名を書かなくてはならない。

02〜49レベルと77レベルには，データ名を書いてもよいし，省略してもよい。また，FILLERを書いてもよい。

77レベル記述項およびPICTURE句のない基本項目は，画面入出力文のDISPLAY（WINDOW）文およびERASE（ATTRIBUTE）文だけで参照できる。

3.以外のデータ項目は，画面入出力文で参照できる。さらに，MOVE文やADD文などの一般の文でも参照できる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.22　記述項名句」

13.4.7　ENTER-CHECK句（WINDOW SECTION）

形式

機能

ENTER-CHECK（入力チェック）句は，入力または入出力フィールドにオペレータがデータを入力したかどうかを検査する。

一般規則

ENTER-CHECK句は，入力または入出力フィールドに対する基本項目に指定できる。

オペレータが，このフィールドに対し，未入力のまま送信動作（[実行]，[PFn]など）を要求した場合は，端末上で未入力エラーとなる。

13.4.8　FIELD TYPE句（WINDOW SECTION）

形式

機能

FIELD TYPE（フィールドの区分）句は，画面のフィールドの区分（入力，出力または入出力）を指定する。

一般形式

FIELD TYPE句は，PICTURE句のない基本項目でなければ01〜49のどんなレベルに書いてもよい。集団項目に書くと，その集団に従属する基本項目にそのFIELD TYPE句を適用する。

PICTURE句のない基本項目は，上位レベルのFIELD TYPE句に関係なく，区分はOUTPUTとみなされる。

上位と下位のレベルに同時にFIELD TYPE句を書いてもよい。同時に書くと，下位のレベルの句が有効になる。

（例）FIELD TYPE句の指定

       01 A OUTPUT.
         02 B 〜         :出力フィールド
         02 C INPUT 〜   :入力フィールド
         02 D 〜         :出力フィールド

基本項目およびそれを含む集団項目にFIELD TYPE句の指定がないと，その基本項目の区分はOUTPUTとなる。

INPUTは，そのフィールドが入力フィールドであることを示す。

OUTPUTは，そのフィールドが出力フィールドであることを示す。

I-Oは，そのフィールドが入出力フィールドであることを示す。

画面入出力文の各フィールドに対する処理内容を「表13‒6　フィールドに対する処理内容」に示す。

表13‒6　フィールドに対する処理内容

文

区分

入力フィールド

出力フィールド

入出力フィールド

ACCEPT

データの入力

終了キーの入力

データの入力

DISPLAY

何もしない

データの表示

データの表示

REPLY

データの入力

データの表示および

終了キーの入力

データの表示および

データの入力

13.4.9　GLOBAL句（WINDOW SECTION）

形式

機能

データ名が大域名であることを指定する。大域名は，それを記述するプログラムに含まれるすべてのプログラムで使用できる。

一般規則

GLOBAL句は01レベルにだけ指定できる。

同じデータ部で同じデータ名が指定された二つのデータ項目に対するデータ記述項は，GLOBAL句を含んではならない。

GLOBAL句を使用して記述されたデータ名は，大域名とする。大域名に関連するすべての条件名は，大域名とする。

大域名を記述するプログラムの中に直接または間接に含まれるプログラム文は，その名前を再度記述しないで，その名前を参照できる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.30　GLOBAL句」

13.4.10　HELP WINDOW句（WINDOW SECTION）

形式

機能

HELP WINDOW（HELP画面）句は，この句を書いたフィールドに対して，ユーザポップアップHELP画面名称，HELPキー，HELP画面の表示位置および表示範囲を指定する。

一般規則

HELP WINDOW句は，入力または入出力フィールドに指定できる。

HELP WINDOW句は，この句を指定したフィールドに対するユーザポップアップHELP画面名称，ヘルプキー，HELP画面の表示位置および表示範囲を指定する。

データ名は，画面節で定義された01レベルのデータ項目の名前でなければならない。この項目がHELP画面となる。

HELP画面は出力フィールドだけで構成されなければならない。

HELP KEY句で指定したファンクションキーがヘルプキーとなる。

ヘルプキーとして設定したファンクションキーは，ユーザポップアップHELP動作中はバックカーソルキーおよび終了キーとして用いることはできない。

LINE句およびCOLUMN句は，HELP画面の表示位置および表示範囲を指定する。各整数は，以下の式を満足しなければならない。

　1≦整数1<整数2≦24，

　1≦整数3<整数4≦80，

（注意）

整数2を省略した場合は，整数2=整数1となる。

ユーザポップアップHELPは，この句を指定したフィールドに対するACCEPT文またはREPLY文発行時に動作する。

HELP WINDOW句の使用例を次に示す。

（例）データの入力時に，その関連データの一覧を参照するヘルプ画面を表示するプログラム。

GAMENから商品コード《1》を入力時に，商品コード一覧を表示させる。

[PF1]を押すとヘルプ画面POP-MAPを《2》に表示する。

出力内容は，

　1行，1列に見出し語「コード一覧」

　2行，1列に空白（16文字）

　3行，1列に日本語データ（6文字）

　3行，13列に文字データ（4文字）

これを3回繰り返す。

図中の括弧内の行列数は，相対的な位置を示す。

プログラムは，ヘルプ画面の領域を定義するものと，ヘルプ画面の内容を定義するものとの二つから成る。

（例）HELP画面の領域の定義

       01 GAMEN.
         02 商品コード LINE 10 COLUMN 10 PIC 9(3) INPUT
            HELP WINDOW IS POP-MAP
            HELP KEY IS PF1
            HELP LINE 10 THRU 15
            HELP COLUMN 50 THRU 66.
         02 得意先コード LINE 20
                         COLUMN 10 PIC 9(3) INPUT.

（例）HELP画面の内容の定義

       01 POP-MAP.
         02 LINE 1 COLUMN 1 OUTPUT
          COLOR YELLOW REVERSE
          PIC N(5) VALUE NC 'コード一覧'.
         02 LINE 2 COLUMN 1 OUTPUT
          COLOR WHITE REVERSE
          PIC X(16) VALUE SPACE.
         02 REPEAT 3 TIMES.
           03 LINE 3.
             04 HD COLUMN 1 OUTPUT
                COLOR WHITE REVERSE
                PIC N(6).
             04 CO COLUMN 13 OUTPUT
                COLOR WHITE REVERSE
                PIC X(4).

HELP画面を定義する場合，次のことに注意する。

入力および入出力フィールドを定義してはならない。

HELP画面の表示位置は，HELP句を指定したフィールドと重ならない位置に指定する。

HELP画面は，別のフィールドへカーソルが移動するときおよび終了キーが入力されたときに消える。

13.4.11　HIGH-INTENSITY句（WINDOW SECTION）

形式

機能

HIGH-INTENSITY（高輝度）句は，フィールドのデータを高輝度で表示する。

一般規則

HIGH-INTENSITYは，基本項目，77レベル記述項およびPICTURE句のない基本項目に指定できる。

HIGH-INTENSITY句を書いた項目を表示したり入力したりすると，そのフィールドのデータは赤色で表示する。

なお，白黒のディスプレイに表示した場合はシステムに依存する。

13.4.12　JUSTIFIED句（WINDOW SECTION）

形式

機能

JUSTIFIED（けた寄せ）句は，項目にデータを収めるときに標準的でないけた寄せを指定する。

一般規則

JUSTIFIED句は英字，英数字または日本語の基本項目に指定できる。

JUSTIFIED句を書いた項目に，MOVE文やSOURCE句でデータを転記すると，画面からデータを入力したときに右端をそろえてデータを収める。

LETTER句を指定した項目には，JUSTIFIED句は指定できない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.36　JUSTIFIED句」

13.4.13　LETTER句（WINDOW SECTION）

形式

書き方1

書き方2

機能

LETTER（文字）句は，フィールドの文字の種類を指定する。

一般規則

書き方1

このシステムではKEISの指定がない場合でも，日本語フィールドには全角文字以外の入力ができないため，KEISは覚え書きとする。

FREE指定は，入力，出力または入出力フィールドに対する日本語項目に指定できる。

FREE指定は，日本語フィールドに全角文字と半角文字のデータが混在することを示す。

FREE指定を指定したデータ項目とフィールドのサイズは同じである。「13.2.2　データ項目のサイズ（WINDOW SECTION）」および「13.2.3　画面フィールドの種類とそのサイズ（WINDOW SECTION）」を参照のこと。

（例）データ項目とフィールドのサイズ

       03 A INPUT PIC N(5)
            LETTER IS FREE 〜

データ項目とフィールドのサイズは，同じ（10バイト）である。

FREE句を指定すると，その日本語フィールドには全角文字と半角文字の混在入力および表示ができる。FREE句を指定しないと，その日本語フィールドに半角文字は入力できない。

ALPHANUMERIC指定は入力または入出力フィールドに対する英数字フィールドを定義する基本項目に指定できる。

ALPHANUMERIC句を指定した場合，そのフィールドには全角入力はできない。また，挿入，削除などはすべて半角単位でする。

KEIS指定は入力または入出力フィールドに対する日本語フィールドを定義する基本項目に指定できる。

FREE指定とALPHANUMERIC指定またはFREE指定とKEIS指定は同時に指定できない。

書き方2

このシステムでは，EXTEND-1（横2倍），EXTEND-2（縦2倍），EXTEND-3（縦横2倍）を覚え書きとし，指定なしとして処理する。

WIDE指定は77レベル記述項，PICTURE句のない基本項目および入力，出力および入出力フィールドに対する基本項目に指定できる。ただし，入力または入出力フィールドに対する数字フィールドを定義する基本項目には指定できない。

LONGおよびDOUBLE指定は，77レベル記述項，PICTURE句のない基本項目および出力フィールドに対する基本項目に指定できる。

WIDE指定は，入力，出力および入出力フィールドの文字を拡大して表示する。また，LONGおよびDOUBLE指定は，出力フィールドの文字を拡大して表示することを示す。

WIDE：横2倍

LONG：縦2倍

DOUBLE：横2倍×縦2倍

WIDE指定，DOUBLE指定を書く場合，次のことに注意すること。

数字項目の場合は，拡大文字の指定がないときのフィールドのサイズの2倍のフィールドとなる。その他の場合は，データ項目の2倍のサイズのフィールドとなる。

（例）横2倍の拡大文字

       03 A PIC N(5)
            LETTER IS WIDE
            VALUE NC '売上報告書'.

LONG指定，DOUBLE指定を書く場合，次のことに注意すること。

指定したデータ項目が次の行にも確保される。

RULE LINE句を同時に指定した場合，RULE LINE句の指定がその行と次の行の両方にあるものとして処理される。

（例）縦2倍の拡大文字

       03 A LINE 1 COLUMN 30
            PIC N(5) LETTER LONG
            VALUE NC'売上報告書'.

上記の例のとき，LINE 2にも同じ記述があるものとして処理される。

DOUBLE指定には，4.，5.の両方の規則を適用する。

13.4.14　LINE NUMBER句（WINDOW SECTION）

形式

書き方3

書き方4

機能

LINE NUMBER（行番号）句は，画面上での行番号を指定する。

一般規則

書き方3のLINE NUMBER句は，01〜49のどんなレベルに書いてもよい。集団項目に書くと，その集団に従属するすべての基本項目にそのLINE NUMBER句を適用する。

書き方4のLINE NUMBER句は，77レベル記述項およびPICTURE句のない基本項目に指定する。

各整数は符号のない1〜3けたの数字でなければならない。整数は画面の行番号を指定する。画面の最初の行番号は1であり，最後の行番号はWindows COBOL2002では120，UNIX COBOL2002では24である。

書き方3

整数4は絶対行番号を示す。次の規則を適用する。

整数4の値はWindows COBOL2002では0または1〜120，UNIX COBOL2002では0または1〜24であること。0を指定した場合，そのフィールドは画面入出力命令の対象外となる。

（例）0を指定した場合

       01 MAP0.
         02 MAP1 LINE 10〜.…(1)
           03 F1 COLUMN 10〜.
           03 F2 COLUMN 15〜.
         02 MAP2 LINE 10 COLUMN 40〜.…(5)
         02 MAP3 LINE PLUS 5 COLUMN 50〜.…(6)

       (1)を”02 MAP1 LINE 0”にすると次のようになる。

       PROCEDURE DIVISION.
              :
           MOVE SPACE TO MAP1.　…(2)
              :
           DISPLAY MAP0 UPON WINDOW.…(3)
              :
           ACCEPT MAP1 FROM WINDOW.…(4)
       (2)　MAP1にSPACEが設定される。
       (3)　MAP1は対象外のため表示されない。

       (4)は対象となるフィールドがないため何も実行しない。
       ただし，次のようになる。
       ・WINDOW-STATUS：00
       ・WINDOW-KEY    ：00
       ・フィールドステータス:OFF
       (6)のようにPLUS指定がある場合，(5)を”02 MAP2 LINE 0 COLUMN 40.”
       とし，MAP2のフィールドを対象外とすると，(6)のMAP3のフィールドも
       対象外となる。

（例）書き方3のデータ名の指定例

       WORKING-STORAGE SECTION.
       77 I PIC 9(3).
            :
       WINDOW SECTION.
       01 GAMEN LINE I.
         02 A OUTPUT COLUMN 10 PIC X(3).
            :
           MOVE 5 TO I.
           MOVE 'ABC' TO A.
           DISPLAY GAMEN UPON WINDOW.
           MOVE 10 TO I.
           MOVE 'XYZ' TO A.
           DISPLAY GAMEN UPON WINDOW.

一つの01レベルの集団で，絶対行番号の値は任意の順序で書いてもよいし，同じ値のものを書いてもよい。ただし，上の行から下の行へ順に指定するのが一般的な書き方である。

一つの01レベルの集団で最初のLINE NUMBER句には，絶対行番号を指定すること。

整数5は相対行番号を示す。次の規則を適用する。

整数5の値はWindows COBOL2002では1〜119，UNIX COBOL2002では1〜23でなければならない。

整数5を指定したときの行番号は，直前の行番号に整数5の値を加えた位置となる。

行番号はWindows COBOL2002では120，UNIX COBOL2002では24を超えてはならない。

（例）絶対行番号と相対行番号の指定

       01 A.                  （行番号）
         02 B LINE 10〜.         10行
         02 C LINE PLUS 2〜.     12行
         02 D LINE PLUS 5 〜.    17行
         02 E LINE 20〜.         20行

行番号は，Windows COBOL2002では119以下，UNIX COBOL 2002では23以下の値で指定する。

データ名は行番号を可変に定義することを示す。

次の規則を適用する。

データ名は修飾してもよいが，添字付けおよび部分参照をしてはならない。

データ名は整数項目であること。

データ名の値はWindows COBOL2002では1〜120，UNIX COBOL2002では1〜24でなければならない。それ以外の値のときは，実行時に行カラム番号不正で実行時エラーとなる。

データ名を指定した項目の上位に，REPEAT LINE句およびREPEAT COLUMN句があってはならない。

データ名を指定した項目の下位に，REPEAT COLUMN句があってはならない。

上位と下位のレベルに同時にLINE NUMBER句またはREPEAT LINE句を書いてはならない。

すべての基本項目はLINE NUMBER句を含むか，またはこの句（もしくはREPEAT LINE句）を含む集団項目に従属していなければならない。

書き方4

書き方4のLINE NUMBER句は，画面に引くけい線の行番号を指定する。この句とRULE LINE句およびCOLUMN NUMBER句を組み合わせて自由なけい線を引ける。さらに，特定のフィールドに関係しないフィールド属性を定義するときも，その行番号を指定する。

各整数の値はWindows COBOL2002では1〜120でなければならない。ただし，整数6は0でもよい。UNIX COBOL2002では1〜24でなければならない。ただし，整数6は0でもよい。0を指定した場合，そのフィールドは画面入出力文の対象外となる。また，次に示す大小関係を満足しなければならない。

整数6<整数7<整数8<整数9・・・

けい線の引き方を次に示す。なお，整数6，整数7に関する規則は，整数8，整数9およびこれらの繰り返しにも適用する。

●整数6と整数7を指定した場合

横けい線（上または下）は，整数6の行番号から整数7の行番号までのすべての行に引く。

（注意）

THROUGH指定をして横けい線を引くのは一般的な使い方ではない。

縦けい線は，整数6の行番号から整数7の行番号まで引く。

（例）縦けい線の指定

●整数6だけを指定した場合

横けい線（上または下）は，整数6の行番号に引く。横けい線のカラム番号はCOLUMN NUMBER句で指定する。

（例）横けい線の指定例

縦けい線は整数6の行番号に引く。

（注意）

THROUGH指定を省略して縦けい線を引くのは一般的な使い方ではない。

PICTURE句のない基本項目はLINE NUMBER句を含むか，またはこの句を含む集団項目に従属していなければならない。

13.4.15　PICTURE句（WINDOW SECTION）

形式

書き方1（基本仕様）

機能

PICTURE句は，基本項目の性質と編集の形式を示す。

一般規則

PICTURE句は基本項目にだけ指定できる。すべての基本項目には，PICTURE句を指定しなければならない。

数字および数字編集項目を定めるPICTURE文字列には文字「P」を書いてはならない。

画面フィールドはPICTURE句に従って次の3種類に分類する。

数字フィールド：数字（外部10進），数字編集項目

英数字フィールド：英字，英数字，英数字編集項目

日本語フィールド：日本語，日本語編集項目

これらのフィールドのサイズは，データ項目のサイズに等しい場合とそうでない場合がある。このサイズの決め方については，「13.2.3　画面フィールドの種類とそのサイズ（WINDOW SECTION）」を参照のこと。

数字フィールドにデータを入力する場合と表示する場合の規則を次に示す。

データを入力する場合

入力データはPICTURE文字列に従って変換し，データ項目に格納する。

符号付きデータ項目に対し，符号なしでデータ入力をすると+を仮定する。

データ項目にV指定がある場合，小数点の位置を合わせて格納する。

入力のけた数がデータ項目のけた数より小さい場合は0を付けて格納する。

符号なしのデータ項目にはマイナスの値は入力できない。

（例）数字フィールドに入力したデータの変換

データを表示する場合

データ項目の値をフィールドに右詰めで表示する。このとき，必要ならば左側に空白を補って表示する。符号付きの数字項目を表示する場合，先頭または末尾に符号（+，-）を付けて表示する。仮想小数点（V）の指定がある場合，その位置にピリオド（.）を表示する。

（例）数字フィールドの表示

数字フィールドへは次のものが入力できる。

数字（0〜9），+，-，ピリオド，コンマ（DECIMAL-POINT IS COMMA句指定時だけ）

特殊名段落のDECIMAL-POINT IS COMMA句を指定すると，コンマと小数点の機能が入れ替わる。

+，-は内部的な符号に変換される。

符号ありの数字項目:（3）₁₆または（7）₁₆

符号なしの数字項目:（3）₁₆

英数字フィールドにデータを入力する場合と表示する場合の規則を次に示す。

データを入力する場合

入力データは左詰めまたは右詰め（RESET句があるとき）でデータ項目に格納する。ただし，編集文字の位置には入力できない。

（例）英数字フィールドに入力したデータの格納

データを表示する場合

データ項目の値をそのままフィールドに表示する。

日本語フィールドにデータを入力する場合と表示する場合の規則を次に示す。

データを入力する場合

入力データは左詰めまたは右詰め（RESET句，JUSTIFIED句があるとき）でデータ項目に格納する。

（例）日本語フィールドに入力したデータの格納

データを表示する場合

データ項目の値をフィールドに表示する。

（例）日本語フィールドの表示

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.54　PICTURE句」

13.4.16　REPEAT COLUMN句（WINDOW SECTION）

形式

機能

REPEAT COLUMN（繰り返し列）句は，同じデータ構造を横方向に繰り返す。

一般規則

REPEAT COLUMN句は，01レベルを除く集団項目に指定できる。

REPEAT COLUMN句を指定した記述項に従属する項目にはREPEAT COLUMN句を指定してはならない。

Windows COBOL2002では整数1および整数2は符号のない1〜3けたの数字で，整数1は1〜160，整数2は0〜158でなければならない。

UNIX COBOL2002では整数1および整数2は符号のない1〜2けたの数字で，整数1は1〜80，整数2は0〜78でなければならない。

REPEAT COLUMN句を書いた記述項のデータ名を参照するときには，添字を付ける。さらに，これに従属するデータ項目の名前を参照するときにも，添字を付ける。ただし，添字の付け方はマニュアル「COBOL2002　言語　標準仕様編」　「4.3.1(2)　添字（Subscript）」を参照のこと。

REPEAT COLUMN句の上位または下位項目にREPEAT LINE句が指定できる。このとき，表は2次元になる。

REPEAT COLUMN句の下位項目にはSOURCE句を書いてはならない。

REPEAT COLUMN句を指定したデータ項目には，LINE NUMBER句を書いてはならない。

REPEAT COLUMN句を指定したデータ項目の下位には，LINE NUMBER句およびCOLUMN NUMBER句を指定しなければならない。このCOLUMN NUMBER句で指定したカラム番号が，その項目の最初のカラム番号となり，整数1の回数だけ繰り返して配置される。

整数2はREPEAT COLUMN句で繰り返すデータ構造の間隔を指定する。整数1および整数2に従って配置した結果は，画面に収まる範囲内でなければならない。

WITH指定を省略すると，整数2は0を仮定する。

2回目以降の繰り返しでのカラム番号は次の手順で決定する。

REPEAT COLUMN句の下位構造の中の最小カラム番号を求める。

REPEAT COLUMN句の下位構造の中の最大カラム番号を求める。

（各COLUMN句の値+フィールド長）

繰り返し相対値を求める。

（b）-（a）+整数2

各COLUMN句の値に前項を加えた値が，2回目の繰り返しのカラム番号となる。

（例）フィールドの配列

       02 REPEAT COLUMN 2 TIMES WITH 3.
         03 LINE 5.
           04 A PIC X(5) COLUMN 10 〜.
           04 B PIC X(3) COLUMN 17 〜.
         03 LINE 6.
           04 C PIC X(5) COLUMN 13 〜.

構造内での最小のカラム番号:10

構造内での最大のカラム番号:20

繰り返し相対位置（（b）-（a）+WITH値）:13

2回目の繰り返しによるカラム番号:

A（2）=10+13=23

B（2）=17+13=30

C（2）=13+13=26

REPEAT COLUMN句の下位項目のフィールド位置は，左から右へ，上から下になるように定義することが望ましい。

REPEAT COLUMN句の上位項目には，RULE TABLE句を指定してはならない。

REPEAT COLUMN句の下位に指定された最初のLINE NUMBER句およびCOLUMN NUMBER句は絶対指定でなければならない。

（例）フィールドの配置

       02 REPEAT COLUMN 2 TIMES.
         03 LINE 5.
           04 A PIC X(5) COLUMN 10 〜.

（例）フィールドの配置（REPEAT LINEとの組み合わせ）

       02 REPEAT LINE 2 TIMES.
         03 REPEAT COLUMN 2 TIMES WITH 3.
           04 LINE 5.
             05 A PIC X(5) COLUMN 10 〜.
             05 B PIC X(3) COLUMN 18 〜.
           04 LINE 6.
             05 C PIC X(7) COLUMN 10 〜.

A（1，1）B（1，1）C（1，1）の右側に3だけ空け，同じものを繰り返す。

上記右への繰り返しの後，行間を空けないで次の行に繰り返す。

13.4.17　REPEAT LINE句（WINDOW SECTION）

形式

書き方1

書き方2

機能

REPEAT LINE（繰り返し行）句は同じ構造を縦方向に繰り返す。

一般規則

REPEAT LINE句は，01レベルを除く集団項目に指定できる。

REPEAT LINE句を指定した記述項に従属する項目には，REPEAT LINE句を指定してはならない。

Windows COBOL2002では整数1，整数2および整数3は符号のない1〜3けたの数字で，その値は1〜120でなければならない。ただし，書き方2の整数4は，0〜118でなければならない。

UNIX COBOL2002では整数1，整数2および整数3は符号のない1〜2けたの数字で，その値は1〜24でなければならない。ただし，書き方2の整数4は，0〜22でなければならない。

REPEAT LINE句を書いた記述項のデータ名を参照するときには，添字を付けなければならない。さらに，これに従属するデータ項目の名前を参照するときにも添字を付けなければならない。添字の付け方は表操作機能と同じである。

（例）添字の付け方

       02 A REPEAT LINE 5 THRU 7.
         03 B PIC 〜
         03 C PIC 〜
         03 D PIC 〜

データ名を参照するときには次のように添字を付ける。

DISPLAY A(1) UPON WINDOW.

MOVE NC '商品名' TO C(I).

REPEAT LINE句を含む記述項に従属する記述項には，SOURCE句を書いてはならない。

書き方1

REPEAT LINE句を書いたデータ項目およびそれに従属する項目には，LINE NUMBER句を書いてはならない。また，上位レベルにLINE NUMBER句を書いてはならない。

（例）REPEAT LINE句の正しい書き方

       01 A.
         02 B REPEAT LINE 〜.　　…正しい
           03 C PIC 〜
         02 D REPEAT LINE 〜.　　…正しい
           03 E PIC 〜

（例）REPEAT LINE句の誤った書き方

       01 A.
         02 B REPEAT LINE 〜.
           03 C REPEAT LINE 〜.　　…誤り
             04 D LINE NUMBER 〜　　…誤り

整数1および整数2は，画面の行番号を指定する。集団項目にREPEAT LINE句を書くと，この集団に属するすべての基本項目を整数1の行番号から整数2の行番号まで繰り返して配置する。

（例）REPEAT LINE句を用いたフィールドの配置

       02 A REPEAT LINE 5 THRU 10.
         03 B PIC 〜
         03 C PIC 〜

BとCのフィールドを5行から10行までの各行に繰り返して配置する。

整数2は整数1より大きい値を指定しなければならない。

書き方2

REPEAT LINE句を指定したデータ項目の下位には，LINE NUMBER句およびCOLUMN NUMBER句を指定しなければならない。このLINE NUMBER句で指定した行番号は，その項目が最初に現れる行番号となり，整数3の回数だけ繰り返して配置される。

整数4はREPEAT LINE句で繰り返す項目の間隔を指定する。整数3および整数4に従って配置した結果は，画面に収まる範囲内でなければならない。

WITH指定を省略すると，整数4は0とみなす。

REPEAT LINE句の下位に指定された最初のLINE NUMBER句およびCOLUMN NUMBER句は絶対指定でなければならない。

（例1）フィールドの配置

       02 REPEAT 2 TIMES.
         03 A LINE 6 COLUMN 5 〜.
         03 B LINE PLUS 2 COLUMN 10 〜.

AとBのフィールドを0行間隔で2回繰り返す。

（例2）フィールドの配置

       02 REPEAT 2 TIMES WITH 1.
         03 A LINE 6 COLUMN 5 〜.
         03 B LINE 8 COLUMN 10 〜.

AとBのフィールドを1行間隔で2回繰り返す。

（例3）フィールドの配置

       02 REPEAT LINE 2 COLUMN TIMES.
         03 A LINE 6 COLUMN 10 〜.
         03 B LINE 6 COLUMN 20 〜.

AとBのフィールドを0行間隔で2回繰り返す。これは，次のREPEAT句と同じ意味になる。

       02 REPEAT LINE 6 THRU 7.
         03 A COLUMN 10 〜.
         03 B COLUMN 20 〜.

（例4）フィールドの配置

       02 REPEAT 2 TIMES WITH 2.
         03 LINE 6.
           04 A COLUMN 5 〜.
           04 B COLUMN 10 〜.
         03 C LINE 7 COLUMN 5 〜.

AとBのフィールドとCのフィールドを2行間隔で2回繰り返す。

13.4.18　RESET句（WINDOW SECTION）

形式

機能

RESET（右寄せ）句は画面からの入力データを右に寄せて収めることを指定する。

一般規則

RESETとRESETTEDは同義語である。

RESET句は入力または入出力フィールドに対する英字，英数字および日本語の基本項目に指定できる。出力フィールドには指定してはならない。

定数1には次の規則を適用する。

英数字フィールドのとき，定数1は1文字の英数字定数，16進英数字定数または表意定数でなければならない。表意定数はZERO，SPACE，QUOTE，HIGH-VALUE，LOW-VALUEを指定できる。

ただし，-UniObjGenオプションを指定した場合，定数1にUTF-8で多バイトとなる文字が含まれてはならない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

日本語フィールドのとき，定数1は1文字（2バイト）の日本語文字定数でなければならない。

ただし，-UniObjGenオプションを指定した場合，定数1は指定してはならない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

RESET句は，ACCEPT文またはREPLY文を実行して入力したデータを，フィールドとデータ項目の両方に右端をそろえて収める。

定数1を書かないと左端には空白を埋める。

LETTER句を指定した項目には，RESET句は指定できない。

（例）RESET句の実行例

PICTURE

定数

入力データ

表示データ

データ項目の値

X(4)

なし

AB△△

△△AB

△△AB

X(4)

'*'

AB△△

**AB

**AB

（凡例）

△：空白

13.4.19　REVERSE句（WINDOW SECTION）

形式

機能

REVERSE（反転）句はフィールドの背景の色と文字の色を反転して表示する。

一般規則

REVERSE句は，基本項目，77レベル記述項およびPICTURE句のない基本項目に指定できる。

REVERSE句を書いた項目を表示したり入力したりすると，そのフィールドは背景の色と文字の色を反転して表示する。

13.4.20　RULE LINE句（WINDOW SECTION）

形式

書き方1

書き方2

書き方3

機能

RULE LINE（けい線）句は，画面に引くけい線を指定する。

一般規則

書き方1のRULE LINE句は基本項目に指定できる。77レベル記述項およびPICTURE句のない基本項目には指定できない。

書き方2のRULE LINE句は，基本項目，77レベル記述項およびPICTURE句のない基本項目に指定できる。

書き方3のRULE LINE句は，01レベルを除く集団項目に指定できる。

（注意）

上けい線および下けい線が2行以上にわたる場合，最初の1行だけにけい線が引かれる。

書き方1

SQUARE（枠けい線）指定は，画面のフィールドをけい線で囲むことを指定する。

（例）SQUARE句の指定

       03 LINE 10
          COLUMN 15
          RULE SQUARE.

書き方2

OVER（上けい線）指定，UNDER（下けい線）指定およびVERTICAL（縦けい線）指定は組み合わせて指定できる。ただし，同じ句を2回以上書いてはならない。

各指定は画面に引くけい線の種類を指定する。画面に引くけい線の種類を次に示す。

図13‒2　画面に引くけい線の種類

画面に引くけい線の行番号とカラム番号は，LINE NUMBER句とCOLUMN NUMBER句で指定する。

（例）画面の見出しに，上けい線と下けい線を引く

       77 A LINE 2 COLUMN 28 THRU 42
                   RULE LINE OVER, UNDER.
       01 B LINE 2.
         02 COLUMN 30 PIC N(5)
             VALUE NC'売上報告書'.
                      :
            DISPLAY A B UPON WINDOW.

書き方3

書き方3のRULE LINE句を含む記述項には，書き方1のREPEAT LINE句を含まなければならない。なお，この記述項に従属する記述項には，PICTURE句のない基本項目およびRULE LINE句を書いてはならない。

TABLE（表けい線）指定は，REPEAT LINE句で指定した行番号に，各基本項目を表形式のけい線で囲んで表示することを指定する。

表形式のけい線は次の規則を満足するときに表示する。

DISPLAY文またはREPLY文の一意名が，この句を書いた項目を含む上位の集団項目の名前である。

（例）TABLE（表けい線）の指定

       01 A.
         02 B REPEAT LINE 11 THRU 19 RULE LINE TABLE.
           03 C COLUMN 10 PIC 〜
           03 D COLUMN 20 PIC 〜
           03 E COLUMN 30 PIC 〜
                :
           DISPLAY A UPON WINDOW.

（DISPLAY文にはTABLE指定を書いた項目（B）を含む，上位の集団項目の名前（A）を指定する）

13.4.21　SECRET句（WINDOW SECTION）

形式

機能

SECRET（非表示）句は画面のフィールドのデータを表示しないことを指定する。

一般規則

SECRET句は，基本項目，77レベル記述項およびPICTURE句のない基本項目に指定できる。

SECRET句を書くと，そのフィールドの出力データまたは入力データは画面に表示されない。

13.4.22　SIGN句（WINDOW SECTION）

形式

機能

SIGN（符号）句は演算記号の位置を指定する。

一般規則

SIGN句はPICTURE文字列に文字「S」を含む外部10進項目に指定できる。

SIGN句は画面から入力したデータを外部10進項目に収めるときにも有効である。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.73　SIGN句」

13.4.23　SOURCE句（WINDOW SECTION）

形式

機能

SOURCE（源）句はデータ項目に転記する値の送り出し側作用対象のデータ項目を指定する。

一般規則

SOURCE句はすべての基本項目に指定できる。ただし，REPEAT LINE句を含む記述項に従属する記述項には，SOURCE句を書いてはならない。

一意名2は報告書節を除くデータ部のどんな節で定義したものであってもよい。

一意名2はデータ項目に転記する値の送り出し側作用対象データ項目を指定する。一意名2はMOVE文の規則に従って定義しておかなければならない。

SOURCE句を書くとACCEPT文，DISPLAY文，REPLY文，ERASE文またはSET文を実行する直前に，一意名2の内容をデータ項目に転記する暗黙的なMOVE文が実行される。

13.4.24　USAGE句（WINDOW SECTION）

形式

機能

USAGE（用途）句はデータの表現形式を指定する。

一般規則

USAGE句はすべての基本項目に指定できる。

DISPLAY（表示用）は，項目の内部表現形式が標準データ形式であることを示す。

USAGE句の指定がないと，その基本項目のUSAGEはDISPLAYとみなす。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.86　USAGE句」

13.4.25　USING句（WINDOW SECTION）

形式

機能

USING（指定）句は数字項目の表現形式を指定する。

一般規則

USING句は入出力フィールドまたは出力フィールドとして指定した数字基本項目にだけ指定できる。

編集文字列は，数字編集項目に対するPICTURE文字列と同じ規則で書かれていなければならない。

DISPLAY文およびREPLY文を用いて画面にデータを出力する場合，編集文字列に従って編集した結果を表示する。編集は画面上でするだけで項目の内容は変化しない。したがって，この項目は演算できる項目（数字項目）として扱える。

画面上のフィールド長は編集文字列による編集項目のサイズとなる。編集文字列はPICTURE句で指定した数字項目の長さと等しいか，またはそれ以上指定しなければならない。

BLANK WHEN ZERO句を同時に指定できない。

（例）USINGフィールドの表示

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.87　USING句」

13.4.26　VALUE句（WINDOW SECTION）

形式

書き方1（データ項目）

機能

VALUE（値）句は，データ項目の初期値を定める。

一般規則

VALUE句はすべての基本項目に指定できる。

VALUE句を書くと，プログラムの実行開始時にこの句で定めた値が項目の初期値となる。

-UniObjGenオプションを指定した場合，定数1に日本語文字定数およびUTF-8で多バイトとなる文字が含まれる英数字定数を指定してはならない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.88　VALUE句」

13.5　手続き部（WINDOW SECTION）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

13.5.1　フィールド状態条件（WINDOW SECTION）

形式

機能

フィールド状態条件は，画面入出力文を実行した後のフィールドの状態を調べる。

一般規則

一意名は画面節で指定した基本項目の名前でなければならない。集団項目や77レベル記述項およびPICTURE句のない基本項目の名前であってはならない。

STATUS-nをフィールド状態表示子という。STATUS-nは，画面入出力文を実行し，個々のフィールドの状態をオンまたはオフで示す。

条件にNOTを書かないと，フィールド状態表示子がオンのとき検査の結果は真となる。条件にNOTを書くと，この表示子がオフのとき検査の結果は真となる。

フィールド状態表示子は，該当する画面入出力文の実行によってオンまたはオフに設定され，その文を実行した後に参照できる。

このシステムではSTATUS-0〜STATUS-16は常にオフ（0）である。

13.5.2　ACCEPT文（WINDOW SECTION）

形式

書き方5（画面節（WINDOW SECTION））

機能

ACCEPT（小入力）文は画面からデータを入力してデータ項目へ格納する。

一般規則

呼び名2は環境部の特殊名段落でWINDOWに関係づけた名前でなければならない。

一意名7は，画面節で定義した01〜49レベルのデータ項目の名前でなければならない。77レベル記述項およびPICTURE句のない基本項目の名前であってはならない。また，PICTURE句のある基本項目を一つも含まない集団項目であってはならない。

一意名7が集団項目のときは，その集団に属するすべての入力フィールドと入出力フィールドに対してデータを入力する。ただし，その集団に入力フィールドまたは入出力フィールドが一つもない場合には，終了キーの打けんだけを待つ。SET文でPROTECT（保護）としている場合は，出力フィールドとみなされる。

（例）集団項目を指定したACCEPT文

       02 A.
         03 B INPUT　 〜:入力フィールド
         03 C I-O　　　 〜:入出力フィールド
         03 D OUTPUT 〜:出力フィールド
            :
           ACCEPT A FROM WINDOW.

ACCEPT文を実行すると，BとCのフィールドに対してデータを入力する。Dのフィールドに対しては何もしない。

一意名7が基本項目のときは，そのフィールドに対してだけデータを入力する。ただし，そのフィールドが出力フィールドの場合には，終了キーの打けんだけを待つ。

USING ONLY DATA指定は，データを入力するときに，フィールド属性を新たに設定しないことを示す。このフィールドには，ACCEPT文を実行する前にSET文またはDISPLAY文を実行してフィールド属性を設定しておく。

（例）USING ONLY DATA指定の使用

         03 A INPUT 〜
            :
           ACCEPT A FROM WINDOW.
                 |
           入力データのエラーを検出
                 |
           SET FIELD A TO REVERSE.              …(1)
           ACCEPT A FROM WINDOW USING ONLY DATA.…(2)

(1)エラーを検出したのでフィールドを反転する。

(2)フィールドを反転したままデータを再入力する。

AUTO-ADVANCE指定は項目の長さ分のデータ入力があると，終了キーの打けんを待たないで入力を終了する。ただし，長さ分を入力する前に終了キーを打けんすると，そこで入力は終了する。特にこのフィールドを自動入力フィールドという。

AUTO-ADVANCE指定を書いた場合，項目の長さ分のデータを入力して操作を終了したときは，WINDOW-KEY（終了キー）の値として「00」が設定される。

ACCEPT文で複数のフィールドを指定した場合，自動入力フィールドとなるのは，画面上で最右下に位置するフィールドである。

（例）AUTO-ADVANCE指定の画面表示フィールド

BUZZER指定は，データ入力の応答待ちになるとき，短発音のブザーを鳴動する。

FIRST FIELD指定は，データの入力待ちになるときに一意名8で指定したフィールドにカーソルを位置づける。この指定を書いたとき一意名8は一意名7に含まれる入力，または入出力フィールドとして定義された基本項目の名前でなければならない。

FIRST FIELD指定がない場合，画面の左上にある入力フィールドにカーソルを位置づける。入力フィールドがない場合，カーソル位置は変更されないで終了キー入力待ちとなる。

BY END KEY指定，IN NUMERIC MODE指定，AUTO-SHIFT指定，WITH NO WAIT指定は覚え書きとみなす。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.1　ACCEPT文」

13.5.3　CANCEL文（WINDOW SECTION）

形式

書き方2（先読みデータのキャンセル）

このシステムではCANCEL文を覚え書きとみなす。

機能

CANCEL（取り消し）文は先行入力したデータ（先読みデータ）を取り消す。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.5　CANCEL文」

13.5.4　DISPLAY文（WINDOW SECTION）

形式

書き方4（画面節（WINDOW SECTION））

書き方5（画面節（WINDOW SECTION））

機能

DISPLAY（表示）文はデータ項目の内容を画面に表示する。

一般規則

呼び名2は，環境部の特殊名段落でWINDOWに関係づけた名前でなければならない。

BUZZER指定は，データを表示するとき，短発音のブザーを鳴動する。

WITH TERMINAL IN ORDER指定は覚え書きとみなす。

書き方4

一意名6は画面節で指定したデータ項目の名前でなければならない。このデータ項目は01〜49または77のどんなレベルでもよい。

一意名6が集団項目のときは，その集団に属しているすべての基本項目に対して次の規則を適用する。

出力または入出力フィールドにはデータを表示する。

入力フィールドに対しては何もしない。

PICTURE句のない基本項目には，各句の指定に従ってけい線などを表示する。

一意名6が基本項目のときは，そのフィールドに対してだけデータを表示する。

一意名6が77レベル記述項またはPICTURE句のない基本項目のときは，各指定に従ってけい線などを表示する。

USING ONLY DATA指定はデータを出力するときに，フィールド属性を新たに設定しないことを示す。このフィールドには，DISPLAY文を実行する前にSET文またはDISPLAY文を実行してフィールド属性を設定しておく。

書き方5

THRUはTHROUGHの同義語である。

データ名は画面節で指定した01レベルまたは77レベルのデータ項目の名前でなければならない。

THROUGH指定を書いたとき，データ名2はデータ名1よりも後に定義されたものでなければならない。

書き方5のDISPLAY文は，範囲を指定してデータ項目の内容を表示する。THROUGH指定を書くと，データ名1からデータ名2までのすべてのデータ項目が表示の対象となる。データ名2が01レベルの集団項目のとき，これに属する最後の基本項目までがその範囲となる。

（例1）書き方5のDISPLAY文

       77 A 〜
       77 B 〜
       77 C 〜
       01 D.
         02 D1 〜
         02 D2 〜

上記のときDISPLAY A THRU C 〜はA，B，Cを表示する。

DISPLAY A THRU D 〜はA，B，C，D1，D2を表示する。

（例2）実際のコーディング例

       77 A LINE 3，5
            COLUMN 2 THRU 15
                  20 THRU 50
           RULE OVER，UNDER，VERTICAL.
       01 B OUTPUT.
         02 LINE 3 COLUMN 5  PIC N(3) VALUE NC'商品名'.
         02 LINE 5 COLUMN 5  PIC N(3) VALUE NC'数  量'.
       01 C INPUT.
         02 LINE 3 COLUMN 25 PIC 〜
         02 LINE 5 COLUMN 25 PIC 〜

次のDISPLAY文を実行すると上の画面が実行される。

DISPLAY A，B，C UPON WINDOW.

または

DISPLAY A THRU C UPON WINDOW.

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.12　DISPLAY文」

13.5.5　ERASE文（WINDOW SECTION）

形式

機能

ERASE（消去）文は画面またはフィールドを消去する。

一般規則

一意名1は画面節で指定した01〜49レベルのデータ項目の名前でなければならない。77レベル記述項およびPICTURE句のない基本項目の名前であってはならない。ただし，ERASE ATTRIBUTEの場合は，77レベルおよびPICTURE句のない基本項目を指定してもよい。

ALL WINDOW指定は画面全体を消去する。

ALL UNPROTECTED FIELD指定は，画面すべての非保護フィールド（入力または入出力フィールド）を空白文字で消去する。

UNPROTECTED FIELD指定には次の規則を適用する。

一意名1が集団項目のとき，その集団に属するすべての非保護フィールドを空白文字で消去する。

一意名1が基本項目のとき，その非保護フィールドを空白文字で消去する。

FIELD指定には次の規則を適用する。

一意名1が集団項目のとき，その集団に属するすべてのフィールドを空白文字で消去する。

一意名1が基本項目のとき，そのフィールドを空白文字で消去する。

ALL WINDOW以外の指定は，フィールドのデータだけを消去する。フィールド属性は元の値のままである。

ATTRIBUTE指定には次の規則を適用する。

一意名1が集団項目のとき，その集団に属するすべてのフィールドのデータとフィールド属性を消去する。

一意名1が基本項目のとき，そのフィールドのデータとフィールド属性を消去する。

一意名1が77レベル記述項またはPICTURE句のない基本項目のとき，けい線，色，拡大のフィールド属性を消去する。

（例）ERASE文の指定

       02 A.
         03 B INPUT 〜
         03 C OUTPUT 〜
         03 D I-O 〜
            :
           ERASE UNPROTECTED A. …(1)
           ERASE FIELD A.       …(2)

(1)はBとDを消去する。(2)はB，CおよびDを消去する。

13.5.6　EXIT USE文（WINDOW SECTION）

形式

書き方7（USE出口）

機能

EXIT USE（USE出口）文は，本文が書かれているUSE手続きに制御を移した文（ACCEPT文，REPLY文）に制御を移す。

一般規則

EXIT USE文は，USE（FOR WINDOW）手続き内でだけ指定できる。

EXIT USE文に制御が移った場合，次のように実行される。

手続き部分からACCEPT文またはREPLY文で制御が移った場合，その文に制御が移る。

USE手続きからACCEPT文またはREPLY文で制御が移った場合，その文に制御が移る。

ACCEPT文またはREPLY文以外で制御が移った場合，結果は保証しない。

（例1）手続き部分から制御が移った場合の実行順序

（例2）USE手続きから制御が移った場合の実行順序

13.5.7　REPLY文（WINDOW SECTION）

形式

書き方1

書き方2

機能

REPLY（応答）文はデータ項目の内容を画面に表示した後，画面からデータを入力する。

一般規則

書き方1

呼び名1は環境部の特殊名段落でWINDOWに関係づけた名前でなければならない。

一意名1は画面節で指定した01〜49レベルのデータ項目の名前でなければならない。77レベル記述項およびPICTURE句のない基本項目の名前であってはならない。また，PICTURE句のある基本項目を一つも含まない集団項目であってはならない。

REPLY文は同じ一意名に対してDISPLAY文とACCEPT文をこの順序で書いたのと同じである。

（例1）「REPLY A UPON WINDOW.」は次の文を順に書いたのと同じである。

           DISPLAY A UPON WINDOW.
           ACCEPT  A FROM WINDOW.

（例2）「REPLY A UPON WINDOW BUZZER.」は次の文を順に書いたのと同じである。

           DISPLAY A UPON WINDOW BUZZER.
           ACCEPT  A FROM WINDOW BUZZER.

書き方2

データ名1は画面節で定義された01レベルのデータ項目の名前でなければならない。この項目がポップアップ画面となる。

HELP LINE指定およびHELP COLUMN指定は，ポップアップ画面の表示位置および表示範囲を指定する。各データ名と整数は，次の式を満足していなければならない。

　1≦データ名2<データ名3≦24

　1≦データ名4<データ名5≦80

　1≦整数1<整数2≦24

　1≦整数3<整数4≦80

（注意）

データ名3を省略した場合は，データ名3=データ名2となり，整数2を省略した場合は整数2=整数1となる。

13.5.8　SET文（WINDOW SECTION）

形式

書き方13（画面節（WINDOW SECTION）の属性）

書き方14（バックカーソルキー）

書き方15（ファンクションキー）

書き方16（スクロール）

機能

SET（設定）文はフィールドの属性変更，バックカーソルキーの種類およびファンクションキー処理手続きの有効，無効を決める。

一般規則

書き方13

一意名13は，画面節で指定した集団項目または基本項目の名前でなければならない。77レベル記述項およびPICTURE句のない基本項目の名前であってはならない。

一意名13の記述項は，自分自身と上位および下位の記述項に，RULE LINE IS TABLE句を含んでいてはならない。

表示色の予約語とその意味を次に示す。

GREEN：緑色

WHITE：白色

RED：赤色

BLUE：青色

MAGENTA：紫色

SKY-BLUE：空色

YELLOW：黄色

BLACK：黒色

また，その他の予約語の意味を次に示す。

HIGH-INTENSITY：高輝度（このシステムでは赤色とする）

LOW-INTENSITY：低輝度（このシステムでは緑色とする）

[NO]BLINK：点滅[点滅しない]

[NO]REVERSE：反転[反転しない]

PROTECT：保護

SECRET：非表示

ATTRIBUTE：一意名自身の属性

表示色，HIGH-INTENSITY，LOW-INTENSITY，SECRETは，どれか一つだけを指定できる。これらのうちの一つと[NO]BLINK，[NO]REVERSEまたはPROTECTを組み合わせて指定してもよい。ただし，BLINKとSECRETを同時に指定しても，SECRETだけが有効となる。

書き方13のSET文は，一意名に対するフィールドの属性を各句で指定した属性に変更する。このとき，変更する属性は画面のフィールドの属性だけであり，一意名自身の属性は変更しない。

このシステムではBLINK句を覚え書きとみなす。

（例1）SET文の使用

           03 A INPUT 〜
                :
           ACCEPT A FROM WINDOW.
                |
           入力データのエラーを検出
                |
           SET FIELD A TO RED REVERSE.           …(1)
           ACCEPT A FROM WINDOW USING ONLY DATA. …(2)

(1)フィールドのデータを赤色で反転表示するように指定する。ただし，A自身の属性は元のままである。

(2)フィールドを赤色で反転表示してデータを再入力する。USING ONLY DATAを書かないとA自身の属性が設定されるため，期待する結果が得られない。

（例2）ATTRIBUTE指定の使用

           03 A INPUT 〜
                :
           SET FIELD A TO REVERSE.
                :
           SET FIELD A TO ATTRIBUTE.…(1)

(1)フィールド属性をA自身の属性に戻す。反転は通常表示に戻る。

書き方14

整数3は符号のない1〜2けたの数字で，その値は0〜24でなければならない。

書き方14のSET文はバックカーソルキーを設定または解除する。整数に1〜24を指定すると，次のファンクションキーをバックカーソルキーとして設定する。

整数3の値

対応するファンクションキー

1

[PF1]キー

2

[PF2]キー

:

:

24

[PF24]キー

整数3に0を指定すると，バックカーソルキーを解除する（バックカーソルキーとして設定したファンクションキーを通常の終了キーに戻す）。

オペレータがバックカーソルキーを打けんしたときの動作を次に示す。

カーソルが入力フィールドの先頭にある場合

直前（直前に入力フィールドがないときは最後）の入力フィールドの先頭にカーソルを位置づけて，データの入力を持つ。

カーソルが入力フィールドの途中にある場合

そのフィールドの先頭にカーソルを位置づけて，データの入力を待つ。

バックカーソルキーとして設定したファンクションキーは，終了キーとして用いることはできない。

書き方15

OFFを指定した場合，SET文で指定したファンクションキーに対応するファンクションキー処理手続きは無効（制御はファンクションキー処理手続きには移らないで，フィールド処理手続きに移る）となる。

ONを指定した場合，SET文で指定したファンクションキーに対応するファンクションキー処理手続きは有効（制御はファンクションキー処理手続きに移る）となる。

書き方16

このシステムは書き方16を覚え書きとみなす。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.43　SET文」

13.5.9　USE文（WINDOW SECTION）

形式

書き方5（フィールド処理）

書き方6（ファンクションキー処理）

一般規則

ファンクションキー処理手続きには，書き方6のUSE文を用いる。フィールド処理手続きには，書き方5のUSE文を用いる。

USE文は，宣言部分の節の見出しに続けて書き，終止符と空白で止める。この後に手続きを定義する段落を書く。

宣言部分の節からほかの宣言部分および手続き部分の節や段落を参照してはならない。手続き部分からは宣言部分の節や段落をPERFORM文でだけ参照できる。

一つの基本項目に対するACCEPT文またはREPLY文によってデータを入力したとき，USE手続きを実行する。作用対象が複数個指定されている場合や集団項目が指定されている場合は，USE手続きは実行しない。

USE FOR WINDOW節内にACCEPT文およびREPLY文がある場合，これらの文はそのUSE手続きの出口とみなされる。これらの文は，USE FOR WINDOW節外には記述できない。

一つのプログラム，メソッドおよび利用者定義関数の中でUSE FOR WINDOW節は，そのプログラム，メソッドおよび利用者定義関数の中でだけ参照される。したがって，USE FOR WINDOW節内のACCEPT文またはREPLY文がほかのUSE FOR WINDOW節を起動する場合，USE手続きの実行が終了すると，最初にUSE手続きを呼び出した文の次の文へ制御が返る。

（例）USE文の使用例１

ACCEPT文またはREPLY文に対応するフィールド処理手続きが定義されていない場合は，ファンクションキーを押してもファンクションキー処理手続きには制御が移らない。

USE FOR WINDOW節内にRESUME文を指定してはならない。USE FOR WINDOW内でRESUME文を実行したときの動作は保証しない。

書き方5

データ名1は，画面節で入力フィールドまたは入出力フィールドとして指定した基本項目の名前でなければならない。

データ名1で示すフィールドにデータを入力したとき，そのフィールドに対応するフィールド処理手続きに制御が渡る。

同じデータ名を二つ以上のUSE文に書いてはならない。

データ名1のREPEAT LINE句が記述されている項目に従属する項目の名前の場合，繰り返されるすべてのフィールドがUSE手続きへ制御を移す対象となる。このとき，データ名には添字を付けてはならない。

（例）USE文の使用例2

         02 REPEAT 3 TIMES.
           03 A I-O 〜.
         02 B REPEAT 5 THRU 10 〜.
           03 C INPUT 〜.
              :
         W1 SECTION.
           USE FOR WINDOW ON A.
              :
         W2 SECTION.
           USE FOR WINDOW ON C.
              :
           ACCEPT A(1) FROM WINDOW.  …(1)
           REPLY  A(3) UPON WINDOW.  …(2)
           ACCEPT C(5) FROM WINDOW.  …(3)

(1)と(2)はW1 SECTIONへ制御が移る。

(3)はW2 SECTIONへ制御が移る。

書き方6

呼び名1は環境部の特殊名段落でPF1〜PF24に関係づけた名前でなければならない。

PF1〜PF24はそれぞれ対応するファンクションキーを意味する。ACCEPT文またはREPLY文の終了キーとしてファンクションキー[PFn]を押したとき，キーに対応するファンクションキー処理手続きに制御を移す。ただし，SET BACK CURSOR KEY文で指定したファンクションキーと同じキーを指定した場合は，終了キーとはならないでバックカーソルキーとして扱う。また，HELP KEY句で指定したファンクションキーと同一キーを指定した場合は，終了キーとはならずにヘルプキーとして扱う。

（例）USE文の使用例3

       DECLARATIVES.
         W1 SECTION.
           USE FOR WINDOW ON A.
              :
         W2 SECTION.
           USE FOR WINDOW ON PF1.
              :
       END DECLARATIVES.
           ACCEPT A FROM WINDOW.  …(1)
           ACCEPT B FROM WINDOW.  …(2)

(1)のACCEPT文では，終了キーが[PF1]であればW2 SECTIONを実行する。終了キーが[PF1]以外であれば，W1 SECTIONを実行する。

(2)のACCEPT文では，対応するフィールド処理手続きが定義されていないため，終了キーが[PF1]であってもW2 SECTIONは実行しない。

同じファンクションキーを二つ以上のUSE文に書いてはならない。

一つのプログラム，メソッド，利用者定義関数内のUSE手続きは，そのプログラム，メソッド，利用者定義関数内だけで参照される。二つのプログラム間でUSE手続きの共用はできない。

（例）USE文の使用例4

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.53　USE文」

13.5.10　WAIT文（WINDOW SECTION）

形式

このシステムではWAIT文を覚え書きとみなす。

機能

WAIT（終了待ち）文は，オペレータのデータ入力の終了を待つ。

14　書式印刷機能

この章では，入出力文で書式印刷機能を実行するための言語の形式や規則について説明する。

Linux(x86) COBOL2002および64bit版 COBOL2002では，XMAP3を使用したプリンタ出力機能は使用できない。

14.1　環境部（書式印刷機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.　環境部（ENVIRONMENT DIVISION）」

14.1.1　入出力管理記述項（書式印刷機能）

(1)　APPLY FORMS-OVERLAY句

形式

機能

この句は，XMAP3使用時のプリンタに割り当てられたファイルに対して書式を用いた印刷をすることを指定する。詳細については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」の書式オーバレイの説明を参照のこと。

構文規則

データ名1は長さが8バイトである英字項目，英数字項目，または字類が英数字の固定長集団項目でなければならない。

ファイル名1は，XMAP3使用時のプリンタに割り当てる順ファイルでなければならない。

ファイル名1にはEXTERNAL句を指定したファイルは指定できない。

ファイル名1のASSIGN句には，定数またはデータ名は指定できない。

一般規則

データ名の領域に，印刷する書式を表す名称を8文字以下で，左詰めにして設定する。

印刷する書式を変更する場合は，データ名が表す領域に変更する書式名称を設定して，その内容を書き換えなければならない。

書式印刷を中止する場合は，データ名の領域に空白文字を設定する。空白文字を設定した直後に実行するWRITE文から書式を印刷しないでレコード内容だけを印刷する。

書式印刷を開始したとき，書式を変更および印刷中止すると，XMAP3使用時のプリンタは改ページする。

この書式制御は，ADVANCING指定を書いたWRITE文を使用した場合に利用できる。

この句は，LINAGE句を使用して論理ページを定義したファイルに指定できない。

14.2　データ部（書式印刷機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.　データ部（DATA DIVISION）」

14.2.1　データ記述項（書式印刷機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.13　データ記述項（data description entry）」

(1)　CHARACTER TYPE句

形式

機能

レコードを出力するWRITE文の実行によって，項目の文字サイズ，文字間隔，書体，横倍角開始を表す機能を指定する。この機能は，XMAP3を使用したプリンタ出力機能およびGDIモード印刷機能でも使用できる。CHARACTER TYPE句はESC/Pモード印刷には有効とならない。このため，レコード中に機能コードを設定して印刷制御をする必要がある。

UNIX COBOL2002では，-XMAP,LinePrintオプション未指定時は，CHARACTER TYPE句は覚え書きとする。

構文規則

XMAP3を使用したプリンタ出力機能の場合，POINT-lのlの値，FORMAT-nのnの値およびINTERVAL-iのiの値については，マニュアル「画面・帳票サポートシステム XMAP3 プログラミングガイド 帳票編」または「XMAP3 Version 5 画面・帳票サポートシステム XMAP3 プログラミングガイド」を参照のこと。

なお，INTERVAL指定をした場合，GAP指定はできない。

この句を書けるのは，ファイル節，作業場所節，局所場所節または連絡節で定義されるデータ記述項だけである。

この句は，RENAMES句とともに書けない。

DEPENDING ON指定のOCCURS句が含まれる集団項目およびその下位項目には，CHARACTER TYPE句を指定できない。

WRITE文で指定したレコード名およびその下位項目，またはWRITE文のFROM指定の一意名およびその下位項目も，REDEFINES句とCHARACTER TYPE句を同時に指定してはならない。

（例）

       01 OUTREC.
         02 A    PIC X(2).
         02 B.
           03 C  PIC X(4).
           03 D  PIC N(2) CHARACTER TYPE IS POINT-7.
         02 E REDEFINES B.
           03 F  PIC N(2).
           03 G  PIC X(4).
         02 H    PIC S9(5).
           :
           WRITE A-REC FROM OUTREC. （誤）…(1)
           WRITE A-REC FROM B.      （正）…(2)

(1)のWRITE文は指定した一意名の下位項目の中にREDEFINES句とCHARACTER TYPE句を同時に指定しているので誤りである。

(2)のWRITE文は正しい書き方である。

WRITE文のFROM指定の一意名またはその下位項目にCHARACTER TYPE句が指定されているとき，その一意名は，部分参照されていてはならない。

WRITE文のFROM指定の一意名またはその下位項目にCHARACTER TYPE句が指定されているとき，その項目を含むレコード中にDISPLAY以外のUSAGE句を指定してはならない。

UNIX COBOL2002では，WRITEするレコード中にCHARACTER TYPE句が含まれるファイルのASSIGN句には，定数指定またはデータ名指定はできない。

WRITEするレコード中にCHARACTER TYPE句が含まれるファイルには，順ファイル以外は指定できない。

CHARACTER TYPE句を処理するファイルのレコード長は，384バイト以下でなければならない。

CHARACTER TYPE句を処理するファイルに，FROM指定なしのWRITE文とFROM指定ありのWRITE文は同時に使用できない。

CHARACTER TYPE句の指定がある項目を含むレコード中に，外部属性を持つ指標名は指定できない。

KEIS，POINT-l，GAP-m，FORMAT-n，INTERVAL-i，SHORT，SHORT-1の語は予約語ではない。

これらの語がCHARACTER TYPE句の一部であるかどうかは文脈で判断される。

これらの語をレベル番号の直後に書いた場合，これらの語がデータ名として扱われる。

（例）

03 POINT-7 PIC N(2).

と書くと，「FILLER」を書くのを省略した無名項目ではなく，データ名「POINT-7」が指定されたものとみなされる。

一般規則

POINT-lを書くことによって，文字サイズ（ポイント）を指定できる。lの値はポイント数を示す。

上位項目に異なる値のPOINT-lが指定されていると，そのポイントに戻すための処理が項目の後で実行される。上位項目にPOINT-lの指定がない場合は，省略値のポイントに戻すための処理が項目の後で実行される。ただし，後に続く項目がなければ，元に戻すための処理はしない。

lの値は，XMAP3で使用できるポイント数でなければならない（XMAP3使用時だけ）。

POINT-lを書かない場合の省略値のポイントは，GDIモード印刷機能のときは，実行支援の［字サイズ］で指定したポイントとなる。また，XMAP3を使用するときは，XMAP3で定義したポイントとなる。

（例）

       01 A.
         02 A-F  PIC X.
         02 A0 CHARACTER TYPE IS POINT-14.
           03 A1 PIC NN VALUE N'下期'.
           03 A2 PIC N(5) POINT-19 VALUE N'実用新案権'.
           03 A3 PIC NN VALUE N'一覧'.

とすると，プリンタへの出力は，次のようになる。

FORMAT-nを書くことによって，書体を指定できる。

上位項目に異なる値のFORMAT-nが指定されていると，その書体に戻すための処理が項目の後で実行される。上位項目にFORMAT-nの指定がない場合は，省略値の書体に戻すための処理が項目の後で実行される。ただし，後に続く項目がなければ，元に戻すための処理はしない。

FORMAT-nを書かないときの省略値の書体は，実行支援の［書体］の初期状態で指定したフォントとなる。また，XMAP3を使用するときは，XMAP3で定義したフォントとなる。

（例）

       01 A.
         02 A-F  PIC X.
         02 A0 CHARACTER TYPE IS FORMAT-2.
           03 A1 PIC NN VALUE N'下期'.
           03 A2 PIC N(5) FORMAT-1 VALUE N'実用新案権'.
           03 A3 PIC NN VALUE N'一覧'.

とすると，プリンタへの出力は，次のようになる。

INTERVAL-iを書くことによって，各文字間隔を指定できる。

上位項目に異なる値のINTERVAL-iが指定されていると，その文字間隔に戻すための処理が項目の後で実行される。上位項目にINTERVAL-iの指定がない場合は，省略値の文字間隔に戻すための処理が項目の後で実行される。ただし，後に続く項目がなければ，元に戻すための処理はしない。

INTERVAL-iを書かないときの省略値の文字間隔は，0ポイントである。

実行支援の[全角文字の間隔を半角文字の間隔の2倍で印刷]チェックボックスをチェックしない場合は，全角文字と半角文字の字間隔はi/2ポイントとなる。このチェックボックスをチェックした場合，全角文字の字間隔はiポイント，半角文字の字間隔はi/2ポイントとなる。

（例）

       01 A.
         02 A-F  PIC X.
         02 A0 CHARACTER TYPE IS INTERVAL-0.
           03 A1 PIC NN VALUE N'下期'.
           03 A2 PIC N(5) INTERVAL-8 VALUE N'実用新案権'.
           03 A3 PIC NN VALUE N'一覧'.

とすると，プリンタへの出力は，次のようになる。

WIDEを書くことによって，横倍角を指定できる。

上位項目にWIDEの指定がない場合は，省略値の字体に戻すための処理が項目の後で実行される。ただし，後に続く項目がなければ，元に戻すための処理はしない。WIDEを書くことによって，字間隔も2倍になる。

（例）

       01 A.
         02 A-F  PIC X.
         02 A0.
           03 A1 PIC NN VALUE N'下期'.
           03 A2 PIC N(5) WIDE VALUE N'実用新案権'.
           03 A3 PIC NN VALUE N'一覧'.

とすると，プリンタへの出力は，次のようになる。

これらを指定しないと，初期状態で印刷する。1行分の出力を終えたときも初期状態に戻る。なお，初期状態は，GDIモード印刷機能のとき，実行支援の初期状態の指定に従う。また，XMAP3使用のとき，XMAP3で定義した値に従う。

15　アドレス操作機能

この章では，参照したいデータを記憶領域中の番地でポイントするアドレス操作機能について説明する。

15.1　アドレス操作機能とは

アドレス操作機能とは，参照したいデータを記憶領域中の番地でポイントする方法である。ただし，誤った操作をすると，目的以外の領域を破壊してしまうことがある。

アドレス操作機能を用いる場合，アドレス操作を熟知している必要がある。

以降では，COBOLでアドレスの操作をするための言語仕様について記述する。

15.2　データの表現形式（アドレス操作機能）

15.2.1　アドレス名

アドレス名は，利用者定義語である。利用者定義語の構成規則に従う。

アドレス名は，データ記述項の作業場所節または局所場所節で，ADDRESSED句を指定することによって定義される。アドレス名には，アドレスが入るための4バイトの記憶領域がとられ，用途がBINARYで符号なし4バイトの項目と同じに扱う（64bit版 COBOL2002では，アドレス名はアドレスが入るための8バイトの記憶領域がとられ，用途がBINARYで符号なし8バイトの項目と同じに扱う）。

アドレス名には，COBOLが取り扱うデータ項目の項類の概念が適用されない。

15.2.2　アドレスデータ項目

アドレスデータ項目は，USAGE句で用途はアドレス（address）と指定された項目である。アドレス名の内容を一時的に退避しておき，それを再びアドレス名に戻すためのものである。

アドレスデータ項目には，COBOLが取り扱うデータ項目の項類の概念が適用されない。

15.3　データ部（アドレス操作機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.　データ部（DATA DIVISION）」

15.3.1　アドレス名によって参照されるデータ項目の定義

アドレス名によって参照されるデータ項目はADDRESSED句を必須とする。

(1)　ADDRESSED句（アドレス操作機能）

形式

（注意）

形式中のレベル番号01または77とデータ名1はADDRESSED句の一部ではないが，説明の便宜上示してある。

機能

データ項目がアドレスにより参照されることを指定する。

構文規則

ADDRESSED句は作業場所節または局所場所節の01または77レベルのデータ記述項にだけ指定できる。

01レベルにGLOBAL句を指定すると，アドレス名も大域名となる。EXTERNAL句は，ADDRESSED句と同時に指定できない。

アドレス名1は修飾できない。したがって，アドレス名1と同じ名前のデータ名があってはならない。

ADDRESSED句とREDEFINES句を同じデータ記述項に指定してはならない。ただし，ADDRESSED句を指定したデータ項目を再定義するREDEFINES句は書いてもよい。

ADDRESSED句を指定したデータレコード記述を再命名するRENAMES句を書いてもよい。ただし，通常の場合と同じく，データレコード記述の最後にまとめて記述しなければならない。

ADDRESSED句を指定したデータレコード記述中のすべてのデータ記述項には，初期値設定用のVALUE句を書いてはならない。

ADDRESSED句を指定したデータレコード記述中のデータ記述項には，関連する条件名を書いてもよい。

ADDRESSED句を指定したデータ記述項に同時に指定できる句は次のとおりである。

PICTURE句

BLANK WHEN ZERO句

GLOBAL句

JUSTIFIED句

SIGN句

SYNCHRONIZED句

TYPE句

USAGE句（ただし，オブジェクト参照データ項目には指定できない）

データ名1はSAME AS句に指定できない。

ADDRESSED句をファクトリ定義，インスタンス定義中で指定してはならない。

一般規則

データ名1のデータ項目は，固有の記憶領域を持たない。実行時にアドレス名1へアドレスを設定するとそのアドレス名1が指すデータ項目が，データ名1のデータ項目で再定義されたかのように扱われる。

データ名1のデータ記述項で定義されるデータ項目の属性と，アドレス名1が指すデータ項目の属性との間には，どんな意味でも適用される制限はない。ただし，アドレス名1が指すデータ項目の内容が，データ名1のデータ項目の定義と矛盾する場合，データ名1を参照した結果は保証しない。

データ名1，そのデータレコード記述に従属するデータ記述項のデータ名または条件名などを手続き部で参照する場合は，それ以前にアドレス名1に適切なアドレスが設定されていなければならない。そうでない場合，実行結果は保証しない。

OCCURS句のDEPENDING指定に指定するデータ名は，ADDRESSED句を指定したデータ名またはそのレコード記述に従属するデータ名を指定してはならない。

15.3.2　アドレスデータ項目の定義

アドレスデータ項目は，アドレス名の内容を一時的に退避したり，プログラム間でアドレス値を受け渡したりする場合に用いる。

(1)　PICTURE句（アドレス操作機能）

アドレスデータ項目のデータ記述項に，PICTURE句を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.54　PICTURE句」

(2)　SYNCHRONIZED句（アドレス操作機能）

アドレスデータ項目のデータ記述項にSYNCHRONIZED句を指定すると， 4バイトの領域が4バイト境界に調整されて割り付けられる（64bit版 COBOL2002では，8バイトの領域が8バイト境界に調整されて割り付けられる）。

SYNCHRONIZED句を指定しないと，バイト境界に割り付けられる。

SYNCHRONIZED句を集団項目に指定したとき，その集団項目に従属するすべてのアドレスデータ項目にこの指定が適用される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.80　SYNCHRONIZED句」

(3)　USAGE句のADDRESS指定

形式

機能

アドレスデータ項目であることを指定する。

構文規則

USAGE句のADDRESS指定と同時にPICTURE句，SAME AS句およびTYPE句を指定してはならない。

アドレスデータ項目は次の場所に書ける。

作業場所節

連絡節

ファイル節

局所場所節

アドレスデータ項目に関連する条件名が記述できる。ただし，条件名のVALUE句には，表意定数ZEROとNULLだけが書ける。

アドレスデータ項目は，EXTERNAL句やGLOBAL句を指定したレコード記述中に書いてもよい。

アドレスデータ項目のVALUE句には，表意定数NULLだけが書ける。

一般規則

USAGE IS ADDRESS句は，そのデータ項目がアドレスデータ項目であることを指定する。

アドレスデータ項目には，4バイトの記憶領域がとられ，アドレス値（記憶領域の番地）が2進形式で格納される（64bit版 COBOL2002では，アドレスデータ項目には8バイトの記憶領域がとられ，アドレス値が2進形式で格納される）。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.86　USAGE句」

15.4　手続き部（アドレス操作機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

15.4.1　アドレス名，アドレスデータ項目およびADDR関数の参照（アドレス操作機能）

アドレス名，アドレスデータ項目およびADDR関数の参照は，次の場合に許される。

(1)　比較条件

アドレス名，アドレスデータ項目またはADDR関数と比較できるものを次に示す。

アドレス名

アドレスデータ項目

表意定数ZERO

ADDR関数

(2)　プログラム間連絡機能および利用者定義関数の引数と返却項目

次に示すUSINGの作用対象および利用者定義関数の引数と返却項目にアドレスデータ項目が指定できる。

呼び出し先プログラムの手続き部見出しにあるUSING指定

CALL文のUSING指定（ADDR関数はBY VALUE指定の引数にだけ指定できる）

INVOKE文（オブジェクト指向機能）のUSING指定（ADDR関数はBY VALUE指定の引数にだけ指定できる）

利用者定義関数の引数指定と返却項目

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.1　手続き部の構成」

(3)　DISPLAY文

DISPLAY文でアドレス名，アドレスデータ項目またはADDR関数の内容をSIGN LEADING SEPARATE指定の外部10進項目に変換後，10けたの外部10進形式（64bit版 COBOL2002では20けたの外部10進形式）で表示する。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.12　DISPLAY文」

(4)　COMPUTE文の作用対象

COMPUTE文でアドレス名またはアドレスデータ項目にアドレスを設定または更新する。

15.4.2　COMPUTE文（アドレス操作機能）

COMPUTE文でアドレス名またはアドレスデータ項目にアドレスを設定または更新する。

形式

書き方1

書き方2

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「11.5　関数の要約」

機能

アドレス名またはアドレスデータ項目にアドレスを設定する（書き方1）。

アドレス名またはアドレスデータ項目に外部プログラムのアドレスを設定する（書き方1）。

アドレス名またはアドレスデータ項目の更新をする（書き方2）。

構文規則

一意名1および一意名3のデータ項目はアドレスデータ項目でなければならない。

一意名2には，アドレスで参照したいデータ項目の名前を指定する。部分参照を指定してはならない。

定数1は英数字定数でなければならない。

定数1にはプログラム名の規則を適用する。

Windows(x86) COBOL2002の場合，定数1に，呼び出し規約がSTDCALLの外部プログラム名を指定してはならない。

コンパイラオプションの指定

呼び出し規約

コンパイルの結果

-DynamicLink,Callオプションなし

CDECL

正常終了

STDCALL

リンクエラー

-DynamicLink,Callオプションあり

CDECL

正常終了

STDCALL

コンパイルエラー

備考

コンパイルが正常終了する場合は，実行時にプログラムのアドレスが取得できる。

一意名4は，整数項目でなければならない。

定数2は，正の符号なし整数でなければならない。

一意名2には，ファクトリ定義およびインスタンス定義で定義したデータ項目の名前を指定してはならない。

一般規則

書き方1の一意名2を指定したCOMPUTE文を実行すると，一意名2のデータ項目の占める記憶領域の先頭番地（アドレス）が，アドレス名1または一意名1に設定される。

書き方1のアドレス名1，一意名1にROUNDED指定をしてはならない。

書き方1で定数1を指定する場合，アドレス参照したいプログラムの外部プログラム名を指定する。

書き方1の定数1を指定したCOMPUTE文を実行すると，定数1で示される外部プログラムの先頭番地がアドレス名１または一意名1に設定される。

（例）

        DATA DIVISION.
        WORKING-STORAGE SECTION.
             77 KAKUNO     ADDRESS.
        PROCEDURE DIVISION.
             COMPUTE KAKUNO = FUNCTION ADDR('SUB_PROGRAM').
             IF  KAKUNO = NULL
                THEN  DISPLAY 'SUB_PROGRAM NO LOAD'
             END-IF.

Windows(x86) COBOL2002では，書き方1の定数1で示される外部プログラムは，CDECL属性だけが対象となる。

-DynamicLink,Callオプションが指定されている場合，定数1で示される外部プログラムが，ロードされた実行可能ファイル，DLL（Windows COBOL2002），共用ライブラリ（UNIX COBOL2002）のどちらからも見つからなかった場合，アドレスはNULLを返す。

備考

外部プログラムが存在するかどうかは，リンカまたはローダによってチェックされる。外部プログラムが存在しない場合は，外部シンボル未解決エラーとなる。

なお，-DynamicLink,Callオプションの指定がある場合は，リンカやローダでチェックは行われず，実行時にプログラムのアドレスまたはNULLを返す。

定数1の指定

プログラムのローディング状態

ADDR関数で返される値

存在する外部プログラム名

ロードされている

プログラムのアドレス

ロードされていない

NULL

存在しない外部プログラム名

ロードされていない

NULL

書き方1にON SIZE ERROR，NOT ON SIZE ERRORを指定してはならない。

書き方2のCOMPUTE文を実行すると，アドレス名2または一意名3の内容に，一意名4または定数2の値を加算または減算し，その結果がアドレス名1または一意名1に設定される。

書き方2のアドレス名1，一意名1にROUNDED指定をしてはならない。

書き方2のCOMPUTE文で算術演算式中に乗除算やべき乗を指定してはならない。

書き方2にON SIZE ERROR，NOT ON SIZE ERRORを指定してはならない。

書き方2で等号の右辺に括弧を指定してはならない。

書き方1で定数1を指定する場合，利用者定義関数名，メソッド名およびオブジェクトプロパティ名は指定できない。

（例）

       DATA            DIVISION.
       FILE            SECTION.
       FD INFIL        BLOCK  CONTAINS 5 RECORDS.
       01 INREC.
         02 HONTAI   PIC X(10).
         02 HUKA     PIC X(20).
       FD OUTFIL.
       01 OUTREC.
         02 FILLER   PIC X(5).
         02 OUTREC1  PIC 9(6).
         02 FILLER   PIC X(5).
         02 OUTREC2  PIC Z,ZZZ,ZZ9.
       WORKING-STORAGE SECTION.
       01 HUKAREC      ADDRESSED BY REC-AD1.
         02 HUKAREC1 PIC 9(3).
         02 HUKAREC2 PIC 9(7).
       77 KAKUNO       ADDRESS.
       PROCEDURE       DIVISION.
            :
           READ INFIL.
            :
           COMPUTE REC-AD1 = FUNCTION ADDR(HUKA). …(1)
           MOVE HUKAREC2 TO OUTREC2.              …(2)
            :
           COMPUTE KAKUNO = REC-AD1               …(3)
           COMPUTE REC-AD1 = REC-AD1 + 10.        …(4)
           MOVE HUKAREC2 TO OUTREC2.              …(5)

(1)のCOMPUTE文でREC-AD1にアドレスを設定する（書き方1）ことによって，(2)のMOVE文でHUKAREC2という名前で，HUKAの4バイト目から7バイトのデータ項目を参照できる。

(4)のCOMPUTE文でREC-AD1のアドレスを更新する（書き方2）ことによって，(5)のMOVE文でHUKAREC2という名前で，HUKAの14バイト目から7バイトのデータ項目を参照できる。

(3)のCOMPUTE文では，KAKUNOにREC-AD1のアドレスを一時退避している。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.8　COMPUTE文」

15.4.3　アドレス型関数（アドレス操作機能）

アドレス型関数には，字類および項類の概念はない。

この関数値の属性は，アドレスデータ項目とする。

アドレス型関数は，アドレスデータ項目が記述できるところに書ける。

アドレス型関数は，アドレスデータ項目の作用対象が許される場所で参照できる。

これらの規則に反した参照をした場合，重大エラーとし，この関数を参照する文を無視する。

(1)　ADDR関数

形式

機能

ADDR関数は，引数1で指定したデータ項目のアドレスを返す。この関数の型はアドレス型である。

一般規則

引数について

（a）引数1は，指標名，アドレス名を除く一意名でなければならない。ただし，関数一意名は指定できない。

（b）引数1がブール項目のときは，バイト境界に調整しておかなければならない。

（c）-UniObjGenオプションを指定した場合，引数1にUTF-8で多バイトとなる文字を含む英数字定数を指定してはならない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

関数値について

（a）引数1が一意名のとき，関数値は，指定された引数1の占める記憶領域の先頭番地（アドレス）である。

（b）引数1が英数字定数のとき，関数値は，指定された引数1の外部プログラムの先頭番地（アドレス）である。なお，Windows(x86) COBOL2002の場合は，呼び出し規約がCDECL属性の外部プログラムだけが対象となる。

関数値の表現形式

アドレスデータ項目

関数の定義および関数の表現形式

（a）関数の定義については，マニュアル「COBOL2002　言語　標準仕様編」　「11.5　関数の要約」，関数の表現形式については，マニュアル「COBOL2002　言語　標準仕様編」　「11.6　関数の表現形式」を参照のこと。

16　C言語インタフェース機能

この章では，C言語とのインタフェースをとるための機能について説明する。

16.1　全般規則（C言語インタフェース機能）

C言語で記述されたプログラムからCOBOLプログラムの呼び出し，COBOLプログラムからC言語で記述されたプログラムの呼び出しを行う場合に使用する。

16.2　データ部（C言語インタフェース機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.　データ部（DATA DIVISION）」

16.2.1　EXTERNAL句（C言語インタフェース機能）

形式

機能

EXTERNAL句で指定されたデータ領域は，Cプログラムからの参照，更新が行える。

一般規則

外部変数名称はデータ領域の名称を使用する。ただし，Cプログラムと共用するためには，データ領域の名称に2バイトコード，ハイフン（-），下線（_），#などの，C言語の変数で使用できない文字を指定してはならない。

Cプログラムから参照，更新されるEXTERNALデータ項目についてはINDEXED BY指定の記述を行ってはならない。

作業場所節のレコード記述項に記述したEXTERNAL句の左辺として指定されたデータ名は，翻訳単位内で記述された外部プログラム名（PROGRAM-IDとCALL，CANCEL）と同一であってはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.25　EXTERNAL句」

16.2.2　COMPUTATIONAL-5（C言語インタフェース機能）

形式

構文規則

COMPUTATIONAL-5，COMP-5を指定された基本データ項目は，数字項目を記述するPICTURE句の文字列によって宣言されなければならない。すなわち，PICTURE句の文字列は，「9」，「S」，「V」および「P」だけから成っていなければならない。

COMPUTATIONAL-5とCOMP-5は同義語であり，どちらを書いてもよい。

一般規則

COMPUTATIONAL-5，COMP-5を指定した場合には，コンパイル時に-Comp5オプションの指定が必要である。

COMPUTATIONAL-5，COMP-5を指定した場合，データ項目の表現形式はCOMPを指定した場合と同等とする。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.86　USAGE句」

16.3　手続き部（C言語インタフェース機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

16.3.1　手続き部見出し（C言語インタフェース機能）

形式

機能

BY VALUE指定は，C言語で記述されたプログラムからパラメタを値渡しで受け取るときに指定する。また，COBOLプログラムからパラメタを値渡しで受け取るときにも指定する。

構文規則

データ名2，データ名3は，添字付け，修飾，部分参照されてはいけない。

データ名2は，可変長集団項目を指定してはならない。

手続き部見出しのRETURNING指定は，呼び出し元へ返す値が設定されるデータ項目を指定する。

データ名3は，連絡節でレベル01記述項またはレベル77記述項として定義されていなければならない。

データ名3は，データ名1またはデータ名2と重複してはならない。

一般規則

BY REFERENCE指定，BY VALUE指定は，別のBY REFERENCE指定，BY VALUE指定が現れるまでそれに続くデータ名に対して有効となる。

最初のデータ名の前にどの指定もない場合，BY REFERENCE指定が仮定される。

BY REFERENCE指定は，CALL文のBY REFERENCE指定，BY CONTENT指定に対応していなければならない。

RETURNING指定をすると，RETURN-CODE特殊レジスタを用いて呼び出し元へ復帰情報を返せない。

呼び出し元プログラムと呼び出し先プログラムが，COBOLプログラムの場合，CALL文にRETURNING指定がされていないならば，PROCEDURE DIVISIONにRETURNING指定をしてはいけない。CALL文にRETURNING指定がされているならば，PROCEDURE DIVISIONにRETURNING指定をしなければならない。

PROCEDURE DIVISIONのRETURNING指定のデータ項目と，呼び出し元のCALL文のRETURNING指定のデータ項目の長さおよび用途は同じでなければならない。

データ名3は，メインプログラム（-Mainオプションによってmain関数が生成されたプログラム）の場合，8バイトを超えるデータ項目を指定してはならない。

16.3.2　CALL文（BY VALUE指定）（C言語インタフェース機能）

形式

書き方1

書き方2

注※

CALL文で定数1が指定されたときだけ指定できる。

機能

BY VALUE指定は，COBOLプログラムからCOBOLプログラムまたはC言語で記述されたプログラムを呼び出す場合に，COBOLプログラムまたはC言語のプログラムでパラメタを値渡しで受け取るときに指定する。

構文規則

一意名3，一意名4は，部分参照されてはいけない。

一意名3は，可変長集団項目を指定してはならない。

定数2は，英数字定数，数字定数または表意定数ZEROでなければならない。

定数2が数字定数のとき，9けた以下で小数点の指定があってはならない。

CALL文のRETURNINGを指定すると，COBOLプログラムからCOBOLプログラムまたはC言語で記述されたプログラムを呼び出す場合に，復帰情報以外の値を受け取れる。

CALL文のRETURNING指定には，呼び出し先から返された値を設定するデータ項目を指定する。

一般規則

BY REFERENCE指定，BY VALUE指定は，別のBY REFERENCE指定，BY VALUE指定が現れるまで，それに続くデータ名に対して有効となる。

最初のデータ名の前にBY VALUE，BY REFERENCE，BY CONTENTのどの指定もない場合，BY REFERENCE指定が仮定される。

PROCEDURE DIVISIONのBY REFERENCE指定は，CALL文のBY REFERENCE指定，BY CONTENT指定に対応していなければならない。

CALL BY VALUEの定数とPROCEDURE BY VALUEの受け取り側作用対象との関係およびBY VALUE指定のデータ項目とC言語の引数指定の関係については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」を参照のこと。

呼び出し元プログラムと呼び出し先プログラムが，COBOLプログラムの場合，CALL文でRETURNING指定をすると，呼び出し先で復帰情報が設定されていても，呼び出し元の，RETURN-CODE特殊レジスタで復帰情報を参照できない。

呼び出し元プログラムと呼び出し先プログラムがCOBOLプログラムの場合，手続き部見出しにRETURNING指定がされていないならば，CALL文にRETURNING指定をしてはいけない。手続き部見出しにRETURNING指定がされているならば，CALL文にRETURNING指定をしなければならない。

CALL文のRETURNING指定のデータ項目と，呼び出し先プログラムの手続き部見出しのデータ項目の長さおよび用途は同じでなければならない。

同一外部プログラムを複数のCALL文に指定した場合，RETURNINGの指定ありと，指定なしが混在してはならない。また，RETURNINGの指定がある場合はそれぞれのRETURNINGに指定されたデータ項目の長さおよび用途は同じでなければならない。

外部プログラムを呼び出す場合，RETURNINGに指定されたデータ項目の属性で戻り値を参照する。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.4　CALL文」

17　CSVファイル入出力機能

この章では，CSVファイル入出力機能の形式について説明する。

17.1　概説（CSVファイル入出力機能）

表計算プログラムのCSV（Comma Separated Value）形式のファイルをCOBOLで入出力する機能について説明する。

-UniObjGenオプションを指定した場合の詳細はマニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

17.1.1　言語の概念（CSVファイル入出力機能）

CSVファイルは，表計算プログラムのアクティブシートだけを1行ごとにコンマで区切って出力した形式のテキストファイルである。アクティブシートの行の位置はレコードの順番に対応し，列の位置はレコード中にコンマで区切られた位置に対応する。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「5.1.7(1)　順編成」

17.2　READ文・WRITE文による入出力（CSVファイル入出力機能）

17.2.1　環境部（CSVファイル入出力機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.　環境部（ENVIRONMENT DIVISION）」

(1)　ファイル管理段落

このシステムでは，CSVファイルをテキストファイルの拡張機能としてサポートしている。ここでは，テキストファイルと異なる規則だけを記述する。

形式

機能

ORGANIZATION IS CSVは，ファイルの論理的構成がCSVのファイルであることを指定する。

一般規則

ORGANIZATION IS CSVは，ファイルの論理的構成がCSVのファイルであることを指定する。ファイル編成はファイルを生成するときに定まり，後から変更できない。

CSVファイルは，テキストファイルと同様に，レコードがファイルに書き出されるときに定まる前後の関係によって一意となる永続的な論理ファイル構造である。

ORGANIZATION IS CSVが指定されたとき，ファイルはおのおのデータを1行ずつ含む可変長レコードの集まりとして扱われる。1行とは，文字の並びであり，その終わりはレコード終端コードである。終端コードはレコードの長さに含まれない。

ファイル共用機能の構文を書いてもよいが，このシステムでは覚え書きとする。

【テキストファイル機能との関連】

「2.2.1　ファイル管理段落（テキストファイル機能）」

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.3.3　ファイル管理段落（FILE-CONTROL）」

17.2.2　データ部（CSVファイル入出力機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.　データ部（DATA DIVISION）」

(1)　ファイル記述項（FD）

ここでは，テキストファイルと異なる規則だけを記述する。

形式

構文規則

ORGANIZATION IS CSVが指定されたファイルのFD記述項には，DEPENDING ON指定のRECORD IS VARYING IN SIZE句を指定できない。

LINAGE句は指定できない。

ファイル記述項に従属するレコード記述は一つでなければならない。

レコード記述項はDEPENDING ON指定のOCCURS句を含んでいてはならない。

レコード記述に従属する基本項目は，ブール項目以外の用途が表示用の項目でなければならない。

レコード記述項にCHARACTER TYPE句を含んでいてはならない。なお，UNIX COBOL2002では-XMAP,LinePrintオプション未指定時は，CHARACTER TYPE句は覚え書きとする。

-NumCsvオプション指定時，レコード記述に従属する基本項目が数字編集項目の場合，その項目は数字入出力の対象にならない。英数字項目として処理される。

一般規則

レコード記述にREDEFINES句を含んでいてもよいが，READ文・WRITE文では再定義した方は無視され，再定義された方の属性で処理される。

【テキストファイル機能との関連】

「2.3.1　ファイル記述項（テキストファイル機能）」

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.3.4　ファイル記述項（file description entry）」

17.2.3　手続き部（CSVファイル入出力機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

(1)　CLOSE文（CSVファイル入出力機能）

CLOSE文についてはテキストファイルの規則と同じである。

【テキストファイル機能との関連】

「2.4.1　CLOSE文（テキストファイル機能）」

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.6　CLOSE文」

(2)　OPEN文（CSVファイル入出力機能）

テキストファイルと異なる規則だけを説明する。

構文規則

ORGANIZATION IS CSVが指定されたファイルに対して指定できるモードは入力・出力・拡張だけである。

【テキストファイル機能との関連】

「2.4.2　OPEN文（テキストファイル機能）」

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.30　OPEN文」

(3)　READ文（CSVファイル入出力機能）

テキストファイルと異なる規則だけを説明する。

形式

構文規則

一意名1は集団項目またはブール項目以外で用途が表示用の項目でなければならない。一意名が集団項目のとき，従属する基本項目はブール項目以外の，用途が表示用の項目でなければならない。

一意名1は部分参照してはならない。

一意名1にDEPENDING ON指定のOCCURS句を含んではならない。

一意名1は再命名項目であってはならない。

-NumCsvオプション指定時，一意名1の長さはファイル名1に従属するレコード長以下でなければならない。

-NumCsvオプション指定時，一意名1または一意名1に従属する基本項目が数字編集項目の場合，その項目は数字入力の対象にならない。英数字項目として処理される。

一般規則

表計算プログラムのCSVファイルの1行は，コンマを区切り文字として，ファイル名1または一意名1に従属する基本項目の先頭から1対1に対応して，左詰めで格納される。ただし，-NumCsvオプション指定時はこの規則は適用されない。-NumCsvオプション指定については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のCSV編成ファイルの説明を参照のこと。

INTO指定がある場合は一意名1のレコード構造に従って処理され，INTO指定がない場合は，ファイル名1に従属するレコードの形式に従って処理される。

表計算プログラムのCSVファイルの1行中のセルの個数がファイル名1または一意名1に従属する基本項目の個数より多いとき，基本項目と対応しないセルは無視される。セルの個数がデータ名1に従属する基本項目の個数より少ないとき，セルと対応しない基本項目の値はREAD文の実行前の値から変更されない。

READ文を実行したときに読み込むレコードがない場合，AT END指定があれば無条件文1に制御が移る。その後，各文の実行規則に従って実行が続く。制御の明示移行を起こす手続き分岐文または条件文が実行されると，その文の規則に従って制御が移る。そうでない場合，AT END指定の無条件文の実行が完了し，その入出力文の終わりに制御が移る。このとき，NOT AT END指定があっても無視される。

READ文が成功した場合，NOT AT END指定がなければその入出力文の終わりに制御が移る。NOT AT END指定があれば，無条件文2に制御が移る。その後，各文の規則に従って実行が続く。制御の明示的移行を起こす手続き分岐文または無条件文が実行されると，その文の規則に従って制御が移る。そうでない場合，NOT AT END指定の無条件文の実行が完了してその入出力文の終わりに制御が移る。

一意名1にREDEFINES句が含まれていてもよいが，再定義した方は無視され，再定義された方の属性で処理される。このとき，再定義した方の項目はブール項目以外で，用途が表示用でなければならない。

【テキストファイル機能との関連】

「2.4.3　READ文（テキストファイル機能）」

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.33　READ文」

(4)　WRITE文（CSVファイル入出力機能）

テキストファイルと異なる規則だけを記述する。

形式

構文規則

一意名1は集団項目またはブール項目以外で用途が表示用の基本項目でなければならない。一意名1が集団項目のとき，従属する基本項目はブール項目以外の用途が表示用の項目でなければならない。

一意名1は部分参照してはならない。

一意名1にDEPENDING指定のOCCURS句を含んではならない。

一意名1は再命名項目であってはならない。

PAGE指定のADVANCING指定を書いてはならない。

END-OF-PAGE指定を書いてはならない。

一意名1または一意名1に従属する項目にCHARACTER TYPE句の指定があってはならない。なお，UNIX COBOL2002では-XMAP,LinePrintオプション未指定時は,CHARACTER TYPE句は覚え書きとする。

FROM句に定数を指定してはならない。

-NumCsvオプション指定時，一意名1の長さはレコード名1の長さ以下でなければならない。

-NumCsvオプション指定時，レコード記述に従属する基本項目が数字編集項目の場合，その項目は数字入出力の対象にならない。英数字項目として処理される。

一般規則

レコード名1または一意名1に従属する基本項目の先頭からコンマで区切って出力する。ただし，-NumCsvオプション指定時はこの規則は適用されない。-NumCsvオプション指定については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」の入出力手続き文と動作の説明を参照のこと。

FROM指定がある場合は一意名1のレコード構造に従って処理され，FROM指定がない場合はレコード名1の構造に従って処理される。

ORGANIZATION IS CSVが指定されたファイルに対してWRITE文を実行した場合，ADVANCING指定がないと自動的に一行送りが行われる。ADVANCING指定がある場合，テキストファイルに対する規則に従って行送りが行われる。

一意名1にREDEFINES句を含んでいてもよいが，再定義した方は無視され，再定義された方の属性で処理される。このとき，再定義した方の項目はブール項目以外で用途が表示用でなければならない。

【テキストファイル機能との関連】

「2.4.5　WRITE文（テキストファイル機能）」

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.55　WRITE文」

17.2.4　入出力状態の値（CSVファイル入出力機能）

テキストファイルと異なる値だけ説明する。

入出力状態 = 04

CSVファイルから入力された一つのセルの文字列長が，入力領域よりも長い。または，数値データのけたあふれが発生した。

【テキストファイル機能との関連】

「2.5　入出力状態の値（テキストファイル機能）」

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「5.1.12　入出力状態」

17.3　ACCEPT文・DISPLAY文による入出力（CSVファイル入出力機能）

ACCEPT文，DISPLAY文を使用したCSVファイルの入出力機能は，PC COBOL85で作成したプログラムを移行するために用意されている古い仕様である。このため，COBOL2002で新規にプログラムを作成する場合は，READ文またはWRITE文によるCSVファイル入出力機能を利用することを推奨する。

UNIX COBOL2002では，ACCEPT文，DISPLAY文を使用したCSVファイルの入出力機能は使用できない。

17.3.1　環境部（SPECIAL-NAMES）（CSVファイル入出力機能）

形式

機能

表計算プログラムのCSVファイルを示すシステム名（機能名）であるSYSCSVと呼び名2を関連づける。

構文規則

標準仕様を参照のこと。

一般規則

標準仕様を参照のこと。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.2.6　特殊名段落（SPECIAL-NAMES）」

17.3.2　手続き部（CSVファイル入出力機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

(1)　ACCEPT文（CSVファイル入出力機能）

形式

機能

表計算プログラムのCSVファイルの1行を入力する。

構文規則

一意名1は強く型付けされていない集団項目または英数字項目でなければならない。一意名1が集団項目のとき，従属する基本項目はすべて英数字項目でなければならない。

一意名1は部分参照してはならない。

一意名1にDEPENDING指定のOCCURS句を含んではならない。

一意名1は，再命名項目であってはならない。

呼び名1はSYSCSVに関連づけられていなければならない。

一般規則

表計算プログラムのCSVファイルの1行はコンマを区切り文字として一意名1または一意名1に従属する基本項目の先頭から1対1に対応して，左詰めで格納される。

表計算プログラムのCSVファイルの1行中のセルの個数が一意名1に従属する基本項目個数より多いとき，基本項目と対応しないセルは無視される。セルの個数が一意名1に従属する基本項目の個数より少ないとき，セルと対応しない基本項目の値はACCEPT文の実行前の値から変更されない。

一意名1にREDEFINES句を含んでいる場合，再定義した方は無視され，再定義された方の属性で処理される。このとき，再定義した方は英数字項目でなければならない。

入力データに引用符（"）が含まれない場合，コンマまたは改行文字（Windows COBOL2002ではX'0D0A'，UNIX COBOL2002ではX'0A'）を区切りとしてデータ入力を行う。

入力データに引用符（"）が含まれる場合，次の規則に従ってデータ入力を行う。

・コンマの直後が引用符（"）の場合，次の引用符（"）の直前までをデータとして扱う。

・コンマの直後が引用符（"）でない場合，データ中に含まれる引用符（"）は，文字データとして扱われる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.1　ACCEPT文」

(2)　DISPLAY文（CSVファイル入出力機能）

形式

機能

表計算プログラムのCSVファイルの1行を出力する。

構文規則

一意名1は集団項目またはブール項目以外の用途が表示用の基本項目でなければならない。一意名1が集団項目のとき，従属する基本項目はブール項目以外で，用途はすべて表示用でなければならない。

一意名1は部分参照してはならない。

一意名1にDEPENDING指定のOCCURS句を含んではならない。

一意名1は，再命名項目であってはならない。

呼び名1はSYSCSVに関連づけられていなければならない。

一般規則

一意名1または一意名1に従属する基本項目の先頭からコンマで区切って出力する。

一意名1にREDEFINES句を含んでいる場合，再定義した方は無視され，再定義された方の属性で処理される。このとき，再定義した方の項目はブール項目以外の用途が表示用でなければならない。

出力データを引用符（"）で囲んで出力する。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.12　DISPLAY文」

18　OLE2オートメーションインタフェース機能

OLE2オートメーションインタフェース機能は，OLE2オートメーションに対応しているアプリケーションが公開しているOLEオブジェクトをCOBOLのプログラムで操作するための機能である。

この章では，OLE2オートメーションインタフェース機能を使用するための言語の形式や規則，組み込み関数について説明する。なお，OLE2オートメーションインタフェース機能は，クラス定義，インタフェース定義，利用者定義関数の中では使用できない。

18.1　概説（OLE2オートメーションインタフェース機能）

OLE2オートメーションインタフェース機能は，OLE2オートメーションサーバアプリケーションが公開しているOLEオブジェクトをCOBOLのプログラムで操作するための機能である。

例えば，ExcelのOLEオブジェクトを操作することで，Excelで作成したシートをCOBOLプログラムで印刷できる。

UNIX COBOL2002では，OLE2オートメーションインタフェース機能は使用できない。

18.1.1　言語の概念（OLE2オートメーションインタフェース機能）

(1)　OLEオブジェクト

OLEオブジェクトは，操作する対象であり，OLEプロパティとOLEメソッドを持つ。OLEオブジェクトがどんなOLEプロパティやOLEメソッドを持っているかは，OLEオブジェクトごとに異なる。

(2)　OLEプロパティ

OLEプロパティは，OLEオブジェクトの状態または属性であり，値を設定してOLEオブジェクトの状態を変更したり，値を取得してOLEオブジェクトの状態を調べることができる。

(3)　OLEメソッド

OLEメソッドは，OLEオブジェクトに対する操作であり，OLEオブジェクトまたはOLEオブジェクト内のデータに対して，指定した操作を実行できる。OLEメソッドによっては，別のOLEオブジェクトを戻り値として返すものもある。

(4)　インスタンス

インスタンスは，実行中のアプリケーションのOLEオブジェクトであり，アプリケーションによっては同時に複数のインスタンスを生成することもできる。

(5)　コレクション

コレクションは，関連するOLEオブジェクトの集合であり，コレクション自体も一つのOLEオブジェクトである。

コレクション中の一つのOLEオブジェクトを指定するために，コレクションに特定のOLEオブジェクトを表す文字列や，インデクスを指定することで，一つのOLEオブジェクトを参照できる。

(6)　コンテナ

コンテナは，ほかのOLEオブジェクトを含んでいるOLEオブジェクトである。OLEオブジェクトへの参照に，そのコンテナへの参照を含む場合は，コンテナとOLEオブジェクトをピリオド（.）で区切らなければならない。

(7)　VARIANT値

VARIANT値は，OLE2オートメーション機能（「OLE2オートメーションインタフェース機能」の手続き文，「サービスルーチンを使ったOLE2オートメーションクライアント機能」）で取り扱うデータであり，さまざまな型のデータを扱うことができる。VARIANT値には，COBOLが取り扱うデータ項目の項類の概念は適用されない。

(8)　OLEオブジェクト参照データ項目

OLEオブジェクト参照データ項目は，USAGE句で用途がOLEオブジェクト参照（OBJECT REFERENCE OLE）と指定された項目である。インスタンス化されたOLEオブジェクトを保持するために， 4バイト（Windows(x64) COBOL2002では8バイト）の記憶領域が確保される。OLEオブジェクト参照データ項目には，COBOLが取り扱うデータ項目の項類の概念は適用されない。

(9)　バリアントデータ項目

バリアントデータ項目は，USAGE句で用途がバリアント（VARIANT）と指定された項目である。

OLE2オートメーションインタフェース機能でOLEオブジェクトのOLEプロパティやOLEメソッドを操作する場合には，すべてVARIANT値で受け渡しをする。INVOKE文やSET文で取り扱うVARIANT値をCOBOLのデータ項目に変換せずに，そのままVARIANT値として格納するためにバリアントデータ項目を使用する。バリアントデータ項目には，VARIANT値そのものではなく，VARIANT値を指すポインタが実際には格納される。バリアントデータ項目には，COBOLが取り扱うデータ項目の項類の概念は適用されない。

18.1.2　VARIANT値とCOBOLデータの変換規則（OLE2オートメーションインタフェース機能）

(1)　COBOLデータからVARIANT値への変換規則

OLEメソッドに渡す引数やOLEプロパティへの設定で指定されたCOBOLのデータ項目は，次に示す変換規則に従って暗黙的にVARIANT値に変換される。

表18‒1　COBOLデータ項目からVARIANT値への変換規則

COBOLデータ項目

VARIANT値※5

表意定数（NULL）

VT_NULL（1）

2進項目※1，外部10進項目※1，内部10進項目※1，数字定数※1，表意定数（ZERO）

VT_I2（2）

2進項目※2，外部10進項目※2，内部10進項目※2，数字定数※2

VT_I4（3）

単精度内部浮動小数点項目

VT_R4（4）

倍精度内部浮動小数点項目，外部浮動小数点項目，浮動小数点定数，2進項目※3，外部10進項目※3，内部10進項目※3，

数字定数※3

VT_R8（5）

英字項目，英数字項目，英数字定数，固定長集団項目（日本語集団項目を含む），可変長集団項目，日本語項目，日本語文字定数，数字編集項目

VT_BSTR（8）

OLEオブジェクト参照データ項目

VT_DISPATCH（9）

内部ブール項目※4，外部ブール項目※4，ブール定数※4

VT_I2→VT_BOOL（11）

注1

組み込み関数のCONVERT-TO-VARIANT関数での明示的な変換も，いったん上表の変換規則に従ったVARIANT値に変換し，さらに目的のVARIANT値へと変換する。

注2

オブジェクト参照データ項目，アドレスデータ項目および指標データ項目は，バリアントデータ型には変換できない。

注※1

4けたまでの小数けたなし項目。

注※2

9けたまでの小数けたなし項目。

注※3

10けたを超えるまたは小数けたがある項目。

注※4

1けたの項目。

注※5

括弧内の数字はVARIANTのタイプを示す。

(2)　VARIANT値からCOBOLデータへの変換規則

OLEメソッドの戻り値やOLEプロパティの取得で受け取ったVARIANT値は，次に示す変換規則に従って暗黙的にCOBOLのデータ項目に変換される。

表18‒2　VARIANT値からCOBOLデータ項目への変換規則

VARIANT値※5

COBOLデータ項目

VT_I2（2）

2進項目※1，外部10進項目※1，内部10進項目※1

VT_I4（3）

2進項目※2，外部10進項目※2，内部10進項目※2

VT_R4（4）

単精度内部浮動小数点項目

VT_R8（5）

倍精度内部浮動小数点項目，外部浮動小数点項目，2進項目※3，外部10進項目※3，内部10進項目※3

VT_BSTR（8）

英字項目，英数字項目，固定長集団項目（日本語集団項目を含む），可変長集団項目，日本語項目

VT_DISPATCH（9）

OLEオブジェクト参照データ項目

VT_BOOL（11）→VT_I2

内部ブール項目※4，外部ブール項目※4

注1

組み込み関数のVARIANT値からCOBOLデータ項目への明示的な変換も，いったん上表の変換規則に従ったVARIANT値に変換し，さらに目的のCOBOLデータ項目へと変換する。なお，変換元となる文字の右側に存在する空白は無視される。

注2

文字列変換（VT_BSTR型）の場合，データは常に左端をそろえて収められる。データを設定する領域が小さい場合は右端が切り捨てられる。しかし，大きい場合の空白詰めは行われない。JUSTIFIED句は適用されない。なお，変換元となる文字の右側に存在する空白は無視される。

注3

バリアントデータ型からオブジェクト参照データ項目，アドレスデータ項目および指標データ項目には変換できない。

注※1

4けたまでの小数けたなし項目。

注※2

9けたまでの小数けたなし項目。

注※3

10けたを超えるまたは小数けたがある項目。

注※4

1けたの項目。

注※5

括弧内の数字はVARIANTのタイプを示す。

18.2　データ部（OLE2オートメーションインタフェース機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.　データ部（DATA DIVISION）」

18.2.1　OLEオブジェクト参照データ項目（OLE2オートメーションインタフェース機能）

OLEオブジェクト参照データ項目は，インスタンス化されたOLEオブジェクトのポインタを格納するためのデータ領域である。

形式

構文規則

レベル番号は，01〜49または77でなければならない。

OLEオブジェクト参照データ項目は，作業場所節および連絡節に定義しなければならない。

OLEオブジェクト参照データ項目は，EXTERNAL句やGLOBAL句を指定したレコード記述中に書いてもよい。

OLEオブジェクト参照データ項目が独立した基本項目として定義された場合は，EXTERNAL句やGLOBAL句を指定できる。ただし，EXTERNAL句やGLOBAL句を指定できるのは，オブジェクト参照データ項目が作業場所節で定義されている場合だけである。

OLEオブジェクト参照データ項目にVALUE句を指定してもよい。VALUE句には，表意定数ZEROとNULLが指定できる。

OLEオブジェクト参照データ項目に関連する条件名が記述できる。ただし，条件名のVALUE句には表意定数ZEROとNULLだけが指定できる。

USAGE句のOBJECT指定と同時にPICTURE句を指定してはならない。

OLEオブジェクト参照データ項目を明示的に参照できる個所を次に示す。

・OLE2オートメーションインタフェース機能でのINVOKE文

・OLE2オートメーションインタフェース機能でのSET文

・OLEオブジェクト参照データ比較の条件式

・CONVERT-TO-VARIANT関数

一般規則

OLEオブジェクト参照データ項目は内部的に4バイト（Windows(x64) COBOL2002では8バイト）の領域が確保される。

OLEオブジェクト参照データ項目には，生成されたインスタンスのOLEオブジェクトのポインタを格納できる。

OLEオブジェクト参照データ項目にSYNCHRONIZED句の機能が適用された場合は，4バイト（Windows(x64) COBOL2002では8バイト）境界に割り付けられる。

SYNCHRONIZED句の機能が適用されない場合は，バイト境界に割り付けられる。

OLEオブジェクト参照データ項目にOLEオブジェクトを格納するとき，すでに別のOLEオブジェクトが格納されている場合は，前に格納されたOLEオブジェクトを解放した後に格納される。

18.2.2　バリアントデータ項目（OLE2オートメーションインタフェース機能）

バリアントデータ項目は，VARIANT値へのポインタを格納するためのデータ領域である。

形式

構文規則

レベル番号は，01〜49または77でなければならない。

バリアントデータ項目は，作業場所節および連絡節に定義しなければならない。

バリアントデータ項目は，EXTERNAL句やGLOBAL句を指定したレコード記述中に書いてもよい。

バリアントデータ項目が独立した基本項目として定義された場合は，EXTERNAL句やGLOBAL句を指定できる。ただし，EXTERNAL句やGLOBAL句を指定できるのは，バリアントデータ項目が作業場所節で定義されている場合だけである。

バリアントデータ項目にVALUE句を指定してもよい。VALUE句には，表意定数ZEROとNULLが指定できる。VALUE句を指定していない場合の動作は保証しない。

バリアントデータ項目に関連する条件名が記述できる。ただし，条件名のVALUE句には表意定数ZEROとNULLだけが指定できる。

USAGE句のVARIANT指定と同時にPICTURE句を指定してはならない。

バリアントデータ項目を明示的に参照できる個所を次に示す。

・OLE2オートメーションインタフェース機能でのINVOKE文

・OLE2オートメーションインタフェース機能でのSET文

・バリアントデータ比較の条件式

・利用者定義関数の引数

・TYPE-OF-VARIANT関数

・VARIANT-TO-INTEGER関数

・VARIANT-TO-NUMERIC関数

・VARIANT-TO-ALPHANUMERIC関数

・VARIANT-TO-OBJECT関数

・LENGTH-OF-VARIANT関数

一般規則

バリアントデータ項目は内部的に4バイト（Windows(x64) COBOL2002では8バイト）の領域が確保される。

バリアントデータ項目を指定すると，VARIANT値をCOBOLのデータ項目に変換せずに，そのままVARIANT値として保持できる。また，バリアントデータ項目には，VARIANT値そのものではなく，バリアント値を指すポインタが格納される。

バリアントデータ項目にSYNCHRONIZED句の機能が適用された場合は4バイト（Windows(x64) COBOL2002では8バイト）境界に割り付けられる。

SYNCHRONIZED句の機能が適用されない場合は，バイト境界に割り付けられる。

バリアントデータ項目にVARIANT値へのポインタを格納する場合，すでに別のVARIANT値へのポインタが設定されているときは，前に格納されたVARIANT値を解放した後に格納する。

バリアントデータ項目にEXTERNAL句を指定した場合の注意事項については，マニュアル「COBOL2002　ユーザーズガイド」のVARIANT値とCOBOLデータのやり取りの説明を参照のこと。

18.3　手続き部（OLE2オートメーションインタフェース機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

18.3.1　INVOKE文（OLE2オートメーションインタフェース機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.26　INVOKE文」

(1)　一般的なOLEメソッドの操作

形式

機能

OLE2オートメーションサーバアプリケーションの一般的なOLEメソッド操作（CREATEOBJ，GETOBJ以外）をする。

構文規則

一意名7はOLEオブジェクト参照データ項目でなければならない。

一意名8および一意名10は，集団項目，英字，英数字，日本語項目でなければならない。

定数3および定数5は，英数字定数または日本語文字定数でなければならない。

一意名9，一意名11には，集団項目，数字項目，英字項目，英数字項目，日本語項目，1けたのブール項目，OLEオブジェクト参照データ項目およびバリアントデータ項目が指定できる。ただし，一意名11は強く型付けされた集団項目を指すものであってはならない。

一意名9には数字編集項目も指定できる。

定数4には，数字定数，英数字定数，日本語文字定数，1けたのブール定数および表意定数（ZERO，NULL）が指定できる。

-UniObjGenオプションを指定した場合，一意名8，一意名9，一意名10および一意名11には用途がNATIONALの項目および用途がNATIONALの項目を従属項目として含む集団項目は指定できない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」のUnicode機能を参照のこと。

-UniObjGenオプションを指定した場合，定数3，定数4および定数5には日本語文字定数および16進日本語文字定数は指定できない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」のUnicode機能を参照のこと。

一般規則

OLE2オートメーションサーバアプリケーションのOLEメソッド操作では，一意名7に，インスタンスのOLEオブジェクトが設定されているOLEオブジェクト参照データ項目を指定しなければならない。一意名7にOLEオブジェクトが設定されていない場合は，実行時にエラーとなる。

一意名7に設定されているOLEオブジェクトを起点として，一意名8または定数3で指定されたOLEメソッドが操作される。

一意名8や定数3に指定するOLEメソッドには，起点となるOLEオブジェクトからのコンテナやコレクションを含んで指定しなければならない。

一意名9，定数4には，OLEメソッドへの引数を指定する。引数は指定された順番にOLEメソッドに渡される。引数を省略して指定する場合は，表意定数NULLを指定する。一意名9，定数4で指定したCOBOLのデータ項目は，「表18‒1　COBOLデータ項目からVARIANT値への変換規則」の変換規則に従いVARIANT値に変換されてOLEメソッドに渡される。一意名9でバリアントデータ項目を指定した場合は，VARIANT値は変換されずにそのままOLEメソッドに渡される。

一意名11にはOLEメソッドからの戻り値が設定される。

・戻り値がOLEオブジェクトを戻す場合は，OLEオブジェクト参照データ項目を指定する。

・戻り値がOLEオブジェクトでない場合は，COBOLのデータ項目を指定するか，またはバリアントデータ項目を指定する。

COBOLのデータ項目を指定した場合は，「表18‒2　VARIANT値からCOBOLデータ項目への変換規則」の変換規則に従い，VARIANT値からCOBOLのデータ項目に変換されて設定される。

VARIANT値から変換できないCOBOLのデータ項目が指定されている場合は，実行時にエラーとなる。

また，バリアントデータ項目が指定された場合は，取得されたVARIANT値へのポインタが設定される。

一意名11に10けたを超えるまたは小数けたがある数字項目（固定小数点形式の数字項目）を指定した場合は，内部的に確保した倍精度内部浮動小数点項目領域に格納された戻り値が，一意名11に設定される。

この結果，システムによる丸め制御の相違によって，浮動小数点の転記の結果が異なる場合がある。

丸め制御については，「6.8.1　文に共通な指定と規則（浮動小数点形式データを扱う機能）」の「(7)　浮動小数点の丸め制御」を参照のこと。

一意名10および定数5には，OLEメソッドの名前付き引数の名称を指定する。

名前付き引数を使うと，あらかじめ指定されている名前を持った引数を指定できるため，構文で決まっている順序とは関係なく，必要な引数だけを任意の順序で指定できる。

(2)　CREATEOBJメソッドの操作

形式

機能

CREATEOBJメソッドでは，OLEオブジェクトのインスタンスを生成する。

構文規則

一意名10は，英字項目，英数字項目または日本語項目でなければならない。

定数6は，英数字定数または日本語文字定数でなければならない。

一意名11は，OLEオブジェクト参照データ項目でなければならない。

-UniObjGenオプションを指定した場合，一意名10には用途がNATIONALの項目および用途がNATIONALの項目を従属項目として含む集団項目は指定できない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」のUnicode機能を参照のこと。

-UniObjGenオプションを指定した場合，定数6には日本語文字定数および16進日本語文字定数は指定できない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」のUnicode機能を参照のこと。

一般規則

一意名10または定数6には，操作の対象となるOLE2オートメーションサーバアプリケーションのクラス名を設定する。

生成されたインスタンスのOLEオブジェクトは，一意名11で指定されたOLEオブジェクト参照データ項目に格納される。操作の対象となるOLE2オートメーションサーバアプリケーションのクラス名でない値が設定されている場合は，実行時にエラーとなる。

OLEオブジェクトのインスタンスがすでに生成されて，OLEオブジェクト参照データ項目に値が格納されていても，再実行された場合は，新たにOLEオブジェクトのインスタンスを生成し，OLEオブジェクト参照データ項目に新しいOLEオブジェクトが格納される。

生成したOLEオブジェクトが不要になった場合は，OLE2オートメーションサーバアプリケーションが提供する終了メソッドで解放しなければならない。

(3)　GETOBJメソッドの操作

形式

機能

GETOBJメソッドでは，実行中のOLEオブジェクトを取得したり，ファイルからOLEオブジェクトのインスタンスを生成する。

構文規則

一意名12および一意名13は，英字項目，英数字項目または日本語項目でなければならない。

定数7は，英数字定数，日本語文字定数または表意定数NULLでなければならない。

定数8は，英数字定数または日本語文字定数でなければならない。

一意名14は，OLEオブジェクト参照データ項目でなければならない。

-UniObjGenオプションを指定した場合，一意名12および一意名13には用途がNATIONALの項目および用途がNATIONALの項目を従属項目として含む集団項目は指定できない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」のUnicode機能を参照のこと。

-UniObjGenオプションを指定した場合，定数7および定数8には日本語文字定数および16進日本語文字定数は指定できない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」のUnicode機能を参照のこと。

一般規則

一意名12または定数7には，操作の対象となるOLE2オートメーションサーバアプリケーションのクラス名を設定する。

一意名13または定数8には，ディスク上にあるファイル名を絶対パスで指定しなければならない。

USING指定の有無によって，生成されているインスタンスのOLEオブジェクトを取得する方法と，新しくインスタンスのOLEオブジェクトを生成する方法がある。

・USING指定がない場合は，すでに生成されているインスタンスからOLEオブジェクトを取得する。取得したOLEオブジェクトは，一意名14で指定されたOLEオブジェクト参照データ項目に格納される。クラス名に対応したOLEオブジェクトのインスタンスが生成されていない場合は，実行時にエラーとなる。

また，複数のインスタンスが存在する場合，どんなインスタンスのOLEオブジェクトが取得されるかは保証しない。

・USING指定がある場合は，指定されたファイル名からクラス名に対応したOLEオブジェクトのインスタンスを生成する。クラス名のOLEオブジェクトに，対応していないファイル名が指定された場合は，実行時にエラーとなる。

クラス名の指定がない場合（定数7に表示定数NULLが指定された場合）は，ファイル名に基づいてOLEオブジェクトのインスタンスを生成する。またファイル名からOLEオブジェクトのインスタンスが生成された場合に，同じOLEオブジェクトのインスタンスがすでに生成されてOLEオブジェクト参照データ項目にOLEオブジェクトが格納されていても，新しく生成されたOLEオブジェクトがOLEオブジェクト参照データ項目に設定される。

生成したOLEオブジェクトが不要になった場合は，OLE2オートメーションサーバアプリケーションが提供する終了メソッドで解放しなければならない。

18.3.2　SET文（OLE2オートメーションインタフェース機能）

形式

書き方17　OLEプロパティからの値の取得

書き方18　OLEプロパティへの値の設定

書き方19　データ項目の初期化

書き方20　バリアントデータ項目の設定

機能

書き方17のSET文では，OLEプロパティからの値を取得する。書き方18のSET文では，OLEプロパティへの値を設定する。書き方19のSET文では，データ項目を初期化する。書き方20のSET文では，バリアントデータ項目の値をほかのバリアントデータ項目に設定する。

書き方17のSET文で受け取り側作用対象がバリアントデータ項目の場合，または書き方20のSET文の場合，受け取り側作用対象のバリアントデータ項目にすでにVARIANT値が存在するとき，VARIANT値が設定された領域を解放してバリアントデータ項目のポインタにNULLを設定後，SET文の処理をする。

構文規則

一意名16および一意名18はOLEオブジェクト参照データ項目として定義されていなければならない。

一意名15および一意名17には，集団項目，英字項目，英数字項目および日本語項目が指定できる。

定数1および定数2は，英数字定数または日本語文字定数でなければならない。

一意名14および一意名19に指定できるのは，集団項目，数字項目，英字項目，英数字項目，日本語項目，1けたのブール項目，バリアントデータ項目またはOLEオブジェクト参照データ項目でなければならない。また，一意名19は，強く型付けされた集団項目を指すものであってもよい。一意名21または一意名22はバリアントデータ項目でなければならない。

定数3は，数字定数，英数字定数，日本語文字定数，1けたのブール定数または表意定数（ZERO，NULL）でなければならない。

一意名20は，OLEオブジェクト参照データ項目またはバリアントデータ項目として定義されていなければならない。

一意名19には，数字編集項目を指定することもできる。

-UniObjGenオプションを指定した場合，一意名14，一意名15，一意名17および一意名19には用途がNATIONALの項目および用途がNATIONALの項目を従属項目として含む集団項目は指定できない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」のUnicode機能を参照のこと。

-UniObjGenオプションを指定した場合，定数1，定数2および定数3には日本語文字定数および16進日本語文字定数は指定できない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」のUnicode機能を参照のこと。

一般規則

書き方17の規則

一意名16に設定されているOLEオブジェクトを起点として，一意名15または定数1で指定されたOLEプロパティの値が取得される。

一意名16にOLEオブジェクトが設定されていない場合は，実行時にエラーとなる。

一意名15または定数1に指定するOLEプロパティは，起点となるOLEオブジェクトからのコンテナやコレクションを含んで指定しなければならない。

一意名14には，取得したOLEプロパティ値が設定される。

取得したOLEプロパティ値がOLEオブジェクトの場合は，一意名14でOLEオブジェクト参照データ項目を指定しなければならない。

OLEプロパティ値がOLEオブジェクトでない場合は，一意名14でCOBOLのデータ項目またはバリアントデータ項目を指定する。

OLEプロパティ値にCOBOLのデータ項目が指定されている場合は，「表18‒2　VARIANT値からCOBOLデータ項目への変換規則」の変換規則に従い，

VARIANT値からCOBOLのデータ項目に変換されて設定される。VARIANT値から変換できないCOBOLのデータ項目が指定されている場合は，実行時にエラーとなる。

また，一意名14でバリアントデータ項目が指定された場合は，変換されずにOLEプロパティ値へのポインタが設定される。

代入元より代入先が大きい場合は，代入先の一意名14にオブジェクトプロパティを指定した時と，通常のデータ名を指定した時とで結果が異なる。通常のデータ名を指定した場合は，データ名の長さが，オブジェクトプロパティのとき，余ったデータ領域は空白で埋められる。

書き方18の規則

一意名18に設定されているOLEオブジェクトを起点として，一意名17または定数2で指定されたOLEプロパティに値が設定される。

一意名18にOLEオブジェクトが設定されていない場合は，実行時にエラーとなる。

一意名17または定数2に指定するOLEプロパティは，起点となるOLEオブジェクトからのコンテナやコレクションを含んで指定しなければならない。

一意名19または定数3で指定された値がOLEプロパティに設定される。

一意名19でバリアントデータ項目が指定された場合は，そのままOLEプロパティへ値が設定される。

一意名19にOLEオブジェクト参照データ項目またはCOBOLのデータ項目が指定されている場合，もしくは定数3が指定された場合は，「表18‒1　COBOLデータ項目からVARIANT値への変換規則」の変換規則に従ってVARIANT値に変換された後に，OLEプロパティに値が設定される。VARIANT値へ変換できないCOBOLのデータ項目が指定されている場合は，実行時にエラーとなる。

書き方19の規則

一意名20で指定されたOLEオブジェクト参照データ項目またはバリアントデータ項目が初期化される。

・OLEオブジェクト参照データ項目が指定された場合は，設定されていたインスタンスオブジェクトを解放し，OLEオブジェクト参照データ項目を初期化する。

・バリアントデータ項目が指定された場合は，ポイントされているVARIANT値を解放し，バリアントデータ項目を初期化する。

書き方20の規則

一意名22のバリアントデータ項目がポイントするVARIANT値が，一意名21のバリアントデータ項目がポイントするバリアント領域へ設定される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.43　SET文」

18.3.3　OLEオブジェクト参照データ比較の条件式（OLE2オートメーションインタフェース機能）

形式

構文規則

一意名1および一意名2は，OLEオブジェクト参照データ項目でなければならない。

比較対象が両方とも表意定数NULLまたはZEROであってはならない。

一般規則

比較対象の値が同じである場合に，等しい結果になる。

一意名1と一意名2の比較はOLEオブジェクト参照データ項目同士の比較となるため，OLEオブジェクトが等しい場合でも等しい結果とならない。

18.3.4　バリアントデータ比較の条件式（OLE2オートメーションインタフェース機能）

形式

構文規則

一意名1および一意名2は，バリアントデータ項目でなければならない。

比較対象が両方とも表意定数NULLまたはZEROであってはならない。

一般規則

比較対象の値が同じである場合に，等しい結果になる。

一意名1と一意名2の比較はバリアントデータ項目同士の比較となるため，バリアント値が等しい場合でも等しい結果とならない。

18.4　プログラム間連絡機能（OLE2オートメーションインタフェース機能）

18.4.1　手続き部見出し

手続き部見出しのUSING BY REFERENCEの仮引数にOLEオブジェクト参照データ項目やバリアントデータ項目を指定することで，外部で取得したOLEオブジェクトを使用して，OLEメソッドやOLEプロパティを操作できる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.1.1　一般形式」

18.4.2　CALL文

CALL文のUSING BY REFERENCEの引数にOLEオブジェクト参照データ項目やバリアントデータ項目を指定することで，取得したOLEオブジェクトやVARIANT値を呼び出し先プログラムに渡すことができる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.4　CALL文」

18.5　組み込み関数機能（OLE2オートメーションインタフェース機能）

18.5.1　CONVERT-TO-VARIANT関数（OLE2オートメーションインタフェース機能）

形式

機能

CONVERT-TO-VARIANT（VARIANT値変換）関数は，引数2で指定したCOBOLのデータ項目と等価な引数1で指定した型のVARIANT値へのポインタを返す。この関数は，OLE2オートメーションインタフェース機能を使ったINVOKE文での引数や，SET文での設定値を，特定の型のVARIANT値として扱う場合に使用する。この関数の型は，バリアントデータ型である。

一般規則

引数について

・引数1は，整数項目（結果が常に整数となる算術式を含む），整数定数，表意定数ZEROを指定しなければならない。

・引数1は，変換するVARIANT値の型を示す数値を指定しなければならない。指定する数値とVARIANT値との対応を次に示す。

表18‒3　指定する数値とVARIANT値との対応

指定する数値

VARIANT値の型

0

Empty（VT_EMPTY）

1

Null（VT_NULL）

2

整数型（VT_I2）

3

長整数型（VT_I4）

4

単精度浮動小数点型（VT_R4）

5

倍精度浮動小数点型（VT_R8）

6

通貨型（VT_CY）

7

日付型（VT_DATE）

8

文字列型（VT_BSTR）

9

オブジェクト型（VT_DISPATCH）

11

ブール型（VT_BOOL）

決められた数値以外のものが指定されたときの結果は保証しない。

・引数2は，集団項目，数字項目（算術式を含む），数字編集項目，英字項目，英数字項目，日本語項目，1けたのブール項目，OLEオブジェクト参照データ項目，数字定数，英数字定数，日本語文字定数，1けたのブール定数または表意定数（ZERO，NULL）でなければならない。

VARIANT値へ変換できないデータ項目が指定されている場合は，実行時にエラーとなる。

VARIANT値変換では，「表18‒1　COBOLデータ項目からVARIANT値への変換規則」に示した変換規則のVARIANT値に合わせてCOBOLデータ項目を指定すること。変換規則で示されていない通貨型，日付型は英数字項目で指定する。なお，日付型は03/01/01 09:00という形式で設定すること。

・引数1に0または1が指定された場合，引数2は無視される。2〜11が指定された場合で，引数2が指定されていないときはエラーとなる。

・-UniObjGenオプションを指定した場合，引数2に用途がNATIONALの項目，日本語文字定数および16進日本語文字定数を指定してはならない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」のUnicode機能を参照のこと。

関数値について

・関数値は，指定された引数と等価のVARIANT値へのポインタが返される。

関数の表現形式

・VARIANT値へのポインタ

・この関数は，（CALL文，INVOKE文（オブジェクト指向機能），利用者定義関数を除く）送り出し側作用対象となるバリアントデータ項目が指定できるところおよびバリアントデータ比較の条件式に記述できる。

18.5.2　TYPE-OF-PROPERTY関数（OLE2オートメーションインタフェース機能）

形式

機能

TYPE-OF-PROPERTY（OLEプロパティやOLEメソッドの型取得）関数は，引数1で指定されたOLEオブジェクトを起点とした，引数2で指定されたOLEプロパティやOLEメソッドの戻り値であるVARIANT値の型を求める。この関数の型は，整数型である。

一般規則

引数について

・引数1は，OLEオブジェクト参照データ項目を指定しなければならない。

・TYPE-OF-PROPERTY関数では，インスタンス化されたOLEオブジェクトのOLEメソッドや，OLEプロパティのタイプを取得する。引数1にOLEオブジェクトが設定されていない場合は，実行時にエラーとなる。

・引数2は，英字，英数字，日本語項目，英数字定数または日本語文字定数でなければならない。

・引数2には，OLEプロパティやOLEメソッドを，起点となるOLEオブジェクトからのコンテナやコレクションを含んで指定しなければならない。

・-UniObjGenオプションを指定した場合，引数2に用途がNATIONALの項目，日本語文字定数および16進日本語文字定数を指定してはならない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」のUnicode機能を参照のこと。

関数値について

・関数値は，OLEプロパティやOLEメソッドの戻り値である，VARIANT値の型を示す数値である。数値の意味は，「表18‒3　指定する数値とVARIANT値との対応」を参照のこと。「表18‒3　指定する数値とVARIANT値との対応」に示される数値以外の値が返される場合は，戻されるVARIANT値とやり取りできるCOBOLのデータ型は存在しない。

関数の表現形式

・符号付き整数部5けたの2進項目

・この関数は，整数型関数が指定できるところに記述できる。

18.5.3　TYPE-OF-VARIANT関数（OLE2オートメーションインタフェース機能）

形式

機能

TYPE-OF-VARIANT（VARIANT値の型取得）関数は，引数1で指定したVARIANT値の型を求める。この関数の型は整数型である。

一般規則

引数について

・引数1は，バリアントデータ項目を指定しなければならない。

・引数1に指定したバリアントデータ項目がNULLの場合は，実行時にエラーとなる。

関数値について

・関数値は，VARIANT値の型を示す数値である。数値の意味は「表18‒3　指定する数値とVARIANT値との対応」を参照のこと。「表18‒3　指定する数値とVARIANT値との対応」に示される数値以外の値が返される場合は，戻されるVARIANT値とやり取りできるCOBOLのデータ型は存在しない。

関数の表現形式

・符号付き整数部5けたの2進項目

・この関数は，整数型関数が指定できるところに記述できる。

18.5.4　VARIANT-TO-INTEGER関数（OLE2オートメーションインタフェース機能）

形式

機能

VARIANT-TO-INTEGER（整数型数値変換）関数は，引数1で指定したVARIANT値をCOBOLの整数型数値に変換する。この関数の型は整数型である。

一般規則

引数について

・引数1は，バリアントデータ項目を指定しなければならない。

・引数1に指定したバリアントデータ項目がNULLの場合は，実行時にエラーとなる。

・引数1に指定したバリアントデータ項目が整数型数値に変換できない場合は，実行時にエラーとなる。

関数値について

・関数値は，VARIANT値をCOBOLの整数型数値に変換した値である。

関数の表現形式

・4バイトの2進項目（PIC S9(9) USAGE COMP）

・この関数は，整数型関数が指定できるところに記述できる。

18.5.5　VARIANT-TO-NUMERIC関数（OLE2オートメーションインタフェース機能）

形式

機能

VARIANT-TO-NUMERIC（実数型数値変換）関数は，引数1で指定したVARIANT値をCOBOLの実数型数値に変換する。この関数の型は数字型である。

一般規則

引数について

・引数1は，バリアントデータ項目を指定しなければならない。

・引数1に指定したバリアントデータ項目がNULLの場合は，実行時にエラーとなる。

・引数1に指定したバリアントデータ項目が実数型数値に変換できない場合は，実行時にエラーとなる。

関数値について

・関数値は，VARIANT値をCOBOLの実数型数値に変換した値である。

関数の表現形式

・倍精度浮動小数点項目

・この関数は，数字型関数が指定できるところに記述できる。

18.5.6　VARIANT-TO-ALPHANUMERIC関数（OLE2オートメーションインタフェース機能）

形式

機能

VARIANT-TO-ALPHANUMERIC（英数字型変換）関数は，引数1で指定したVARIANT値をCOBOLの英数字型に変換する。この関数の型は英数字型である。

一般規則

引数について

・引数1は，バリアントデータ項目を指定しなければならない。

・引数1に指定したバリアントデータ項目がNULLの場合は，実行時にエラーとなる。

・引数1に指定したバリアントデータ項目が文字列に変換できない場合は，実行時にエラーとなる。

関数値について

・関数値は，VARIANT値をCOBOLの英数字型に変換した値である。

・変換できる最大の文字数は1024バイトである。変換の結果この値を超える場合は，切り捨てられた文字列が，関数値として返される。

関数の表現形式

・引数に依存した長さの英数字項目

・この関数は，英数字型関数が指定できるところに記述できる。

18.5.7　VARIANT-TO-OBJECT関数（OLE2オートメーションインタフェース機能）

形式

機能

VARIANT-TO-OBJECT（OLEオブジェクト参照データ型変換）関数は，引数1で指定したVARIANT値と等価なOLEオブジェクトへのポインタを返す。この関数の型はOLEオブジェクト参照データ型である。

一般規則

引数について

・引数1は，バリアントデータ項目を指定しなければならない。

・引数1に指定したバリアントデータ項目がNULLの場合は，実行時にエラーとなる。

・引数1に指定したバリアントデータ項目がOLEオブジェクト参照データに変換できない場合は，実行時にエラーとなる。

関数値について

・関数値は，VARIANT値と等価なOLEオブジェクトへのポインタが返される。

関数の表現形式

・OLEオブジェクトへのポインタ

・この関数は，（CALL文を除く）送り出し側作用対象のOLEオブジェクト参照データ項目が指定できるところおよびOLEオブジェクト参照データ比較の条件式に記述できる。

18.5.8　LENGTH-OF-VARIANT関数（OLE2オートメーションインタフェース機能）

形式

機能

LENGTH-OF-VARIANT（VARIANT値の長さ取得）関数は，引数1で指定したVARIANT値をCOBOLの英数字型に変換するときに，必要となる受け取り領域の文字列長を取得する。この関数の型は整数型である。

一般規則

引数について

・引数1は，バリアントデータ項目を指定しなければならない。

・引数1に指定したバリアントデータ項目がNULLの場合は，実行時にエラーとなる。

・引数1に指定したバリアントデータ項目が文字列に変換できない場合は，実行時にエラーとなる。

関数値について

・関数値は，VARIANT値をCOBOLの英数字型に変換するときに，COBOLの英数字項目として受け取りに必要な文字列長を取得する。

関数の表現形式

・4バイトの2進項目（PIC S9(9) USAGE COMP）　（Windows(x64) COBOL2002の場合，8バイトの2進項目（PIC S9(18) USAGE COMP））

・この関数は，整数型関数が指定できるところに記述できる。

18.5.9　組み込み関数の表現形式（OLE2オートメーションインタフェース機能）

それぞれの関数について表現形式などの詳細を次に示す。

表18‒4　組み込み関数の表現形式

項番

関数名

表現形式

1

CONVERT-TO-VARIANT

VARIANT値へのポインタ

2

TYPE-OF-PROPERTY

符号付き整数部5けたの2進形式（4バイト）

3

TYPE-OF-VARIANT

符号付き整数部5けたの2進形式（4バイト）

4

VARIANT-TO-INTEGER

符号付き整数部9けたの2進形式（4バイト）

5

VARIANT-TO-NUMERIC

内部浮動小数点形式（8バイト）

6

VARIANT-TO-ALPHANUMERIC

引数に依存した長さの英数字

7

VARIANT-TO-OBJECT

OLEオブジェクトへのポインタ

8

LENGTH-OF-VARIANT

符号付き整数部9けたの2進形式（4バイト）

（Windows(x64) COBOL2002の場合，符号付き整数部18けたの2進形式（8バイト））

19　データベース操作シミュレーション機能

この章では，構造型データベース（XDM/SD）操作シミュレーション機能と，VOS3 SQLデータベースアクセス機能プログラムをシミュレーションするリレーショナルデータベース（XDM/RD）操作シミュレーション機能の形式について説明する。

19.1　構造型データベース（XDM/SD）操作シミュレーション機能

構造型データベース（XDM/SD）操作シミュレーション機能は，メインフレームで構造型データベース（XDM/SD）を操作する機能をシミュレーションする機能である。

詳細については，マニュアル「VOS3 データマネジメントシステム XDM E2系 プログラム作成の手引（XDM/SD）」を参照のこと。

19.1.1　データ部（構造型データベース（XDM/SD）操作シミュレーション機能）

形式

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.　データ部（DATA DIVISION）」

(1)　サブスキーマ記述項（SUBSCHEMA SECTION）

形式

機能

サブスキーマ記述項は，データベースで操作するデータ構造とその関係を指定する。

構文規則

サブスキーマ名およびスキーマ名には，サブスキーマ名句に指定した名称を指定しなければならない。

複数のスキーマと関連するサブスキーマを指定する場合，スキーマ名にはスキーマ名句に指定した代表スキーマ名を指定しなければならない。

指定するサブスキーマに対するXDM定義ユティリティの整合性チェック機能が実行済みでなければならない。ディクショナリに現，旧二つのサブスキーマを登録してある場合は，どちらかの整合性チェックが済んでいればよい。ただし，現ディクショナリメンバの整合性チェックが済んでいないときは，旧ディクショナリメンバのサブスキーマが参照される。

また，現ディクショナリメンバから準スキーマを削除した場合は，整合性チェックが済んでいないとみなされる。

データ名5で指定するカーソルグループ番号は，SUBSCHEMA句で定義したカーソル画数の範囲でなければならない。ゼロを指定すると，1を仮定する。

一つのUAP（User Application Program）に対して複数のサブスキーマを定義できる。

翻訳単位の目的プログラム一つに対して，サブスキーマ名は一つである。ただし，入れ子のあるプログラムには記述できない。最外プログラムにだけ指定できる。

リンカで結合されたUAP間で同じサブスキーマ名を指定してもよい。

データ名1〜6には，添字付けまたは指標付けを指定できない。

データ名1〜6は，作業場所節，局所場所節または連絡節で定義する。

データ名1は，長さ5文字の固定長集団項目，英数字項目または符号なし外部10進項目でなければならない（けた数チェックはしない）。

データ名2は，長さ4文字の固定長集団項目，英数字項目または符号なし外部10進項目でなければならない（けた数チェックはしない）。

データ名3は，長さ30文字の固定長集団項目または英数字項目でなければならない（けた数チェックはしない）。

データ名4は，4けたの外部10進項目，内部10進項目または2進項目の整数でなければならない（けた数チェックはしない）。

データ名5は，2けたの外部10進項目，内部10進項目または2進項目の整数でなければならない（けた数チェックはしない）。

データ名6は，長さ20文字の英数字項目でなければならない。

サブスキーマ記述項中にCOPY文を書いてはならない。

COPY文を使ってサブスキーマ節を複写してはならない。

レコードビュー名および構成要素ビュー名は，データ操作文以外にCOBOLの文で一意名やデータ名として参照できる。

構成要素ビュー名を可変長項目の制御変数として定義できない。

19.1.2　手続き部（構造型データベース（XDM/SD）操作シミュレーション機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

(1)　CONNECT文

形式

機能

CONNECT文は，レコードを一つまたはそれ以上の親子集合の子レコードとして組み入れる。

構文規則

親子集合ビュー名は，二重指定してはならない。

親子集合ビュー名を2,001個以上指定してはならない。

(2)　DISCONNECT文

形式

機能

DISCONNECT文は，一つまたはそれ以上の親子集合の子レコードになっているレコードをその親子集合から切り離す。

構文規則

親子集合ビュー名は，二重指定してはならない。

親子集合ビュー名を2,001個以上指定してはならない。

(3)　ERASE文

形式

機能

ERASE文は，一つまたはそれ以上のレコードをデータベースから削除する。

(4)　FETCH文

形式

書き方1

書き方2

書き方3

書き方4

機能

FETCH文は，データベース中にあるレコードを探索し，そのレコードを利用できるようにする。

構文規則

一意名1は，4バイトの2進項目でなければならない。

整数1は，0を除く-32,767〜32,767の範囲の値しか指定できない。ただし，書き方1は，1〜32,767の範囲の値または-1しか指定できない。

書き方2で，マルチメンバセットで検索条件文を指定するときはレコードビュー名は省略できない。

書き方2で，レコードビュー名を省略したときはINTO指定を省略できない。

データ名2とデータ名3は，強く型付けされていない固定長集団項目，英字項目または英数字項目でなければならない。

データ名2の長さは，レコードビュー長（マルチメンバセットのときは最大レコードビュー長）以上のサイズでなければならない。

データ名1〜3は，作業場所節，局所場所節または連絡節で定義できる。

データ名1の形式を次に示す。

図19‒1　データ名1の形式

データ名1は，強く型付けされていない固定長集団項目または英数字項目でなければならない。

書き方1でDYNAMICを指定したときWHERE条件を記述しなくてもよい。通常のWHERE条件を記述すると，そのまま処理される。WHERE条件を省略すると，WHERE KEY = データ名（DYNAMIC KEYに指定された）を仮定する。

書き方1，書き方3でLASTを指定するときは，INDEXEDを指定しなければならない。

親子集合ビュー名2は，二重に指定してはならない。

親子集合ビュー名2は，2,001個以上指定してはならない。

インデクス名を指定していない場合，条件中に"KEY"を指定してはならない。

書き方3でNEXT／PRIORを指定するときは，ADVANCINGを指定してはならない。

データ名1は添字付けおよび修飾をしてもよい。

データ名2，3は修飾してもよい。

書き方1でDYNAMICを指定する場合は，探索条件にはKEY = データ名しか指定できない。

(5)　FIND文

形式

書き方1

書き方2

書き方3

機能

FIND文は，データベース中のあるレコードを検索する。

構文規則

書き方2で，あるマルチメンバセットで条件を指定するときは，レコードビュー名は省略できない。

書き方1，2は，INTO指定を除いてFETCH文（書き方1，2）と同じである。

データ名1は固定長集団項目，英字項目または英数字項目のどれかでなければならない。

データ名1は作業場所節，局所場所節または連絡節で定義する。

書き方1でDYNAMICを指定したときWHERE条件を記述しなくてもよい。通常のWHERE条件を記述すると，そのまま処理される。WHERE条件を省略すると，WHERE KEY = データ名（DYNAMIC KEYに指定された）を仮定する。

書き方1でLASTを指定するときは，INDEXED指定が必要である。

書き方3のRETAINING指定については，「(4)　FETCH文」を参照のこと。

データ名1は修飾してもよい。

(6)　GET文

形式

書き方1

書き方2

機能

GET文は，FIND文で位置づけられたレコードを利用できるようにする。

構文規則

データ名2は，英字項目，英数字項目または強く型付けされていない固定長集団項目でなければならない。

データ名2の長さは，レコードビュー長以上のサイズでなければならない。

データ名2は，作業場所節，局所場所節または連絡節で定義する。

DATA AREAを指定した場合，レコードビュー名2，INTO指定のどちらかを指定しなければならない。

データ名1の構文規則については，「(4)　FETCH文」を参照のこと。

データ名1は添字付けおよび修飾をしてもよい。

データ名2は修飾してもよい。

(7)　MODIFY文

形式

機能

MODIFY文は，データベース中のレコードを更新する。

構文規則

データ名1は，固定長集団項目，英字項目または英数字項目でなければならない。

データ名1の長さは，レコードビュー長以上のサイズでなければならない。

データ名1は，作業場所節，局所場所節または連絡節で定義する。

データ名1は修飾してもよい。

(8)　NULLIFY文

形式

機能

NULLIFY文は，位置指示文にnull（ナル）値を設定する。

構文規則

OWNER OF 親子集合ビュー名1は，特異親子集合に対しては指定できない。

(9)　RECONNECT文

形式

機能

RECONNECT文は，一つまたはそれ以上の親子集合の子レコードになっているレコードを，その親子集合内または親子集合の子レコードとして再接続する。

構文規則

親子集合ビュー名は，二重指定してはならない。

親子集合ビュー名を2,001個以上指定してはならない。

(10)　STORE文

形式

機能

STORE文は，データベースにレコードを格納する。

構文規則

データ名1は，英字項目，英数字項目または固定長集団項目でなければならない。

データ名1の長さは，レコードビュー長以上のサイズでなければならない。

データ名1は，作業場所節，局所場所節または連絡節で定義する。

親子集合ビュー名は，二重指定してはならない。

親子集合ビュー名は，2,001個以上指定してはならない。

データ名1は修飾してもよい。

(11)　検索条件文

形式

機能

検索条件文は，FIND文またはFETCH文中のWHERE指定で使用され，レコードを検索する条件を指定する。

構文規則

一意名は，サブスキーマ節で定義してはならない。

定数に英数字定数（表意定数を含まない），整数定数，実数定数および日本語文字定数以外は指定できない。

構成要素ビュー名は，基本配列，配列に含まれない固定長集団項目，英数字項目，日本語項目，外部10進項目，内部10進項目および2進項目を指定する（配列に含まれる固定長集団項目はエラーチェックしない）。

複数の条件を指定する場合，論理演算子のAND，ORで検索条件をつなぐ。

検索条件にレコードビュー名は指定できない。

一般規則

検索条件文では，少なくとも比較演算子の左辺または右辺のどちらかに構成要素ビュー名を指定する。

条件の選択条件は256個以上指定できない。

条件で一つの選択条件の中の関係条件数は256個以上指定できない。

KEYを指定した条件には，構成要素ビュー名は指定できない。

条件中にKEYを指定している場合は，複数の関係条件をORで結合できない。

条件中にKEYを指定した関係条件と一般の関係条件を同時に記述できない。

CONTENTが指定された構成要素ビュー名は，構成要素ビュー名としてではなく，COBOLの一意名と同様に扱われる。

KEYを指定した関係条件は3個以上記述できない。

検索条件文に指定できる項目の組み合わせと形式の組み合わせを「表19‒1　検索条件文に指定できる項目の組み合わせ」と「表19‒2　検索条件文に指定できる形式の組み合わせ」に示す。

表19‒1　検索条件文に指定できる項目の組み合わせ

左辺

右辺

構成要素ビュー名

一意名

定数

FG

AN

N

ED

ID

BI

FG

AN

N

ED

ID

BI

LA

LN

LJ

構

成

要

素

ビ

ュ

｜

名

FG

○a

○a

×

×

×

×

○a

○a

×

×

×

×

○a

×

×

AN

○a

○a

×

×

×

×

○a

○a

×

×

×

×

○a

×

×

N

×

×

○a

×

×

×

×

×

○a

×

×

×

×

×

○a

ED

×

×

×

○n

○n

×

×

×

×

○n

×

×

×

○n

×

ID

×

×

×

○n

○n

×

×

×

×

×

○n

×

×

○n

×

BI

×

×

×

×

×

×

×

×

×

×

×

○n

×

×

×

一

意

名

FG

○a

○a

×

×

×

×

×

×

×

×

×

×

×

×

×

AN

○a

○a

×

×

×

×

×

×

×

×

×

×

×

×

×

N

×

×

○a

×

×

×

×

×

×

×

×

×

×

×

×

ED

×

×

×

○n

×

×

×

×

×

×

×

×

×

×

×

ID

×

×

×

×

○n

×

×

×

×

×

×

×

×

×

×

BI

×

×

×

×

×

○n

×

×

×

×

×

×

×

×

×

定

数

LA

○a

○a

×

×

×

×

×

×

×

×

×

×

×

×

×

LN

×

×

×

○n

○n

×

×

×

×

×

×

×

×

×

×

LJ

×

×

○a

×

×

×

×

×

×

×

×

×

×

×

×

（凡例）

○a：文字比較する

○n：数字比較する

× ：許されない

AN：英数字

N ：日本語

ED：外部10進

ID：内部10進

BI：2進

FG：固定長集団

LA：英数字定数

LN：数字定数

LJ：日本語文字定数

表19‒2　検索条件文に指定できる形式の組み合わせ

左辺

右辺

定数

構成要素ビュー名

基本項目

基本配列の

要素

配列に含まれない

固定長集団項目

定数

×

○

○

○

構成要素ビュー名

基本項目

○

○

○

○

基本配列の要素

○

○

○

○

配列に含まれない固定長集団項目

○

○

○

○

（凡例）

○：組み合わせ可能

×：組み合わせ不可能

(12)　データベース条件文

形式

書き方1

機能

二つの位置指示子が示すレコードが同一かどうかを判定する。

書き方2

機能

位置指示子がナル値かどうかを判定する。

書き方3

機能

親子集合が空かどうかを判定する。

書き方4

機能

レコードが親子集合型の子レコードかどうかを判定する。

19.2　リレーショナルデータベース（XDM/RD）操作シミュレーション機能

リレーショナルデータベース（XDM/RD）操作シミュレーション機能は，メインフレームでSQLデータベースアクセス機能のリレーショナルデータベース（XDM/RD）を操作する機能をシミュレーションする機能である。

ここでは，リレーショナルデータベース（XDM/RD）を操作する機能の一般規則についてだけ述べる。構文規則，一般規則などの詳細については，マニュアル「VOS3 データマネジメントシステム XDM E2系 プログラム作成の手引 （XDM/RD E2）」および「VOS3 データマネジメントシステム XDM E2系 XDM/RD E2 SQLリファレンス」を参照のこと。

なお，このシステムではリレーショナルデータベースのアクセスはしないで，SQLデータ操作言語のコンパイルだけをする。

19.2.1　全般規則（リレーショナルデータベース（XDM/RD）操作シミュレーション機能）

(1)　区切り文字

区切り文字を次に示す。

拡張コードは使用できない（このシステムではチェックしない）。

このシステムでは，「;」「==」「**」も区切り文字として扱う。

このシステムでは区切り文字をすべてコメントとして扱う。

(2)　予約語

EXEC，SQL，END-EXEC以外のSQLの予約語はCOBOLの予約語として扱わない。

EXEC，SQL，END-EXECはCOBOLの予約語としても扱う。

拡張コードは使用できない（このシステムではチェックしない）。

大文字と小文字は等価とする。

大文字と小文字は混在してもよい。

(3)　埋め込み変数

形式

データ名1，2はCOBOL2002のデータ名の名称規則に従う。

埋め込み変数中の「:」の後，「.」の前後に空白は書けない。

一意でないデータ名を明示的に参照するために，一連の修飾語によって一意にしなければならない。

修飾する必要のない名前を修飾してもよい。一意にする修飾語の組み合わせが幾つもあるとき，どれを用いてもよい。

データ名1は，レベル指示語に関係づけられる名前で，さらにデータ名2が従属する集団項目でなければならない。また，データ名2は順に階層系列のより下位のレベルになるように指定する。

このシステムでは埋め込み変数のチェックはしない。

19.2.2　見出し部（リレーショナルデータベース（XDM/RD）操作シミュレーション機能）

見出し部にEXEC SQL〜END-EXECは書けない。ただし，このシステムではコメント扱いとする。

19.2.3　環境部（リレーショナルデータベース（XDM/RD）操作シミュレーション機能）

環境部にEXEC SQL〜END-EXECは書けない。ただし，このシステムではコメント扱いとする。

19.2.4　データ部（リレーショナルデータベース（XDM/RD）操作シミュレーション機能）

形式

ただし，このシステムではEXEC SQL〜END-EXECまでをコメント扱いとする。

(1)　SQL連絡領域

形式

または

SQL文のリターンコードと関連情報をSQL連絡領域に設定する。ただし，このシステムではSQL連絡領域に何も設定しない。

SQL連絡領域を使用するとき，ほかの場所でSQLCODEを定義してはならない。SQL連絡領域にSQLCODEが含まれている。

SQLCAは，翻訳単位に1個だけ指定する。

SQLCAのレベル番号は1でなければならない。

SQLCAは，GLOBAL句の有無に関係なく，大域属性を持つ。

SQLCAは，最外プログラムまたは利用者定義関数で宣言しなければならない。

INCLUDEの後はSQLCAでなければならない。

このシステムではSQL連絡領域のエラーチェックはしない。

(2)　SQLCODE変数

SQL文のリターンコードを設定する。ただし，このシステムではSQLCODE変数に何も設定しない。

SQLCODE変数は，埋め込みSQL宣言節の中で宣言しなければならない。

SQLCODE変数のレベル番号は，1か77でなければならない。

SQLCODE変数の属性は，S9(9) COMPでなければならない。

SQLCODE変数は，翻訳単位に1個だけ指定する。

SQLCODE変数は，最外プログラムまたは利用者定義関数で宣言しなければならない。

SQLCODE変数は，GLOBAL句の有無に関係なく，大域属性を持つ。

このシステムではSQLCODE変数のエラーチェックはしない。

19.2.5　原始文操作機能（リレーショナルデータベース（XDM/RD）操作シミュレーション機能）

EXEC SQL〜END-EXEC間のCOPY文およびINCLUDE文の展開と原文中の文字列，分離符，正書法のチェックはCOBOLの規則に従う。

登録集原文中にSQL文が存在してもよい。

19.2.6　手続き部（リレーショナルデータベース（XDM/RD）操作シミュレーション機能）

形式

END-EXECが現れないでプログラムが終了したときは，プログラム終了の直前にEND-EXECを仮定する。

END-EXECが現れないで次のEXEC SQLが現れても，EXEC SQLはコメントとして扱う。

構文規則

このシステムではSQL文の構文に誤りがあってもエラーにしない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

19.2.7　特殊レジスタ（リレーショナルデータベース（XDM/RD）操作シミュレーション機能）

データベースアクセス機能を使用するとき，次の特殊レジスタを生成する。

RDB-STATUS

RDB-COUNT

RDB-RDNODE

RDB-STATUSはSQL文の実行後のステータスコードをX(5)の属性で返す。初期値は5バイトの空白である。

RDB-COUNTはSQL文の実行によって操作された行数をS9(9) COMPの属性で返す。初期値はゼロである。

RDB-RDNODEは分散アクセス時のRDノード名称をX(30)の属性で返す。初期値は30バイトの空白である。

RDB-STATUS，RDB-COUNT，RDB-RDNODEはそれぞれプログラム，利用者定義関数，ファクトリ，インスタンス単位に一つずつ生成され，これらは大域属性を持つ静的データである。

このシステムでは値の設定はしない。

19.2.8　注意事項（リレーショナルデータベース（XDM/RD）操作シミュレーション機能）

(1)　EXEC SQL〜END-EXEC間でのCOBOLの語句の扱い

EXEC SQL〜END-EXEC間にCOPY文およびINCLUDE文があるときは,最初にCOPY文，INCLUDE文の展開をしてからSQLの処理をする。

EXEC SQL〜END-EXEC間にCOPY文，INCLUDE文に関係しないCOBOLの語句があるときは，コメントとして扱う。

(2)　-SQL,XDMオプションがないときのEXEC SQL〜END-EXECの扱い

-SQL,XDMオプションがないとき，EXEC SQL〜END-EXECは書いてはならない。

20　HiRDBによる索引ファイル入出力機能

HiRDBによる索引ファイル入出力機能は，COBOL2002の索引ファイル入出力機能を使ってRDBファイルにアクセスする機能である。

この章では，RDBファイル入出力をするための言語の形式や規則について説明する。

-UniObjGenオプションの指定が前提であるLinux COBOL2002では，この機能に関する次に示すコンパイラオプションを指定した場合は回復不能エラー，構文を記述した場合は重大エラーを出力する。

・-RDBTranオプション

・ORGANIZATION IS RDB

・COMMIT文

・ROLLBACK文

20.1　概説（HiRDBによる索引ファイル入出力機能）

COBOL2002の索引ファイルの入出力文を使ってRDB（Relational Database）にアクセスできる。ただし，この機能はDC機能（シミュレーションを含む）と同時に使用できない。

ここでは，マニュアル「COBOL2002　言語　標準仕様編」の索引ファイルと異なる部分についてだけ説明する。

なお，この機能を使うときにファイル共用機能の構文を書いてもよいが，覚え書きとする。

20.2　環境部（HiRDBによる索引ファイル入出力機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.　環境部（ENVIRONMENT DIVISION）」

20.2.1　ファイル管理段落（HiRDBによる索引ファイル入出力機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.3.3　ファイル管理段落（FILE-CONTROL）」

(1)　ALTERNATE RECORD KEY句（HiRDBによる索引ファイル入出力機能）

索引ファイルと異なる規則だけを説明する。

DUPLICATES指定は覚え書きとする。重複を許すかどうかは，ファイル生成時に指定する。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.3.4(5)　ALTERNATE RECORD KEY句」

(2)　ORGANIZATION句（HiRDBによる索引ファイル入出力機能）

形式

機能

ファイルの論理的構成がRDB編成であることを指定する。

構文規則

データコミュニケーション機能のCD記述項と同時に使用できない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.3.4(9)　ORGANIZATION句」

(3)　RECORD KEY句（HiRDBによる索引ファイル入出力機能）

索引ファイルの規則と異なる規則だけ説明する。

主レコードキーの値は，幾つかのレコードで重複してもよい。主レコードキーの重複を許すかどうかはファイル生成時に指定する。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.3.4(14)　RECORD KEY句」

20.3　データ部（HiRDBによる索引ファイル入出力機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.　データ部（DATA DIVISION）」

20.3.1　ファイル記述項（FD）（HiRDBによる索引ファイル入出力機能）

形式

構文規則

RDBファイルのレコード記述項には，DEPENDING ON指定のOCCURS句を指定できない。

Windows COBOL2002では，RDBファイルのファイル記述項のDATA FORMAT句は覚え書きとする。UNIX COBOL2002では，DATA FORMAT句は使用できない。

RDBファイルのファイル記述項に従属するレコード記述は一つでなければならない。

一般規則

RECORD句を書いた場合，レコード記述から計算した最大の長さの固定長で動作する。

データ名1の指定に関係なく，レコード記述から計算した最大長で出力動作が行われる。

データ名1の指定に関係なく，レコード記述から計算した最大長で入力動作が行われる。データ名1が指定された場合は，常に最大長が返される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.3.4　ファイル記述項（file description entry）」

20.4　手続き部（HiRDBによる索引ファイル入出力機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

20.4.1　CANCEL文（HiRDBによる索引ファイル入出力機能）

HiRDBによる索引ファイル入出力機能に対してトランザクション管理機能を使用している場合，次の規則が適用される。

取り消されるプログラムにHiRDBによる索引ファイル入出力機能が定義されていて，かつそのファイルが開かれているとき，そのファイルは閉じられる。このとき，暗黙的なCOMMIT文が実行される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.5　CANCEL文」

20.4.2　CLOSE文（HiRDBによる索引ファイル入出力機能）

HiRDBによる索引ファイル入出力機能に対してトランザクション管理機能を使用している場合，次の規則が適用される。これ以外の規則は，索引ファイルの規則と同じである。

暗黙的なCOMMIT文が実行される。

トランザクション管理機能については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のHiRDBによる索引編成ファイルのトランザクション管理機能についての説明を参照のこと。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.6　CLOSE文」

20.4.3　COMMIT文（HiRDBによる索引ファイル入出力機能）

形式

機能

COMMIT文は，コミットで現行のトランザクションを終了させる。また，ROLLBACK文の実行やプログラムの異常終了によってファイルなどを復元する場合の復元時点となる。

一般規則

HiRDBによる索引ファイル入出力機能での対象だけに意味を持つ。

現行のトランザクションを終了させる。

現行のトランザクションによってなされたすべての変更をコミットする。

COMMIT文を実行すると，現行のトランザクションで占有したレコードの排他制御は解除される。

COMMIT文を実行すると，HiRDBによる索引ファイル入出力機能では，すべてのファイルのファイル位置指示子は不定となる。なお順アクセスで，継続するレコードを読み込む場合は，COMMIT文の実行直前のキー値を使って，START文で位置決めをし直さなければならない。

トランザクション管理機能については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のHiRDBによる索引編成ファイルのトランザクション管理機能についての説明を参照のこと。

20.4.4　DELETE文（HiRDBによる索引ファイル入出力機能）

DELETE文については，索引ファイルの規則と同じである。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.10　DELETE文」

20.4.5　EXIT PROGRAM文，GOBACK文（HiRDBによる索引ファイル入出力機能）

HiRDBによる索引ファイル入出力機能に対してトランザクション管理機能を使用している場合，次の規則が適用される。

HiRDBによる索引ファイル入出力機能が定義されている初期化属性のプログラムで，かつそのファイルが開かれているとき，そのファイルは閉じられる。このとき，暗黙的なCOMMIT文が実行される。

COBOL主プログラムでGOBACK文を実行すると，STOP RUN文と同じ動作になる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.20　EXIT文」

「COBOL2002　言語　標準仕様編」　「10.8.22　GOBACK文」

20.4.6　OPEN文（HiRDBによる索引ファイル入出力機能）

索引ファイルの規則と異なる規則だけを説明する。

OUTPUTモード指定のとき，ファイルの追加書きはしないで，常にファイルを再作成する。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.30　OPEN文」

20.4.7　READ文（HiRDBによる索引ファイル入出力機能）

索引ファイルの規則と異なる規則だけを説明する。

PREVIOUS指定のあるREAD文は記述できない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.33　READ文」

20.4.8　REWRITE文（HiRDBによる索引ファイル入出力機能）

REWRITE文については，索引ファイルの規則と同じである。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.39　REWRITE文」

20.4.9　ROLLBACK文（HiRDBによる索引ファイル入出力機能）

形式

機能

ROLLBACK文は，ロールバックで現行のトランザクションを終了させる。また，直前にコミットした時点の状態まで，ファイルを復元する。

一般規則

HiRDBによる索引ファイル入出力機能での対象だけに意味を持つ。

現行のトランザクションを終了させる。

現行のトランザクションによってなされたすべての変更を取り消す。

ROLLBACK文を実行すると，現行のトランザクションで占有したレコードの排他制御は解除される。

ROLLBACK文を実行すると，HiRDBによる索引ファイル入出力機能でのすべてのファイルのファイル位置指示子は不定となる。なお順アクセスで，継続するレコードを読み込む場合は，ROLLBACK文の実行直前のキー値を使って，START文で位置決めをし直さなければならない。

トランザクション管理機能については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のHiRDBによる索引編成ファイルのトランザクション管理機能についての説明を参照のこと。

20.4.10　START文（HiRDBによる索引ファイル入出力機能）

索引ファイルの規則と異なる規則だけを説明する。

KEY指定に記述するデータ名は，主レコードキーまたは副レコードキーと左端の文字位置を共有し，そのレコードキーと同じ長さでなければならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.45　START文」

20.4.11　STOP RUN文（HiRDBによる索引ファイル入出力機能）

HiRDBによる索引ファイル入出力機能に対してトランザクション管理機能を使用している場合，次の規則が適用される。

開かれているHiRDBによる索引ファイル入出力機能が閉じられる。このとき，暗黙的なCOMMIT文が実行される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.46　STOP文」

20.4.12　UNLOCK文（HiRDBによる索引ファイル入出力機能）

索引ファイルの規則と異なる規則だけを説明する。

UNLOCK文の実行時に，入出力順序の妥当性はチェックするが，実際にレコード排他の解除はしない。レコード排他はRDBシステムの定義に従う。

20.4.13　WRITE文（HiRDBによる索引ファイル入出力機能）

WRITE文については，索引ファイルの規則と同じである。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.55　WRITE文」

21　数字項目のけた拡張機能

数字項目のけた拡張機能とは，数字項目，数字編集項目および数字定数で扱える数字のけた数の上限を18けたから38けたに拡張し，算術演算，転記，および比較条件で使用できるようにする機能である。数字項目のけた拡張機能を使用する場合，コンパイル時に-MaxDigits38オプションおよび-IntResult,DecFloat40オプションを指定する。

この章では，数字項目のけた拡張機能を使用するための言語の形式と規則について説明する。

この機能は，64bit版 COBOL2002で使用できる。

21.1　ソース単位

PICTURE句の数字けた位置の個数に19〜38を指定した数字項目，19〜38を指定した数字編集項目および19〜38けたの数字定数を定義できるソース単位を次に示す。

表21‒1　 19〜38けたを指定した数字項目，数字編集項目および数字定数を定義できるソース単位

ソース単位

数字けた位置の個数が19〜38けたの数字項目，数字編集項目および数字定数の定義

最外側のプログラム定義（その内包するプログラム定義群も含む）

○

内側のプログラム定義（その内包するプログラム定義群も含む）

○

関数定義

×

クラス定義

×

ファクトリ定義

×

インスタンス定義

×

メソッド定義

×

インタフェース定義

×

（凡例）

○：定義できる

×：定義できない

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「6.3　ソース単位」

21.2　TURN指令（数字項目のけた拡張機能）

構文規則

例外名1に，EC-SIZEおよびEC-SIZEで始まる例外名を指定してはならない。なお，例外名1にEC-ALLを指定してEC-ALL例外のチェックを有効にしても，EC-SIZE例外のチェックは有効とならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「3.3.15　TURN指令」

21.3　定数（数字項目のけた拡張機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.2.1(2)　定数」

21.3.1　数字定数

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.2.1(2)(b)　数字定数」

(1)　固定小数点数字定数

固定小数点数字定数とは，0から9までの数字，正号，負号，および小数点から成る文字列とする。

このシステムでは，1けた以上38けた以下の長さの固定小数点数字定数が許される。

21.4　データ項目（数字項目のけた拡張機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.4.2　データ項目や定数の字類と項類」

21.4.1　数字項類（数字項目のけた拡張機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.4.2(5)　数字項類（Numeric category）」

(1)　外部10進形式

外部10進形式に割り当てられる記憶域のサイズの算出方法は，PICTURE句の数字けた位置の個数が19〜38の場合でも，けた位置の個数が1〜18の場合と同様である。1バイトで数字１けたを表現し，SIGN句にSEPARATEを指定した場合は，演算符号を表す文字が数字列とは分離されて置かれる。外部10進形式に割り当てられる記憶域のサイズを次の表に示す。

表21‒2　外部10進形式に割り当てられる記憶域のサイズ

演算符号

記憶域のサイズ（単位：バイト数）

符号付き

SIGN句SEPARATE指定あり

PICTURE句の'9'の個数 + 1

SIGN句SEPARATE指定なし

PICTURE句の'9'の個数

符号なし

PICTURE句の'9'の個数

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.4.2(5)(a)　外部10進形式」

(2)　内部10進形式

内部10進形式に割り当てられる記憶域のサイズの算出方法は，PICTURE句の数字けた位置の個数が19〜38の場合でも同様である。内部10進形式に割り当てられる記憶域のサイズの算出方法を次に示す。

記憶域のサイズ = PICTURE句の'9'の個数 / 2 + 1

この算出方法で求める値の単位は，バイト数である。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.4.2(5)(b)　内部10進形式」

21.4.2　数字編集項類（数字項目のけた拡張機能）

数字編集項目の割り当てられる記憶域のサイズの算出方法は，PICTURE句の数字けた位置の個数が19〜38の場合でも標準仕様と同じである。算出式を次に示す。

記憶域のサイズ = PICTURE句の文字位置を表す記号の個数

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.4.2(6)　数字編集項類（Numeric-edited category）」

21.5　一意参照（数字項目のけた拡張機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.3.1　一意参照」

21.5.1　添字

構文規則

データ名2が数字項目のときは，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してもよい。

整数1，整数2，整数3に19〜38けたの整数を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.3.1(2)　添字（Subscript）」

21.6　一意名のいろいろ（数字項目のけた拡張機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.3.2　一意名のいろいろ」

21.6.1　関数一意名

構文規則

一部の組み込み関数を除き，引数1に，PICTURE句の数字けた位置の個数が19〜38の数字項目および数字編集項目を指定してはならない。組み込み関数の引数1の詳細は，「21.10.1　引数（数字項目のけた拡張機能）」を参照のこと。

引数1に，けた数が19〜38けたの数字定数を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.3.2(2)　関数一意名」

21.6.2　部分参照子

構文規則

最左端位置および長さに指定した算術式に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してもよい。

最左端位置および長さに指定した算術式に，19〜38けたの数字定数を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.3.2(3)　部分参照子」

21.7　環境部（数字項目のけた拡張機能）

構文規則

すべての書き方の規則

けた数が19〜38けたの数字項目を指定してはならない。

数字のけた数が19〜38けたの数字編集項目を指定してはならない。

19〜38けたの数字定数を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.　環境部（ENVIRONMENT DIVISION）」

「COBOL2002　言語　標準仕様編」　「付録D.5　環境部（ENVIRONMENT DIVISION）」

21.8　データ部（数字項目のけた拡張機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.　データ部（DATA DIVISION）」

「COBOL2002　言語　標準仕様編」　「付録D.6　データ部（DATA DIVISION）」

21.8.1　ファイル節（FILE SECTION）（数字項目のけた拡張機能）

構文規則

次のファイルのレコード記述項に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を定義してもよい。

・順ファイル

・相対ファイル

・テキストファイル

・HiRDBによる索引ファイル※（Windows(x64) COBOL2002とAIX(64) COBOL2002が対象）

注※

ただし，COBOLで使用できるHiRDBの列のデータ型とCOBOLのデータ記述の対応については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のHiRDBの定義とCOBOLの定義の関連性を参照のこと。

次のファイルのレコード記述項に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を定義してはならない。

・索引ファイル

・CSV編成ファイル

・整列併合ファイル

VALUE句以外で，けた数が19〜38けたの数字定数を指定してはならない。VALUE句の規則は，「21.8.17　VALUE句（数字項目のけた拡張機能）」を参照のこと。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.3　ファイル節（FILE SECTION）」

21.8.2　作業場所節（WORKING-STORAGE SECTION）（数字項目のけた拡張機能）

構文規則

PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を定義してもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.4　作業場所節（WORKING-STORAGE SECTION）」

21.8.3　局所場所節（LOCAL-STORAGE SECTION）（数字項目のけた拡張機能）

構文規則

PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を定義してもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.5　局所場所節（LOCAL-STORAGE SECTION）」

21.8.4　連絡節（LINKAGE SECTION）（数字項目のけた拡張機能）

構文規則

PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を定義してもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.6　連絡節（LINKAGE SECTION）」

21.8.5　報告書節（REPORT SECTION）（数字項目のけた拡張機能）

構文規則

PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を定義してはならない。

PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

けた数が19〜38けたの数字定数を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「13.4　データ部（DATA DIVISION）（報告書作成機能）」

21.8.6　サブスキーマ節（SUBSCHEMA SECTION）（数字項目のけた拡張機能）

構文規則

PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を定義してはならない。

PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

PICTURE句の数字けた位置の個数が19〜38の数字編集項目を指定してはならない。

なお，サブスキーマ節の詳細については，「19.1.1　データ部（構造型データベース（XDM/SD）操作シミュレーション機能）」を参照のこと。

21.8.7　画面節(SCREEN SECTION)（数字項目のけた拡張機能）

この節は，Windows(x64) COBOL2002およびAIX(64) COBOL2002上で記述できる。

構文規則

PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を定義してはならない。

PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

PICTURE句の数字けた位置の個数が19〜38の数字編集項目を指定してはならない。

けた数が19〜38けたの数字定数を指定してはならない。

画面節（SCREEN SECTION）による画面機能の詳細については，「12.　画面節（SCREEN SECTION）による画面機能」を参照のこと。

21.8.8　画面節(WINDOW SECTION)（数字項目のけた拡張機能）

この節は，Windows(x64) COBOL2002およびAIX(64) COBOL2002上で記述できる。

構文規則

PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を定義してはならない。

PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

PICTURE句の数字けた位置の個数が19〜38の数字編集項目を指定してはならない。

けた数が19〜38けたの数字定数を指定してはならない。

画面節（WINDOW SECTION）による画面機能の詳細については，「13.　画面節（WINDOW SECTION）による画面機能」を参照のこと。

21.8.9　BLANK WHEN ZERO句（数字項目のけた拡張機能）

構文規則

PICTURE句の数字けた位置の個数が19〜38の数字項目および数字編集項目にBLANK WHEN ZERO句を指定してもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.7　BLANK WHEN ZERO句」

21.8.10　BLOCK CONTAINS句（数字項目のけた拡張機能）

構文規則

整数1および整数2に，けた数が19〜38けたの数字定数を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.9　BLOCK CONTAINS句」

21.8.11　DATA RECORDS句（数字項目のけた拡張機能）

構文規則

データ名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.18　DATA RECORDS句」

21.8.12　EXTERNAL句（数字項目のけた拡張機能）

構文規則

PICTURE句の数字けた位置の個数が19〜38の数字項目，またはその数字項目を従属項目として含む集団項目に対して，EXTERNAL句を指定してはならない。

PICTURE句の数字けた位置の個数が19〜38の数字編集項目，またはその数字編集項目を従属項目として含む集団項目に対して，EXTERNAL句を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.25　EXTERNAL句」

21.8.13　LINAGE句（数字項目のけた拡張機能）

構文規則

データ名1，データ名2，データ名3，およびデータ名4に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

整数1，整数2，整数3，および整数4に，けた数が19〜38けたの数字定数を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.41　LINAGE句」

21.8.14　OCCURS句（数字項目のけた拡張機能）

構文規則

すべての書き方の規則

データ名2に，PICTURE句の数字けた位置の個数が19〜38の数字項目および数字編集項目を指定してはならない。

整数1，整数2に，19〜38けたの数字定数を指定してはならない。

書き方2の規則

データ名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.51　OCCURS句」

21.8.15　PICTURE句（数字項目のけた拡張機能）

構文規則

すべての書き方の規則

文字列1の長さは，最大60文字とする。

項類が数字のデータ項目に対しては，文字列1で記述される数字けた位置の個数が1〜38までの範囲内になくてはならない。ただし，1〜38の範囲で指定できるのは，項類が数字のデータ項目で外部10進形式，または内部10進形式のどちらかだけとする。

項類が数字編集のデータ項目に対しては，文字列1で記述される数字けた位置の個数が1〜38までの範囲内になくてはならない。

項類が数字編集のデータ項目のサイズは，249けた以下でなければならない。

項類が数字で外部10進形式，または内部10進形式のデータ項目に記号「P」を書く場合，数字けた位置の個数は1〜18でなければならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.54　PICTURE句」

21.8.16　USAGE句（数字項目のけた拡張機能）

構文規則

PICTURE句の数字けた位置の個数が19〜38の数字項目，またはその数字項目を従属項目として含む集団項目に対して，USAGE BINARY／COMP／COMP-4／COMP-5／COMP-Xを指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.86　USAGE句」

21.8.17　VALUE句（数字項目のけた拡張機能）

構文規則

作業場所節，局所場所節の場合，定数1，定数2，および定数3に，けた数が19〜38けたの数字定数を指定してもよい。

ファイル節，連絡節の場合，定数2，定数3に，けた数が19〜38けたの数字定数を指定してもよい。

報告書節の場合，定数1にけた数が19〜38けたの数字定数を指定してはならない。

サブスキーマ節の場合，定数1，定数2，および定数3に，けた数が19〜38けたの数字定数を指定してはならない。

画面節(WINDOW SECTION)の場合，定数1に，けた数が19〜38けたの数字定数を指定してはならない。※

注※

画面節(WINDOW SECTION)は，Windows(x64) COBOL2002およびAIX(64) COBOL2002上で記述できる。

画面節（WINDOW SECTION）による画面機能の詳細については，「13.　画面節（WINDOW SECTION）による画面機能」を参照のこと。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.88　VALUE句」

21.8.18　埋め込みSQL宣言節（データベースアクセス機能）（数字項目のけた拡張機能）

この節は，Windows(x64) COBOL2002およびLinux(x64) COBOL2002上で記述できる。

構文規則

埋め込みSQL宣言節に，PICTURE句の数字けた位置の個数が19〜38の数字項目および数字編集項目を定義してはならない。埋め込みSQL宣言節の詳細は，「9.4　データ部（埋め込みSQL宣言節）（データベースアクセス機能）」を参照のこと。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「付録D.12　データベースアクセス機能の形式」

21.9　手続き部（数字項目のけた拡張機能）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

「COBOL2002　言語　標準仕様編」　「付録D.7　手続き部（PROCEDURE DIVISION）」

21.9.1　文に共通な指定と機能

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.6　文に共通な指定と機能」

(1)　SIZE ERROR指定とけたあふれ条件

このシステムでは，中間結果の演算でのけたあふれ条件は次のとおりとなる。

中間データ項目が40けた10進浮動小数点形式のとき，中間結果のオーバフロー／アンダフローが発生した時点でけたあふれとならない。ただし，結果のデータ項目が10進／2進形式の数字項目で，かつ中間結果のオーバフローが発生した場合は，算術演算の結果を結果のデータ項目に格納するときにけたあふれ条件が起こる。

中間データ項目が内部浮動小数点形式のとき，中間結果のオーバフロー／アンダフローが発生した場合にけたあふれとなる。

また，SIZE ERROR指定がない場合にけたあふれ条件が発生すると，次のことが起きる。

次の場合，実行時エラーとなり異常終了する。

べき乗の評価の規則に違反した場合。

除算の演算中やDIVIDE文中の除数がゼロである場合。

次の場合，実行時エラーとならないが，実行結果はけたあふれが発生している。

算術文の結果の絶対値が，関連する結果のデータ項目中に収め得る最大の値を超えた場合。

浮動小数点演算で浮動小数点オーバフロー／アンダフローが発生した場合。

演算の中間結果については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」の数字項目のけた拡張機能を参照のこと。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.6.4　SIZE ERROR指定とけたあふれ条件」

(2)　算術文

算術文は，ADD文，COMPUTE文，DIVIDE文，MULTIPLY文，およびSUBTRACT文である。これらには，幾つかの共通な機能がある。

作用対象のデータ記述が同じである必要はない。計算の過程で，すべての必要な変換と小数点の位置合わせが行われる。

作用対象の最大けた数は，38けたとする。

また，作用対象の合成も38けた以内でなければならない。ここでの作用対象の合成とは，指定された各作用対象を小数点で位置合わせし，重ね合わせてできる仮想のデータ項目とする。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.6.6　算術文」

21.9.2　手続き部見出し

構文規則

データ名1およびデータ名2に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

「COBOL2002　言語　標準仕様編」　「付録D.7　手続き部（PROCEDURE DIVISION）」

21.9.3　ACCEPT文（数字項目のけた拡張機能）

構文規則

書き方1と書き方2の規則

一意名1および一意名2に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.1　ACCEPT文」

21.9.4　ADD文（数字項目のけた拡張機能）

構文規則

書き方1と書き方2の規則

一意名1から一意名3に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してもよい。

定数1および定数2に，けた数が19〜38けたの数字定数を指定してもよい。

書き方2の規則

一意名3に，PICTURE句の数字けた位置の個数が19〜38の数字編集項目を指定してもよい。

書き方3の規則

一意名4および一意名5の集団項目に，PICTURE句の数字けた位置の個数が19〜38の数字項目が含まれていてもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.2　ADD文」

21.9.5　CALL文（数字項目のけた拡張機能）

構文規則

すべての書き方の規則

一意名2，一意名3，および一意名7に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.4　CALL文」

21.9.6　COMPUTE文（数字項目のけた拡張機能）

構文規則

書き方1の規則

一意名1および算術式中に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してもよい。

一意名1に，PICTURE句の数字けた位置の個数が19〜38の数字編集項目を指定してもよい。

算術式中に，けた数が19〜38けたの数字定数を指定してもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.8　COMPUTE文」

21.9.7　DISPLAY文（数字項目のけた拡張機能）

構文規則

書き方1の規則

一意名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してもよい。

定数1に，けた数が19〜38けたの数字定数を指定してもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.12　DISPLAY文」

21.9.8　DIVIDE文（数字項目のけた拡張機能）

構文規則

すべての書き方の規則

一意名1から一意名4に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してもよい。

定数1および定数2に，けた数が19〜38けたの数字定数を指定してもよい。

書き方2と書き方3の規則

一意名3に，PICTURE句の数字けた位置の個数が19〜38の数字編集項目を指定してもよい。

書き方4と書き方5の規則

一意名3および一意名4に，PICTURE句の数字けた位置の個数が19〜38の数字編集項目を指定してもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.13　DIVIDE文」

21.9.9　EVALUATE文（数字項目のけた拡張機能）

構文規則

一意名1から一意名4，算術式1から算術式4，条件1，および条件2に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してもよい。

一意名1から一意名4，条件1，および条件2に，PICTURE句の数字けた位置の個数が19〜38の数字編集項目を指定してもよい。

定数1から定数4に，けた数が19〜38けたの数字定数を指定してもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.18　EVALUATE文」

21.9.10　GO TO文（数字項目のけた拡張機能）

構文規則

書き方2の規則

一意名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.21　GO TO文」

21.9.11　IF文（数字項目のけた拡張機能）

構文規則

条件1に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してもよい。

条件1に，けた数が19〜38けたの数字定数を指定してもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.23　IF文」

21.9.12　INITIALIZE文（数字項目のけた拡張機能）

構文規則

一意名1および一意名2に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してもよい。

一意名1の集団項目に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目が含まれていてもよい。

定数1に，けた数が19〜38けたの数字定数を指定してもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.24　INITIALIZE文」

21.9.13　INSPECT文（数字項目のけた拡張機能）

構文規則

一意名1から一意名7に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

一意名1，および一意名3から一意名7に，PICTURE句の数字けた位置の個数が19〜38の数字編集項目を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.25　INSPECT文」

21.9.14　INVOKE文（オブジェクト指向）（数字項目のけた拡張機能）

構文規則

書き方1の規則

一意名3から一意名6に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

定数2に，19〜38けたの数字定数を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.26　INVOKE文」

21.9.15　MOVE文（数字項目のけた拡張機能）

構文規則

書き方1と書き方2の規則

一意名1および一意名2に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してもよい。

一意名3および一意名4の集団項目に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目が含まれていてもよい。

定数1に，けた数が19〜38けたの数字定数を指定してもよい。

一般規則

書き方1の規則

送り出し側作用対象が英数字と記述されたとき，送り出し側作用対象は，次の性質を持つ符号なし数字整数であるかのように扱われる。

送り出し側作用対象がデータ項目ならば，そのけた数は送り出し側データ項目の文字位置数とする。

ただし文字位置数が38より大きければこの限りではなく，その場合は右端の38個の文字位置が使用される。

送り出し側作用対象が表意定数ならば，そのけた数は受り取り側作用対象のけた数と同じであり，その項目の中で表意定数が左から右へ，表意定数の規則に記述されたとおりに反復生成される。

受り取り側項目が整数でないとき，けた数には小数点の右側と左側の両方のけた数が含まれる。

送り出し側作用対象が英数字定数ならば，そのけた数はその定数に含まれる文字数と同じである。文字数が38を超えるときは送り出し側作用対象の大きさを38とし，定数の右端の38個の英数字文字だけが使用される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.28　MOVE文」

21.9.16　MULTIPLY文（数字項目のけた拡張機能）

構文規則

すべての書き方の規則

一意名1から一意名3に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してもよい。

定数1および定数2に，けた数が19〜38けたの数字定数を指定してもよい。

書き方2の規則

一意名3に，PICTURE句の数字けた位置の個数が19〜38の数字編集項目を指定してもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.29　MULTIPLY文」

21.9.17　PERFORM文（数字項目のけた拡張機能）

構文規則

すべての書き方の規則

一意名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

一意名2から一意名7，条件1および条件2に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してもよい。

整数1に，けた数が19〜38けたの整数を指定してはならない。

条件1および条件2に，PICTURE句の数字けた位置の個数が19〜38の数字編集項目を指定してもよい。

定数1から定数4，条件1および条件2に，けた数が19〜38けたの数字定数を指定してもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.31　PERFORM文」

21.9.18　READ文（数字項目のけた拡張機能）

構文規則

すべての書き方の規則

一意名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してもよい。

データ名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.33　READ文」

21.9.19　RELEASE文（数字項目のけた拡張機能）

構文規則

一意名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

定数1に，けた数が19〜38けたの数字定数を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.35　RELEASE文」

21.9.20　RETURN文（数字項目のけた拡張機能）

構文規則

一意名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.38　RETURN文」

21.9.21　REWRITE文（数字項目のけた拡張機能）

構文規則

レコード名1および一意名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してもよい。

定数1に，けた数が19〜38けたの数字定数を指定してもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.39　REWRITE文」

21.9.22　SEARCH文（数字項目のけた拡張機能）

構文規則

書き方1と書き方2の規則

一意名1，一意名2，データ名1，およびデータ名2に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

一意名1，データ名1，およびデータ名2に，PICTURE句の数字けた位置の個数が19〜38の数字編集項目を指定してはならない。

条件1，一意名3，および一意名4に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してもよい。

定数1および定数2に，けた数が19〜38けたの数字定数を指定してもよい。

書き方2の規則

条件名1，条件名2に関連するデータ名に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.41　SEARCH文」

21.9.23　SET文（数字項目のけた拡張機能）

構文規則

一意名1，一意名2，および一意名23に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

整数1，整数2に，19〜38けたの数字定数を指定してはならない。

条件名1に関連するデータ名に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.43　SET文」

21.9.24　START文（数字項目のけた拡張機能）

構文規則

データ名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.45　START文」

21.9.25　STOP文（数字項目のけた拡張機能）

構文規則

定数2に，けた数が19〜38けたの符号なし数字定数を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.46　STOP文」

21.9.26　STRING文（数字項目のけた拡張機能）

構文規則

一意名1から一意名4に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してもよい。

一意名1および一意名2に，PICTURE句の数字けた位置の個数が19〜38の数字編集項目を指定してもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.47　STRING文」

21.9.27　SUBTRACT文（数字項目のけた拡張機能）

構文規則

書き方1と書き方2の規則

一意名1から一意名3に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してもよい。

定数1および定数2に，けた数が19〜38けたの数字定数を指定してもよい。

書き方2の規則

一意名3に，PICTURE句の数字けた位置の個数が19〜38の数字編集項目を指定してもよい。

書き方3の規則

一意名4および一意名5の集団項目に，PICTURE句の数字けた位置の個数が19〜38の数字項目が含まれていてもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.48　SUBTRACT文」

21.9.28　UNSTRING文（数字項目のけた拡張機能）

構文規則

一意名4，一意名6，一意名7，および一意名8に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.52　UNSTRING文」

21.9.29　WRITE文（数字項目のけた拡張機能）

構文規則

レコード名1および一意名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してもよい。

定数1に，けた数が19〜38けたの数字定数を指定してもよい。

一意名2に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

整数1に，けた数が19〜38けたの数字定数を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.55　WRITE文」

21.10　組み込み関数（数字項目のけた拡張機能）

ここでは，数字項目のけた拡張機能に関連する引数および関数値について説明する。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「11.　組み込み関数（Intrinsic function）」

「COBOL2002　言語　標準仕様編」　「付録D.8　組み込み関数（Intrinsic function）」

21.10.1　引数（数字項目のけた拡張機能）

組み込み関数の引数の規則は，「21.6.1　関数一意名」の規則に従う。

MEDIAN関数の引数に算術式，および組み込み関数は指定できない。

次の組み込み関数の引数に，PICTURE句の数字けた位置の個数が19〜38の数字項目および数字編集項目を指定してもよい。

ADDR関数

LENGTH関数

21.10.2　関数値（数字項目のけた拡張機能）

組み込み関数の関数値の表現形式が，浮動小数点形式以外の数字型（整数を含む）の場合，-MaxDigits38オプションの指定に従って最大のけた数を拡張できる。ただし，関数値のけた数が返却値の意味によって固定となる場合は，拡張できない。

次に，組み込み関数の表現形式に対する数字項目のけた拡張機能の適用個所を示す。なお，次の表に記載のない関数については，けた数の拡張が適用されないため，マニュアル「COBOL2002　言語　標準仕様編」　「11.　組み込み関数（Intrinsic function）」を参照のこと。

関数名

表現形式

備考

ANNUITY(X Y)

（均等払い額）

次に示す計算式を生成し既存の処理に従う。

(1) X=0の場合→1/Y

(2) X>0の場合→X/(1-(1+X)**-Y)

関数値は，40けた10進浮動小数点形式とする。

浮動小数点形式を含む場合は，内部浮動小数点形式（8バイト）

INTEGER(X)

（引数以下の最大の整数）

引数が浮動小数点項目の場合

40けた10進浮動小数点形式。

ただし，有効けた数は15けた。

引数が浮動小数点項目以外の場合

符号付きで用途は引数と等しい（数字定数のときは2進形式）。

(a)引数の整数けたが0のとき整数部だけ1けた。

(b)引数の整数けたが1以上のとき

・小数部がないときは，引数の整数けた数。

・小数部があるときは，最大けたを18として引数の整数けた+1。

引数が算術式のとき

40けた10進浮動小数点形式。

INTEGER-PART(X)

（引数の整数部分の整数）

引数が浮動小数点項目の場合

40けた10進浮動小数点形式。

ただし，有効けた数は15けた。

引数が浮動小数点項目以外の場合

符号付きで用途は引数と等しい（数字定数のときは2進形式）。

(a)引数の整数けたが0のとき整数部だけ1けた。

(b)引数の整数けたが1以上のとき整数部のけた数。

引数が算術式の場合

40けた10進浮動小数点形式。

MAX(X₁...Xn)

(最大値)

引数が数字または整数でかつ浮動小数点形式を含まないとき

引数が一つの場合

(a)定数のときは2進形式（最大18けた）。

(b)定数でないときは引数1と同じ形式。

引数が複数の場合は40けた10進浮動小数点形式。

浮動小数点形式を含む場合は，内部浮動小数点形式（8バイト）

MEAN(X₁...Xn)

（平均値）

引数が数字または整数でかつ浮動小数点形式を含まないとき

引数が一つの場合

(a)定数のときは2進形式（最大18けた）。

(b)定数でないときは引数1と同じ形式。

引数が複数の場合は40けた10進浮動小数点形式。

浮動小数点形式を含む場合は，内部浮動小数点形式（8バイト）

MEDIAN(X₁...Xn)

（中央値）

引数が一つの場合

(a)引数が定数のとき2進形式（最大18けた）。

(b)引数が定数でないとき，引数と同じ形式。

引数がすべて整数の場合

40けた10進浮動小数点形式。

左記以外の場合は，内部浮動小数点形式（8バイト）

MIDRANGE(X₁ ... Xn)

（最大値と最小値の平均）

浮動小数点形式を含まない場合は40けた10進浮動小数点形式

引数が一つの場合

(a)定数のときは2進形式（最大18けた）。

(b)定数でないときは引数1と同じ形式。

引数が複数の場合は40けた10進浮動小数点形式。

浮動小数点形式を含む場合は，内部浮動小数点形式（8バイト）

MIN(X₁ ... Xn)

（最小値）

引数が数字または整数でかつ浮動小数点形式を含まないとき

引数が一つの場合

(a)定数のときは2進形式（最大18けた）。

(b)定数でないときは引数1と同じ形式。

引数が複数の場合は40けた10進浮動小数点形式。

浮動小数点形式を含む場合は，内部浮動小数点形式（8バイト）

MOD(X Y)

（法）

次に示す算術式の結果の形式に従う。

(X-(Y*FUNCTION INTEGER(X/Y)))

関数値は，40けた10進浮動小数点形式。

NUMVAL(X)

（文字列→数字変換）

関数値の表現形式は，外部10進形式18バイトとなる。

整数けた数：18-Dmax※

小数けた数：Dmax※

Dmaxが19けたを超えた場合は，Dmaxを18けたに補正する。

NUMVAL-C(X)

（編集文字列→数字変換）

関数値の表現形式は，外部10進形式18バイトとなる。

整数けた数：18-Dmax※

小数けた数：Dmax※

Dmaxが19けたを超えた場合は，Dmaxを18けたに補正する。

RANGE(X1 ... Xn)

(範囲)

引数が1個の場合は，2進形式。（整数部1けただけ。値は0。）

引数が複数で，浮動小数点形式を含まない場合は，40けた10進浮動小数点形式。

引数が複数で，浮動小数点形式を含む場合は，内部浮動小数点形式8バイト。

REM(X Y)

（剰余）

次に示す算術式の結果の形式に従う。

(X-(Y*FUNCTION INTEGER-PART(X/Y)))
関数値は，40けた10進浮動小数点形式。

SUM(X₁...Xn)

（合計）

次に示す算術式の結果の形式に従う。

X₁...+Xn

引数が一つの場合

(a)定数のときは2進形式（最大18けた）。

(b)定数でないときは引数1と同じ形式。

引数が複数の場合は40けた10進浮動小数点形式。

浮動小数点形式を含む場合は，内部浮動小数点形式（8バイト）

VARIANCE (X₁...Xn)

（分散の近似値）

関数値

(1)引数が1個のときは，2進形式。

整数けたは1，小数けたは0。

(2)引数が複数で，浮動小数点形式を含まないとき

40けた10進浮動小数点形式。

(3)引数が複数で，浮動小数点形式を含むとき

内部浮動小数点形式8バイト。

注※

Dmaxは，この関数を含む算術式のすべての作用対象と算術文，および転記の受け取り側作用対象のうち最大の小数けた数を示す。

21.11　拡張仕様（数字項目のけた拡張機能）

ここでは，数字項目のけた拡張機能と組み合わせて使用する拡張仕様の文について説明する。

21.11.1　ACCEPT文

(1)　画面節による画面機能

このACCEPT文（画面節）は，Windows(x64) COBOL2002およびAIX(64) COBOL2002上で記述できる。

構文規則

書き方4の規則（画面節(SCREEN SECTION)）（画面名）

一意名1，一意名2，および一意名3に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

整数1，整数2，および整数3に，けた数が19〜38けたの数字定数を指定してはならない。

書き方4の規則（画面節(SCREEN SECTION)）（一意名）

一意名1，一意名2，一意名3，および一意名4に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

一意名1に，PICTURE句の数字けた位置の個数が19〜38の数字編集項目を指定してはならない。

整数1，整数2，および整数3に，けた数が19〜38けたの数字定数を指定してはならない。

書き方5の規則（画面節(WINDOW SECTION)）

一意名7，一意名8に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

なお，画面節（SCREEN SECTION）による画面機能のACCEPT文の詳細については，「12.3.1　ACCEPT文（SCREEN SECTION）」を参照のこと。また，画面節（WINDOW SECTION）による画面機能のACCEPT文の詳細については，「13.5.2　ACCEPT文（WINDOW SECTION）」を参照のこと。

(2)　コマンド行のアクセス機能

構文規則

書き方1の規則（コマンド行の引数や環境変数へのアクセス）

一意名9に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

ACCEPT COMMAND-LINE

一意名に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

なお，コマンド行のアクセス機能のコマンド行の引数や環境変数へのアクセスの詳細については，「10.1　コマンド行，環境変数へのアクセス」を参照のこと。また，ACCEPT COMMAND-LINEの詳細については，「10.2.2　手続き部（コマンド行へのアクセス（一括取得））」の「(1)　ACCEPT COMMAND-LINE」を参照のこと。

21.11.2　CALL文（CALL文の引数指定の拡張）

構文規則

一意名5，一意名6に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してもよい。

なお，CALL文の引数指定の拡張の詳細については，「25.4.5　CALL文の引数指定の拡張」を参照のこと。

21.11.3　COMPUTE文（アドレス操作機能）

構文規則

書き方1の規則

一意名2に，PICTURE句の数字けた位置の個数が19〜38の数字項目および数字編集項目を指定してもよい。

書き方2の規則

一意名4に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してもよい。

定数2に，けた数が19〜38けたの数字定数を指定してもよい。

一般規則

書き方2の規則

一意名4にPICTURE句の数字けた位置の個数が19〜38の数字項目を指定した場合，格納する値は8バイトの記憶域に2進形式で格納できる値を超えてはならない。

定数2にけた数が19〜38けたの数字定数を指定する場合，指定する値は8バイトの記憶域に2進形式で格納できる値を超えてはならない。

なお，アドレス操作機能のCOMPUTE文の詳細については，「15.4.2　COMPUTE文（アドレス操作機能）」を参照のこと。

21.11.4　DISABLE文（データコミュニケーション機能）

この文は，AIX(64) COBOL2002とLinux(x64) COBOL2002上で記述できる。

構文規則

一意名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

なお，データコミュニケーション機能のDISABLE文の詳細については，「8.3.2　DISABLE文（データコミュニケーション機能）」を参照のこと。

21.11.5　DISPLAY文

(1)　画面節による画面機能

このDISPLAY文（画面節）は，Windows(x64) COBOL2002およびAIX(64) COBOL2002上で記述できる。

構文規則

書き方3の規則（画面節(SCREEN SECTION)）（画面名）

一意名1，一意名2，および一意名3に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

整数1，整数2，および整数3に，けた数が19〜38けたの数字定数を指定してはならない。

書き方3の規則（画面節(SCREEN SECTION)）（一意名／定数）

一意名1，一意名2，一意名3，および一意名4に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

一意名1に，PICTURE句の数字けた位置の個数が19〜38の数字編集項目を指定してはならない。

定数1，整数1，整数2，および整数3に，けた数が19〜38けたの数字定数を指定してはならない。

書き方4の規則（画面節(WINDOW SECTION)）

一意名6に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

なお，画面節（SCREEN SECTION）による画面機能のDISPLAY文の詳細については，「12.3.2　DISPLAY文（SCREEN SECTION）」を参照のこと。また，画面節（WINDOW SECTION）による画面機能のDISPLAY文の詳細については，「13.5.4　DISPLAY文（WINDOW SECTION）」を参照のこと。

(2)　コマンド行のアクセス機能

構文規則

書き方3の規則（コマンド行の引数や環境変数へのアクセス）

一意名7に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

整数4に，けた数が19〜38けたの数字定数を指定してはならない。

DISPLAY COMMAND-LINE

一意名に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

定数に，けた数が19〜38けたの数字定数を指定してはならない。

なお，コマンド行のアクセス機能のコマンド行の引数や環境変数へのアクセスの詳細については，「10.1　コマンド行，環境変数へのアクセス」を参照のこと。また，DISPLAY COMMAND-LINEの詳細については，「10.2.2　手続き部（コマンド行へのアクセス（一括取得））」の「(2)　DISPLAY COMMAND-LINE」を参照のこと。

(3)　CSVファイル入出力機能

CSVファイル入出力機能は，Windows(x64) COBOL2002で使用できる。

構文規則

一意名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目，数字編集項目，またはその数字項目，数字編集項目を従属項目として含む集団項目を指定してはならない。

CSVファイル入出力機能の詳細については，「17.3.2　手続き部（CSVファイル入出力機能）」の「(2)　DISPLAY文（CSVファイル入出力機能）」を参照のこと。

21.11.6　ENABLE文（データコミュニケーション機能）

この文は，AIX(64) COBOL2002とLinux(x64) COBOL2002上で記述できる。

構文規則

一意名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

なお，データコミュニケーション機能のENABLE文の詳細については，「8.3.3　ENABLE文（データコミュニケーション機能）」を参照のこと。

21.11.7　ENTRY文

構文規則

データ名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してもよい。

なお，ENTRY文の詳細については，「25.4.8　ENTRY文」を参照のこと。

21.11.8　ERASE文（画面節(WINDOW SECTION)）

この文は，Windows(x64) COBOL2002およびAIX(64) COBOL2002上で記述できる。

構文規則

一意名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

なお，画面節（WINDOW SECTION）による画面機能のERASE文の詳細については，「13.5.5　ERASE文（WINDOW SECTION）」を参照のこと。

21.11.9　EXAMINE文

構文規則

一意名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

定数1から定数4に，けた数が19〜38けたの数字定数を指定してはならない。

なお，EXAMINE文の詳細については，「25.4.9　EXAMINE文とTALLY特殊レジスタ」を参照のこと。

21.11.10　FETCH文（構造型データベース（XDM/SD）操作シミュレーション機能）

構文規則

一意名1に，けた数が19〜38けたの数字項目を指定してはならない。

整数1に，けた数が19〜38けたの数字定数を指定してはならない。

なお，構造型データベース（XDM/SD）操作シミュレーション機能のFETCH文の詳細については，「19.1.2　手続き部（構造型データベース（XDM/SD）操作シミュレーション機能）」の「(4)　FETCH文」を参照のこと。

21.11.11　FIND文（構造型データベース（XDM/SD）操作シミュレーション機能）

構文規則

一意名1に，けた数が19〜38けたの数字項目を指定してはならない。

整数1に，けた数が19〜38けたの数字定数を指定してはならない。

なお，構造型データベース（XDM/SD）操作シミュレーション機能のFIND文の詳細については，「19.1.2　手続き部（構造型データベース（XDM/SD）操作シミュレーション機能）」の「(5)　FIND文」を参照のこと。

21.11.12　INVOKE文（OLE2オートメーションインタフェース機能）

この文は，Windows(x64) COBOL2002上で記述できる。

構文規則

一般的なOLEメソッドの操作

一意名9および一意名11に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

一意名9にPICTURE句の数字けた位置の個数が19〜38の数字編集項目を指定してはならない。

定数4に19〜38けたの数字定数を指定してはならない。

なお，OLE2オートメーションインタフェース機能の詳細については，「18.3.1　INVOKE文（OLE2オートメーションインタフェース機能）」を参照のこと。

21.11.13　MOVE文（日付と時刻用）

構文規則

一意名に，PICTURE句の数字けた位置の個数が19〜38の数字項目および数字編集項目を指定してもよい。

なお，日付と時刻用のMOVE文の詳細については，「25.4.11　MOVE文（日付と時刻用）」を参照のこと。

21.11.14　RECEIVE文（データコミュニケーション機能）

この文は，AIX(64) COBOL2002とLinux(x64) COBOL2002上で記述できる。

構文規則

一意名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

なお，データコミュニケーション機能のRECEIVE文の詳細については，「8.3.4　RECEIVE文（データコミュニケーション機能）」を参照のこと。

21.11.15　REPLY文（画面機能(WINDOW SECTION)）

この文は，Windows(x64) COBOL2002およびAIX(64) COBOL2002上で記述できる。

構文規則

一意名1，一意名2に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

データ名2からデータ名5に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

整数1から整数4に，19〜38けたの整数を指定してはならない。

なお，画面節（WINDOW SECTION）による画面機能のREPLY文の詳細については，「13.5.7　REPLY文（WINDOW SECTION）」を参照のこと。

21.11.16　SEND文（データコミュニケーション機能）

この文は，AIX(64) COBOL2002とLinux(x64) COBOL2002上で記述できる。

構文規則

書き方1の規則

一意名1，一意名2，一意名3，および一意名4に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

なお，データコミュニケーション機能のSEND文の詳細については，「8.3.6　SEND文（データコミュニケーション機能）」を参照のこと。

21.11.17　SET文

この文は，Windows(x64) COBOL2002およびAIX(64) COBOL2002上で記述できる。ただし，OLE2オートメーションインタフェース機能はWindows(x64) COBOL2002だけで記述できる。

(1)　画面機能（WINDOW SECTION）

構文規則

書き方13の規則

一意名13に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

書き方14の規則

整数3に，19〜38けたの整数を指定してはならない。

なお，画面節（WINDOW SECTION）による画面機能のSET文の詳細については，「13.5.8　SET文（WINDOW SECTION）」を参照のこと。

(2)　ポインタ項目の参照

構文規則

ADDRESS OFの一意名に，PICTURE句の数字けた位置の個数が19〜38の数字項目および数字編集項目を指定してもよい。

ポインタ項目の参照の詳細については，「25.4.3　ポインタ項目の参照」を参照のこと。

(3)　OLE2オートメーションインタフェース機能

構文規則

書き方1の構文規則

一意名14にPICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

書き方2の構文規則

一意名19にPICTURE句の数字けた位置の個数が19〜38の数字項目および数字編集項目を指定してはならない。

定数3に19〜38けたの数字定数を指定してはならない。

OLE2オートメーションインタフェース機能の詳細については，「18.3.2　SET文（OLE2オートメーションインタフェース機能）」を参照のこと。

21.11.18　TRANSFORM文

構文規則

書き方1の規則

一意名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してはならない。

なお，TRANSFORM文の詳細については，「25.4.16　TRANSFORM文」を参照のこと。

21.11.19　探索条件文（構造型データベース（XDM/SD）操作シミュレーション機能）

構文規則

一意名1，一意名2に，PICTURE句の数字けた位置の個数が19〜38の数字項目を指定してはならない。

定数1，定数2に，けた数が19〜38けたの数字定数を指定してはならない。

21.11.20　WRITE文（印刷制御文字の直接指定，区域外書き出し）

構文規則

レコード名1および一意名1に，PICTURE句の数字けた位置の個数が19〜38の数字項目，および数字編集項目を指定してもよい。

整数2に，けた数が19〜38けたの数字定数を指定してはならない。

なお，WRITE文（印刷制御文字の直接指定，区域外書き出し）の詳細については，「25.4.19　WRITE文（印刷制御文字の直接指定，区域外書き出し）」を参照のこと。

21.11.21　埋め込みSQL文（データベースアクセス機能）

この文は，Windows(x64) COBOL2002およびLinux(x64) COBOL2002上で記述できる。

構文規則

埋め込みSQL文に，PICTURE句の数字けた位置の個数が19〜38の数字項目および数字編集項目を指定してはならない。

埋め込みSQL文に，けた数が19〜38けたの数字定数を指定してはならない。

なお，埋め込みSQL文（データベースアクセス機能）の詳細については，「9.2　埋め込みSQL文（データベースアクセス機能）」を参照のこと。

21.11.22　条件式（ポインタ項目の参照）

構文規則

ADDRESS OFの一意名に，PICTURE句の数字けた位置の個数が19〜38の数字項目および数字編集項目を指定してもよい。

なお，条件式（ポインタ項目の参照）の詳細については，「25.4.3　ポインタ項目の参照」を参照のこと。

22　動的長基本項目機能

この章では，動的長基本項目について説明する。

22.1　動的長基本項目とは

動的長基本項目（dynamic-length elementary item）は，DYNAMIC LENGTH句の定義により，英数字項目または日本語項目の長さを実行時に変えることができるデータ項目である。

動的長基本項目を記述したプログラム例を次に示す。

IDENTIFICATION  DIVISION.
  PROGRAM-ID.   SAMPLE00.
ENVIRONMENT DIVISION.
  CONFIGURATION SECTION.
    SPECIAL-NAMES.
      DYNAMIC LENGTH STRUCTURE C-STRING IS C-STATIC-STRUCTURE.
        *> 動的長構造名を"C-STRING"として定義する。
DATA DIVISION.
  WORKING-STORAGE  SECTION.
    01  DYNAMICDATA  PIC X DYNAMIC LENGTH C-STRING  LIMIT 20.
      *> 格納できる文字列の最大長を20とした，英数字の動的長基本項目を定義する。
PROCEDURE     DIVISION.
  MOVE 'abc' TO DYNAMICDATA.
    *> DYNAMICDATAに文字列'abc'が格納され，そのデータ長は3バイトとなる。
    *> 文字列'abc'の後ろに終端文字(X'00')が設定される。
  MOVE 'abcdef' TO DYNAMICDATA.
    *> DYNAMICDATAに文字列'abcdef'が格納され，そのデータ長は6バイトとなる。
    *> 文字列'abcdef'の後ろに終端文字(X'00')が設定される。
    *> DYNAMICDATAは，C言語など他言語へ渡す文字列として使用できる。

動的長基本項目は格納する値によって長さが変わるため，データ項目の長さが非常に長くなるおそれがある。そのため，LIMIT指定により，動的長基本項目の最大長を定義できる。また，動的長基本項目に新しい値が格納されたとき，項目の長さは自動的に調整される。

なお，動的長基本項目は，動的長基本項目に新しい値が格納された時点での同じ長さを持つ固定長のデータ項目と同様に扱う。

ここでは，動的長基本項目が指定できる構文や規則について説明する。

なお，この章で記載のない構文規則および一般規則については，特に断り書きがない限り，マニュアル「COBOL2002　言語　標準仕様編」を参照のこと。

22.2　動的長基本項目が使用できる個所

22.2.1　定義できるソース単位

動的長基本項目を定義できるソース単位を次に示す。

表22‒1　動的長基本項目を定義できるソース単位

定義名

動的長基本項目への対応

プログラム定義

○

関数定義

×

クラス定義

×

インタフェース定義

×

ファクトリ定義

×

オブジェクト定義

×

メソッド定義

×

（凡例）

○：定義できる

×：定義できない

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「6.3　ソース単位」

22.2.2　定義できる節

動的長基本項目を定義できる節を次に示す。

表22‒2　動的長基本項目を定義できる節

定義名

動的長基本項目への対応

ファイル節（FILE SECTION）

×

作業場所節（WORKING-STORAGE SECTION）

○

局所場所節（LOCAL-STORAGE SECTION）

×

連絡節（LINKAGE SECTION）

○

報告書節（REPORT SECTION）

×

画面節（SCREEN SECTION）

×

画面節（WINDOW SECTION）

×

通信節（COMMUNICATION SECTION）

×

サブスキーマ節（SUBSCHEMA SECTION）

×

（凡例）

○：定義できる

×：定義できない

また，作業場所節や連絡節で定義された動的長基本項目を，「22.2.3　対象となる文」に示す手続き部の許可された個所以外に指定することはできない。環境部やデータ部での参照もできない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.　データ部（DATA DIVISION）」

22.2.3　対象となる文

動的長基本項目が指定できる文を次に示す。次に示す個所以外には指定できない。

表22‒3　動的長基本項目が指定できる文

文

指定できる個所

手続き部見出し

データ名1（ただしBY REFERENCEだけ）

CALL文

書き方1と書き方2の一意名2

（BY REFERENCE，BY CONTENT）

DISPLAY文

書き方1の一意名1

EVALUATE文

一意名1と一意名2

条件1と条件2

IF文

条件1

INITIALIZE文

一意名1

MOVE文

書き方1の一意名1，一意名2

対象ではない文に指定した場合は，エラーメッセージが出力される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8　文」

22.2.4　対象となる組み込み関数

動的長基本項目が指定できる組み込み関数を次に示す。次に示す個所以外には指定できない。

表22‒4　動的長基本項目を指定できる組み込み関数

組み込み関数

指定できる個所

LENGTH関数

引数1

対象ではない組み込み関数に指定した場合は，エラーメッセージが出力される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「11.32　LENGTH関数」

22.3　全般規則

22.3.1　表意定数

一般規則

次の規則は動的長基本項目には該当しない。

表意定数がVALUE句に指定されている場合，またはデータ項目や定数や中間結果項目に関連づけられている場合，文字列は1文字ずつ右側へと反復されて，でき上がった文字列の長さは，関連するデータ項目か定数の中間結果項目の中の文字位置の個数以上になる。

動的長基本項目に表意定数を関連付ける場合，次の規則が適用される。

表意定数が「ALL 定数」以外の場合，文字列の長さは1文字とする。

表意定数が「ALL 定数」の場合，文字列の長さは定数の長さとする。

（例）

    01 MY-DYNAMIC PIC X DYNAMIC LENGTH C-STRING
          LIMIT 20.
             ：
    MOVE  'abc'  TO  MY-DYNAMIC.
      *> 動的長基本項目MY-DINAMICに'abc'が転記され，MY-DYNAMICは長さが3となる。

    MOVE  SPACE  TO  MY-DYNAMIC.
      *> SPACEは3文字でなく空白1文字が転記され，MY-DYNAMICは長さが1となる。

    MOVE  ALL 'abc'  TO  MY-DYNAMIC.
      *> 'abc'が転記され，MY-DYNAMICは長さが3となる。

    MOVE  ALL SPACE  TO  MY-DYNAMIC.
      *> SPACEは1文字のため，空白1文字が転記され，MY-DYNAMICは長さが1となる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「4.2.1(2)(d)　表意定数の値」

22.4　環境部（動的長基本項目機能）

22.4.1　特殊名段落（動的長基本項目機能）

一般形式

SPECIAL-NAMES.
  [ DYNAMIC LENGTH STRUCTURE句 ] ...

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.2.6　特殊名段落（SPECIAL-NAMES）」

22.4.2　DYNAMIC LENGTH STRUCTURE句

一般形式

DYNAMIC LENGTH STRUCTURE 動的長構造名1 IS 物理構造名1

構文規則

物理構造名1は，動的長基本項目に対する物理的な構造を指定する。

このシステムでは物理構造名1はC-STATIC-STRUCTUREとする。それ以外の名前は指定できない。

C-STATIC-STRUCTUREによって定義される構造は次のとおりである。

データが終端文字で終わる。内部的には最大長+1文字の領域を確保する。なお，終端文字は，英数字項目の場合X'00'，日本語項目の場合X'0000'となる。

DYNAMIC LENGTH句のLIMIT指定の値，または最初に格納されたデータの長さを上限として動作する。LIMIT指定がある場合はLIMIT指定の値が優先される。上限以上の長さのデータを転記しても動的に拡張されず，転記時に切り捨てられる。

（例）

DYNAMIC LENGTH句のLIMIT指定が4の場合，4+1文字の領域が確保される。この領域に3バイト文字が格納されると残りの領域に終端文字が入る。

最初に格納されたデータには次の二つのケースがある。

作業場所節で動的長基本項目が定義され，かつVALUE句で初期値を与えた場合は，VALUE句に指定した定数の長さが上限となる。

ほかの言語から終端文字(X'00')で終わる文字列が渡された場合は，ほかの言語で渡された領域に格納されているデータの長さを上限とする。

VALUE句の指定がない作業場所節の動的長基本項目は，最左端から最大長+1の領域を終端文字で初期化する。

一般規則

C-STATIC-STRUCTUREに指定した動的長構造名1で定義されるデータの終わりには終端文字が入る。

英数字項目の終端文字はX'00'，日本語項目の終端文字はX'0000'となる。

英数字項目または日本語項目の終端文字は，このシステムが設定する。

なお，C言語から字類が日本語の動的長基本項目に文字列を渡す場合も，データの終わりがX'0000'でなければならない。また，字類が日本語の動的長基本項目では文字列の先頭から2バイトずつX'0000'を探すため，C言語から渡すデータに1バイト文字が混在してはならない。

DYNAMIC LENGTH STRUCTURE句を指定したプログラムに-H8Switchオプションは指定できない。

22.5　データ部（動的長基本項目機能）

22.5.1　DYNAMIC LENGTH句

DYNAMIC LENGTH句は，実行時にそのデータ項目の長さが変化することを定義する。

一般形式

DYNAMIC LENGTH 動的長構造名1 [ LIMIT IS 整数1 ]

構文規則

PICTURE句はこの項目の字類を示す。PICTURE句に指定される文字列は，１文字のXまたはNでなければならない。

ただし，-JPN,V3JPNオプション指定時，PICTURE文字列は1文字のXでなければならない。

動的長構造名1を指定した場合，特殊名段落のDYNAMIC LENGTH STRUCTURE句に指定した動的長構造名1と対応する。

作業場所節で定義されたDYNAMIC LENGTH句のLIMIT指定を省略した場合は，VALUE句がなくてはならない。

整数1は，英数字項目の場合は，1〜16,777,214の値でなければならない。また，日本語項目の場合は，1〜16,382の値でなければならない。

01レベルおよび77レベルの項目以外に指定してはならない。

DYNAMIC LENGTH句はレベル番号，データ名，PICTURE句，USAGE句，VALUE句以外と同時に指定できない。

作業場所節で定義したDYNAMIC LENGTH句で，LIMIT指定とVALUE句を同時に指定した場合，VALUE句に指定した定数の長さはLIMIT指定の値を超えてはならない。

動的長基本項目を被再定義項目としてはならない。

動的長基本項目を部分参照してはならない。

動的長基本項目に対して，条件名記述項を関連付けてはならない。

集団項目に対して，DYNAMIC LENGTH句を指定してはならない。

一般規則

DYNAMIC LENGTH句は実行時にその長さが変化するデータ項目を定義する。データ項目の最小の長さは0である。PICTURE句は字類を決定する。

備考

PIC XまたはPIC Nの指定によって，この動的長基本項目の字類が，英数字か日本語かが決まる。

整数1はそのデータ項目に格納できる文字列の最大長を定義する。LIMIT指定がない場合の最大長は次のとおりである。

このシステムでは次の場合にLIMIT指定を省略できる。

(a) 作業場所節に定義し，VALUE句が指定されている場合

(b) 連絡節に定義した場合

LIMIT指定が省略された場合の，それぞれの最大長は次で定義される。

(a) VALUE句で指定した文字列の長さ

(b) 呼び出し元プログラムで設定されたデータの長さ（終端文字の前までの長さ）

ただし(b)の場合，データの長さが次に示す値を超えている場合は，次の値を最大長とする。

動的長基本項目の字類

LIMITの最大長（文字数）

英数字

16,777,214

日本語

16,382

（例1）

WORKING-STORAGE  SECTION.
  01  DYNAMICDATA  PIC X DYNAMIC LENGTH
            C-STRING   VALUE 'ABCDE'.  *> LIMIT 5 と同等

（例2）

LINKAGE  SECTION.
  01  DYNADATA  PIC X DYNAMIC LENGTH C-STRING  .
PROCEDURE DIVISION USING DYNADATA .
  *>  呼び出し元プログラムで設定されたデータが格納されているDYNADATAの内容が5バイトのユーザデータ+終端文字の場合，LIMIT 5と同等
  *>  呼び出し元プログラムで設定されたデータが格納されているDYNADATAの内容が16,777,214バイトを超えている場合，LIMIT 16777214 と同等

作業場所節でLIMIT指定とVALUE句が同時に指定した場合は，LIMIT指定で最大長を決定する。連絡節でLIMIT指定を指定した場合は，呼び出し元プログラムで設定されたデータの長さよりLIMIT指定を優先する。

動的長基本項目が連絡節に指定され，かつ次のどちらかに該当する場合，その動的長基本項目を受け取り側作用対象に指定してはならない。

C言語で記述されたプログラムからCOBOLプログラムが呼ばれる場合

連絡節に指定した動的長基本項目にLIMIT指定がない場合

備考

このシステムでは，次の個所で動的長基本項目が参照されたとき，（最大長+1）文字目までに終端文字が設定されているかチェックする。終端文字が設定されていない場合は実行時エラーとなる。

DISPLAY文の一意名1

MOVE文の送り出し側作用対象

比較条件の作用対象

LENGTH関数の引数

連絡節で定義された仮引数

22.6　手続き部（動的長基本項目機能）

22.6.1　引数の適合

(1)　動的長基本項目

(a)　参照渡しまたは内容渡しの動的長基本項目

COBOL間の呼び出しで，実引数と仮引数のどちらかが動的長基本項目である場合，実引数と仮引数のどちらかが動的長基本項目であるときは，対応する仮引数や実引数も同じ字類の動的長基本項目でなくてはならない。

C-STATIC-STRUCTUREに関連付いた動的長基本項目の場合，そのLIMIT指定の値が一致していなければならない。

COBOL間の呼び出しで，実引数，および仮引数に指定した動的長基本項目のLIMIT有無と適合規則の関係を次に示す。

表22‒5　LIMIT指定有無と適合規則

項番

実引数（呼び出し元）

仮引数（呼び出し先）

LIMIT値の関係

結果

1

LIMITあり

LIMITあり

LIMITの値が一致する

適合する

2

LIMITあり

LIMITあり

LIMITの値が異なる

適合しない

3

LIMITあり

LIMITなし

該当なし

適合する

4

LIMITなし

LIMITあり

該当なし

適合しない

5

LIMITなし

LIMITなし

該当なし

適合する

注1

VALUE句の指定があり，LIMIT指定が省略されている場合，VALUE句の値のサイズでLIMIT指定を仮定する。

注2

この規則は，適合規則およびプログラム間整合性チェック（-DebugCompatiオプションまたは-TDInfオプション）に適用する。プログラム間整合性チェックの詳細については，マニュアル「COBOL2002 ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」を参照のこと。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.7.1(2)　基本項目」

22.6.2　CALL文（動的長基本項目機能）

一般規則

COBOL間の呼び出しで，引数に指定した動的長基本項目は，適合規則およびプログラム間整合性チェック（-DebugCompatiオプションまたは-TDInfオプション）の対象とする。適合規則は次のとおりとする。

動的長基本項目を呼び出し元プログラムの引数とする場合は，呼び出し先プログラムの引数も同じ字類の動的長基本項目であること。

C-STATIC-STRUCTUREに関連付いた動的長基本項目の場合，そのLIMIT指定の値が一致していること。

連絡節に記述した動的長基本項目のLIMIT指定が省略された場合の規則は，「表22‒5　LIMIT指定有無と適合規則」に従う。

プログラム間整合性チェックの詳細については，マニュアル「COBOL2002 ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」を参照のこと。

BY CONTENTの一意名2が連絡節に定義した動的長基本項目の場合，その動的長基本項目にはLIMIT指定がなければならない。

（例）

LINKAGE SECTION.
  01 DYNADATA  PIC X  DYNAMIC LENGTH C-STRING.
PROCEDURE DIVISION USING  DYNADATA.
  CALL 'MAGO'  USING BY CONTENT DYNADATA.
    *> この使い方をする場合，DYNADATAにはLIMIT指定が必要。コンパイルエラーとなる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.4　CALL文」

22.6.3　DISPLAY文（動的長基本項目機能）

一般規則

動的長基本項目を一意名1に指定した場合，その時点のデータを適切なハードウェア装置に転送する。転送するデータに終端文字は含まない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.12　DISPLAY文」

22.6.4　EVALUATE文（動的長基本項目機能）

一般規則

動的長基本項目が指定できる条件式は，比較条件だけである。

動的長基本項目と固定長項目を比較する場合，動的長基本項目はその時点の長さを持つ固定長項目と同等に扱う。終端文字は比較の対象に含まない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.18　EVALUATE文」

22.6.5　IF文（動的長基本項目機能）

一般規則

動的長基本項目が指定できる条件式は，比較条件だけである。

動的長基本項目と固定長項目を比較する場合，動的長基本項目はその時点の長さを持つ固定長項目と同等に扱う。終端文字は比較の対象に含まない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.23　IF文」

22.6.6　INITIALIZE文（動的長基本項目機能）

構文規則

一意名1に，連絡節で定義したLIMIT指定のない動的長基本項目を指定してはならない。

一般規則

REPLACING指定がない場合は，動的長基本項目が初期化されると長さが0になる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.24　INITIALIZE文」

22.6.7　MOVE文（動的長基本項目機能）

構文規則

一意名2に，連絡節で定義したLIMIT指定のない動的長基本項目を指定してはならない。

一般規則

動的長基本項目を送り出し側作用対象に指定した場合，その時点の長さを持つ固定長項目と同等に扱う。転記するデータに終端文字は含まない。

動的長基本項目を受け取り側作用対象に指定した場合，次の動作となる。

(a) n以下の長さの文字列を転記した場合，文字列の転記後，末尾からn+1まで終端文字を付加する。

(b) nを超える長さの文字列を転記した場合，nの長さ分の文字列を転記後，n+1の位置に終端文字を付加する。

ここでnは，受け取り側作用対象に指定した動的長基本項目の最大長とする。

（例）

注意事項

LOW-VALUE(X'00')が含まれた固定長基本項目または表意定数LOW-VALUEを動的長基本項目に転記した場合，動的長基本項目の長さは転記されたLOW-VALUEの前までとなる。

01  DYNADATA  PIC  X  DYNAMIC LENGTH  C-STRING  LIMIT 5.
01  FIXDATA   PIC  X(4)  VALUE  X'61620064'.

MOVE  FIXDATA TO DYNADATA.    *> DYNADATAの長さは2となる
MOVE  LOW-VALUE TO DYNADATA.  *> DYNADATAの長さは0となる

動的長基本項目を送り出し側作用対象または受け取り側作用対象に指定した場合，受け取り側作用対象に複数の項目を指定してはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.28　MOVE文」

22.7　組み込み関数（動的長基本項目機能）

22.7.1　LENGTH関数（動的長基本項目機能）

一般規則

動的長基本項目を引数1に指定した場合，関数値は，動的長基本項目に現在格納されている値の長さとなる。長さに終端文字は含まない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「11.32　LENGTH関数」

22.8　コンパイラ環境変数またはコンパイラオプションとの関連

22.8.1　コンパイラ環境変数CBLVALUE

規則

動的長基本項目はコンパイラ環境変数CBLVALUEに指定した初期値で初期化されない。

コンパイラ環境変数CBLVALUEの詳細については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のコンパイラ環境変数の詳細を参照のこと。

22.8.2　-JPNオプション

規則

-JPN,Alnumオプションを指定した場合，動的長基本項目はすべて字類を英数字として扱う。また，PIC Nで指定した動的長基本項目のLIMIT指定の値は，その2倍の値を指定したものと仮定する。

-JPN,Alnumオプションについては，「24.3.6　日本語項目の扱い（-JPN,Alnum）」を参照のこと。

-JPNオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のコンパイラオプションを参照のこと。

22.8.3　-TruncCheckオプション

規則

動的長基本項目は-TruncCheckオプションのチェック対象とならない。

-TruncCheckオプションについては，「24.7　転記の長さのチェック（-TruncCheck）」を参照のこと。形式については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のコンパイラオプションを参照のこと。

22.9　使用例

22.9.1　COBOLとC言語の連携

(1)　CプログラムからCOBOLプログラムへ渡す場合

Cプログラム側

int  main(){
   char   DATABUF[50];
   strncpy(DATABUF, "abcd", 5);
   SampleTP(DATABUF);
     ：

COBOLプログラム側

        IDENTIFICATION  DIVISION .
        PROGRAM-ID. 'SampleTP'.
        ENVIRONMENT DIVISION.
          CONFIGURATION SECTION.
            SPECIAL-NAMES.
             DYNAMIC LENGTH STRUCTURE C-STRING IS C-STATIC-STRUCTURE .
        DATA  DIVISION.
          LINKAGE SECTION.
            01  DYNADATA  PIC  X  DYNAMIC LENGTH  C-STRING .
        PROCEDURE DIVISION USING DYNADATA .
          DISPLAY   DYNADATA.                   *>  'abcd'が表示される

注意事項

DYNADATAをCOBOLプログラム側で更新してはならない。

DYNADATAの定義にLIMIT指定を行う場合は，そのサイズはCプログラム側で確保された領域のサイズ-1とすること（上記の例では，DATABUFのサイズ-1である49とする）。

(2)　COBOLプログラムからCプログラムへ渡す場合

COBOLプログラム側

        ENVIRONMENT DIVISION.
          CONFIGURATION SECTION.
            SPECIAL-NAMES.
             DYNAMIC LENGTH STRUCTURE C-STRING IS C-STATIC-STRUCTURE .
        DATA  DIVISION.
          WORKING-STORAGE SECTION.
            01  DYNADATA  PIC  X  DYNAMIC LENGTH C-STRING  LIMIT  20 .
        PROCEDURE DIVISION  .
          MOVE  'abcde'  TO DYNADATA.  *> DYNADATAには'abcde'+終端文字(X'00')が格納される
          CALL  'csub'  USING  DYNADATA.

Cプログラム側

int  csub(char  *data1){
    /*  data1はCOBOL側のDYNAMDATAの領域を指す。                      */
    /*  DYNAMDATA の実領域は21バイトであるが，末尾は終端文字であるため*/
    /*  data1に対する操作は20バイト以内で行うこと                    */
    ：

22.9.2　COBOLプログラム間の連携

呼び出し元プログラム

        IDENTIFICATION DIVISION .
        PROGRAM-ID. MAINPROG.
        ENVIRONMENT DIVISION.
          CONFIGURATION SECTION.
            SPECIAL-NAMES.
             DYNAMIC LENGTH STRUCTURE C-STRING IS C-STATIC-STRUCTURE .
        DATA  DIVISION.
          WORKING-STORAGE SECTION.
            01  DYNADATA  PIC  X  DYNAMIC LENGTH C-STRING  LIMIT  30 .
        PROCEDURE DIVISION  .
          MOVE 'abcde'  TO DYNADATA.   *> DYNADATAには'abcde'+終端文字(X'00')が格納される
          CALL  'SUBPROG'    USING  DYNADATA.

呼び出し先プログラム

        IDENTIFICATION DIVISION .
        PROGRAM-ID. SUBPROG.
        ENVIRONMENT DIVISION.
          CONFIGURATION SECTION.
            SPECIAL-NAMES.
             DYNAMIC LENGTH STRUCTURE C-STRING IS C-STATIC-STRUCTURE .
        DATA  DIVISION.
          LINKAGE SECTION.
            01  DYNADATA2  PIC  X  DYNAMIC LENGTH  C-STRING  LIMIT  30 .
        PROCEDURE DIVISION USING DYNADATA2 .
          DISPLAY   DYNADATA2.     *>  'abcde'を表示する

注意事項

呼び出し元プログラムと呼び出し先プログラムで，LIMITの値を一致させること。

22.9.3　COBOLのプログラム内で使用する例

        IDENTIFICATION DIVISION.
        PROGRAM-ID. TESTPROG.
        ENVIRONMENT DIVISION.
          CONFIGURATION SECTION.
            SPECIAL-NAMES.
             DYNAMIC LENGTH STRUCTURE C-STRING IS C-STATIC-STRUCTURE.
        DATA  DIVISION.
          WORKING-STORAGE SECTION.
            01  FIXDATA   PIC  X(20).
            01  DYNADATA    PIC  X  DYNAMIC LENGTH  C-STRING  LIMIT  20.
            01  DYNADATA-N  PIC  N  DYNAMIC LENGTH  C-STRING  LIMIT  5.
        PROCEDURE DIVISION .
          MOVE 'error 01' TO DYNADATA.  *> 空白詰めは行わない
          DISPLAY  DYNADATA.   *>  長さ8のメッセージを表示する。

          MOVE 'err 02' TO DYNADATA.
          DISPLAY  DYNADATA.   *>  長さ6のメッセージを表示する。DYNADATAのサイズが変わる

          INITIALIZE  DYNADATA.   *> INITIALIZE文を実行すると動的長基本項目の長さは0になる

          MOVE 'error 0003' TO DYNADATA.
          DISPLAY  DYNADATA.   *>  長さ10のメッセージを表示する

          MOVE DYNADATA  TO FIXDATA.  *> 動的長基本項目が送り出し側となる例
          *> DYNADATAは長さ10であるため，長さ10の固定項目を転記する場合と同等

          MOVE 'error 0003' TO FIXDATA .
          DISPLAY  FIXDATA.    *>  長さ10+空白10のメッセージを表示する

          IF DYNADATA = FIXDATA THEN  *> DYNADATAは'error 0003'を格納した長さ10の固定項目と
              DISPLAY 'MATCH'         *> 同等のため，'MATCH'となる
          END-IF.

          MOVE FIXDATA  TO DYNADATA.  *> 埋字の空白も転記され，DYNADATAは長さ20となる
          MOVE  FUNCTION TRIM(FIXDATA) TO DYNADATA. *> 空白を取る場合はTRIM関数を併用する

          MOVE '12345678901234567890ABC' TO DYNADATA.  *> LIMIT 20のため送り出し側の
                                                       *> 先頭20バイトしか格納されない

          MOVE  N'あいう'  TO  DYNADATA-N.             *>  空白詰めは行わない
          MOVE  N'あいうえおかきく'  TO  DYNADATA-N.   *>  N'あいうえお' が格納される
          INITIALIZE  DYNADATA-N.                      *>  初期化され，長さは0になる

22.10　動的長基本項目を使用したときの注意事項

動的長基本項目を使用する場合，手続き文での参照時および更新時に終端文字までの長さを求めるため，英数字項目または日本語項目を使用した場合と比べると，プログラム実行時に時間が掛かる。

23　Unicode機能

Unicode機能は，シフトJISで記述された原始プログラムから，Unicodeのデータを入出力および操作できるCOBOLプログラムを生成する機能である。

この章では，Unicode機能を使用するための組み込み関数について説明する。

23.1　用語の定義

Unicode機能で使用する用語について次に示す。

#

用語

説明

1

Unicode

1バイトでは表現できない文字セットを含むあらゆる文字セットをサポートした文字コードのこと。

代表的な符号化文字集合として，UCS-2，UCS-4がある。代表的なエンコーディングスキーマとしてUTF-8，UTF-16がある。

COBOL2002では，UCS-4の範囲（UCS-2の範囲を含む）をサポートする。

2

UCS-2

符号化文字集合の一つの形式。1文字を2バイトで表現する。COBOL2002では，用途がDISPLAYおよびNATIONALの項目でサポートする。

3

UCS-4

符号化文字集合の一つの形式。1文字を4バイトで表現する。

COBOL2002では，用途がDISPLAYおよびNATIONALの項目でUCS-4の範囲をサポートする。

4

UTF-8

エンコーディングスキーマの一つの形式。ASCII文字を1バイト，日本語文字を3〜8バイト，半角かたかなを3バイトで表現する。

5

UTF-16

エンコーディングスキーマの一つの形式。1つのコード単位を2バイトとし，1文字を1コード単位（2バイト），または2コード単位（4バイト）で表現する。UTF-16では2バイトのコード単位の1バイト目を先に書くビッグエンディアン形式（UTF-16BE）と1バイト目を後に書くリトルエンディアン形式（UTF-16LE）がある。

COBOL2002では，用途がNATIONALの項目でUCS-4の範囲（UCS-2の範囲を含む）をサポートする。

6

サロゲート

UTF-16の拡張で，2つのコード単位（4バイト）で1文字を表す機能。この2つのコード単位の組み合わせのことをサロゲートペアと呼ぶ。

COBOL2002では，用途がNATIONALの項目で使用する。

7

BOM（バイトオーダマーク）

ファイルの先頭に付加された，Unicodeの表現形式を表す情報。COBOL2002では，テキスト編成ファイルに対してこの情報を付加する。本文中では，Unicodeシグニチャと表記する。

8

バイトオーダ

2バイト以上のデータの記録を行なう順序のこと。例えば，0x1234のデータを0x1234のように最上位のバイトから順番に記録する方式をビッグエンディアン，0x3412のように最下位のバイトから順番に記録する方式をリトルエンディアンという。2バイトのUTF-16は，バイトオーダを意識する。

9

IVS

漢字を表すUnicodeの直後に Variation Selectorと呼ばれるコードを付加し，漢字の「異体字」を表現する方法のこと。

COBOL2002では，用途がDISPLAYおよびNATIONALの項目で使用する。

10

文字位置の個数

英数字項目または日本語項目のPICTURE句に指定した文字位置の個数。

例）

  01 DATA1 PIC X(3).
    *>文字位置の個数は3
  01 DATA2 PIC N(5).
    *>文字位置の個数は5

11

文字数

見た目の文字数。

サロゲートペアやIVSで表現する漢字も文字数は1文字とする。

12

見た目幅

Unicode機能の組み込み関数で使用する，文字の見た目の幅。半角文字の幅は1，全角文字の幅は2として扱う。

Unicode機能の組み込み関数で，文字を見た目幅で数える場合に使用する。

23.2　組み込み関数

COBOLプログラムでUnicode文字を扱う機能としてサポートする組み込み関数については，「25.5　組み込み関数」を参照のこと。

23.2.1　COUNT-CHAR関数

COUNT-CHAR関数については，「25.5.3　COUNT-CHAR関数」を参照のこと。

23.2.2　DISPLAY-OF関数

DISPLAY-OF関数については，「25.5.4　DISPLAY-OF関数」を参照のこと。

23.2.3　LENGTH-OF-SUBSTRING関数

LENGTH-OF-SUBSTRING関数については，「25.5.5　LENGTH-OF-SUBSTRING関数」を参照のこと。

23.2.4　NATIONAL-OF関数

NATIONAL-OF関数については，「25.5.6　NATIONAL-OF関数」を参照のこと。

23.2.5　SUBSTRING関数

SUBSTRING関数については，「25.5.7　SUBSTRING関数」を参照のこと。

24　コンパイラオプションによる仕様の相違

この章では，コンパイラオプションの指定によって言語仕様が異なるものについて説明する。

24.1　言語仕様が異なるコンパイラオプション

コンパイラオプションの指定によって言語仕様が異なるものを次に示す。

表24‒1　仕様変更コンパイラオプション

オプション

意味

指定なし

第3，4次規格で翻訳する

-StdVersion,1

第1次規格で翻訳する

-StdVersion,2

第2次規格で翻訳する

-DigitsTrunc

2進項目のけた落とし

-DoubleQuote

アポストロフィか引用符かの指定

-V3Rec,Fixed

VOS3の日本語文字の扱いに合わせて翻訳する（固定長レコードの原始プログラム）

-V3Rec,Variable

VOS3の日本語文字の扱いに合わせて翻訳する（可変長レコードの原始プログラム）

-V3RecFCSpace

空白に対する機能キャラクタの扱い

-V3RecEased,QuoteCheck※

-V3Recオプションのチェックを緩和する（定数の分離符のチェック）

-V3RecEased,WordCheck※

-V3Recオプションのチェックを緩和する（語またはPICTURE文字列の制限値のチェック）

-IgnoreLCC※

レコード先頭の印刷制御文字領域

-JPN,Alnum

日本語項目の扱い

-CompatiV3

VOS3 COBOL85互換を指定する

-VOSCBL※

メインフレーム互換機能を有効にする

-H8Switch

数字項目の転記／比較

-Cblctr

CBL-CTR特殊レジスタ

-DebugLine

デバッグ行を有効にする

-Main,System

コマンドインタフェースをC言語のmain関数の形式（argc，argv形式）に合わせる

-TruncCheck

転記のけたの切り捨てチェック

-JPN,V3JPN※

日本語項目，日本語編集項目，および日本語文字定数をそれぞれ英数字項目，英数字編集項目，および英数字定数として扱う

-JPN,V3JPNSpace

VOS3 COBOL85のLANGOPT=(D)オプション指定時の日本語項目の扱いと同じとする

-LiteralExtend,Alnum※

英数字定数の最大長を拡張する

-IgnoreAPPLY,FILESHARE※

APPLY FILE-SHARE句を覚え書きとする

-SpaceAsZero※

外部10進項目に空白文字があるとき，ゼロとみなして比較，演算，転記を実行する

注※

詳細については，マニュアル「COBOL2002　ユーザーズガイド」または「COBOL2002　使用の手引　手引編」を参照のこと。

24.2　旧規格仕様を使う場合

COBOLは，第1次規格（ANSI68，ISO72，JIS72），第2次規格（ANSI74，ISO78，JIS80），第3次規格（ISO85，ANSI85，JIS88，JIS92），第4次規格（ISO/IEC 1989:2002，JIS X3002:2011）と変わってきており，同じ書き方でも異なる言語仕様となっているものがある。どの段階の規格仕様で翻訳するのかは，-StdVersion,1または-StdVersion,2オプションで指定する。

マニュアル「COBOL2002　言語　標準仕様編」では，第3次規格と第4次規格の仕様について記述している（-StdVersion,1，-StdVersion,2オプション指定がない場合）。ここでは，-StdVersion,1，-StdVersion,2オプションを指定したときの仕様について説明する。

24.2.1　第1次規格以前の仕様（-StdVersion,1）

-StdVersion,1オプションは，第1次規格以前の仕様で翻訳することを指定する。第2次規格以降との間で解釈が異なっている言語仕様について次に示す。

(1)　特殊名段落のCURRENCY SIGN句

CURRENCY SIGN句に，「=」，「/」を指定できる。

(2)　SELECT OPTIONAL句

このシステムでは，OPTIONAL句は覚え書きとする。

(3)　略記組み合わせ比較条件でのNOTの取り扱い

略記組み合わせ比較条件の中のNOTが，比較演算子の一部とも論理演算子ともとれるとき，すなわち，NOTの直後が，次のどれかのときは，このNOTを論理演算子とみなす。

GREATER

LESS

EQUAL

>

<

=

>=

<=

（例）

A > B AND NOT > C OR D

は，次と同じである。

A > B AND NOT A > C OR A > D

-StdVersion,1オプションが有効でない場合は，次と同じである。

A > B AND A NOT > C OR A NOT > D

(4)　MOVE文の位取り

送り出し側作用対象が位取りした整数項目（PICTURE文字列の右端文字がP），受け取り側作用対象が英数字項目であれば，文字Pにあたるけたを空白とする。また，比較条件の作用対象が位取りした整数項目と英数字項目であれば，整数項目を英数字項目に変換するときにMOVE文と同様文字Pにあたるけたを空白とみなす。

（例）

       77 A PIC 999PP VALUE 12300.
       77 B PIC X(5).
           MOVE A TO B.

この例で，MOVE文を実行すると，データ項目Bは，123△△となる（△△は半角空白）。

（注意）

-StdVersion,1オプションが有効でない場合には，データ項目Bは，12300となる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.28　MOVE文」

(5)　UNSTRING文のDELIMITED BY ALL指定

UNSTRING文にDELIMITED BY ALL指定を書くと，送り出し側作用対象の文字列中に同じ区切り文字の連続した繰り返しが現れた場合，DELIMITER IN指定のデータ項目に，区切り文字の繰り返し現れた文すべてが転記される（入りきらなければ右側が無視される）。

（注意）

-StdVersion,1オプションが有効でない場合には，区切り文字の受け取り側作用対象に区切り文字1個分だけが転記される。

（備考）

第1次規格にはUNSTRING文はない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.52　UNSTRING文」

(6)　COPY文（コンパイラオプションによる仕様の相違）

形式

構文規則

REPLACING指定の中に仮原文1や仮原文2は書けない。また，予約語BYの前には複数個の語の組から成る一意名および定数を書けないので，単一のCOBOLの語を書かなければならない。

COPY文を書ける個所に制限がある。次の個所にだけCOPY文を書くことができる。

環境部

SOURCE-COMPUTER. COPY文.

OBJECT-COMPUTER. COPY文.

SPECIAL-NAMES. COPY文.

FILE-CONTROL. COPY文.

　SELECT ［OPTIONAL］

　　ファイル名 COPY文.

　SELECT 整列併合用ファイル名 COPY文.

I-O-CONTROL. COPY文.

ファイル節

FD ファイル名 COPY文.

SD 整列併合用ファイル名 COPY文.

nn データ名 COPY文.

（nnは01または02〜49のレベル番号）

作業場所節および連絡節

手続き部

節名 SECTION ［区分番号］. COPY文.

段落名. COPY文.

一般規則

データ記述項にCOPY文を書いたとき，複写される登録集原文は，そのCOPY文が指定された記述項のレベル番号と同じレベル番号を持つ記述項から始まるのでなければならない。このとき，COPY文は記述項全体を登録集原文で置き換えるが，語COPYの前に書いたレベル番号，データ名およびREDEFINES句は置き換わらず，原始プログラム中に書いたものがそのまま残る。

（例1）

01 RECORD-A COPY RECALIB.

原始文RECALIBが識別する登録集原文は，完全なレコード記述でなければならない。次に正しい記述と誤った記述の例を示す。

（正しい記述例）

       01 RECORD-B.
         02 RECA1 PIC X(3).
         02 RECA2.
           03 RECA2-1 PIC S9(5).
           03 RECA2-2 PIC S9(9) COMP.

（誤った記述例）

             SYNCHRONIZED.
         02 RECA1 PIC X(3).
         02 RECA2.
           03 RECA2-1 PIC S9(5).
           03 RECA2-2 PIC S9(9) COMP.

複写の結果は次のようになる。登録集原文のうち，01 RECORD-B.だけは複写後，原始プログラムに書いた01 RECORD-A.で置き換えられる。

       01 RECORD-A.
         02 RECA1 PIC X(3).
         02 RECA2.
           03 RECA2-1 PIC S9(5).
           03 RECA2-2 PIC S9(9) COMP.

（例2）

05 RECORD-C COPY RECBLIB.

原文名RECBLIBの登録集原文は完全なレコード記述でなければならない。次に例を示す。

       05 RECORD-D.
         10 RECD1 PIC X(3).

複写の結果は次のようになる。

       05 RECORD-C.
         10 RECD1 PIC X(3).

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「3.2.2　COPY文」

(7)　JUSTIFIED句の処理

JUSTIFIED句の指定がある英字，英数字，英数字編集にVALUE句で初期値を与えるときに，JUSTIFIED句の機能を働かせる。

（例）

05 DATA-A PIC X(5) JUSTIFIED VALUE 'AB'.

DATA-Aには，値ABが右端によせて格納される。左端に空白が埋められる。

（注意）

-StdVersion,1オプションが有効でない場合には，JUSTIFIED句の機能は無視される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.36　JUSTIFIED句」

(8)　ADVANCING指定なしのWRITE文での仮定

一つのファイルに対する複数個のWRITE文で，ADVANCING指定があるものとないものを混用した場合，次のように仮定する。

ADVANCING指定のあるWRITE文

ADVANCING指定のないWRITE文

すべてBEFOREのとき

BEFORE 1を仮定する

すべてAFTERのとき

AFTER 1を仮定する

BEFOREとAFTERとがあるとき

BEFORE 1を仮定する

（注意）

-StdVersion,1オプションが有効でない場合には，AFTER ADVANCING 1を仮定する。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.55　WRITE文」

24.2.2　第2次規格以前の仕様（-StdVersion,1，-StdVersion,2）

-StdVersion,1オプションは第1次規格以前，-StdVersion,2オプションは第2次規格以前の仕様で翻訳することを指定するが，ここでは第1次規格と第2次規格の仕様が同じで第3次規格と第4次規格との間で解釈が異なっている言語仕様について次に示す。

(1)　VARYINGとAFTERの指定があるPERFORM文での評価順序

-StdVersionオプションを指定した場合，次の書き方のとき，標準仕様のPERFORM文の規則と異なる。

形式

（備考）

次の言語要素は，第2次以前の規格にはなかったが，このシステムでは-StdVersionオプション指定時にも書くことができる。

（a）うちPERFORM文（手続き名を省略し，無条件文END-PERFORMを書く）

（b）WITH TEST BEFORE／AFTER指定

（c）AFTER指定の3回以上の繰り返し記述

一般規則

次に，標準仕様のPERFORM文と異なる規則だけ説明する。

PERFORM文の実行中に，条件2（内側のループの終了条件）が成立すると，次の順に実行される。

（i）一意名4など（内側のループの制御変数）を，一意名5などの値で再初期化する。

（ii）一意名1など（外側のループの制御変数）を，一意名3などの値で増加させる。

PERFORM文の実行中に，条件3（内側のループの終了条件）が成立すると，次の順に実行される。

（i）一意名7など（内側のループの制御変数）を，一意名8などの値で再初期化する。

（ii）一意名4など（外側のループの制御変数）を，一意名6などの値で増加させる。

（注意）

-StdVersionオプション未指定時には，上記の（i）〜（ii）の順番が入れ替わる。

（例1）

       01 J        PIC  99  COMP.
       01 K        PIC  99  COMP.
       01 WK-1.
         02 WK-2         OCCURS  4.
           03 WK-3 PIC X OCCURS  4.
                :
           MOVE SPACE TO WK-1.
           PERFORM PROC-1
             VARYING J FROM 1 BY 1 UNTIL J > 4
             AFTER K FROM J BY 1 UNTIL K > 4,
                :
       PROC-1.
           MOVE '*' TO WK-3(J,K)

上記の（例1）のPERFORM文の流れを次に示す。

図24‒1　PERFORM文の流れ

-StdVersionオプションを指定して，PERFORM文を実行すると，「*」の転記は次のとおりに行われる。

同じ例を，-StdVersionオプションを指定しないで実行すると，「図24‒1　PERFORM文の流れ」中の(i)と(ii)の処理の順番が入れ替わる。このとき，PERFORM文の実行の結果，「*」の転記は次のとおりに行われる。

-StdVersionオプション未指定時の仕様は，次に示す例2のうちPERFORM文と同じである。

（例2）

           PERFORM VARYING J FROM 1 BY 1 UNTIL J > 4
             PERFORM VARYING K FROM J BY 1 UNTIL K > 4
               MOVE '*' TO WK-3(J,K)
             END-PERFORM
           END-PERFORM.

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.31　PERFORM文」

24.3　VOS3 COBOL85からの移行用オプション

言語仕様の意味を変更するオプションについて説明する。

なお，報告書作成機能については，「7.1　報告書作成機能のVOS3 COBOL85からの移行用オプション（-CompatiV3）」を参照のこと。

24.3.1　2進項目のけた落とし（-DigitsTrunc）

-DigitsTruncを指定すると，COBOL原始プログラム中の転記文で受け取り側作用対象が2進項目の場合，送り出し側作用対象の有効けた（PICTURE句で指定した10進けた数）が受け取り側作用対象のけた数より大きいとき，上位けたの切り捨てを行う。

-DigitsTruncを指定しないと，COBOL原始プログラム中の転記文で受け取り側作用対象が2進項目の場合，送り出し側作用対象の値の有効けたが受け取り側作用対象の領域（2，4または8バイト）に入らないとき，そのバイト数に入りきらない部分を切り捨てる。

（備考）

COBOLは10進法を基調にしているので，厳密には-DigitsTruncが規格の仕様である。

（例）

       77 A PIC S9(5) COMP VALUE 12345.
       77 B PIC S9(4) COMP.
            :
           MOVE A TO B

Aの2進項目には2バイトの領域が割り当てられるので，-32768〜+32767の範囲の数値を格納できる。しかし，-DigitsTrunc指定時には，けた落としが行われ，転記後はBの項目の値は2345となる。

なお，例外名EC-SIZE-TRUNCATIONに対するTURN指令が有効で，送り出し側の有効けた数が受け取り側のけた数より大きいときは，このオプションの指定があっても，上位けたを切り捨てないで，EC-SIZE-TRUNCATION例外が成立する。

24.3.2　分離符の選択（-DoubleQuote）

-DoubleQuoteを指定すると，表意定数QUOTEの値や英数字定数の範囲を示す分離符として引用符（"）が用いられる。

-DoubleQuoteを指定しないと，表意定数QUOTEの値や英数字定数の範囲を示す引用符としてアポストロフィ（'）が用いられる。

（備考）

規格仕様の分離符は，引用符（"）であるが，日立や他社の多くのコンパイラでは以前からアポストロフィ（'）が使用されている。

24.3.3　日本語文字の扱い（-V3Rec,Fixed，-V3Rec,Variable）

(1)　機能

-V3Rec,Fixed，-V3Rec,Variableは，利用者がメインフレーム（VOS3）からファイル転送された，メインフレームでの固定長レコード形式または可変長レコード形式のCOBOL原始プログラムを，メインフレームの日本語の扱いに合わせて翻訳することを可能とするためにサポートした機能である。すなわち，この機能を用いると，日本語混在のCOBOL原始プログラムを，機能キャラクタが付加されたものとみなした，原始プログラムの領域の意識および語の構成規則のエラーチェックを行って翻訳することができる。また，このシステムでの標準コードと拡張コードの等価規則を無効とした形での翻訳を可能とする。

ここでは，日本語混在のCOBOL原始プログラムを，メインフレームの日本語の扱いに合わせて翻訳する上で，標準仕様と異なる言語仕様について述べる。

(2)　文字集合

日本語文字を用いる場合，日本語文字列の直前と直後に，メインフレームでの「KEISコード開始」と「EBCDIKコード開始」を表す2バイトの機能キャラクタ（シフトコード）が，それぞれ付加されたものとみなす。ここでは，以降，これらの機能キャラクタをそれぞれ，[漢]と[E]で表す。

(a)　[漢]，[E]を仮定する条件

-V3Recオプションの指定が有効な場合，このシステムで[漢]，[E]が仮定される条件を次に示す。

[漢]が仮定される条件

空白を除く1件または連続する拡張コードの直前に[漢]が仮定される。

[E]が仮定される条件

直前に[漢]を仮定された拡張コードの文字列の後ろで，最初に出現した空白を除く標準コードの直前に[E]が仮定される。

(b)　空白に関する機能キャラクタの扱いによるメインフレームとの差異

このシステムは，空白に関する機能キャラクタの扱いで，メインフレームと以下の差異がある。

拡張コードの空白を標準コードの空白2個と等価とみなし，日本語文字列の開始文字として扱わない。このため，拡張コードの空白の直前には[漢]が仮定されない。

日本語文字列に続く標準コードの空白は日本語文字列として扱う。このため，日本語文字列と改行の間が0個以上の半角空白だけのとき，[E]が仮定されない。

空白に関する機能キャラクタの扱いをメインフレームと同等にしたい場合，-V3Recオプションと合わせて-V3RecFCSpaceオプションを指定する。-V3RecFCSpaceオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」の-V3RecFCSpaceオプションを参照のこと。

（例）

日本語文字が含まれた語に対して，機能キャラクタが仮定される例を以下に示す。

-V3Recオプション指定がない場合

      01  得意先．
        02  データ    PIC N(2) VALUE N'日立'.
        02  空白      PIC N(2) VALUE N'▲▲'.

-V3Recオプション指定だけがある場合

       01 [漢]得意先[E].
        02  [漢]データ    [E]PIC N(2) VALUE N'[漢]日立[E]'.
        02  [漢]空白      [E]PIC N(2) VALUE N'▲▲'.

-V3Recオプションと合わせて-V3RecFCSpaceオプションを指定した場合

       01 [漢]得意先[E].
        02  [漢]データ    [E]PIC N(2) VALUE N'[漢]日立[E]'.
        02  [漢]空白      [E]PIC N(2) VALUE N'[漢]▲▲[E]'.

（凡例）▲：日本語空白

(3)　文字列

利用者定義語，定数および注釈に日本語文字を使用できる。

(a)　COBOLの語

COBOLの語とは，31字以下の文字列であって，利用者定義語，システム名，予約語および関数名のどれかとする。

この機能では，標準コードの文字に換算して31字以下の文字列とする。

各英小文字は，その対応する英大文字に等価とみなす。ただし，空白を除く，拡張コードの各文字は，その対応する標準コードの各文字に等価とはみなさない。

拡張コードの空白は，標準コードの2字の空白と等価とみなす。

利用者定義語

日本語（拡張コード）文字を用いて，利用者が定義できる語には，次のものがある。

符号系名（alphabet-name）

データ名（data-name）

レコード名（record-name）

条件名（condition-name）

ファイル名（file-name）

指標名（index-name）

呼び名（mnemonic-name）

記号文字（symbolic-character）

字類名（class-name）

段落名（paragraph-name）

節名（section-name）

各利用者定義語の語を構成する文字列のサイズは，機能キャラクタを含めて，31バイト以下でなければならない。したがって，日本語文字だけで語を構成する場合は，拡張コードの文字に換算して，13字以下でなければならない。

(b)　定数

72カラム以前に改行文字がある場合，改行文字から72カラムに空白を仮定する。

英数字定数

英数字定数を構成する文字列のサイズは，機能キャラクタを含めて，160バイト以下でなければならない。

構文規則

文字列が引用符を表すならば，引用符の1字を表すのに，標準コードの連続する2字の引用符を用いなければならない。

日本語文字定数

日本語文字定数を構成する文字列のサイズは，機能キャラクタを含めて，160バイト以下でなければならない。したがって，日本語文字だけで語を構成する場合は，78字以下でなければならない。

形式

構文規則

文字1は，拡張コードの任意の文字および標準コードの空白とする。

拡張コードの引用符は，分離符の引用符とはみなさない。したがって，拡張コードの引用符は，文字1内の任意の位置に書くことができる。

(4)　コーディング規則

(a)　行と文字位置

原始プログラムは英数字文字を1文字（1バイト）単位，日本語文字を2バイト単位として80文字で構成される行中に記述する。

メインフレームの固定長レコード形式によって翻訳する場合，日本語文字定数など前後に付ける機能キャラクタは，プログラム原文領域（8カラムから72カラム）中になければならない。

メインフレームの可変長レコード形式によって翻訳する場合，日本語文字列の前後に付ける機能キャラクタを除くと，原始文記述はプログラム原文領域中に納まっていなければならない。

(b)　日本語文字の継続

日本語文字は，複数行にわたって定義できる。この場合，継続行はプログラム原文領域（8カラムから72カラム）で指定しなければならない。ただし，日本語文字の継続に関しては，機能キャラクタの扱いがメインフレームと異なるため，メインフレームとの完全な互換性はない。

(5)　原始文操作機能の特性

この機能では，原始文操作機能であるCOPY文のREPLACING指定およびREPLACE文によって語の置き換えがあり，置き換えられることによって，本来境界Rまでに納まっていた原文語が機能キャラクタを含めた形で論理的に境界Rを超える場合でも，見かけ上の境界Rまでに納まる場合は，そのまま置かれる。同様にCOPY文のPREFIXING／SUFFIXING指定によって語が付加された結果として，機能キャラクタを含めて，論理的に境界Rを超える場合でも，見かけ上の境界Rまでに納まる場合は，そのまま置かれる。また，日本語文字の置き換えが発生するCOPY文およびREPLACE文に関しては，機能キャラクタの扱いがメインフレームと異なるため，メインフレームとの完全な互換性はない。

また，COPY文のPREFIXING／SUFFIXING指定で指定する語1および語2に日本語文字を含めてはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「3.2.2　COPY文」

「COBOL2002　言語　標準仕様編」　「3.2.3　REPLACE文」

24.3.4　行送り制御文字領域削除（-IgnoreLCC）

WRITE〜ADVANCING文で書き出すレコードの先頭1バイトを出力しないことを指定する。あらかじめ，レコード記述項で行送り制御文字用の1バイト分の領域を確保しておいたプログラムをコンパイルするときに指定する。ただし，次のどれかが当てはまる場合，-IgnoreLCCオプションの指定があってもレコードの先頭から出力する。

順ファイル以外のファイルの場合

順ファイルのWRITE文に行送りの指定（ADVANCING，POSITIONING）がない場合

順ファイルのファイル記述項にLINAGE指定がある場合

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.55　WRITE文」

24.3.5　日本語項目に対して埋められる空白の扱い（-JPN,V3JPNSpace）

-JPN,V3JPNSpaceオプションと-CompatiV3オプションを同時に指定したとき，日本語集団項目，日本語項目，日本語編集項目，および日本語文字定数をそのままの属性で扱う。これは，メインフレーム（VOS3）COBOL85で，LANGOPT=(D)オプションとXCOBOL=(-N)オプションを同時に指定したときの日本語項目の扱いに合わせるものである。

なお，-JPN,V3JPNSpaceオプションは，VOS3 COBOL85互換機能である。-JPN,V3JPNSpaceオプションについては，マニュアル「COBOL2002　ユーザーズガイド」または「COBOL2002　使用の手引　手引編」を参照のこと。

-JPN,V3JPNSpaceオプションを指定してコンパイルすると，日本語集団項目，日本語項目，および日本語編集項目に対して次の扱いとする。

(1)　表意定数SPACE（SPACES）の扱い

日本語集団項目，日本語項目，および日本語編集項目に対する表意定数SPACE（SPACES）は，日本語空白（X'8140'）とする。

（例1）

       01 A1   PIC N(2) VALUE SPACE.

上記のVALUE句によるデータ名A1の内容は，-JPN,V3JPNSpaceオプション指定の有無により，次のとおりとなる。

-JPN,V3JPNSpaceオプション指定あり

-JPN,V3JPNSpaceオプション指定なし

▲▲

△△△△

（凡例）

▲：全角空白（X'8140'）

△：半角空白（X'20'）

(2)　日本語集団項目，日本語項目，および日本語編集項目同士の転記の扱い

日本語集団項目，日本語項目，および日本語編集項目同士の転記で，受け取り側作用対象のけた数が送り出し側作用対象のけた数より長い場合，受け取り側作用対象の右側に日本語空白（X'8140'）を補う。

（例1）

       01 A1   PIC N(2) VALUE N'日立'.
       01 B1   PIC N(5).

       MOVE A1 TO B1.

上記のMOVE文を実行したあとのデータ名B1の結果は，-JPN,V3JPNSpaceオプション指定の有無により，次のとおりとなる。

-JPN,V3JPNSpaceオプション指定あり

-JPN,V3JPNSpaceオプション指定なし

日立▲▲▲

日立△△△△△△

（凡例）

▲：全角空白（X'8140'）

△：半角空白（X'20'）

(3)　日本語集団項目，日本語項目，および日本語編集項目同士の比較の扱い

日本語集団項目，日本語項目，および日本語編集項目同士の比較で，作用対象のけた数が等しくない場合，短い方の作用対象の右側に，長い方の作用対象のけた数に等しくなるまで日本語空白（X'8140'）があるものとみなして比較する。

（例1）

       01 A1   PIC N(2) VALUE N'株式'.
　　　　　 　　：
　　　　　 　　：
               IF A1 = N'株式会社'
               THEN
                   DISPLAY N'株式会社です'
               ELSE
                   DISPLAY N'株式会社ではありません'
               END-IF.

上記のIF文を実行するときデータ名A1の内容は，-JPN,V3JPNSpaceオプション指定の有無により，次のとおりとなる。

-JPN,V3JPNSpaceオプション指定あり

-JPN,V3JPNSpaceオプション指定なし

株式▲▲

株式△△△△

（凡例）

▲：全角空白（X'8140'）

△：半角空白（X'20'）

なお，-JPN,V3JPNSpaceオプション指定による日本語項目の扱いは，LANGOPT=(D)オプション指定時のすべての仕様と同じにするものではない。VOS3 COBOL85でLANGOPT=(D)オプションを指定した場合と，COBOL2002で-JPN,V3JPNSpaceオプションを指定した場合の仕様の相違点については，「付録B　LANGOPT=(D)オプションと-JPN,V3JPNSpaceオプションを指定した場合の仕様の相違」を参照のこと。

24.3.6　日本語項目の扱い（-JPN,Alnum）

-JPN,Alnumオプションは，日本語項目，日本語編集項目を英数字項目，英数字編集項目として扱う。例えば，PIC N(5)は，PIC X(10)とみなされる。-JPN,Alnumオプションの指定によって日本語の扱いが異なる例を次に示す。

（例1）日本語項目と英数字項目間の転記の相違

       MOVE 英数字項目 TO 日本語項目.

-JPN,Alnumオプション指定時：

英数字項目間の転記の規則に従って転記される。受け取り側作用対象の方が長い場合は，転記が終わった位置より右側の文字位置に半角の空白（X'20'）が埋められる。

-JPN,Alnumオプション未指定時：

日本語項目同士の転記でないためコンパイルエラーとなる。

（例2）空白の転記

       01 日本語項目 PIC N(5).
           MOVE SPACE TO 日本語項目.

-JPN,Alnumオプション指定時：

半角の空白（X'20'）が転記される。

-JPN,Alnumオプション未指定時：

全角の空白（X'8140'）が転記される。

（例3）日本語項目に対するVALUE句

       01 日本語項目 PIC N(2) VALUE '漢字'.
       01 日本語項目 PIC N(2) VALUE ZERO.

-JPN,Alnumオプション指定時：

日本語直接定数，英数字定数，表意定数のどれを指定してもエラーにならない。なお，英数字定数，表意定数（SPACE(S)以外）はメインフレーム（VOS3）のCOBOLでは指定できないため，日本語直接定数と表意定数のSPACE(S)だけを使用した方が良い。

-JPN,Alnumオプション未指定時：

日本語直接定数または表意定数のSPACE(S)でなければならない。したがって，（例3）はコンパイルエラーとなる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.88　VALUE句」

（例4）部分参照での相違

       01 NIHONGO PIC N(10) VALUE N'１２３４５６７８９０'.

-JPN,Alnumオプション指定時：

NIHONGO(3 : 4)は，N'２３'となる。

-JPN,Alnumオプション未指定時：

NIHONGO(3 : 4)は，N'３４５６'となる。

（例5）INSPECT文での相違

次のコード表現の場合の例を示す。

N'モ'=X'8382'

N'÷'=X'8180'

N'ａ'=X'8281'

N'亜'=X'889F'

          :
       01 NIHONGO PIC N(3) VALUE N'モ÷ａ'.
       01 I       PIC S9(9) COMP VALUE +0.
          :
           INSPECT NIHONGO TALLYING I FOR ALL N'ａ'
                           REPLACING ALL N'ａ' BY N'亜'.
          :

-JPN,Alnumオプション指定時：

Iは，2となる。

NIHONGOは，X'83889F80889F'となる。

-JPN,Alnumオプション未指定時：

Iは，1となる。

NIHONGOは，N'モ÷亜'となる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.25　INSPECT文」

（例6）STRING文での相違

          :
       01 NIHONGO0 PIC N(6) VALUE ALL N'０'.
       01 NIHONGO1 PIC N(2) VALUE ALL N'１'.
       01 NIHONGO2 PIC N(2) VALUE ALL N'２'.
       01 PTR      PIC S9(9) COMP VALUE +3.
          :
           STRING NIHONGO1 DELIMITED BY SIZE
                  NIHONGO2 DELIMITED BY SIZE
             INTO NIHONGO0 WITH POINTER PTR.
          :

-JPN,Alnumオプション指定時：

NIHONGO0は，N'０１１２２０'となる。

-JPN,Alnumオプション未指定時：

NIHONGO0は，N'００１１２２'となる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.47　STRING文」

（例7）UNSTRING文での相違

次のコード表現の場合の例を示す。

N'モ'=X'8382'

N'÷'=X'8180'

N'ａ'=X'8281'

          :
       01  NIHONGO1 PIC N(5) VALUE N'モモ÷ａ÷'.
       01  NIHONGO2 PIC N(3).
          :
           UNSTRING NIHONGO1 DELIMITED BY ALL N'ａ'
               INTO NIHONGO2 .
          :

-JPN,Alnumオプション指定時：

NIHONGO2は，X'838283202020'となる。

-JPN,Alnumオプション未指定時：

NIHONGO2は，N'モモ÷'となる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.52　UNSTRING文」

24.3.7　その他のVOS3 COBOL85互換（-CompatiV3）

-CompatiV3オプションはメインフレーム（VOS3）との互換用のオプションである。-CompatiV3オプションは，VOS3 COBOL85で開発したプログラムを，UNIXまたはWindows環境に移行するために使用する。

ASSIGN句で指定された外部装置名に関連する環境変数名を変更する。書き方を次に示す。

SYSnnn ［-装置クラス］［-装置名］［-編成］

または

［装置クラス-］［装置名-］［編成-］ ファイル定義名

-CompatiV3オプション指定時の環境変数名

CBL_SYSnnnまたはCBL_ファイル定義名

-CompatiV3オプション未指定時の環境変数名

CBL_SYSnnn［_装置クラス］［_装置名］［_編成］

または

CBL_［装置クラス_］［装置名_］［編成_］ファイル定義名

入出力両用ファイルとして開いた順ファイルでは，WRITE文の効果はREWRITE文と同じである。WRITE文を実行する前に，そのファイルにREAD文を実行しておかなければならない。WRITE文は，直前のREAD文で読み込んだレコードを更新する。

VOS3 COBOL85上で使用できる報告書作成機能を記述したプログラムをコンパイルする。

画面機能では，複数プログラムで通信文が実行された場合，一つの論理端末を複数のプログラム間で共用し，送受信する。

DIVIDE文書き方4および書き方5で，除算の剰余計算に使う商は，商を計算したときの中間結果と同じけた数，同じ小数点位置，同じ符号の有無を持つ。

（例）

DIVIDE A BY B GIVING C REMAINDER D.

上記の例のDIVIDE文は，下記のような連続した操作に変換される（ただし，TMP1，TMP2およびTMP3は，コンパイラによって作成された中間結果の作業場所を表す）。

A / B → TMP1
TMP1 → TMP2
A - (B * TMP2) → TMP3
TMP1 → C
TMP3 → D

-CompatiV3オプション指定時のTMP2

TMP1と同じけた数，同じ小数点位置，同じ符号になる。

-CompatiV3オプション未指定時のTMP2

商（C）と同じけた数，同じ小数点位置，同じ符号になる。

-CompatiV3オプションと-IntResult,DecFloat40オプションを同時に指定したとき，算術式と算術文に対する-CompatiV3オプションのDIVIDE文書き方4および書き方5は無効となる。この場合，-IntResult,DecFloat40オプションの仕様で演算を実行する。詳細については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引手引編」を参照のこと。

プログラム中に連結式を書けない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.13　DIVIDE文」

「COBOL2002　言語　標準仕様編」　「10.8.33　READ文」

「COBOL2002　言語　標準仕様編」　「10.8.39　REWRITE文」

「COBOL2002　言語　標準仕様編」　「10.8.55　WRITE文」

「COBOL2002　言語　標準仕様編」　「13.1　報告書作成機能とは」

24.4　HITAC8000シリーズからの移行用オプション（-H8Switch）

HITAC8000シリーズ（EDOS/EDOS-MSO）時代から残っているCOBOLプログラムへの移行用として-H8Switchオプションが用意されている。

-H8Switchオプションで変更される言語仕様を記述する。

なお，報告書作成機能については，「7.2　報告書作成機能のHITAC8000シリーズからの移行用オプション（-Cblctr）」を参照のこと。

24.4.1　数字項目の転記／比較（-H8Switch）

-H8Switchを指定すると，次の場合のMOVE文※および比較条件の数字項目（または固定小数点数字定数）を英数字項目とみなして転記／比較する。

MOVE文で，送り出し側作用対象が数字項目（または固定小数点数字定数）で，受け取り側作用対象が英数字項目（または英数字編集項目）の場合。

比較条件で，両辺の組み合わせが数字項目（または固定小数点数字定数）と英数字項目（または英数字編集項目，英字項目，英数字定数）の場合。

-H8Switchオプションを指定しないと，上記の場合の数字項目（または固定小数点数字定数）を英数字項目とみなさずに転記／比較する。

注※

WRITE／REWRITE／RELEASE FROM文とACCEPT FROM DAY／DATE／TIME／DAY-OF-WEEK文にも適用される。

（備考）

-H8Switch指定なしが規格の仕様である。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.1　ACCEPT文」

「COBOL2002　言語　標準仕様編」　「10.8.28　MOVE文」

「COBOL2002　言語　標準仕様編」　「10.8.35　RELEASE文」

「COBOL2002　言語　標準仕様編」　「10.8.39　REWRITE文」

「COBOL2002　言語　標準仕様編」　「10.8.55　WRITE文」

24.5　デバッグ行の有効，無効（-DebugLine）

固定形式正書法の場合，原始プログラムの行の標識領域（7欄）に文字「D」を書くと，その行はデバッグ行となる。このデバッグ行にデバッグのためのデータや手続きを指定しておく。

翻訳時に-DebugLineオプションを指定すると，デバッグ行は翻訳対象となり，このシステムは標識領域が空白の行と同じように翻訳する。-DebugLineオプションを指定しないと，このシステムはデバッグ行を注釈行としてみなして処理する。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「2.4.7　デバッグ行」

24.6　主プログラムの指定コマンドインタフェース（-Main,System）

-Main,Systemオプションが指定された最外側のプログラムで，PROCEDURE DIVISION USINGで引数を指定する場合の規則を以下に示す。

第1引数は，BY VALUE指定で整数項目（PICTURE句の指定で「P」を含まない）で，かつ5〜9けたの2進項目でなければならない。

第2引数がBY VALUE指定の場合は，アドレスデータ項目でなければならない。

24.7　転記の長さのチェック（-TruncCheck）

翻訳時に-TruncCheckオプションを指定すると，転記で送り出し側作用対象の長さが受け取り側作用対象の長さより大きいとき，お知らせメッセージを出す。ただし，送り出し側作用対象および受け取り側作用対象の両方またはどちらかに，チェック対象とならない項目がある場合はチェックしない。

24.7.1　チェック対象となる項目

外部10進項目

内部10進項目

2進項目（1バイト2進項目を含む）

数字定数（16進数字定数を含む）

固定長集団項目

英数字項目

英数字定数（16進英数字定数を含む）

ALL英数字定数

数字型，整数型，または英数字型の，組み込み関数※および利用者定義関数

注※　送り出し側が英数字型の組み込み関数で，かつ次に示す条件の場合はチェックしない。

引数が部分参照されていて，長さが可変である

長さが可変になるのは次のどちらかのときとなる。

・部分参照の長さがデータ名指定である

・部分参照の開始位置がデータ名指定で，長さが省略されている

組み込み関数がMAX関数またはMIN関数で，データ名の引数が複数指定されている

組み込み関数がTRIM関数またはSUBSTRING関数である

24.7.2　チェック対象とならない項目

可変長集団項目

英字項目

数字編集項目，英数字編集項目

外部浮動小数点項目，内部浮動小数点項目

指標データ項目

日本語項目，日本語編集項目

アドレスデータ項目，ポインタ項目

アドレス名

ブール項目

オブジェクト参照データ項目

バリアントデータ項目（UNIX COBOL2002では使用できない）

表意定数（SPACE，QUOTE，HIGH-VALUE，LOW-VALUE，ZERO，NULL）

浮動小数点定数

ブール定数，ALLブール定数

日本語文字定数，ALL日本語文字定数

部分参照がある一意名

COMP-X項目

動的長基本項目

24.7.3　チェック対象となる転記の個所

VALUE句

WINDOW SECTIONのSOURCE句

ACCEPT文の書き方2（日付と時刻を取得するACCEPT文）

INITIALIZE文のREPLACING指定

MOVE文

READ文のINTO指定

RELEASE文のFROM指定

RETURN文のINTO指定

SET文の書き方4

WRITE文のFROM指定

COMPUTE文（送り出し側作用対象が単一の数字項目や数字定数の場合）

上記以外の算術文（中間結果のけた数※1が受け取り側作用対象のけた数より大きい場合※2）

注※1

中間結果のけた数については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」を参照のこと。

注※2

64bit版 COBOL2002の場合，-MaxDigits38オプションおよび-IntResult,DecFloat40オプションを指定しているときは，常に中間結果のけた数の方が大きいと判定される。

24.7.4　受け取り側作用対象が英数字の場合

受け取り側作用対象が固定長集団項目のときはバイト数で比較する。

送り出し側作用対象が数字で，受け取り側作用対象が英数字のときは，送り出し側作用対象はけた数（小数けたを含む）で比較する。

-H8Switchオプションが指定してあり，送り出し側作用対象が数字で受け取り側作用対象が英数字のときは，数字項目はバイト数で比較する。

24.7.5　受け取り側作用対象が数字の場合

整数けた数で比較する。

次のすべての条件が重なるときはチェックしない。

-DigitsTruncオプションの指定がある

-MaxDigits38オプションおよび-IntResult,DecFloat40オプションを指定していない（64bit版 COBOL2002の場合）

受け取り側作用対象が2進項目

VALUE句の転記でない

送り出し側作用対象が18けた※を超える英数字項目のときはチェックしない。

注※

64bit版 COBOL2002の場合，-MaxDigits38オプションおよび-IntResult,DecFloat40オプションを指定しているときは，38けたになる。

24.7.6　送り出し側作用対象が2進項目で，受け取り側作用対象が外部10進項目／内部10進項目の場合の規則（-TruncCheck,Binaryオプション指定時のチェック項目）

-TruncCheck,Binaryオプションは，UNIX COBOL2002で有効なオプションである。

整数けた数の比較で，送り出し側作用対象のけた数が大きいときは，お知らせメッセージを出力する（-TruncCheckと同じチェック）。

整数けた数の比較で，送り出し側作用対象のけた数が大きくなく，次に示す2進項目に格納可能な最大けた数が，受け取り側作用対象の整数けた数より大きいときは，お知らせメッセージを出力する（-TruncCheck,Binary固有のチェック）。

PICTURE句のけた数※1

2進項目に格納できる最大けた数※2

1〜2けた

5けた（-Bin1Byteオプション指定時は3けた）

3〜4けた

5けた

5〜9けた

10けた

10〜18けた

19けた

注※1

整数部と小数部のけた数の合計値。

注※2

小数部があるときは，小数部のけた数を除いたけた数。

（例）

01 A PIC 9(4)V9(2) COMP.

上記の場合，整数部と小数部のPICTURE句のけた数の合計値は6けたになる。2進項目では，PICTURE句のけた数6けたで格納できる最大けた数は10けたになるが，これから小数部のけた数2を除いた8けたを使用する。

24.7.7　-TruncCheckと-TruncCheck,Binaryオプションの相違点

-TruncCheckと-TruncCheck,Binaryオプションの相違点を次に示す。なお，-TruncCheck,Binaryオプションは，UNIX COBOL2002で有効なオプションである。

-TruncCheck

-TruncCheck,Binary

MOVE B5 TO E6 ※

ノーエラー

お知らせのメッセージを出力する

MOVE B6 TO E6 ※

ノーエラー

お知らせのメッセージを出力する

MOVE B7 TO E6 ※

お知らせのメッセージを出力する

お知らせのメッセージを出力する

注※

01 B5  PIC 9(5) COMP.
01 B6  PIC 9(6) COMP.
01 B7  PIC 9(7) COMP.
01 E6  PIC 9(6).

25　その他の拡張仕様

この章では，このシステムで追加したCOBOLの句や文について説明する。

25.1　全般規則

25.1.1　かたかな

(1)　文字集合中のかたかな

このシステムは，COBOL規格のCOBOL文字集合に加えて，次に示す半角かたかなを語に使用できる。

ア，イ，ウ，エ，オ，…，ヤ，ユ，ヨ，…，ワ，ン，゛（濁点），゜（半濁点），ー（長音記号）

長音記号（ー）は，かたかなで長音を表すときに用いる。

濁点や半濁点はそれぞれ1字として文字列のサイズに数える。濁点や半濁点は，かたかなと組み合わせて用いるのが普通であるが，このシステムでは独立の文字として扱う。

かたかなを用いた，正しい語と誤っている語の例を次に示す。

（例1）正しい語の例

キイ

ケ゛ツホ゜ウ

゛ー゜

（例2）誤っている語の例

マスター△ファイル（間に空白があってはならない）

(2)　かたかなを使用した利用者定義語

利用者は，次に示す利用者定義語にかたかなを使用できる。

これらの名前には，少なくとも1個の英字またはかたかなが含まれていなければならない。ただし，かたかなが含まれていれば英字は含まれていなくてよい。

符号系名（alphabet-name）

データ名（data-name）

レコード名（record-name）

条件名（condition-name）

ファイル名（file-name）

指標名（index-name）

記号文字（symbolic-character）

字類名（class-name）

呼び名（mnemonic-name）

段落名（paragraph-name）

節名（section-name）

次に示す利用者定義語にはかたかなが含まれてはならない。

プログラム名

原文名

登録集名

25.1.2　16進英数字定数

形式

構文規則

定数として記述できる文字は，'0'〜'9'，'A'〜'F'の16種類である。

長さは160文字まで記述できるが，2の倍数長でなければならない。

一般規則

16進英数字定数の扱いは，英数字定数と同じとする。したがって，英数字定数が記述できる個所であれば，次の個所を除いて16進英数字定数が指定できる。

（a）プログラム名

（b）外部装置名

（c）原文名

（d）メソッド名

25.1.3　16進数字定数

形式

構文規則

定数として記述できる文字は，'0'〜'9'，'A'〜'F'の16種類である。

長さは8文字まで記述でき，2の倍数長である必要はない。

一般規則

16進数字定数の扱いは，数字（整数）定数と同じとする。したがって，数字（整数）定数が記述できる個所であれば，16進数字定数が指定できる。

25.1.4　表意定数（POINTER項目）

形式

機能

一つまたは複数の未設定のポインタ値を表す。NULLの値を持つポインタ変数は，どんなデータ項目も指さない。

一般規則

表意定数NULL／NULLSが記述できるのは，次の個所である。

（a）USAGE POINTERまたはUSAGE ADDRESSが指定された項目に記述されたVALUE句の定数。

（b）SCREEN SECTIONに記述されたVALUE句の定数。

（c）ポインタ比較の条件式中の左辺または右辺。

（d）ポインタを設定するSET文の送り出し側作用対象。

（e）CALL文，INVOKE文のBY VALUEに指定する定数。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.88　VALUE句」

「COBOL2002　言語　標準仕様編」　「10.8.4　CALL文」

25.1.5　特殊レジスタ

(1)　プログラム間連絡用特殊レジスタ

(a)　RETURN-CODE

システムまたは呼び出し元プログラムへ復帰情報を返したいときには，プログラムの終了の実行に先立って特殊レジスタのRETURN-CODE（復帰コード）に情報を設定しておく。

RETURN-CODEはPICTURE句でS9(9)と記述されている特殊レジスタの名前で，その用途（USAGE）は2進（BINARY）である。

このシステムは，RETURN-CODEに初期値ゼロを設定する。ゼロは，正常終了時の復帰コードを意味する。

(2)　整列併合用特殊レジスタ

(a)　SORT-RETURN

SORT-RETURN（整列併合終了情報）は，PICTURE句でS9(4)と述されている特殊レジスタの名前で，その用途（USAGE）は2進（BINARY）である。

SORT-RETURNレジスタは，利用者が強制的に整列併合操作を終了させるときに使用できる。入力手続きまたは出力手続き中でこのレジスタに値16を設定すると，次のRELEASE文またはRETURN文の実行の後，整列併合操作は終了する。

(b)　SORT-CORE-SIZE

SORT-CORE-SIZE（整列併合用記憶領域のサイズ）は，PICTURE句でS9(8)と記述されている特殊レジスタの名前で，その用途（USAGE）は2進（BINARY）である。

SORT-CORE-SIZEレジスタは，利用者が作業用メモリのサイズを指定する場合に使用できる。整列処理実行前にこのレジスタに値を設定すると，整列処理開始時にこの値を用いて作業用メモリの確保をする。

(3)　LABEL-RETURN特殊レジスタ

LABEL-RETURN特殊レジスタは，PICTURE句でX(1)と記述されている特殊レジスタの名前であり，最外側のプログラムおよび利用者定義関数に対して一つ必ず作成される。

LABEL-RETURN特殊レジスタは大域属性を持つ静的データである。

LABEL-RETURN特殊レジスタは本来ユーザラベルを処理するために使用するが，このシステムでは覚え書きとみなす。

25.1.6　プログラム名，クラス名，インタフェース名，メソッド名および利用者定義関数名の日本語指定

プログラム名，クラス名，インタフェース名，メソッド名および利用者定義関数名に日本語が指定できる。

一般規則

プログラム名，クラス名，インタフェース名，メソッド名および利用者定義関数名に日本語を指定できる個所を次に示す。

（a）COBOL原始プログラム内でのプログラム名，クラス名，インタフェース名，メソッド名および利用者定義関数名

ただし，-UniObjGenオプションを指定した場合，プログラム名およびメソッド名にUTF-8で多バイトとなる文字が含まれてはならない。

また，-UniObjGenオプションの指定が前提であるLinux COBOL2002では，プログラム名，クラス名，インタフェース名，メソッド名，および利用者定義関数名にUTF-8で多バイトとなる文字が含まれてはならない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

（b）ccbl2002コマンドラインでの-SimMainプログラム名／-SimSubプログラム名

（c）テストデバッガで指定するプログラム名

プログラム名に日本語を含んでいる場合，指定できるプログラム名の長さは31文字までである。31文字を超えた場合，31文字をプログラム名とみなす。

定数以外で指定するプログラム名中の全角文字には等価規則が適用される。

例を次に示す。

（例）

PROGRAM-ID. Pプログラム名Ａ０１.は，Pプログラム名A01とみなされる。

ただし，オプション指定によって，等価規則を適用しないこともできる。詳細については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」の-EquivRuleオプションを参照のこと。また，定数で指定するプログラム名には，等価規則は適用されない。

全角文字に，プログラム名の変換規則は適用されない。適用されるのは，半角文字だけである。例を次に示す。

（例）

CANCEL ’Ｐ文字＃文字￥文字＠文字−＃￥＠−’は，'P文字#文字¥文字@文字-012_'となる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「7.8　プログラム名段落（PROGRAM-ID）」

「COBOL2002　言語　標準仕様編」　「10.8.4　CALL文」

「COBOL2002　言語　標準仕様編」　「10.8.5　CANCEL文」

25.2　環境部

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.　環境部（ENVIRONMENT DIVISION）」

25.2.1　プログラム間連絡機能の環境部

(1)　特殊名段落（SPECIAL-NAMES）

形式

機能

機能名を呼び名に関連づける。

構文規則

呼び名1の構文規則については，標準仕様編を参照のこと。

一般規則

機能名1は，CDECL，STDCALLまたはPASCALでなければならない。

CDECL指定は，C（cdecl）呼び出し規約を示す。

STDCALL指定は，standard call（stdcall）呼び出し規約を示す。

PASCAL指定は，PASCAL呼び出し規約を示す。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.2.6　特殊名段落（SPECIAL-NAMES）」

(2)　外部プログラム節（EXTERNAL-PROGRAM SECTION）

形式

機能

外部プログラム節は，外部プログラムの属性を指定する。

UNIX COBOL2002およびWindows(x64) COBOL2002では，外部プログラム節は覚え書きとする。

UNIX COBOL2002の場合，呼び出し規約は常に各プラットフォームが規定するABIに従う。Windows(x64) COBOL2002の場合，呼び出し規約は常にfastcallとなる。呼び出し規約については，マニュアル「COBOL2002　ユーザーズガイド」の呼び出し規約の説明を参照のこと。

構文規則

プログラム名1は，利用者定義語の規則に従う。

-UniObjGenオプションを指定した場合，プログラム名１にUTF-8で多バイトとなる文字が含まれてはならない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」のUnicode機能を参照のこと。

定数1は，プログラム名を引用符で囲み，英数字定数として指定する。

-UniObjGenオプションを指定した場合，定数1にUTF-8で多バイトとなる文字が含まれてはならない。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」のUnicode機能を参照のこと。

呼び名1は，特殊名段落でCDECL，STDCALLまたはPASCALに関連づけられていなければならない。ただし，PASCALを指定した場合，STDCALLと同様となる。

ほかのプログラムを含むプログラムの外部プログラム節中で明示的または暗黙的に指定した記述項は，含まれるプログラムそれぞれに適用される。

外部プログラム節は，別のプログラムに直接または間接に含まれるプログラムで指定してはならない。

一般規則

プログラム名1および定数1は，呼び名1の呼び出し規約を用いている。プログラム名1および定数1を指定したCALL文は，呼び名1が関連づけられた呼び出し規約に従う。

外部プログラム節に指定されていないプログラムの呼び出し規約は，Cの呼び出し規約に従う。

プログラム名1および定数1がCOBOLプログラムのときの規則を次に示す。

（a）COBOLプログラムがEXE形式のとき，呼び名1は特殊名段落でCDECLに関連づけられていなければならない。

（b）COBOLプログラムがDLL形式のとき，呼び名1は特殊名段落でCDECL，STDCALLまたはPASCALに関連づけられていなければならない。

ほかのプログラムを含むプログラムの外部プログラム節中で明示的または暗黙的に指定した記述項は，含まれるプログラムそれぞれに適用される。

25.2.2　ファイル管理記述項

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.3.4　ファイル管理記述項」

(1)　ASSIGN句のデータ名指定

形式

機能

ファイル名1のファイルを外部装置名1，データ名1または定数1によって参照される記憶媒体に関連づける。

構文規則

定数1は英数字定数でなければならない。また，表意定数であってはならない。外部装置名1の内容および定数1の意味や規則は作成者が定める。

データ名1は，プログラムの実行中にファイル名を指定するために用いる。

データ名1はファイル節，作業場所節，局所場所節もしくは連絡節で定義した英数字集団項目，英字項目，または動的長基本項目でない英数字項目でなければならない。また，データ記述項にOCCURS句があってはならず，データ記述項にOCCURS句のある項目に従属していてはならない。データ名1がそれら以外の定義である場合は，外部装置名とみなす。

データ名1に指定するデータ項目のサイズは，32,767バイトを超えてはならない。

(2)　ASSIGN句のMULTIPLE REEL／UNIT指定

形式

このシステムではASSIGN句のFOR MULTIPLE ｛REEL／UNIT｝指定を覚え書きとみなす。

(3)　FILE-LIMIT句

形式

このシステムではFILE-LIMIT句を覚え書きとみなす。

機能

FILE-LIMIT句は，大記憶媒体上のファイル領域の始めと終わりを指定する。

(4)　PASSWORD句

形式

ただし，索引ファイル，RDBファイルの場合は以下の形式となる。

（備考）

RECORD KEY句とALTERNATE RECORD KEY句は，書き方を明確にするために示してあるだけで，PASSWORD句の一部ではない。

このシステムではPASSWORD句を覚え書きとみなす。

機能

ファイルの作成，読み込みまたは更新する権利があるかどうかをシステムに問い合わせる。

(5)　RESERVE句のALTERNATE指定

形式

このシステムではNO指定およびALTERNATE指定を覚え書きとみなす。

機能

割り当てられる入出力領域の個数を指定できる。

一般規則

RESERVE句を書くと，割り当てられる入出力領域の個数は整数1の値となる。RESERVE句を書かない場合，割り当てられる入出力領域の個数は作成者が定める。

整数1は，符号のない正の整数で，その値は1〜255でなければならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.3.4(16)　RESERVE句」

(6)　TRACK-AREA句

形式

このシステムではTRACK-AREA句を覚え書きとみなす。

機能

乱アクセスの索引ファイルにレコードを追加するときの効率を高めたいときに指定する。

(7)　SELECT句のNOT OPTIONAL指定

形式

このシステムではNOT OPTIONAL指定を覚え書きとみなす。

機能

プログラムで使用するファイルに名前を付ける。

構文規則

NOT OPTIONAL（確定）句は，入出力両方で開くファイルだけに指定できる。

(8)　FILE STATUS句のデータ名2指定

形式

このシステムではFILE STATUS句のデータ名2指定を覚え書きとみなす。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.3.4(7)　FILE STATUS句」

25.2.3　入出力管理記述項

(1)　APPLY WRITE-ONLY句

形式

APPLY WRITE-ONLY句は，出力ファイルの書き出しの効率を高めるために指定する。ただし，このシステムでは覚え書きとみなす。

構文規則

複数個のAPPLY WRITE-ONLY句を指定してもよい。ただし，同じファイル名がAPPLY WRITE-ONLY句に複数回現れてはならない。

ファイル名は整列併合用ファイルの名前であってはならない。

ファイル名はブロッキングしてある可変長レコードから成る順ファイルでなければならない。

(2)　APPLY FORMS-NAME句

形式

機能

GDIモードおよびESC/Pモード印刷機能を使用するとき，APPLY FORMS-NAME句に，スプールに登録する印刷文書名称を設定する。

構文規則

データ名1は英字，英数字，固定長集団，日本語項目でなければならない。

データ名1の領域に，スプールに登録する印刷文書名称を設定する。

ファイル名1は順ファイルまたはテキストファイルでなければならない。

ファイル名1にはEXTERNAL句を指定したファイルを指定できない。

(3)　APPLY FILE-SHARE句

形式

機能

二つ以上のプログラムが同じファイルを共用することを指定する。この機能はMIOS7互換機能である。

構文規則

ファイル名1，ファイル名2などは，同じファイル名であってはならない。また，同じファイル名を二つ以上のAPPLY句に書いてはならない。

LOCK MODE句でMANUAL，またはEXCLUSIVEを指定したファイルをAPPLY FILE-SHARE句で指定してはならない。

整列用ファイルにAPPLY FILE-SHARE句は指定できない。

-IgnoreAPPLY,FILESHAREオプション指定時，覚え書きとみなす。

一般規則

APPLY FILE-SHARE句を指定すると，ファイル名1に対して，LOCK MODE IS AUTOMATIC ［WITH LOCK ON RECORD］を指定したものと仮定する。

注意事項

APPLY FILE-SHARE句は，MIOS7 COBOL85との互換のための日立拡張仕様である。

UNIX COBOL2002では，APPLY FILE-SHARE句は使用できない。ただし，-IgnoreAPPLY,FILESHAREオプション指定時に覚え書きとみなす。

(4)　その他のAPPLY句

形式

メインフレームのCOBOLで指定可能なAPPLY句を記述できる。形式については，マニュアル「VOS3 COBOL85 言語」を参照のこと。

ただし，このシステムではこれらを覚え書きとみなす。

機能

装置固有の処理を指定する。

(5)　RERUN句

形式

このシステムではRERUN句を覚え書きとみなす。

機能

整列併合操作中に，再開のための情報をとることを指定する。

構文規則

外部装置名は標準仕様編のRERUN句で示した規則に従う。ただし，外部装置名は，一般のRERUN句に書いた外部装置名と同じものであってもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「8.3.8　RERUN句」

25.3　データ部

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.　データ部（DATA DIVISION）」

25.3.1　ファイル記述項

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.3.4　ファイル記述項（file description entry）」

(1)　LABEL RECORD句のデータ名指定

形式

このシステムではLABEL RECORD データ名指定を覚え書きとみなす。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.38　LABEL RECORDS句」

「COBOL2002　言語　標準仕様編」　「10.8.30　OPEN文」

(2)　RECORDING MODE句

形式

機能

RECORDING MODE句は，ファイル中のレコードの形式を明示的に指定する。

一般規則

Fを書くと，固定長レコード形式を指定したことになる。

次の規則が適用される。

（a）ファイルのレコード記述中にDEPENDING指定のあるOCCURS句で記述した項目があってはならない。

（b）このファイル記述項の後に，複数個のレコード記述があるときには，各レコード記述から決まるレコードのサイズはすべて同じでなければならない。

（c）このファイルのRECORD句にVARYING指定があってはならない。

Vを書くと，可変長レコード形式を指定したことになる。

（a）形式Vでは，一つのレコードが完全に一つのブロックに含まれていれば，レコード記述がどのように組み合わされていてもよい。

Uを書くと，不定長レコード形式を指定したことになる。このシステムでは，Vと同じに扱う。

Sを書くと，スパンドレコード形式を指定したことになる。このシステムでは，Vと同じに扱う。

RECORDING MODE句を省略した場合にレコード形式を決定する規則は，次による。

・次のどれかが成り立つならば，形式Vが仮定される。

　・RECORD IS VARYING句が指定されている。

　・DEPENDING指定のあるOCCURS句を含むレコード記述がある。

　・サイズの異なるレコードが記述されている。

・前項の三つの項目に該当しないならば，形式Fが仮定される。

25.3.2　データ記述項

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.13　データ記述項（data description entry）」

(1)　OCCURS句（可変長項目の複数回記述）

形式

機能

1レコード中にDEPENDING ON指定のあるOCCURS句を複数回記述できる。

構文規則

可変長項目，すなわち可変反復データ項目を含む集団項目の記述項にOCCURS句を指定してもよい。

レコード記述中に，DEPENDING ON指定のあるOCCURS句を書いたデータ項目の後の文字位置を占めるデータ項目を記述してもよい。

可変部分（すなわち，可変反復データ項目以降の文字位置）に定義されたデータ項目を，次の個所に指定してはならない。

（a）OCCURS句のKEY IS指定

（b）OCCURS句のDEPENDING ON指定

（c）RECORD句のDEPENDING ON指定

（d）RECORD KEY句およびALTERNATE RECORD KEY句

（e）MERGE文のKEY指定

（f）FILE STATUS句

（g）RELATIVE KEY句

（例）

       01 TBL.
         02 E OCCURS 10 DESCENDING B INDEXED I.
           03 A PIC X OCCURS 10 TO 100 DEPENDING J
                                     INDEXED K.
           03  B  PIC  9(5).

キーが可変部分よりも後にあるので誤りだが，このシステムでは，エラーとしない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.51　OCCURS句」

(2)　PICTURE記号（'G'）

一般規則

このシステムでは，PICTURE文字列中の'G'と'N'は同じとみなす。ただし，CURRENCY SIGN句の文字列に'G'を許し，その場合，'G'を通貨記号とみなす。

'G'と'N'は混在して使用できない。ただし，このシステムではエラーとならない。

（a）同一のソース単位内にPICTURE記号'G'の項目と'N'の項目が混在してもよい。

（b）同一のPICTURE文字列内に，'G'と'N'が混在してもよい。

ただしCURRENCY SIGN句に'G'を指定した場合はこの限りでなく，'G'は通貨編集用記号とみなされる。

日本語項目を定める場合の規則を次に示す。

（a）PICTURE句の文字列は，文字'N'または'G'だけから成る。

（b）項目の内容は，標準データ形式で表したとき，一つ以上の拡張コードの文字でなければならない。

日本語編集項目を定める場合の規則を次に示す。

（a）PICTURE句の文字列は，文字'N'，'G'または'B'の組み合わせから成り，'N'，'G'または'B'をそれぞれ少なくとも一つずつ含まなければならない。

（b）項目の内容は，標準データ形式で表したとき，拡張コードの二つ以上の文字でなければならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.54　PICTURE句」

(3)　SYNCHRONIZED句を集団項目に指定

SYNCHRONIZED句を集団項目に指定してもよい。このときは，その集団に含まれるすべての基本項目に，SYNCHRONIZED句を指定したのと同じとみなす。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.80　SYNCHRONIZED句」

(4)　78定数名の記述

形式

機能

定数名を指定するのに用いる。

(5)　定数名でのVALUE句の規則

定数名記述項には，必ずVALUE句を書かなければならない。この記述項に書けるのはVALUE句と定数名だけとする。

定数名は参照されたとき，VALUE句で指定された定数に置き換える。データ部中で参照するには，定数名は参照する前に定義されていなければならない。

(6)　USAGE IS POINTER句

形式

一般規則

POINTERは，ポインタ項目であることを指定する。

このシステムでは，ポインタ項目とアドレスデータ項目は同じとみなす。

ポインタ項目と記載した個所にはアドレスデータ項目が指定できる。

また，アドレスデータ項目と記載した個所にはポインタ項目が指定できる。

(7)　USAGE COMP-5を指定した項目に設定できる初期値（VALUE句の値）の拡張

USAGE COMP-5を指定した項目に設定できる初期値は，USAGE COMPを指定した項目に設定できる初期値より拡張している。

PICTURE句で指定したけた数と，VALUE句に指定できる値との対応を次に示す。

PICTURE句で指定したけた数

VALUE句に指定できる値

1〜4けた

-2¹⁵〜2¹⁵-1

5〜9けた

-2³¹〜2³¹-1

10〜18けた

-999,999,999,999,999,999〜999,999,999,999,999,999

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.54　PICTURE句」

「COBOL2002　言語　標準仕様編」　「9.16.88　VALUE句」

(8)　EXTERNAL句のDYNAMIC指定

形式

機能

外部属性を持つデータ項目の領域を，プログラムの実行時に動的にメモリに割り当てる。

構文規則

EXTERNAL句のDYNAMIC指定は，作業場所節のレコード記述項だけに記述できる。

EXTERNAL句のDYNAMIC指定は，共用ライブラリまたはDLLを作成する場合でも記述できる。共用ライブラリについては，マニュアル「COBOL2002　使用の手引　手引編」の実行可能ファイルと共用ライブラリの作成を参照のこと。DLLの作成方法については，マニュアル「COBOL2002　ユーザーズガイド」の実行可能ファイルとDLLの作成を参照のこと。

一般規則

一つの実行単位の中で，二つ以上のプログラムが同じデータレコードを記述する場合，DYNAMIC指定のない外部データレコードが混在してはならない。

DYNAMIC指定をしたデータ領域は，Cプログラムから参照，更新できない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.25　EXTERNAL句」

25.4　手続き部

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

25.4.1　算術文の作用対象のけた数

各作用対象のけた数の合計は，想定した位取りも含めて30けた以下であればよい。

25.4.2　字類条件の内部10進項目指定

作用対象が数字項目のとき，その用途（USAGE）は内部10進（PACKED-DECIMAL，COMP-3）であってもよい。

25.4.3　ポインタ項目の参照

ポインタ項目の参照は次の場所に許される。

ポインタ比較の条件式中の左辺または右辺。

ポインタを設定するSET文の送り出し側作用対象または受け取り側作用対象。

CALL文BY VALUE指定。

(1)　ポインタ比較の条件式

形式

機能

二つの項目のUSAGE（用途）が，明示的または暗黙的にPOINTERであれば比較できる。

この場合の演算子は，EQUALとNOT EQUALだけ使用できる。

構文規則

一意名1と一意名3は，連絡節，局所場所節または作業場所節で定義した01〜49，66または77レベルのデータ項目である。次に示すものは指定できない。

関数一意名とオブジェクトプロパティ

ファクトリ定義やインスタンス定義で定義されたデータ項目

オブジェクト参照や，強く型付けされた集団項目に従属する基本項目

一意名2と一意名4は，ポインタ項目でなければならない。

比較条件対象が両方とも表意定数NULLの場合，比較はしない。

一意名1と一意名3がブール項目のときは，バイト境界に調整しておかなければならない。

一般規則

二つのアドレスが同じ場合だけ等しい結果となる。それ以外の場合は等しくない。

(2)　SET文

形式

機能

データ項目のアドレスをポインタ変数に割り当てるのに使用する。

構文規則

一意名1は，連絡節で定義した01レベルまたは77レベルの項目である。一意名1には，強く型付けされた集団項目を指定できない。

一意名1は，可変長項目であってはならない。

一意名1は，部分参照してはならない。

一意名3は，連絡節，局所場所節または作業場所節で定義した01〜49，66または77レベルの項目である。次に示すものは指定できない。

関数一意名やオブジェクトプロパティ

ファクトリ定義やインスタンス定義で定義されたデータ項目

オブジェクト参照データ項目や，強く型付けされた集団項目に従属する基本項目

強く型付けされた集団項目

一意名2と一意名4は，ポインタ項目である。

一意名3がブール項目のときは，バイト境界に調整しておかなければならない。

一般規則

TO指定中のポインタ項目のアドレスが，一意名2で表されたポインタ項目へ移される。一意名1がある場合，これに従属する任意の参照はTO指定が識別するアドレスを持つ項目を対象として実行される。TO指定が識別するアドレスは，一意名4に含まれるアドレスまたは一意名3のアドレスである。TO指定にNULLを書くとプログラムのどんなデータも指さないポインタとみなされる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.43　SET文」

25.4.4　ACCEPT文の拡張

形式

構文規則

-NumAcceptオプションを指定したとき，一意名は用途が表示用でない数字項目でもよい。

一般規則

FROM指定に機能名（SYSIN，SYSIPT，CONSOLE，SYSSTD）を指定してもよい。それぞれの機能に関連づけた呼び名1を指定したのと同じ意味になる。

転送データは受け取り側データ項目の左端から格納される。受け取り側データ項目の文字数が転送データの文字数より大きい場合，残りの部分は空白文字でクリアされる。

受け取り側データ項目が数字または数字編集項目の場合を次に示す。

（a）受け取り側データ項目の文字数または受け取り側データ項目の残り部分の文字数が転送データの文字数より大きいとき，転送データは受け取り側データ項目または受け取り側データ項目の残りの部分に，編集文字に合わせて右詰めされ，SYSSTDの場合だけ続いて残りの部分のデータが要求される。

残りの部分を空白文字でクリアする。

（b）受け取り側データ項目の文字数または受け取り側データ項目の残り部分の文字数が転送データの文字数より小さいとき，編集文字に合わせて転送データの左側の部分だけが受け取り側データ項目または受け取り側データ項目の残りの部分に格納される。転送データの右側の残り部分は無視される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.1　ACCEPT文」

25.4.5　CALL文の引数指定の拡張

形式（書き方1，書き方2共に共通部分だけ）

構文規則

定数3，定数4は，英数字定数，小数点のない9けた以内の数字定数，浮動小数点数字定数，および表意定数ZEROでなければならない。ただし，定数4には表意定数NULLも指定できる。

ADDRESS OFに指定する一意名5がブール項目のときは，バイト境界に調整しておかなければならない。

ADDRESS OF 一意名やLENGTH OF 一意名は，ファイル節，作業場所節，局所場所節，連絡節または画面節（WINDOW SECTION）で定義したデータ項目でなくてはならない。したがって，関数一意名やオブジェクトプロパティであってはならない。また，ADDRESS OFの一意名は，ファクトリ定義やインスタンス定義で定義されたデータ項目であってはならない。

ADDRESS OF 一意名は，オブジェクト参照データ項目であってはならない。また，強く型付けされた集団項目に従属する基本項目を指すものであってはならない。

ADDRESS OF 一意名は，強く型付けされた集団項目であってはならない。

一般規則

ADDRESS OF 一意名5を指定している場合，呼び出し先プログラムに渡される値は，一意名5のアドレスである。呼び出し先プログラムは，［BY REFERENCE］ データ名で引数を受け取る。データ名の属性は，アドレスデータ項目でなければならない。

LENGTH OF 一意名6を指定している場合，呼び出し先プログラムに渡される値は，一意名6の長さである。呼び出し先プログラムは，［BY REFERENCE］／BY VALUE データ名で引数を受け取る。データ名の属性は， 4バイト（64bit版 COBOL2002の場合は，8バイト）の2進項目でなければならない。

定数3を指定している場合，呼び出し先プログラムに渡される値は，定数値である。呼び出し先プログラムは，［BY REFERENCE］データ名で引数を受け取る。データ名の属性は，指定された定数の種類によって異なる。受け取るデータ名の属性を次に示す。

（a）英数字定数：指定した定数と同じ長さの項目

（b）数字定数／表意定数ZERO：4バイトの2進項目

（c）浮動小数点定数：USAGE COMP-2の項目（倍精度内部浮動小数点数字項目）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.4　CALL文」

25.4.6　CALL文（下線付き定数の呼び出し）

この機能は，-UscoreStartオプションが指定されたときに有効になる。

形式（書き方1，書き方2共に共通部分だけ）

構文規則

定数1の先頭から'_'または'_ _'（下線2個）を除いた部分をプログラム名とする。

定数1は'_'または'_ _'（下線2個）だけから成ってはならない。

上記以外の規則については標準仕様に従う。

一般規則

定数1から'_'または'_ _'（下線2個）を除いたプログラム名で呼び出し先プログラムを呼び出す。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.4　CALL文」

25.4.7　DISPLAY文（機能名を直接指定）

形式

UPON指定に機能名（CONSOLE，SYSPUNCH，SYSPCH，SYSOUT，SYSLST）を指定してもよい。それぞれの機能名に関連づけた呼び名を指定したのと同じ意味になる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.12　DISPLAY文」

25.4.8　ENTRY文

形式

機能

呼び出し先プログラムの入口点を指定する。

構文規則

原始プログラムが入れ子になっているとき，ENTRY文を書いてはならない。

定数は，プログラム名の構成規則に従った英数字定数でなければならない。プログラム名の構成規則は，マニュアル「COBOL2002　言語　標準仕様編」　「7.8　プログラム名段落（PROGRAM-ID）」を参照のこと。

定数は，プログラム名段落で指定したプログラム名と同一であってはならない。

一つの実行単位を構成する幾つかのプログラムのプログラム名および入口名はそれぞれ一意でなければならない。

プログラムの手続き部見出しにRETURNING指定があるプログラムに，ENTRY文を書いてはならない。ENTRY文はプログラム定義にだけ指定できる。

一般規則

定数は，呼び出し先プログラムの入口点の名前を指定する。

呼び出すプログラムのCALL文で渡された制御は，呼び出し先プログラムの入口点がENTRY文で指定してあるとき，このENTRY文のすぐ後に続く文に移る。

USING指定は，呼び出し先プログラムを参照するデータ項目を指定する。規則は，マニュアル「COBOL2002　言語　標準仕様編」　「10.1.1　一般形式」を参照のこと。

（例）

（呼び出し元プログラム）

       DATA                       DIVISION.
                :
       WORKING-STORAGE            SECTION.
       01 A                       PIC X(2).
       01 B                       PIC 9(3).
       01 C.
         05 D                     PIC X.
         05 E                     PIC 9(5).
       01 F.
         05 G OCCURS 10 INDEXED H PIC X(4).
       PROCEDURE                  DIVISION.
                :
       U.   CALL 'SUB1'           USING B C.  …(1)
                :
       V.   CALL 'SUB2'           USING A F.  …(2)

（呼び出し先プログラム）

       DATA                       DIVISION.
                :
       LINKAGE                    SECTION.
       01 K                       PIC 9(3).
       01 L                       PIC X(2).
       01 M.
         05 N OCCURS 10 INDEXED O PIC X(4).
       01  P.
         05  Q                    PIC X.
         05  R                    PIC 9(5).
       PROCEDURE                  DIVISION.
                :
       X.   ENTRY 'SUB1'          USING K P.  …(3)
                :
       Y.   ENTRY 'SUB2'          USING L M.  …(4)

上の例で，(1)のCALL文を実行すると，制御は呼び出し先プログラムの入口点'SUB1'に移る(3)。呼び出し先プログラムの手続き部で連絡中のK，P，Q，Rを参照すると，それは呼び出し元プログラムのB，C，D，Eをそれぞれ参照するのと同じ効果を持つ。

(2)のCALL文を実行すると，制御は呼び出し先プログラムの入口点'SUB2'に移る(4)。このとき，呼び出し先プログラムの手続き部で連絡中のL，M，Nを参照すると，それは呼び出し元プログラムのA，F，Gをそれぞれ参照するのと同じ効果を持つ。ただし，連絡節中の指標名Oが指す指標は，呼び出すプログラム中の指標名Hが指す指標名と同じではない。

プログラム中で，書いたとおり上から下への順序でまたはGO TO文などでENTRY文に制御が移った場合，何も行われずにENTRY文の次の文に制御が移る。

呼び出し先プログラムの入口点が手続き部分の先頭のときは，ENTRY文を指定する必要はない。

ENTRY名称を指定したCANCEL文を実行しても，何もしない。制御は，明示的なCANCEL文に続く次の実行文に移る。

ENTRY文の記述があるソースファイルに，-Mainオプションを指定しても，ENTRYに制御は渡らない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「7.8　プログラム名段落（PROGRAM-ID）」

「COBOL2002　言語　標準仕様編」　「10.1.1　一般形式」

25.4.9　EXAMINE文とTALLY特殊レジスタ

形式

機能

EXAMINE文は，一つのデータ項目中のある文字の出現回数を調べたり，ある文字をほかの文字で置き換えたりする。

構文規則

一意名1の用途は，表示用（DISPLAY）でなければならない。ブール項目は指定できない。

定数（定数1〜定数4）は，1文字から成る英数字定数か，符号のない1けたの整数かまたはALL定数以外の表意定数でなければならない。

一般規則

けた調べは，一意名1のデータ項目の最左端のけたから右の方へ順に行われる。

TALLYING指定とTALLY特殊レジスタ，TALLYING指定は，ある文字の出現回数をTALLY特殊レジスタに入れることを指定する。出現回数の指定方法は次のとおりである。

（a）ALL（全部）指定

すべての定数1の出現回数が数えられる。

（例）

Aの内容がABACADAEのときEXAMINE A TALLYING ALL 'A'を実行すると，TALLYINGには4が入る。

（b）LEADING（先行）指定

定数1以外の文字が初めて出てくるまで，定数1の出現回数が数えられる。もし，データ項目の内容がすべて定数1ならば，最右端のけたまで数え上げが行われる。

（例）

Bの内容が00009800のときEXAMINE B TALLYING LEADING 0を実行すると，TALLYには4が入る。

（c）UNTIL FIRST（最初まで）指定

定数1が初めて出てくるまで，定数1以外の文字出現回数が数えられる。もし，データ項目中に一つも定数1がなければ最右端のけたまで数え上げが行われる。

（例）

Cの内容が+3456.78のとき，EXAMINE C TALLYING UNTIL FIRST '.'を実行すると，TALLYには5が入る。

REPLACING指定

ある文字をほかの文字で置き換えることを指定する。置き換えの指定方法は次のとおりである。

（a）ALL（全部）指定

定数1や定数3は，すべて定数2や定数4で置き換えられる。

（例）

Aの内容が△△34567△のときEXAMINE A REPLACING ALL SPACE BY ZEROを実行すると，Aの内容は00345670となる。

（b）LEADING（先行）指定

定数1や定数3以外の文字が出てくるまで，定数1や定数3は，定数2や定数4で置き換えられる。もし，データ項目の内容がすべて定数1や定数3ならば，最右端のけたまで置き換えが行われる。

（例）

Bの内容が***ABC**のときEXAMINE B REPLACING LEADING '*' BY 'Z'を実行すると，Bの内容はZZZABC**となる。

（c）UNTIL FIRST（最初まで）指定

定数1や定数3が出てくるまで，定数1や定数3以外の文字は，定数2や定数4で置き換えられる。もし，データ項目中に一つも定数1や定数3がなければ，最右端のけたまで置き換えが行われる。

（例）

Cの内容がXYZAXYZAのときEXAMINE C REPLACING UNTIL FIRST 'A' BY 'A'を実行すると，Cの内容はAAAAXYZAとなる。

（d）FIRST（最初の）指定

最初に出てきた定数1や定数3は，定数2や定数4で置き換えられる。

（例）

Dの内容がABCABCABのときEXAMINE D REPLACING FIRST 'C' BY 'X'を実行すると，Dの内容はABXABCABとなる。

一意名が数字項目のときのけた調べおよび置き換えは次の規則に従う。

（a）最右端（SIGN LEADING句の指定があるときは最左端）のけたに符号が重ね合わせられていても，この符号は無視される。

（例）

DATA-1の内容は次のとおりとする。

最右端のけたに重ね合わされている符号は無視され，このけたは1とみなされる。

EXAMINE DATA-1 TALLYING ALL 1を実行すると，TALLYには，1の個数3が入る。

（b）REPLACINGによる置き換えを行っても，重ね合わせられている符号は変わらない。

（例）

DATA-1の内容は次のとおりとする。

EXAMINE DATA-1 REPLACING ALL 1 BY 2を実行すると，DATA-1の内容は次のようになる。

（備考）

EXAMINE文は，第1次規格にあったが，第2次規格から削除された。代わりに，より一般的で強力なINSPECT文が取り入れられた。図25‒1　EXAMINE文とINSPECT文の対応にEXAMINE文と同じデータ操作をするINSPECT文の書き方を示す。

TALLY特殊レジスタ

TALLY特殊レジスタの初期値はゼロである。整数の基本項目が使えるところならばどこでも同じように使用できる。

図25‒1　EXAMINE文とINSPECT文の対応

TALLY特殊レジスタはプログラム中にEXAMINE文を書いたとき，このシステムがプログラムごとに1個だけ生成する特殊レジスタである。

TALLY特殊レジスタのサイズと用途は，PICTURE 9(5) USAGE COMPである。

25.4.10　GO TO MORE-LABELS文

形式

構文規則

GO TO MORE-LABELS文は，プログラムまたは利用者定義関数のUSE LABEL文の手続き中でだけ使用できる。これ以外の個所で使用してはならない。

一般規則

GO TO MORE-LABELS文は，本来複数のユーザラベルを処理するために使用する。

GO TO MORE-LABELS文を実行すると，USE手続きの最初の文に制御を戻す。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.21　GO TO文」

25.4.11　MOVE文（日付と時刻用）

形式

書き方1

書き方2

機能

利用者がプログラムを翻訳した時点の日付と時刻を実行時に得たいときには，WHEN-COMPILEDを使う（書き方1）。

MOVE文の送り出し側作用対象に，特別な予約語CURRENT-DATEまたはTIME-OF-DAYと書いて，今日の日付または現在の時刻を得ることができる（書き方2）。

一般規則

WHEN-COMPILEDは，暗黙に長さ20文字の英数字項目としてこのシステムが確保した記憶場所の名前であり，MOVE文の送り出し側作用対象としてだけ使うことができる。項類は英数字である。この英数字項目の内容は，YY-MM-DD△△HH:MM:SS△△（年-月-日△△時:分:秒△△）である。4けたの西暦を取得する場合は，標準仕様編のWHEN-COMPILED関数を参照のこと。

（例）

翻訳時の日付と時刻を2000年1月1日15時40分32秒とすると，WHEN-COMPILEDには，次のように入っている。

00-01-01 15:40:32

CURRENT-DATEは，暗黙に長さ8文字の英数字項目としてこのシステムが確保する記憶場所の名前であり，MOVE文の送り出し側作用対象としてだけ使うことができる。項類は英数字である。プログラム実行中，このMOVE文を実行した時点の日付が，「MM/DD/YY（月/日/年）」の形式で格納されている。4けたの西暦を取得する場合は，標準仕様編のCURRENT-DATE関数を参照のこと。

（例）

今日の日付を2000年1月1日とすると，CURRENT-DATEには，01/01/00が格納されている。

TIME-OF-DAYは，暗黙に符号のない6けたの整数の数字項目としてこのシステムが確保する記憶場所であり，MOVE文の送り出し側作用対象として使うことができる。項類は数字である。プログラム実行中のこのMOVE文を実行した時点の時刻が「HHMMSS（時，分，秒）」の形式で格納されている。

（例）

現在の時刻を19時8分12秒とすると，TIME-OF-DAYには，190812が格納される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.28　MOVE文」

「COBOL2002　言語　標準仕様編」　「11.18　CURRENT-DATE関数」

「COBOL2002　言語　標準仕様編」　「11.72　WHEN-COMPILED関数」

25.4.12　CORRESPONDING指定のあるMOVE文（受け取り側作用対象を複数指定）

形式

一般規則

CORRESPONDING指定のあるMOVE文には，受け取り側作用対象を複数個記述してもよい。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.6.5　CORRESPONDING指定」

「COBOL2002　言語　標準仕様編」　「10.8.28　MOVE文」

25.4.13　RELEASE文（定数1指定）

形式

一般規則

FROM指定のあるRELEASE文の実行結果は，次に示す文をこの順で実行したものと等しい。

（i）MOVE文の規則に従った文:

（ii）それに続くFROM指定のない同じRELEASE文

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.35　RELEASE文」

25.4.14　REWRITE文（定数1指定）

形式

一般規則

FROM指定のあるREWRITE文の実行結果は，次に示す文をこの順で実行したものと等しい。

（i）MOVE文の規則に従った文:

（ii）FROM指定のない同じREWRITE文

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.39　REWRITE文」

25.4.15　PERFORM文の実行範囲の出口の共有

一つのPERFORM文の実行範囲の中に，PERFORM文があり，含まれているPERFORM文の実行範囲がはじめのPERFORM文の論理的な実行範囲の内側に完全に含まれている場合，共通の出口を持っていてもよい。

（例）

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.31　PERFORM文」

25.4.16　TRANSFORM文

形式

機能

TRANSFORM文は，データ項目中のある文字をほかの文字に変換する。

（備考）

TRANSFORM文は，COBOL規格にない。

構文規則

一意名1は，項目が英字，英数字，数字（外部10進だけ），英数字編集または数字編集の基本項目かまたは強く型付けされていない集団項目を参照するものでなければならない。

一意名2と一意名3は，項類が英字または英数字の基本項目かまたはサイズが可変でない集団項目を参照するものでなければならない。そのサイズは256文字以下でなければならない。

定数2と定数3は，英数字定数かまたはALL定数以外の表意定数でなければならない。定数2や定数3に表意定数を指定したときには，そのサイズは1文字とみなされる。

一意名3のデータ項目や定数3のサイズは一意名2のデータ項目や定数2のサイズと同じでなければならない。そうでなければ，定数3のサイズは1文字でなければならない。

一意名1，一意名2，一意名3は，部分参照してはならない。

一般規則

定数3のサイズが1文字のとき，一意名1のデータ項目中の文字で，定数2または一意名2のデータ項目中に含まれる文字と等しいものは，すべて定数3の表す1文字に変換される。

（例）

           TRANSFORM A FROM 'ABCDEFGHI' TO '*'
           TRANSFORM B FROM SPACE TO ZERO.

一意名A中の文字A〜Iのすべてが一つの文字「*」に変換される。また，一意名B中の文字「空白」はすべて文字「ゼロ」に変換される。

一般規則1以外のとき，一意名1のデータ項目中の文字で，定数2または一意名2のデータ項目中に含まれる文字と等しいものは，定数3または一意名3のデータ項目中の対応する文字位置にある文字に変換される。

（例）

           TRANSFORM C FROM '123456789' TO 'ABCDEFGHI'.

一意名Cの文字「1」は文字「A」に，文字「2」は文字「B」に，…文字「9」は文字「I」にそれぞれ変換される。

一意名2のデータ項目や定数2の中に，同じ文字が重複して存在するときのTRANSFORM文の実行結果は保証しない。

25.4.17　USE文（GIVING指定）

形式

このシステムではUSE文のGIVING指定を覚え書きとみなす。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.53　USE文」

25.4.18　USE LABEL文

形式

構文規則

USE文は，手続き部の宣言部分の節の見出しにすぐ続けて書き，終止符と空白で止める。この後に処理手続きを定義する一つ以上の段落を書く。

USE LABELは，プログラムまたは利用者定義関数の中でだけ使用できる。

一般規則

このシステムでは，入出力文からUSE LABEL文に制御が渡ることはない。

USE LABEL文に制御が渡るのは，PERFORM文で呼び出した場合だけである。また，GO TO MORE-LABELS文で制御を戻せる。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.53　USE文」

25.4.19　WRITE文（印刷制御文字の直接指定，区域外書き出し）

形式

WRITE文の拡張仕様は，次の二つの書き方がある。

書き方1

書き方2

機能

WRITE文は，出力ファイルや拡張ファイルにレコードを書き出す。

このシステムでは，次の拡張仕様がある。

印刷ページ中の各レコードの行番号を決めるために，印刷制御文字を直接指定できる（書き方1）。

（備考）

このシステムでは，VOS3 COBOL85とは異なり，常にAFTER ADVANCING 1 LINEが指定されたものと同じ行送りをする。

記憶媒体上の順ファイルへレコードを書き出す場合，利用者は，区域外書き出しが発生したとき行う処理を指定できる（書き方2）。

構文規則

一意名2は，長さ1文字の英数字基本項目の名前でなければならない。

整数2は，符号のない1けたの整数で0，1，2，3のどれかでなければならない。

書き方1のWRITE文は，順ファイルに対してだけ指定できる。

書き方2のWRITE文を順ファイルに対して指定するとき，NOT INVALID KEY指定を書いてはならない。

LINAGE句を指定したファイルに，書き方1および書き方2のWRITE文を使用してはならない。

POSITIONING指定のあるWRITE文を使用する場合，そのファイルに対するすべてのWRITE文にPOSITIONING指定を書かなければならない。

一般規則

POSITIONING指定のあるWRITE文は，一意名2または整数2の指定に従って行送りした後，レコードを印刷する。

（備考）

このシステムでは，AFTER ADVANCING 1 LINEが指定されたものと同じ行送りを行う。

AT END-OF-PAGE指定，NOT AT END-OF-PAGE指定，END-OF-PAGE指定は，ページの終わりを検出したときの利用者手続きを指定するときに使う。

このファイルは，プリンタファイルでなければならない。

（備考）

このシステムでは，ページの終わりを検出できないので，無条件文1が実行されることはない。

INVALID KEY指定

記憶媒体上の順ファイルにファイルの範囲を超えてレコードの書き出しを試みたとき区域外条件が発生し，INVALID KEY指定があれば，その無条件文に制御が移る。

INVALID KEY指定がないと，区域外条件が発生した場合，利用者誤り処理手続きの指定があれば，手続きを実行する。利用者誤り処理手続きの指定がなく，FILE STATUS句の指定がない場合は，異常終了する。

INVALID KEYは大記憶ファイルのWRITE文に指定しなければならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.55　WRITE文」

25.4.20　WRITE文（定数1指定）

形式

一般規則

FROM指定のあるWRITE文の実行結果は，次に示す文をこの順で実行したものと等しい。

MOVE文の規則に従った文:

FROM指定のない同じWRITE文

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.8.55　WRITE文」

25.5　組み込み関数

ここでは，COBOLプログラムの文字列を文字単位に操作したり，文字エンコーディングを変更したりする組み込み関数について説明する。

なお，ここで説明する組み込み関数には，Unicode機能，日本語EUC環境を前提とするものがある。

Unicode機能および日本語EUC環境については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」を参照のこと。

#

用途

組み込み関数名

機能概要

参照先

1

文字列の取り出し

SUBSTRING

字類が英字，英数字または日本語のデータ項目から部分文字列を返す。

25.5.7　SUBSTRING関数

2

文字数の取得

COUNT-CHAR

字類が英字，英数字または日本語のデータ項目の文字数を返す。

25.5.3　COUNT-CHAR関数

3

文字位置の個数の取得

LENGTH-OF-SUBSTRING

字類が英字，英数字または日本語のデータ項目の部分文字列の文字位置の個数を返す。

25.5.5　LENGTH-OF-SUBSTRING関数

4

コード変換

DISPLAY-OF※1

字類が日本語のデータ項目中のUTF-16の文字列をUTF-8の文字列に変換して返す。

25.5.4　DISPLAY-OF関数

5

NATIONAL-OF※1

字類が英数字のデータ項目中のUTF-8の文字列をUTF-16の文字列に変換して返す。

25.5.6　NATIONAL-OF関数

6

CONVERT-CODE※2

字類が英字または英数字のデータ項目中の文字列のエンコーディングをキーワードに従って変換した文字列を返す。

25.5.2　CONVERT-CODE関数

注※1

日本語EUC環境では，使用できない。

注※2

Windows COBOL2002およびAIX COBOL2002では，この関数は使用できない。

25.5.1　用語の定義（日本語EUC）

日本語EUCに対応した組み込み関数を次に示す。

COUNT-CHAR

LENGTH-OF-SUBSTRING

SUBSTRING

これらの日本語EUCに対応した組み込み関数の説明で使用する用語について次の表に示す。なお，Unicode機能で使用する用語については，「23.1　用語の定義」を参照のこと。

#

用語

説明

1

日本語EUC

UNIX系OSで標準的に使われる文字コードの1つ。ASCII文字を1バイト，半角かたかなを2バイト，日本語文字を2バイトや3バイトで表現する。

2

文字位置の個数

英数字項目または日本語項目のPICTURE句に指定した文字位置の個数。

例)

  01 DATA1 PIC X(3).
    *>文字位置の個数は3
  01 DATA2 PIC N(5).
    *>文字位置の個数は5

3

文字数

見た目の文字数。

4

見た目幅

半角文字を1，全角文字を2とした見た目の幅。

25.5.2　CONVERT-CODE関数

CONVERT-CODE関数は，引数に指定された文字列のエンコーディングをキーワードに従って変換した文字列を返す。この関数の型は，英数字である。

Windows COBOL2002およびAIX COBOL2002では，CONVERT-CODE関数は使用できない。

(1)　一般形式

(2)　引数

引数1は，字類が英字か英数字でなくてはならない。

引数1に可変長集団項目を指定してはならない。また，引数1を部分参照してはならない。

引数1に動的長基本項目を指定してはならない。

引数1に続く語がSJIS-TO-UTF8の場合，引数1の文字コードはSJISでなければならない。また，引数1に続く語がUTF8-TO-SJISの場合，引数1の文字コードはUTF-8でなければならない。

引数1に関数一意名およびオブジェクトプロパティは指定できない。

引数1が英数字集団項目のとき，その従属項目の字類は英字，または英数字でなければならない。

(3)　関数値

引数1に続く語がSJIS-TO-UTF8の場合，引数1のエンコーディングをシフトJISからUTF-8に変換した文字列を返す。また，引数1に続く語がUTF8-TO-SJISの場合，引数1のエンコーディングをUTF-8からシフトJISに変換した文字列を返す。

変換前の文字に対応する変換後の文字を持たない文字が引数1中にある場合，文字変換は行わないで，EC-ARGUMENT-IMP例外条件が成立する。

ただし，-FunctionECSup,CodeConvErrオプションが有効なときは，EC-ARGUMENT-IMP例外条件は成立しない。-FunctionECSup,CodeConvErrオプションについては，マニュアル「COBOL2002　使用の手引　手引編」のコンパイラオプションを参照のこと。

関数値の長さは，変換後の文字数を保持するのに必要とする，用途がDISPLAYの文字位置の個数となる。

関数値を転記する受け取り側作用対象に複数の項目を指定してはならない。

関数値の表現形式は，英数字形式となる。

25.5.3　COUNT-CHAR関数

COUNT-CHAR関数は，引数1に指定された文字列の文字数を返す。この関数の型は，整数とする。

なお，この組み込み関数は，次のどちらかの場合に使用できる。

-UniObjGenオプションを指定してコンパイル

日本語EUC環境下でコンパイル

-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

日本語EUC環境については，マニュアル「COBOL2002　使用の手引　手引編」のEUCコードを使用したCOBOLプログラムを参照のこと。

(1)　一般形式

(2)　引数

引数1は，字類が英字か英数字，または日本語でなければならない。

引数1に可変長集団項目を指定してはならない。

引数1に動的長基本項目を指定してはならない。

引数1の文字コードは，次のどちらかでなければならない。

字類

文字コード

Unicode機能

日本語EUC環境

英字，英数字

UTF-8

日本語EUC

日本語

UTF-16

引数1が英数字集団項目のとき，その従属項目の字類は，英字または英数字でなければならない。

(3)　関数値

関数値は，次のとおりである。

（ア）WIDTHが指定されている場合

関数値は引数1の長さを見た目幅で表した整数となる。

（イ）WIDTHが指定されていない場合

関数値は引数1の長さを文字数で表した整数となる。

関数値の表現形式は，2進形式4バイト（64bit版COBOL2002では2進形式8バイト）となる。

(4)　使用例（Unicode機能）

(a)　シフトJISでの文字数の取得

シフトJISでは，バイト数，文字数，けた数の関係が決まっている。英数字項目は半角1文字を1バイトで1けた，日本語項目は全角1文字を2バイトで1けたである。そのため，文字数を意識したプログラミングは比較的に容易である。

例えば，次のように3けたの英数字項目に格納されている半角の文字数は3文字，3けたの日本語項目に格納されている文字数は3文字である。

   01 TEST-DATAX PIC X(10) VALUE 'ｱｲｳ'.
   *> 3文字
   01 TEST-DATAN PIC N(3) VALUE N'あいう'.
   *> 3文字

次のデータ項目の後ろ空白を除いた文字数を求める文の例を示す。

   01 TEST-DATA1 PIC X(10) VALUE 'ｱｲｳ'.

記述例

(b)　Unicodeでの文字数の取得

Unicodeの場合は，文字数とけた数の関係が定まらないため，けた数から文字数を容易に求めることができない。そこで，引数に指定されたUnicodeのデータ項目の文字数を返すCOUNT-CHAR関数を使用する。

COUNT-CHAR関数を使用して，次のUTF-8のデータ項目の後ろ空白を除いた文字数を求める文の例を示す。

   01 TEST-DATA1 PIC X(10) VALUE 'ｱｲｳ'.

記述例

(c)　Unicodeでの見た目幅の取得

シフトJISでは，英数字項目にLENGTH関数を適用すると，けた数が返る。英数字項目では1けたは半角1文字分となる。また，全角日本語は2けたを占めるため，半角2文字分となる。

Unicodeでは，COUNT-CHAR関数を英数字項目に適用し，引数のWIDTHを指定した場合，半角文字での見た目幅が返却される。COUNT-CHAR関数を使用することで，英数字項目の場合，シフトJISと同様に見た目幅で扱うことができるため，既存のシフトJISを前提としたプログラムからの移行が容易となる。

シフトJISの場合とUnicodeの場合とで，次のデータ項目の見た目幅を取得する文の例を示す。

   01 TEST-DATA1 PIC X(8) VALUE 'AあC'.
   *> "あ"は，見た目幅2

記述例

(5)　使用例（日本語EUC環境）

英数字項目に格納された半角文字の文字数を求める場合，シフトJISと日本語EUCでは，それぞれ次の例に示すコーディングとなる。

(a)　シフトJISでの半角文字の文字数および見た目幅の取得

シフトJISの場合，半角文字は1バイトの固定である。そのため，英数字項目に格納された文字列の文字数と見た目幅は等しくなり，LENGTH関数で容易に求められる。

(例)

       01 TEST-DATA1 PIC X(10) VALUE 'ｱｲｳ'. *> 3文字を格納
              :
           *> 半角文字の文字数および見た目幅を求める
           COMPUTE NUMOFCHAR =
                FUNCTION LENGTH(FUNCTION TRIM(TEST-DATA1 TRAILING)).
                *> 3が求まる

(b)　日本語EUCでの半角文字の文字数および見た目幅の取得

日本語EUCの場合，半角かたかなが1文字2バイトとなる。そのため，シフトJISと同じ方法では見た目幅も文字数も求められない。

日本語EUCでは，LENGTH関数の代わりにCOUNT-CHAR関数を使用することで文字数を求められる。

(例)

       01 TEST-DATA1 PIC X(10) VALUE 'ｱｲｳ'. *> 3文字を格納
              :
           *> 半角文字の文字数を求める
           COMPUTE NUMOFCHAR =
                FUNCTION COUNT-CHAR(FUNCTION TRIM(TEST-DATA1 TRAILING)).
                *> 3が求まる

25.5.4　DISPLAY-OF関数

DISPLAY-OF関数は，UTF-16の文字をUTF-8の文字に変換した文字列を返す。この関数の型は，英数字である。

なお，この組み込み関数を使用するためには，-UniObjGenオプションの指定が必要である。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

(1)　一般形式

(2)　引数

引数１は，字類が日本語でなくてはならない。

引数1を部分参照してはならない。

引数1に動的長基本項目を指定してはならない。

引数1の文字コードは，UTF-16でなければならない。

引数1にTRIM関数以外の関数一意名およびオブジェクトプロパティは指定できない。

注意事項

引数1に指定するTRIM関数の引数は，関数一意名であってはならない。

(3)　関数値

引数1のUTF-16の文字を，対応するUTF-8の文字に変換した文字列を返す。なお，このシステムではUTF-8へのコード変換だけとする。

対応するUTF-8の文字を持たないUTF-16の文字が引数1中にある場合，UTF-8への文字変換は行わないで，EC-ARGUMENT-IMP例外条件が成立する。

ただし，-FunctionECSup,CodeConvErrオプションが有効なときは，EC-ARGUMENT-IMP例外条件は成立しない。-FunctionECSup,CodeConvErrオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のコンパイラオプションを参照のこと。

関数値の長さは，変換後の文字数を保持するのに必要とする，用途がDISPLAYの文字位置の個数となる。

関数値を転記する受け取り側作用対象に複数の項目を指定してはならない。

関数値の表現形式は，英数字形式となる。

(4)　使用例

日本語項目の値をDISPLAY-OF関数でUTF-8に文字変換し，英数字項目へ転記する文の例を次に示す。

記述例

25.5.5　LENGTH-OF-SUBSTRING関数

LENGTH-OF-SUBSTRING関数は，開始位置と長さを指定することによって，データ項目中の文字列から部分文字列の文字位置の個数を返す。開始位置と長さは，見た目幅または文字数で指定できる。この関数の型は，整数とする。

なお，この組み込み関数は，次のどちらかの場合に使用できる。

-UniObjGenオプションを指定してコンパイル

日本語EUC環境下でコンパイル

-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

日本語EUC環境については，マニュアル「COBOL2002　使用の手引　手引編」のEUCコードを使用したCOBOLプログラムを参照のこと。

(1)　一般形式

(2)　引数

引数1は，字類が英字か英数字，または日本語でなければならない。

引数1に可変長集団項目を指定してはならない。また，引数1を部分参照してはならない。

引数1に動的長基本項目を指定してはならない。

引数1の文字コードは，次のどちらかでなければならない。

字類

文字コード

Unicode機能

日本語EUC環境

英字，英数字

UTF-8

日本語EUC

日本語

UTF-16

引数2と引数3は，算術式でなければならない。

引数1，引数2および引数3に関数一意名およびオブジェクトプロパティは指定できない。なお，引数2および引数3については，算術式中も指定できない。

引数2および引数3は，ゼロでない正の整数でなければならない。

引数2および引数3に指定する値は次のとおりである。

（ア）見た目幅で部分文字列の文字位置の個数を返す場合

半角文字1文字を1，全角文字1文字を2として数えた値を指定する。このとき，同時にWIDTHも指定すること。

（例）

文字列'aあc'の見た目幅は4となる。この場合，部分文字列'c'の文字位置の個数を返すときは引数2に4，引数3に1を指定する。

（イ）文字数で部分文字列の文字位置の個数を返す場合

半角文字および全角文字の1文字を1として数えた値を指定する。このとき，WIDTHを指定しないこと。

（例）

文字列'aあc'の文字数は3となる。この場合，部分文字列'c'の文字位置の個数を返すときは引数2に3，引数3に1を指定する。

引数2で指定する開始位置，または引数2で指定する開始位置から引数3で指定する長さだけ進めた文字位置は，引数1の終端を越えてはならない。

引数2で指定する開始位置，または引数2で指定する開始位置から引数3で指定する長さだけ進めた文字位置は全角文字の途中を指してはならない。

引数1が英数字集団項目のとき，その従属項目の字類は英字，または英数字でなければならない。

(3)　関数値

引数3が指定されている場合，関数値は，引数2，引数3で指定する開始位置と長さで引数1から取り出した部分文字列の，文字位置の個数を返す。このとき，開始位置と長さの単位は次のとおりとする。

（ア）WIDTHが指定されている場合

引数2，引数3の単位は見た目幅として開始位置および長さを評価する。

（イ）WIDTHが指定されていない場合

引数2，引数3の単位は文字数として開始位置および長さを評価する。

引数3が指定されていない場合，関数値は，引数2で指定する開始位置から引数1の終端までの部分文字列の，文字位置の個数を返す。このとき，開始位置の単位は次のとおりとする。

（ア）WIDTHが指定されている場合

引数2の単位は見た目幅として開始位置を評価する。

（イ）WIDTHが指定されていない場合

引数2の単位は文字数として開始位置を評価する。

関数値の表現形式は，2進形式4バイト（64bit版COBOL2002では2進形式8バイト）となる。

(4)　使用例（Unicode機能）

(a)　シフトJISでの部分文字列のけた数の取得

ある文字列のm文字目からn文字目を参照したい，または開始位置と長さを指定して文字を書き込みたい場合，シフトJISでは部分参照を使用できる。

次の文字列NAME-KNの8文字目から文字列を転記する文の例を示す。

記述例

シフトJISの場合，文字数とけた数が対応しているため，上記のように部分参照のけた数に文字数を指定して処理ができる。

(b)　Unicodeでの部分文字列のけた数の取得

Unicodeの場合は，文字数とけた数が対応しないため，シフトJISと同様のコーディングができない。そこで，文字数をけた数に変換するLENGTH-OF-SUBSTRING関数を使用する。

LENGTH-OF-SUBSTRING関数を使用すると，引数に指定した開始位置と長さによって指定した文字列から，該当する文字列が占めるけた数を求めることができるため，その結果によって，部分参照を行うことができる。

英数字項目のときに見た目幅で指定する方法

文字列NAME-KNの8文字目から2文字分の文字列を転記する文の例を次に示す。

記述例

日本語項目のときに文字数で指定する方法

シフトJISの場合

次の文字列NAME-KNの6文字目から文字列を転記する文の例を示す。

記述例

Unicodeの場合

次の文字列NAME-KNの7文字目から文字列を転記する文の例を示す。

記述例

(5)　使用例（日本語EUC環境）

半角文字からなる文字列のm文字目からn文字目までを参照する，または開始位置と長さを指定して文字を書き込む場合，シフトJISと日本語EUCでは，それぞれ次の例に示すコーディングとなる。

(a)　シフトJISでの部分文字列のけた数の取得

シフトJISの場合，半角文字が1バイト固定であるため，部分参照が使用できる。

（例）英数字NAME-KNの8文字目から文字列を転記

       01 NAME-KN PIC X(10) VALUE 'ﾋﾀﾁ ﾀﾛｳ'.
             :
           MOVE 'ｻﾏ' TO NAME-KN(8:).  *> 結果：'ﾋﾀﾁ ﾀﾛｳｻﾏ'

(b)　日本語EUCでの部分文字列のけた数の取得

日本語EUCの場合，文字数とけた数が対応しないため，シフトJISと同じコーディングができない。そこで，文字数をけた数に変換するLENGTH-OF-SUBSTRING関数を使用する。

LENGTH-OF-SUBSTRING関数を使用すると，引数に指定した開始位置と長さによって，指定した文字列から当該文字列が占めるけた数を求めることができる。その結果を使って部分参照できる。

（例）文字列NAME-KNの8文字目から2文字分の文字列を転記

       01 NAME-KN PIC X(20) VALUE 'ﾋﾀﾁ ﾀﾛｳ'.
             :
           COMPUTE NCHARPOS =
               FUNCTION LENGTH-OF-SUBSTRING(NAME-KN, 1, 7).
               *> 13が求まる(半角かたかな2ﾊﾞｲﾄ*6 + 半角空白1ﾊﾞｲﾄ)
           MOVE 'ｻﾏ' TO NAME-KN(NCHARPOS + 1 : ).
           *> 結果：'ﾋﾀﾁ ﾀﾛｳｻﾏ'
           *> FUNCTION LENGTH-OF-SUBSTRINGの関数値「NCHARPOS」が
           *> 開始位置に使える

25.5.6　NATIONAL-OF関数

NATIONAL-OF関数は，UTF-8の文字をUTF-16の文字に変換した文字列を返す。この関数の型は，日本語とする。

なお，この組み込み関数を使用するためには，-UniObjGenオプションの指定が必要である。-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

(1)　一般形式

(2)　引数

引数１は，字類が英字か英数字でなくてはならない。

引数1に可変長集団項目を指定してはならない。また，引数1を部分参照してはならない。

引数1に動的長基本項目を指定してはならない。

引数1の文字コードは，UTF-8でなければならない。

引数1にTRIM関数以外の関数一意名およびオブジェクトプロパティは指定できない。

注意事項

引数1に指定するTRIM関数の引数は，関数一意名であってはならない。

引数1が英数字集団項目のとき，その従属項目の字類は英字，または英数字でなければならない。

(3)　関数値

引数1のUTF-8の文字データを，対応するUTF-16の文字に変換した文字列を返す。

なお，このシステムではUTF-16へのコード変換だけとする。全角文字変換は行わない。

対応するUTF-16の文字を持たない英数字文字が引数1中にある場合，UTF-16への文字変換は行わないで，EC-ARGUMENT-IMP例外条件が成立する。

ただし，-FunctionECSup,CodeConvErrオプションが有効なときは，EC-ARGUMENT-IMP例外条件は成立しない。-FunctionECSup,CodeConvErrオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のコンパイラオプションを参照のこと。

関数値の長さは，変換後の文字数を保持するのに必要とする，用途がNATIONALの文字位置の個数となる。

関数値を転記する受け取り側作用対象に複数の項目を指定してはならない。

関数値の表現形式は，日本語形式となる。

(4)　使用例

英数字項目の値をNATIONAL-OF関数でUTF-16に文字変換し，日本語項目へ転記する例を次に示す。

記述例

25.5.7　SUBSTRING関数

SUBSTRING関数は，指定した開始位置と長さによって，指定したデータ項目中の文字列から部分文字列を返す。この関数の型は，引数の型に従って次のとおりとする。

引数の型

関数の型

英字

英数字

英数字

英数字

日本語

日本語

なお，この組み込み関数は，次のどちらかの場合に使用できる。

-UniObjGenオプションを指定してコンパイル

日本語EUC環境下でコンパイル

-UniObjGenオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のUnicode機能を参照のこと。

日本語EUC環境については，マニュアル「COBOL2002　使用の手引　手引編」のEUCコードを使用したCOBOLプログラムを参照のこと。

(1)　一般形式

(2)　引数

引数1は，字類が英字か英数字，または日本語でなければならない。

注意事項

-JPN,V3JPNオプション指定時，引数に日本語のデータ項目，日本語の関数一意名，日本語のオブジェクトプロパティおよび日本語文字定数を指定できない。

引数1に可変長集団項目を指定してはならない。また，引数1を部分参照してはならない。

引数1に動的長基本項目を指定してはならない。

引数1の文字コードは，次のどちらかでなければならない。

字類

文字コード

Unicode機能

日本語EUC環境

英字，英数字

UTF-8

日本語EUC

日本語

UTF-16

引数2と引数3は，算術式でなければならない。

引数1，引数2，および引数3に関数一意名およびオブジェクトプロパティは指定できない。なお，引数2および引数3については，算術式中も指定できない。

引数2および引数3は，ゼロでない正の整数でなければならない。

引数2および引数3に指定する値は次のとおりとする。

（ア）見た目幅で部分文字列を返す場合

半角文字1文字を1，全角文字1文字を2として数えた値を指定する。このとき，同時にWIDTHも指定すること。

（例）

文字列'aあc'の見た目幅は4となる。この場合，部分文字列'c'を取得するときは引数2に4，引数3に1を指定する。

（イ）文字数で部分文字列を返す場合

半角文字および全角文字の1文字を1として数えた値を指定する。このとき，WIDTHを指定しないこと。

（例）

文字列'aあc'の文字数は3となる。この場合，部分文字列'c'を取得するときは引数2に3，引数3に1を指定する。

引数2で指定する開始位置，または引数2で指定する開始位置から引数3で指定する長さだけ進めた文字位置は，引数1の終端を越えてはならない。

引数2で指定する開始位置，または引数2で指定する開始位置から引数3で指定する長さだけ進めた文字位置は全角文字の途中を指してはならない。

引数1が英数字集団項目のとき，その従属項目の字類は英字，または英数字でなければならない。

(3)　関数値

引数3が指定されている場合，関数値は，引数2，引数3で指定する開始位置と長さで引数1から取り出した部分文字列を返す。このとき，開始位置と長さの単位は次のとおりとする。

（ア）WIDTHが指定されている場合

引数2，引数3の単位は見た目幅として開始位置および長さを評価する。

（イ）WIDTHが指定されていない場合

引数2，引数3の単位は文字数として開始位置および長さを評価する。

引数3が指定されていない場合，関数値は，引数2で指定する開始位置から引数1の終端までの部分文字列を返す。このとき，開始位置の単位は次のとおりとする。

（ア）WIDTHが指定されている場合

引数2の単位は見た目幅として開始位置を評価する。

（イ）WIDTHが指定されていない場合

引数2の単位は文字数として開始位置を評価する。

関数値を転記する受け取り側作用対象に複数の項目を指定してはならない。

関数値を受け取る受け取り側のデータ項目が引数1のデータ項目と同じである場合，この関数の実行の結果は保証しない。

関数値の表現形式は次のとおり。

（ア）引数1の字類が英字または英数字の場合

部分文字列の長さの英数字形式。

（イ）引数1の字類が日本語の場合

部分文字列の長さの日本語形式。

(4)　使用例（Unicode機能）

SUBSTRING関数を使用して，文字列からある長さの部分文字列を取り出す場合の例について説明する。

英数字項目のときに見た目幅で指定する方法

シフトJISの場合

次の文字列FROMSTR-Xの11文字目から10文字を取り出す文の例を示す。

記述例

Unicodeの場合

見た目幅で指定できるSUBSTRING関数を使用する。SUBSTRING関数を使用して，Unicodeの文字列FROMSTR-Xの11文字目から10文字を取り出す文の例を示す。

記述例

日本語項目のときに文字数で指定する方法

シフトJISの場合

次の文字列FROMSTR-Nの4文字目から3文字を取り出す文の例を示す。

記述例

Unicodeの場合

上記の例がUnicodeの場合に，文字数で指定できるSUBSTRING関数を使用して，次の文字列FROMSTR-Nの4文字目から3文字を取り出す例を示す。

記述例

(5)　使用例（日本語EUC環境）

英数字項目から，ある長さの部分文字列を取り出す場合，シフトJISと日本語EUCでは，それぞれ次の例に示すコーディングとなる。

(a)　シフトJISでの部分文字列の取り出し

シフトJISの場合，m文字目以降からn文字を取り出す場合，部分参照が使用できる。

（例）文字列FROMSTR-Xの11文字目から10文字取り出し

       01 FROMSTR-X PIC X(100) VALUE 'ｶﾅｶﾞﾜｹﾝ△△△神奈川県△△'.
                                     *> △：半角空白
                                     *> 神奈川県は，見た目幅2
       01 TOSTR-X PIC X(20).
           :
           MOVE FROMSTR-X(11 : 10) TO TOSTR-X.
           *> 部分参照で，'神奈川県△△'がTOSTR-Xに取得できる

(b)　日本語EUCでの部分文字列の取り出し

日本語EUCの場合，m文字目以降の開始位置が固定ではないため，シフトJISと同じコーディングはできない。そこで，文字数または見た目幅の指定で部分文字列を取り出すSUBSTRING関数を使用する。

（例）文字列FROMSTR-Xの11文字目から10文字取り出し

       01 FROMSTR-X PIC X(100) VALUE 'ｶﾅｶﾞﾜｹﾝ△△△神奈川県△△'.
                                     *> △：半角空白
                                     *> 神奈川県は，見た目幅2
           :
           MOVE FUNCTION SUBSTRING(FROMSTR-X, 11, 10, WIDTH) TO TOSTR-X.
           *> SUBSTRING関数で，'神奈川県△△'がTOSTR-Xに取得できる

(6)　注意事項

次に示す手続き文の一意名および引数にSUBSTRING関数を指定してはならない。

文／組み込み関数

該当する一意名

DISPLAY文

[書き方3]

DISPLAY 一意名5 〜

UNSTRING文

UNSTRING 一意名1 〜

TRANSFORM文

TRANSFORM 一意名1※ FROM 一意名2 TO 一意名3

TRIM関数

FUNCTION TRIM(引数1)

注※

一意名1に関数一意名は指定できない。

25.6　2進項目の拡張

25.6.1　1バイト2進機能

機能

1バイトの2進項目を定義できる。

一般規則

1バイト2進機能は，-Bin1Byteオプション指定時だけ有効とする。

1バイト2進機能と2進項目のUSAGE句の規則を次に示す。

2進項目のUSAGE句

有効かどうか

BINARY

○

COMPUTATIONAL（COMP）

○

COMPUTATIONAL-4（COMP-4）

○

COMPUTATIONAL-5（COMP-5）

○

COMPUTATIONAL-X（COMP-X）

−

（凡例）

○：-Bin1Byteオプションを指定したときは，1バイト2進機能が有効になる。

−：-Bin1Byteオプションの影響を受けない。

-Bin1Byteオプションを指定したときのPICTURE句の'9'の数と割り当てられる記憶域の規則を次に示す。

PICTURE句の'9'の数

割り当てられる記憶域のバイト数

1〜 2

1

3〜 4

2

5〜 9

4

10〜18

8

-Bin1Byteオプションを指定したときは，2進項目に対するSYNCHRONIZED句を無視する。

SORT文とMERGE文のキーに1バイトの2進項目を指定してはならない。

索引ファイルの主レコードキー，副レコードキーおよび合成キーを構成するデータ項目に1バイトの2進項目を指定してはならない。

25.6.2　COMP-X項目

COMP-X項目は，符号なし2進項目を扱うものであり，2進項目（BINARY項目）が書けるところならば，COMP-X項目を書ける。ただし，機能によってはCOMP-X項目を2進項目として扱う場合がある（「25.6.2　COMP-X項目」の「(6)　COMP-X項目が2進項目として扱われる個所」参照）。

(1)　割り当てられる記憶域

COMP-X項目に対するPICTURE文字列中の記号（'9'，'A'および'X'）の個数とその項目に割り当てられる記憶域のサイズの規則に従う。その規則を次に示す。

なお，COMP-X項目は，-Bin1Byteオプション（1バイト2進機能）指定の有無の影響を受けない。

PICTURE記号が'9'の場合

PICTURE記号が'A'または'X'の場合

PICTURE句の'9'の個数

割り当てられる記憶域のバイト数

PICTURE句の'A'や'X'の個数

割り当てられる記憶域のバイト数

仮定される'9'の個数

1〜 2

1

1

1

2

3〜 4

2

2

2

4

5〜 9

4

4

4

9

10〜18

8

8

8

18

(2)　格納できる数値

格納できる数値は，割り当てられた記憶域に収まる2進数の最大値が限度となる。

なお，COMP-X項目は，-DigitsTruncオプション（2進項目のけた落とし）の影響を受けない。

(3)　記憶方式

2進データ項目と同じ記憶方式に従って記憶される。システムのバイナリ形式のデータがリトルエンディアンの場合，-BigEndian,Binオプションの有無によって記憶方式を切り替える。

-BigEndian,Binオプションあり：ビッグエンディアン形式で記憶。

-BigEndian,Binオプションなし：リトルエンディアン形式で記憶。

-BigEndian,Binオプションについては，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」のコンパイラオプションを参照のこと。

(4)　データ部

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.　データ部（DATA DIVISION）」

(a)　PICTURE句（COMP-X項目）

一般規則

PICTURE文字列を構成する記号は，'9'，'X'，'A'でなければならない。

'X'と'A'は同じ意味として扱う。

PICTURE文字列中に記号の混在を許し，記号が'X'だけから成る文字列と同様に扱う。

PICTURE文字列が記号'9'だけから成る場合，1〜18けたでなければならない。

PICTURE文字列中の記号がすべて'X'，'A'またはPICTURE記号が混在する場合，PICTURE文字列中の記号の個数は1，2，4，8個でなければならない。

PICTURE文字列が記号'X'，記号'A'から成る場合，割り当てられる記憶域と同じバイト数になるように記号'9'が指定されたものとしてけた数を決める。その規則を次に示す。

'A'，'X'の個数

バイト数

仮定される'9'の数

1

1

2

2

2

4

4

4

9

8

8

18

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.54　PICTURE句」

(b)　SYNCHRONIZED句（COMP-X項目）

COMP-X項目は，SYNCHRONIZED句の影響を受けないため，直前の項目に続けて配置される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.80　SYNCHRONIZED句」

(c)　USAGE句（COMP-X項目）

形式

構文規則

COMPUTATIONAL-XとCOMP-Xは同義語であり，どちらを書いてもよい。

基本項目のPICTURE句は，それが属する集団項目のUSAGE句と矛盾してはならない。

集団項目のUSAGE句にCOMP-Xを書いた場合，その集団項目に従属する基本項目または集団項目のデータ記述項中にUSAGE句を書くときは，COMP-Xでなければならない。

一般規則

集団項目にCOMP-Xを書くと，その句は集団に従属する基本項目に適用される。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.86　USAGE句」

(d)　VALUE句（COMP-X項目）

構文規則

定数は符号があってはならない。

定数は小数けたがあってはならない。

定数はデータ項目内に収まるものでなければならず，ゼロ以外の切り捨てを引き起こしてはならない。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「9.16.88　VALUE句」

(5)　手続き部

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.　手続き部（PROCEDURE DIVISION）」

(a)　転記の規則

・COMP-X項目からCOMP-X項目へ転記するときの規則

送り出し側作用対象の2進値がそのまま受け取り側作用対象に格納される。その場合，送り出し側作用対象の2進値が受け取り側作用対象に収まらないときは，受け取り側作用対象の範囲外となる送り出し側作用対象の2進上位けたを切り捨てる。

（例1）

       01 A PIC 9(9) COMP-X VALUE 65538.　…(1)
       01 B PIC 9(4) COMP-X.　…(2)
           MOVE A TO B.　…(3)

(1)は4バイト（00010002）₁₆である。

(2)は2バイトである。

(3)のBには（0002）₁₆が入る。

・COMP-X項目以外の項目からCOMP-X項目へ転記するときの規則

・字類が数字となる項目からCOMP-X項目へ転記するときの規則

字類が数字となる項目からCOMP-X項目へ転記するときは，送り出し側作用対象の整数部の値を受け取り側作用対象と同じサイズの符号ありの2進値に変換した値を符号ビットも数値の一部として受け取り側作用対象に格納する。

送り出し側作用対象の2進値が受け取り側作用対象と同じサイズの符号ありの2進領域に収まらないときは，2進上位けたを切り捨てた値を受け取り側作用対象に格納する。

（例2）

       01 A PIC 99V99 VALUE 12.34.
       01 B PIC 9(5) VALUE 65537.
       01 C PIC 9(4) COMP-X.
           MOVE A TO C.　…(1)
           MOVE B TO C.　…(2)

(1)のCには（000C）₁₆が入る。

(2)のCには（0001）₁₆が入る。

・字類が英数字となる項目からCOMP-X項目へ転記するときの規則

集団項目からCOMP-X項目へ転記するときは，送り出し側作用対象の左端バイトが受け取り側作用対象の左端バイトに格納され，送り出し側作用対象の右端バイトまで繰り返される。

送り出し側作用対象が受け取り側作用対象より大きいときは，格納できない部分を切り捨てる。また，送り出し側作用対象が受け取り側作用対象より小さいときは，空白が受け取り側作用対象に格納される。

英数字項目からCOMP-X項目へ転記するときは，英数字項目から10進値を作り，その10進値を字類が数字となる項目からCOMP-X項目へ転記するときの規則に従って受け取り側作用対象に格納する。

数字編集項目からCOMP-X項目へ転記するときは，数字編集項目の値は一時的に外部10進項目に転記され，その外部10進項目からCOMP-X項目から字類が数字となる項目からCOMP-X項目へ転記するときの規則に従ってCOMP-X項目に格納される。

・COMP-X項目からCOMP-X項目以外の項目へ転記するときの規則

COMP-X項目からCOMP-X項目以外の項目へ転記するときは，COMP-X項目の値を受け取り側作用対象の属性に合わせて格納する。そのとき，小数点の位置あわせおよび必要なゼロ詰めが標準けた寄せ規則に従って行われる。

（例3）

       01 A PIC 9(4) COMP-X VALUE 65535.
       01 B PIC 9(4) COMP.
       01 C PIC 9(4).
           MOVE A TO B.　…(1)
           MOVE A TO C.　…(2)

(1)のBには-DigitsTruncオプション指定がないときは-1が入り，-DigitsTruncオプション指定があるときは5535が入る。

(2)のCには5535が入る。

【標準仕様との関連】

「COBOL2002　言語　標準仕様編」　「10.5.7　データ項目内でのデータのけた寄せ」

(b)　転記の組み合わせ

COMP-X項目の転記できる組み合わせは，2進項目の転記の組み合わせと同じとする。

(c)　ON SIZE ERROR指定（COMP-X項目）

該当する項目が算術演算の受け取り側作用対象のときに，その文の中にON SIZE ERRORまたはNOT ON SIZE ERROR指定が含まれるとき，PICTURE文字列の'9'の数によって，けたあふれ条件が生じたかどうかが判定される。けたあふれが発生しないときだけ，演算結果が受け取り側作用対象に収められる。

ON SIZE ERRORまたはNOT ON SIZE ERROR指定が含まれない場合，受け取り側作用対象の項目の範囲外になる2進上位けたを切り捨てて格納される。

(d)　演算の中間結果

演算式中のCOMP-X項目

COMP-X項目が演算式中にあるときは，2進項目に拡張して演算する。2進項目に拡張するときの規則を次に示す。

COMP-X項目のけた数

2進項目のけた数

1〜 2

3

3〜 4

5

5〜 9

10

10〜18

20

中間結果のけた数

演算式中にCOMP-X項目を含むときは，COMP-X項目を（a）の規則に従って符号付きの2進項目に拡張したけた数を使用して中間結果のけた数を求める。

中間結果が30けたを超えたときの補正値

演算式中にCOMP-X項目を含むときに中間結果が30けたを超えたときは，COMP-X項目を（a）の規則に従って，符号付きの2進項目に拡張したけた数を使用して30けたを超えたときの補正値を計算する。

(e)　比較条件

数字作用対象の比較

COMP-X項目と数字項目を比較するときは，COMP-X項目を符号付きの2進項目に拡張して数字比較をする。2進項目に拡張するときの規則については，「(d)　演算の中間結果」を参照のこと。

文字作用対象の比較

COMP-X項目と集団項目を比較するときは，文字比較をする。

(f)　比較の組み合わせ

COMP-Xの比較の組み合わせは，2進項目の比較の組み合わせと同じとする。

(g)　DISPLAY文（COMP-X項目）

DISPLAY文のデータ項目（作用対象）とハードウェア装置の間のデータ変換の規則を次に示す。

作用対象

データ変換

項目のサイズ

COMP-X項目

LEADING SEPARATE指定の外部10進項目に変換。

割り当てられる記憶域に格納できるけた数を持つLEADING SEPARATE指定の外部10進項目のサイズ。ただし，8バイトのCOMP-Xのときは18けたとする。

(6)　COMP-X項目が2進項目として扱われる個所

次に示す個所にCOMP-X項目を指定した場合，2進項目として扱われる。

データ部

相対ファイルの相対キー

索引ファイルの主レコードキー，副レコードキー，合成キー中のデータ項目

(7)　整列併合機能とCOMP-X項目

SORT文とMERGE文のキーにCOMP-X項目を書いたときは，符号なしのデータとして大小比較する。

SORT文とMERGE文のキーにCOMP-X項目を書くときは，2，4，8バイトのCOMP-X項目でなければならない。

(8)　データベースアクセス機能とCOMP-X項目

埋め込み変数のデータ項目にCOMP-X項目を書いたときは，そのまま符号なしデータとして扱う。

(9)　索引ファイルとCOMP-X項目

索引ファイルの主レコードキーと副レコードキーおよび合成キーを構成するデータ項目にCOMP-X項目を書くときは，2，4バイトのCOMP-X項目でなければならない。

付録

付録A　Windows COBOL2002とUNIX COBOL2002との言語仕様の相違

Windows COBOL2002とUNIX COBOL2002との言語仕様の相違の記述個所を一覧にして次に示す。

表A‒1　Windows COBOL2002とUNIX COBOL2002との言語仕様の相違

項目

本文中の記述

OLEメソッド

OLEオブジェクト

OLEプロパティ

「1.2.2　文字列（日本語機能）」の「(1)　利用者定義語」

テキスト編成

「2.1　テキスト編成」

テキストファイルでのファイル共用に関する指定

「2.2.1　ファイル管理段落（テキストファイル機能）」

「3.1　環境部（ファイル共用機能）」

「3.1.1　ファイル記述項（ファイル共用機能）」

レコード施錠に関する指定

「2.2.1　ファイル管理段落（テキストファイル機能）」

「3.1　環境部（ファイル共用機能）」

「3.1.1　ファイル記述項（ファイル共用機能）」

DATA FORMAT句

「4.3.1　DATA FORMAT句（索引ファイル機能の拡張）」

データベースアクセス機能

「9.1　概説（データベースアクセス機能）」

CRT STATUS句

「12.1.4　CRT STATUS句（SCREEN SECTION）」

WINDOW-KEYCODE特殊レジスタ

「13.2.1　画面入出力機能特殊レジスタ」の「(3)　WINDOW-KEYCODE特殊レジスタ（WINDOW SECTION）」

COLUMN NUMBER句

「13.4.5　COLUMN NUMBER句（WINDOW SECTION）」

LINE NUMBER句

「13.4.14　LINE NUMBER句（WINDOW SECTION）」

REPEAT COLUMN句

「13.4.16　REPEAT COLUMN句（WINDOW SECTION）」

REPEAT LINE句

「13.4.17　REPEAT LINE句（WINDOW SECTION）」

CHARACTER TYPE句

「14.2.1　データ記述項（書式印刷機能）」の「(1)　CHARACTER TYPE句」

「17.2.2　データ部（CSVファイル入出力機能）」の「(1)　ファイル記述項（FD）」

「17.2.3　手続き部（CSVファイル入出力機能）」の「(4)　WRITE文（CSVファイル入出力機能）」

ADDR関数

「15.4.3　アドレス型関数（アドレス操作機能）」の「(1)　ADDR関数」

OLE2オートメーションインタフェース機能

「18.1　概説（OLE2オートメーションインタフェース機能）」

DATA FORMAT句

「20.3.1　ファイル記述項（FD）（HiRDBによる索引ファイル入出力機能）」

外部プログラム節

「25.2.1　プログラム間連絡機能の環境部」の「(2)　外部プログラム節（EXTERNAL-PROGRAM SECTION）」

APPLY FILE-SHARE句

「25.2.3　入出力管理記述項」の「(3)　APPLY FILE-SHARE句」

COMP-X項目

「25.6.2　COMP-X項目」の「(3)　記憶方式」

付録B　LANGOPT=(D)オプションと-JPN,V3JPNSpaceオプションを指定した場合の仕様の相違

ここでは，VOS3 COBOL85でLANGOPT=(D)オプションを指定した場合と，COBOL2002で-JPN,V3JPNSpaceオプションを指定した場合の仕様の相違点について説明する。

なお，-JPN,V3JPNSpaceオプションについては，マニュアル「COBOL2002　ユーザーズガイド」または「COBOL2002　使用の手引　手引編」を参照のこと。

付録B.1　VOS3 COBOL85とCOBOL2002での仕様の相違

VOS3 COBOL85とCOBOL2002での仕様の相違について，次の一覧で示す。

表B‒1　VOS3 COBOL85とCOBOL2002の仕様の比較

大項目

小項目

VOS3 COBOL85

COBOL2002

LANGOPT=(D)オプション指定時

-JPN,V3JPNSpaceオプション指定時

表意定数SPACE(SPACES)

−

日本語項目および日本語編集項目に対する表意定数SPACE(SPACES)は，KEISコードの空白(X'A1A1')となる。

日本語項目および日本語編集項目に対する表意定数SPACE(SPACES)は，日本語空白(X'8140')となる。

日本語定数

カナ漢字定数

漢字文字列に変換できなかった場合，KEISコードの空白(X'A1A1')が仮定される。

このシステムではカナ漢字定数，KEIS定数，片仮名定数および，平仮名定数は未サポート。

KEIS定数

片仮名定数

平仮名定数

分離符

−

分離符として，日本語空白を用いることができる。

VOS3 COBOL85と同じ。

日本語文字集合中では，EBCDIKコードの空白(X'40')と日本語空白だけを分離符とする。

日本語文字集合中では，半角空白(X'20')と日本語空白だけを分離符とする。

日本語空白が分離符とみなされるのは，日本語文字集合中だけである。

VOS3 COBOL85と同じ。

日本語空白を表す16進定数値はX'4040'，X'A1A1'のどちらでもよい。

日本語空白を表す16進定数値はX'2020'，X'8140'のどちらでもよい。

条件式

（比較条件）

両方の作用対象が日本語の場合

日本語項目，日本語編集項目および日本語文字定数は，それぞれ英数字項目，英数字編集項目および文字定数と同様の文字作用対象の比較の規則に従って比較される。

VOS3 COBOL85と同じ。

作用対象のけた数が等しくない場合，短い方の作用対象の右側に，長い方の作用対象のけた数に等しくなるまで，KEISコードの空白(X'A1A1')があるものとみなして，作用対象のけた数が等しいときの規則に従って比較される。

作用対象のけた数が等しくない場合，短い方の作用対象の右側に，長い方の作用対象のけた数に等しくなるまで，日本語空白(X'8140')があるものとみなして，作用対象のけた数が等しいときの規則に従って比較される。

作用対象の一方の字類が日本語で，他方の字類が日本語でない場合

作用対象の一方は表意定数および集団項目でなければならない。

VOS3 COBOL85と同じ。

比較は，日本語作用対象を文字作用対象とみなした標準データ形式の文字位置に換算し，この文字位置の個数の大きさの文字作用対象として行われる。

なお，作用対象のけた数が等しくない場合，短い方の作用対象の右側に，長い方の作用対象のけた数に等しくなるまでEBCDIKコードの空白(X'40')があるものとみなして，作用対象のけた数が等しいときの規則に従って行われる。

比較は，日本語作用対象を文字作用対象とみなした標準データ形式の文字位置に換算し，この文字位置の個数の大きさの文字作用対象として行われる。なお，作用対象のけた数が等しくない場合，短い方の作用対象の右側に，長い方の作用対象のけた数に等しくなるまで半角空白(X'20')があるものとみなして，作用対象のけた数が等しいときの規則に従って行われる。

作用対象の一方に表意定数HIGH-VALUE，LOW-VALUEおよびZEROを指定してはならない。

一方に表意定数HIGH-VALUE，LOW-VALUEおよびZEROを指定してもよい。指定した場合の扱いは，次のとおりとなる。※1

表意定数HIGH-VALUE：

2バイトのX'FFFF'として扱う。

表意定数LOW-VALUE：

2バイトのX'0000'として扱う。

表意定数ZERO：

全角文字のゼロ(X'824F')として扱う。

条件式

（字類条件）

数字（numeric）検査

日本語項目および日本語編集項目を使用してはならない。

VOS3 COBOL85と同じ。

英字（alphabetic）検査

日本語項目および日本語編集項目を使用してはならない。

VOS3 COBOL85と同じ。

英小文字（alphabetic-lower）検査

日本語項目および日本語編集項目を使用してはならない。

VOS3 COBOL85と同じ。

英大文字（alphabetic-upper）検査

日本語項目および日本語編集項目を使用してはならない。

VOS3 COBOL85と同じ。

ブール（boolean）検査

日本語項目および日本語編集項目を使用してはならない。

VOS3 COBOL85と同じ。

字類名の検査

日本語項目および日本語編集項目を使用してはならない。

VOS3 COBOL85と同じ。

実行用計算機段落のPROGRAM COLLATING SEQUENCE句

関連する符号系名にSTANDARD-1およびSTANDARD-2を指定してはならない。

VOS3 COBOL85と同じ。

入出力管理段落のAPPLY FORMS-OVERLAY句

データ名に日本語項目を指定してはならない。

VOS3 COBOL85と同じ。

ALTERNATE RECORD KEY句

データ名1が日本語項目の場合，データ名1に指定された日本語項目を英数字項目として扱う。

VOS3 COBOL85と同じ。

FILE STATUS句

データ名1またはデータ名2に日本語項目を指定してはならない。

VOS3 COBOL85と同じ。

RECORD KEY句

データ名1が日本語項目の場合，データ名1に指定された日本語項目を英数字項目として扱う。

VOS3 COBOL85と同じ。

JUSTIFIED句

JUSTIFIED句が書かれている日本語項目および日本語編集項目を受け取り側作用対象に指定したとき，送り出し側作用対象の日本語項目および日本語編集項目の大きさが受け取り側作用対象の大きさより大きければ，左端から1文字単位に文字を切り捨て，小さければ左端の余りにKEISコードの空白(X'A1A1')を補って，右端をそろえてデータを収める。

JUSTIFIED句が書かれている日本語項目および日本語編集項目を受け取り側作用対象に指定したとき，送り出し側作用対象の日本語項目および日本語編集項目の大きさが受け取り側作用対象の大きさより大きければ，左端から1文字単位に文字を切り捨て，小さければ左端の余りに日本語空白(X'8140')を補って，右端をそろえてデータを収める。

PICTURE句（日本語編集項目）

文字「N」は，日本語文字1文字を示し，「B」は，日本語空白1文字を示す。それぞれ標準データ形式で2文字分（2バイト）の大きさを表す。

VOS3 COBOL85と同じ。

編集は，MOVE文でこの項目転記するときに行われる。文字「B」の部分には，KEISコードの空白(X'A1A1')が挿入される。

編集は，MOVE文でこの項目転記するときに行われる。文字「B」の部分には，日本語空白(X'8140')が挿入される。

VALUE句

定数2に日本語文字定数を指定した場合，THRUは指定できない。

VOS3 COBOL85と同じ。

条件変数のデータ項目が日本語項目または日本語編集項目の場合，定数2は日本語文字定数または表意定数SPACEでなければならない。定数が日本語文字定数および表意定数SPACE以外の場合，VALUE句の指定は無視される。

VOS3 COBOL85と同じ。

条件変数のデータ項目が英数字項目または英数字編集項目の場合，定数2および定数3は，文字定数または表意定数でなければならない。定数が文字定数および表意定数以外の場合，VALUE句の指定は無視される。

VOS3 COBOL85と同じ。

ACCEPT文

書き方1

一意名1に日本語項目または日本語編集項目を指定した場合，それぞれ英数字項目または英数字編集項目として扱う。

一意名1に日本語項目または日本語編集項目を指定した場合，それぞれ英数字項目または英数字編集項目として扱う。

日本語編集項目が指定された場合は，そのままで扱う。

書き方2

一意名2に日本語項目および日本語編集項目を指定してはならない。

VOS3 COBOL85と同じ。

CALL文

−

一意名1に日本語項目を指定してはならない。

VOS3 COBOL85と同じ。

定数1に日本語文字定数を指定してはならない。

VOS3 COBOL85と同じ。

CANCEL文

−

一意名1に日本語項目を指定してはならない。

VOS3 COBOL85と同じ。

定数1に日本語文字定数を指定してはならない。指定された場合，CANCEL文を無視する。

VOS3 COBOL85と同じ。

EVALUATE文

−

選択対象の組中の各選択対象は，次の規則に従って，選択主体の組中の同じ順序位置にある選択主体に対応していなければならない。

選択対象中に現れる一意名，定数または算術式は，選択主体の組中の対応する作用対象との比較ができるものでなければならない。なお，一意名および定数に日本語項目，日本語編集項目および日本語文字定数を指定したときの比較は，この表のVOS3 COBOL85の「条件式（比較条件）」の規則に従う。

VOS3 COBOL85と同じ。

なお，一意名および定数に日本語項目，日本語編集項目および日本語文字定数を指定したときの比較は，この表のCOBOL2002の「条件式（比較条件）」の規則に従う。

INITIALIZE文

−

REPLACING指定を書かないと，日本語項目および日本語編集項目には空白(X'A1A1')が設定される。この場合，初期化される各データ項目を受け取り側作用対象とし，空白を送り出し側作用対象の定数とする基本項目間のMOVE文であるかのように処理が行われる。

なお，MOVE文の規則は，この表のVOS3 COBOL85の「MOVE文」に従う。

REPLACING指定を書かないと，日本語項目および日本語編集項目には日本語空白(X'8140')が設定される。この場合，初期化される各データ項目を受け取り側作用対象とし，空白を送り出し側作用対象の定数とする基本項目間のMOVE文であるかのように処理が行われる。

なお，MOVE文の規則は，この表のCOBOL2002の「MOVE文」に従う。

REPLACING指定を書いた場合，日本語項目および日本語編集項目は初期化されない。

VOS3 COBOL85と同じ。

INSPECT文

−

一意名1に日本語項目または日本語編集項目を指定したとき，一意名3から一意名7までの一意名は，日本語項目または日本語編集項目でなければならない。一意名3から一意名7までのいずれかの一意名に日本語項目または日本語編集項目以外を指定した場合には，INSPECT文の指定は無視される。

VOS3 COBOL85と同じ。

一意名1の用途が明示的または暗黙的なDISPLAY（日本語項目または日本語編集項目を除く）であるならば，定数はすべて文字定数または表意定数でなければならない。

VOS3 COBOL85と同じ。

一意名1の用途が明示的または暗黙的なDISPLAY（日本語項目または日本語編集項目を除く）であるならば，一意名2を除くすべての一意名の用途は，明示的または暗黙的なDISPLAY（日本語項目または日本語編集項目を除く）でなければならない。

VOS3 COBOL85と同じ。

一意名1に日本語項目または日本語編集項目を指定したとき，定数はすべて日本語文字定数でなければならない。また，定数はALL指定のない表意定数SPACE(SPACES)でなければならない。

VOS3 COBOL85と同じ。

定数3または一意名5のデータ項目の日本語文字数は，定数1または一意名3のデータ項目の日本語文字数と同じでなければならない。定数3に表意定数を書くと，表意定数の日本語文字数は，定数1や一意名3のデータ項目の日本語文字数に等しいものとみなされる。

VOS3 COBOL85と同じ。

一意名1に日本語項目または日本語編集項目を指定したとき，定数に表意定数SPACE(SPACES)を書くと，KEISコードの空白(X'A1A1')として扱う。

一意名1に日本語項目または日本語編集項目を指定したとき，定数に表意定数SPACE(SPACES)を書くと，日本語空白(X'8140')として扱う。

MERGE文

−

COLLATING SEQUENCE句に指定した符号系名が，STANDARD-1指定またはSTANDARD-2指定の場合，MERGE文を無視する。

COLLATING SEQUENCE句に指定した符号系名に，STANDARD-1指定またはSTANDARD-2を指定してもよい。

ファイル名1のファイルが固定長レコードだけを含むとき，その固定長よりも少ない文字位置を含むファイル名2またはファイル名3のファイルのレコードは，ファイル名1のファイルに引き渡されるとき，固定長集団項目同士の転記として扱うため，レコードの最後の文字位置の右側が半角空白(X'40')で埋められる。

ファイル名1のファイルが固定長レコードだけを含むとき，その固定長よりも少ない文字位置を含むファイル名2またはファイル名3のファイルのレコードは，ファイル名1のファイルに引き渡されるとき，固定長集団項目同士の転記として扱うため，レコードの最後の文字位置の右側が半角空白(X'20')で埋められる。

ファイル名4のファイルが固定長レコードだけを含むとき，その固定長よりも少ない文字位置を含むファイル名1のファイルのレコードは，ファイル名4のファイルに引き渡されるとき，固定長集団項目同士の転記として扱うため，レコードの最後の文字位置の右側がEBCDIKコードの空白(X'40')で埋められる。

ファイル名4のファイルが固定長レコードだけを含むとき，その固定長よりも少ない文字位置を含むファイル名1のファイルのレコードは，ファイル名4のファイルに引き渡されるとき，固定長集団項目同士の転記として扱うため，レコードの最後の文字位置の右側が半角空白(X'20')で埋められる。

MOVE文

−

一意名1に日本語項目または日本語編集項目を指定したときは，一意名2は日本語項目，日本語編集項目または集団項目でなければならない。

VOS3 COBOL85と同じ。

一意名2に日本語項目または日本語編集項目を指定したときは，一意名1は日本語項目，日本語編集項目または集団項目でなければならない。

VOS3 COBOL85と同じ。

定数1に日本語文字定数を指定したときは，一意名2は日本語項目または日本語編集項目でなければならない。

VOS3 COBOL85と同じ。

一意名2の日本語項目または日本語編集項目で，一意名1が集団項目のとき，一意名2に対して空白づめが発生した場合，EBCDIKコードの空白(X'4040')が埋められる。

一意名2の日本語項目または日本語編集項目で，一意名1が集団項目のとき，一意名2に対して空白づめが発生した場合，半角空白(X'2020')が埋められる。

一意名1の日本語項目または日本語編集項目で，一意名2が集団項目のとき，一意名2に対して空白づめが発生した場合，EBCDIKコードの空白(X'4040')が埋められる。

一意名1の日本語項目または日本語編集項目で，一意名2が集団項目のとき，一意名2に対して空白づめが発生した場合，半角空白(X'2020')が埋められる。

一意名1および一意名2が日本語項目または日本語編集項目のとき，一意名2に対して空白づめが発生した場合，KEISコード(X'A1A1')が埋められる。

一意名1および一意名2が日本語項目または日本語編集項目のとき，一意名2に対して空白づめが発生した場合，日本語空白(X'8140')が埋められる。

受け取り側作用対象の字類が日本語の場合，送り出し側作用対象に表意定数HIGH-VALUE，LOW-VALUEおよびZEROを指定してはならない。※2

受け取り側作用対象の字類が日本語の場合，送り出し側作用対象に表意定数HIGH-VALUE，LOW-VALUEおよびZEROを指定してもよい。※1

表意定数HIGH-VALUE：

2バイトのX'FFFF'として扱う。

表意定数LOW-VALUE：

2バイトのX'0000'として扱う。

表意定数ZERO：

全角文字のゼロ(X'824F')として扱う。

READ文

−

INTO指定のあるREAD文の実行結果は，次の規則をこの順に適用したものと等しい。※3

INTO指定のない同じREAD文の実行

現在レコードがCORRESPONDING指定のないMOVE文の規則に従って，レコード領域から一意名1の領域へ転記される。現在のレコードの大きさは，RECORD句の規則で定める。暗黙的の転記はレコード領域を集団項目として扱う転記となる。

なお，MOVE文の規則は，この表のVOS3 COBOL85の「MOVE文」に従う。

INTO指定のあるREAD文の実行結果は，次の規則をこの順に適用したものと等しい。※4

INTO指定のない同じREAD文の実行

現在レコードがCORRESPONDING指定のないMOVE文の規則に従って，レコード領域から一意名1の領域へ転記される。現在のレコードの大きさは，RECORD句の規則で定める。暗黙的の転記はレコード領域を集団項目として扱う転記となる。

なお，MOVE文の規則は，この表のCOBOL2002の「MOVE文」に従う。

RELEASE文

−

FROM指定のあるRELEASE文は，次に示す文の実行と等しい。

MOVE文の規則に従った文：

MOVE 一意名1 TO レコード名1

なお，レコード名1または一意名1に日本語項目および日本語編集項目を指定したときのMOVE文の規則は，この表のVOS3 COBOL85の「MOVE文」に従う。

それに続くFROM指定のない同じRELEASE文。

VOS3 COBOL85と同じ。

なお，レコード名1または一意名1に日本語項目および日本語編集項目を指定したときのMOVE文の規則は，この表のCOBOL2002の「MOVE文」に従う。

RETURN文

−

INTO指定のあるRETURN文の実行結果は，次の規則をこの順に適用したものと等しい。※3

INTO指定のない同じRETURN文の実行

現在レコードがCORRESPONDING指定のないMOVE文の規則に従って，レコード領域から一意名1の領域へ転記される。現在のレコードの大きさは，RECORD句の規則で定める。暗黙的の転記はレコード領域を集団項目として扱う転記となる。なお，MOVE文の規則は，この表のVOS3 COBOL85の「MOVE文」に従う。

INTO指定のあるRETURN文の実行結果は，次の規則をこの順に適用したものと等しい。※4

INTO指定のない同じRETURN文の実行

現在レコードがCORRESPONDING指定のないMOVE文の規則に従って，レコード領域から一意名1の領域へ転記される。現在のレコードの大きさは，RECORD句の規則で定める。暗黙的の転記はレコード領域を集団項目として扱う転記となる。なお，MOVE文の規則は，この表のCOBOL2002の「MOVE文」に従う。

REWRITE文

−

FROM指定のあるREWRITE文は，次に示す文の実行と等しい。

MOVE文の規則に従った文：MOVE 一意名1 TO レコード名1

なお，レコード名1または一意名1に日本語項目および日本語編集項目を指定したときのMOVE文の規則は，この表のVOS3 COBOL85の「MOVE文」に従う。

それに続くFROM指定のない同じREWRITE文。

VOS3 COBOL85と同じ。

なお，レコード名1または一意名1に日本語項目および日本語編集項目を指定したときのMOVE文の規則は，この表のCOBOL2002の「MOVE文」に従う。

SEARCH文

−

書き方2のデータ名1，データ名2，一意名3，一意名4，定数1および定数2に日本語項目，日本語編集項目および日本語文字定数を指定したときの比較条件の規則は，この表のVOS3 COBOL85の「条件式（比較条件）」に従う。

書き方2のデータ名1，データ名2，一意名3，一意名4，定数1および定数2に日本語項目，日本語編集項目および日本語文字定数を指定したときの比較条件の規則は，この表のCOBOL2002の「条件式（比較条件）」に従う。

SORT文

−

COLLATING SEQUENCE句に指定した符号系名が，STANDARD-1指定またはSTANDARD-2指定の場合，MERGE文を無視する。

COLLATING SEQUENCE句に指定した符号系名に，STANDARD-1指定またはSTANDARD-2を指定してもよい。

ファイル名1のファイルが固定長レコードだけを含むとき，その固定長よりも少ない文字位置を含むファイル名2またはファイル名3のファイルのレコードは，ファイル名1のファイルに引き渡されるとき，固定長集団項目同士の転記として扱うため，レコードの最後の文字位置の右側がEBCDIKコードの空白(X'40')で埋められる。

ファイル名1のファイルが固定長レコードだけを含むとき，その固定長よりも少ない文字位置を含むファイル名2またはファイル名3のファイルのレコードは，ファイル名1のファイルに引き渡されるとき，固定長集団項目同士の転記として扱うため，レコードの最後の文字位置の右側が半角空白(X'20')で埋められる。

ファイル名4のファイルが固定長レコードだけを含むとき，その固定長よりも少ない文字位置を含むファイル名1のファイルのレコードは，ファイル名4のファイルに引き渡されるとき，固定長集団項目同士の転記として扱うため，レコードの最後の文字位置の右側がEBCDIKコードの空白(X'40')で埋められる。

ファイル名4のファイルが固定長レコードだけを含むとき，その固定長よりも少ない文字位置を含むファイル名1のファイルのレコードは，ファイル名4のファイルに引き渡されるとき，固定長集団項目同士の転記として扱うため，レコードの最後の文字位置の右側が半角空白(X'20')で埋められる。

START文

−

索引ファイルの場合，KEY指定を書くとき，データ名1はファイル名1に関連する主レコードキーまたは副レコードキーとして指定されたデータ項目でなければならない。なお，データ名1に日本語項目および日本語編集項目を指定したときの規則は，この表のVOS3 COBOL85の「RECORD KEY句」および「ALTERNATE RECORD KEY句」に従う。

VOS3 COBOL85と同じ。

なお，データ名1に日本語項目および日本語編集項目を指定したときの規則は，この表のCOBOL2002の「RECORD KEY句」および「ALTERNATE RECORD KEY句」に従う。

STRING文

−

一意名3に日本語項目を指定したとき，定数はすべて日本語文字定数または表意定数SPACE(SPACES)でなければならない。

VOS3 COBOL85と同じ。

一意名3の用途が明示的または暗黙的なDISPLAY（日本語項目を除く）であるならば，定数はすべて文字定数または表意定数でなければならない。

VOS3 COBOL85と同じ。

一意名3に日本語項目を指定した場合，一意名4を除くすべての一意名は日本語項目を指定しなければならない。

VOS3 COBOL85と同じ。

一意名3の用途が明示的または暗黙的なDISPLAY（日本語項目を除く）であるならば，一意名4を除くすべての一意名の用途は，明示的または暗黙的なDISPLAY（日本語項目を除く）でなければならない。

VOS3 COBOL85と同じ。

一意名3に日本語項目を指定した場合，定数に表意定数SPACE(SPACES)を指定すると，1文字のKEISコードの空白(X'A1A1')として扱う。

一意名3に日本語項目を指定した場合，定数に表意定数SPACE(SPACES)を指定すると，1文字の日本語空白(X'8140')として扱う。

一意名3に日本語編集項目を指定してはならない。

VOS3 COBOL85と同じ。

STRING文の実行で，定数1の文字列または一意名1のデータ項目の内容が，英数字と英数字の間の転記の規則に従って，一意名3のデータ項目に転送される。ただし，空白づめは行われない。なお，一意名4を除く一意名および定数の字類がすべて日本語のデータ項目の場合の規則は，この表のVOS3 COBOL85の「MOVE文」に従う。

VOS3 COBOL85と同じ。

なお，一意名4を除く一意名および定数の字類がすべて日本語のデータ項目の場合の規則は，この表のCOBOL2002の「MOVE文」に従う。

UNSTRING文

−

一意名1に日本語項目または日本語編集項目を指定したとき，定数はすべて日本語文字定数または表意定数SPACE(SPACES)でなければならない。

VOS3 COBOL85と同じ。

一意名1の用途が明示的または暗黙的なDISPLAY（日本語項目または日本語編集項目を除く）であるならば，定数はすべて文字定数または表意定数でなければならない。

VOS3 COBOL85と同じ。

一意名1に日本語項目または日本語編集項目を指定した場合，一意名2，一意名3および一意名5はすべて日本語項目または日本語編集項目を指定しなければならない。

VOS3 COBOL85と同じ。

一意名1に日本語項目または日本語編集項目を指定した場合，一意名4は日本語項目を指定しなければならない。

VOS3 COBOL85と同じ。

一意名1の用途が明示的または暗黙的なDISPLAY（日本語項目または日本語編集項目を除く）であるならば，一意名2，一意名3，一意名4および一意名5の用途は，明示的または暗黙的なDISPLAY（日本語項目または日本語編集項目を除く）でなければならない。

VOS3 COBOL85と同じ。

一意名1に日本語項目または日本語編集項目を指定した場合，定数に表意定数SPACE(SPACES)を指定すると，1文字のKEISコードの空白(X'A1A1')として扱う。

一意名1に日本語項目または日本語編集項目を指定した場合，定数に表意定数SPACE(SPACES)を指定すると，1文字の日本語空白(X'8140')として扱う。

WRITE文

−

FROM指定のあるWRITE文は，次に示す文の実行と等しい。

MOVE文の規則に従った文：MOVE 一意名1 TO レコード名1

なお，レコード名1または一意名1に日本語項目および日本語編集項目を指定したときのMOVE文の規則は，この表のVOS3 COBOL85の「MOVE文」に従う。

それに続くFROM指定のない同じWRITE文。

VOS3 COBOL85と同じ。

なお，レコード名1または一意名1に日本語項目および日本語編集項目を指定したときのMOVE文の規則は，この表のCOBOL2002の「MOVE文」に従う。

拡張仕様

16進文字定数※5

16進文字定数を指定したVALUE句を，日本語項目および日本語編集項目に指定してはならない。

VOS3 COBOL85と同じ。

PASSWORD句，RECORD句およびALTERNATE RECORD句

データ名2に日本語項目を指定してはならない。

COBOL2002ではPASSWORD句を覚え書きとみなす。

APPLY PAGE-DEFINE句

データ名1に日本語項目を指定してはならない。

COBOL2002ではAPPLY PAGE-DEFINE句を覚え書きとみなす。

EXAMINE文とTALLY特殊レジスタ

一意名1に日本語項目および日本語編集項目を指定してはならない。

定数1〜定数4は，1文字からなる文字定数か，符号のない1けたの整数か，またはALL定数，記号文字以外の表意定数でなければならない。日本語文字定数は，指定してはならない。

VOS3 COBOL85と同じ。

MOVE文（日付と時刻用）

WHEN-COMPILED

CURRENT-DATE

TIME-OF-DAY

一意名に日本語項目および日本語編集項目を指定してはならない。

VOS3 COBOL85と同じ。

TRANSFORM文

一意名1〜一意名3に日本語項目を指定してはならない。

定数2および定数3に日本語文字定数を指定してはならない。

VOS3 COBOL85と同じ。

CURRENT-DATE関数

一意名1に日本語項目および日本語編集項目を指定してはならない。

VOS3 COBOL85と同じ。

WHEN-COMPILED関数

一意名1に日本語項目および日本語編集項目を指定してはならない。

VOS3 COBOL85と同じ。

ENTRY文

定数に日本語文字定数を指定してはならない。

VOS3 COBOL85と同じ。

報告書作成機能

CONTROL句

データ名1に日本語項目および日本語編集項目を指定したときの比較の規則は，この表のVOS3 COBOL85の「条件式（比較条件）」に従う。

データ名1に日本語項目および日本語編集項目を指定したときの比較の規則は，この表のCOBOL2002の「条件式（比較条件）」に従う。

特殊入出力装置の取扱い

JIS標準ファイル

（PICTURE句）

文字列に日本語および日本語編集を指定してはならない。

JIS標準ファイルは未サポート。

直接，DAM相対，索引順ファイルの取扱い

ACTUAL KEY句

トラック識別子

VOS3 COBOL85は，ACTUAL KEYのデータ名の先頭4バイトを2進形式のトラック識別子とみなす。利用者はこれを5けた(PIC S9(5))の2進形式の整数項目として定義しておかなければならない。このため，LANGOPT=(D)指定時，トラック識別子として日本語項目および日本語編集項目を指定した場合の実行結果は保証しない。

ACTUAL KEY句は未サポート。

レコード識別子

ACTUAL KEYのデータ名のトラック識別子を除いた残りの部分がレコード識別子であり，その大きさは1〜255バイトでなければならない。レコード識別子はPICTURE（形式）句やUSAGE（用途）句などでどのように記述されていても，VOS3 COBOL85は，割り当てたバイト数をもつ英数字項目とみなして処理する。

キーの一致，不一致の判定は，英数字項目同士の比較条件の規則に従って行う。

NOMINAL KEY句

DAM相対ファイル

データ名に日本語項目および日本語編集項目を指定してはならない。

NOMINAL KEY句は未サポート。

索引順ファイル

データ名に日本語項目および日本語編集項目を指定してはならない。

データベース機能

サブスキーマ記述項

データ名1〜データ名3およびデータ名6に日本語項目を指定してはならない。

VOS3 COBOL85と同じ。

CONNECT文

データ名1に日本語項目を指定してはならない。

VOS3 COBOL85と同じ。

DISCONNECT文

データ名1に日本語項目を指定してはならない。

VOS3 COBOL85と同じ。

ERASE文

データ名1に日本語項目を指定してはならない。

VOS3 COBOL85と同じ。

FETCH文

データ名1，データ名2およびデータ名3に日本語項目を指定してはならない。

VOS3 COBOL85と同じ。

FIND文

データ名に日本語項目を指定してはならない。

VOS3 COBOL85と同じ。

FINISH文

データ名1およびデータ名2に日本語項目を指定してはならない。

VOS3 COBOL85と同じ。

GET文

データ名1，データ名2およびデータ名3に日本語項目を指定してはならない。

VOS3 COBOL85と同じ。

MODIFY文

データ名1およびデータ名2に日本語項目を指定してはならない。

VOS3 COBOL85と同じ。

NULLIFY文

データ名に日本語項目を指定してはならない。

VOS3 COBOL85と同じ。

RECONNECT文

データ名に日本語項目を指定してはならない。

VOS3 COBOL85と同じ。

STORE文

データ名1，データ名2およびデータ名3に日本語項目を指定してはならない。

VOS3 COBOL85と同じ。

注※1

COBOL2002では，日本語の表意定数として，次に示すものが対象である。

ZERO（ZEROS/ZEROES）

SPACE（SPACES）

HIGH-VALUE（HIGH-VALUES）

LOW-VALUE（LOW-VALUES）

注※2

VOS3 COBOL85では，日本語の表意定数としてSPACE(SPACES)だけが対象である。

注※3

INTOに指定されたデータ名が日本語項目の場合でも集団項目の転記となるため，日本語項目の右端に空白を補う場合は，半角空白(X'4040')となる。

注※4

INTOに指定されたデータ名が日本語項目の場合でも集団項目の転記となるため，日本語項目の右端に空白を補う場合は，半角空白(X'2020')となる。

注※5

COBOL2002では，16進英数字定数となる。

付録B.2　比較条件の組み合わせ

比較条件の組み合わせを次の表に示す。

表B‒2　比較条件の組み合わせ

左辺

（右辺）

右辺（左辺）

VOS3 COBOL85

LANGOPT=(D)オプション指定時

COBOL2002

-JPN,V3JPNSpaceオプション指定時

日本語

日本語編集

日本語定数※1

日本語集団項目

日本語

日本語編集

日本語定数※1

英数字集団項目

○

○

○

○

○

○

英字

×

×

×

×

×

×

英数字

×

×

×

×

×

×

英数字編集

×

×

×

×

×

×

数字編集

×

×

×

×

×

×

QUOTE

×

×

×

×

×

×

SPACE

○

○

×

○

○

×

HIGH-VALUE

×

×

×

○※2

○※2

×

LOW-VALUE

×

×

×

○※2

○※2

×

ZERO

×

×

×

○※2

○※2

×

文字定数

×

×

×

×

×

×

ALL文字定数

×

×

×

×

×

×

数字定数

×

×

×

×

×

×

外部10進

×

×

×

×

×

×

内部10進

×

×

×

×

×

×

2進

×

×

×

×

×

×

指標名

×

×

×

×

×

×

指標データ

×

×

×

×

×

×

ブール

×

×

×

×

×

×

外部浮動

×

×

×

×

×

×

内部浮動

×

×

×

×

×

×

アドレス名

×

×

×

×

×

×

アドレスデータ

×

×

×

×

×

×

日本語

○

○

○

○

○

○

日本語編集

○

○

○

○

○

○

日本語定数

○

○

×

○

○

×

ALL日本語定数

○

○

×

○

○

×

（凡例）

○：組み合わせて使用できる。

×：組み合わせて使用できない。

注※1

日本語定数には，ALL指定も含む。

注※2

VOS3 COBOL85ではコンパイルエラーとなるが，COBOL2002では組み合わせ可能となる。

なお，COBOL2002での各表意定数の扱いは，次のとおりとなる。

表意定数HIGH-VALUE：2バイトのX'FFFF'として扱う。

表意定数LOW-VALUE：2バイトのX'0000'として扱う。

表意定数ZERO：全角文字のゼロ(X'824F')として扱う。

付録B.3　字類条件の組み合わせ

字類条件の組み合わせを次の表に示す。

表B‒3　字類条件の組み合わせ

左辺

（右辺）

右辺（左辺）

VOS3 COBOL85

LANGOPT=(D)オプション指定時

COBOL2002

-JPN,V3JPNSpaceオプション指定時

NUMERIC

ALPHABETIC

ALPHABETIC-

LOWER

ALPHABETIC-

UPPER

BOOLEAN

字類名

NUMERIC

ALPHABETIC

ALPHABETIC-

LOWER

ALPHABETIC-

UPPER

BOOLEAN

字類名

英数字集団項目

○

○

○

○

○

○

○

○

英字

×

○

×

○

×

○

×

○

英数字

○

○

○

○

○

○

○

○

英数字編集

○

○

×

○

○

○

×

○

数字編集

○

○

×

○

○

○

×

○

外部10進

○

×

×

○

○

○

×

○

内部10進

○

×

×

×

○

×

×

○

2進

×

×

×

×

×

×

×

×

指標名

×

×

×

×

×

×

×

×

指標データ

×

×

×

×

×

×

×

×

ブール

×

×

○

×

×

×※1

○※2

×

外部浮動

×

×

×

×

×

×

×

×

内部浮動

×

×

×

×

×

×

×

×

アドレス名

×

×

×

×

×

×

×

×

アドレスデータ

×

×

×

×

×

×

×

×

日本語

×

×

×

×

×

×

×

×

日本語編集

×

×

×

×

×

×

×

×

（凡例）

○：組み合わせて使用できる。

×：組み合わせて使用できない。

注※1

次の項目を指定した場合，出力するメッセージの種類が異なる。

・ALPHABETIC指定の場合，KCCC4451C-Sを出力する。

・ALPHABETIC-LOWER指定の場合，KCCC4457C-Sを出力する。

・ALPHABETIC-UPPER指定の場合，KCCC4466C-Sを出力する。

注※2

内部ブール項目の場合は，エラーメッセージを出力する。

付録B.4　転記の組み合わせ

(1)　受け取り側作用対象が日本語集団項目，日本語項目または日本語編集項目の場合

受け取り側作用対象が日本語集団項目，日本語項目または日本語編集項目の場合の転記の組み合わせを次の表に示す。

表B‒4　転記の組み合わせ（受け取り側作用対象が日本語集団項目，日本語項目または日本語編集項目の場合）

送り出し側作用対象

受け取り側作用対象

VOS3 COBOL85

LANGOPT=(D)指定時

COBOL2002

-JPN,V3JPNSpaceオプション指定時

日本語

日本語編集

日本語集団項目

日本語

日本語編集

英数字集団項目

○

○

英字

×

×

英数字

×

×

英数字編集

×

×

数字編集

×

×

QUOTE

×

×

SPACE

○

○

HIGH-VALUE

×

○※

LOW-VALUE

×

○※

ALL定数

×

×

ZERO

×

○※

文字定数

×

×

数字定数

×

×

外部10進

×

×

内部10進

×

×

2進

×

×

外部ブール

×

×

内部ブール

×

×

ブール定数

×

×

外部浮動

×

×

内部浮動

×

×

日本語

○

○

日本語編集

○

○

日本語文字定数

○

○

ALL日本語文字定数

○

○

（凡例）

○：組み合わせて使用できる。

×：組み合わせて使用できない。

注※

VOS3 COBOL85ではコンパイルエラーとなるが，COBOL2002では組み合わせ使用できる。

なお，COBOL2002での各表意定数の扱いは，次のとおりとなる。

表意定数HIGH-VALUE：2バイトのX'FFFF'

表意定数LOW-VALUE：2バイトのX'0000'

表意定数ZERO：全角文字のゼロ(X'824F')

(2)　送り出し側作用対象が日本語集団項目，日本語項目または日本語編集項目の場合

送り出し側作用対象が日本語集団項目，日本語項目または日本語編集項目の場合の転記の組み合わせを次の表に示す。

表B‒5　転記の組み合わせ(送り出し側作用対象が日本語集団項目，日本語項目，日本語編集項目または日本語定数の場合)

受け取り側作用対象

送り出し側作用対象

VOS3 COBOL85

LANGOPT=(D)指定時

COBOL2002

-JPN,V3JPNSpaceオプション指定時

日本語

日本語編集

日本語定数

日本語集団項目

日本語

日本語編集

日本語定数

英数字集団項目

○

○

英字

×

×

英数字

×

×

英数字編集

×

×

数字編集

×

×

外部10進

×

×

内部10進

×

×

2進

×

×

外部ブール

×

×

内部ブール

×

×

外部浮動

×

×

内部浮動

×

×

日本語

○

○

日本語編集

○

○

（凡例）

○：組み合わせて使用できる。

×：組み合わせて使用できない。

付録C　STANDARDオプションと-StdVersionオプションを指定した場合の仕様の相違

ここでは，VOS3 COBOL85でSTANDARD=(1)またはSTANDARD=(2)オプションを指定した場合と，COBOL2002で-StdVersion,1または-StdVersion,2オプションを指定した場合の仕様の相違点について説明する。

なお，-StdVersionオプションについては，マニュアル「COBOL2002　ユーザーズガイド」または「COBOL2002　使用の手引　手引編」を参照のこと。

表C‒1　VOS3 COBOL85とCOBOL2002の仕様の比較

項番

差異の生じる言語仕様

VOS3 COBOL85

COBOL2002

STANDARD=(1)指定時

STANDARD=(2)指定時

-StdVersion,1指定時

-StdVersion,2指定時

1

CURRENCY SIGN句で指定する定数

L，=，/を指定できる。

L，=，/を指定できない。

=，/が指定できる。

=，/が指定できない。

2

SELECT OPTIONAL句

覚え書きとする。

覚え書きとしない。

VOS3 COBOL85と同じ。

3

RESERVE句

コンパイラが自動的に割り当てる一つの入出力領域に加えて，RESERVE句で指定した個数の入出力領域を確保する。

なお，RESERVE句に補助語ALTERNATEが書かれていると，STANDARDの指定にかかわらずSTANDARD=(1)の仕様が使用される。

RESERVE句で指定した個数の入出力領域を確保する。

覚え書きとする。

4

比較条件の略記法におけるNOT

略記法の条件中のNOTが，比較演算子一部とも論理演算子とも取れる場合は，論理演算子とみなす。

NOTの直後にGREATER，>，LESS，<，EQUAL，=，>=，<=のどれかが続くとき，NOTは比較条件の一部となる。これ以外のNOTは論理演算子とみなす。

VOS3 COBOL85と同じ。

5

MOVE文の位取り

送り側が位取りした整数項目（PICTURE句の右端文字がPのとき）受け取り側が英数字項目または英数字編集項目であれば，あとに続くゼロは切り捨て空白とする。

左記の場合，あとに続くゼロを切り捨てない。

VOS3 COBOL85と同じ。

6

UNSTRING文のDELIMITED BY ALL指定

二つ以上の連続する区切り文字が出現した場合，区切り文字の受け取り領域に入るだけ，区切り文字を移す。

二つ以上の連続する区切り文字が出現した場合，区切り文字の受け取り領域には1個（1組）の区切り文字しか移さない。

VOS3 COBOL85と同じ。

7

COPY文の展開

第1次規格の仕様に従った書き方は，旧仕様書として展開する。

第1次規格の仕様に従っていない書き方は，第2次規格の仕様に従ったCOPY文とみなし展開する。

第2次規格以降の仕様に従ってCOPY文を展開する。

VOS3 COBOL85と同じ。

8

独立区分中のPERFORM文で固定区分中の手続きを呼び出したときの扱い

手続きを出て，呼び出し元に戻ると，独立区分は再度初期設定される。

手続きを出て，呼び出し元に戻ると，独立区分は呼び出し時と同じである。

COBOL2002では，VOS3 COBOL85の区分化機能は未サポートである。

9

JUST句の処理

JUST句の指定がある英数字，英字，英数字編集にVALUE句で初期値を与えるとき，JUST句の機能を働かせる。

左記の場合，JUST句の機能を働かせない。

VOS3 COBOL85と同じ。

10

WRITE文のADVANCING句の仮定

一つのファイルに対する複数個のWRITE文でADVANCING句があるものとないものを混用した場合，ADVANCING句のないものに対してBEFORE ADVANCING 1かAFTER ADVANCING 1のどちらかを仮定する。

ADVANCING句指定のあるWRITE文の指定がすべてBEFOREのときBEFORE ADVANCING 1，すべてAFTERのときAFTER ADVANCING 1，BEFOREとAFTER混在のときBEFORE ADVANCING 1を仮定する。

左記の場合，常にAFTER ADVANCING 1を仮定する。

VOS3 COBOL85と同じ。

11

EVALUATE文のALSOの指定

選択主体，または選択対象を複数記述する場合は，それぞれを空白で区切って指定する（VOS3 COBOL85では，選択主体，または選択対象を複数記述する場合，ALSO指定で区切ってもよい）。

選択主体，および選択対象を複数記述する場合，ALSO指定は必須である。

12

PERFORM文のVARYING…AFTER指定（一つのPERFORM文での2〜3重ループ）がある場合の反復制御変数の制御方法

反復制御変数の初期化を行う位置を次のようにする。

TEST AFTER句指定時

外側のループの反復制御変数をBY指定の値で増加させてから，内側のループの反復制御変数をFROM指定の変数で再び初期化する。

TEST BEFORE句指定時

内側のループの反復制御変数をFROM指定の変数で初期化してから，外側のループの反復制御変数をBY指定の値で増加させる。

VOS3 COBOL85と同じ。

13

END−動詞の記述

四則演算，入出力などの文が条件文となっているときだけEND−動詞を記述できる。条件文と文の対応を次に示す。

ON SIZE ERRORの場合

ADD

SUBTRACT

MULTIPLY

DIVIDE

COMPUTE

AT END／AT EOP／INVALID KEY の場合

DELETE

READ

REWRITE

WRITE

START

ON OVERFLOW／ON EXCEPTIONの場合

CALL

STRING

UNSTRING

左記に示した文が無条件のときでもEND−動詞を記述できる。

14

SEARCH文での部分参照の指定

第3次規格でのサポートであり，部分参照は指定できない。

制限のない個所に部分参照を指定できる。

付録D　このマニュアルの参考情報

このマニュアルを読むに当たっての参考情報を示します。

付録D.1　関連マニュアル

このマニュアルは次のマニュアルと関連があります。必要に応じてお読みください。

COBOL2002　ユーザーズガイド　（4010-1J-800）

COBOL2002　操作ガイド　（4010-1J-801）

COBOL2002　使用の手引　手引編　（3021-3-602）

COBOL2002　使用の手引　操作編　（3021-3-603）

COBOL2002　言語　標準仕様編　（4010-1J-804）

COBOL2002　Cosminexus連携機能ガイド　（4010-1J-806）

COBOL2002　Javaプログラム呼び出し機能ガイド　（4010-1J-807）

COBOL2002　メッセージ　（4010-1J-809）

VOS3 COBOL85　言語　（6190-3-723）

OpenTP1 プログラム作成リファレンス COBOL言語編　（3000-3-D55）

XMAP3 Version 5 画面・帳票サポートシステム XMAP3 概説　（3020-7-511）

XMAP3 Version 5 画面・帳票サポートシステム XMAP3 開発ガイド　（3020-7-512）

XMAP3 Version 5 画面・帳票サポートシステム XMAP3 プログラミングガイド　（3020-7-513）

XMAP3 Version 5 画面・帳票サポートシステム XMAP3 実行ガイド　（3020-7-514）

VOS3 データマネジメントシステム XDM E2系 プログラム作成の手引 （XDM/RD E2）　（6190-6-638）

VOS3 データマネジメントシステム XDM E2系 プログラム作成の手引 （XDM/SD）　（6190-6-652）

VOS3 データマネジメントシステム XDM E2系 XDM/RD E2 SQLリファレンス　（6190-6-656）

付録D.2　このマニュアルでの表記

このマニュアルでは，マイクロソフト製品の名称を次のように表記しています。

マニュアルでの表記

製品名

MSMQ

Microsoft Message Queuing Server

SQL Server

Microsoft SQL Server

Windows

Windows 10(x64)

Windows 10 Pro 日本語版(64ビット版)

Windows 10 Enterprise 日本語版(64ビット版)

Windows 11

Windows 11 Pro 日本語版

Windows 11 Enterprise 日本語版

Windows Server 2019

Windows Server 2019 Standard 日本語版

Windows Server 2019 Datacenter 日本語版

Windows Server 2022

Windows Server 2022 Standard 日本語版

Windows Server 2022 Datacenter 日本語版

このマニュアル中では，「このシステム」と表現している場合「COBOL2002」を示しています。

また，このマニュアルは，製品種別によって相違点があります。本文中での製品種別ごとの表記を次に示します。

マニュアルでの表記

該当する製品の形名

Windows COBOL2002※1

Windows(x86) COBOL2002

P-2636-2354

P-2436-6354

P-2636-4354

P-2636-7354

Windows(x64) COBOL2002※2

P-2936-2354

P-2936-6354

P-2936-7354

UNIX COBOL2002※1

AIX COBOL2002

AIX(32) COBOL2002

P-1M36-1141

AIX(64) COBOL2002※2

P-1M36-1241

Linux COBOL2002

Linux(x86) COBOL2002

−※3

Linux(x64) COBOL2002※2

P-9W36-1241

注※1

Windows COBOL2002とUNIX COBOL2002で機能差がない場合，COBOL2002と表記しています。

注※2

Windows(x64) COBOL2002，AIX(64) COBOL2002，Linux(x64) COBOL2002で機能差がない場合，64bit版COBOL2002と表記しています。

注※3

該当する製品の形名の詳細は，「リリースノート」でご確認ください。

また，このマニュアルでは各製品を次のように表記しています。

マニュアルでの表記

製品名

Excel

Microsoft Office Excel

Microsoft Excel

UNIX

AIX

AIX V7.1

AIX V7.2

AIX 7.3

Linux

Linux Server 7 (64-bit x86_64)

Red Hat Enterprise Linux Server 7 (64-bit x86_64)

Linux Server 8 (64-bit x86_64)

Red Hat Enterprise Linux Server 8 (64-bit x86_64)

Linux Server 9 (64-bit x86_64)

Red Hat Enterprise Linux Server 9 (64-bit x86_64)

XMAP3

XMAP3 Server

XMAP3 Developer Version 5

XMAP3 Server Runtime Version 5

XMAP3 Client Runtime Version 5

日立COBOL2002のことを日立COBOL2002，または単にCOBOL2002と表記しています。また，プラットフォームを明確にする必要がある場合は，「Windows COBOL2002」「UNIX COBOL2002」のように表記しています。

日立COBOL85のことを日立COBOL85，または単にCOBOL85と表記しています。また，プラットフォームを明確にする必要がある場合は，「PC COBOL85」「VOS3 COBOL85」のように表記しています。

XMAP3の製品を区別する必要がある場合は，それぞれの製品名称を表記しています。

コンパイラオプションの説明では，次の表記を使用します。

「XXXオプション」，または単に「XXX」とオプション名が表記されている場合

XXXオプションについて，サブオプションの組み合わせを含む，すべての場合を意味します。

「XXX,YYYオプション」，または単に「XXX,YYY」とサブオプションを含めたオプション名が表記されている場合

XXX,YYYオプションだけの場合を意味します。

「XXXコンパイラオプション」と表記されている場合

リンカオプションなど，ほかのオプションと明確に区別する必要がある場合を意味します。

（例1）

「-Compileオプション」または「-Compile」と記載している場合，-Compileオプションのサブオプションの組み合わせすべて（-Compile,CheckOnly/-Compile,NoLink）を意味します。

（例2）

「-Compile,CheckOnlyオプション」または「-Compile,CheckOnly」と記載している場合，-Compile,CheckOnlyだけを意味します。

索引

記号

-Cblctr[1]

-CompatiV3[1]、[2]

-DebugLine[1]

-DigitsTrunc[1]

-DoubleQuote[1]

-H8Switch[1]、[2]

-IgnoreLCC[1]

-JPN,Alnum[1]

-JPN,V3JPNSpace[1]

-JPNオプション[1]

-StdVersion,1[1]、[2]

-StdVersion,2[1]

-TruncCheck[1]

-TruncCheck,Binary[1]

-TruncCheckオプション[1]

-UniObjGen〔CONVERT-TO-VARIANT関数〕[1]

-UniObjGen〔DISPLAY文（SCREEN SECTION）〕[1]

-UniObjGen〔HiRDBによる索引ファイル入出力機能〕[1]

-UniObjGen〔INVOKE文〕[1]

-UniObjGen〔PICTURE句（SCREEN SECTION）〕[1]

-UniObjGen〔PROMPT句（SCREEN SECTION）〕[1]

-UniObjGen〔RESET句（WINDOW SECTION）〕[1]

-UniObjGen〔SET文〕[1]

-UniObjGen〔TYPE-OF-PROPERTY関数〕[1]

-UniObjGen〔VALUE句（SCREEN SECTION）〕[1]

-UniObjGen〔VALUE句（WINDOW SECTION）〕[1]

-UniObjGen〔アドレス型関数〕[1]

-UniObjGen〔全般規則（日本語機能）〕[1]

-UniObjGen〔手続き部〕[1]

-UniObjGen〔ファイル記述項〕[1]

-UniObjGen〔プログラム間連絡機能の環境部〕[1]

-UniObjGen〔プログラム名，クラス名，インタフェース名，メソッド名および利用者定義関数名の日本語指定〕[1]

-V3Rec,Fixed[1]

-V3Rec,Variable[1]

数字

16進英数字定数[1]

16進数字定数[1]

16進日本語文字定数[1]

1バイト2進機能[1]

2進項目の拡張[1]

2進項目のけた落とし[1]

78定数名の記述[1]

A

ACCEPT COMMAND-LINE[1]

ACCEPT文（CSVファイル入出力機能）[1]

ACCEPT文（SCREEN SECTION）[1]

ACCEPT文（WINDOW SECTION）[1]

ACCEPT文（数字項目のけた拡張機能）[1]

ACCEPT文（ブール形式データを扱う機能）[1]

ACCEPT文（浮動小数点形式データを扱う機能）[1]

ACCEPT文による入出力[1]

ACCEPT文の拡張[1]

ADDRESSED句[1]

ADDR関数[1]

ADDR関数の参照[1]

ADD文[1]

ADD文（数字項目のけた拡張機能）[1]

ADVANCING指定なしのWRITE文での仮定[1]

ALTERNATE RECORD KEY句[1]、[2]

APPLY FILE-SHARE句[1]

APPLY FORMS-NAME句[1]

APPLY FORMS-OVERLAY句[1]、[2]

APPLY WINDOW-CONTROL-1句[1]

APPLY WRITE-ONLY句[1]

APPLY句[1]

ASSIGN句のMULTIPLE REEL／UNIT指定[1]

ASSIGN句のデータ名指定[1]

AUTO句[1]

B

BACKGROUND-COLOR句[1]

BELL句[1]

BETWEEN述語[1]

BLANK WHEN ZERO句[1]、[2]

BLANK WHEN ZERO句（数字項目のけた拡張機能）[1]

BLANK句[1]

BLINK句[1]、[2]

BLOCK CONTAINS句（数字項目のけた拡張機能）[1]

C

CALL文（下線付き定数の呼び出し）[1]

CALL文（数字項目のけた拡張機能）[1]

CALL文（データベースアクセス機能）[1]

CALL文（動的長基本項目機能）[1]

CALL文（浮動小数点形式データを扱う機能）[1]

CALL文〔C言語インタフェース機能〕[1]

CALL文〔OLE2オートメーションインタフェース機能〕[1]

CALL文の引数指定の拡張[1]

CANCEL文[1]、[2]

CBL-CTR特殊レジスタ[1]

CD[1]、[2]

CDECL[1]

CHARACTER TYPE句[1]、[2]

CLOSE文（CSVファイル入出力機能）[1]

CLOSE文（HiRDBによる索引ファイル入出力機能）[1]

CLOSE文（データベースアクセス機能）[1]

CLOSE文（テキストファイル機能）[1]

CLOSE文（ファイル共用機能）[1]

COBOLデータからVARIANT値への変換規則[1]

COBOLとC言語の連携〔動的長基本項目機能〕[1]

COBOLの語[1]

COBOLのプログラム内で使用する例〔動的長基本項目機能〕[1]

COBOLプログラム間の連携〔動的長基本項目機能〕[1]

CODE句[1]

COLOR句[1]

COLUMN NUMBER句[1]

COLUMN句[1]

COMMIT文[1]、[2]、[3]

COMPUTATIONAL-1[1]、[2]、[3]、[4]

COMPUTATIONAL-2[1]、[2]、[3]、[4]

COMPUTATIONAL-5[1]

COMPUTATIONAL-X[1]

COMPUTE文[1]、[2]、[3]

COMPUTE文（数字項目のけた拡張機能）[1]

COMPUTE文の作用対象[1]

COMP-1[1]、[2]、[3]、[4]

COMP-2[1]、[2]、[3]、[4]

COMP-5[1]

COMP-X[1]

COMP-X項目[1]

COMP-X項目が2進項目として扱われる個所[1]

CONNECT文[1]、[2]

CONSOLE IS CRT句[1]

CONTROL FOOTING指定[1]

CONTROL句[1]

CONVERT-CODE関数[1]

CONVERT-TO-VARIANT関数[1]

COPY文[1]

CORRESPONDING指定のあるMOVE文[1]

COUNT-CHAR関数[1]、[2]

CREATEOBJメソッドの操作[1]

CRT STATUS句[1]

CSVファイル[1]

CSVファイル入出力機能[1]

CSVファイル入出力機能〔概説〕[1]

CURRENCY SIGN句[1]

CURSOR句[1]

C言語インタフェース機能[1]

D

DATA FORMAT句[1]

DATA RECORDS句（数字項目のけた拡張機能）[1]

DATA RECORD句[1]

DEALLOCATE PREPARE文[1]

DELETE文[1]、[2]、[3]

DETAIL指定[1]

DISABLE文[1]、[2]

DISCONNECT文[1]、[2]

DISPLAY COMMAND-LINE[1]

DISPLAY文（COMP-X項目）[1]

DISPLAY文（CSVファイル入出力機能）[1]

DISPLAY文（SCREEN SECTION）[1]

DISPLAY文（WINDOW SECTION）[1]

DISPLAY文（機能名を直接指定）[1]

DISPLAY文（数字項目のけた拡張機能）[1]

DISPLAY文（動的長基本項目機能）[1]

DISPLAY文（ブール形式データを扱う機能）[1]

DISPLAY文（浮動小数点形式データを扱う機能）[1]

DISPLAY文〔アドレス操作機能〕[1]

DISPLAY文による入出力[1]

DISPLAY-OF関数[1]、[2]

DIVIDE文[1]

DIVIDE文（数字項目のけた拡張機能）[1]

DYNAMIC LENGTH STRUCTURE句[1]

DYNAMIC LENGTH句[1]

DYNAMIC指定[1]

E

ENABLE文[1]

ENTER-CHECK句[1]

ENTRY文[1]

ENTRY文（数字項目のけた拡張機能）[1]

ERASE句[1]

ERASE文[1]、[2]

EVALUATE文[1]、[2]

EVALUATE文（数字項目のけた拡張機能）[1]

EVALUATE文（動的長基本項目機能）[1]

EXAMINE文（数字項目のけた拡張機能）[1]

EXAMINE文とTALLY特殊レジスタ[1]

EXEC SQL[1]

EXECUTE IMMEDIATE文[1]

EXECUTE文[1]

EXISTS述語[1]

EXIT PROGRAM文[1]

EXIT USE文[1]

EXTERNAL句[1]

EXTERNAL句（数字項目のけた拡張機能）[1]

EXTERNAL-PROGRAM SECTION[1]

F

FD[1]、[2]

FETCH文[1]、[2]

FIELD TYPE句[1]

FILE STATUS句のデータ名2指定[1]

FILE-CONTROL[1]

FILE-LIMIT句[1]

FIND文[1]

FOREGROUND-COLOR句[1]

FROM句[1]

FULL句[1]

G

GENERATE文[1]

GETOBJメソッドの操作[1]

GET文[1]

GLOBAL句[1]

GOBACK文[1]

GO TO MORE-LABELS文[1]

GO TO文（数字項目のけた拡張機能）[1]

GRID句[1]

GROUP BY句[1]

GROUP-USAGE句（日本語機能）[1]

H

HAVING句[1]

HELP WINDOW句[1]

HIGHLIGHT句[1]

HIGH-INTENSITY句[1]

HiRDBによる索引ファイル入出力機能[1]

HiRDBによる索引ファイル入出力機能〔概説〕[1]

HITAC8000シリーズからの移行用オプション[1]、[2]

I

IF文（数字項目のけた拡張機能）[1]

IF文（動的長基本項目機能）[1]

INITIALIZE文[1]、[2]、[3]

INITIALIZE文（数字項目のけた拡張機能）[1]

INITIALIZE文（動的長基本項目機能）[1]

INSERT文[1]

INSPECT文[1]、[2]

INSPECT文（数字項目のけた拡張機能）[1]

INVOKE文[1]、[2]

INVOKE文（オブジェクト指向）（数字項目のけた拡張機能）[1]

IN述語[1]

J

JUSTIFIED句（SCREEN SECTION）[1]

JUSTIFIED句（WINDOW SECTION）[1]

JUSTIFIED句（日本語機能）[1]

JUSTIFIED句（ブール形式データを扱う機能）[1]

JUSTIFIED句の処理〔第1次規格以前の仕様〕[1]

L

LABEL RECORD句のデータ名指定[1]

LABEL-RETURN特殊レジスタ[1]

LEFTLINE句[1]

LENGTH関数（動的長基本項目機能）[1]

LENGTH-OF-SUBSTRING関数[1]、[2]

LENGTH-OF-VARIANT関数[1]

LETTER句[1]

LIKE述語[1]

LINAGE句（数字項目のけた拡張機能）[1]

LINE NUMBER句[1]、[2]

LINE句[1]

LINE-COUNTER特殊レジスタ[1]

LOCK MODE指定[1]

LOWLIGHT句[1]

M

MODIFY文[1]

MOVE文[1]、[2]、[3]

MOVE文（数字項目のけた拡張機能）[1]

MOVE文（動的長基本項目機能）[1]

MOVE文（日付と時刻用）[1]

MOVE文の位取り[1]

MULTIPLY文[1]

MULTIPLY文（数字項目のけた拡張機能）[1]

N

NATIONAL-OF関数[1]、[2]

NEXT GROUP句[1]

NEXT指定[1]

NULLIFY文[1]

null value[1]

NULL述語[1]

O

OCCURS句[1]、[2]

OCCURS句（数字項目のけた拡張機能）[1]

OLE2オートメーションインタフェース機能[1]

OLE2オートメーションインタフェース機能〔概説〕[1]

OLEオブジェクト[1]

OLEオブジェクト参照データ項目[1]、[2]

OLEオブジェクト参照データ比較の条件式[1]

OLEプロパティ[1]

OLEプロパティからの値の取得[1]

OLEプロパティへの値の設定[1]

OLEメソッド[1]

OLEメソッドの操作[1]

ON SIZE ERROR／NOT ON SIZE ERROR指定[1]

ON SIZE ERROR指定[1]

OpenTP1[1]

OPEN文（CSVファイル入出力機能）[1]

OPEN文（HiRDBによる索引ファイル入出力機能）[1]

OPEN文（データベースアクセス機能）[1]

OPEN文（テキストファイル機能）[1]

OPEN文（ファイル共用機能）[1]

ORGANIZATION IS CSV[1]

ORGANIZATION IS LINE SEQUENTIAL句[1]

ORGANIZATION句[1]

OVERLINE句[1]

P

PAGE FOOTING指定[1]

PAGE HEADING指定[1]

PAGE LIMIT句[1]

PAGE-COUNTER特殊レジスタ[1]

PASCAL[1]

PASSWORD句[1]

PERFORM文[1]

PERFORM文（数字項目のけた拡張機能）[1]

PERFORM文での評価順序[1]

PERFORM文の実行範囲の出口の共有[1]

PICTURE記号[1]

PICTURE句（COMP-X項目）[1]

PICTURE句（SCREEN SECTION）[1]

PICTURE句（WINDOW SECTION）[1]

PICTURE句（アドレス操作機能）[1]

PICTURE句（数字項目のけた拡張機能）[1]

PICTURE句（日本語機能）[1]

PICTURE句（ブール形式データを扱う機能）[1]

PICTURE句（浮動小数点形式データを扱う機能）[1]

POINTER項目[1]

PREPARE文[1]

PREVIOUS指定[1]

PROMPT句[1]

R

READ文（CSVファイル入出力機能）[1]

READ文（HiRDBによる索引ファイル入出力機能）[1]

READ文（索引ファイル機能の拡張）[1]

READ文（数字項目のけた拡張機能）[1]

READ文（テキストファイル機能）[1]

READ文（ファイル共用機能）[1]

READ文による入出力[1]

RECEIVE文[1]、[2]

RECONNECT文[1]

RECORDING MODE句[1]

RECORD KEY句[1]、[2]

RECORD句[1]

REDEFINES句[1]

RELEASE文[1]

RELEASE文（数字項目のけた拡張機能）[1]

RENAMES句[1]

REPEAT COLUMN句[1]

REPEAT LINE句[1]

REPLACING指定[1]

REPLY文[1]

REPORT FOOTING指定[1]

REPORT句[1]

REQUIRED句[1]

RERUN句[1]

RESERVE句のALTERNATE指定[1]

RESET句[1]、[2]

RETURNING[1]、[2]

RETURN文（数字項目のけた拡張機能）[1]

RETURN-CODE[1]

REVERSE句[1]

REVERSE-VIDEO句[1]

REWRITE文[1]、[2]、[3]、[4]

REWRITE文（数字項目のけた拡張機能）[1]

ROLLBACK文[1]、[2]、[3]

ROUNDED指定[1]

RULE LINE句[1]

S

SCREEN SECTION（数字項目のけた拡張機能）[1]

SEARCH文[1]、[2]

SEARCH文（数字項目のけた拡張機能）[1]

SECRET句[1]

SECURE句[1]

SELECT OPTIONAL句[1]

SELECT句のNOT OPTIONAL指定[1]

SELECT文[1]

SEND文[1]、[2]

SET CONNECTION文[1]

SET文[1]、[2]、[3]

SET文（数字項目のけた拡張機能）[1]

SIGN句[1]、[2]

SIZE ERROR指定[1]

SIZE句[1]

SORT-CORE-SIZE[1]

SORT-RETURN[1]

SOURCE句[1]、[2]

SPECIAL-NAMES〔CSVファイル入出力機能〕[1]

SPECIAL-NAMES〔WINDOW SECTION〕[1]

SPECIAL-NAMES〔コマンド行，環境変数へのアクセス〕[1]

SPECIAL-NAMES〔コマンド行へのアクセス（一括取得）〕[1]

SPECIAL-NAMES〔プログラム間連絡機能〕[1]

SQLCODE変数[1]、[2]

SQL埋め込みCOBOLプログラム[1]

SQLの概要[1]

SQLの規則とCOBOL言語の規則との異なる部分[1]

SQL連絡領域[1]

START文[1]、[2]、[3]

START文（数字項目のけた拡張機能）[1]

STDCALL[1]

STOP RUN文[1]

STOP文（数字項目のけた拡張機能）[1]

STORE文[1]

STRING文[1]

STRING文（数字項目のけた拡張機能）[1]

SUBSCHEMA SECTION[1]

SUBSTRING関数[1]、[2]

SUBTRACT文[1]

SUBTRACT文（数字項目のけた拡張機能）[1]

SUM句[1]

SUPPRESS文[1]

SYNCHRONIZED句[1]、[2]、[3]、[4]

SYNCHRONIZED句を集団項目に指定[1]

T

TRACK-AREA句[1]

TRANSCEIVE文[1]

TRANSFORM文[1]

TRANSFORM文〔数字項目のけた拡張機能〕[1]

TURN指令（数字項目のけた拡張機能）[1]

TYPE句[1]

TYPE-OF-PROPERTY関数[1]

TYPE-OF-VARIANT関数[1]

U

UNDERLINE句[1]

Unicode機能[1]

UNLOCK文[1]、[2]

UNSTRING文[1]

UNSTRING文（数字項目のけた拡張機能）[1]

UNSTRING文のDELIMITED BY ALL指定[1]

UPDATE文[1]

USAGE COMP-5を指定した項目に設定できる初期値[1]

USAGE IS POINTER句[1]

USAGE句（COMP-X項目）[1]

USAGE句（SCREEN SECTION）[1]

USAGE句（WINDOW SECTION）[1]

USAGE句（数字項目のけた拡張機能）[1]

USAGE句（日本語機能）[1]

USAGE句（ブール形式データを扱う機能）[1]

USAGE句（浮動小数点形式データを扱う機能）[1]

USAGE句のADDRESS指定[1]

USE BEFORE REPORTING文[1]

USE LABEL文[1]

USE文[1]、[2]、[3]

USING句[1]

V

VALUE句（COMP-X項目）[1]

VALUE句（SCREEN SECTION）[1]

VALUE句（WINDOW SECTION）[1]

VALUE句（数字項目のけた拡張機能）[1]

VALUE句（日本語機能）[1]

VALUE句（ブール形式データを扱う機能）[1]

VALUE句（浮動小数点形式データを扱う機能）[1]

VALUE句（報告書作成機能の拡張）[1]

VARIANT値[1]

VARIANT値からCOBOLデータへの変換規則[1]

VARIANT値とCOBOLデータの変換規則[1]

VARIANT-TO-ALPHANUMERIC関数[1]

VARIANT-TO-INTEGER関数[1]

VARIANT-TO-NUMERIC関数[1]

VARIANT-TO-OBJECT関数[1]

VOS3 COBOL85からの移行用オプション[1]、[2]

W

WAIT文[1]

WHERE句[1]

WINDOW SECTION（数字項目のけた拡張機能）[1]

WINDOW SECTION〔概説〕[1]

WINDOW-CURSOR特殊レジスタ[1]

WINDOW-KEYCODE特殊レジスタ[1]

WINDOW-KEY特殊レジスタ[1]

WINDOW-STATUS特殊レジスタ[1]

WRITE文（CSVファイル入出力機能）[1]

WRITE文（HiRDBによる索引ファイル入出力機能）[1]

WRITE文（印刷制御文字の直接指定，区域外書き出し）[1]

WRITE文（数字項目のけた拡張機能）[1]

WRITE文（定数1指定）[1]

WRITE文（テキストファイル機能）[1]

WRITE文（ファイル共用機能）[1]

WRITE文による入出力[1]

WRITE文〔数字項目のけた拡張機能〕[1]

Z

ZERO-FILL句[1]

あ

相手指定[1]

値式[1]

値指定[1]

アドレス型関数[1]

アドレス操作機能[1]

アドレス操作機能とは[1]

アドレスデータ項目[1]

アドレスデータ項目の参照[1]

アドレスデータ項目の定義[1]

アドレス名[1]

アドレス名によって参照されるデータ項目の定義[1]

アドレス名の参照[1]

い

一意参照（数字項目のけた拡張機能）[1]

一意名のいろいろ（数字項目のけた拡張機能）[1]

位置づけ[1]、[2]

インスタンス[1]

う

埋め込みSQL宣言節（データベースアクセス機能）（数字項目のけた拡張機能）[1]

埋め込みSQL文[1]

埋め込みSQL文〔数字項目のけた拡張機能〕[1]

埋め込み変数[1]、[2]

埋め込み例外宣言[1]

え

英数字定数[1]

英数字フィールド[1]

演算の中間結果[1]

か

カーソル[1]

カーソル宣言[1]

外部ブール項目[1]

外部浮動小数点形式[1]

外部浮動小数点形式の初期値[1]

外部プログラム節[1]

拡張仕様（数字項目のけた拡張機能）[1]

格納できる数値[1]

下線付き定数の呼び出し[1]

かたかな[1]

可変長項目の複数回記述[1]

画面記述項[1]

画面節（SCREEN SECTION）[1]

画面節（SCREEN SECTION）による画面機能[1]

画面節（WINDOW SECTION）による画面機能[1]

画面入出力機能特殊レジスタ[1]

画面フィールドの種類とそのサイズ[1]

環境部[1]

環境部（CSVファイル入出力機能）[1]

環境部（HiRDBによる索引ファイル入出力機能）[1]

環境部（SCREEN SECTION）[1]

環境部（WINDOW SECTION）[1]

環境部（索引ファイル機能の拡張）[1]

環境部（書式印刷機能）[1]

環境部（数字項目のけた拡張機能）[1]

環境部（テキストファイル機能）[1]

環境部（動的長基本項目機能）[1]

環境部（日本語機能）[1]

環境部（ファイル共用機能）[1]

環境部（報告書作成機能の拡張）[1]

環境部（リレーショナルデータベース（XDM/RD）操作シミュレーション機能）[1]

環境変数へのアクセス[1]

関数値（数字項目のけた拡張機能）[1]

き

記憶方式[1]

記述項名句[1]

機能概要[1]

旧規格仕様を使う場合[1]

行送り制御文字領域削除[1]

行と文字位置[1]、[2]

行の継続[1]

局所場所節（数字項目のけた拡張機能）[1]

く

区切り文字[1]

組み込み関数[1]、[2]

組み込み関数（数字項目のけた拡張機能）[1]

組み込み関数（動的長基本項目機能）[1]

組み込み関数機能[1]

組み込み関数の表現形式[1]

グループ表[1]

け

けたあふれ条件[1]

結果[1]

言語の概念[1]、[2]

言語の基本概念[1]

検索条件文[1]

原始文操作機能[1]

原始文操作機能の特性[1]

限定述語[1]

こ

合成キー[1]

構造型データベース（XDM/SD）操作シミュレーション機能[1]、[2]

項目間の転記の規則[1]

項類[1]

コーディング規則[1]、[2]

語長の境界と効率[1]

コネクション[1]

コマンド行のアクセス[1]

コマンド行へのアクセス（一括取得）[1]

コミット[1]

コレクション[1]

コンテナ[1]

コンパイラオプション[1]、[2]

コンパイラオプションによる仕様の相違[1]

コンパイラ環境変数[1]

コンパイラ環境変数CBLVALUE[1]

さ

作業場所節（数字項目のけた拡張機能）[1]

索引ファイル機能の拡張[1]

索引ファイルとCOMP-X項目[1]

サブスキーマ記述項[1]

サブスキーマ節（数字項目のけた拡張機能）[1]

算術式[1]

算術符号[1]

算術文[1]

算術文の作用対象のけた数[1]

し

実表[1]

集合関数指定[1]

述語[1]

主プログラムの指定コマンドインタフェース[1]

条件式[1]、[2]

条件式〔数字項目のけた拡張機能〕[1]

条件名[1]

条件名条件[1]、[2]

使用例〔動的長基本項目機能〕[1]

書式印刷機能[1]

書体[1]

字類[1]

字類条件[1]、[2]

す

数字項目のけた拡張機能[1]

数字項目の転記／比較[1]

数字項類（数字項目のけた拡張機能）[1]

数字定数（数字項目のけた拡張機能）[1]

数字フィールド[1]

ストアドプロシージャ[1]

せ

制御脚書き報告集団[1]

制御用データ項目[1]

静的に行う方法[1]

整列併合機能とCOMP-X項目[1]

整列併合用特殊レジスタ[1]

全般規則[1]、[2]、[3]、[4]

全般規則〔動的長基本項目機能〕[1]

そ

操作系とするSQL文[1]

ソース単位（数字項目のけた拡張機能）[1]

た

第1次規格以前の仕様[1]

第2次規格以前の仕様[1]

対象となる組み込み関数〔動的長基本項目機能〕[1]

対象となる文〔動的長基本項目機能〕[1]

濁点[1]

探索[1]、[2]

探索条件[1]

探索条件文〔数字項目のけた拡張機能〕[1]

単純条件[1]

ち

注意事項[1]

注記行[1]

つ

通信記述項[1]、[2]

通信節による画面機能[1]

て

定義できる節〔動的長基本項目機能〕[1]

定義できるソース単位〔動的長基本項目機能〕[1]

定数[1]、[2]

定数（数字項目のけた拡張機能）[1]

定数名でのVALUE句の規則[1]

データ記述項[1]、[2]

データ項目（数字項目のけた拡張機能）[1]

データ項目のサイズ[1]

データ項目の初期化[1]

データ項目の字類と項類[1]

データコミュニケーション機能[1]

データコミュニケーション機能とは[1]

データの配置[1]

データの表現形式[1]、[2]、[3]

データ配置の方法[1]、[2]

データ部[1]

データ部（CSVファイル入出力機能）[1]

データ部（C言語インタフェース機能）[1]

データ部（HiRDBによる索引ファイル入出力機能）[1]

データ部（OLE2オートメーションインタフェース機能）[1]

データ部（WINDOW SECTION）[1]

データ部（アドレス操作機能）[1]

データ部（構造型データベース（XDM/SD）操作シミュレーション機能）[1]

データ部（索引ファイル機能の拡張）[1]

データ部（書式印刷機能）[1]

データ部（数字項目のけた拡張機能）[1]

データ部（通信節による画面機能）[1]

データ部（データコミュニケーション機能）[1]

データ部（テキストファイル機能）[1]

データ部（動的長基本項目機能）[1]

データ部（日本語機能）[1]

データ部（ブール形式データを扱う機能）[1]

データ部（浮動小数点形式データを扱う機能）[1]

データ部（報告書作成機能の拡張）[1]

データ部（リレーショナルデータベース（XDM/RD）操作シミュレーション機能）[1]

データ部〔COMP-X項目〕[1]

データ部〔データベースアクセス機能〕[1]

データベース[1]

データベースアクセス機能[1]、[2]

データベースアクセス機能〔概説〕[1]

データベースアクセス機能〔概念〕[1]

データベースアクセス機能とCOMP-X項目[1]

データベース条件文[1]

データベース操作シミュレーション機能[1]

テキストファイル機能[1]

テキスト編成[1]

手続き部[1]

手続き部（CSVファイル入出力機能）〔ACCEPT文・DISPLAY文による入出力〕[1]

手続き部（CSVファイル入出力機能）〔READ文・WRITE文による入出力〕[1]

手続き部（C言語インタフェース機能）[1]

手続き部（HiRDBによる索引ファイル入出力機能）[1]

手続き部（OLE2オートメーションインタフェース機能）[1]

手続き部（SCREEN SECTION）[1]

手続き部（WINDOW SECTION）[1]

手続き部（アドレス操作機能）[1]

手続き部（構造型データベース（XDM/SD）操作シミュレーション機能）[1]

手続き部（コマンド行，環境変数へのアクセス）[1]

手続き部（コマンド行へのアクセス（一括取得））[1]

手続き部（索引ファイル機能の拡張）[1]

手続き部（数字項目のけた拡張機能）[1]

手続き部（通信節による画面機能）[1]

手続き部（データコミュニケーション機能）[1]

手続き部（テキストファイル機能）[1]

手続き部（動的長基本項目機能）[1]

手続き部（日本語機能）[1]

手続き部（ファイル共用機能）[1]

手続き部（ブール形式データを扱う機能）[1]

手続き部（浮動小数点形式データを扱う機能）[1]

手続き部（報告書作成機能の拡張）[1]

手続き部（リレーショナルデータベース（XDM/RD）操作シミュレーション機能）[1]

手続き部〔COMP-X項目〕[1]

手続き部〔データベースアクセス機能・共通要素〕[1]

手続き部〔データベースアクセス機能・制御系〕[1]

手続き部〔データベースアクセス機能・宣言系〕[1]

手続き部〔データベースアクセス機能・操作系〕[1]

手続き部見出し[1]、[2]、[3]

手続き部見出し〔数字項目のけた拡張機能〕[1]

デバッグ行の有効，無効[1]

転記の規則[1]

転記の長さのチェック[1]

と

問い合わせ式[1]

問い合わせ指定[1]

導出表[1]

動的SQL[1]

動的長基本項目[1]

動的長基本項目が使用できる個所[1]

動的長基本項目機能[1]

動的長基本項目を使用したときの注意事項[1]

動的に行う方法[1]

特殊名段落（動的長基本項目機能）[1]

特殊名段落（日本語機能）[1]

特殊名段落〔SCREEN SECTION〕[1]

特殊名段落〔WINDOW SECTION〕[1]

特殊名段落のCURRENCY SIGN句[1]

特殊名段落〔プログラム間連絡機能〕[1]

特殊名段落〔報告書作成機能〕[1]

特殊レジスタ[1]、[2]、[3]

トランザクション[1]

な

内部10進項目指定[1]

内部ブール項目[1]

内部浮動小数点形式[1]

内部浮動小数点形式の初期値[1]

ナル値[1]

に

日本語機能[1]

日本語機能とは[1]

日本語項目に対して埋められる空白の扱い[1]

日本語項目の扱い[1]

日本語フィールド[1]

日本語文字集合[1]、[2]

日本語文字定数[1]、[2]

日本語文字の扱い[1]

日本語文字の継続[1]

入出力管理記述項[1]、[2]

入出力管理段落[1]

入出力状態の値[1]、[2]

は

バリアントデータ項目[1]、[2]

バリアントデータ項目の設定[1]

バリアントデータ比較の条件式[1]

半濁点[1]

ひ

比較述語[1]

比較条件[1]、[2]、[3]、[4]

比較の組み合わせ[1]

引数（数字項目のけた拡張機能）[1]

引数の適合〔動的長基本項目機能〕[1]

ビュー表[1]

表[1]

表意定数[1]、[2]、[3]、[4]

表意定数〔動的長基本項目機能〕[1]

表式[1]

標識変数[1]

標準けた寄せ規則[1]、[2]、[3]

ふ

ファイル管理記述項[1]、[2]

ファイル管理段落[1]、[2]、[3]

ファイル記述項[1]

ファイル記述項（テキストファイル機能）[1]

ファイル記述項（ファイル共用機能）[1]

ファイル記述項〔CSVファイル入出力機能〕[1]

ファイル記述項〔HiRDBによる索引ファイル入出力機能〕[1]

ファイル記述項〔報告書作成機能の拡張〕[1]

ファイル共用機能[1]

ファイル施錠[1]

ファイル節（数字項目のけた拡張機能）[1]

フィールド状態条件[1]

ブール演算子[1]

ブール形式データが書ける文[1]

ブール形式データを扱う機能[1]

ブール項目[1]

ブール項目の指定方法[1]

ブール式[1]

ブール式の計算順序[1]

ブール式の定義[1]

ブール定数[1]

副問い合わせ[1]

符号系名句[1]

浮動小数点形式データが書ける文[1]

浮動小数点形式データを扱う機能[1]

浮動小数点数字定数[1]

プログラム間連絡，利用者定義関数，メソッドのUSING指定と返却項目[1]

プログラム間連絡機能[1]

プログラム間連絡機能および利用者定義関数の引数と返却項目[1]

プログラム間連絡機能の環境部[1]

プログラム間連絡用特殊レジスタ[1]

文に共通な規則[1]

文に共通な指定と機能〔数字項目のけた拡張機能〕[1]

分離符[1]

分離符の選択[1]

ほ

ポインタ項目の参照[1]

ポインタ比較の条件式[1]

報告集団記述項[1]

報告書記述項[1]

報告書作成機能の拡張[1]

報告書節（数字項目のけた拡張機能）[1]

み

見出し部[1]、[2]

め

明細報告集団[1]

も

文字間隔[1]

文字サイズ[1]

文字集合[1]

文字列[1]、[2]

よ

横倍角開始[1]

予約語[1]

り

略記組み合わせ比較条件でのNOTの取り扱い[1]

利用者定義語[1]、[2]

リレーショナルデータベース（XDM/RD）操作シミュレーション機能[1]、[2]

れ

レコード下降順アクセス機能[1]

レコード施錠[1]

列指定[1]

連絡節（数字項目のけた拡張機能）[1]

ろ

ロールバック[1]

わ

割り当てられる記憶域[1]