COBOL2002　使用の手引　操作編

操作書

4010-1J-803

前書き

対象製品

P-9W36-1251 COBOL2002 Net Server Suite(64) 05-00（適用OS：Linux Server 9 (64-bit x86_64)）

P-9W36-2251 COBOL2002 Net Server Runtime(64) 05-00（適用OS：Linux Server 9 (64-bit x86_64)）

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

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

輸出時の注意

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

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

商標類

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

発行

2025年4月　4010-1J-803

著作権

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

はじめに

このマニュアルは，次に示すプログラムプロダクトの機能と操作方法について説明したものです。

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

P-9W36-2251 COBOL2002 Net Server Runtime(64)

AIX(64) COBOL2002，Linux(x64) COBOL2002をお使いになる場合は，必要に応じて「9.　64bitアプリケーションの開発」をお読みください。

Linux(x86) COBOL2002，Linux(x64) COBOL2002をお使いになる場合は，初めに「10.　COBOL2002でのUTF-8ロケールの対応」をお読みください。

対象読者

このマニュアルは，COBOL2002のテストデバッガ，カバレージ，TDコマンド生成機能の使用方法を知りたい方を対象としています。また，COBOLの基本的な言語仕様とUNIXの操作方法について理解していることを前提としています。

このマニュアルで使用する記号

このマニュアルで使用する記号を次に示します。

記号

意味

［　］キー

文字キーやF（ファンクション）キーを意味する。

［　］＋［　］キー

＋の前のキーを押したまま，あとのキーを押すことを意味する。

｛　｝

この記号で囲まれている複数の項目のうちから一つを選択することを意味する。項目が縦に複数行にわたって記述されている場合は，そのうちの1行分を選択する。

〔　〕

この記号で囲まれている項目は省略してもよいことを意味する。

複数の項目が縦または横に並べて記述されている場合には，すべてを省略するか，記号｛　｝と同じく，どれか一つを選択する。

…

記述が省略されていることを意味する。

この記号の直前に示された項目を繰り返して複数個指定できる。

下線

括弧で囲まれた複数の項目のうち1項目に対して使用され，括弧内のすべてを省略したときにシステムがとる標準値を意味する。

｜

横に並べられた複数の項目に対して項目間の区切りを示し，「または」を意味する。

オペランドの名称の短縮形を示す。この記号で囲まれている文字だけを指定すれば短縮形となる。

［　］

ウィンドウのメニューバーから選択するメニュー，コマンド，またはボタンを意味する。

プログラム例について

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

1　テストデバッガ，カバレージ，TDコマンド生成機能，およびUnicode機能の概要

テストデバッガ，カバレージ，TDコマンド生成機能，およびUnicode機能の概要について説明します。

1.1　テストデバッガとは

テストデバッガは，TDコマンドなどでプログラムの実行を制御しながらプログラムをテストしたり，デバッグしたりする機能です。テストデバッガで，プログラムの実行を実行文単位に中断し，データ項目に対して値を表示，代入，比較してデバッグできます。また，連動するプログラムやファイルなどの実行環境が整わない段階でも，それらの処理をシミュレーションできる機能もあるため，単体でプログラムをテストすることもできます。テストデバッガを使用するときは，-TDInfコンパイラオプションを指定します。

テストデバッガの主な機能について説明します。

1.1.1　デバッグ機能

(1)　実行プログラムの中断

プログラムの実行を実行文単位に中断し，データの代入などができます。機能の概要については「2.2.1　プログラムの中断」を参照してください。

中断点の設定による中断

データ監視条件の設定による中断

実行時エラーが発生した場合の中断

(2)　実行の制御

設定した中断点などに基づき実行できます。機能の概要については「2.2.2　プログラムの実行」を参照してください。

連続実行

ステップイン

ステップオーバー

ジャンプ

ジャンプ実行

実行の強制終了

実行の開始と開始時にできる指定

(3)　データの操作

COBOLプログラムのデータに対して，値の表示，値の代入，比較ができます。

データの操作については「2.2.5　データの操作」を参照してください。

Unicode機能を使用するときのデータの操作については，「1.4　Unicode機能」を参照してください。Unicode機能を使用しないときのデータの操作については「2.2.5　データの操作」を参照してください。

データ値の表示

データ値の代入

データ値の比較

1.1.2　テスト機能

(1)　単体テスト

連動するプログラムやファイルなどの実行環境が整わない段階でも，それらの処理をシミュレーションして，プログラムを単体でテストできます。呼び出し元のプログラム，呼び出し先のプログラム，ファイル，またはDC（データコミュニケーション）を，TDコマンドによってシミュレーションできます。

機能の概要については「2.2.7　プログラムの単体テスト」を参照してください。

主プログラムシミュレーション

副プログラムシミュレーション

ファイル入出力文のシミュレーション

DCシミュレーション

1.1.3　ラインモードとバッチモード

テストデバッガには，ラインモードとバッチモードの二つの方法があります。

ラインモード

TDコマンドの入力によって，対話的にテストデバッグができます。TDコマンドによる入出力だけで実行できるので，画面での操作がなく，簡単に早くテストとデバッグができます。

ラインモードでのテストデバッグの手順については，「3.2.1　テストの手順」を参照してください。

バッチモード

あらかじめ，実行したいTDコマンドをファイルにまとめて記述しておき，そのファイルを起動することによって，一括してテストデバッグを実行する方法です。端末に，TDコマンドを記述したファイルを指定した起動コマンドを入力すると，ファイルに記述されたTDコマンドを一括して実行します。一度実行を開始すれば，利用者の操作を必要としないので，効率良く大量のプログラムがテストできます。

バッチモードでのテストデバッグの手順については，「4.2.1　テストの手順」を参照してください。

1.1.4　テストデバッガの機能一覧

テストデバッガの機能一覧とラインモード，バッチモードでの機能の有無を表1-1に示します。

表1‒1　テストデバッガの機能一覧とラインモード，バッチモードでの機能の有無

機能の概要

機能の詳細

ラインモード

バッチモード

プログラムの中断

中断点の設定による中断

中断点の設定／解除

○

○

中断点の一覧表示

○

○

データ監視条件の設定による中断

○

○

実行時エラーが発生した場合の中断

○

×

プログラムの実行

連続実行

○

○

ステップイン

○

○

ステップオーバー

○

○

ジャンプ

○

○

ジャンプ実行

○

○

実行の強制終了

○

○

プログラムの

実行の追跡

トレース表示

○

○

フロー情報の蓄積と表示

○

○

現在位置の表示

○

○

データの操作

データ値の表示

○

○

オブジェクトデータ値の表示

オブジェクト参照データ値の表示

○

○

データ値の代入

○

○

データ値の比較

○

○

領域の操作

領域の確保／解放

○

○

任意のデータ項目のアドレスの取得

○

○

プログラムの

単体テスト

主プログラムシミュレーション

○

○

副プログラムシミュレーション

○

○

ファイルシミュレーション

○

○

ファイル入出力条件発生のシミュレーション

ファイル終了条件

○

○

ページ終了条件

○

○

無効キー

○

○

入出力誤り

○

○

DCシミュレーション

○

○

バッチによる

テスト

テストケースの指定

×

○

テストデバッグの

ための準備

翻訳単位またはソース要素の変更

○

○

TDコマンド格納ファイルのTDコマンドの実行

○

○

等価規則の変更

○

○

結果のファイル出力

結果出力先の指定

○

○

テストデバッガの表示内容のファイル出力

○

×

その他

装置名へのファイルの割り当て

○

○

UNIXコマンドの実行

○

×

テスト結果への注釈の表示

○

○

（凡例）

○：機能を使用できる

×：機能を使用できない

ラインモード，バッチモードそれぞれで使用できるTDコマンドについては，「5.3　TDコマンドの一覧」を参照してください。

1.2　カバレージとは

カバレージを使用して，テスト終了後，C0メジャー，C1メジャー，未実行文情報などのカバレージ情報を集計して表示できます。カバレージ情報を確認することでテストの進捗状況や性能を数値で把握できます。カバレージには，テストの進捗状況を定量的に表すカバレージ情報，文の実行回数をカウントするカウント情報の表示機能があります。

端末から入力するコマンドの指示によって，カバレージの機能を操作できます。プログラムからカバレージを連動実行させ，一括してカバレージの蓄積およびカウント情報を表示することもできます。一度実行を開始すれば，利用者の操作を必要としないので，効率良く大量のプログラムのカバレージができます。

カバレージを使用するときは，プログラムのコンパイル時に-CVInfコンパイラオプションを指定します。テストデバッガ上でカバレージを使用するときは，-TDInfコンパイラオプションも指定します。

カバレージの手順については，「7.　カバレージ」を参照してください。

1.2.1　カバレージ情報

カバレージ情報とは，テストによって実行された文の割合を表示したもので，テストの進捗状況を確認するのに使用します。

カバレージ情報を表示できるリストには，カバレージ情報一覧，まとめ表示，全ソース表示などがあります。また，カバレージ情報を0％化したり，カバレージ情報ファイルをマージしたりする操作もできます。

1.2.2　カウント情報

カウント情報とは，プログラムごとに文の実行回数を表示したもので，プログラムの実行時の性能を評価するのに使用します。

1.2.3　カバレージの機能一覧

カバレージの機能一覧を表1-2に示します。

表1‒2　カバレージの機能一覧

機能の概要

機能の詳細

カバレージ情報の表示

カバレージ情報の蓄積

カバレージ情報の表示

テキスト形式のファイルの場合

C0，C1，S1メジャーの表示

未実行の文の表示

差分カバレージ情報の表示

CSV形式のファイルの場合

C0，C1，S1メジャーの表示

未実行の文の表示

差分カバレージ情報の表示

カバレージ情報の操作

カバレージ情報の0％化

差分カバレージ情報の0％化

差分カバレージ情報のクリア

カバレージ情報のマージ

カウント情報の表示

実行回数の表示

1.3　TDコマンド生成機能とは

TDコマンド生成機能とは，テスト対象のCOBOLソースファイルから，テストデバッガで使用するTDコマンド群を生成する機能です。TDコマンド群とは，テストデバッガの実行を制御するためのTDコマンドの集まりです。生成されたファイルを利用し，必要に応じて修正することで，TDコマンド群を効率良く作成できます。

生成されるTDコマンド群には，中断点情報，プログラムのシミュレーション情報，およびファイルのシミュレーション情報の3種類があります。TDコマンド生成機能については，「8.　TDコマンド生成機能」を参照してください。

1.3.1　TDコマンド生成機能を使用するときに指定するコンパイラオプション

TDコマンド群は，-TestCmdコンパイラオプションを指定してコンパイルしたときに生成されます。

1.3.2　TDコマンド生成機能の対象となるプログラム

TDコマンド生成機能の対象となるプログラムは，コンパイルしたときすべてのプログラムで，Sレベル，Uレベルのコンパイルエラーのなかった原始プログラムファイルだけです。

1.4　Unicode機能

1.4.1　機能の概要

Unicodeをデータ値として扱うCOBOLプログラムをデバッグするための機能です。

AIXの場合

テストデバッガは，データを表示するときに，UnicodeからシフトJISへの変換を行い，代入や比較をするときは，シフトJISからUnicodeへの変換を行います。そのため，ユーザはデータの操作をシフトJISでできます。

この機能は，カバレージ情報の蓄積およびカウント情報の表示を対象にしません。ただし，カバレージ情報の蓄積またはカウント情報の表示を実行した場合は，この機能を使用しないで実行した場合と同じ動作をします。

Linuxの場合

テストデバッガは，用途がNATIONALの項目に対して，データを表示するときに，UTF-16からUTF-8への変換を行い，代入や比較をするときは，UTF-8からUTF-16への変換を行います。そのため，ユーザはデータの操作をUTF-8でできます。

なお，COBOLソースがシフトJISであることから，デバッガでは，文字コードをシフトJISで扱います。このため，UTF-8，またはUTF-16からシフトJISに変換できない文字がある場合は，16進数や別の文字に置き換えて実行，または，エラーとして，実行を中止することがあります。詳細については，以降のLinuxの場合の説明での注意事項などを参照してください。

Unicode機能のその他の機能については，マニュアル「COBOL2002　使用の手引　手引編」の「Unicode機能」を参照してください。

(1)　使用するコード変換ライブラリ

Unicode機能を利用するには，コード変換ライブラリをインストールしておく必要があります。次のプログラムプロダクト（以降これらのプログラムプロダクトをコード変換ライブラリと表記します）をインストールしてください。

AIX(32)，Linux(x86)の場合

日立コード変換 - Runtime

Hitachi Code Converter - Runtime for C/COBOL

AIX(64)の場合

日立コード変換 - Runtime(64)

Hitachi Code Converter - Runtime for C/COBOL(64)

Linux(x64)の場合

Hitachi Code Converter - Runtime for C/COBOL(64)

また，COBOLプログラムから直接コード変換ライブラリを呼び出す場合は，上記のプログラムプロダクトに加えて次のプログラムプロダクトが必要です。

AIX(32)，Linux(x86)の場合

日立コード変換 - Development Kit

Hitachi Code Converter - Development Kit for C/COBOL

Hitachi Code Converter - Development Kit for C/COBOL(64)

AIX(64)の場合

日立コード変換 - Development Kit(64)

Hitachi Code Converter - Development Kit for C/COBOL(64)

Linux(x64)の場合

Hitachi Code Converter - Development Kit for C/COBOL(64)

コード変換ライブラリが次のどれかの場合で，テストデバッガを起動したときはエラーメッセージを出力してテストデバッガは終了します。

コード変換ライブラリをインストールしていない。

正しくインストールされていない。

前提バージョンより前のバージョンがインストールされている。

出力するメッセージを次に示します。

「KCCC0202T-U　コード変換ライブラリが正しくインストールされていません。」

外字を表示するための外字マッピングファイルは，コード変換ライブラリのインストールディレクトリにあるファイルを使用します。外字マッピングファイル名は，インストール時のファイル名にします。

(2)　コンパイラオプションと環境変数について

Unicode機能を利用してデバッグをするときに必要なコンパイラオプションと環境変数を次に示します。

なお，コンパイラオプションおよび環境変数については，マニュアル「COBOL2002　使用の手引　手引編」の「コンパイラオプション」および「環境変数」を参照してください。

Unicode機能に必要なコンパイラオプションを表1-3に，環境変数を表1-4に示します。

表1‒3　Unicode機能に必要なコンパイラオプション

コンパイラオプション

説明

-UniObjGen

デバッグ対象プログラムは，必ずこのコンパイラオプションを指定してコンパイルしなければならない。

-UniEndian

UTF-16のバイトオーダを指定したいときだけ指定する。

表1‒4　Unicode機能に必要な環境変数

環境変数

説明

CBLLANG

必ず設定しなければならない。

設定は，テストデバッガを起動する前に設定しなければならない。

CBLUNIENDIAN

UTF-16のバイトオーダを指定したいときだけ設定する。

設定は，テストデバッガを起動する前に設定しなければならない。

CBLSRCENCODING※

必ず設定しなければならない。

設定は，テストデバッガを起動する前に設定しなければならない。

注※　Linuxの場合に指定する。

Unicode機能に必要なコンパイラオプションの指定と環境変数を設定した場合，テストデバッガは，次の規則に従い動作します。

すべてのデバッグ対象プログラムに-UniObjGenコンパイラオプションを指定してコンパイルする必要があります。また，環境変数CBLLANGにUNICODEを指定した環境でデバッグをしてください。それ以外の環境での動作は保証しません。

-UniEndianコンパイラオプションで指定したバイトオーダと環境変数CBLUNIENDIANで指定したバイトオーダを一致させてください。一致しない場合の動作は保証しません。

環境変数の値は，テストデバッガの起動前に設定してください。テストデバッガを起動中に環境変数の値を設定または変更しても，有効になりません。

(3)　デバッグ手順

Unicode機能を利用したデバッグの手順を次に示します。

デバッグ対象のCOBOLプログラムをコンパイルするときに，-UniObjGenコンパイラオプションを指定します。Linuxの場合は，環境変数CBLSRCENCODINGにSJISを同時に設定します。

環境変数CBLLANGに値としてUNICODEを設定します。Linuxの場合は，環境変数CBLSRCENCODINGにSJISを同時に設定します。

テストデバッガを起動してデバッグをします。

用途がNATIONALの項目（UTF-16）に対してバイトオーダを指定する場合は，上記手順に合わせて，次の手順になります。

デバッグ対象のCOBOLプログラムをコンパイルするときに，-UniEndianコンパイラオプションでUTF-16のバイトオーダを指定します。

環境変数CBLUNIENDIANに値としてBIGまたはLITTLEを設定して，UTF-16のバイトオーダを指定します。

テストデバッガを起動して，デバッグをします。

バイトオーダの指定については，「1.4.3　その他の注意事項」の「(1)　バイトオーダ」を参照してください。

(4)　その他の注意事項

AIXの場合

この機能を使用したテストデバッグを実行するには，シフトJIS環境下でなくてはなりません。この機能をEUC環境下で実行した場合はエラーになります。次のエラーメッセージを出力してテストデバッガは終了します。

「KCCC0204T-U　日本語EUC環境下では，環境変数CBLLANGにUNICODEを指定してテストデバッガを実行できません。」

Linuxの場合

この機能を使用したテストデバッグを実行するには，UTF-8環境下でなくてはなりません。また，あわせて，環境変数CBLLANG，およびCBLSRCENCODINGを設定しなければなりません。環境変数で設定する条件が満たされない場合は，エラーになります。

ロケール，環境変数の設定値によるテストデバッガの動作を表1-5に示します。

表1‒5　ロケール，環境変数の設定値によるテストデバッガの動作

ロケール

環境変数CBLLANGの値

環境変数CBLSRCENCODINGの値

テストデバッガの動作

UTF-8

UNICODE

SJIS

正常

SJIS以外

または設定なし

エラー※

UNICODE以外

または設定なし

SJIS

エラー※

SJIS以外

または設定なし

注※

KCCC0205T-Sのエラーメッセージを出力し，テストデバッガは終了します。

この機能を使用したカバレージ（カバレージ情報の蓄積，カウント情報の表示，カバレージ情報の表示（テキスト形式およびCSV形式），カバレージ情報の操作）を実行するには，UTF-8環境下でなくてはなりません。また，あわせて，環境変数CBLSRCENCODINGを設定しなければなりません。環境変数で設定する条件が満たされない場合は，エラーになります。

ロケール，環境変数の設定値によるカバレージの動作を表1-6に示します。

表1‒6　ロケール，環境変数の設定値によるカバレージの動作

ロケール

環境変数CBLSRCENCODINGの値

カバレージの動作

UTF-8

SJIS

正常

SJIS以外

または設定なし

エラー※

注※

KCCC0206T-Sのエラーメッセージを出力し，カバレージは終了します。

1.4.2　機能の詳細

(1)　データ値の表示

AIXの場合

データ値をデータ属性表示するときは，テストデバッガが文字コードをUnicode（UTF-8またはUTF-16）からシフトJISに変換して，変換後の値を表示します。

Linuxの場合

用途がNATIONALの項目のデータ値をデータ属性表示するときは，テストデバッガが文字コードをUTF-16からUTF-8に変換して，変換後の値を表示します。

また，データ値を16進数で表示するときは，文字コードの変換は行わないで，Unicode（UTF-8またはUTF-16）の16進数で表示します。UTF-16の16進数での表示については，「1.4.3　その他の注意事項」の「(1)　バイトオーダ」を参照してください。

データ値の表示は，DISPLAY DATAコマンド，SET TRACEコマンド，DISPLAY OBJECTコマンド，DISPLAY FACTORYコマンドで，データの値をデータ属性または16進数で表示できます。

DISPLAY DATAコマンド，SET TRACEコマンド，DISPLAY OBJECTコマンド，DISPLAY FACTORYコマンドの詳細については，「5.4　TDコマンドの詳細」の「5.4.9　SET TRACE／RESET TRACE（トレース表示の開始と中止）」，「5.4.13　DISPLAY DATA（データの値表示）」，「5.4.14　DISPLAY OBJECT／DISPLAY FACTORY（オブジェクトのデータ値の表示）」を参照してください。

データ値を表示するときの規則を次に示します。

AIXの場合，データ値をデータ属性表示するときに，用途がDISPLAYの項目および用途がNATIONALの項目を変換して表示します。

用途がDISPLAYの項目の場合は，UTF-8からシフトJISに変換して表示します。

用途がNATIONALの項目の場合は，UTF-16からシフトJISに変換して表示します。

各データ項目について変換するかどうかを表1-7に示します。

表1‒7　シフトJISへ変換するデータ項目

表示するデータ項目の種類

UnicodeからシフトJISへの変換

集団項目

○

英字項目

−

英数字項目

○

英数字編集項目

○

数字編集項目

−※1

整数項目※2

−

非整数項目※2

−

COMP−X項目

−

外部浮動小数点項目

−

内部浮動小数点項目

−

指標名

−

指標データ項目

−

外部ブール項目

−

内部ブール項目

−

日本語集団項目

●

日本語項目

●

日本語編集項目

●

アドレス名

−

アドレスデータ項目

−

ポインタ項目

−

オブジェクト参照データ項目

−

（凡例）

○：UTF-8からシフトJISへ変換する

●：UTF-16からシフトJISへ変換する

−：変換の必要がないため変換しない

注※1

文字がある場合は，UTF-8からシフトJISに変換します。

注※2

整数，非整数項目はそれぞれ外部10進項目，内部10進項目，および2進項目を含みます。

Linuxの場合，データ値をデータ属性表示するときに，用途がNATIONALの項目を，UTF-16からUTF-8に変換して表示します。

表示機能を使用してデータ値を16進数で表示する場合は，変換しないで，Unicode（UTF-8またはUTF-16）の16進数で表示します。データ属性表示で表示エラーが発生した場合も変換しないで，Unicode （UTF-8またはUTF-16）の16進数で表示します。

AIXの場合，Unicode（UTF-8またはUTF-16）からシフトJISへ変換できないコードがある場合は，そのコードを置き換えて表示します。

用途がDISPLAYの項目の場合は，半角ピリオドに置き換えて表示します。

用途がNATIONALの項目の場合は，全角'[図データ]'（げた記号）（シフトJIS:X'81AC'）に置き換えて表示します。

Linuxの場合，Unicode（UTF-8またはUTF-16)からシフトJISに変換できないコードがある場合は，そのコードを置き換えて表示します。

用途がDISPLAYの項目の場合，半角ピリオドに置き換えて表示します。

用途がNATIONALの項目の場合，全角'[図データ]'（げた記号）（UTF-8:X'E38093'）に置き換えて表示します。

Linuxの場合，データ値をデータ属性表示するときに，用途がNATIONALの項目でUTF-16からUTF-8に変換すると1バイトコードになる文字は，表示できる文字であれば，そのまま1バイトコードで表示します。 UTF-8では表示できない文字の場合は，UTF-8でのバイト数分を半角ピリオドで表示します。

Unicode（UTF-8またはUTF-16）で多バイトとして扱われる文字の途中で終了している場合は，そのバイトを半角ピリオドに置き換えて表示します。

コード変換中にエラーが発生したときは，データ属性表示で表示エラーになった場合と同様に変換しないで，Unicode（UTF-8またはUTF-16）の16進数で表示します。

(2)　データ値の代入

AIXの場合

データ名に文字定数（英数字定数，日本語文字定数，ALL定数）を代入する場合は，テストデバッガが，文字定数の文字コードをシフトJISからUnicode（UTF-8またはUTF-16）に変換して，データに代入するので，ユーザは文字定数をシフトJISで指定できます。

Linuxの場合

用途がNATIONALのデータ名に文字定数（日本語文字定数，ALL定数）を代入する場合は，テストデバッガが，文字定数の文字コードをUTF-8からUTF-16に変換して，データ名に代入するので，ユーザは文字定数をUTF-8で指定できます。

ただし，TDコマンド格納ファイルを使用して，データ名に文字定数（英数字定数，日本語文字定数，ALL定数）を代入する場合は，テストデバッガが，文字定数の文字コードをシフトJISからUnicode（UTF-8またはUTF-16）に変換して，データ名に代入します。

また，16進英数字定数または16進日本語文字定数を使用すれば，文字コードを直接指定した代入ができます。16進日本語文字定数での代入については，「1.4.3　その他の注意事項」の「(1)　バイトオーダ」を参照してください。

データ値の代入は，ASSIGN DATAコマンドで，データに値を代入して，値を変更できます。

ASSIGN DATAコマンドの詳細については，「5.4　TDコマンドの詳細」の「5.4.15　ASSIGN DATA（データの値代入）」を参照してください。

データ値を代入するときの規則を次に示します。

AIXの場合，代入する値に文字定数を指定した場合は次のように変換して代入します。

英数字定数の場合は，シフトJISからUTF-8に変換して代入します。

日本語文字定数の場合は，シフトJISからUTF-16に変換して代入します。

代入は変換後のサイズで行われるため，変換によってデータのサイズが受け取り側のデータ項目のサイズを超えた場合，超えた部分は代入されません。

Linuxの場合，代入する値に日本語文字定数を指定した場合は，UTF-8からUTF-16に変換して代入します。ただし，TDコマンド格納ファイルを使用して，代入する値に文字定数を指定した場合は，次のように変換して代入します。

英数字定数の場合は，シフトJISからUTF-8に変換して代入します。

日本語文字定数の場合は，シフトJISからUTF-16に変換して代入します。

代入は変換後のサイズで行われるため，変換によってデータのサイズが受け取り側のデータ項目のサイズを超えた場合，超えた部分は代入されません。

16進英数字定数または16進日本語文字定数を指定した場合は，文字コードの変換はしないでデータに代入します。

16進英数字定数または16進日本語文字定数の場合，次のように指定します。

代入先の用途がDISPLAYの場合は，UTF-8のコード値を指定します。

代入先の用途がNATIONALの場合は，UTF-16のコード値を指定します。

集団項目を除く，用途がDISPLAYの項目と，用途がNATIONALの項目との間では代入はできません。

用途がNATIONALの項目を含む集団項目と，用途がDISPLAYの項目との間の代入はしないでください。また，用途がDISPLAYの項目を含む集団項目と，用途がNATIONALの項目との間の代入はしないでください。代入をした場合は，代入後の値を保証しません。

作用対象の用途がDISPLAYと，用途がNATIONALの代入規則を表1-8に示します。なお，表1-8に示されていないデータ項目の組み合わせについては，「2.3.1　データの比較・代入規則」の「表2‒7　代入規則」を参照してください。

コード変換中に未定義コードを検出するなどのエラーが発生したときは，次のエラーメッセージを出力して代入処理を中止します。

AIXの場合

「KCCC4302T-E　値が不正なため処理できません。値（XXXXX）」

Linuxの場合

「KCCC4328T-E 値が不正なため処理できません。値（X' XXXXXX'）」

表1‒8　代入規則（Unicode機能）

（凡例）

○：代入できる

空白：代入できない

注※1

送り出し側の集団項目に用途がNATIONALの項目を含んでいて，受け取り側の集団項目に用途がDISPLAYの項目を含んでいる場合は，代入後の値を保証しません。また，送り出し側の集団項目に用途がDISPLAYの項目を含んでいて，受け取り側の集団項目に用途がNATIONALの項目を含んでいた場合も，代入後の値は保証しません。

注※2

受け取り側の集団項目に用途がNATIONALの項目を含んでいた場合は，代入後の値は保証しません。

注※3

受け取り側の集団項目に用途がDISPLAYの項目を含んでいた場合は，代入後の値は保証しません。

注※4

送り出し側の集団項目に用途がNATIONALの項目を含んでいた場合は，代入後の値は保証しません。

注※5

送り出し側の集団項目に用途がDISPLAYの項目を含んでいた場合は，代入後の値は保証しません。

注※6

整数は，次のデータ項目で小数点けたを持たない指定です。非整数は，次のデータ項目で小数点けたを持つ指定です。

内部10進項目

2進項目（COMP-Xも含む）

注※7

外部浮動小数点形式の数字項目です。

注※8

内部浮動小数点形式の数字項目です。

注※9

正の整数（0を含むが，-0は含まない）だけ代入できます。

(3)　比較条件式の設定

AIXの場合

比較条件式に文字定数（英数字定数，日本語文字定数，ALL定数）を指定した場合は，テストデバッガが，文字定数の文字コードをシフトJISからUnicode（UTF-8またはUTF-16）に変換して比較するため，ユーザは文字定数をシフトJISで指定できます。

Linuxの場合

用途がNATIONALのデータ名に対する比較条件式に文字定数（日本語文字定数，ALL定数）を指定した場合は，テストデバッガが，文字定数の文字コードをUTF-8からUTF-16に変換して比較するため，ユーザは文字定数をUTF-8で指定できます。

また，16進英数字定数または16進日本語文字定数を使用できるため，文字コードを直接比較条件式に設定できます。16進日本語文字定数での比較については，「1.4.3　その他の注意事項」の「(1)　バイトオーダ」を参照してください。

比較は，バイト単位で比較します。大小順もバイト単位の大小順になります。

比較条件式は，IFコマンド，またはSET WATCHコマンドを使用して設定できます。

IFコマンド，SET WATCHコマンドの詳細については，「5.4　TDコマンドの詳細」の「5.4.16　IF（データの値比較）」，「5.4.3　SET WATCH／RESET WATCH（データ監視条件の設定と解除）」を参照してください。

比較するときの規則を次に示します。

AIXの場合，比較条件式に文字定数を指定した場合は，文字定数の文字コードを次のように変換します。比較は変換後の値で比較します。

英数字定数の場合は，UTF-8に変換して比較します。

日本語文字定数の場合は，UTF-16に変換して比較します。

Linuxの場合，用途がNATIONALのデータ名に対する比較条件式に文字定数（日本語文字定数，ALL定数)を指定した場合は，文字定数の文字コードをUTF-8からUTF-16に変換します。比較は変換後の値で比較します。

ただし，TDコマンド格納ファイルを使用して，比較条件式に文字定数を指定した場合は，文字定数の文字コードをシフトJISから次のように変換します。比較は変換後の値で比較します。

英数字定数の場合は，UTF-8に変換して比較します。

日本語文字定数の場合，UTF-16に変換して比較します。

16進英数字定数または16進日本語文字定数を指定した場合は，文字コードを変換しないで比較します。

16進英数字定数または16進日本語文字定数を指定する場合，次のように指定してください。

用途がDISPLAYの項目と比較する場合は，UTF-8を指定します。

用途がNATIONALの項目と比較する場合は，UTF-16を指定します。

コード変換中にエラーが発生したときは，エラーメッセージを出力して比較処理を中止します。

AIXの場合

「KCCC4302T-E　値が不正なため処理できません。値（XXXXX）」

Linuxの場合

「KCCC4328T-E 値が不正なため処理できません。値（X' XXXXXX'）」

1.4.3　その他の注意事項

(1)　バイトオーダ

テストデバッガは，文字コードの変換だけではなく，UTF-16のバイトオーダの変換をします。

UTF-16のバイトオーダの変換の規則を次に示します。

AIXの場合，シフトJISからUTF-16，またはUTF-16からシフトJISに変換するときのUTF-16のバイトオーダは，環境変数CBLUNIENDIANの値に従います。環境変数CBLUNIENDIANの値と仮定するバイトオーダの関係を表1-9に示します。

Linuxの場合，UTF-8からUTF-16，またはUTF-16からUTF-8に変換するときのUTF-16のバイトオーダは，環境変数CBLUNIENDIANの値に従います。環境変数CBLUNIENDIANの値と仮定するバイトオーダの関係を表1-9に示します。

表1‒9　環境変数CBLUNIENDIANの値と仮定するバイトオーダ

データ項目

環境変数CBLUNIENDIANの値

LITTLE

BIG

LITTLE，BIG以外

（指定なしも含む）

用途がNATIONAL

UTF-16LE※1を仮定する

UTF-16BE※2を仮定する

AIXの場合

UTF-16BE※2を仮定する

Linuxの場合

UTF-16LE※1を仮定する

注※1

UTF-16LE: UTF-16をリトルエンディアンで表現します。

注※2

UTF-16BE: UTF-16をビッグエンディアンで表現します。

データ名への代入，および比較条件式を設定するときの16進日本語文字定数はUTF-16BEを指定してください。16進日本語文字定数に指定されたUTF-16BEのコード値は，環境変数CBLUNIENDIANの指定に従い，テストデバッガが自動的にバイトオーダの変換をします。

用途がNATIONALの項目を16進数で表示する場合，およびデータ属性表示で表示エラーが発生した場合に表示する16進数の値は，UTF-16BEの16進数で表示します。

データ名に値を代入する場合，拡張16進定数を使用してコード値を直接指定したときは，バイトオーダの変換はしません。

比較条件式を設定する場合，拡張16進定数を使用してコード値を直接指定したときは，バイトオーダの変換はしません。

(2)　テストデバッガとカバレージが入出力するファイル

TDコマンド格納ファイルはシフトJISで作成してください。ただし，外字を指定する場合など文字のコード値を直接指定したい場合は，16進英数字定数，16進日本語文字定数を使用して，指定したいコード値をUnicodeで指定します。

AIXの場合

テストデバッガまたはカバレージが出力するエラーメッセージおよび次に示すファイルはシフトJISで出力します。

ログ出力ファイル

結果出力ファイル

結果蓄積ファイル

実行結果出力ファイル

カバレージ情報リストファイル

カウント情報リストファイル

カバレージ統計情報CSVファイル

ソースカバレージ情報CSVファイル

Linuxの場合

テストデバッガまたはカバレージが出力するエラーメッセージおよび次に示すファイルはUTF-8で出力します。

ログ出力ファイル

結果出力ファイル

結果蓄積ファイル

実行結果出力ファイル

カバレージ情報リストファイル

カウント情報リストファイル

カバレージ統計情報CSVファイル

ソースカバレージ情報CSVファイル

(3)　表意定数の扱い

空白文字，表意定数SPACEの文字コードは次のようになります。

用途がDISPLAYの場合は，UTF-8の半角空白文字（X'20'）になります。

用途がNATIONALの場合は，環境変数CBLUNIENDIANの設定に従い，UTF-16LEの全角空白文字（X'0030'）またはUTF-16BEの全角空白文字（X'3000'）になります。仮定するバイトオーダについては「表1‒9　環境変数CBLUNIENDIANの値と仮定するバイトオーダ」を参照してください。

(4)　UTF-8環境下での注意事項（Linuxの場合）

テストデバッガやカバレージのUTF-8環境下での注意事項を次に示します。

次に示す個所にUTF-8の多バイト文字を使用した場合，テストデバッガやカバレージの動作は保証しません。エラーメッセージが正しく表示されないなどの現象が起きます。

起動コマンドのパラメタ※

環境変数に指定する値※

カレントディレクトリ名

COBOLプログラムの実行時にローディングされるすべての共用ライブラリの絶対パス名

注※

ファイル名または相対パス名が指定されたとき，それらの絶対パス名も含みます。

次に示すコンパイラオプション，環境変数を同時に指定し，コンパイルして生成したプログラム情報ファイルだけ使用できます。

-UniObjGenコンパイラオプション

環境変数CBLSRCENCODINGにSJISを指定

これらのコンパイラオプション，環境変数については，「1.4.1　機能の概要」の「(2)　コンパイラオプションと環境変数について」を参照してください。

ラインモードからTDコマンドを入力するとき，UTF-8からシフトJISに変換できない文字コードを含んではいけません。

TDコマンド格納ファイルから入力するとき，次に示すTDコマンドのオペランドのファイル名に，シフトJISからUTF-8に変換できない文字コードは使用できません。

#INCLUDE（TDコマンド格納ファイルの取り込み）コマンド

SET PRINT（テスト結果蓄積先の設定）コマンド

SET LOG（ログ出力ファイルの設定）コマンド

ASSIGN DEVICE（装置名へのファイルの割り当て）コマンド

#INCLUDE（TDコマンド格納ファイルの取り込み）コマンド，SET PRINTコマンド，SET LOGコマンド，およびASSIGN DEVICEコマンドについては，「5.4　TDコマンドの詳細」の「5.4.33　#INCLUDE（TDコマンド格納ファイルの取り込み）」，「5.4.35　SET PRINT／RESET PRINT（テスト結果蓄積先の設定と解除）」の「(1)　SET PRINT（テスト結果蓄積先の設定）」，「5.4.36　SET LOG／RESET LOG（ログ出力ファイルの設定／解除）」の「(1)　SET LOG（ログ出力ファイルの設定）」および「5.4.37　ASSIGN DEVICE（装置名へのファイルの割り当て）」のそれぞれを参照してください。

TDコマンド格納ファイルから入力するとき，！（UNIXコマンドの実行）コマンドで指定するUNIXコマンドまたはオペランドにシフトJISからUTF-8に変換できない文字コードは使用できません。

！（UNIXコマンドの実行）コマンドについては，「5.4　TDコマンドの詳細」の「5.4.38　！（UNIXコマンドの実行）」を参照してください。

TDコマンド格納ファイルから入力するとき，GO（実行の開始／再開）コマンド，STEP IN（ステップイン実行の開始／再開）コマンド，およびSTEP OVER（ステップオーバー実行の開始／再開）コマンドのPARAMETERオペランドで指定する引数の文字列に，シフトJISからUTF-8に変換できない文字コードは使用できません。

GO（実行の開始／再開）コマンド，STEP INコマンド，およびSTEP OVERコマンドについては，「5.4　TDコマンドの詳細」の「5.4.4　GO（実行の開始／再開）」，「5.4.5　STEP IN（ステップイン実行の開始／再開）」，および「5.4.6　STEP OVER（ステップオーバー実行の開始／再開）」のそれぞれを参照してください。

TDコマンドの実行結果およびメッセージに含まれるシフトJISからUTF-8に変換できない文字コードは，ログ出力ファイル，結果出力ファイル，結果蓄積ファイル，実行結果出力ファイル，およびラインモードのコンソールに出力するとき，ピリオド（.）に置き換えます。

TDコマンド格納ファイルのTDコマンドに含まれるシフトJISからUTF-8に変換できない文字コードは，結果出力ファイルにTDコマンドを出力するとき，ピリオド（.）に置き換えます。

COBOLのソースプログラムに含まれるシフトJISからUTF-8に変換できない文字コードは，カバレージ情報リスト・カウント情報リストでは，半角ピリオド（.）に置き換えます。

2　テストデバッガの概要と規則

テストデバッガの前提条件，概要，設定値，使用例などについて説明します。

2.1　テストデバッガの前提条件

2.1.1　テストデバッガの入出力構成と使用するファイル

(1)　入出力構成

テストデバッガを使ったプログラムのテスト時の入出力構成を図2-1に示します。

図2‒1　テスト時の入出力構成

注※1

目的に応じて次の拡張子を使用します。

・固定形式正書法で書かれた原始プログラムをコンパイルする場合

　.cbl，.CBL，.cob，.ocb，または環境変数CBLFIXで指定した拡張子

・自由形式正書法で書かれた原始プログラムをコンパイルする場合

　.cbf，.ocf，または環境変数CBLFREEで指定した拡張子

注※2

コンパイラによる生成と，利用者による作成が可能です。

#INCLUDEコマンドで指定するときは，拡張子は任意に指定できます。

注※3

システムによって違いがあります。詳細は，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

注※4

ラインモードの場合だけ使用できます。

(2)　使用するファイル

テストデバッガを使ったテストで使用するファイルについて説明します。

ソースファイル

テキストエディタ（viやFSEDなど）を使用して開かれるファイルです。

実行可能ファイル

テストデバッグの対象となる実行可能ファイルです。

共用ライブラリファイル

テストデバッグの対象となる共用ライブラリファイルです。共用ライブラリについては，「2.4.5　共用ライブラリ」を参照してください。

プログラム情報ファイル

テストデバッガで使用するプログラムの情報を格納するファイルです。テストデバッグのために，-TDInfコンパイラオプションを指定してコンパイルした場合，コンパイラはソースファイル名の拡張子を「.cbp」に変えたプログラム情報ファイルを出力します。

プログラム情報ファイルは，使用するテストデバッガと同じバージョンのコンパイラで作成されたものでなければなりません。バージョンが異なる場合は，次に示すエラーメッセージが表示されます。

KCCC4436T-E 異なるバージョンでコンパイルされたプログラム情報ファイルのため，対象としません。ファイル（xxxxx）

シミュレーションのために，-SimMainコンパイラオプション，-SimSubコンパイラオプション，または-SimIdentコンパイラオプションと-DynamicLinkコンパイラオプションを指定してコンパイルした場合，コンパイラは拡張子に「.cbs」を付けたプログラム情報ファイルを出力します。

プログラム情報ファイルの詳細については，マニュアル「COBOL2002　使用の手引　手引編」の「主／副プログラムシミュレーションで生成する擬似プログラム用プログラム情報ファイル」の説明を参照してください。

TDコマンド格納ファイル

TDコマンドを記述するテキストファイルです。

ラインモードでは，#INCLUDEコマンドで取り込むことができます。

バッチモードでは，入力ファイルとして用意する必要があります。バッチモードの入力として指定する場合の拡張子は，「.tdi」または「.tds」である必要があります。#INCLUDEコマンドで指定する場合は，ファイル名と拡張子は任意に指定できます。

ログ出力ファイル

端末に表示される内容を出力するファイルです。SET LOGコマンドで指定できます。バッチモードでは使用できません。ファイル名と拡張子は任意に指定できます。

結果蓄積ファイル

TDコマンドの実行結果を出力するファイルです。SET PRINTコマンドでファイルを指定します。PRINTオペランドを持つTDコマンドでPRINTを指定すると，そのコマンドの実行結果がファイルに出力されます。

結果出力ファイル

バッチモードの入力となったTDコマンド格納ファイル中のTDコマンド操作によるメッセージおよび結果を出力するファイル（.tdl）です。

注意事項

プログラム情報ファイルは，実行可能ファイルまたは共用ライブラリファイルのあるディレクトリを参照します。任意のディレクトリのプログラム情報ファイルを参照する場合は，環境変数CBLPIDIRにディレクトリ名を指定します。

環境変数CBLPIDIRを指定した場合のプログラム情報ファイルの検索順序は，「3.2.2　環境変数の指定」の注意事項を参照してください。

2.1.2　プログラムのコンパイル

テストデバッガを使用するためには，プログラムのコンパイル時に-TDInfコンパイラオプションを必ず指定します。また，必要に応じて次のコンパイラオプションもあわせて指定します。

-CVInf　-SimMain　-SimSub　-SimIdent　-DynamicLink

テストデバッガの機能を使用するために指定するCOBOL2002のコンパイラオプションを次に示します。コンパイラオプションの詳細については，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

表2‒1　テストデバッガの機能とコンパイラオプション

テストデバッガの機能

コンパイラオプション

テストデバッガを使用する

-TDInf

カバレージを使用する

-CVInf

主プログラムシミュレーションを使用する

-SimMain（擬似主プログラムを生成する）

副プログラムシミュレーションを使用する

-SimSub，-SimIdentと-DynamicLink,Call

または-DynamicLink,IdentCall（擬似副プログラムを生成する）

ccbl2002コマンド以外でリンクする場合に必要な，リンク時の指定を次に示します。

表2‒2　テストデバッガのためのリンク時の指定

対象

機能

リンク時の指定

実行可能ファイル

実行可能ファイルをテストデバッガの対象とする場合

指定しない

注※

-lcbl2ktdは，-lcbl2kよりも前に指定してください。

ccbl2002を使用しないで，ccコマンドを使用する場合の使用例を次に示します。

（使用例）

実行可能ファイルをccコマンドで作成する

AIX(32)の場合

cc TEST01.o TEST02.o -o TEST -L/opt/HILNGcbl2k/lib -lcbl2k -lcbl2kml -ldl -lm

AIX(64)の場合

cc -q64 TEST01.o TEST02.o -o TEST -L/opt/HILNGcbl2k64/lib -lcbl2k64 -lcbl2kml64 -ldl -lm

Linux(x86)の場合

cc TEST01.o TEST02.o -o TEST -L/opt/HILNGcbl2k/lib -lcbl2k -lcbl2kml -ldl -lm

Linux(x64)の場合

cc TEST01.o TEST02.o -o TEST -L/opt/HILNGcbl2k64/lib -lcbl2k -lcbl2kml -lm

共用ライブラリをldコマンドで作成するときは，「2.4.5　共用ライブラリ」を参照してください。

注意事項

-Optimize,2コンパイラオプションによる最適化の指定をして作成したプログラムでは，文が最適化されることがあり，テストデバッグ時にプログラムの実行順序を変更する操作によって，プログラムの動作が保証されない場合があります。また，中断点で参照できるデータ名が，最適化によって参照できない場合があります。

2.1.3　テストしたいプログラムの実行

テストデバッガの対象となるプログラムは，一つの実行可能ファイルと複数の共用ライブラリファイルで構成されます。

注意事項

ldコマンドの-sオプションやstripコマンドなどで実行可能ファイルや共用ライブラリのシンボル情報を削除した場合，その実行可能ファイルや共用ライブラリは，テストデバッグの対象になりません。

なお，Linuxでは，cbltd2kコマンドやcbltl2kコマンドの-Executeオプションに指定する実行可能ファイルは，テストデバッグの対象にしない場合でもシンボル情報が必要です。

共用ライブラリのロードは，COBOLプログラムの実行時の動作に従います。指定した共用ライブラリが，プログラムの実行時にロードされた場合に，テストデバッガの対象になります。ロードされなかった場合は，テストデバッガの対象になりません。

テストデバッガでは，共用ライブラリがロードされた場合に次のチェックをして，指定された共用ライブラリとロードされた共用ライブラリが同じであるかを判断しています。次のチェックで，指定された共用ライブラリとは異なると判断された場合は，テストデバッガの対象になりません。

チェック内容

　・ロードされた共用ライブラリのファイルが共用ライブラリを検索するパスにある。

共用ライブラリについては，「2.4.5　共用ライブラリ」を参照してください。

STOP RUN文を記述しない場合は，「COBOLプログラムの実行を終了しました」のメッセージが表示されません。

テストデバッガを実行するシステム以外で作成された実行可能ファイルを対象にすると，KCCC4216T-SまたはKCCC4412T-Eのメッセージが出力され，テストデバッガまたはカバレージが終了します。

テストデバッガを実行するシステム以外で作成された共用ライブラリを対象にすると，KCCC4216T-SまたはKCCC4412T-E，およびKCCC0331T-Iのメッセージが出力され，テストデバッガの対象になりません。テストデバッガは続行します。

2.1.4　テストプログラムの構成

テストデバッグの対象となるプログラムの構成，プログラム定義，クラス定義，および関数定義の詳細については，マニュアル「COBOL2002　使用の手引　手引編」の翻訳グループについての説明を参照してください。

2.1.5　文字コード

環境変数LANGを指定すると，テストデバッガまたはカバレージの入出力は，指定された文字コードに対応します。環境変数LANGには，次の文字コード名が指定できます。

OS

文字コード名

出力メッセージの文字コード

AIX

Ja_JP

シフトJIS

ja_JP

EUC

Linux

ja_JP.UTF-8

UTF-8

ja_JP.utf8

注意事項

環境変数LANGによる文字コード名の指定は，コンパイル時とテストデバッガまたはカバレージの実行時で同じである必要があります。異なった環境変数LANGを指定し，コンパイルして出力したプログラム情報ファイルは，テストデバッガではプログラム開始時またはTDコマンド入力時にエラーになり，カバレージではプログラムの実行開始時にエラーになります。

環境変数LANGに，日本語EUCの文字コードを指定した場合，起動コマンドおよびTDコマンドの入力で，EUCの3バイトの外字は使用できません。

Linuxの場合，環境変数CBLSRCENCODINGにSJISを指定する必要があります。

2.1.6　その他の注意事項

(1)　ファイルの書き込み時の制約

複数のccbl2002コマンドによって，同時にプログラムがコンパイルされた場合，コンパイラが生成する次のファイルは，あとから生成されたファイルが有効になります。

プログラム情報ファイル

TDコマンド格納ファイル

同時にカバレージ情報の蓄積をした場合，プログラムの終了後にプログラム情報ファイルに書き込みを同時にすると，エラーになる場合があります。

(2)　作業用ファイルについて

COBOL2002では，テストデバッグ時に作業用ファイルを生成して使用しています。作業用ファイルは，次の表にあるディレクトリに，先頭に「CBLTD」，その後ろに任意の文字列が付いたファイル名で生成されます。テストデバッグ時に強制終了した場合など，作業用ファイルが正しく削除されないことがあります。そのときは，OSのコマンドなどを使用して削除してください。

OS

出力ディレクトリ

AIX

/tmpディレクトリに生成されます。ただし，環境変数TMPDIRを指定したときは，環境変数TMPDIRに指定したディレクトリに生成されます。

Linux

/tmpディレクトリに生成されます。

2.2　テストデバッグの概要

2.2.1　プログラムの中断

テスト中のプログラムの実行を任意に中断させることができます。中断させた状態で，次の操作をし，プログラムを調査できます。

データの値を表示，変更する。

プログラムの実行経路を表示する。

プログラムを中断させるには，次の方法があります。

中断点を設定する。

データ監視条件を設定する。

また，ラインモードでは，次の場合にもプログラムを中断させます。

プログラムで実行時エラーが発生した。

ファイル管理記述項で指定した装置名にファイルの割り当てをしていないファイルをオープンした。

(1)　中断点の設定による中断

プログラムの実行を，任意の個所で中断させるには，中断点を設定します。中断点を設定すると，実行中のプログラムが中断点に達したときに，中断状態になります。中断中は，中断状態で実行できるTDコマンドだけを指定できます。処理が繰り返し実行されるような個所に中断点を設定する場合は，スキップ回数を指定できます。この指定によって，不要な中断回数を減らすことができ，効率良くプログラムをテストできます。

TDコマンドの場合，SET BREAKコマンドやRESET BREAKコマンドで，中断点を設定したり，解除したりできます。SET BREAKコマンドおよびRESET BREAKコマンドの詳細については，「5.4　TDコマンドの詳細」の「5.4.1　SET BREAK／RESET BREAK（中断点の設定と解除）」を参照してください。

(2)　データ監視条件の設定による中断

データの値を監視し，その状態によってプログラムを中断できます。監視したいデータの値に条件式を指定することもできます。

TDコマンドの場合，SET WATCHコマンドやRESET WATCHコマンドで，データ監視条件を設定したり，解除したりできます。SET WATCHコマンドおよびRESET WATCHコマンドの詳細については，「5.4　TDコマンドの詳細」の「5.4.3　SET WATCH／RESET WATCH（データ監視条件の設定と解除）」を参照してください。

データ監視条件の設定による中断の詳細は次のとおりです。

データ値の変化の監視

データ値が次の変化をしたときに，プログラムの実行が中断されます。

データ値が変化した。

アドレス名によって参照されるデータの場合，アドレス不正（アドレスが設定されていない，不正なアドレスが設定されている）によって参照できない状態から，参照できる状態に変化した。または，参照できる状態から，アドレス不正（アドレスが設定されていない，不正なアドレスが設定されている）によって参照できない状態に変化した。

比較条件式の監視

比較条件式の判定結果が次のとき，プログラムの実行が中断されます。比較条件式の評価については，比較の規則「2.3.1　データの比較・代入規則」の「(2)　データの比較規則」を参照してください。

比較条件式が，不成立の状態から，成立の状態に変わった（ただし，成立の状態からデータが変更されたとき，さらに成立の状態が継続しても，中断の状態とはならない）。

アドレス名によって参照されるデータの場合，アドレス不正（アドレスが設定されていない，不正なアドレスが設定されている）によって参照できない状態から参照できる状態に変化したときに，比較条件式が成立した。

左辺・右辺の両方のデータが参照できるソース要素に制御が渡ったときに，比較条件式が成立した。

（例）

次のプログラムに，（A > B）の比較条件式のデータ監視をすると一連番号3000の行で中断します。一連番号7000の行で比較条件式は成立しますが，すでに一連番号3000の行で成立していて，不成立な状態から成立な状態に変化したわけではないので中断されません。再び比較条件式が不成立な状態から成立の状態になり，中断されるのは一連番号11000の行となります。

プログラム

001000     MOVE  10 TO A.
002000     MOVE   5 TO B.
003000     〜
005000     〜
006000     MOVE  11 TO A.
007000     〜.
008000     MOVE   1 TO A.
009000     〜
010000     MOVE  10 TO A.
011000     〜

データの監視範囲については，「2.3.2　データ項目・ファイル名が参照できる範囲」を参照してください。

注意事項

COBOLプログラムの連絡節や局所場所節に定義されたデータ項目および特殊レジスタは，次に示す実行単位ごとに，それぞれ異なるデータとして監視されます。

・オブジェクト指向のインスタンス単位

・シングルスレッドやマルチスレッドなどのスレッド単位

・再帰できるソース要素※の再帰単位

注※

再帰できるソース要素とは次のCOBOLプログラムを示します。

RECURSIVE指定を伴うプログラム

利用者定義関数

メソッド

プログラムの中断時に，データ監視条件を設定した場合，監視対象データが参照できればその位置から，参照できなければ参照できる実行時要素に制御が渡ったときにデータの監視が開始されます。

(3)　実行時エラーが発生した場合の中断

ラインモードの場合，実行時エラーが発生したときプログラムが中断します。実行時エラーが発生した文で，プログラムの状態を調べることができます。この中断のための設定は特に必要ありません。

次の条件がすべて当てはまるときに，プログラムが中断します。

実行時エラーのメッセージのレベルがSまたはUのとき，または，CBLABNサービスルーチンによってユーザプログラムが終了したとき（KCCC0900R-Iのメッセージが表示されます）。

プログラムが，実行時エラーによって中断したあとに，データ参照などデバッガの操作の対象にできる状態であるとき。

-TDInfコンパイラオプションでコンパイルした翻訳単位で実行時エラーが発生したとき。

AIXの場合，実行時エラーによってユーザプログラムが中断したときは，次の手順でユーザプログラムを続行できます。

データの値を変えるなどのデバッガの操作によって実行時エラーの原因を解決する。

実行時エラーの原因を解決したあとに，ジャンプまたはジャンプ実行によって，実行時エラーが発生した文を再び実行させる。

ただし，実行時エラーの種類によっては，ジャンプまたはジャンプ実行ができない場合があります。ジャンプまたはジャンプ実行をしないで，ユーザプログラムを続行したときは，ユーザプログラムが終了します。

2.2.2　プログラムの実行

プログラムの実行を制御する機能には次の種類があります。

(1)　連続実行

GOコマンドで，プログラムを連続して実行できます。

GOコマンドについては「5.4　TDコマンドの詳細」の「5.4.4　GO（実行の開始／再開）」を参照してください。

(2)　ステップイン

STEP INコマンドで，プログラムを1文ずつ実行して中断できます。CALL文，INVOKE文および関数呼び出しをする文は，呼び出したプログラムに制御が渡って中断されます。

STEP INコマンドについては「5.4　TDコマンドの詳細」の「5.4.5　STEP IN（ステップイン実行の開始／再開）」を参照してください。

(3)　ステップオーバー

STEP OVERコマンドで，プログラムを1文ずつ実行して中断できます。ただし，ステップインと異なり，CALL文，INVOKE文および関数呼び出しをする文は，呼び出したプログラムに制御が渡って中断されることはありません。

STEP OVERコマンドについては「5.4　TDコマンドの詳細」の「5.4.6　STEP OVER（ステップオーバー実行の開始／再開）」を参照してください。

注意事項

呼び出し先プログラムで，中断点の設定があるとき，データ監視の条件が成立したとき，割り込みが実行されたとき，および実行時エラーが発生したときは，これらの条件が起きた文でプログラムが中断されます。

USE手続きにプログラムの制御が渡る文でステップオーバーした場合は，USE手続きの文では中断されないで，USE手続きを終了した次の文で中断されます。

プログラムの入口を示すものとして，PROCEDUREまたはENTRYを使用します。プログラムの出口を示すものとして，END PROGRAMまたはEND METHODを使用します。省略された場合は空白行が挿入され，使用されます。

(4)　ジャンプ

STEP TOコマンドで，中断点と異なる文に中断位置をジャンプできます。次にプログラムの実行を再開したときは，移動した中断位置からプログラムが実行されます。

STEP TOコマンドについては「5.4　TDコマンドの詳細」の「5.4.7　STEP TO（ステップツー実行の再開）」を参照してください。

注意事項

中断点が属するソース要素の文へジャンプできます。手続き部に宣言部分があるときにできるジャンプは次のとおりです。

・宣言部分以外で中断しているとき

　宣言部分以外にジャンプできる。宣言部分にはジャンプできない。

・宣言部分で中断しているとき

　中断点が属する節の中の文にジャンプできる。

ソース要素の入口・出口およびENTRY文へのジャンプはできません。

-Optimize,2コンパイラオプションによる最適化を指定してコンパイルしたプログラムでは文が最適化されることがあります。このため，文を選択してもジャンプ，ジャンプ実行ができないことがあります。また，プログラムの実行順序を変更するジャンプ操作をすると，その後のプログラムの動作が保証されない場合があります。

(5)　ジャンプ実行

GOコマンドで，中断点と異なる文から，プログラムの実行を再開できます。

GOコマンドについては「5.4　TDコマンドの詳細」の「5.4.4　GO（実行の開始／再開）」を参照してください。

(6)　実行の強制終了

STOPコマンドで，プログラムの実行を強制的に終了できます。

STOPコマンドについては，「5.4　TDコマンドの詳細」の「5.4.8　STOP（プログラムの強制終了）」を参照してください。

(7)　実行の開始と開始時にできる指定

プログラムの実行は，次の操作で開始できます。

連続実行

ステップイン

ステップオーバー

プログラムが終了したあとも，上記の操作で，再びプログラムを開始させることができます。

プログラムの開始時には，次の指定ができます。

プログラムへ渡す引数

カバレージ情報の蓄積

プログラムへ渡す引数は，文字列を指定します。指定された文字列は，空白の区切りによって，複数の引数に分けられます。空白を含む文字列を一つの引数として指定するときは，引用符（"）で囲みます。

実行の開始と開始時にできる指定の詳細については，「5.4　TDコマンドの詳細」の「5.4.4　GO（実行の開始／再開）」を，ステップインについては，「5.4　TDコマンドの詳細」の「5.4.5　STEP IN（ステップイン実行の開始／再開）」を，ステップオーバーについては，「5.4　TDコマンドの詳細」の「5.4.6　STEP OVER（ステップオーバー実行の開始／再開）」を参照してください。

カバレージ情報の蓄積を指定すると，プログラムの実行中にカバレージ情報が蓄積され，プロセスが終了したときに，蓄積されたカバレージ情報がプログラム情報ファイルに蓄積されます。蓄積されたカバレージ情報は，カバレージの表示機能で表示できます。

カバレージ情報の表示については，「7.3　カバレージ情報の表示（テキスト形式）」および「7.4　カバレージ情報の表示（CSV形式）」を参照してください。

注意事項

プログラムへ渡す引数は，Cインタフェース形式（-Main,SystemコンパイラオプションまたはC言語のプログラムから呼ばれるプログラム），およびVOS3形式（-Main,V3コンパイラオプション）の二つがあります。

プログラムへ渡す引数については，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

使用例1

Cインタフェース形式の引数に，GOコマンドで値を設定します。

COBOLプログラム

01 ARGC PIC 9(8) USAGE COMP.
01 ARGV.
  02 ARGV1 ADDRESS.
  02 ARGV2 ADDRESS.
  02 ARGV3 ADDRESS.
PROCEDURE DIVISION USING BY VALUE ARGC BY REFERENCE ARGV.
            ・
            ・
            ・

TDコマンド

ARGCに3，ARGV1にプログラム名のアドレス，ARGV2に文字列APPLEのアドレス，ARGV3に文字列ORANGEのアドレスを設定します。

    GO PARAMETER('APPLE ORANGE')

ARGCに2，ARGV2に文字列APPLE ORANGEのアドレスを設定します。

    GO PARAMETER('"APPLE ORANGE"')

使用例2

VOS3形式の引数に，GOコマンドで値を設定します。

COBOLプログラム

01 PARM.
  02 PLEN  PIC S9(4) USAGE COMP.
  02 PCHAR PIC X(30).
PROCEDURE DIVISION USING PARM.
            ・
            ・
            ・

TDコマンド

PLENに5，PCHARにAPPLEを設定します。

    GO PARAMETER('APPLE')

PLENに12，PCHARにAPPLE ORANGEを設定します。

    GO PARAMETER('"APPLE ORANGE"')

2.2.3　プログラムの状態の表示

プログラムの状態を表示します。

(1)　呼び出し順序番号

呼び出し順の番号を，呼び出し順序番号とします。

呼び出し順序番号は，最初に制御が渡る実行時要素を1として実行時要素が生成されるたびに一つずつ増加します。呼び出し元に戻るときは一つ減少します。

（例）

上記の順でプログラムが呼び出された場合，呼び出し順序番号は次のとおりになります。

(2)　現在位置の表示

ラインモードではプログラムの中断位置の情報を表示します。表示する形式については，「2.5　ソース要素・中断点・通過点の表示形式」を参照してください。

2.2.4　プログラムの実行の追跡

プログラムの実行経過を追跡して，その経路を表示します。

(1)　トレース表示

SET TRACEコマンド，またはRESET TRACEコマンドで，プログラムの実行を追跡して，通過点を表示します。同時に，ソース要素の引数のデータ項目の値を表示することもできます。

SET TRACEコマンドおよびRESET TRACEコマンドについては「5.4　TDコマンドの詳細」の「5.4.9　SET TRACE／RESET TRACE（トレース表示の開始と中止）」を参照してください。

(2)　フロー情報の表示

SET FLOWコマンド，またはRESET FLOWコマンドでプログラムの実行経路を示す通過点の情報を追跡して，プログラムの中断時にまとめて表示します。プログラムの実行時エラーが発生したときにも，実行時エラー発生までのプログラムの実行経路を表示できます。

SET FLOWコマンドおよびRESET FLOWコマンドについては「5.4　TDコマンドの詳細」の「5.4.10　SET FLOW／RESET FLOW（フロー情報の蓄積開始と終了）」を参照してください。

2.2.5　データの操作

COBOLプログラムのデータに対して，データの表示，データの代入，データの比較ができます。データの表示によって，プログラムの実行状態を確認できます。また，値を変更することによって，状態を変更してテストができます。

データの代入規則については「2.3.1　データの比較・代入規則」の「(1)　データの代入規則」を，データの比較規則については「(2)　データの比較規則」を参照してください。

(1)　データの表示

DISPLAY DATAコマンドについては，「5.4　TDコマンドの詳細」の「5.4.13　DISPLAY DATA（データの値表示）」を参照してください。

(a)　データ属性表示

データの属性に従い値を表示します。データの値が属性で表示できないときは，16進数で表示されます。

（表示例）

AIX(32)，Linux(x86)の場合

　名  称      データ1
　値        123

　名  称      データ2
　エラー
　*001E87C0  0000

AIX(64)，Linux(x64)の場合

　名  称      データ1
　値        123

　名  称      データ2
　エラー
　*00000000004172F8  0000

(b)　16進数表示

メモリに位置するアドレスとともに，データの値を16進数で表示します。アドレスは，先頭に”*”を付けて表示され，表示できないときは，”*-------- ” が表示されます。データの値は，4バイト（8けた）単位に区切って表示されます。

（表示例）

AIX(32)，Linux(x86)の場合

　名  称      データ3
　*001E87C0  31323334 353637

AIX(64)，Linux(x64)の場合

　名  称      データ3
　*00000000004172F8  31323334 353637

注意事項

表示されるデータのサイズは，32,767バイトまでです。これを超えるときは，データの先頭から32,767バイトを表示します。32,768バイト以降のデータは，DISPLAY DATAコマンドにデータ名の部分参照を指定することによって表示できます。

(2)　データの代入

ASSIGN DATAコマンドで，データに値を代入して，値を変更できます。

ASSIGN DATAコマンドの詳細については，「5.4　TDコマンドの詳細」の「5.4.15　ASSIGN DATA（データの値代入）」を参照してください。

(3)　データの比較

IFコマンドを使用して，比較条件式によって，データとデータの比較，データと定数の比較ができます。比較条件式によって，TDコマンドの実行の条件を指定できます。また，比較条件式は，データ監視条件の設定にも使用できます。

IFコマンドの詳細については，「5.4　TDコマンドの詳細」の「5.4.16　IF（データの値比較）」を参照してください。

2.2.6　領域の操作

ALLOCATE AREAコマンドを使用して，領域を確保し，そのアドレスをアドレス名，アドレスデータ項目またはポインタ項目に設定できます。また，任意のデータ項目のアドレスをアドレスデータ項目またはポインタ項目に設定できます。

この機能は，連動する別のプログラムで確保されるデータ領域を参照するテストを実行する場合，その別プログラムを動作させることなくデータ領域だけ確保したいときに使用します。確保した領域は，FREE AREAコマンドで解放します。

(1)　領域の確保・解放

アドレス名によって参照されるデータ項目と同じサイズの領域を確保して，アドレス名に設定できます。また，指定したサイズの領域を確保して，アドレスデータ項目，ポインタ項目に設定できます。

アドレス名に設定されているアドレスの領域が不要となったときは，これを解放できます。領域を解放したときは，アドレス名にZEROが設定されます。

主プログラムシミュレーションのパラメタや，副プログラムシミュレーションのRETURNINGにアドレス名を使用するとき，その領域を確保して値を設定できます。

なお，アドレスデータ項目，ポインタ項目も同様です。

ALLOCATE AREAコマンドおよびFREE AREAコマンドの詳細については，「5.4　TDコマンドの詳細」の「5.4.17　ALLOCATE AREA／FREE AREA（領域の確保と解放）」を参照してください。

注意事項

FREE AREAコマンドが解放する領域は，ALLOCATE AREAコマンドで確保した領域です。このため，FREE AREAコマンドには，ALLOCATE AREAコマンドで確保した領域のアドレスが設定されているアドレス名を指定する必要があります。なお，アドレスデータ項目，ポインタ項目も同様です。

(2)　任意のデータ項目のアドレスの取得

任意のデータのアドレスをアドレス名，アドレスデータ項目，またはポインタ項目に設定できます。

アドレス名で参照されたデータ名のアドレスを取得した場合は，そのアドレス名が指すアドレスが設定されます。

ASSIGN ADDRESSコマンドの詳細については，「5.4.18　ASSIGN ADDRESS（アドレスの取得）」を参照してください。

2.2.7　プログラムの単体テスト

テストデバッガには，主，副プログラムシミュレーション機能，ファイルシミュレーション機能，DCシミュレーション機能などの単体テスト機能があります。単体テスト機能を使用すると，プログラムやファイルなどの実行環境が整わない段階でも，作成したプログラムを単体でテストできます。

テストデバッガでは，プログラムの単体テストをするために，次のシミュレーションをする機能があります。

主プログラムシミュレーション

副プログラムシミュレーション

ファイルシミュレーション

DCシミュレーション

(1)　主プログラムシミュレーション

SIMULATE MAINコマンドで，ソース要素を呼び出す主プログラムをシミュレーションします。ソース要素に渡す引数に，TDコマンドで値を設定するなどの操作ができます。呼び出されるソース要素は，プログラム定義です。

SIMULATE MAINコマンドの詳細については，「5.4　TDコマンドの詳細」の「5.4.19　SIMULATE MAIN（主プログラムシミュレーションの設定）」を参照してください。

主プログラムシミュレーションをする手順を次に示します。

-SimMainコンパイラオプションを指定して，プログラムをコンパイルする。

テストデバッガを起動する。

テストデバッグ対象のソース要素を開始するときに必要な設定をSIMULATE MAINコマンドで設定する。テストデバッグ対象のソース要素に渡す引数に値の設定ができる。

プログラムを実行して，テストデバッグの操作を開始する。

注意事項

SIMULATE MAINコマンドで入口名を指定したとき，テストデバッグ対象プログラム中にSIMULATE MAINコマンドで指定したプログラム名と同じ名前の別のプログラムがある場合，別のプログラムにも同じ入口名が指定されたENTRY文が必要です。同じ入口名を持つENTRY文がない場合は，エラーメッセージを出力して，主プログラムシミュレーションは設定されません。

主プログラムシミュレーションを設定する場合は，同じ名前を持ち，主プログラムシミュレーションの対象としないプログラムを次のどちらかの方法でデバッグ対象から外してください。

主プログラムシミュレーションの対象としないプログラムは-TDInfコンパイラオプションを付けないでコンパイルしてください。

主プログラムシミュレーションの対象としないプログラムが属する共用ライブラリを，-Libraryオプションで指定しないでください。

主プログラムシミュレーションの使用例を次に示します。

使用例1

プログラムSUB01の開始時に，データ名PARAM01・PARAM02に値を設定します。

SIMULATE MAIN( #PROG( SUB01 ) )
  ASSIGN DATA( PARAM01 ) VALUE( 1 )
  ASSIGN DATA( PARAM02 ) VALUE(100)
ENDSIMULATE
GO   *>プログラムの実行を開始する。

使用例2

ENTRY文 'ENTRYSUB'からプログラムの実行を開始します。

SIMULATE  MAIN( #PROG( SUB02 ) 'ENTRYSUB' )
  ASSIGN DATA( PARAM01 ) VALUE( 2 )
ENDSIMULATE
GO   *>プログラムの実行を開始する。

(2)　副プログラムシミュレーション

SIMULATE SUBコマンドで，テストデバッグ対象のソース要素が呼び出す副プログラムのインタフェースをTDコマンドでシミュレーションします。副プログラムに渡される引数の値を表示して確認したり，副プログラムが値を返す引数に値を設定したりできます。シミュレーションする副プログラムのソース要素は，プログラム定義です。

SIMULATE SUBコマンドの詳細については，「5.4　TDコマンドの詳細」の「5.4.20　SIMULATE SUB（副プログラムシミュレーションの設定）」を参照してください。

副プログラムシミュレーションをする手順を次に示します。

呼び出す副プログラムがない場合は，次のコンパイラオプションを指定してコンパイルする。

・-SimSubコンパイラオプションで呼び出すプログラム名を指定する。

・一意名指定のCALL文によって副プログラムを呼び出す場合は，-SimIdentコンパイラオプションおよび-DynamicLinkコンパイラオプションを指定する。

テストデバッガを起動する。

副プログラムがする処理をSIMULATE SUBコマンドで設定する。副プログラムが，引数やRETURNINGで返すデータ項目に値の設定ができる。

プログラムを実行して，テストデバッグの操作を開始する。

呼び出す副プログラムのソース要素がある場合は，-SimSubコンパイラオプションを指定してコンパイルする必要はありません。存在する副プログラムの処理を，SIMULATE SUBコマンドの設定によって，TDコマンドの処理に置き換えて実行させることができます。

CALL文の引数とRETURNINGのデータ項目は，記号名を割り当ててシミュレーションの手続きで参照できます。複数のCALL文で異なるデータ名の引数やRETURNINGが指定されている場合でも，記号名を割り当てることで，同一の名称によって，シミュレーションの手続きで参照できます。

副プログラムシミュレーションの実行回数を，カウンタ変数によってカウントし，参照できます。

注意事項

再帰属性の付いたプログラムが自プログラムを呼び出している場合，そのプログラム中に中断している状態で，自プログラムに対しての副プログラムシミュレーションは設定できません。

SIMULATE SUBコマンドのTDコマンド群中に書かれたASSIGN DATAコマンドによって，特殊レジスタRETURN-CODEに設定した値は，シミュレーション対象の副プログラムにRETURNING指定がない場合だけ，副プログラムを呼び出すプログラムのRETURN-CODEに戻されます。

ソース要素がある副プログラムにシミュレーションを設定しても，呼び出すプログラムと副プログラムの間の引数および返却項目に矛盾があると，COBOLプログラムが異常終了します。異常終了を避けるためには，環境変数CBLPRMCHKWを設定してください。

副プログラムシミュレーションの使用例を次に示します。

使用例1

プログラムPROG1をシミュレーションします。

引数X，Yに記号名A，Bを対応させます。

COBOLプログラム

データ定義

 01 X  PIC X(10).
 01 Y.
     02 Y1  PIC X(10).
     02 Y2  PIC X(10).
 01 RTN.
     02 R-NAME.
        03 N-DATA  PIC X(10).

呼び出し文

 CALL  'PROG1'  USING  X,Y  RETURNING  RTN.

TDコマンド

  SIMULATE SUB( #PROGRAM(PROG1) )  USING(A,B)  RETURNING(R)
    DEFINE
      01 A
      01 B
        02 B1
        02 B2
      01 R
        02 R1
          03 R11
    ENDDEFINE
    IF CONDITION(A=1)
      ASSIGN DATA( B1 )  VALUE('APPLE')
      ASSIGN DATA( B2 )  VALUE ('PANDA')
      ASSIGN DATA( R11 )  VALUE ('NORMAL')
    ELSE
      DISPLAY  DATA ( A )
      ASSIGN DATA( R11 )  VALUE ('ABNORMAL')
    ENDIF
  ENDSIMULATE

(3)　ファイルシミュレーション

SIMULATE FILEコマンドで，プログラムから入出力するファイルがないときに，入出力文によるインタフェースをシミュレーションできます。

SIMULATE FILEコマンドの詳細については，「5.4　TDコマンドの詳細」の「5.4.21　SIMULATE FILE（ファイルシミュレーションの設定）」を参照してください。

(a)　ファイル入出力文のシミュレーション

入力文のシミュレーションでは，ファイルのレコード領域への値の設定ができます。出力文のシミュレーションでは，レコード領域の内容を表示できます。また，入出力文で，擬似的に入出力条件を発生させることができます。

ファイルシミュレーションは，ファイル結合子とオープンモード（INPUT，OUTPUT，I-O，EXTEND）の単位に，シミュレーションでする手続きを指定します。さらに，入出力文ごとに手続きを指定できます。

ファイルシミュレーションの実行回数を，カウンタ変数によってカウントし，参照できます。

注意事項

ファイルシミュレーションは，実体ファイルが割り当てられているときでも指定できます。シミュレーションの手続きが実行されると，実体ファイルへのアクセスは行われません。

INTOの指定があるREAD文は，シミュレーションの手続きの実行後に，READ文によるデータが転記されます。レコード領域に代入した値が書き換えられるため，注意が必要です。

SORT文，MERGE文のUSING指定，GIVING指定で指定するファイルは，READ文，WRITE文としてシミュレーション対象となります。ただし，USING指定に指定されたファイルはGO ENDコマンドを指定しないかぎりシミュレーションが終わりません。

ファイルシミュレーションは，シミュレーションを設定したあとのOPEN文で開始します。ファイルをOPENしたあとにファイルシミュレーションを指定した場合は，ファイルがCLOSEされたあと，再度，OPEN文が実行されたときにシミュレーションは開始します。

ファイルシミュレーションの設定と，ファイル名とオープンモードが合致するOPEN文で，ファイルシミュレーションは開始します。EXTERNAL句指定のあるファイルでは，同じシミュレーション手続きが実行されます。EXTERNAL句指定がないファイルでは，ファイルごとに別のシミュレーション手続きが実行されます。

シミュレーションが設定されているファイルに対して，再度シミュレーションを設定した場合は，設定されていたTDコマンド群を置き換えます。このとき，カウンタ変数およびREPEAT回数は初期値に戻ります。

EXTERNAL句指定のファイルのシミュレーションでは，OPEN文と入出力文が記述された翻訳単位の両方を-TDInfコンパイラオプションでコンパイルします。OPEN文または入出力文のどちらか記述された翻訳単位が-TDInfコンパイラオプションでコンパイルされていないときは，シミュレーションをしません。

使用例1

カウンタ変数を使用して，カウンタ変数の値ごとにレコードの値を設定できます。

SET QUALIFICATION( #PROG( 社員/社員 ) )
 SIMULATE FILE( 給与ファイル ) OPENMODE( IO ) COUNTER(CNT)
   IF CONDITION(CNT = 1)
      ASSIGN DATA(基本給) VALUE(100000)
   ENDIF
   IF CONDITION(CNT=2)
      ASSIGN DATA(基本給) VALUE(101000)
   ENDIF
   IF CONDITION(CNT=3)
      ASSIGN DATA(基本給) VALUE(104000)
   ENDIF
 ENDSIMULATE

同じレコードの値を連続して設定する場合は，反復回数指定を使用できます。

使用例2

繰り返し指定を使用して，同じレコードの値を連続して設定できます。

 SET QUALIFICATION( #PROG( 社員/社員 ) )
 SIMULATE FILE( 給与ファイル ) OPENMODE(IO)
   REPEAT  TIMES(2)
      ASSIGN DATA(基本給) VALUE(100000)
   ENDREPEAT
   REPEAT
      ASSIGN DATA(基本給) VALUE(101000)
   ENDREPEAT
   REPEAT  TIMES(3)
      ASSIGN DATA(基本給) VALUE(104000)
   ENDREPEAT
 ENDSIMULATE

繰り返し指定（REPEAT）は，指定された反復回数（TIMES）の回数分を入出力文に対して実行します。指定した反復回数分の実行が終了すると，次の繰り返し指定に移ります。

反復回数を省略した場合は，TIMES(1)が仮定されます。

繰り返し指定が終了しても，まだ，入出力文が現れた場合は，最後の繰り返し指定が実行されます。

OPEN文のオープンモードがI-Oの場合の入出力文は，複数あります。この場合は入出力文単位にレコード値を設定できる入出力文選択指定を使用すると便利です。

使用例3

入出力文を指定します。

 SET QUALIFICATION( #PROG( 社員/社員 ) )
 SIMULATE FILE( 給与ファイル )
     OPENMODE(IO)
   SELECT ACTION(DELETE)
      REPEAT TIMES(2)
        DISPLAY DATA(名前)
      ENDREPEAT
   ENDSELECT
   SELECT ACTION(READ)
      REPEAT
        ASSIGN DATA(基本給) VALUE(104000)
      ENDREPEAT
      REPEAT TIMES(3)
        ASSIGN DATA(基本給) VALUE(108000)
    ENDREPEAT
 ENDSELECT
 ENDSIMULATE

文種別単位に処理を繰り返すことができます。文種別指定はSELECTを使用して指定します。

SELECT指定のない入出力文で制御が渡った場合，この入出力文に対してはコマンドが実行されません。例えば上の例のようにシミュレーション手続きを実行した場合，START文の文種別指定がないのでシミュレーションが実行されないでCOBOLプログラムが続行します。

各文種別単位に反復回数がなくなったときは，使用例2のように最後のREPEATを繰り返します。

同じSELECT指定が現れた場合は，繰り返し（REPEAT）が設定順に追加されます。

(b)　入出力条件のシミュレーション

ファイルシミュレーションの手続き中で，次の入出力条件を擬似的に発生させることができます。

表2‒3　シミュレーション対象入出力条件

コマンド

シミュレーション対象入出力条件

入出力文

GO END

ファイル終了条件

（END OF FILE）

READ

GO EOP

ページ終了条件

（END OF PAGE）

WRITE

GO INVALID

無効キー条件

（INVALID KEY）

READ，WRITE，REWRITE，

START，DELETE

GO ERROR

入出力誤り

READ，WRITE，REWRITE，

START，DELETE

(c)　論理誤りチェックと入出力状態の値

ファイルシミュレーションの手続きで，入出力状態の値（FILE STATUS句で指定されたデータ名の値）に任意の値を設定できます。次の場合は，入出力状態の値にテストデバッガが値を設定します。この場合も，ASSIGN DATAコマンドによって値を変更できます。

ファイルの入出力処理の論理誤りをチェックして，エラーがあった場合，シミュレーションは実行しません。シミュレーション対象ファイルに入出力状態の値（FILE STATUS句で指定されたデータ名の値）の指定があるときは，シミュレーションの終了状態によって「表2‒4　論理誤りチェック条件」の値を入出力状態の値に設定します。

また，シミュレーション手続きによって「表2‒3　シミュレーション対象入出力条件」で示したコマンドが実行されたときは，「表2‒5　論理誤りチェック以外の設定条件」で示した値が設定されます。

シミュレーション手続きで指定がない場合は，「表2‒6　成功完了の設定条件」の成功完了時の入出力状態の値が設定されます。

表2‒4　論理誤りチェック条件

入出力状態の値

内容

41

開かれているファイル結合子に対してOPEN文を実行しようとした。

46

GO ENDコマンド実行後に再度READ文を実行しようとした。

47

入力モード（INPUT）や入出力モード（I-O）で開かれていないファイル結合子に対してREAD文やSTART文を実行しようとした。

48

正しいオープンモードでは開かれていないファイル結合子に対してWRITE文を実行しようとした。順アクセス法の場合，ファイル結合子が出力モード（OUTPUT）や拡張モード（EXTEND）で開かれていない。動的アクセス法や乱アクセス法の場合，ファイル結合子が出力モード（OUTPUT）や入出力モード（I-O）で開かれていない。

49

入出力モード（I-O）で開かれていないファイル結合子に対してREWRITE文やDELETE文を実行しようとした。

表2‒5　論理誤りチェック以外の設定条件

入出力状態の値

内容

10

GO ENDコマンド実行による終了。

23

GO INVALIDコマンド実行による終了（相対ファイル，索引ファイル）。

34

GO INVALIDコマンド実行による終了（順ファイル）。

90

GO ERRORコマンド実行による終了。または，論理誤りが発生した。

表2‒6　成功完了の設定条件

入出力状態の値

内容

00

正常終了。一般のコマンド（入出力状態の値を設定するコマンドは除く）で終了。

07

REEL／UNITのCLOSE文を実行した（CLOSE処理を行わない。OPEN状態を残す）（順ファイル）

注意事項

入出力状態の値は，ファイルシミュレーションが開始されたとき，00に初期化されます。

(4)　記号名

記号名は，次のシミュレーションでデータ項目の名前を置き換えるときに使用します。

副プログラムシミュレーション

CALL文の呼び出し文の引数に対して，USINGとRETURNINGで指定するデータ項目を記号名の名前で置き換えて参照できます。

ファイルシミュレーション

レコード記述項のデータ項目を記号名の名前で置き換えて参照できます。ファイル記述項にEXTERNAL句を指定し，複数の翻訳単位から参照されるファイルのシミュレーションで，翻訳単位ごとにレコード記述項の名前に違いがあるときでも，記号名を対応させることによって同一の名称でレコード領域を参照できます。

記号名で置き換えるデータ項目が集団項目の場合は，DEFINEオペランドによって，基本項目をレベル番号と構造定義で指定できます。基本項目を参照しないなど，必要がないときは，DEFINEオペランドの指定は不要です。

レベル番号の指定については，「5.4　TDコマンドの詳細」の「5.4.26　レベル番号（記号名構造指定）」を参照してください。

注意事項

記号名の構造定義は参照が必要な部分までを記述すればよく，原始プログラムのデータ項目の残りのレベル番号は，指定しなくてもかまいません。ただし，途中の引数，レコード記述項を省略して定義することはできません。

記号名の指定を省略した場合，データ値の表示や，エラーが発生したときのメッセージ中に記号名を表示できません。このため記号名の代わりに「*****」と表示します。記号名の表示が必要なときは，記号名を記述してください。

　（例）

A1までが記号名に対応し，A11以降が無視されます。

COBOLプログラム

データ定義

    01 A.
       02 A1.
          03 A11 PIC X(10).
          03 A12 PIC X(10).
       02 A2.

呼び出し文

    CALL 'SUB1' USING A.

TDコマンド

    SIMULATE SUB(#PROGRAM(SUB1)) USING(P)
      DEFINE
        01 P          *>  Aに対応する。
          02 P1       *>  A1に対応する。
      ENDDEFINE
        ：
    ENDSIMULATE

記号名の定義は，01から始まらなければなりません。構造が原始プログラムと合っていれば，レベル番号を一致させる必要はありません。

　（例）

P1はA1に対応づけられます。

COBOLプログラム

データ定義

    01 A.
       02 A1.
          03 A11 PIC X(10).
          03 A12 PIC X(10).
       02 A2 PIC X(10).

呼び出し文

    CALL 'SUB2' USING A.

TDコマンド

    SIMULATE SUB(#PROGRAM(SUB2)) USING(P)
      DEFINE
        01 P          *>  Aに対応する。
          04 P1       *>  A1に対応する。
      ENDDEFINE
        ：
    ENDSIMULATE

データ項目の数より記号名の数が多いとき，対応するデータ項目のない記号名を使用したTDコマンドは実行できません。

　（例）

P2に対応するデータ項目の定義がありません。

COBOLプログラム

データ定義

    01 A.
       02 A1 PIC X(10).

呼び出し文

    CALL 'SUB3' USING A.

TDコマンド

    SIMULATE SUB(#PROGRAM(SUB3)) USING(P)
      DEFINE
       01 P             *>  Aに対応する。
         02 P1          *>  A1に対応する。
         02 P2          *>  対応するデータ項目がない。
      ENDDEFINE
       ：
     DISPLAY DATA(P)     *> 実行される。
     DISPLAY DATA(P1)    *> 実行される。
     DISPLAY DATA(P2)    *> 実行できない。
       ：
    ENDSIMULATE

記号名を対応づけるデータ項目にTYPE句またはSAME AS句が指定されているときは，記号名の構造定義には，TYPE句またはSAME AS句によって展開された構造による指定をします。

　（例）

P3はA1に，P4はA2に対応づけられます。

COBOLプログラム

データ定義

    01 TYPE1 IS TYPEDEF.
      02 A1  PIC X(1).
      02 A2  PIC X(1).

    01 U1.
      02 PRM1  PIC X(1).
      02 PRM2  TYPE TO TYPE1.

呼び出し文

    CALL 'SUB4' USING U1.

TDコマンド

    SIMULATE SUB(#PROGRAM(SUB4)) USING(P)
      DEFINE
       01 P             *>  U1に対応する。
         02 P1          *>  PRM1に対応する。
         02 P2          *>  PRM2(TYPE1)に対応する。
           03 P3        *>  A1に対応する。
           03 P4        *>  A2に対応する。
      ENDDEFINE
       ：
    ENDSIMULATE

使用例1

副プログラムシミュレーションの引数に記号名を設定します。

COBOLプログラム

データ定義

01 X.
  02 X1 OCCURS 5.
    03 X11 PIC X(2).
  02 X2 PIC X(2).
01 Y  PIC 9.
01 RTN.
  02 R OCCURS 5 PIC X(10).

呼び出し文

CALL  'PROG1'  USING  X,X11(2)，Y   RETURNING  R(1).

TDコマンド

SIMULATE SUB(#PROGRAM(PROG1)) USING(A,B,C)  RETURNING(R)
  DEFINE
     01 A               *>  Xに対応する。
      02 A1             *>  X1に対応する。
       03 A11           *>  X11に対応する。
      02 A2             *>  X2に対応する。
  ENDDEFINE
  IF CONDITION( C=1 )
    ASSIGN DATA(A11(1)) VALUE('OK')
    ASSIGN DATA(R) VALUE('normal')
  ELSE
    ASSIGN DATA(B) VALUE('NG')
    ASSIGN DATA(R) VALUE('abnormal')
  ENDIF
ENDSIMULATE

使用例2

ファイルシミュレーションのレコードに記号名を設定します。

COBOLプログラム

　FD 給与ファイル DATA RECORD IS 形式1.
　01 形式1.
　 02 社員コード PIC X(9).
　 02 氏名.
　  03 名字  PIC N(10).
　  03 名前  PIC N(10).
　01 形式2.
　 02 契約コード.
　  03 種別 PIC X(9).
　  03 コード PIC X(40).
　01 形式3 PIC X(49).

TDコマンド

　SIMULATE FILE(給与ファイル)  OPENMODE(IO)  RECORD(A,B,C)
　  DEFINE
　    01 A
　     02 A1
　     02 A2
　      03 A21
　      03 A22
　    01 B
　     02 B1
　      03 B11
　      03 B12
　  ENDDEFINE
　     ：
　ENDSIMULATE

使用例3

ファイルシミュレーションのレコードに記号名を設定します。

COBOLプログラム

　FD 給与ファイル.
　01 形式1.
　 02 社員コード PIC 9(8).
　 02 氏名.
　   03 名字 PIC X(30).
　   03 名前 PIC X(30).
　01 形式2.
　 02 契約コード.
　   03 種別 PIC 99.
　   03 コード PIC 9(4).
　01 形式3 PIC X(80).
　01 形式4 PIC X.

TDコマンド

　SIMULATE FILE(給与ファイル) OPENMODE(IO) RECORD(A,B,C)
　   DISPLAY DATA(B)
　  ：
　ENDSIMULATE

RECORD指定で対応づけをします。使用例2および使用例3の場合，形式1がA，形式2がB，形式3がCに対応します。対応づけた記号化名称をコマンド中でデータの代わりに使用できます。

B指定だけを省略するなど，途中の省略はできません。後ろは省略できます。

レコードが構造定義のとき，構造内を参照するためにDEFINE〜ENDDEFINEを使用して記号名を定義できます。

(5)　DCシミュレーション

SIMULATE DCコマンドによって，次のDC文をシミュレーションします。DC文を使用したOpenTP1のインタフェースをシミュレーションすることもできます。SIMULATE DCコマンドの詳細については，「5.4　TDコマンドの詳細」の「5.4.24　SIMULATE DC（DCシミュレーションの設定）」を参照してください。

COMMIT文

ENABLE文

ROLLBACK文

DISABLE文

RECEIVE文

SEND文

対象とするDC文の種別と通信記述名を指定して，シミュレーションで実行する手続きをTDコマンドで記述します。手続きでは，メッセージファイル領域の参照，値の設定ができます。また，状態コード（STATUS KEY句で指定したデータ項目）に対して，値を設定できます。

DCシミュレーションの実行回数を，カウンタ変数によってカウントし，参照することもできます。

注意事項

DCシミュレーションは，プログラムの実行開始前でも実行中でも指定できます。DCシミュレーション手続き設定後のDC文からシミュレーションが実行されます。

使用例1

DISABLE文のシミュレーションをします。

SIMULATE DC( DISABLE )  CDNAME(CD1)
  ASSIGN DATA( STATUS-KEY ) VALUE( 1 )
ENDSIMULATE

使用例2

COMMIT文のシミュレーションをします。

SIMULATE  DC( COMMIT )
  ASSIGN DATA( STATUS-KEY ) VALUE( 2 )
ENDSIMULATE

2.2.8　バッチによるテスト

(1)　テストケース

バッチモードでは，TDコマンドによる処理を，テストケースに分けて記述できます。記述した複数のテストケースは，順番に実行されます。次の方法によって，テストケースを選択して実行することもできます。

ケース識別子の指定

ケースコードによるケース選択条件の判定

TESTコマンドは，テストケースの集まりを定義します。CASEコマンドは，ケース識別子による名前と，一連の処理を実行するためのTDコマンドの集まりによるテストケースを指定します。

TESTコマンドについては「5.4　TDコマンドの詳細」の「5.4.27　TEST（テストケースの選択）」を，CASEコマンドについては「5.4　TDコマンドの詳細」の「5.4.28　CASE（テストケースの指定）」を参照してください。

一つのテストケースの実行が終了したとき，次に示すテストデバッガの機能が設定されていた場合，テストケースの設定が解除されます。解除されたテストケースの設定は，次のテストケースには引き継がれません。プログラムが実行中のときは，強制的に終了されます。テストケースを複数実行している場合でも，データなどは次のテストケースに引き継がれません。

中断点

データ監視条件

トレース表示

フロー情報の蓄積

ファイルシミュレーション

DCシミュレーション

主プログラムシミュレーション

副プログラムシミュレーション

SET QUALIFICATION

(2)　ケース識別子の指定

ケース識別子の指定によって，テストケースを選択して実行できます。ケース識別子の末尾に*を付けて指定すると，*より前の文字列が一致するケース識別子のテストケースが選択されて，実行されます。

ケース識別子が指定されている場合にケース識別子の指定がないテストケースは実行されません。

使用例1

指定されたテストケースから，TEST1とTEST3を選んで実行します。テストケースはCASEコマンドが指定された順に実行されます。TESTコマンドのCASEIDオペランドに指定したケース識別子の順序は，テストケースの実行順序にはかかわりません。

使用例2

CASEIDオペランドにTEST*を指定することによって，TESTで始まるケース識別子のテストケースを実行します。

(3)　ケースコードによる条件判定

ASSIGN CASECODEコマンドによって，テストケースの実行結果をケースコードに設定できます。ケース選択条件は，このケースコードの値を条件判定して，あとに続くテストケースの実行を決めます。

ASSIGN CASECODEコマンドについては「5.4　TDコマンドの詳細」の「5.4.29　ASSIGN CASECODE（ケースコードの設定）」を参照してください。

ケース選択条件は，次のどちらかを，<，>，<=，>=，=，NOT= の比較演算子によって比較します。

最後に設定されたケースコード（#LASTCODE）と定数

ケース識別子のケースコードと定数

ケース選択条件に複数の条件式を指定すると，すべての条件を満たしたときに，テストケースを実行します。

使用例1

最後に設定されたケースコードによって，テストケースを実行します。

使用例2

直前に実行されたテストケースがケースコードに値を設定しないとき，ケースコードによるケース選択条件が指定されたテストケースは実行されません。

使用例3

最初のテストケースにケースコードによるケース選択条件を指定すると，そのテストケースは実行されません。

使用例4

同一のケース識別子を持つテストケースが複数あるときは，最後に実行されたテストケースのケースコードを判定します。ケース選択条件に指定されたケース識別子のテストケースがまだ実行されていないときは，判定が偽となり，実行されません。

使用例5

TESTコマンドで選択され，かつ，ケース選択条件の判定が真のときに，テストケースは実行されます。

注意事項

TESTコマンドを複数記述したとき，前のTESTコマンドのテストケースで設定されたケースコードは，次のTESTコマンドのケース選択条件では参照されません。

2.2.9　テストデバッグのための設定

テストデバッグをするための設定について説明します。

(1)　入力する文字の扱い（等価規則）

#OPTIONコマンドで，入力する文字の扱い（等価規則）を変更できます。詳細については，「5.4　TDコマンドの詳細」の「5.4.34　#OPTION（オプションの変更）」を参照してください。

TDコマンドに使用される文字コードでは，英数字文字は1バイトの標準コードに，拡張文字は2バイトの拡張コードになります。標準コードの文字を英数字文字（例えば大文字Aと小文字a）と呼び，拡張コードの文字を拡張文字（例えば大文字Ａと小文字ａ）と呼びます。

英大文字と英小文字，英数字文字と拡張文字を，同じに扱うか区別するかの規則が等価規則です。等価規則の指定がない場合は，同じ文字を表す英大文字と英小文字，英数字文字と拡張文字は同じものとして扱われます。例えば，次に示す，すべての形でコマンドが実行できます。このとき，データ名はすべて英数字文字の大文字ABCとして扱われます。

使用例1

#OPTION NOCASEを指定した場合は，次の指定はすべて同じ結果となります。

DISPLAY DATA(ABC)
display data(abc)
ＤＩＳＰＬＡＹ　ＤＡＴＡ（ＡＢＣ）

使用例2

TDコマンドのオペランド#PROGRAMの#は必ず英数字文字で記述します。

データ名　＃ＤＡＴＡ＠０１は，拡張文字の＃が使用できます。

ＤＩＳＰＬＡＹ　ＤＡＴＡ（#ＰＲＯＧＲＡＭ(Ｐ／Ｐ) ＃ＤＡＴＡ＠０１）

等価規則は，次の入力に適用されます。また，アポストロフィ（'）やダブルコーテーション（"）で囲まれた文字列は，等価規則の対象となりません。

TDコマンドとオペランドで指定するプログラム名，データ名

(2)　TDコマンド格納ファイルの読み込み

#INCLUDEコマンドで，ファイルに格納したTDコマンドを入力し，実行させることができます。シミュレーション手続きなど，テストデバッグのたびに使用する手続きをTDコマンドで記述しファイルに保存することによって，繰り返し実行できます。

詳細については，「5.4　TDコマンドの詳細」の「5.4.33　#INCLUDE（TDコマンド格納ファイルの取り込み）」を参照してください。

TDコマンド格納ファイルは，利用者がテキストエディタ（viやFSEDなど）によって作成できます。また，-TestCmdコンパイラオプションを指定してコンパイルすることによって自動生成し，必要に応じてTDコマンドの修正や追加をすることで作成できます。

コンパイラが自動生成するTDコマンド格納ファイルについては，「8.　TDコマンド生成機能」を参照してください。

(3)　テスト結果の出力

(a)　結果出力先の指定

SET PRINTコマンド，RESET PRINTコマンド，SET LOGコマンド，またはRESET LOGコマンドで，結果出力の出力先を変更できます。バッチモードでは，結果出力ファイル以外のファイルへ出力先を変更できます。詳細については，「5.4　TDコマンドの詳細」の「5.4.35　SET PRINT／RESET PRINT（テスト結果蓄積先の設定と解除）」，「5.4　TDコマンドの詳細」の「5.4.36　SET LOG／RESET LOG（ログ出力ファイルの設定／解除）」を参照してください。

(b)　注釈の表示

DISPLAY COMMENTコマンドで，任意の文字列をテスト結果に表示できます。テスト結果に説明を追加することによって，わかりやすくできます。詳細については，「5.4　TDコマンドの詳細」の「5.4.31　DISPLAY COMMENT（注釈の表示）」を参照してください。

2.3　データ操作の規則

2.3.1　データの比較・代入規則

(1)　データの代入規則

テストデバッガの代入規則は，原則としてCOBOL言語の転記規則に従います。COBOL言語の転記規則との差異を次に示します。

COBOL言語の転記規則については，マニュアル「COBOL2002　言語　標準仕様編」のMOVE文についての説明を参照してください。

(a)　けたあふれ・不正なデータ

次の代入は，COBOLプログラムの実行時にされる同様の転記と代入される値が異なる場合があります。

整数・非整数のデータへの代入でけたあふれが生じる。

データ項目の属性に適さない値を保持するデータ名から，整数・非整数にデータを代入する。

外部浮動小数点・内部浮動小数点の代入の精度が異なる。

(b)　コンパイラオプション

次のコンパイラオプションは適用されません。

-StdVersion,1，-StdVersion,2，-H8Switch，-MinusZero，-International，-V3Rec,Fixed，-V3Rec,Variable，-EquivRule,StdCode，-SpaceAsZero

(c)　拡張16進定数

テストデバッガ独自の定数であり，COBOL言語の16進英数字定数・16進数字定数・16進日本語定数が代入できないデータ項目へ，16進数で指定した値を代入できます。

受け取り側作用対象が次の項目のとき，送り出し側作用対象の16進のけた数が2の倍数でなければなりません。

英数字集団項目

英字項目

英数字項目

英数字編集項目

数字編集項目

受け取り側作用対象が次の項目のとき，送り出し側作用対象の16進のけた数が4の倍数でなければなりません。

日本語集団項目

日本語項目

日本語編集項目

受け取り側作用対象が次の項目のとき，送り出し側作用対象と受け取り側作用対象のサイズが等しくなければなりません。

整数の数字項目

非整数の数字項目

外部浮動小数点の数字項目

内部浮動小数点の数字項目

(d)　代入規則

代入規則を表2-7に示します。

表2‒7　代入規則

（凡例）

○：代入できる　空白：代入できない

注※1

正の整数（0を含むが，-0は含まない）だけ代入できます。

注※2

-JPNコンパイラオプションを指定してコンパイルされたプログラム内データ項目の場合，日本語項目／日本語編集項目は，英数字項目／英数字編集項目の代入規則に従います。受け取り側作用対象がこれに該当する場合，代入できます。

日本語集団項目も上記と同様に，英数字集団項目の代入規則に従います。ただし，-JPN,V3JPNSpaceオプションを指定した場合，-JPNコンパイラオプションは無効となります。

注※3

既定義オブジェクトは，SELF，EXCEPTION-OBJECTとします。

注※4

整数は，次のデータ項目で小数点けたを持たない指定です。非整数は，次のデータ項目で小数点けたを持つ指定です。

・外部10進項目

・内部10進項目

・2進項目（COMP-Xも含む）

注※5

外部浮動小数点形式の数字項目です。

注※6

内部浮動小数点形式の数字項目です。

注意事項

次のデータ項目にNULLまたは不正な値を代入すると，その後，領域が解放されないで残る場合があります。

NULLまたは不正な値が代入される場合とは，これらのデータ項目が所属する英数字集団項目に基本項目の属性を考慮しないで値を設定したときなどです。

・オブジェクト参照データ項目

テストデバッガでは，TYPEDEF句のSTRONG指定があるデータ項目への代入は，STRONG指定がないデータ項目と同様に扱われ代入できます。

一般に浮動小数点数は，数値を正確に表現したものではなく，概略の値を表現するもので誤差を含みます。このため，代入元の値と代入後の値が一致しないことがあります。

連絡節で定義したLIMIT指定がない動的長基本項目には代入できません。代入すると，KCCC3433T-Eのメッセージが出力されて，処理が中止されます。ただし，主プログラムシミュレーション中で，SIMULATE MAINコマンドのTDコマンド群に指定した副プログラム内でだけ代入が可能です。また，この動的長基本項目は主プログラム内でLIMIT 1024を定義されているものと仮定されます。値を代入すると，その長さが最大長となって，それ以降はその長さ以下しか代入できなくなります。

(2)　データの比較規則

テストデバッガの比較条件の組み合わせは，次の場合を除いてCOBOL言語の比較規則に従います。

COBOL言語の比較規則については，マニュアル「COBOL2002　言語　標準仕様編」の「いろいろな式」の「条件式（Conditional expressions）」を参照してください。

(a)　けたあふれ・不正なデータ

次の比較は，COBOLプログラムの実行時に行う同様の比較と結果が異なる場合があります。

データ項目の属性に適さない値を保持するデータ名の整数・非整数を比較する。

外部浮動小数点・内部浮動小数点の比較の精度が異なる。

(b)　コンパイラオプション

次のコンパイラオプションは適用されません。

-StdVersion,1，-StdVersion,2，-H8Switch，-MinusZero，-International，-V3Rec,Fixed，-V3Rec,Variable，-EquivRule,StdCode，-SpaceAsZero

(c)　拡張16進定数

テストデバッガ独自の定数であり，COBOL言語の16進英数字定数・16進数字定数・16進日本語定数とは比較できないデータ項目と，16進数で指定した値で比較ができます。

左辺または右辺が次の項目のとき，けた数が2の倍数でなければなりません。

英数字集団項目

英字項目

英数字項目

英数字編集項目

数字編集項目

左辺または右辺が次の項目のとき，けた数が4の倍数でなければなりません。

日本語項目

日本語編集項目

日本語集団項目

左辺または右辺が次の項目のとき，両辺のサイズは等しくなければなりません。

整数の数字項目

非整数の数字項目

外部浮動小数点の数字項目

内部浮動小数点の数字項目

アドレス名

アドレスデータ項目

ポインタ項目

(d)　比較規則

比較規則を表2-8に示します。

表2‒8　比較規則

（凡例）

○：比較できる　空白：比較できない

注※1

整数の場合は比較できます。非整数の場合は比較できません。

注※2

-JPNコンパイラオプションを指定してコンパイルされたプログラム内データの場合，日本語項目／日本語編集項目は，英数字項目／英数字編集項目の比較規則に従います。左辺がこれに該当する場合，比較できます。ただし，左辺が定数の場合は，右辺データがこれに該当する場合，比較できます。

日本語集団項目も上記と同様に，英数字集団項目の代入規則に従います。ただし，-JPN,V3JPNSpaceオプションを指定した場合，-JPNコンパイラオプションは無効になります。

注※3

既定義オブジェクトは，SELF，EXCEPTION-OBJECTとします。

注※4

整数は，次のデータ項目で小数点けたを持たない指定です。非整数は，次のデータ項目で小数点けたを持つ指定です。

外部10進項目

内部10進項目

2進項目（COMP-Xも含む）

注※5

外部浮動小数点形式の数字項目です。

注※6

内部浮動小数点形式の数字項目です。

注※7

比較条件式は，次のデータ項目を除いて，>，<，>=，<=，=，NOT=の比較演算子を用います。次のデータ項目では=，NOT=の2種類の比較演算子を用います。

ブール項目

オブジェクト参照データ項目

既定義オブジェクト

注意事項

一般に浮動小数点数は，数値を正確に表現したものではなく，概略の値を表現するもので誤差を含むことが多いです。このため，DISPLAY DATA TDコマンドなどで表示されたデータ値と比較しても等しくならないなど，比較条件の真理値が一致しない場合があります。

2.3.2　データ項目・ファイル名が参照できる範囲

テストデバッガで，データに対する操作ができる範囲を次に示します。

(1)　プログラム定義

(2)　クラス定義

2.3.3　プログラムの実行環境の文字コード

データに対する操作は，プログラムの実行環境の文字コードに従います。

(1)　シフトJISコード（AIXで有効）

データを表示するときに，次の変換をします。

印刷不能文字は，半角ピリオドに置き換える。

外字は使用する環境に登録されている文字を表示する。

(2)　EUCコード（AIXで有効）

データを表示するときに，次の変換をします。

印刷不能文字は，半角ピリオドに置き換える。

外字は使用する環境に登録されている文字を表示する。

(3)　UTF-8コード（Linuxで有効）

データを表示するときに，次の変換をします。

印刷不能文字は，半角ピリオドに置き換える。

外字は使用する環境に登録されている文字を表示する。

2.3.4　ファクトリオブジェクトとインスタンスオブジェクト

クラス定義のファクトリ定義（FACTORY）とインスタンス定義（OBJECT）のデータの操作について説明します。

(1)　オブジェクト

ファクトリオブジェクトは，ファクトリ定義のデータの集まりと，そのデータに対する操作の集まりです。インスタンスオブジェクトは，クラスのインスタンス定義のデータと，そのデータに対する操作の集まりです。クラス定義からは，一つのファクトリオブジェクトと，複数のインスタンスオブジェクトが生成されます。

ファクトリオブジェクトとインスタンスオブジェクトを合わせて，オブジェクトと呼びます。オブジェクトは，オブジェクト参照データ項目または既定義オブジェクトの値によって，一意となります。ファクトリオブジェクトまたはインスタンスオブジェクトに定義されるデータを，オブジェクトデータとします。

ファクトリオブジェクトとインスタンスオブジェクトの例を次に示します。

図2‒2　ファクトリオブジェクトとインスタンスオブジェクト

(2)　オブジェクトデータの表示

DISPLAY OBJECT／DIPLAY FACTORYコマンドで，次のオブジェクトデータが表示できます。

データ名を指定

ほかのソース要素のデータと同様に，中断点から参照できるデータを表示できます。

詳細については，「2.2.5　データの操作」の「(1)　データの表示」を参照してください。

オブジェクト参照データ項目・既定義オブジェクトを指定

DIPLAY OBJECTコマンドで，オブジェクト参照データ項目または既定義オブジェクトSELF，EXCEPTION-OBJECTを指定して，参照するオブジェクトのデータの値を表示できます。

DISPLAY FACTORYコマンドで，クラス名を指定して，ファクトリオブジェクトのデータの値を表示できます。

詳細については，「5.4　TDコマンドの詳細」の「5.4.14　DISPLAY OBJECT／DISPLAY FACTORY（オブジェクトのデータ値の表示）」を参照してください。

注意事項

オブジェクト生成時のクラスの，スーパクラスのデータを表示できます。表示をするときは，スーパクラスも-TDInfコンパイラオプションを指定してコンパイルします。

集団項目に属し，OCCURS句に DEPENDINGの指定のあるデータ項目よりあとにあるデータ項目は，オブジェクトが生成されてもそのメソッドが呼ばれるまで値の表示ができません。

中断点から参照できるデータ項目の例を次に示します。

(3)　オブジェクトデータの監視

ファクトリオブジェクト・インスタンスオブジェクトのデータは，オブジェクトごとのデータの変化を監視します。また，一つのオブジェクトのデータだけの監視を指定できます。一つのオブジェクトのデータの監視を指定したとき，監視の対象とするオブジェクトデータは次のとおりです。

指定されたクラスのオブジェクトデータが中断位置で参照できるときは，参照できるオブジェクトデータ

プログラムの起動前または指定されたオブジェクトデータが中断位置で参照できないときは，データ監視の設定後に，指定されたオブジェクトデータが参照できるメソッドに制御が渡ったときに参照できたオブジェクトデータ

(4)　ファイルシミュレーション

一つのファイル定義で複数のファイル結合子がある場合は，ファイル結合子単位にシミュレーション手続きが実行されます。

（例）

社員インスタンスオブジェクトA，B…は，それぞれファイル結合子を持つため，一つのファイルシミュレーション定義が個々に有効となります。

社員インスタンスオブジェクトAの計算のREADに対して(1)が実行され，CLOSE前に社員インスタンスオブジェクトBの計算のREADが実行されても個々にファイルシミュレーション定義が有効なので(1)が実行されます。

カウンタ変数または繰り返し指定の反復回数はファイル結合子単位に実行されるシミュレーション単位にカウントされます。

2.4　その他の機能

2.4.1　マルチスレッド対応COBOLプログラムのテストデバッグ

マルチスレッド対応COBOLプログラムのデバッグのための機能と注意事項を説明します。

マルチスレッド対応COBOLプログラムは，プロセス内で動作するすべてのCOBOLプログラムを，-MultiThreadコンパイラオプションを使ってコンパイルしないと，実行時の動作は保証しません。

マルチスレッド対応COBOLプログラムの詳細については，マニュアル「COBOL2002　使用の手引　手引編」の，マルチスレッド環境での実行についての説明を参照してください。

(1)　プログラムの実行

マルチスレッド対応COBOLプログラムを実行するときの仕様は次のとおりです。

中断点の設定による中断

スレッドに依存しないで，中断点に達すれば中断します。

データ監視条件による中断

マルチスレッド対応COBOLプログラムでは，スレッドごとにデータ値の変化を監視します。どれかのスレッドでデータの値が変化するか，または，比較条件式が成立したときに中断します。

特定スレッドに対応するデータの値だけを監視する設定もできます。この場合，設定時のプログラムによって，監視するデータは次のとおりになります。

プログラムの中断時

中断しているスレッドの指定ソース要素のデータ

プログラムの起動前

プログラムの起動後に，最初に生成された指定ソース要素を実行するスレッドのデータ

ステップイン

ステップインが実行されると，スレッドが切り替わるタイミングに関係なく，次に実行される文で中断します。つまり，ステップインを実行した直後にスレッドの切り替えが発生すると，ステップイン実行前の中断位置とステップイン実行後の中断位置は別のスレッドで実行されるプログラムとなります。

ステップオーバー

ステップオーバーを実行したスレッドと同じスレッドで，CALL文，INVOKE文および関数呼び出しを行う文を1文として実行して中断します。中断点の設定，データ監視，実行時エラー，割り込みによる中断がなければ，ステップオーバーを実行したスレッド以外で中断しません。

ジャンプ，ジャンプ実行

ジャンプ，ジャンプ実行したスレッドで，指定された文にジャンプします。ただし，ジャンプ，ジャンプ実行の直後に，別スレッドに切り替わり，そのプログラムで中断点の設定・データ監視・実行時エラー・割り込みなどによって中断した場合は，ジャンプ，ジャンプ実行は行われません。

呼び出し順序番号

マルチスレッドで実行するプログラムの場合は，スレッドごとに呼び出し順序番号の増加と減少が行われます。

ファイルシミュレーション

ファイルシミュレーションは，COBOL言語のファイル結合子ごとに行います。スレッドごとにファイル結合子が生成されるファイルでは，スレッドごとにファイルシミュレーションされます。

使用できない機能

AIXの場合，次の機能は，マルチスレッドプログラムでは使用できません。

DCシミュレーション

領域の確保と解放

注意事項

AIXの場合，マルチスレッドプログラムをデバッグ対象とする場合は，各ユーザスレッドが一つのカーネルスレッドにマップされる1：1モデルで動作する必要があります。1：1モデル以外で動作した場合，テストデバッグの動作は保証しません。1：1モデルの設定は，環境変数AIXTHREAD_SCOPEにSを設定することで行えます。

　設定例

　　　　AIXTHREAD_SCOPE=S

　　　　export AIXTHREAD_SCOPE

Linuxの場合，マルチスレッド対応COBOLプログラムのテストデバッグはできません。

2.4.2　プログラムからの連動実行

ほかのプロセスから起動されることを前提にするプログラムのテストデバッグをするときは，プログラムからの連動実行ができます。次の環境で動作するプログラムのテストデバッグをするときに有効です。詳細については，「3.3.1　プログラムからの連動実行」を参照してください。

OpenTP1から起動されるサーバプログラム

ほかのプログラムからプロセス起動されるプログラム

2.4.3　再帰によるソース要素の実行

プログラムのソース要素が再帰によって実行され，一つのソース要素から複数の実行時要素が生成されたときに，実行時要素を指定してデータの表示ができます。

データ監視では，連絡節，局所場所節に定義されているデータ，特殊レジスタは，実行時要素ごとに監視します。カウンタ変数も実行時要素ごとにカウントされます。

2.4.4　共通例外を発生させるプログラムのテストデバッグ

プログラムで共通例外が発生したあとのプログラムの動きは，COBOLの言語仕様に従います。

共通例外の詳細については，マニュアル「COBOL2002　使用の手引　手引編」の共通例外処理の説明を参照してください。

共通例外が発生し伝播が起きることによって，共通例外が発生した実行時要素を呼び出した実行時要素の手続き部の宣言部分が実行される場合があります。このとき，共通例外が発生した実行時要素の出口を通過してから，手続き部の宣言部分が実行されます。次の機能が設定されているときは，実行時要素の出口では対応する機能がそれぞれ動作します。

出口指定の中断点による中断

データ監視条件による中断

トレース

フロー

ステップイン・ステップオーバーによる中断

注意事項

テストデバッグの対象となるプログラムで実行時エラーが発生してKCCC0015R-Sのメッセージを表示した場合，KCCC1207T-Iのメッセージが示す行番号は，KCCC0015R-Sのメッセージが示す共通例外を引き起こした文の行番号となります。また，そのときにDISPLAY POINTコマンドで表示される文番号は，共通例外を引き起こした文番号となります。

2.4.5　共用ライブラリ

(1)　コンパイルと実行

テストデバッグで共用ライブラリを使用するときは，-PIC,Std，および-TDInfコンパイラオプションを指定してプログラムをコンパイルします。コンパイラオプションについては，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

AIXの場合，arコマンドでアーカイブファイルとした共用ライブラリ中のサブプログラムを，テストデバッグ対象に指定できます。arコマンドについては，システムのリファレンスマニュアルを参照してください。

共用ライブラリファイルは，cbltd2kコマンドや，cbltl2kコマンドの-Libraryオプションで，パスプレフィクスが付いていないファイル名を指定した場合，環境変数の指定有無によって検索順序が決まります。

-Libraryオプションで指定された共用ライブラリが，環境変数CBLLSLIB，CBLLPATH，またはLD_LIBRARY_PATH（Linuxの場合）に設定したパスで見つかり，そのパスがロードされた共用ライブラリのパスと一致する場合は，ローディングされた共用ライブラリをテストデバッグの対象とし，KCCC1203T-Iメッセージを出力します。

「KCCC1203T-I ユーザプログラムのライブラリファイルがロードされました。ファイル（*** 1 ***）」

検索した結果，共用ライブラリが見つかってもパスが一致しない場合は，テストデバッグの対象としないで，KCCC1203T-Iメッセージも出力しません。

検索した結果，共用ライブラリが見つからない場合は，KCCC4207T-Eのエラーメッセージを出力し，テストデバッグの対象となりません。

「KCCC4207T-E　ユーザプログラムの実行可能ファイル又はライブラリファイルが存在しません。ファイル（*** 1 ***）」

OSごとに，環境変数の指定有無による検索順序を説明します。

AIXの場合

環境変数CBLLSLIBの指定がある場合

cbltd2kコマンドやcbltl2kコマンドの-Libraryオプションで指定したファイル名と同一名称のファイル名が，パスプレフィクス付きで環境変数CBLLSLIBに指定されていれば，そのパスだけが検索されます。同一名称のファイル名が指定されていない，またはパスプレフィクスなしで指定されているときは，次の項目のとおりに検索します。

環境変数CBLLPATHの指定がある場合

指定されているパス，カレントディレクトリの順序で検索します。

環境変数が何も指定されていない場合

カレントディレクトリを検索します。

Linuxの場合

環境変数CBLLSLIBの指定がある場合

環境変数CBLLSLIBにパスプレフィクス付きのファイル名の指定があり，cbltd2kコマンドやcbltl2kコマンドの-Libraryオプションのファイル名と一致するとき

環境変数CBLLSLIBに指定されているパスだけ検索します。

環境変数CBLLSLIBにパスプレフィクスなしのファイル名の指定だけがあるとき

環境変数CBLLSLIBに指定されているファイルを，環境変数CBLLPATHまたは環境変数LD_LIBRARY_PATHに指定されているパスから検索します。

環境変数CBLLPATHの指定がある場合

環境変数CBLLSLIBに指定されているファイルを，環境変数CBLLPATHに指定されているパスから検索します。カレントディレクトリを検索対象とするときは，パスにカレントディレクトリを追加する必要があります。

環境変数LD_LIBRARY_PATHの指定がある場合

環境変数CBLLSLIBに指定されているファイルを，環境変数LD_LIBRARY_PATHに指定されているパスから検索します。カレントディレクトリを検索対象とするときは，パスにカレントディレクトリを追加する必要があります。

なお，環境変数CBLLPATHと同時に指定されているときは，環境変数CBLLPATHに指定されているパスを検索したあと，環境変数LD_LIBRARY_PATHに指定されているパスを検索します。

検索についての注意事項（AIXの場合）

環境変数LIBPATHに指定されているパスは検索されません。この環境変数で共用ライブラリの検索パスを指定している場合は，-Libraryオプションにパスプレフィクスを付けて指定する必要があります。

注意事項

AIXの場合の注意事項を次に示します。

arコマンドでアーカイブファイルとして作成した共用ライブラリ中に，同じ名称のメンバ（共用オブジェクト）が複数あるときは，KCCC4251T-Wメッセージを出力し，先に配置されているメンバ（共用オブジェクト）をテストデバッグ対象とします。

-Lおよび-lオプションを指定して共用ライブラリをリンケージしたプログラムを実行し，-DynamicLink,Callまたは-DynamicLink,IdentCallコンパイラオプションを指定して再びリンケージした場合，この共用ライブラリをテストデバッグの対象とできない場合があります。その場合は，次のどちらかの指定をします。

・共用ライブラリの検索ディレクトリ指定の，-Lオプションと同じディレクトリを，環境変数CBLLPATHに指定。

・-Lオプションと同じディレクトリを指定した共用ライブラリファイルを，環境変数CBLLSLIBに指定。

アーカイブファイルの中に含まれるアーカイブファイルは，テストデバッグ対象になりません。

メッセージでアーカイブファイル名を表示する場合は，ファイル名を次の形式で出力します。

アーカイブファイル名〔メンバ名〕

（例）アーカイブファイル名が/usr/test/usersub.a，メンバ名がsub1.oの場合

KCCC1203T-I　ユーザプログラムのライブラリファイルがロードされました。

　　　　　　 ファイル（/usr/test/usersub.a〔sub1.o〕）

環境変数CBLLTAGによる検索動作の指定は，デバッガでは有効になりません。

遅延ロードされる共用ライブラリはテストデバッグの対象になりません。遅延ロードについては，システムのマニュアルを参照してください。

ldコマンドの-sオプションやstripコマンドなどで共用ライブラリのシンボル情報を削除した場合，その共用ライブラリは，テストデバッグの対象になりません。

なお，Linuxでは，cbltd2kコマンドやcbltl2kコマンドの-Executeオプションに指定する実行可能ファイルは，テストデバッグの対象にしない場合でもシンボル情報が必要です。

使用例1

ccbl2002コマンドに-Lおよび-lオプションを使用して実行可能ファイルを作成します。

sub1.cblをコンパイルする。

AIXの場合

ccbl2002 -PIC,Std -TDInf sub1.cbl

Linuxの場合

ccbl2002 -PIC,Std -TDInf -UniObjGen sub1.cbl

共用ライブラリを作成する。

AIX(32)の場合

ld -o libsub1.a sub1.o -bpT:0x10000000 -bpD:0x20000000
 -bnoentry -bM:SRE -bexpall -L/opt/HILNGcbl2k/lib -lcbl2k
 -lcbl2kml -lm -lc

AIX(64)の場合

ld -o libsub1.a sub1.o -b64 -bpT:0x100000000 -bpD:0x110000000
 -bnoentry -bM:SRE -bexpall -L/opt/HILNGcbl2k64/lib -lcbl2k64
 -lcbl2kml64 -lm -lc

Linux(x86)の場合

ld -shared -o libsub1.so sub1.o -Bstatic -L/opt/HILNGcbl2k/lib -lcbl2kml -Bdynamic -lc

Linux(x64)の場合

ld -shared -o libsub1.so sub1.o -Bstatic -L/opt/HILNGcbl2k64/lib -lcbl2kml -Bdynamic -lc

-Lおよび-lオプションで共用ライブラリを指定して，実行可能ファイルを作成する。-Lおよび-lオプションについては，システムの規則に従ってください。

AIXの場合

ccbl2002 -TDInf main1.cbl -L ./ -lsub1 -OutputFile a.out

Linuxの場合

ccbl2002 -TDInf -UniObjGen main1.cbl -L ./ -lsub1 -OutputFile a.out

-Libraryオプションを指定してテストデバッグを開始する。

AIXの場合

cbltl2k -Library libsub1.a -Execute a.out

Linuxの場合

cbltl2k -Library libsub1.so -Execute a.out

使用例2

ccbl2002コマンドの-DynamicLink,Callコンパイラオプションを使用して実行可能ファイルを作成します。

使用例1の1.および2.と同様の手順で，sub1.cblに-TDInfコンパイラオプションを指定してコンパイルし，共用ライブラリを作成する。

-DynamicLink,Callコンパイラオプションを指定して実行可能ファイルを作成する。

AIXの場合

ccbl2002 -DynamicLink,Call -TDInf main1.cbl -OutputFile a.out

Linuxの場合

ccbl2002 -DynamicLink,Call -TDInf -UniObjGen main1.cbl -OutputFile a.out

使用例1の4.と同様の手順で，-Libraryオプションを指定してテストデバッグを開始する。

使用例3

ccbl2002コマンドの-DynamicLink,IdentCallコンパイラオプションを使用して実行可能ファイルを作成します。

使用例1の1.および2.と同様の手順で，sub1.cblに-TDInfコンパイラオプションを指定してコンパイルし，共用ライブラリを作成する。

-DynamicLink,IdentCallコンパイラオプションを指定して実行可能ファイルを作成する。

AIXの場合

ccbl2002 -DynamicLink,IdentCall -TDInf main1.cbl -OutputFile a.out

Linuxの場合

ccbl2002 -DynamicLink,IdentCall -TDInf -UniObjGen main1.cbl -OutputFile a.out

使用例1の4.と同様の手順で，-Libraryオプションを指定してテストデバッグを開始する。

(2)　-TDInfおよび-CVInfコンパイラオプションがないCOBOLプログラム，またはCOBOLプログラム以外から共用ライブラリを呼ぶ場合

-TDInfコンパイラオプションを指定したCOBOLプログラムが含まれる共用ライブラリを，次のどちらかのプログラムが呼び出すときに，テストデバッグができない場合があります。

このような場合にテストデバッグを可能とする環境変数CBLTDEXTARGETについて説明します。

-TDInfおよび-CVInfコンパイラオプションの指定がないCOBOLプログラム

COBOLプログラムを含まない実行可能ファイル

環境変数

CBLTDEXTARGET

形式

CBLTDEXTARGET=YES
export CBLTDEXTARGET

機能

-TDInfコンパイラオプションを指定したCOBOLプログラムが含まれる共用ライブラリを，次のどちらかのプログラムが呼ぶ場合に，テストデバッグができます。

-TDInfおよび-CVInfコンパイラオプションの指定がないCOBOLプログラム

COBOLプログラムを含まない実行可能ファイル

注意事項

環境変数CBLTDEXTARGETは，テストデバッガを使用するときに有効になります。運用環境では指定しないでください。

環境変数CBLTDEXTARGETを指定したときは，テスト対象のプロセスの情報を収集する回数が増加するため，処理速度が低下することがあります。テストデバッグ終了した部分は，-TDInfコンパイラオプションを外して再コンパイル後にテストデバッガでテストしてください。

次のディレクトリに格納した共用ライブラリは，テストデバッグの対象にできません。

AIX(32)およびLinux(x86)の場合

/usr/lib，/lib

/opt/HILNGcbl2k/lib

AIX(64)の場合

/usr/lib，/lib

/opt/HILNGcbl2k64/lib

Linux(x64)の場合

/usr/lib64，/lib64

/opt/HILNGcbl2k64/lib

環境変数CBLTDEXTARGETの値にYES以外を指定した場合，環境変数CBLTDEXTARGETの指定は無効となります。

テストデバッグを実行する前に，環境変数CBLTDEXTARGETを設定する必要があります。プログラムの連動実行時をするときは，プログラムを実行する前に環境変数CBLTDEXTARGETを設定する必要があります。

2.4.6　ウィンドウの表示先変更

テストデバッガのウィンドウを，テストデバッガを実行しているマシンと別のマシンに表示しながらデバッグできます。プログラムからの連動実行をしたときに有効です。

表示先を変更するときは環境変数CBLTDDISPLAYを設定します。環境変数CBLTDDISPLAYに設定する値は環境変数DISPLAYに設定する値と同じです。環境変数DISPLAYについては，X Window Systemのマニュアルを参照してください。

使用例1

連動実行されるラインモードのテストデバッガの表示先を変更します。

ClientXでの入力コマンド

xhost  +ServerA                               … 1.
rlogin  ServerA                               … 2.

rloginしたServerA での入力コマンド

CBLTDDISPLAY=ClientX:0.0                      … 3.
export CBLTDDISPLAY
CBLTDEXEC='TL -Execute /tmp/a.out'            … 4.
export CBLTDEXEC
/tmp/a.out                                    … 5.

ClientXでxhostコマンドを入力してラインモードのウィンドウを表示できるようにします。

xhostコマンドについては，X Window Systemのマニュアルを参照してください。

ClientXからServerAにリモートログインします。

ServerAで環境変数CBLTDDISPLAYを設定します。

ServerAで環境変数CBLTDEXECを設定します。

ServerAでプログラムを実行します。

注意事項

環境変数CBLTDDISPLAYは，X Window Systemを使用している場合だけ有効となります。

2.4.7　数字項目のけた拡張機能

ここでは，数字項目のけた拡張機能を有効にしたユーザプログラムのテストデバッグについて説明します。数字項目のけた拡張機能の詳細については，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

数字項目のけた拡張機能を使用したプログラムをテストデバッグ対象にした場合，次のデータ名，定数をTDコマンドに使用できます。

19〜38けたまで定義したデータ名

38けたまでの固定小数点数字定数

上記のデータ名，定数が使用できるTDコマンドを次の表に示します。

表2‒9　数字項目のけた拡張機能が有効となるTDコマンド

項番

TDコマンド

使用可否

指定できるオペランド

1

SET BREAK

×

−

2

RESET BREAK

−

−

3

SET WATCH

○

CONDITION

4

RESET WATCH

−

−

5

GO

○

PARAMETER

6

STEP IN

○

PARAMETER

7

STEP OVER

○

PARAMETER

8

STEP TO

−

−

9

STOP

−

−

10

SET TRACE

△※1

INTERFACE

11

RESET TRACE

−

−

12

SET FLOW

×

−

13

RESET FLOW

−

−

14

DISPLAY FLOW

−

−

15

DISPLAY BREAK

−

−

16

DISPLAY POINT

−

−

17

DISPLAY DATA

○

DATA

18

DISPLAY OBJECT・DISPLAY FACTORY

×

−

19

ASSIGN DATA

○

VALUE

20

IF

○

CONDITION

21

SIMULATE MAIN

−

−

22

SIMULATE SUB

△※2

記号名

23

SIMULATE FILE

△※2

記号名

24

SELECT ACTION

−

−

25

GO END・GO INVALID・GO EOP・GO ERROR

−

−

26

レベル番号

△※2

記号名

27

REPEAT

×

−

28

SIMULATE DC

−

−

29

TEST

−

−

30

CASE

×

−

31

ASSIGN CASECODE

×

−

32

QUIT

−

−

33

DISPLAY COMMENT

−

−

34

SET QUALIFICATION

−

−

35

RESET QUALIFICATION

−

−

36

SET PRINT

−

−

37

RESET PRINT

−

−

38

SET LOG

−

−

39

RESET LOG

−

−

40

#OPTION

−

−

41

#INCLUDE

−

−

42

ASSIGN DEVICE

−

−

43

！

−

−

（凡例）

○：使用できる

×：使用できない

△：データ名または数字定数は指定できないが，影響を受ける

−：該当しない（データ名または数字定数を指定できない）

注※1

INTERFACEオペランドを指定し，かつ，プログラム引数に数字項目のけた拡張機能が有効になったデータ名が指定されていた場合でも，データ値を表示できます。

注※2

数字項目のけた拡張機能が有効になったデータ名および記号名を関連づけます。

注意事項

添字，部分参照の指定では，10けたを超える数字定数は指定できません。添字，部分参照の指定については「5.　TDコマンド」を参照してください。

数字項目のけた拡張機能が有効な場合でも，16進数字定数に8文字を超える文字列を指定できません。

数字項目のけた拡張機能が有効な場合でも，浮動小数点数字定数の仮数部に16けたを超える数字定数を指定できません。

2.4.8　定数長拡張機能

英数字定数の定数長拡張機能（-LiteralExtend,Alnumオプション）を使用した場合の，デバッガの動作について説明します。定数長拡張機能については，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

定数長拡張機能を有効にしたプログラムをテストデバッグ対象にした場合，デバッガでも，拡張した項目を使用できます。

ただし，#OPTION TDコマンドで85SYNTAXを指定した場合は使用できません。また，拡張16進定数は拡張しません。

2.5　ソース要素・中断点・通過点の表示形式

テストデバッガの画面，およびメッセージに表示する中断点・通過点の形式を説明します。

2.5.1　ソース要素の表示形式

ソース要素は，次の形式で表示します。

(1)　プログラム定義

(2)　関数定義

　　関数名

(3)　クラス定義

2.5.2　入口・出口・文

ソース要素の入口，出口，文は，次の形式で表示します。△は一つ以上の空白を表します。

(1)　ソース要素の入口

　　#ENTRY△＜ ソース要素の表示形式 ＞

(2)　ソース要素の出口

　　#EXIT△＜ プログラム識別子 ＞

(3)　文

　　文番号△＜ プログラム識別子 ＞
　　文番号△手続き名△＜ プログラム識別子 ＞

手続き名は，文番号の文が手続き名のときに表示します。

2.5.3　スレッドID

マルチスレッドで実行するプログラムの場合は，各スレッドを識別するスレッドIDを表示します。

3　ラインモードによるテストデバッグ

ラインモードによるテストデバッグの方法について説明します。ラインモードは，TDコマンドの入力によって，対話的にテストデバッグができます。TDコマンドの入出力によって，簡単で早くテストとデバッグができます。

3.1　ラインモードによるテストデバッグの概要

TDコマンドの入力によって，対話的にテストデバッグができます。ラインの入出力だけで実行できるので，簡単で早くテストデバッグができます。UNIX COBOL2002では，端末から起動コマンドによってテストデバッガを起動できます。

3.2　ラインモードでのテストの方法

3.2.1　テストの手順

ラインモードでプログラムをテストするときの作業の流れを説明します。

コンパイラオプションを指定して，コンパイルする。

-TDInfコンパイラオプションを必ず指定してください。カバレージを使用する場合は-CVInfコンパイラオプション，主プログラムシミュレーションを使用する場合は-SimMainコンパイラオプション，副プログラムシミュレーションを使用する場合は-SimSubコンパイラオプション，-SimIdentコンパイラオプション，または-DynamicLinkコンパイラオプションもあわせて指定します。

環境変数を設定する。

プログラムの実行に必要な環境変数と，テストデバッグに必要な環境変数を指定します。テストデバッグに必要な環境変数については，「3.2.2　環境変数の指定」を参照してください。プログラムの実行に必要な環境変数については，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

cbltl2kコマンドによってテストデバッガを起動する。

コマンドの例を次に示します。

形式1

形式2

各オプションの詳細については，「3.2.3　cbltl2kコマンド」を参照してください。

テストデバッガが起動して，TDコマンドの入力待ちとなります。

プログラムの実行前の準備をする。

テストデバッグの目的に応じて，次の操作をします。

プログラムを中断させるときは，SET BREAKコマンドによって中断点を設定する。

シミュレーションをするときは，SIMULATE MAIN，SIMULATE SUB，SIMULATE FILE，SIMULATE DCコマンドによって，手続きを指定する。

プログラムの実行を開始する。

GOコマンド，STEP INコマンド，STEP OVERコマンドによってプログラムを開始します。プログラムに渡す引数，カバレージ情報の蓄積の有無は，オペランドで指定できます。

プログラムが中断する。

SET BREAKコマンドによって設定された中断点で，プログラムが中断します。実行時エラーが発生したとき，割り込みの操作でもプログラムは中断します。プログラムが中断した状態で，データの値の確認や変更ができます。

プログラムの実行を再開する。

中断している文から，プログラムの実行が再開します。プログラムが再開する文を，GOコマンドにSTATEMENTオペランドを指定して，別の文に変更することもできます。

プログラムを再実行する。

プログラムの実行が終了したあと，5の操作をすることで，再度プログラムの実行を開始できます。

テストデバッガを終了する。

QUITコマンドで，テストデバッガを終了します。

3.2.2　環境変数の指定

テストデバッグに必要な環境変数を指定します。システム，またはラインモードを実行する端末に設定します。

表3‒1　環境変数一覧（ラインモードでのテストの方法）

環境変数名

概要

CBLPIDIR

プログラム情報ファイルおよび#INCLUDEコマンドで入力するTDコマンド格納ファイルがあるディレクトリ名を指定する。

CBLTDDISPLAY

連動実行時にテストデバッガを表示するための端末の表示先を変更する。「2.4.6　ウィンドウの表示先変更」を参照のこと。

CBLLSLIB

共用ライブラリファイルのファイル名を指定する。

CBLLPATH

共用ライブラリファイルがあるディレクトリ名を指定する。

LD_LIBRARY_PATH※

共用ライブラリファイルがあるディレクトリ名を指定する。

CBLTDEXTARGET

-TDInfおよび-CVInfコンパイラオプションがないCOBOLプログラム，またはCOBOLプログラム以外から共用ライブラリが呼ばれる場合，テストデバッグを可能にする。

注※

Linuxで有効

プログラムの実行に関するその他の環境変数については，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

注意事項

プログラム情報ファイルは，次に示す検索順序で検索します。検索した結果，見つからないときは，プログラム情報ファイルに該当するプログラムはテストデバッグの対象となりません。

検索順序

(1)環境変数CBLPIDIRで指定したディレクトリ

(2)実行可能ファイルに含まれるプログラムは，実行可能ファイルのあるディレクトリ

　共用ライブラリファイルに含まれるプログラムは，共用ライブラリファイルのあるディレクトリ

(3)カレントディレクトリ

#INCLUDEコマンドで入力するTDコマンド格納ファイルに，絶対パスの付かないファイル名を指定したときは，次に示す検索順序で検索します。#INCLUDEコマンドで相対パスが指定されたときは，次の各ディレクトリからの相対パスとします。

検索順序

(1)cbltl2kコマンドの-IncludePathオプションの指定があればそのディレクトリ

(2)環境変数CBLPIDIRで指定したディレクトリ

(3)カレントディレクトリ

環境変数CBLTDDISPLAYについては，「2.4.6　ウィンドウの表示先変更」を参照してください。

環境変数CBLLSLIB，環境変数CBLLPATH，および環境変数LD_LIBRARY_PATHについては，「2.4.5　共用ライブラリ」を参照してください。

3.2.3　cbltl2kコマンド

形式1

形式2

-IncludePath

TDコマンド（#INCLUDE）で指定するTDコマンド格納ファイルのディレクトリを指定します。

-Library

テストデバッグの対象とする共用ライブラリ名を指定します。

-Execute

テストデバッグ対象のプログラムを起動する実行可能ファイル名を指定します。

-Help

cbltl2kコマンドの構文を表示します。このオプションを指定すると，ほかのオプションをすべて無効とします。

注意事項

-Executeオプションは，必ず最後に指定します。-Executeオプション以外のオプションの指定順序は任意です。

-Libraryオプションは，複数のファイル名を指定できます。

起動後のカレントディレクトリは，cbltl2kコマンドを入力したディレクトリです。

cbltl2kコマンドのメッセージは標準エラー出力へ出力します。

cbltl2kコマンド名は，英小文字で指定します。

cbltl2kコマンド名だけを指定した場合は，cbltl2kコマンドの構文を表示します。

オプションは，英大文字，英小文字のどちらでも指定できます。オプションの始まりは，ハイフン（-）とします。

オプションの区切り記号は空白文字およびタブです。空白文字およびタブを区切り記号としたくないときは，オプションをダブルコーテーション（"）で囲みます。

同じオプションを複数指定した場合は，最後に指定したオプションを有効とします。

オプションにパスの付かないファイル名を指定した場合は，カレントディレクトリのファイルとなります。相対パスの付いたファイル名を指定した場合は，カレントディレクトリを起点とする相対パスのディレクトリにあるファイルとします。

オプションに複数のファイル名を指定する場合は，コンマ（,）または空白文字で区切ります。また，アスタリスク（*）をファイル名の一部に指定すると，*以外の文字が一致するすべてのファイルを指定できます。

cbltl2kコマンドが返す終了コードは，次のとおりです。

終了コード

内容

0

正常終了

1

エラー発生による終了

2

キー操作による割り込みによる終了

-Helpオプションによるコマンドの構文は，標準出力へ出力します。それ以外のメッセージは，標準エラー出力へ出力します。

次に示すどれかに該当する場合，単独で実行したユーザプログラムが異常終了すると，「セグメンテーション違反です」などのメッセージがシステムから表示されます。テストデバッガからユーザプログラムを起動すると，システムからのこのメッセージは表示されません。

・実行時環境変数CBLEXCEPTにNOSIGNALを指定した場合

・次に示すコンパイラオプションのどれか一つも指定しないでコンパイルしたプログラムの場合

　-DebugInf，-DebugInf,Trace，-DebugCompati，-DebugData，-TDInf，-CVInf，-DebugRangeコンパイラオプション

・COBOLが例外（スタックオーバーフローなど）を検出できない場合

3.3　プログラムからの連動実行による方法

3.3.1　プログラムからの連動実行

プログラムからの連動実行によるテストデバッグの方法について説明します。

コンパイラオプションを指定し，コンパイルする。

-TDInfコンパイラオプションを必ず指定してください。カバレージを使用する場合は-CVInfコンパイラオプション，主プログラムシミュレーションを使用する場合は-SimMainコンパイラオプション，副プログラムシミュレーションを使用する場合は-SimSubコンパイラオプション，-SimIdentコンパイラオプション，または-DynamicLinkコンパイラオプションもあわせて指定します。

環境変数を設定する。

環境変数CBLTDEXECを指定します。形式を次に示します。

形式

各オプションの詳細および注意事項については「3.3.2　環境変数の指定」の「(1)　連動実行の指定」を参照してください。

また，プログラムの実行に必要な環境変数および，テストデバッガに必要な環境変数を指定します。テストデバッガに必要な環境変数については，「3.2.2　環境変数の指定」を参照してください。プログラムの実行に必要な環境変数については，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

プログラムを実行する。

テストデバッガが起動され，TDコマンドの入力待ちとなります。

プログラムの実行前の準備をする。

テストデバッグの目的に応じて，次の操作をします。

プログラムを中断させるときは，SET BREAKコマンドによって中断点を設定する。

シミュレーションをするときは，SIMULATE MAIN，SIMULATE SUB，SIMULATE FILE，SIMULATE DCコマンドによって，手続きを指定する。

プログラムの実行を開始する。

GOコマンド，STEP INコマンド，STEP OVERコマンドによってプログラムが開始されます。プログラムに渡す引数，カバレージ情報の蓄積の有無は，オペランドで指定できます。

プログラムが中断する。

SET BREAKコマンドによって設定された中断点で，プログラムが中断します。実行時エラーが発生したとき，割り込みの操作でもプログラムは中断します。プログラムが中断した状態で，データの値の確認や変更ができます。

プログラムの実行を再開する。

中断している文から，プログラムの実行が再開します。実行が再開する文を，GOコマンドにSTATEMENTオペランドを指定して，別の文に変更することもできます。

プログラムを再実行する。

プログラムの実行が終了したあと，6の操作をすることで，再度プログラムの実行を開始できます。

テストデバッガを終了する。

QUITコマンドで，テストデバッガを終了します。

注意事項

テストデバッガを起動して，TDコマンドの入力を待つ状態になり，GOコマンドによってプログラムの実行を開始しないでテストデバッガを終了すると，プログラム実行は続行されます。

GOコマンドによってプログラムの実行を開始したあとに，プログラムの終了前にテストデバッガを終了すると，プログラムも終了します。

プログラムが終了すると，テストデバッガも自動的に終了します。

AIXの場合，日本語環境でプログラムから連動実行してテストデバッガを起動すると，端末のウィンドウの日本語が文字化けする場合があります。この現象を回避するには，環境変数LC_ALLに使用中の日本語環境と同じ値を設定する必要があります。この場合の例を使用例1に，OpenTP1のユーザサービス定義の場合の例を使用例2に，それぞれ示します。

　　　　使用例1

　　　LC_ALL=Ja_JP
　　　export LC_ALL

　　　　使用例2

　　　putenv LC_ALL Ja_JP

3.3.2　環境変数の指定

(1)　連動実行の指定

連動実行するための環境変数は，次のとおりです。

形式

-IncludePath

TDコマンド(#INCLUDE)で指定するTDコマンド格納ファイルのディレクトリを指定します。

-OutFile

テストデバッグ実行結果およびトラブルシュート情報※を出力するファイル名を指定します。ファイル名の拡張子は，「.tdo」でなければなりません。

同じ名前のファイルが存在した場合は上書きされます。

-OutFileオプション省略時は，出力しません。

注※

当社保守員が調査するときに使用する情報です。共用ライブラリがデバッグ対象にならないなど，連動実行が動作しない場合には，当社保守員に連絡してください。

-Library

テストデバッグの対象とする共用ライブラリ名を指定します。

-Execute

テストデバッグ対象のプログラムを起動する実行可能ファイル名を指定します。

注意事項

TLの文字とオプションの間は空白またはタブで区切ります。

環境変数CBLTDEXECで指定した実行可能ファイル名と，テストデバッガを起動した実行可能ファイルが一致する必要があります。

プログラムを起動するときのパスの名称は，次の点に注意して指定してください。次の条件に従わないパスの名称が指定された場合，テストデバッガの動作は保証しません。

・環境変数CBLTDEXECに指定した実行可能ファイル名と，プログラムを起動するときの実行可能ファイル名は，絶対パス名で指定します。

・プログラムを起動するときパス名は，60バイト以下とします。60バイトを超えたときは，61バイト以降が切り捨てられ，60バイトまでをパス名とみなします。

・パスを除いた実行可能ファイル名の長さは，14バイト以下とします。14バイトを超えたときは15バイト以降が切り捨てられ，14バイトまでが実行可能ファイル名と見なされます。

プログラムに渡す引数は，プログラムの起動時に指定します。環境変数CBLTDEXECには指定できません。

テストデバッガが起動されると，テストデバッガを表示するための端末が表示されます。端末によって，テストデバッガの入出力およびCOBOLのライブラリのメッセージが出力されます。COBOLプログラムの標準入出力は，プログラムを起動した端末で実行されます。

環境変数CBLTDEXECに空白またはタブを含むパス名を指定できません。

拡張子が「.tdo」ではないファイルを実行結果出力ファイル名に指定した場合は，エラーになり連動実行は開始しません。

実行結果出力ファイルに出力できない場合は，連動実行用に表示された端末に，エラー内容を出力します。

(2)　その他の環境変数

プログラムの実行に必要な環境変数と，テストデバッガに必要な環境変数を指定します。テストデバッガに必要な環境変数については，「3.2.2　環境変数の指定」を参照してください。プログラムの実行に必要な環境変数については，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

注意事項

AIX(32)の場合

環境変数PATHに，/opt/HILNGcbl2k/bin:/usr/bin:/usr/dt/binを含めて指定する必要があります。

AIX(64)の場合

環境変数PATHに，/opt/HILNGcbl2k64/bin:/usr/bin:/usr/dt/binを含めて指定する必要があります。

Linux(x86)の場合

環境変数PATHに，/opt/HILNGcbl2k/bin:/usr/bin:/binを含めて指定する必要があります。

Linux(x64)の場合

環境変数PATHに，/opt/HILNGcbl2k64/bin:/usr/bin:/binを含めて指定する必要があります。

環境変数CBLPIDIRは，絶対パスで指定します。

環境変数CBLTDDISPLAYで，テストデバッガを実行しているマシンと別のマシンに表示しながらデバッグすることができます。「2.4.6　ウィンドウの表示先変更」を参照してください。

3.4　TDコマンド入力時の注意事項

TDコマンドは，プロンプト=> のあとに入力します。

使用例

=> STEP IN
=> DISPLAY DATA(W-DATA)

名称　W-DATA

値　　0007

1行に複数のTDコマンドを入力できます。

使用例

=> DISPLAY DATA(W-DATA1) DISPLAY DATA(W-DATA2) STEP IN

名称　W-DATA1

値　　0100

名称　W-DATA2

値　　0200

一つのTDコマンドを複数行に記述するときは，行の最後に¥を付けます。¥の前には，一つ以上の空白文字，またはタブコードを記述します。

使用例

=> SIMULATE  FILE(FILE-IN) OPENMODE(INPUT) ¥
=>  DISPLAY COMMENT('***FILE-IN***')       ¥
=>  DISPLAY DATA(RECORD-IN)                ¥
=> ENDSIMULATE

3.5　cbltdコマンド(COBOL85/TD互換)

cbltdコマンドは，UNIX COBOL85からのCOBOL2002への移行を円滑にするために使用するコマンドです。cbltl2kコマンドと同等の機能を持つため，通常はcbltl2kコマンドを使用することをお勧めします。

指定する実行可能ファイル，共用ライブラリはCOBOL2002で生成されている必要があります。

また，TDコマンド格納ファイルの内容は，COBOL2002のTDコマンドである必要があります。

3.5.1　cbltdコマンド

cbltdコマンドの形式を次に示します。

形式

cbltd〔 -hc〕〔 -i TDコマンド格納ファイルディレクトリ名〕
　　　　　　　〔 -d 共用ライブラリ名〔,共用ライブラリ名 …〕〕
　　　　　　　 実行可能ファイル名

-h

同じ文字を表す英数字文字の英大文字と英小文字を同じに扱います。英数字文字と拡張文字は区別します。

-c

同じ文字を表す英大文字と英小文字，英数字文字と拡張文字を区別します。

-i

TDコマンド（#INCLUDE）で指定するTDコマンド格納ファイルのディレクトリを指定します。

-d

テストデバッグの対象とする共用ライブラリ名を指定します。

実行可能ファイル名

テストデバッグ対象のプログラムを起動する実行可能ファイル名を指定します。

4　バッチモードによるテストデバッグ

バッチモードによるテストデバッグの方法について説明します。バッチモードは，テスト内容をファイルに登録しておき一括して実行させる方式です。ファイルに登録したTDコマンドを一括して実行させることで，大量のプログラムのテストが効率良く実施できます。

4.1　バッチモードによるテストデバッグの概要

あらかじめ，実行したいTDコマンドをファイルにまとめて記述しておき，そのファイルを起動することによって，一括してテストデバッグを実行する方法です。端末に，TDコマンドを記述したファイルを指定した起動コマンドを入力すると，ファイルに記述されたTDコマンドを一括して実行します。一度実行を開始すれば，利用者の操作を必要としないので，大量のプログラムのテストが効率良く実施できます。

4.2　バッチモードでのテストの方法

4.2.1　テストの手順

バッチモードでプログラムをテストするときの作業の流れを説明します。

コンパイラオプションを指定し，テストしたいプログラムをコンパイルする。

-TDInfコンパイラオプションを必ず指定してください。カバレージを使用する場合は-CVInfコンパイラオプション，主プログラムシミュレーションを使用する場合は-SimMainコンパイラオプション，副プログラムシミュレーションを使用する場合は-SimSubコンパイラオプション，-SimIdentコンパイラオプション，または-DynamicLinkコンパイラオプションもあわせて指定します。

テストに必要なファイルを準備する。

テスト内容をバッチモードの入力となるTDコマンド格納ファイルに記述します。

テストデバッガ，またはプログラムの実行のための環境変数を設定する。

端末で必要な環境変数を設定します。

環境変数については，「4.2.2　環境変数の指定」を参照してください。

cbltd2kコマンドを端末で指定して実行する。

cbltd2kコマンドについては，「4.2.3　cbltd2kコマンド」を参照してください。

結果出力ファイルおよび結果蓄積ファイルを開き，結果を確認する。

カバレージ情報の蓄積の結果は，カバレージ情報の表示を使用して確認します。

カバレージ情報の表示については，「6.2　カバレージ情報の表示と操作」を参照してください。

4.2.2　環境変数の指定

テストデバッグに必要な環境変数を指定します。

表4‒1　環境変数一覧（バッチモードでのテストの方法）

環境変数名

概要

CBLPIDIR

プログラム情報ファイルおよび#INCLUDEコマンドで入力するTDコマンド格納ファイルがあるディレクトリ名を指定する。

CBLLSLIB

共用ライブラリファイルのファイル名を指定する。

CBLLPATH

共用ライブラリファイルがあるディレクトリ名を指定する。

LD_LIBRARY_PATH※

共用ライブラリファイルがあるディレクトリ名を指定する。

CBLTDEXTARGET

-TDInfおよび-CVInfコンパイラオプションがないCOBOLプログラム，またはCOBOLプログラム以外から共用ライブラリが呼ばれる場合，テストデバッグを可能にする。

注※

Linuxで有効

プログラムの実行に関するその他の環境変数は，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

注意事項

プログラム情報ファイルは，次に示す検索順序で検索します。検索した結果，見つからないときは，プログラム情報ファイルに該当するプログラムはテストデバッグの対象となりません。

検索順序

(1)環境変数CBLPIDIRで指定したディレクトリ

(2)実行可能ファイルに含まれるプログラムは，実行可能ファイルのあるディレクトリ

　共用ライブラリファイルに含まれるプログラムは，共用ライブラリファイルのあるディレクトリ

(3)カレントディレクトリ

#INCLUDEコマンドで入力するTDコマンド格納ファイルに，絶対パスの付かないファイル名を指定したときは，次に示す検索順序で検索します。#INCLUDEコマンドで相対パスが指定されたときは，次の各ディレクトリからの相対パスとします。

検索順序

(1)cbltd2kコマンドの-IncludePathオプションの指定があればそのディレクトリ

　-IncludePathオプションの指定がなければ，-Inputオプションのディレクトリ

(2)環境変数CBLPIDIRで指定したディレクトリ

(3)カレントディレクトリ

次の環境変数については，「2.4.5　共用ライブラリ」を参照してください。

環境変数CBLLSLIB

環境変数CBLLPATH

環境変数LD_LIBRARY_PATH

環境変数CBLTDEXTARGET

4.2.3　cbltd2kコマンド

cbltd2kコマンドの形式を次に示します。

形式1

形式2

-Input

TDコマンド格納ファイル名を指定します。ファイル名の拡張子は，「.tdi」または「.tds」でなければなりません。

-SyntaxOnly

TDコマンドの構文解析だけをし，実行しません。

-Output

結果出力ファイル名（.tdl）を指定します。ファイル名の拡張子は，「.tdl」でなければなりません。省略時は，-Inputで指定したTDコマンド格納ファイル名の拡張子を「.tdl」に変更したファイル名とします。

-IncludePath

#INCLUDEコマンドで指定するTDコマンド格納ファイルのディレクトリを指定します。省略時は，cbltd2kコマンドで指定したTDコマンド格納ファイルのディレクトリを仮定します。cbltd2kコマンドで指定するTDコマンド格納ファイルには適用しません。

-Library

テストデバッグ対象とする共用ライブラリ名を指定します。

-Execute

テストデバッグ対象プログラムを起動するための実行可能ファイル名を指定します。

-Help

cbltd2kコマンドの構文を表示します。このオプションの指定時は，ほかのオプションをすべて無効とします。

注意事項

引数の指定順序は任意です。ただし，-Executeオプションは，必ず最後に指定します。

-Libraryオプションは，引数に複数のファイル名を指定できます。

-SyntaxOnlyオプションが指定されていても，#INCLUDEコマンドはTDコマンド格納ファイルの取り込みをし，取り込んだTDコマンド格納ファイル内のTDコマンドの構文解析が行われます。また，#OPTIONコマンドの指定を有効とします。

起動後のカレントディレクトリは，cbltd2kコマンドを入力したディレクトリです。

cbltd2kコマンドのメッセージは標準エラー出力へ出力します。

cbltd2kコマンド名は，英小文字で指定します。

cbltd2kコマンド名だけを指定した場合は，cbltd2kコマンドの構文を表示します。

オプションは，英大文字，英小文字のどちらでも指定できます。オプションの始まりは，ハイフン（-）とします。

オプションの区切り記号は空白文字およびタブです。空白文字およびタブを区切り記号としたくないときは，オプションをダブルコーテーション（"）で囲みます。

同じオプションを複数指定した場合は，最後に指定したオプションを有効とします。

オプションにパスの付かないファイル名を指定した場合は，カレントディレクトリのファイルとします。相対パスの付いたファイル名を指定した場合は，カレントディレクトリを起点とする相対パスのディレクトリにあるファイルとします。

オプションに複数のファイル名を指定する場合は，コンマ（,）または空白文字で区切ります。また，アスタリスク（*）をファイル名の一部に指定すると，*以外の文字が一致するすべてのファイルを指定できます。

cbltd2kコマンドが返す終了コードは，次のとおりです。

終了コード

内容

0

正常終了

1

エラー発生による終了

2

キー操作による割り込みによる終了

-Helpオプションによるコマンドの構文は，標準出力へ出力します。それ以外のメッセージは，標準エラー出力へ出力します。

次に示すどれかに該当する場合，単独で実行したユーザプログラムが異常終了すると，「セグメンテーション違反です」などのメッセージがシステムから表示されます。テストデバッガからユーザプログラムを起動すると，システムからのこのメッセージは表示されません。

・実行時環境変数CBLEXCEPTにNOSIGNALを指定した場合

・次に示すコンパイラオプションのどれか一つも指定しないでコンパイルしたプログラムの場合

　-DebugInf，-DebugInf,Trace，-DebugCompati，-DebugData，-TDInf，-CVInf，-DebugRangeコンパイラオプション

・COBOLが例外（スタックオーバーフローなど）を検出できない場合

4.2.4　cbltdコマンド（COBOL85/TD互換）

cbltdコマンドは，UNIX COBOL85からCOBOL2002への移行を円滑にするために使用するコマンドです。cbltd2kコマンドと同等の機能を持つため，通常はcbltd2kコマンドを使用することをお勧めします。

指定する実行可能ファイル・共用ライブラリは，COBOL2002で生成されている必要があります。

また，TDコマンド格納ファイルの内容は，COBOL2002のTDコマンドである必要があります。

cbltdコマンドについては，「3.5.1　cbltdコマンド」を参照してください。

5　TDコマンド

TDコマンドはテストデバッグの指示をするコマンドです。TDコマンドは，TDコマンド格納ファイルに定義します。

この章では，TDコマンドの指定方法，オペランドの指定方法，TDコマンドの詳細について説明します。

5.1　TDコマンドの指定方法

5.1.1　TDコマンドの形式

TDコマンドは次の形式で指定します。TDコマンド名とオペランド，オペランドとオペランドの間は，一つ以上の空白，またはタブを記述します。

形式

TDコマンド名 必須オペランド 〔 任意オペランド … 〕

指定する内容

TDコマンド名

テストデバッグの操作を示すTDコマンドを指定します。TDコマンドの種類については，「5.3　TDコマンドの一覧」を参照してください。

必須オペランド

TDコマンドの操作対象や詳細を指定します。必須オペランドは決められた順で必ず指定します。重複して指定することはできません。

任意オペランド

TDコマンドの操作対象や詳細を指定します。任意オペランドは省略できます。指定順序は任意です。

同一オペランドのグループに属し，効果が背反するオペランドを重複して指定した場合は，最後に指定したものが有効になります。

5.1.2　TDコマンドの行

一つのTDコマンドを，複数の行にわたって記述できます。1行に記述できるTDコマンドおよび注釈の長さを次に示します。

11,264バイト以内

5.1.3　空白と括弧を含む文字列の指定方法

空白と括弧を文字列に使用する場合は，アポストロフィ（'）またはダブルコーテーション（"）で囲みます。アポストロフィ（'）またはダブルコーテーション（"）で，2行にわたる文字列を囲むことはできません。アポストロフィ（'）またはダブルコーテーション（"）で囲んだ文字列を使用できる文字列には，次のものがあります。

#INCLUDEコマンドのファイル名

DISPLAY COMMENTコマンドのコメント文字列

SET PRINTコマンドのファイル名

SET LOGコマンドのファイル名

GOコマンドの引数の文字列

STEP INコマンドの引数の文字列

STEP OVERコマンドの引数の文字列

定数

アポストロフィ（'）で囲んだ文字列の中にアポストロフィ（'）を指定する場合は，連続して2文字のアポストロフィ（'）で指定します。ダブルコーテーション（"）で囲んだ文字列の中にダブルコーテーション（"）を指定する場合は，連続して2文字のダブルコーテーション（"）で指定します。

使用例

ファイル名DON'TのTDコマンド格納ファイルを入力します。

#INCLUDE INFILE('DON''T')

5.1.4　英大文字と英小文字，英数字文字と拡張文字を区別しての文字列の指定方法

#OPTIONコマンドが有効にならないように文字列を指定する場合は，アポストロフィ（’）または引用符（”）で囲みます。アポストロフィ（’）または引用符（”）で，2行にわたる文字列を囲むことはできません。

アポストロフィ（’）または引用符（”）で囲んだ文字列を使用できる文字列は，「5.1.3　空白と括弧を含む文字列の指定方法」を参照してください。

5.1.5　注釈

「*>」から行の終わりまでを注釈とします。

使用例

5.1.6　等価規則

TDコマンド名とオペランドの補助語で使用する#は，等価規則に関係なく必ず英数字文字で指定しなければなりません。その他のオペランドには，等価規則が適用されます。

等価規則の詳細については，「2.2.9　テストデバッグのための設定」の「(1)　入力する文字の扱い（等価規則）」を参照してください。

5.2　オペランドの指定方法

5.2.1　ソース要素の名称

(1)　外部プログラム名と内部プログラム名

外部プログラム名は，プログラム定義の最外のプログラムである外部プログラムのプログラム名段落（PROGRAM-ID）で指定した名称です。内部プログラム名は，内部プログラムのプログラム名段落（PROGRAM-ID）で指定した名称です。記述規則は，COBOLの言語仕様に従って，変換規則も適用します。変換後の名称をTDコマンドのオペランドに指定できます。

(2)　クラス名とメソッド名

クラス名は，クラス定義のクラス名段落（CLASS-ID）で指定した名称です。メソッド名は，メソッド定義のメソッド名段落（METHOD-ID）で指定した名称です。記述規則は，COBOLの言語仕様に従って，変換規則も適用します。変換後の名称をTDコマンドのオペランドに指定できます。

(3)　関数名

利用者による関数定義の関数名段落（FUNCTION-ID）で指定した名称です。記述規則は，COBOLの言語仕様に従って，変換規則も適用します。変換後の名称をTDコマンドのオペランドに指定できます。

5.2.2　行番号（＝一連番号）

原始プログラムの一連番号領域に記述してある番号です。原始プログラムの一連番号領域に番号の記述がない場合，順序が昇順でない場合，または自由形式正書法の場合は，コンパイラが自動的に振り直す番号が行番号となります。

5.2.3　文番号

COBOL言語の文を指定する番号です。行番号と位置番号をピリオドでつなぎます。行の先頭文を位置番号の1とします。位置番号の1は省略できます。

使用例

5.2.4　入口名

外部プログラム名およびENTRY文で指定される入口点の名前を，入口名とします。

5.2.5　手続き名

COBOL言語の手続き名です。手続き名には，段落名と節名があります。手続き名も一つの文として文番号が割り当てられます。

使用例

5.2.6　データ名

テストデバッグで指定できるCOBOL言語のデータは次のとおりです。

データ名

指標名

アドレス名

特殊レジスタ

データ名は，COBOL言語の仕様に準拠した形で，修飾，添字付けおよび部分参照が指定できます。COBOL言語との指定方法の違いは次のとおりです。

(1)　表の参照

表の属性を持つデータ名を参照するときは，添字を付けて指定します。添字は，整数定数，添字の付かない数字項目，指標名の指定ができます。ただし，データ監視条件では，整数定数でなければなりません。

次の項目は，添字に指定できません。

ALL

算術式（相対添字付け）

ほかの表に割り当てた指標名

また，整数定数を，ピリオドを2個（..）続けてつなぎ，添字に指定することによって，表の一部の範囲を一度に参照できます。

(2)　部分参照

データの部分を参照するときは，最左端位置と長さを指定します。最左端位置と長さは，整数定数を指定します。部分参照には，次の制限があります。

最左端位置と長さに，算術式は指定できません。

添字付けの範囲指定と部分参照は同時に指定できません。

注意事項

報告書節のデータ項目および画面節（SCREEN SECTION）の画面名は参照できません。

最適化オプション（-Optimize,2）でコンパイルしたソース要素をテストデバッグするときは，最適化されたデータ項目を参照できないことがあります。

TYPEDEF句の付いたデータ項目およびその下位項目のデータ項目は参照できません。

DISPLAY OBJECTコマンド，DISPLAY FACTORYコマンドによって，オブジェクトまたはファクトリオブジェクト内に定義されている表を参照するときの添字の指定は，整数定数でなければなりません。

5.2.7　定数

テストデバッガで使用できる定数には，COBOLの言語仕様に準拠した形式と，拡張16進定数があります。COBOLの言語仕様に準拠した形式では，次の定数を代入，比較で使用できます。

(1)　COBOL言語の仕様に準拠した定数

記号文字・定数名は使用できません。ALLは，英数字定数・ブール定数・日本語文字定数・表意定数に指定できます。

定数を囲む一対の区切り記号には，アポストロフィ（'）またはダブルコーテーション（"）が使用できます。区切り記号としてアポストロフィ（'）またはダブルコーテーション（"）を使用する場合の指定方法については，「5.1　TDコマンドの指定方法」を参照してください。

表5‒1　COBOL言語の仕様に準拠した定数一覧

定数の種類

例

英数字定数

英数字

'ABC'

16進英数字

X'0AE2'

数字定数

固定小数点数字

123 123.45

浮動小数点数字

123.E+02

16進数字

H'B0EF'

長さ8文字まで指定できます。2の倍数長である必要はありません。

ブール定数

ブール

B'1010'

日本語文字定数

日本語文字

N'日本語'， NC'日本語'， ND'日本語'

16進日本語文字

NX'81568134'

表意定数

ALL 'A'， ALL N'日本語'， ALL B'1010' ，〔ALL〕HIGH-VALUE， 〔ALL〕HIGH-VALUES，〔ALL〕LOW-VALUE，〔ALL〕LOW-VALUES，〔ALL〕ZERO， 〔ALL〕ZEROS，〔ALL〕ZEROES，〔ALL〕SPACE，〔ALL〕SPACES，〔ALL〕QUOTE，〔ALL〕QUOTES，〔ALL〕NULL，〔ALL〕NULLS

(2)　拡張16進定数

#Xで始まり，一対のアポストロフィ（'）またはダブルコーテーション（"）で囲んだ0〜9，A〜Fの文字列です。文字数は，2の倍数で，160文字までの長さです。ALLによる定数の繰り返しも指定できます。

拡張16進定数は，COBOL2002の定数で代入，比較ができないデータ項目にも，代入，比較ができます。代入，比較の規則の詳細については，「2.3.1　データの比較・代入規則」の「(1)　データの代入規則」および「(2)　データの比較規則」を参照してください。

構文規則

〔ALL〕 #X' ・・・・ '
〔ALL〕 #X" ・・・・ "

使用例

#X'313233'
ALL  #X'FF'

5.2.8　既定義オブジェクト名

テストデバッガで使用できるCOBOL言語の既定義オブジェクトは次のとおりです。

SELF

EXCEPTION-OBJECT

5.2.9　オペランドの補助語

オペランドの内容を指定するときに，補助語を使用します。補助語の先頭にはシャープ（#）が付きます。オペランドの補助語を次に示します。

表5‒2　オペランドの補助語

補助語

内容

#ENTRY

ソース要素の入口を指定します。

#EXIT

ソース要素の出口を指定します。

#PROGRAM

プログラム名を指定します。

#CLASS

クラス名を指定します。

#FACTORY

ファクトリオブジェクトを示します。

#OBJECT

インスタンスオブジェクトを示します。

#FUNCTION

利用者定義関数名を指定します。

#ALL

すべてという意味で指定します。

#>

参照するオブジェクトの特定のデータ名を示します。

#LASTCODE

直前のASSIGN CASECODEコマンドで設定した値を示します。

5.2.10　TD利用者定義語

利用者が任意に指定する語です。先頭が英字で始まる英数字で，長さは31バイト以内です。

表5‒3　TD利用者定義語

種類

用途

カウンタ変数

TDコマンド群の実行回数をカウントします。

記号名

シミュレーションでデータ名を識別します。

監視識別子

データ条件中断の設定を識別します。

ケース識別子

テストケースを識別します。

TD利用者定義語は，TDコマンドで使用するCOBOL2002の予約語（OF，IN，WITHなど）と同じ名称を指定できません。

5.2.11　翻訳単位指定

翻訳単位を特定します。

翻訳単位指定が指定されていない場合は，次の順で翻訳単位指定を仮定します。SET QUALIFICATIONコマンドの詳細については，「5.4　TDコマンドの詳細」の「5.4.32　SET QUALIFICATION／RESET QUALIFICATION（翻訳単位・ソース要素の指定と解除）」の「(1)　SET QUALIFICATION（翻訳単位・ソース要素の指定）」を参照してください。

プログラムの起動前

事前に実行されたSET QUALIFICATIONコマンドで指定した翻訳単位指定

-Mainコンパイラオプションでコンパイルされた翻訳単位

-Mainコンパイラオプションでコンパイルされた翻訳単位がない場合は，翻訳単位指定または事前にSET QUALIFICATIONコマンドを実行しなければなりません。

プログラムの中断状態

事前に実行されたSET QUALIFICATIONコマンドで指定した翻訳単位指定

現在中断している翻訳単位

(1)　プログラム指定

プログラムを特定するときに指定します。

形式

(2)　クラス指定

クラスを特定するときに指定します。

形式

(3)　関数指定

関数を特定するときに指定します。

形式

5.2.12　ソース要素指定

ソース要素を特定するときに指定します。

ソース要素指定が指定されていない場合は，次の順でソース要素指定を仮定します。

SET QUALIFICATIONコマンドの詳細については，「5.4　TDコマンドの詳細」の「5.4.32　SET QUALIFICATION／RESET QUALIFICATION（翻訳単位・ソース要素の指定と解除）」の「(1)　SET QUALIFICATION（翻訳単位・ソース要素の指定）」を参照してください。

プログラムの起動前

事前に実行されたSET QUALIFICATIONコマンドで指定したソース要素指定

-Mainコンパイラオプションでコンパイルされた翻訳単位の外部プログラム

-Mainコンパイラオプションでコンパイルされた翻訳単位がない場合は，ソース要素指定または事前にSET QUALIFICATIONコマンドを指定しなければなりません。

プログラムの中断状態

事前に実行されたSET QUALIFICATIONコマンドで指定したソース要素指定

中断状態のソース要素

プログラム定義のソース要素を指定します。

形式

クラス定義のソース要素を特定します。

形式

関数を指定します。

形式

5.2.13　文番号指定

文を文番号で指定します。

形式

5.2.14　手続き名指定

手続き名を指定します。

形式

5.2.15　入口，出口指定

ソース要素の入口，出口を指定します。ソース要素の入口とはソース要素の最初の文を実行する前の状態です。ソース要素の出口とはソース要素の最後の文を実行したあとの状態です。

ソース要素の入口を#ENTRY，ソース要素の出口を#EXITで表します。

形式

使用例

#ENTRY                *> 入口
#PROGRAM(A/A)#ENTRY   *> 外部プログラムAの入口
#EXIT                 *> 出口
#PROGRAM(A/B)#EXIT    *> 外部プログラムAに属する
                      *> 内部プログラムBの出口

注意事項

ソース要素指定をするとき，次の指定はできません。

#CLASS(クラス名/#FACTORY)
#CLASS(クラス名/#OBJECT)

5.2.16　データ名指定

操作する対象となるデータを一意にするときに指定します。

形式

5.2.17　ファイル名指定

COBOL言語の原始プログラムのファイル記述項のファイル名を指定します。

形式

5.2.18　TDコマンド群

一つにまとまった処理をするためのTDコマンドの集まりをTDコマンド群として指定できます。TDコマンド群は，次のTDコマンドで指定できます。

SET BREAKコマンド，SET WATCHコマンドで，中断時に実行するコマンド

IFコマンドで，成立または不成立時に実行するコマンド

シミュレーションの手続き

TESTコマンドのテストケース

使用例

SET BREAK STATEMENT(100) DO
 DISPLAY DATA(品名)
 SET BREAK STATEMENT(500) DO  *> ネスト
   DISPLAY DATA(番号)
 ENDDO
ENDDO

データ監視条件の設定，または中断点の設定による中断が一つの文で同時に成立したときは，次の順番でTDコマンド群が実行されます。

「データ監視条件の設定」のTDコマンド群

「中断点の設定」のTDコマンド群

さらに，データ監視条件の設定によって，一つの文で複数のデータ監視条件が同時に成立したときは，監視識別子の昇順にTDコマンド群が実行されます。

使用例

次のTDコマンドを実行し，一つの文で同時に中断が成立すると，「データ監視の設定(SET WATCH(DATAA))」「データ監視の設定(SET WATCH(WORK))」「中断点の設定」の順番でTDコマンド群が実行されます。

TDコマンド群

SET BREAK STATEMENT(5000)               *> 中断点の設定
DO
  DISPLAY COMMENT("TEST#1 OK!")
ENDDO
SET WATCH(WORK) CONDITION(WORK NOT = 0) *> データ監視の設定(1)
DO
  DISPLAY DATA(WORK)
ENDDO
SET WATCH(DATAA) CONDITION(DATAA NOT = 0) *> データ監視の設定(2)
DO
  DISPLAY DATA(DATAA)
ENDDO

実行結果

次のプログラムを続行するTDコマンドをTDコマンド群に指定すると，プログラムの実行が再開されてしまうために，それ以降のTDコマンドは実行されません。TDコマンド群が複数ある場合，最初に実行されるTDコマンド群にプログラムを続行するTDコマンドが指定されていたときは，それ以降のTDコマンド群は実行されません。

GO

STEP IN

STEP OVER

STEP TO

STOP

TDコマンド群が実行されなかったとき，カウンタ変数は加算されません。中断点を設定したときのスキップ回数のカウントは加算されます。

使用例

次のTDコマンドを実行した結果，文番号6000で比較条件式A = 50が成立したとします。SET WATCHコマンドで指定されたTDコマンド群が実行され，GOコマンドによってプログラムが続行されます。SET BREAKコマンドで指定された無条件中断のTDコマンド群のDISPLAY DATAコマンドは実行されません。カウンタ変数Cの値も変化しません。

SET WATCH(WATCH50)  CONDITION(A = 50)
DO
  GO
ENDDO

SET BREAK STATEMENT(6000) COUNTER(C)
DO
  DISPLAY DATA(B)
ENDDO

注意事項

「データ監視条件の設定」と「中断点の設定」が成立しても，TDコマンド群でプログラムを続行するコマンドが実行されたときは，入力待ちにならないで，実行が継続されます。

ステップイン，ステップオーバーまたはジャンプで中断した文で，同時に「データ監視条件の設定」と「中断点の設定」が成立しても，TDコマンド群は一切実行しません。

中断点のスキップ回数は，TDコマンド群の実行には関係なく，中断点を通過した場合には必ず更新されます。

中断点に達した場合のメッセージおよびデータ監視条件が成立した場合のメッセージは，TDコマンド群の実行に関係なく表示されます。

コマンド実行中に割り込みを指示した場合は，その時点で実行しているTDコマンド以降のコマンドは実行されないで中断します。

シミュレーション手続きの場合は，シミュレーション対象入出力文の次の文でプログラムが中断します。

5.2.19　カウンタ変数

カウンタ変数は，TDコマンド群の実行回数を参照するための変数です。カウンタ変数を定義したTDコマンド群の中だけで参照できます。2進項目のデータとして扱われ，1から始まり，TDコマンド群が実行されるたびに1ずつ加算されます。最大値は2,147,483,647で，最大値を超えた場合は，最大値のまま更新されません。

カウンタ変数は，表示，代入，比較に使用できます。ただし，添字・部分参照には使用できません。

表示

2進項目のデータ属性，または16進で表示できます。

代入

送り出し側作用対象に指定して，データ項目へ値を代入できます。このとき，2進項目の代入規則に従います。カウンタ変数へ値を代入することはできません。

代入については，「2.3.1　データの比較・代入規則」の「(1)　データの代入規則」を参照してください。

比較

2進項目の比較規則に従い，データ項目，定数と比較できます。

比較については，「2.3.1　データの比較・代入規則」の「(2)　データの比較規則」を参照してください。

TDコマンド群が実行される場合，カウンタ変数と同じ名前のデータ名が参照範囲にあるときは，カウンタ変数が指定できるオペランドであれば，カウンタ変数とみなします。カウンタ変数が指定できないオペランドであれば，データ名とみなします。

使用例

カウンタ変数によって，実行されるTDコマンドを変えます。

SET QUALIFICATION (#PROG(給与計算))
SET BREAK  ST(1350)  COUNTER(CNT)
DO
    IF  C (CNT = 1)
      DISPLAY DATA(合計)                 *> 一度目に実行される
    ENDIF
    IF  C (CNT = 2)
        DISPLAY DATA(総合計)             *> 二度目に実行される
    ENDIF
ENDDO

5.2.20　記号名

記号名は，副プログラムシミュレーション・ファイルシミュレーションのために定義する名前です。記号名については，「2.2.7　プログラムの単体テスト」の「(4)　記号名」を参照してください。

カウンタ変数と同じ名前は指定できません。ソース要素中のデータ名と同じ名前を記号名として定義したときは，記号名とみなします。記号名に対応するデータ名が表の場合は，添字を必要とします。部分参照できるデータ名であれば，部分参照の指定ができます。

使用例

ファイルシミュレーションのレコード定義に記号名を割り当てます。

    SIMULATE FILE(OUTPUT-FILE) OPENMODE(OUTPUT) RECORD(SYMBOL1)
       DEFINE
        01 SYMBOL1
          02 SYMBOL11
           03 SYMBOL111
       ENDDEFINE
          DISPLAY DATA (SYMBOL111(1, J)(1:5))
    ENDSIMULATE

5.2.21　繰り返し指定

次のシミュレーションで，反復回数とTDコマンド群を指定します。「5.4　TDコマンドの詳細」の「5.4.25　REPEAT（繰り返し指定）」を参照してください。

副プログラムシミュレーションで副プログラムが呼ばれる

ファイルシミュレーション入出力文が実行される

DCシミュレーションでDC文が実行される

繰り返し指定の使用例については「2.2.7　プログラムの単体テスト」の「(3)　ファイルシミュレーション」の「(a)　ファイル入出力文のシミュレーション」の使用例2を参照してください。

繰り返し指定を複数記述することによって，シミュレーションが行われるごとに実行されるTDコマンド群を変更できます。反復回数分のシミュレーションでTDコマンドを実行されると，次のシミュレーションから次の繰り返し指定のTDコマンド群が実行されます。すべての繰り返し指定を実行したあとに，シミュレーションが実行されるときは，最後の繰り返し指定のTDコマンド群を実行します。

5.2.22　入出力文選択指定

シミュレーションする次の入出力文に対応させて，ファイルシミュレーションの手続きを実行させます。「5.4　TDコマンドの詳細」の「5.4.22　SELECT ACTION（入出力文選択指定）」を参照してください。

使用例については，「2.2.7　プログラムの単体テスト」の「(3)　ファイルシミュレーション」の「(a)　ファイル入出力文のシミュレーション」の使用例3を参照してください。

READ

WRITE

REWRITE

START

DELETE

5.2.23　比較条件式

条件を指定します。

形式

5.3　TDコマンドの一覧

5.3.1　プログラムの実行の制御と追跡

テストプログラムの実行を制御したり，実行状態を追跡したりするTDコマンドの一覧を次に示します。

表5‒4　実行を制御したり，実行状態を追跡したりするTDコマンドの一覧

目的

コマンド名

プログラムの実行を中断させる中断点を設定する。

SET BREAK

SET BREAKコマンドで設定した中断点を解除する。

RESET BREAK

設定されている中断点の一覧を表示する。

DISPLAY BREAK

プログラムの実行を中断する条件を設定する。

SET WATCH

SET WATCHコマンドで設定したデータ監視条件を解除する。

RESET WATCH

プログラムが起動前状態のときは，実行を開始する。中断状態のときは，実行を再開する。

GO

プログラムを1文実行して中断する。

STEP IN

プログラムを1文実行して中断する。ただし，CALL文，関数呼び出しを持つ文およびINVOKE文は1文として実行する。

STEP OVER

プログラムの中断時に，実行を再開する位置を変更する。

STEP TO

実行中のプログラムを強制的に終了する。

STOP

プログラムの実行を追跡し，指定した単位で通過点を表示する。

SET TRACE

SET TRACEコマンドで開始したトレース表示を中止する。

RESET TRACE

フロー情報の蓄積を開始する。

SET FLOW

フロー情報の蓄積を中止する。

RESET FLOW

蓄積されているフロー情報を表示する。

DISPLAY FLOW

プログラムが中断している現在位置を表示する。

DISPLAY POINT

5.3.2　データの操作

テストプログラムで扱われているデータの値を表示したり，任意の値を代入したりするTDコマンドの一覧を次に示します。

表5‒5　データの値を表示したり，任意の値を代入したりするTDコマンドの一覧

目的

コマンド名

データの値を指定された形式で表示する。

DISPLAY DATA

オブジェクト参照データ項目または既定義オブジェクトSELF，EXCEPTION-OBJECTの指定によって，その参照するオブジェクトのオブジェクト参照の値，クラス名，インスタンスオブジェクト・ファクトリオブジェクトの種別，データの値を表示する。

DISPLAY OBJECT

DISPLAY FACTORYコマンドは，クラス名の指定によって，ファクトリオブジェクトのデータの値を表示する。

DISPLAY FACTORY

データに値を代入する。

ASSIGN DATA

条件が成立したときは，ELSEの前のTDコマンド群を実行する。条件が成立しないときは，ELSEのあとのTDコマンド群を実行する。

IF

領域を確保して，アドレス名にアドレスを設定する。

ALLOCATE AREA

アドレス名の示す領域を解放する。

FREE AREA

アドレスを取得する。

ASSIGN ADDRESS

5.3.3　単体テスト

連動するプログラムやファイルなどの実行環境が整わない段階でこれらの処理をシミュレーションし，単体でプログラムをテストするTDコマンドの一覧を次に示します。

表5‒6　単体でテストするTDコマンドの一覧

目的

コマンド名

主プログラムシミュレーションで実行する手続きを設定する。

SIMULATE MAIN

副プログラムシミュレーションで実行する手続きを設定する。

SIMULATE SUB

ファイルのシミュレーションで実行する手続きを設定する。

SIMULATE FILE

擬似実行する入出力文に対応させてファイルシミュレーションの手続きを実行させる。

SELECT ACTION

入出力条件を擬似的に発生させる。

GO END

GO EOP

GO INVALID

GO ERROR

TDコマンドで手続きを設定してDCシミュレーションを実行する。

SIMULATE DC

シミュレーションで一度に実行する手続きと，繰り返す回数を指定する。

REPEAT

記号名に対応するデータ名が集団項目のとき，集団項目に属するデータ名に対応する記号名を指定する。

レベル番号

5.3.4　バッチによるテスト

バッチによるテストで使用するTDコマンドの一覧を次に示します。

表5‒7　バッチによるテストで使用するTDコマンドの一覧

目的

コマンド名

複数のテストケースをまとめて定義して，その中から実行するテストケースを指定する。

TEST

テストケースの手続きを設定する。

CASE

テストケースの終了状態（ケースコード）を設定する。

ASSIGN CASECODE

テストデバッグを終了する。

QUIT※

指定した文字を表示する。

DISPLAY COMMENT※

注※

ラインモードでも使用できます。

5.3.5　テストデバッグの環境設定

入力する文字の扱いを変更したり，指定したファイルからTDコマンドを入力したりするTDコマンドの一覧を次に示します。

表5‒8　入力する文字の扱いを変更したり，指定したファイルからTDコマンドを入力したりするTDコマンドの一覧

目的

コマンド名

テストデバッグの対象とする翻訳単位またはソース要素を変更する。

SET QUALIFICATION

翻訳単位指定またはソース要素指定を解除する。

RESET QUALIFICATION

指定したファイルからTDコマンドを入力する。

#INCLUDE

入力する文字の扱い（等価規則）を変更する。

#OPTION

実行結果の出力先を指定する。

SET PRINT

実行結果の出力先の指定を解除する。

RESET PRINT

ラインモードで端末に出力されるテストデバッグの実行結果をファイルへ出力する。

SET LOG

テストデバッグの実行結果をラインモードで端末に出力するように戻す。

RESET LOG

5.3.6　その他の機能

その他の機能のTDコマンドの一覧を次に示します。

表5‒9　その他の機能のTDコマンドの一覧

目的

コマンド名

プログラムのファイル管理記述項で指定した装置名にファイルを割り当てる。

ASSIGN DEVICE

UNIXコマンドを実行する。

!※

注※

ラインモードで使用できます。

5.4　TDコマンドの詳細

5.4.1　SET BREAK／RESET BREAK（中断点の設定と解除）

(1)　SET BREAK（中断点の設定）

プログラムの実行を中断させる中断点を設定します。中断したときに実行するTDコマンドの指定もできます。

形式

STATEMENT（文番号指定）

文へ中断点を設定します。

STATEMENT（文番号指定．．文番号）

指定した範囲内のすべての文および手続き名に中断点を設定します。

PARAGRAPH（手続き名指定）

手続きへ中断点を設定します。

PARAGRAPH（手続き名指定 ．．手続き名）

指定した範囲内のすべての文および手続き名に中断点を設定します。

PROCEDURE（入口出口指定）

指定したソース要素の入口または出口に中断点を設定します。

ALLENTRY（翻訳単位指定 | #ALL）

次のソース要素の入口に中断を設定します。

・翻訳単位指定：指定した翻訳単位に属するソース要素

・#ALL：プログラムに属するすべてのソース要素

ALLEXIT（翻訳単位指定 | #ALL）

次のソース要素の出口に中断を設定します。

・翻訳単位指定：指定した翻訳単位に属するソース要素

・#ALL：プログラムに属するすべてのソース要素

EXTERNAL

ALLENTRYオペランドの指定があるときは，ほかの翻訳単位の呼び出し文から呼び出される入口だけに中断点を設定します。ALLEXITオペランドの指定があるときは，ほかの翻訳単位に戻る出口だけに中断点を設定します。

中断点を設定する入口と出口は，次のとおりになります。

入口または出口に中断点を設定するソース要素

プログラム

外部プログラム

クラス

メソッド

利用者定義関数

入口または出口に中断点を設定しないソース要素

プログラム

内部プログラム

SKIP（スキップ回数）

設定した中断点で中断する周期を指定できます。中断してから次に中断するまで，スキップ回数分，中断点で止まらずに通過させることができます。指定できるのは，1〜2,147,483,647の整数です。スキップ回数のカウントは，プログラムの開始時に0が設定されます。

COUNTER（カウンタ変数）

カウンタ変数は，プログラムの開始時に0が設定され，DO〜ENDDOオペランドで指定したTDコマンド群が実行されるたびに1ずつ値が増加します。

MESSAGE | NOMESSAGE

中断を知らせるメッセージを表示するかどうかを指定します。

DO 〔 TDコマンド群 〕 ENDDO

中断時に実行するTDコマンド群を指定します。

注意事項

中断点が設定されている文または手続きに，再度，中断点の設定をしたときは，前の設定が解除され，新しい指定が有効となります。指定方法が異なる場合でも，同じ文に対する設定のときは，次のように，新しい指定が有効になります。

使用例

SET BREAK PARAGRAPH (P1) SKIP (10)の指定で，SET BREAK STATEMENT (100) SKIP(1)は解除されます。

       SET BREAK STATEMENT(100)  SKIP(1)
       SET BREAK PARAGRAPH(P1)   SKIP(10)

中断点が設定されている入口または出口に，再度中断点を設定したときは，前の設定が解除され，新しい指定が有効となります。指定方法が異なる場合でも，同じ入口または出口に対する設定のときは，次のように，新しい指定が有効になります。

使用例

プログラム「社員」の入口に設定された中断点のSKIP指定は20となります。

SET BREAK  ALLENTRY (#ALL) EXTERNAL  SKIP(10)
SET BREAK  PROCEDURE (#PROGRAM(社員/社員)  #ENTRY)  SKIP(20)

STATEMENTオペランドとPARAGRAPHオペランドの範囲指定，ALLENTRYオペランド，ALLEXITオペランドは，複数の中断点を一度に設定します。カウンタ変数とスキップ回数は，設定された個々の中断点ごとにカウントされます。

中断点を設定できる文が存在しない文番号を指定した場合は，その文番号よりあとで最も近い中断点を設定できる文に中断点を設定します。ただし，指定した文番号よりあとに中断点を設定できる文がないときは，翻訳単位の最後の文を仮定します。

STATEMENTオペランドで範囲を指定したとき，最後の文番号に中断点を設定できる文がないときは，指定した文番号より前で最も近い文にまで，中断点を設定します。

STATEMENTオペランドとPARAGRAPHオペランドの範囲指定では，終了位置が開始位置より前にあってはなりません。

(2)　RESET BREAK（中断点の解除）

SET BREAKコマンドで設定した中断点を解除します。

形式

STATEMENT（文番号指定）

文の中断点を解除します。

STATEMENT（文番号指定 ．．文番号）

指定した範囲内のすべての文および手続き名の中断点を解除します。

PARAGRAPH（手続き名指定）

手続きの中断点を解除します。

PARAGRAPH（手続き名指定 ．．手続き名）

指定した範囲内のすべての文および手続き名の中断点を解除します。

PROCEDURE（入口，出口指定）

指定したソース要素の入口または出口の中断点を解除します。

ALLENTRY（翻訳単位指定 | #ALL）

次のソース要素の入口の中断点を解除します。

・翻訳単位指定：指定した翻訳単位に属するソース要素

・#ALL：プログラムに属するすべてのソース要素

ALLEXIT（翻訳単位指定 | #ALL）

次のソース要素の出口の中断点を解除します。

・翻訳単位指定：指定した翻訳単位に属するソース要素

・#ALL：プログラムに属するすべてのソース要素

EXTERNAL

ALLENTRYオペランドの指定があるときは，ほかの翻訳単位の呼び出し文から呼び出される入口の中断点を解除します。ALLEXITオペランドの指定があるときは，ほかの翻訳単位に戻る出口の中断点を解除します。

EXTERNALオペランド指定時に解除される入口，出口の中断点は，「(1)　SET BREAK（中断点の設定）」の入口または出口に中断点を設定するソース要素と同様となります。

BREAK（#ALL）

すべての中断点を解除します。

注意事項

中断点を設定したときのSET BREAKコマンドの指定方法と同一の指定方法でなくても解除できます。

使用例

すべてのソース要素の入口に中断点を設定したあと，プログラムPGM01とPGM02の外部プログラムの入口の中断点だけを解除します。

  SET  BREAK  ALLENTRY (#ALL)  EXTERNAL

  RESET BREAK  ALLENTRY (#PROGRAM(PGM01))  EXTERNAL
  RESET BREAK  ALLENTRY (#PROGRAM(PGM02))  EXTERNAL

5.4.2　DISPLAY BREAK（中断点の表示）

設定されている中断点の一覧を表示します。

形式

BREAK( #ALL | 翻訳単位指定)

#ALLを指定すると，すべての中断点を表示します。翻訳単位指定を指定すると，指定した翻訳単位の中断点を表示します。

PRINT

SET PRINTコマンドで指定した出力先に結果を表示します。

SET PRINTコマンドについては，「5.4.35　SET PRINT／RESET PRINT（テスト結果蓄積先の設定と解除）」の「(1)　SET PRINT（テスト結果蓄積先の設定）」を参照してください。

使用例と表示形式

使用例1

プログラムPROGRAM_Aの入口に中断点が設定されています。

DISPLAY BREAK(#ALL)

使用例2

次の中断点が設定されています。

プログラムPROGRAM_Bの入口・出口

内部プログラムSUB1の入口・出口

プログラムPROGRAM_Bの行番号1000の文

内部プログラムの手続き名P1（行番号1600の文）・行番号1800の文

DISPLAY BREAK(#PROGRAM(PROGRAM_B))

5.4.3　SET WATCH／RESET WATCH（データ監視条件の設定と解除）

(1)　SET WATCH（データ監視条件の設定）

プログラムの実行を中断する条件を設定します。

形式

WATCH（監視識別子）

データ監視条件を識別するための名称を指定します。

DATA（データ名指定）

監視対象とするデータ名を指定します。値の変化を監視します。詳細については，「2.2.1　プログラムの中断」の「(2)　データ監視条件の設定による中断」を参照してください。

CONDITION（比較条件式）

監視対象となるデータの値に対しての比較条件式を指定します。条件式の評価を監視します。

比較条件式の指定の詳細については，「2.3.1　データの比較・代入規則」の「(2)　データの比較規則」を参照してください。

条件式の監視については，「2.2.1　プログラムの中断」を参照してください。

SINGLETHREAD

単一のスレッドのデータを監視します。

SINGLEINSTANCE

単一のオブジェクトのデータを監視します。

COUNTER（カウンタ変数）

カウンタ変数は，プログラムの開始時に0が設定され，DO〜ENDDOオペランドで指定したTDコマンド群が実行されるたびに1ずつ値が増加します。

MESSAGE | NOMESSAGE

監視条件の成立を知らせるメッセージを表示するかどうかを指定します。

DO 〔 TDコマンド群 〕 ENDDO

中断時に実行するTDコマンド群を指定します。

注意事項

データ名指定または比較条件式のデータ名に，カウンタ変数は指定できません。

データ名指定または比較条件式のデータ名に添字付きのデータ名を指定するときの添字は，整数定数でなければなりません。また，添字の範囲指定はできません。

データ名指定または比較条件式のデータ名に部分参照のデータ名を指定するとき，最左端位置と長さ指定は整数定数でなければなりません。

すでに設定された監視識別子を指定して，再度，データ監視条件を設定した場合は，以前の設定が無効となり，新しい設定が有効となります。

オブジェクトに属するデータ項目の領域がオブジェクトごとに生成されるときは，生成されたオブジェクトの領域ごとに監視が行われます。カウンタ変数は，オブジェクトのデータごとにカウントされます。SINGLEINSTANCEオペランドは，その一つのデータを指定して監視できます。

データ項目の領域が再帰によって複数生成されるときは，生成された領域ごとに監視が行われます。カウンタ変数は，データごとにカウントされます。

マルチスレッドで実行するプログラムで，指定したデータ名の領域がスレッドごとに生成されるときは，生成されたスレッドの領域ごとに監視が行われます。カウンタ変数は，スレッドのデータごとにカウントされます。SINGLETHREADオペランドは，その一つのデータを指定して監視できます。

連絡節で定義したLIMIT指定がない動的長基本項目への部分参照指定は，プログラムの起動前には指定できません。指定すると，KCCC3434T-Eのメッセージが出力されて，処理が中止されます。

比較条件式の両辺にデータ名を指定する場合は，データ名の定義場所や属性などによって指定できる条件が異なります。比較条件式に指定できるかどうかの組み合わせを次に示します。ここでは「NORMAL」や「RECURSIVE」などをグループ名の例として説明します。

表5‒10　監視の条件式に指定できる組み合わせ

左辺

右辺

NORMAL

RECURSIVE

FACTORY

INSTANCE

NORMAL

○

×

×

×

RECURSIVE

×

△

×

×

FACTORY

×

×

△

×

INSTANCE

×

×

×

△

（凡例）

○：指定できる

×：指定できない

△：同じ場所に定義されたデータ名であれば指定できる

それぞれのグループに含まれるデータ名を次に示します。

表5‒11　グループの内容

グループ名

データ名

NORMAL

ファイル節，作業場所節，画面節，通信節で定義されたデータ名

再帰不可能なソース要素の連絡節で定義されたデータ名および特殊レジスタ

RECURSIVE

再帰可能なソース要素の連絡節または局所場所節で定義されたデータ名，および特殊レジスタ

FACTORY

ファクトリデータ

INSTANCE

インスタンスデータ

(2)　RESET WATCH（データ監視条件の解除）

SET WATCHコマンドで設定したデータ監視条件を解除します。

形式

WATCH（監視識別子）

データ監視条件を識別するための名称を指定します。

WATCH（#ALL）

すべてのデータ監視条件を解除します。

5.4.4　GO（実行の開始／再開）

プログラムが起動前状態のときは，実行を開始します。中断状態のときは，実行を再開します。

形式

PARAMETER（引数の文字列）

起動時にプログラムへ渡す引数を指定します。

COVERAGE

カバレージ情報を蓄積します。

STATEMENT（文番号）・PARAGRAPH（手続き名）

プログラムの実行を再開させる位置を変更するときに，再開する文または手続きを指定します。

注意事項

PARAMETERオペランドおよびCOVERAGEオペランドは，プログラムの中断状態で指定したときは無効となります。

PARAMETERオペランドは，次の場合は指定できません。

・プログラムの連動実行をしている。

・-SimMainコンパイラオプションでプログラムをコンパイルして主プログラムシミュレーションをしている。

文字列に空白，括弧，アポストロフィ（'）またはダブルコーテーション（"）を使用する場合の指定方法については，「5.1　TDコマンドの指定方法」を参照してください。

COVERAGEオペランドによってカバレージ情報を蓄積する翻訳単位は，コンパイル時に-CVInfコンパイラオプションを指定します。

STATEMENTオペランドおよびPARAGRAPHオペランドは，プログラムの起動前に指定したときは無効となります。

STATEMENTオペランドおよびPARAGRAPHオペランドは，中断しているソース要素の文または手続きを指定します。宣言手続きで中断しているときは，その宣言手続きの中の文または手続きを指定します。宣言手続きの外で中断しているときは，宣言手続きの外の文または手続きを指定します。

STATEMENTオペランドにENTRY文の文番号は指定できません。

5.4.5　STEP IN（ステップイン実行の開始／再開）

プログラムが起動前のときは，実行を開始します。中断状態のときは，実行を再開します。プログラムを1文実行して中断します。

形式

PARAMETER（引数の文字列）

起動時にプログラムへ渡す引数を指定します。

COVERAGE

カバレージ情報を蓄積します。

注意事項

PARAMETERオペランドおよびCOVERAGEオペランドは，プログラムの中断状態で指定したときは無効となります。

PARAMETERオペランドは，次の場合は指定できません。

・プログラムの連動実行をしている。

・-SimMainコンパイラオプションでプログラムをコンパイルして主プログラムシミュレーションをしている。

文字列に空白，括弧，アポストロフィ（'）またはダブルコーテーション（"）を使用する場合の指定方法については，「5.1　TDコマンドの指定方法」を参照してください。

COVERAGEオペランドによってカバレージ情報を蓄積する翻訳単位は，コンパイル時に-CVInfコンパイラオプションを指定します。

5.4.6　STEP OVER（ステップオーバー実行の開始／再開）

プログラムが起動前のときは，実行を開始します。中断状態のときは，実行を再開します。プログラムを1文実行して中断します。ただし，CALL文，関数呼び出しを持つ文およびINVOKE文は1文として実行します。

形式

PARAMETER（引数の文字列）

起動時にプログラムへ渡す引数を指定します。

COVERAGE

カバレージ情報を蓄積します。

注意事項

PARAMETERオペランド，COVERAGEオペランドは，プログラムの中断状態で指定したときは無効となります。

PARAMETERオペランドは，次の場合は指定できません。

・プログラムの連動実行をしている。

・-SimMainコンパイラオプションでプログラムをコンパイルして主プログラムシミュレーションをしている。

文字列に空白，括弧，アポストロフィ（'）またはダブルコーテーション（"）を使用する場合の指定方法については，「5.1　TDコマンドの指定方法」を参照してください。

COVERAGEオペランドによってカバレージ情報を蓄積する翻訳単位は，コンパイル時に-CVInfコンパイラオプションを指定します。

5.4.7　STEP TO（ステップツー実行の再開）

プログラムの中断時に，実行を再開する位置を変更します。

形式

STATEMENT（文番号）・PARAGRAPH（手続き名）

プログラムを再開させるときに，再開させる文または手続き名を指定します。

注意事項

STATEMENTオペランド，PARAGRAPHオペランドは，中断しているソース要素の文または手続き名を指定します。宣言手続きで中断しているときは，その宣言手続きの中の文または手続きを指定します。宣言手続きの外で中断しているときは，宣言手続きの外の文または手続き名を指定します。

STATEMENTオペランドにENTRY文の文番号は指定できません。

5.4.8　STOP（プログラムの強制終了）

実行中のプログラムを強制的に終了します。

形式

5.4.9　SET TRACE／RESET TRACE（トレース表示の開始と中止）

(1)　SET TRACE（トレース表示の開始）

プログラムの実行を追跡し，指定した単位で通過点を表示します。

形式

PROCEDURE | PARAGRAPH | STATEMENT

表示単位を指定します。

PROCEDURE：ソース単位の入口，出口を表示します。

PARAGRAPH：ソース単位の入口，出口および手続き名を表示します。

STATEMENT：ソース単位の入口，出口，手続き名および文を表示します。

INTERFACE

入口では引数を表示し，出口では終了コードを表示します。

FROMSTATEMENT（文番号指定）|FROMPARAGRAPH（手続き名指定）

表示を開始する位置を指定します。

TOSTATEMENT（文番号指定）|TOPARAGRAPH（手続き名指定）

表示を終了する位置を指定します。

TOSTEP（ステップ数）

表示を終了するステップ数を指定します。最初に表示したときのステップ数を1とします。指定できる範囲は，1〜2,147,483,647の整数です。

PRINT

SET PRINTコマンドで指定した出力先に結果を表示します。

SET PRINTコマンドについては，「5.4.35　SET PRINT／RESET PRINT（テスト結果蓄積先の設定と解除）」の「(1)　SET PRINT（テスト結果蓄積先の設定）」を参照してください。

注意事項

プログラムを再開始した場合，FROMSTATEMENTおよびFROMPARAGRAPHオペランドの指定がある場合はオペランドで指定した位置を通過したときに表示が開始されます。指定がない場合は，プログラム開始時に表示が開始されます。

FROMSTATEMENTオペランドの文番号指定に該当する文または手続き名がない場合は，指定した文番号以降の最も近い文または手続き名を仮定します。

また，TOSTATEMENTオペランドを指定した文番号に該当する文または手続き名がない場合は，指定した文番号以前の最も近い文または手続き名を仮定します。

FROMSTATEMENTおよびFROMPARAGRAPHオペランドとTOSTATEMENTおよびTOPARAGRAPHオペランドの指定がある場合は，開始する位置と終了する位置に同じ位置は指定できません。

(2)　RESET TRACE（トレース表示の中止）

SET TRACEコマンドで開始したトレース表示を中止します。

形式

5.4.10　SET FLOW／RESET FLOW（フロー情報の蓄積開始と終了）

(1)　SET FLOW（フロー情報の蓄積開始）

フロー情報は，プログラムの実行時に通過した文の実行経路です。SET FLOWコマンドで，フロー情報の蓄積を開始します。蓄積したフロー情報は，DISPLAY FLOWコマンドで表示できます。また，バッチモードでは，実行時エラーが発生したときに，フロー情報を表示します。

形式

PROCEDURE | PARAGRAPH | STATEMENT

蓄積する通過点の単位を指定します。

PROCEDURE：ソース単位の入口，出口の情報を蓄積します。

PARAGRAPH：ソース単位の入口，出口と手続き名の情報を蓄積します。

STATEMENT：ソース単位の入口，出口と手続き名および文の情報を蓄積します。

STACK（蓄積数）

蓄積する通過点の数を指定します。指定できる数は1〜500の整数で，省略時は99が仮定されます。

(2)　RESET FLOW（フロー情報の蓄積中止）

フロー情報の蓄積を中止します。

形式

5.4.11　DISPLAY FLOW（フロー情報の表示）

蓄積されているフロー情報を表示します。フロー情報とは，プログラムの実行経路を示す通過点の情報です。フロー情報は，最後に通過した文から，プログラムの実行順と逆の順序に表示されます。

形式

PRINT

SET PRINTコマンドで指定した出力先に結果を表示します。

SET PRINTコマンドについては，「5.4.35　SET PRINT／RESET PRINT（テスト結果蓄積先の設定と解除）」の「(1)　SET PRINT（テスト結果蓄積先の設定）」を参照してください。

表示例

ソース要素の表示形式については，「2.5　ソース要素・中断点・通過点の表示形式」を参照してください。なお，マルチスレッドプログラムでないときは，スレッドIDは表示されません。

>>>>> 手続きフロー情報
スレッドID(123) #EXIT <飲み物管理/飲み物管理>
スレッドID(123) #EXIT <牛乳/牛乳>
スレッドID(123) #EXIT <牛乳/日付管理>
スレッドID(123) 41700 USE-CL1 OF SITUATION-1 <牛乳/日付管理>
スレッドID(123) 41200 USE-IN1 OF SITUATION-1 <牛乳/日付管理>
スレッドID(123) #EXIT <牛乳/製造管理>
スレッドID(123) 52600 USE-S-CL1 <牛乳/製造管理>
スレッドID(123) 52100 USE-S-IN1 <牛乳/製造管理>
スレッドID(123) #ENTRY <牛乳/製造管理 >
スレッドID(123) 40600 MAIN-START OF SITUATION-1 <牛乳/日付管理>
スレッドID(123) 40500 SITUATION-1 <牛乳/日付管理>
スレッドID(123) 40300 主処理 <牛乳/日付管理>
スレッドID(123) #ENTRY <牛乳/日付管理>
スレッドID(123) #ENTRY <牛乳/牛乳>
スレッドID(123) 4100 PARAM-GET <飲み物管理/飲み物管理>
スレッドID(123) 4000 主処理 <飲み物管理/飲み物管理>
スレッドID(123) #ENTRY <飲み物管理/飲み物管理>
<<<<<

>>>>> 文フロー情報

スレッドID(123) #EXIT <飲み物管理/飲み物管理>
スレッドID(123) 6300 <飲み物管理/飲み物管理>
スレッドID(123) #EXIT <牛乳/牛乳>
スレッドID(123) 20800 <牛乳/牛乳>
スレッドID(123) 20200 <牛乳/牛乳>
スレッドID(123) 20100 <牛乳/牛乳>
スレッドID(123) #ENTRY <牛乳/牛乳>
スレッドID(123) 4200 <飲み物管理/飲み物管理>
スレッドID(123) 4100 PARAM-GET <飲み物管理/飲み物管理>
スレッドID(123) 4000 主処理 <飲み物管理/飲み物管理>
スレッドID(123) #ENTRY <飲み物管理/飲み物管理>

<<<<<

>>>>> プログラムフロー情報

スレッドID(123) #EXIT <飲み物管理/飲み物管理>
スレッドID(123) #EXIT <牛乳/牛乳>
スレッドID(123) #EXIT <牛乳/日付管理>
スレッドID(123) #EXIT <牛乳/製造管理>
スレッドID(123) #ENTRY <牛乳/製造管理 >
スレッドID(123) #ENTRY <牛乳/日付管理>
スレッドID(123) #ENTRY <牛乳/牛乳>
スレッドID(123) #ENTRY <飲み物管理/飲み物管理>

<<<<<

5.4.12　DISPLAY POINT（現在位置の表示）

プログラムが中断している現在の位置を表示します。

形式

PRINT

SET PRINTコマンドで指定した出力先に結果を表示します。

SET PRINTコマンドについては，「5.4.35　SET PRINT／RESET PRINT（テスト結果蓄積先の設定と解除）」の「(1)　SET PRINT（テスト結果蓄積先の設定）」を参照してください。

使用例と表示形式

使用例1

マルチスレッドプログラムのプログラムPROGRAM_Aの入口で中断しています。

DISPLAY POINT

使用例2

プログラムPROGRAM_Bの内部プログラムSUB1の1600行の手続き名P1で中断しています。

DISPLAY POINT

5.4.13　DISPLAY DATA（データの値表示）

データの値を指定された形式で表示します。

形式

DATA（データ名指定 | #ALL）

表示するデータを指定します。

・データ名指定：データ名を指定します。

・#ALL：現在中断している翻訳単位で参照できるすべてのデータの値を表示します。

ATTRIBUTE | HEX | ALLTYPE

データの表示形式を指定します。

・ATTRIBUTE：データ名の属性で表示します。

・HEX：16進で表示します。

・ALLTYPE：ATTRIBUTE・HEXの両方の形式で表示します。

GROUP | ELEMENT

集団項目の表示形式を指定します。

・GROUP：英数字集団項目を英数字項目とみなし全体を先頭から表示します。または，日本語集団項目を日本語項目とみなし全体を先頭から表示します。

・ELEMENT：基本項目単位に表示します。

PRINT

SET PRINTコマンドで指定した出力先に結果を表示します。

SET PRINTコマンドについては，「5.4.35　SET PRINT／RESET PRINT（テスト結果蓄積先の設定と解除）」の「(1)　SET PRINT（テスト結果蓄積先の設定）」を参照してください。

注意事項

GROUPオペランド，およびELEMENTオペランドは，データ名が集団項目でないときは無効となります。

#ALLを指定したとき，ELEMENTオペランドは無効となります。集団項目はGROUPオペランドの形式で表示されます。

ELEMENTオペランドは，集団項目を部分参照で表示するときは無効となります。

HEXオペランドおよびALLTYPEオペランドは，データ名が内部ブール項目のときは無効となり，ATTRIBUTEオペランド指定時と同様に0と1から成る文字列が表示されます。内部ブール項目が集団項目の下位項目として存在し，集団項目をELEMENT指定で表示するときもHEXオペランドおよびALLTYPEオペランドは無効となります。

データの値がデータの属性で表示できないときは，エラーと表示した上で，値を16進数で表示します。

DATA（#ALL）を指定したときは，特殊レジスタRETURN-CODEと原始プログラムの手続き部で参照されている特殊レジスタも表示されます。

使用例と表示形式

使用例1について，AIX(32)およびLinux(x86)の場合と，AIX(64)およびLinux(x64)の場合の表示例を示します。使用例2以降で，明記されていない場合については，AIX(32)およびLinux(x86)の場合だけを示します。

AIX(32)およびLinux(x86)の場合と，AIX(64)およびLinux(x64)の場合の相違は，16進表示個所でアドレスを表示している部分が8けたから16けたになっていることです。また，表示するデータによってはデータサイズが変更になるものもあります。変更になるデータについては，「9.1.2　COBOL2002での64bitアプリケーション固有の言語仕様」の「(1)　アドレス系データを表現するデータ項目」を参照してください。

使用例1

基本項目を属性と16進で表示します。

DISPLAY DATA (基本項目01)  ALLTYPE

使用例2

表の要素の1〜20番目を，属性と16進で表示します。

DISPLAY DATA (表基本03-1 (1..20))  ALLTYPE

すべての要素が正しく表示された。

4〜6番目と8番目の要素が，データ属性で表示できない値であった。

使用例3〜使用例6のTDコマンドが表示するCOBOLプログラムのデータ定義

使用例3

集団項目をGROUP指定で表示します。全体が英数字項目として表示されます。GROUPオペランドは省略できます。

DISPLAY DATA (集団01)  GROUP  ATTRIBUTE

使用例4

集団項目を16進数で表示します。全体を英数字項目とした上で，16進数で表示されます。

DISPLAY DATA (集団01)  HEX

使用例5

集団項目を，属性と16進で表示します。

DISPLAY DATA (集団01)  ALLTYPE

使用例6

集団項目を指定して，集団項目の所属するすべての基本項目を，属性と16進で表示します。

DISPLAY DATA (集団01)  ELEMENT ALLTYPE

使用例7

カウンタ変数を基本項目と属性と16進で表示します。

DISPLAY DATA (Counter01)  ALLTYPE

使用例8

記号名を基本項目と属性と16進で表示します。

DISPLAY DATA (Return01)  ALLTYPE

使用例9

内部プログラムで中断したときに，すべてのデータを表示します。最外レベル(01,77)単位に表示されます。

DISPLAY DATA (#ALL)  ALLTYPE

使用例10

データ名整数01，整数02を16進数で表示します。

DISPLAY DATA (整数01)  HEX
DISPLAY DATA (整数02)  HEX

5.4.14　DISPLAY OBJECT／DISPLAY FACTORY（オブジェクトのデータ値の表示）

DISPLAY OBJECTコマンドは，オブジェクト参照データ項目または既定義オブジェクトSELF，EXCEPTION-OBJECTの指定によって，その参照するオブジェクトの次の情報を表示します。

オブジェクト参照の値

クラス名

インスタンスオブジェクト・ファクトリオブジェクトの種別

データの値

DISPLAY FACTORYコマンドは，クラス名の指定によって，ファクトリオブジェクトの次の情報を表示します。

データの値

形式

データ名指定

オブジェクトを参照するオブジェクト参照データ項目を指定します。

SELF，EXCEPTION-OBJECT

オブジェクトを参照する既定義オブジェクト名を指定します。

#>

データ名指定，SELFまたはEXCEPTION-OBJECTで参照するオブジェクトの特定のデータ名を指すために指定します。

クラス名指定1

データ名が所属するクラス名を指定します。クラス名は，オブジェクトを定義するクラスまたはそのスーパクラスの名称です。

データ名

表示するデータ名を指定します。

#ALL

クラス名指定1が指定されないときは，オブジェクトを定義するクラスとそのスーパクラスに所属するデータをすべて表示します。クラス名指定1が指定されたときは，指定されたクラスに所属するデータをすべて表示します。ただし，データが定義されていないスーパクラスは何も表示されません。

ATTRIBUTE | HEX | ALLTYPE

データの表示形式を指定します。

・ATTRIBUTE：データ名の属性で表示します。

・HEX：16進で表示します。

・ALLTYPE：ATTRIBUTE，HEXの両方の形式で表示します。

GROUP | ELEMENT

集団項目の表示形式を指定します。

・GROUP：英数字集団項目を英数字項目とみなし全体を先頭から表示します。または，日本語集団項目を日本語項目とみなし全体を先頭から表示します。

・ELEMENT：基本項目単位に表示します。

PRINT

SET PRINTコマンドで指定した出力先に結果を表示します。

SET PRINTコマンドについては，「5.4.35　SET PRINT／RESET PRINT（テスト結果蓄積先の設定と解除）」の「(1)　SET PRINT（テスト結果蓄積先の設定）」を参照してください。

形式

クラス名指定2

ファクトリオブジェクトのクラス名を指定します。

#>

参照するオブジェクトの特定のデータ名を指すために指定します。

クラス名指定3

データ名が定義されているクラス名を指定します。クラス名は，オブジェクトを作成したクラスまたはそのスーパクラスの名称です。

データ名

表示するデータ名を指定します。

#ALL

クラス名指定3が指定されないときは，オブジェクトを定義するクラスとそのスーパクラスに所属するデータをすべて表示します。クラス名指定3が指定されたときは，指定されたクラスに所属するデータをすべて表示します。ただしデータが定義されていないスーパクラスは何も表示されません。

ATTRIBUTE | HEX | ALLTYPE

データの表示形式を指定します。

・ATTRIBUTE：データ名の属性で表示します。

・HEX：16進で表示します。

・ALLTYPE：ATTRIBUTE，HEXの両方の形式で表示します。

GROUP | ELEMENT

集団項目の表示形式を指定します。

・GROUP：集団項目を英数字項目とみなし全体を先頭から表示します。

・ELEMENT：基本項目単位に表示します。

PRINT

SET PRINTコマンドで指定した出力先に結果を表示します。

SET PRINTコマンドについては，「5.4.35　SET PRINT／RESET PRINT（テスト結果蓄積先の設定と解除）」の「(1)　SET PRINT（テスト結果蓄積先の設定）」を参照してください。

注意事項

GROUPオペランド，およびELEMENTオペランドは，データ名が集団項目でないときは無効となります。

#ALLを指定したとき，ELEMENTオペランドは無効となります。集団項目はGROUPオペランドの形式で表示されます。

既定義オブジェクトのEXCEPTION-OBJECTは，COBOLプログラムの手続きで使用されているときに指定できます。既定義オブジェクトのSELFは，メソッド内では常に指定できます。

ELEMENTオペランドは，集団項目を部分参照で表示する場合は無効となります。

HEX | ALLTYPEオペランドは，データ名が内部ブール項目のときは無効となります。

表示するデータ名がオブジェクト参照データ項目の場合，データの値を表示します。オブジェクト参照データ項目が参照するオブジェクトの情報とデータ名は表示しません。

クラス名指定1，クラス名指定2，クラス名指定3で指定するクラスは，-TDInfコンパイラオプションを指定してコンパイルする必要があります。データ名，#ALL指定によってデータを表示するスーパクラスも，-TDInfコンパイラオプションを指定してコンパイルしたクラスだけです。

データ名に，特殊レジスタは指定できません。

データ名が表のとき，添字および部分参照の最左端位置と長さは整数定数を指定する必要があります。

データ名，#ALLを指定しないとき，データ名の値は表示しません。DISPLAY OBJECTコマンドはオブジェクトの種別とクラス名だけを，DISPLAY FACTORYコマンドはクラス名だけを表示します。

使用例と表示形式

次のCOBOLプログラムのクラス定義に従って，TDコマンドの使用例を示します。

クラスMILKは，クラスDRINKを継承します。

使用例1について，AIX(32)およびLinux(x86)の場合と，AIX(64)およびLinux(x64)の場合の使用例を示します。使用例2以降で，明記されていない場合については，AIX(32)およびLinux(x86)の場合だけを示します。

AIX(32)およびLinux(x86)の場合と，AIX(64)およびLinux(x64)の場合の相違は，16進表示個所でアドレスを表示している部分が8けたから16けたになっていることです。また，表示するデータによってはデータサイズが変更になるものもあります。変更になるデータについては，「9.1.2　COBOL2002での64bitアプリケーション固有の言語仕様」の「(1)　アドレス系データを表現するデータ項目」を参照してください。

クラスDRINK

IDENTIFICATION DIVISION.
CLASS-ID. DRINK INHERITS BASE.
     ：
IDENTIFICATION DIVISION.
FACTORY.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 F-DATA01 PIC S9(9) COMP.
01 F-DATA02.
 02 F-DATA03 PIC X(25).
 02 F-DATA04 PIC 9(18).
 02 F-DATA05 PIC X(5).
01 F-DATA06 PIC X(5).
：

OBJECT.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 O-DATA01 PIC S9(9) COMP.
01 O-DATA02 PIC S9(9) COMP.
：
END CLASS DRINK.

クラスMILK

IDENTIFICATION DIVISION.
CLASS-ID. MILK INHERITS DRINK.
     ：
IDENTIFICATION DIVISION.
FACTORY.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 F-DATA01 PIC S9(9) COMP.
01 F-DATA11 PIC S9(9) COMP.
01 F-DATA12 PIC S9(9) COMP.
：

OBJECT.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 O-DATA01 PIC S9(9) COMP.
01 O-DATA11 PIC S9(9) COMP.
：

END CLASS MILK.

使用例1

既定義オブジェクトSELFの値が，クラスMILKから生成されたファクトリオブジェクトを参照するときに，クラスMILKのスーパクラスDRINKに定義されたデータ名F-DATA01を属性と16進で表示します。

DISPLAY OBJECT (SELF #> #CLASS(DRINK) F-DATA01)  ALLTYPE

使用例2

既定義オブジェクトSELFの値がクラスMILKから生成されたインスタンスオブジェクトを参照するとき，クラスMILKのスーパクラスDRINKで定義されたデータ名O-DATA01を属性と16進で表示します。

DISPLAY OBJECT (SELF #> #CLASS(DRINK) O-DATA01)  ALLTYPE

使用例3

既定義オブジェクトSELFの値が，クラスMILKから生成されたインスタンスオブジェクトを参照するとき，クラス名を指定しないで，データ名O-DATA01を属性と16進で表示します。

DISPLAY OBJECT (SELF #> O-DATA01)  ALLTYPE

使用例4

既定義オブジェクトSELFの値が，クラスMILKから生成されたファクトリオブジェクトを参照するとき，クラスMILKのスーパクラスDRINKのすべてのファクトリデータを，属性と16進で表示します。

DISPLAY OBJECT (SELF #> #CLASS(DRINK) #ALL)  ALLTYPE

使用例5

オブジェクト参照データ項目A-DRINKの値が，クラスMILKから生成されたファクトリオブジェクトを参照するとき，オブジェクトのすべてのファクトリデータを，属性で表示します。

DISPLAY OBJECT (A-DRINK #> #ALL)  ATTRIBUTE

使用例6

クラス名MILKを指定して，ファクトリオブジェクトのスーパクラスDRINKのデータ名F-DATA01を属性と16進で表示します。

DISPLAY FACTORY (#CLASS(MILK) #> #CLASS(DRINK) F-DATA01)  ALLTYPE

使用例7

クラス名MILKを指定して，ファクトリオブジェクトのデータ名F-DATA01を属性で表示します。

ファクトリオブジェクトのスーパクラス名は指定しないで，該当するデータ名をすべて表示します。

DISPLAY FACTORY (#CLASS(MILK) #> F-DATA01)  ATTRIBUTE

使用例8

クラス名MILKを指定して，ファクトリオブジェクトのスーパクラスDRINKのすべてのデータを属性と16進で表示します。

DISPLAY FACTORY (#CLASS(MILK) #> #CLASS(DRINK) #ALL)  ALLTYPE

使用例9

オブジェクト参照データ項目B-DRINKがクラスMILKのインスタンスオブジェクトを参照するとき，オブジェクト参照の値，クラス名，オブジェクトの種別を表示します。

DISPLAY OBJECT (B-DRINK)

5.4.15　ASSIGN DATA（データの値代入）

データに値を代入します。

形式

DATA（データ名指定1）

値が代入されるデータ名を指定します。

VALUE（データ名指定2）

代入する値を持つデータ名を指定します。

VALUE（定数）

代入する定数を指定します。

注意事項

データ名指定には，添字の範囲指定はできません。

カウンタ変数を指定できるのは，データ名指定2だけです。

5.4.16　IF（データの値比較）

条件が成立したときは，ELSEの前のTDコマンド群を実行します。条件が成立しないときは，ELSEのあとのTDコマンド群を実行します。

形式

CONDITION（比較条件式）

比較については，「2.3.1　データの比較・代入規則」の「(2)　データの比較規則」を参照してください。

TDコマンド群

条件が成立したときと，成立しなかったときに実行するTDコマンド群を指定します。

使用例

文番号8700で中断し，R-CODE（I）の値によって，TDコマンドを実行します。

 SET QUALIFICATION (#PROG(社員))
 SET BREAK  ST(8700) DO
   IF CONDITION(R-CODE(I) = 0)
     DISPLAY COM('**TEST OK **')
   ELSE
     IF CONDITION(R-CODE(I) NOT= 8)
       DISPLAY COMMENT ('??? TEST NG')
       DISPLAY DATA(R-CODE(I))  HEX
       ASSIGN DATA(R-CODE(I)) VALUE(8)
     ELSE
       DISPLAY COMMENT ('**ERROR TEST OK**')
     ENDIF
   ENDIF
   GO
 ENDDO
 GO

5.4.17　ALLOCATE AREA／FREE AREA（領域の確保と解放）

(1)　ALLOCATE AREA（領域の確保）

アドレス名によって参照されるデータ項目と同じサイズの領域を確保して，アドレス名にアドレスを設定します。

また，指定されたサイズの領域を確保して，アドレスデータ項目またはポインタ項目にアドレスを設定できます。

形式

AREA（データ名指定1）

ポインタ項目またはアドレスデータ項目を指定します。

LENGTHオペランドに指定されたサイズの領域を確保して，指定されたポインタ項目またはアドレスデータ項目に，確保した領域のアドレスを設定します。

LENGTH（領域長）

指定された領域長分の領域を確保します。指定できる長さは，1〜2,147,483,647バイトです。なお，データ名を使った指定はできません。

AREA（データ名指定2）

アドレス名を指定します。アドレス名によって参照されるデータ項目と同じサイズの領域を確保して，指定されたアドレス名に確保した領域のアドレスを設定します。

注意事項

確保した領域は，X'00'で初期化されます。

確保した領域は，次の場合に解放されます。

・FREE AREAコマンドを実行したとき。

・プログラムの実行が終了したとき。

マルチスレッドプログラムでは使用できません。

LENGTHオペランドを指定して確保した領域を使用する場合に，確保した領域を超える部分にアクセスしたときの動作は保証しません。

例えば，次の条件でテストした場合，ADDRESS_NAMEには英数字3文字分の領域にしか割り当たりません。

DATA2へ代入するのは'ABC'の3文字ですが，定義は10文字なので残りの7文字分の埋め字処理で領域破壊が起きます。

・COBOLソースでのデータ定義

　01 DATA1 ADDRESSED BY ADDRESS_NAME.

　　02 DATA2 PIC X(10).

　01 ADDRESS_DATA USAGE ADDRESS.

・デバッガで実行するTDコマンド

　ALLOCATE AREA( ADDRESS_DATA ) LENGTH( 3 )

　ASSIGN DATA( ADDRESS_NAME ) VALUE( ADDRESS_DATA )

　ASSIGN DATA( DATA2 ) VALUE( 'ABC' ) *> 領域破壊を起こす。

(2)　FREE AREA（領域の解放）

アドレス名の示す領域を解放します。

また，アドレスデータ項目またはポインタ項目も指定できます。

形式

AREA（データ名指定）

確保した領域を解放するアドレス名を指定します。

または，確保した領域を解放するアドレスデータ項目，もしくはポインタ項目を指定します。

注意事項

ALLOCATE AREAコマンドで確保された領域以外は解放できません。

領域の解放後，アドレス名にZEROが設定されます。アドレスデータ項目またはポインタ項目を指定した場合も同様です。

マルチスレッドプログラムでは使用できません。

5.4.18　ASSIGN ADDRESS（アドレスの取得）

データ名のアドレスを取得します。

形式

ADDRESS（データ名指定1）

アドレス名，アドレスデータ項目，またはポインタ項目を指定します。

指定したデータ名に，DATAオペランドで指定したデータ名のアドレスが設定されます。

DATA（データ名指定2）

アドレスを取得したいデータ名を指定します。

注意事項

データ名指定2には，次のデータ項目は指定できません。

・指標名

・アドレス名

・動的長基本項目

データ名指定2にブール項目を指定した場合，バイト境界になっていればアドレスを取得できます。バイト境界になっていない場合は，エラーになります。

アドレスを取得したあとは，取得したアドレスが指すデータが参照できるかどうかは確認しません。参照できなくなっていた場合，そのアドレスを使ってデータ操作したときの動作は保証しません。

データ名指定1にアドレス名を指定したとき，指定したアドレス名で参照されるデータとデータ名指定2に指定したデータの構造のチェックはしません。二つの構造が違うことによる領域破壊などの動作は保証しません。

例えば，次の条件で，データ名指定1にADDRS，データ名指定2にSRC_DATA1を指定した場合，DATA1（アドレス名ADDRSで参照されるデータ）とSRC_DATA1は，構造およびサイズとも異なりますが，ASSIGN ADDRESSコマンドは成功します。

ただし，DATA3 OF DATA1の部分はSRC_DATA1の範囲外になるため，その値を更新すると，領域破壊になります。

・COBOLソースでのデータ定義

　01 DATA1 ADDRESSED BY ADDRS.

　　02 DATA2 PIC X(10).

　　02 DATA3 PIC X(10).

　01 SRC_DATA1 PIC X(10).

・デバッガで実行するTDコマンド

　ASSIGN ADDRESS( ADDRS ) DATA( SRC_DATA1 )

　ASSIGN DATA( DATA3 OF DATA1) VALUE( "SAMPLE" ) *> 領域破壊になる。

データ名指定2にアドレス名で参照されたデータ名を指定した場合，アドレス名が指すアドレスが設定されます。

5.4.19　SIMULATE MAIN（主プログラムシミュレーションの設定）

主プログラムシミュレーションで実行する手続きを指定します。詳細については，「2.2.7　プログラムの単体テスト」の「(1)　主プログラムシミュレーション」を参照してください。

形式

MAIN（プログラム指定）

主プログラムから呼び出される副プログラムの入口名を指定します。

入口名

ENTRY文で指定される入口点の名前を指定します。

MESSAGE | NOMESSAGE

シミュレーションの開始を知らせるメッセージを表示するかどうかを指定します。

TDコマンド群

テストデバッグ対象のプログラムへ渡すインタフェースを設定する手続きをTDコマンドで指定します。

5.4.20　SIMULATE SUB（副プログラムシミュレーションの設定）

副プログラムシミュレーションで実行する手続きを指定します。詳細については，「2.2.7　プログラムの単体テスト」の「(2)　副プログラムシミュレーション」を参照してください。

形式

SUB（プログラム指定）

シミュレーション対象とするプログラム定義の名前を指定します。

入口名

ENTRY文で指定される入口点の名前を指定します。

USING（記号名〔, … 〕 ）

CALL文のUSINGで指定したデータ項目をシミュレーションの手続きで参照するための記号名を指定します。USINGで指定したデータ項目の順番とUSINGオペランドに指定した記号名の順番が対応します。

RETURNING（記号名）

シミュレーション手続きでRETURNINGに値を設定するための記号名を指定します。

COUNTER（カウンタ変数）

カウンタ変数は，プログラムの開始時に0が設定され，シミュレーションが実行されるたびに1ずつ値が増加します。

MESSAGE | NOMESSAGE

シミュレーションの開始を知らせるメッセージを表示するかどうかを指定します。

DEFINE 〔 記号名構造定義指定 … 〕 ENDDEFINE

USINGまたはRETURNINGオペランドで指定した記号名に対応するデータ名が集団項目のとき，集団項目に所属するデータ名を指定します。詳細については，「5.4.26　レベル番号（記号名構造指定）」を参照してください。

繰り返し指定，TDコマンド群

プログラムの呼び出しをシミュレーションで実行する手続きをTDコマンドで指定します。

繰り返し指定の詳細については，「5.4.25　REPEAT（繰り返し指定）」を参照してください。

5.4.21　SIMULATE FILE（ファイルシミュレーションの設定）

ファイルのシミュレーションで実行する手続きを指定します。詳細については，「2.2.7　プログラムの単体テスト」の「(3)　ファイルシミュレーション」を参照してください。

形式

FILE（ファイル名指定）

シミュレーション対象とするファイル名を指定します。

OPENMODE（INPUT | OUTPUT | IO | EXTEND）

ファイルのオープンモードを指定します。

RECORD（記号名〔, … 〕 ）

シミュレーション手続き中で使用する記号名を定義します。記号名は，該当するファイルのレコード名定義に対応します。

COUNTER（カウンタ変数）

カウンタ変数は，プログラムの開始時に0が設定され，シミュレーションが実行されるたびに1ずつ値が増加します。

MESSAGE | NOMESSAGE

シミュレーションの開始を知らせるメッセージを表示するかどうかを指定します。

DEFINE 〔 記号名構造定義指定 … 〕 ENDDEFINE

RECORDオペランドで指定した記号名に対応するデータ名が集団項目のとき，集団項目に所属するデータ名を指定します。詳細については，「5.4.26　レベル番号（記号名構造指定）」を参照してください。

入出力文選択指定

入出力文で実行する手続きをTDコマンドで指定します。詳細については，「5.4.22　SELECT ACTION（入出力文選択指定）」を参照してください。

繰り返し指定，TDコマンド群

入出力文で実行する手続きをTDコマンドで指定します。

繰り返し指定の詳細については，「5.4.25　REPEAT（繰り返し指定）」を参照してください。

5.4.22　SELECT ACTION（入出力文選択指定）

擬似実行する入出力文に対応させて，ファイルシミュレーションの手続きを実行させます。ファイルシミュレーションについては，「2.2.7　プログラムの単体テスト」の「(3)　ファイルシミュレーション」を参照してください。

形式

ACTION（READ | WRITE | REWRITE | START | DELETE）

対象とする入出力文を指定します。

繰り返し指定・TDコマンド群

指定した入出力文で実行するシミュレーション手続きを指定します。

繰り返し指定の詳細については，「5.4.25　REPEAT（繰り返し指定）」を参照してください。

5.4.23　GO END・GO INVALID・GO EOP・GO ERROR（入出力条件シミュレーション）

入出力条件を擬似的に発生させます。このとき，入出力状態に値を設定します。ファイルシミュレーションの手続きにだけ指定できます。

ファイルシミュレーションについては，「2.2.7　プログラムの単体テスト」の「(3)　ファイルシミュレーション」を参照してください。

形式

注意事項

GO ENDコマンド実行後のプログラムの制御は，次のような関係となります。

AT END指定

USE指定あり

USE指定なし

あり

AT END指定の無条件文に制御が移る

AT END指定の無条件文に制御が移る

なし

USE手続きが実行される

入出力文の終わりに制御が移る

GO INVALIDコマンド実行後のプログラムの制御は，次のような関係となります。

INVALID KEY指定

USE指定あり

USE指定なし

あり

INVALID KEY指定の無条件文に制御が移る

INVALID KEY指定の無条件文に制御が移る

なし

USE手続きが実行される

入出力文の終わりに制御が移る

GO EOPコマンド実行後のプログラムの制御は，次のような関係となります。

END-OF-PAGE指定

USE指定あり

USE指定なし

あり

END-OF-PAGE指定の無条件文に制御が移る

END-OF-PAGE指定の無条件文に制御が移る

なし

入出力文の終わりに制御が移る

入出力文の終わりに制御が移る

GO ERRORコマンド実行後のプログラムの制御は，次のような関係となります。

USE指定あり

USE指定なし

USE手続きが実行される

入出力文の終わりに制御が移る

5.4.24　SIMULATE DC（DCシミュレーションの設定）

DCシミュレーションを，TDコマンドで手続きを設定して実行させます。詳細については，「2.2.7　プログラムの単体テスト」の「(5)　DCシミュレーション」を参照してください。

形式

DC（操作文種別）

シミュレーションの対象とするDC文を指定します。

指定できる操作文は，COMMIT，DISABLE，ENABLE，RECEIVE，ROLLBACK，SEND文です。

CDNAME（通信記述名）

シミュレーションの対象とする通信記述名を指定します。操作文種別と通信記述名の組み合わせでシミュレーション対象が決まります。

COUNTER（カウンタ変数）

カウンタ変数は，プログラムの開始時に0が設定され，シミュレーションが実行されるたびに1ずつ値が増加します。

MESSAGE | NOMESSAGE

シミュレーションの開始を知らせるメッセージを表示するかどうかを指定します。

繰り返し指定，TDコマンド群

DC文で実行する手続きをTDコマンドで指定します。

繰り返し指定の詳細については，「5.4.25　REPEAT（繰り返し指定）」を参照してください。

注意事項

マルチスレッドプログラムでは，使用できません。

5.4.25　REPEAT（繰り返し指定）

次のシミュレーションで一度に実行する手続きと，繰り返す回数を指定します。

副プログラムシミュレーションで副プログラムが呼ばれる

ファイルシミュレーション入出力文が実行される

DCシミュレーションでDC文が実行される

ファイルシミュレーションについては，「2.2.7　プログラムの単体テスト」の「(3)　ファイルシミュレーション」を参照してください。

形式

TIMES（反復回数）

シミュレーションが実行されることによって，指定されたTDコマンド群を繰り返し実行する回数を指定します。指定できるのは1〜2,147,483,647の整数で，省略時は1が仮定されます。

TDコマンド群

一度に実行するシミュレーション手続きを指定します。

5.4.26　レベル番号（記号名構造指定）

次のオペランドで指定する記号名に対応するデータ名が集団項目のとき，集団項目に属するデータ名に対応する記号名を指定します。指定された記号名によって，集団項目に属するデータ名をシミュレーションの手続きで参照できます。

ファイルシミュレーションのRECORDオペランド

副プログラムシミュレーションのUSINGオペランドおよびRETURNINGオペランド

形式

レベル番号

レベル番号を指定します。

記号名

集団項目に属するデータ名に対応させる記号名を指定します。

注意事項

DEFINEオペランドとENDDEFINEオペランドの間でだけ指定できます。

対応するデータ名にTYPE句またはSAME AS句の指定がある場合，レベル番号は展開後の構造で指定します。

レベル番号の01〜09の0は省略できます。

5.4.27　TEST（テストケースの選択）

複数のテストケースをまとめて定義して，その中から実行するテストケースを指定します。

形式

CASEID（ケース識別子）

定義されたテストケースの中から，実行するテストケースを指定します。このオペランドを指定しなかったときは，TESTコマンドの中で定義されたすべてのテストケースを実行します。末尾に*を付けて指定すると，*より前の文字が一致するケース識別子を持つすべてのテストケースを実行します。

テストケース

テストケースとして実行するTDコマンドを指定します。

テストケースの詳細については，「5.4.28　CASE（テストケースの指定）」を参照してください。

コマンド群

QUIT，#INCLUDE，#OPTIONコマンドが指定できます。

5.4.28　CASE（テストケースの指定）

テストケースの手続きを設定します。

形式

ID（ケース識別子）

テストケースの名称をケース識別子として定義します。英字で始まる31文字以内の英数字文字列で指定します。

TOSTEP（ステップ数）

プログラムの実行を開始してから終了するまでのステップ数を指定します。最初の文を実行したときのステップ数を１とします。

指定できる範囲は，1〜2,147,483,647の整数です。実行した文が指定された数に達すると，実行が打ち切られます。

CONDITION（ケース選択条件〔AND … 〕）

テストケースを実行する条件を指定します。指定したすべての条件を満たしたときにテストケースが実行されます。

ケース選択条件は，次の条件式で指定します。

ケース識別子は，先に実行したテストケースのケース識別子を指定します。#LASTCODEを指定した場合は，直前のテストケースが仮定されます。

ケースコードは，先行するテストケース内でASSIGN CASECODEコマンドを使用して設定した値です。

TDコマンド群

テスト手続きをTDコマンドで指定します。

注意事項

ステップ数は，スレッドに依存しないで，実行した文をカウントします。

5.4.29　ASSIGN CASECODE（ケースコードの設定）

テストケースの終了状態（ケースコード）を設定します。

形式

CASECODE（ケースコード）

指定できる範囲は，0〜2,147,483,647の整数です。

5.4.30　QUIT（テストデバッグの終了）

テストデバッグを終了します。

形式

5.4.31　DISPLAY COMMENT（注釈の表示）

指定した文字を表示します。

形式

COMMENT（コメント文字列）

表示する文字列を指定します。文字列に空白，括弧，アポストロフィ（'）またはダブルコーテーション（"）を使用する場合の指定方法については，「5.1　TDコマンドの指定方法」を参照してください。

PRINT

SET PRINTコマンドで指定した出力先に結果を表示します。

5.4.32　SET QUALIFICATION／RESET QUALIFICATION（翻訳単位・ソース要素の指定と解除）

(1)　SET QUALIFICATION（翻訳単位・ソース要素の指定）

テストデバッグの対象とする翻訳単位またはソース要素を変更します。SET QUALIFICATIONコマンドで翻訳単位指定をすると，その後の文番号に翻訳単位を指定したことになります。SET QUALIFICATIONコマンドでソース要素指定をすると，その後のソース要素指定ができるオペランドに指定したことになります。

形式

QUALIFICATION（翻訳単位指定）

仮定する翻訳単位を指定します。

QUALIFICATION（ソース要素指定）

仮定するソース要素を指定します。

注意事項

SET QUALIFICATIONコマンドは，プログラムの開始時および再開時に解除されます。また，プログラムの実行中止（STOPコマンド）でも解除されます。

翻訳単位指定は，文番号だけに有効です。その他にはソース要素指定をしなくてはなりません。

SET QUALIFICATIONコマンド以降，文番号以外も対象とする場合は，ソース要素指定を指定します。

(2)　RESET QUALIFICATION（翻訳単位・ソース要素の指定の解除）

翻訳単位指定またはソース要素指定を解除します。

形式

5.4.33　#INCLUDE（TDコマンド格納ファイルの取り込み）

指定したファイルからTDコマンドを入力します。

形式

INFILE（ファイル名）

TDコマンドを格納しているファイル名を指定します。ファイル名に空白，括弧，アポストロフィ（'）または引用符（"）を使用する場合の指定方法については，「5.1　TDコマンドの指定方法」を参照してください。

MESSAGE | NOMESSAGE

入力したTDコマンドを表示するかどうかを指定します。

注意事項

#INCLUDEコマンドで指定したファイルの中に，再度同じファイル名を指定した#INCLUDEコマンドは記述できません。

大文字・小文字を区別するため，#OPTIONコマンドの指定がファイル名に効かないようにさせたいときは，文字列を指定します。指定方法については，「5.1　TDコマンドの指定方法」の「5.1.4　英大文字と英小文字，英数字文字と拡張文字を区別しての文字列の指定方法」を参照してください。

ファイル名に，絶対パスの付かないファイル名を指定したときの，ファイルの検索方法は，「3.2.2　環境変数の指定」を参照してください。

バッチモードのcbltd2kコマンドで-SyntaxOnlyオプションの指定の有無に関係なく，指定されたTDコマンド格納ファイルの取り込みをします。バッチモードのcbltd2kコマンドで-SyntaxOnlyオプションが指定されていた場合は，取り込んだTDコマンド格納ファイル内のTDコマンドの構文解析が行われます。

ファイル名に正規表現を指定しても適用されません。

5.4.34　#OPTION（オプションの変更）

TDコマンドの解析方法を指定します。

形式

下記の説明で，特殊文字とは次の文字です。

＋ - * / = ¥ ' " ; . ， ( ) < > & :

NOCASE

同じ文字を表す英大文字と英小文字，英数字文字と拡張文字を同じに扱います。

・COBOL2002の予約語と特殊文字は，英数字文字と拡張文字のどちらでも指定できます。

・データ名の拡張文字と英小文字は，英数字文字の英大文字に変換されます。

CASE1

同じ文字を表す英数字文字の英大文字と英小文字を同じに扱います。英数字文字と拡張文字は区別します。

・COBOL2002の予約語と特殊文字は，英数字文字で指定します。

・データ名の英数字文字の英小文字は英大文字に変換されます。拡張文字のデータ名は変換しません。

CASE2

同じ文字を表す英大文字と英小文字，英数字文字と拡張文字を区別します。

・COBOL2002の予約語と特殊文字は，英数字文字の英大文字で指定します。

・データ名は変換しません。

2002SYNTAX

TDコマンドのオペランドに指定する利用者定義語の最大長をCOBOL2002の規則と同等にします。利用者定義語に関する詳細については，マニュアル「COBOL2002　言語　標準仕様編」を参照してください。

85SYNTAX

TDコマンドのオペランドに指定する利用者定義語の最大長をCOBOL85の規則と同等にします。

注意事項

バッチモードの起動コマンドで-SyntaxOnlyオプションの指定の有無に関係なく，指定は有効となります。

使用例

DISPLAY DATAコマンドのデータ名data1およびdata2は，英小文字のまま扱われます。

      #OPTION  NOCASE
      SET BREAK STATEMENT(#PROGRAM( PROG ) 100) DO
            #OPTION  CASE2
            DISPLAY DATA( data1 )
      ENDDO
      DISPLAY DATA( data2 )

5.4.35　SET PRINT／RESET PRINT（テスト結果蓄積先の設定と解除）

(1)　SET PRINT（テスト結果蓄積先の設定）

PRINTオペランドが指定されたTDコマンドによる実行結果の出力先を指定します。SET PRINTの指定がない場合，バッチモードでは結果出力ファイルへ，実行結果を出力します。

形式

OUTFILE（ファイル名）

実行結果を出力するファイル名を指定します。ファイル名に空白，括弧，アポストロフィ（'）または引用符（"）を使用する場合の指定方法については，「5.1　TDコマンドの指定方法」を参照してください。

注意事項

SET PRINTでファイルがオープンされ，RESET PRINTでファイルがクローズされます。ファイルがオープンされている間は，ほかのアプリケーションからの書き込みを行うと，ファイルのオープンでエラーとなります。

指定されたファイルがすでにある場合は，上書きとなります。

SET PRINTコマンドによって出力先が指定されていた場合は，先に指定されたファイルをクローズしてから指定されたファイルをオープンします。

すでにオープンされているファイルをファイル名に指定できません。したがって，SET LOGコマンドで指定されたファイルも指定できません。

大文字・小文字を区別するため，#OPTIONコマンドの指定がファイル名に効かないようにさせたいときは，文字列を指定します。指定方法については，「5.1　TDコマンドの指定方法」の「5.1.4　英大文字と英小文字，英数字文字と拡張文字を区別しての文字列の指定方法」を参照してください。

ファイル名に正規表現を指定しても適用されません。

(2)　RESET PRINT（テスト結果蓄積先の解除）

実行結果の出力先を戻します。

形式

5.4.36　SET LOG／RESET LOG（ログ出力ファイルの設定／解除）

(1)　SET LOG（ログ出力ファイルの設定）

ラインモードで端末に表示されるテストデバッグの実行結果をファイルへ出力します。

形式

OUTFILE（ファイル名）

実行結果を出力するファイル名を指定します。ファイル名に空白，括弧，アポストロフィ（'）または引用符（"）を使用する場合の指定方法については，「5.1　TDコマンドの指定方法」を参照してください。

注意事項

SET LOGでファイルがオープンされ，RESET LOGでファイルがクローズされます。ファイルがオープンされている間は，ほかのアプリケーションからの書き込みはできません。RESET LOG以外でも，初期化，テストデバッガの終了したときにファイルがクローズされます。

指定されたファイルがすでにある場合は，上書きとなります。

SET LOGによって出力先が指定されていた場合は，先に指定されたファイルをクローズしてから指定されたファイルをオープンします。

オープンされているファイルを，ファイル名に指定することはできません。したがって，SET PRINTコマンドで指定されたファイルも，指定できません。

大文字・小文字を区別するため，#OPTIONコマンドの指定がファイル名に効かないようにさせたいときは，文字列を指定します。指定方法については，「5.1　TDコマンドの指定方法」の「5.1.4　英大文字と英小文字，英数字文字と拡張文字を区別しての文字列の指定方法」を参照してください。

ファイル名に正規表現を指定しても適用されません。

(2)　RESET LOG（ログ出力の解除）

テストデバッガの実行結果を端末へ出力するように戻します。

形式

5.4.37　ASSIGN DEVICE（装置名へのファイルの割り当て）

プログラムのファイル管理記述項で指定した装置名にファイルを割り当てます。

形式

DEVICE（ファイル定義）

ファイル定義は，プログラムのファイル管理記述項のASSIGN句で定義している装置名の前に，CBL_またはCBLX_を付加して指定します。

IOFILE（ファイル名）

プログラムで入出力をするファイル名を指定します。

注意事項

ファイル定義に記述したハイフン（-）は，アンダーバー（_）と見なされます。

ファイルの実体を割り当てないでOPEN文を実行すると，実行時エラーメッセージを表示して，プログラムの実行が中断されます。AIXの場合，中断後に，ASSIGN DEVICEコマンドでファイルを割り当てたあと，ジャンプまたはジャンプ実行でOPEN文を再び実行させることによって，プログラムを続行できます。

プログラムのSELECT句で割り当てた装置名に，ASSIGN DEVICEコマンドを使用すると，ASSIGN DEVICEコマンドのファイル定義で指定した装置名に置き換えられます。

ファイル定義の長さの制限値は，CBL_またはCBLX_にCOBOL利用者語の制限値を足した値となります。

ファイル名に正規表現を指定しても適用されません。

XMAP3によるプリンタへの書式印刷機能を使用する場合，ファイル定義には外部装置名の前にCBLX_を付けて指定し，ファイル名には印刷サービス名称を指定します。

5.4.38　！（UNIXコマンドの実行）

UNIXのコマンドを実行します。

形式

UNIXコマンド

実行するUNIXコマンドを指定します。

オペランド

実行するUNIXコマンドのオペランドを指定します。

注意事項

UNIXコマンドおよびオペランドの指定規則は，各UNIXコマンドに従います。

SET LOGコマンドでTDコマンドの実行結果をファイルへ出力することを指定しても，UNIXコマンドの実行結果だけはログ出力ファイルへ出力されません。

UNIXコマンドとオペランドの文字列に空白，括弧，アポストロフィ（'）または引用符（"）を使用する場合の指定方法については，「5.1　TDコマンドの指定方法」を参照してください。

使用例

!('ls -L > out.file')

!コマンドは，子プロセスを生成してコマンドを実行します。そのため，子プロセスで実行されたcd，setenvなどのUNIXコマンドの実行結果は無効となります。

6　カバレージ機能の概要

カバレージ機能を使うと，プログラムのテスト状況を定量的に示したり，プログラムの性能を分析したりできます。この章では，これらの情報の内容と蓄積，表示などの方法について説明します。

6.1　概要

この節では，カバレージ機能の概要について説明します。

6.1.1　カバレージ機能の入出力構成と使用するファイル

(1)　入出力構成

カバレージ機能の入出力構成を図6-1，図6-2に示します。

図6‒1　カバレージ情報の蓄積・表示・操作

注※1

目的に応じて次の拡張子を使用します。

・固定形式正書法で書かれた原始プログラムをコンパイルする場合

　.cbl，.CBL，.cob，.ocb，または環境変数CBLFIXで指定した拡張子

・自由形式正書法で書かれた原始プログラムをコンパイルする場合

　.cbf，.ocf，または環境変数CBLFREEで指定した拡張子

注※2

システムによって違いがあります。詳細は，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

図6‒2　カウント情報の表示

注※1

目的に応じて次の拡張子を使用します。

・固定形式正書法で書かれた原始プログラムをコンパイルする場合

　.cbl，.CBL，.cob，.ocb，または環境変数CBLFIXで指定した拡張子

・自由形式正書法で書かれた原始プログラムをコンパイルする場合

　.cbf，.ocf，または環境変数CBLFREEで指定した拡張子

注※2

システムによって違いがあります。詳細は，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

(2)　使用するファイル

カバレージ機能で使用するファイルを次に示します。

実行可能ファイル

カバレージ情報の蓄積対象，またはカウント情報の取得対象となる実行可能ファイルです。

共用ライブラリファイル

カバレージ情報の蓄積対象，またはカウント情報の取得対象となる共用ライブラリファイルです。共用ライブラリについては，「6.4.2　共用ライブラリ」を参照してください。

プログラム情報ファイル

カバレージ情報の蓄積，またはカウント情報の取得に必要とするプログラムの情報を格納するファイルです。また，蓄積したカバレージ情報を格納するためのファイルでもあります。-CVInfコンパイラオプションを指定してコンパイルしたときに出力されます。

プログラム情報ファイルは，使用するカバレージ機能と同じバージョンのコンパイラで作成されたものでなければなりません。バージョンが異なる場合は，次に示すエラーメッセージが表示されます。

KCCC4436T-E 異なるバージョンでコンパイルされたプログラム情報ファイルのため，対象としません。ファイル（xxxxx）

カバレージ情報リストファイル（カバレージ情報表示時）

カバレージ表示の実行結果を格納するファイルです。ファイルはテキストファイルです。

カウント情報リストファイル（カウント情報表示時）

カウント情報の取得結果を格納するファイルです。ファイルはテキストファイルです。

カバレージ統計情報CSVファイル（カバレージ情報表示時）

ソースファイル単位または翻訳単位に，カバレージ統計情報を出力するファイルです。複数のプログラム情報ファイルに対するカバレージ統計情報を一つのファイルにまとめて出力します。ファイルはCSVファイルです。

ソースカバレージ情報CSVファイル（カバレージ情報表示時）

原始プログラム1行ごとのカバレージ情報を出力するファイルです。一つのプログラム情報ファイルに対して，ソースカバレージ情報CSVファイルを一つ出力します。ファイルはCSVファイルです。

実行結果出力ファイル

カバレージ情報の蓄積およびカウント情報の表示で，実行中のメッセージの出力は実行結果出力ファイルに出力されます。次の理由によって，実行結果出力ファイルに出力できない場合については，「7.2.2　プログラムからの連動実行による方法」の「(3)　実行結果出力ファイルにメッセージを出力できないときの処理」を参照してください。

環境変数CBLTDEXECの値の指定に誤りがあった場合

結果出力ファイルにエラーが発生し，実行結果出力ファイルが出力できなかった場合

実行環境が整っていなかったためカバレージ情報の蓄積またはカウント情報の表示ができなかった場合

注意事項

プログラム情報ファイルは，実行可能ファイルまたは共用ライブラリファイルのあるディレクトリを参照します。任意のディレクトリのプログラム情報ファイルを参照するときは，環境変数CBLPIDIRにディレクトリ名を指定します。

環境変数CBLPIDIRを指定した場合のプログラム情報ファイルの検索順序は，「(3)　使用する環境変数の指定」を参照してください。

(3)　使用する環境変数の指定

環境変数は，カバレージを起動する前に設定します。大文字で指定してください。

表6‒1　使用する環境変数一覧

環境変数

概要

CBLPIDIR

プログラム情報ファイルがあるディレクトリ名を指定します。

CBLTDEXEC

プログラムからの連動実行を指定します。

カバレージ情報の蓄積の場合については，「7.2.2　プログラムからの連動実行による方法」，カウント情報の表示の場合については，「7.6.2　プログラムからの連動実行による方法」を参照してください。

CBLLSLIB

共用ライブラリファイルのファイル名を指定します。

CBLLPATH

共用ライブラリファイルがあるディレクトリ名を指定します。

LD_LIBRARY_PATH※

共用ライブラリファイルがあるディレクトリ名を指定します。

CBLTDEXTARGET

-TDInfおよび-CVInfコンパイラオプションがないCOBOLプログラム，またはCOBOLプログラム以外から共用ライブラリが呼ばれる場合，カバレージ情報の蓄積，カウント情報の表示を可能にします。

注※

Linuxで有効

プログラムの実行に関するその他の環境変数は，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

注意事項

カバレージ情報の蓄積・カウント情報の表示のプログラム情報ファイルを次に示す検索順序で検索します。検索した結果，見つからないときは，プログラム情報ファイルに該当するプログラムはカバレージ情報の蓄積およびカウント情報の表示の対象となりません。

検索順序

(1)環境変数CBLPIDIRで指定したディレクトリ

(2)実行可能ファイルに含まれるプログラムは，実行可能ファイルのあるディレクトリ

　共用ライブラリファイルに含まれるプログラムは，共用ライブラリファイルのあるディレクトリ

(3)カレントディレクトリ

カバレージ情報の表示・カバレージ情報の操作のプログラム情報ファイルがパスの付かないファイル名または，相対パスで指定された場合，次に示すディレクトリを検索します。相対パスが指定されたときは，次に示すディレクトリからの相対パスを検索します。絶対パスが指定されたときは検索しません。

(1)環境変数CBLPIDIRで指定したディレクトリ

(2)カレントディレクトリ

プログラムが-CVInfコンパイラオプションでコンパイルされていない場合，カバレージ情報の蓄積，表示，操作，およびカウント情報の表示の対象となりません。

カバレージ情報の表示，操作では対象外とするエラーメッセージを出力します。

カバレージ情報の蓄積の対象となるプログラム情報ファイルが一つもない場合は，カバレージ情報の蓄積のためのプログラムを実行しません。

カバレージ情報の表示の対象となるプログラム情報ファイルが一つもない場合は，カバレージの表示をしません。カバレージ情報リストファイルやカバレージ統計情報CSVファイルも出力しません。

カバレージ情報の操作の対象となるプログラム情報ファイルが一つもない場合は，カバレージの操作をしません。

カウント情報の表示の対象となるプログラム情報ファイルが一つもない場合は，カウント情報の表示のためのプログラムを実行しません。カウント情報リストファイルも出力しません。

環境変数CBLTDEXECについては，「7.2.2　プログラムからの連動実行による方法」，「7.6.2　プログラムからの連動実行による方法」を参照してください。

環境変数CBLLSLIB，環境変数CBLLPATH，および環境変数LD_LIBRARY_PATHについては，「6.4.2　共用ライブラリ」を参照してください。

6.1.2　プログラムのコンパイル

カバレージを使用するためには，プログラムのコンパイル時に-CVInfコンパイラオプションを必ず指定します。カバレージの機能を使用するために指定するCOBOL2002のコンパイラオプションを次に示します。コンパイラオプションの詳細については，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

表6‒2　カバレージの機能とコンパイラオプション

カバレージの機能

コンパイラオプション

カバレージを使用する

-CVInf

ccbl2002コマンド以外でリンクする場合に必要な，リンク時の指定を次に示します。

表6‒3　カバレージのためのリンク時の指定

対象

機能

リンク時の指定

実行可能ファイル

実行可能ファイルをカバレージの対象とする場合

指定しない

注※

-lcbl2ktdは，-lcbl2kよりも前に指定してください。

ccbl2002を使用しないで，ccコマンドを使用する場合の使用例を次に示します。

（使用例）

実行可能ファイルをccコマンドで作成する

AIX(32)の場合

cc TEST01.o TEST02.o -o TEST -L/opt/HILNGcbl2k/lib -lcbl2k -lcbl2kml -ldl -lm

AIX(64)の場合

cc -q64 TEST01.o TEST02.o -o TEST -L/opt/HILNGcbl2k64/lib -lcbl2k64 -lcbl2kml64 -ldl -lm

Linux(x86)の場合

cc TEST01.o TEST02.o -o TEST -L/opt/HILNGcbl2k/lib -lcbl2k -lcbl2kml -ldl -lm

Linux(x64)の場合

cc TEST01.o TEST02.o -o TEST -L/opt/HILNGcbl2k64/lib -lcbl2k -lcbl2kml -ldl -lm

共用ライブラリをldコマンドで作成するときは，「6.4.2　共用ライブラリ」を参照してください。

注意事項

-Optimize,2コンパイラオプションによる最適化の指定をして作成したプログラムでは，文が最適化されることがあり，プログラムの動作が保証されない場合があります。

6.1.3　テストしたいプログラムの実行

カバレージの対象となるプログラムは，一つの実行可能ファイルと複数の共用ライブラリファイルで構成されます。

注意事項

ldコマンドの-sオプションやstripコマンドなどで実行可能ファイルや共用ライブラリのシンボル情報を削除した場合，その実行可能ファイルや共用ライブラリは，カバレージの対象になりません。

なお，Linuxでは，cblcv2kコマンドの-Executeオプションに指定する実行可能ファイルは，テストデバッグの対象にしない場合でもシンボル情報が必要です。

共用ライブラリのロードは，COBOLプログラムの実行時の動作に従います。指定した共用ライブラリが，プログラムの実行時にロードされた場合に，カバレージの対象になります。ロードされなかった場合は，カバレージの対象になりません。

カバレージでは，共用ライブラリがロードされた場合に次のチェックをして，指定された共用ライブラリとロードされた共用ライブラリが同じであるかを判断しています。次のチェックで，指定された共用ライブラリとは異なると判断された場合は，カバレージの対象になりません。

チェック内容

　・ロードされた共用ライブラリのファイルが共用ライブラリを検索するパスにある。

共用ライブラリについては，「6.4.2　共用ライブラリ」を参照してください。

STOP RUN文を記述しない場合は，「COBOLプログラムの実行を終了しました」のメッセージが表示されません。

カバレージを実行するシステム以外で作成された実行可能ファイルを対象にすると，KCCC4216T-SまたはKCCC4412T-Eのメッセージが出力され，カバレージが終了します。

カバレージを実行するシステム以外で作成された共用ライブラリを対象にすると，KCCC4216T-SまたはKCCC4412T-E，およびKCCC0331T-Iのメッセージが出力され，カバレージの対象になりません。カバレージは続行します。

6.1.4　テストプログラムの構成

カバレージの対象となるプログラムの構成，プログラム定義，クラス定義，および関数定義の詳細については，マニュアル「COBOL2002　使用の手引　手引編」の翻訳グループについての説明を参照してください。

6.1.5　カバレージ情報の表示と操作

カバレージ情報は，テストによって実行された手続き文の割合です。計画したテスト内容に従って，プログラムに記述した手続き文がテスト実行されたかどうかを把握でき，テスト工程の進捗度を判定できます。

実行されたテストプログラムの文はカバレージ情報としてプログラム情報ファイルに記憶されます。プログラム情報ファイルに蓄積されたカバレージ情報は，次の形式で表示できます。

翻訳単位ごとに実行された文の割合を，文・分岐・呼び出し文ごとに示す。

ソース原文を表示して実行が済んだ文と実行されていない文を示す。

原始プログラムの修正によって変更された差分に対するカバレージ情報を示す。

さらに，蓄積したカバレージ情報をクリアする，別の環境で蓄積したカバレージ情報をマージするなどの機能があります。

6.1.6　カウント情報の表示

テスト実行させたプログラムの文の実行回数を表示します。プログラムの実行性能改善の施策を検討するときに，各文の実行回数を測定し，プログラムの性能を分析するために必要な情報を取得し，表示できます。

6.1.7　その他の注意事項

(1)　ファイルの書き込み時の制約

ccbl2002コマンドによって，同時にプログラムがコンパイルされた場合は，コンパイラが生成する次のファイルは，あとから生成されたファイルが有効になります。

プログラム情報ファイル

同時に複数のカバレージ情報の蓄積をした場合，プログラムの終了後に，プログラム情報ファイルに書き込みを同時にすると，エラーになるときがあります。

(2)　プログラム情報ファイルのエラーについて

COBOL2002以外で作成されたプログラム情報ファイルをカバレージ情報の表示，またはカバレージ情報の操作の対象に指定した場合は，KCCC4416T-Eのエラーメッセージを出力し，カバレージ情報の表示，またはカバレージ情報の操作の対象にしません。

COBOL2002ではあるが，別のシステムで作成されたプログラム情報ファイルをカバレージ情報の表示，またはカバレージ情報の操作の対象に指定した場合は，KCCC4437T-Eのエラーメッセージを出力し，カバレージ情報の表示，またはカバレージ情報の操作の対象にしません。

(3)　作業用ファイルについて

COBOL2002では，カバレージ情報の蓄積，またはカウント情報の表示で，作業用ファイルを生成して使用しています。作業用ファイルは，次の表にあるディレクトリに，先頭に「CBLTD」，その後ろに任意の文字列が付いたファイル名で生成されます。カバレージ情報の蓄積，またはカウント情報の表示の実行中に強制終了した場合など，作業用ファイルが正しく削除されないときがあります。そのときは，OSのコマンドなどを使用して削除してください。

OS

出力ディレクトリ

AIX

/tmpディレクトリに生成されます。ただし，環境変数TMPDIRを指定したときは，環境変数TMPDIRに指定したディレクトリに生成されます。

Linux

/tmpディレクトリに生成されます。

6.2　カバレージ情報の表示と操作

この節では，カバレージ機能の表示と操作について説明します。

6.2.1　カバレージ情報

カバレージ機能が表示するカバレージ情報は，次のとおりです。どれも，翻訳単位ごとに割合を求め，小数点第2位以下を切り捨てた値を表示します。

C0メジャー

実行した文の割合を表す情報です。

C0メジャー＝（実行が済んだ実行文の数）/（実行文の数）×100（%）

C1メジャー

処理が分岐する個所で，実行した分岐先の数の割合を表す情報です。

C1メジャー＝（実行が済んだ分岐先の数）/（実行できる分岐先の数）×100（%）

S1メジャー

実行した呼び出し文の数の割合を表す情報です。

S1メジャー＝（実行が済んだ呼び出し文の数）/（実行できる呼び出し文の数）×100（%）

なお，プログラムを修正したあと，修正個所に着目してカバレージ情報を蓄積することもできます。

差分C0メジャー

修正個所中の，実行した文の割合を表す情報です。

差分C0メジャー＝（実行が済んだ実行文の数）/（実行文の数）×100（%）

差分C1メジャー

修正個所中の，処理が分岐する個所で実行した分岐先の数の割合を表す情報です。

差分C1メジャー＝（実行が済んだ分岐先の数）/（実行できる分岐先の数）×100（%）

差分S1メジャー

修正個所中の，実行した呼び出し文の数の割合を表す情報です。

差分S1メジャー＝（実行が済んだ呼び出し文の数）/（実行できる呼び出し文の数）×100（%）

注意事項

カバレージ情報は，ブロックごとに蓄積します。カバレージのブロックは，順次実行される無条件文の集まりで，条件文の条件句の直前までが原則として一つのブロックとなります。ブロックの先頭の文を実行したときにブロック全体が実行されたと判断します。ブロック中の文で実行時エラーが発生した場合も，そのブロックは実行されたと判断します。

ブロックを分ける一般規則と例

それ自身でブロックとなる文または句

(1)制御を2方向以上に分岐させる文

・IF文・条件指定のある文

・PERFORM文（TIMES指定，UNTIL指定（VARYING指定のUNTILを含む）のPERFORM文）

・EVALUATE文

・SEARCH文

・GO TO文（DEPENDING ON指定付きの文，DEPENDING ON指定はこのブロックに含まれる）

直前でブロックを区切る文または句

(1)2方向以上に分岐

・THEN

・ELSE

・条件指定

・手続き名〔THRU 手続き名〕 TIMES指定，UNTIL指定（VARYING指定のUNTILを含む）のPERFORM文

・WHEN

・WHEN OTHER

・AT END（SEARCH文）

・手続き名（DEPENDING ON指定付きのGO TO文）

(2)単独の制御の開始

・手続き部分の最初の文

・宣言部分の節名

・手続き部分の節名

・段落名

・ENTRY文

(3)制御の合流の直前

・範囲句（END−動詞）

直後でブロックを区切る文または句

(1)制御を1方向に分岐させる文

・CALL文（条件指定がない文）

・PERFORM文（TIMES指定，UNTIL指定（VARYING指定のUNTILを含む）がない文）

・SORT文（INPUT PROCEDUREまたはOUTPUT PROCEDUREがある文）

・MERGE文（OUTPUT PROCEDUREがある文）

・INVOKE文（条件指定がない文）

・INITIALIZE文（関数一意名指定あり）

・INSPECT文（同上）

・MOVE文（同上）

・COMPUTE文（同上）

・STRING文（同上）

・UNSTRING文（同上）

(2)制御の終わり

・STOP文

・EXIT PROGRAM文

・GOBACK文

・EXIT METHOD文

・EXIT FUNCTION文

・EXIT文

・GO TO文（DEPENDING ON指定なし）

・EXIT PERFORM文

・EXIT USE文

・IF文，SERCH文のNEXT SENTENCE

・RESUME文

(3)制御の終わりになる可能性のある文

・OPEN文

・CLOSE文

・READ文（条件指定なし）

・DELETE文(条件指定なし)

・WRITE文（条件指定なし）

・REWRITE文（条件指定なし）

・START文（条件指定なし）

・SORT文（USINGまたはGIVING指定がある文）

・MERGE文（GIVING指定がある文）

・RAISE文

C0メジャーは，次の文を除く文を対象とします。

・原始文操作

　COPY文

　REPLACE文

　INCLUDE文

・宣言文

　USE文

・覚え書きの文（ENTER文，うちPERFORM文の外にあるEXIT PERFORM文）

C0メジャーは，次の文を対象とします。

・上記以外の文（データベースアクセス機能で用いる文，データコミュニケーション機能で用いる文，EXEC SQL文も含む）

・NEXT SENTENCE指定（IF文，SEARCH文）

C1メジャーの対象となる文は，次のとおりです。絶対に制御が渡らない分岐も対象にします。

文

分岐方向

備考

IF文

2

・THEN

・ELSE

EVALUATE文

WHENの数※1

・WHENへの分岐

・WHEN OTHER

GO TO文（DEPENDING ON指定つき）

手続き名の数＋1

・手続き名への分岐

・手続き名への分岐なし

PERFORM文（TIMES指定，UNTIL（VARYING指定のUNTILを含む）指定）

2

・ループする

・ループしない

SEARCH文

WHENの数＋1

・WHENへの分岐

・AT ENDへの分岐

条件指定のある文※2

2

・条件〜への分岐

・NOT条件〜への分岐

注※1

無条件文がないWHEN指定の直後にWHEN指定が続く場合，明示的または暗黙的無条件文があるWHEN指定までを1つの分岐方向と数えます。

（例）

  EVALUATE　AAA
  WHEN A DISPLAY A *> 分岐方向1
  WHEN B *>（無条件文なし）*> 分岐方向2
  WHEN C DISPLAY C
  WHEN D *>（無条件文なし）*> 分岐方向3
  WHEN E *>（無条件文なし）
  WHEN F DISPLAY F
  WHEN G DISPLAY G *> 分岐方向4
  WHEN OTHER DISPLAY O *> 分岐方向5

この例では，EVALUATE文はWHEN指定を7つと，WHEN OTHER指定を持ちます。しかし，無条件文を持たないWHEN指定は，後続の無条件文を持つWHEN指定と合わせて1つと数えるため，「WHEN B」「WHEN C」で分岐方向1つ，「WHEN D」「WHEN E」「WHEN F」で分岐方向1つとなり，WHENの数は合計8つありますが，分岐方向の合計は5つとなります。

注※2

条件指定のある文を次に示します。

条件指定

文

AT END ,NOT 〜

READ,RETURN

ON SIZE ERROR,NOT 〜

ADD,COMPUTE,DIVIDE,MULTIPLY,SUBTRACT

ON OVERFLOW ,NOT 〜

STRING,UNSTRING

ON EXCEPTION ,NOT 〜

CALL,ACCEPT

AT EOP ,NOT 〜

WRITE

INVALID KEY ,NOT 〜

DELETE,READ,REWRITE,START,WRITE

ON OVERFLOW

CALL

S1メジャーの対象となる呼び出し文は，次のとおりです。

・CALL文

・ファクトリおよびインスタンスオブジェクトのメソッド呼び起こしで指定したINVOKE文

GO TO文の直後などのように制御が渡らない文も対象にします。CALL文の条件指定の有無，呼び出し先プログラムの実行可，不可には依存しません。

6.2.2　カバレージ情報表示の手順

カバレージ情報を表示する手順を次に示します。

プログラムのコンパイル

-CVInfコンパイラオプションを指定して，原始プログラムをコンパイルします。

プログラムの実行

テストによるプログラムの実行を繰り返し行い，カバレージ情報を蓄積します。また，テストデバッガでも，カバレージの蓄積ができます。

カバレージ情報の表示

蓄積したカバレージ情報を表示します。カバレージ情報は，テキスト形式またはCSV形式のファイルへ出力できます。

テキスト形式の場合，カバレージ情報の表示には次の種類があります。

表6‒4　カバレージ情報の表示（テキスト形式）

表示の種別

内容

翻訳単位の一覧表示

指定した翻訳単位のC0メジャー，C1メジャーを一覧表示します。

まとめ表示

指定した翻訳単位のC0メジャー，C1メジャー，S1メジャーを表示します。

ソース表示※

原始プログラムを表示し，変更行，変更影響行，実行が済んだ実行文（C0メジャーの対象），実行が済んだ分岐先（C1メジャーの対象）に印を付けます。

差分ソース表示※

修正によって生じた原始プログラムの差分を表示し，差分に含まれる変更行，変更が影響する行，実行が済んだ実行文（差分C0メジャーの対象），実行が済んだ分岐先（差分C1メジャーの対象）に印を付けます。

未実行ソース表示※

原始プログラムの未実行の文を表示します。

差分未実行ソース表示※

修正による原始プログラムの差分に含まれる未実行の文を表示します。

呼び出し文ソース表示※

原始プログラムのS1カバレージの対象になる呼び出し文を表示します。

注※

これらの表示を指定すると，まとめ情報を同時に表示します。

CSV形式の場合，カバレージ情報の表示には次の種類があります。

表6‒5　カバレージ情報の表示（CSV形式）

表示の種別

内容

カバレージ統計情報

指定したソースファイル単位または翻訳単位のC0メジャー，C1メジャー，S1メジャーを出力します。

ソースカバレージ情報

原始プログラム，原始プログラムの変更による差分，C0メジャーおよびC1メジャーの実行が済んだ状態を出力します。また，差分ソース，未実行ソース，差分未実行ソース，または呼び出し文ソースのどれに該当する行であるかを識別できます。

カバレージ情報の操作

ファイルに蓄積したカバレージ情報に対して，次の操作ができます。

表6‒6　カバレージ情報の操作

操作の種別

内 容

カバレージ情報の0％化

実行が済んだ文をすべて未実行文に戻します。すべてのカバレージ情報が0%になります。

差分カバレージ情報の0％化

差分の実行が済んだ文をすべて未実行文に戻します。

差分カバレージ情報のクリア

修正による原始プログラムの差分を，差分とみなさないようにします。

カバレージ情報のマージ

別々の環境で蓄積した同一翻訳単位のカバレージ情報をマージします。

6.2.3　プログラムのコンパイル

カバレージ情報を蓄積するプログラムは，-CVInfコンパイラオプションを指定してコンパイルします。コンパイラオプションについては，「2.1.2　プログラムのコンパイル」を参照してください。

コンパイラは，プログラム情報ファイルの有無によって，次のとおりにプログラム情報ファイルを出力します。

表6‒7　コンパイラによるプログラム情報ファイルの生成

プログラム情報ファイルの有無

コンパイラが出力するプログラム情報ファイル

無し

プログラム情報ファイルを新たに作成します。

有り

原始プログラムの修正部分に対する「差分」情報をプログラム情報ファイルへ出力します。

6.2.4　カバレージ情報の蓄積

次のどちらかの方法で，プログラムを実行して，カバレージ情報を，プログラム情報ファイルへ蓄積します。

端末からcblcv2kコマンドを指定して，プログラムを実行する。

「プログラムからの連動実行」の設定を行い，プログラムを実行する。

また，次の方法で，テストデバッグによるプログラムの実行時にも，カバレージ情報が蓄積できます。

TDコマンドのプログラムの実行（GOコマンド）で，COVERAGEオペランドを指定する。

注意事項

マルチスレッドプログラムは，COBOLプログラムの全スレッドがカバレージ情報の蓄積の対象になります。

実行可能ファイル・共用ライブラリに含まれる翻訳単位とプログラム情報ファイルは，コンパイルによって同時に作成されていなければなりません（同一のコンパイル時間である必要があります）。

プログラムの実行が終了したときに，蓄積したカバレージ情報をプログラム情報ファイルへ保存します。プログラムが実行時エラーによって終了した場合も，終了までに蓄積したカバレージ情報を保存します。

カバレージの蓄積は，ブロックごとに蓄積します。カバレージのブロックは，順次実行される無条件文の集まりで，条件文の条件句の直前までが原則として一つのブロックとなります。ブロックの先頭の文を実行したときにブロック全体が実行されたと判断します。ブロック中の文で共通例外や実行時エラーが発生した場合も，そのブロックは実行されたと判断します。

6.2.5　カバレージ情報の表示（テキスト形式）

次の方法で，プログラム情報ファイルに蓄積されたカバレージ情報を，テキスト形式のカバレージ情報リストファイルへ出力できます。

端末からcblcl2kコマンドを実行する。

詳細は，「7.3　カバレージ情報の表示（テキスト形式）」を参照してください。

カバレージ情報の表示による出力リストの形式は次のとおりです。表示される順序は，選択されたプログラム情報ファイルの順に依存します。スタックコンパイルされている場合は，-Main,Systemコンパイラオプションを指定したプログラムを，そのプログラム情報ファイル単位内の先頭に表示します。

(1)　翻訳単位の一覧表示

指定された翻訳単位のC0メジャー，差分C0メジャー，C1メジャー，差分C1メジャーを一覧に表示します。

表6‒8　プログラムの一覧表示

項目

内容

翻訳単位

名称

翻訳単位の名称

9文字以上の名称は，アスタリスク（*）を表示し，＜名称＞のあとに表示する。

種別

翻訳単位の種別

P：プログラム

C：クラス

T：利用者定義関数

C0

対象総数

翻訳単位

実行文の数

実行済数

実行が済んだ実行文の数

C0

C0メジャー※

差分C0

対象総数

差分

実行文の数

実行済数

実行が済んだ実行文の数

差分C0

差分C0メジャー※

C1

対象総数

翻訳単位

実行できる分岐先の数

実行済数

実行が済んだ分岐先の数

C1

C1メジャー※

差分C1

対象総数

差分

実行できる分岐先の数

実行済数

実行が済んだ分岐先の数

差分C1

差分C1メジャー※

合計

C0

対象総数

一覧の全翻訳単位

実行文の数の合計

実行済数

実行が済んだ実行文の数の合計

C0

C0メジャー※

差分C0

対象総数

一覧の全翻訳単位の差分

実行文の数の合計

実行済数

実行が済んだ実行文の数の合計

差分C0

差分C0メジャー※

C1

対象総数

一覧の全翻訳単位

実行できる分岐先の数の合計

実行済数

実行が済んだ分岐先の数の合計

C1

C1メジャー※

差分C1

対象総数

一覧の全翻訳単位の差分

実行できる分岐先の数の合計

実行済数

実行が済んだ分岐先の数の合計

差分C1

差分C1メジャー※

注※　小数点第2位以下を切り捨てる。

(2)　まとめ情報の表示

指定した翻訳単位のC0メジャー，差分C0メジャー，C1メジャー，差分C1メジャー，S1メジャー，差分S1メジャーを表示します。

表6‒9　まとめ情報の表示の説明

項目

内容

翻訳単位名の種別

プログラム名・クラス名・利用者定義関数名

翻訳単位名

翻訳単位の名称

コンパイル日時

翻訳単位を含む原始プログラムをコンパイルした日時

テスト日時

翻訳単位を含む原始プログラムのカバレージ情報を最後に蓄積した日時

変更回数

翻訳単位を含む原始プログラムを変更した回数

テスト回数

翻訳単位を含む原始プログラムを実行した回数

32,766を超えた場合は*****

＜C0＞

対象総数

翻訳単位

実行文の数

実行済数

実行が済んだ実行文の数

未実行数

実行していない文の数

カバレージ率

C0メジャー※

＜差分C0＞

対象総数

差分

実行文の数

実行済数

実行が済んだ実行文の数

未実行数

実行していない実行文の数

カバレージ率

差分C0メジャー※

＜C1＞

対象総数

翻訳単位

実行できる分岐の数

実行済数

実行が済んだ分岐の数

未実行数

実行していない分岐の数

カバレージ率

C1メジャー※

＜差分C1＞

対象総数

差分

実行できる分岐の数

実行済数

実行が済んだ分岐の数

未実行数

実行していない分岐の数

カバレージ率

差分C1メジャー※

＜S1＞

対象総数

翻訳単位

実行できる呼び出し文の数

実行済数

実行が済んだ呼び出し文の数

未実行数

実行していない呼び出し文の数

カバレージ率

S1メジャー※

＜差分S1＞

対象総数

差分

実行できる呼び出し文の数

実行済数

実行が済んだ呼び出し文の数

未実行数

実行していない呼び出し文の数

カバレージ率

差分S1メジャー※

注※　小数点第2位以下を切り捨てる。

注意事項

C0メジャー，C1メジャー，差分C0メジャー，差分C1メジャー，S1メジャーおよび差分S1メジャーのそれぞれの対象総数が99,999,999を超えた場合，表示は「********」となります。

(3)　全ソース表示

原始プログラムを表示し，原始プログラムの変更による差分とC0・C1の実行済みの状態を表示します。

表6‒10　全ソース表示の説明

項目

内容

翻訳単位名の種別

プログラム名・クラス名・利用者定義関数名

翻訳単位名

翻訳単位の名称

コンパイル日時

翻訳単位を含む原始プログラムをコンパイルした日時

テスト日時

翻訳単位を含む原始プログラムのカバレージ情報を最後に蓄積した日時

変更回数

翻訳単位を含む原始プログラムを変更した回数

テスト回数

翻訳単位を含む原始プログラムを実行した回数

ソース要素名の種別

プログラム名・メソッド名・利用者定義関数名

ソース要素名

ソース要素の名称

変更

Y：原始プログラムの変更された行

#：原始プログラムの変更によって影響がある行

<C0>

*：実行が済んだ文

.：実行していない文

<C1>

@：実行が済んだ分岐

.：実行していない分岐

行番号

コンパイラが振り直した行番号

ソーステキスト

原始プログラムの行

まとめ情報の項目は，「(2)　まとめ情報の表示」を参照してください。

注意事項

C1に該当する明示的な文がないときは，空白行を表示してC1の情報を表示します。

（例1）ELSEがないIF文

ELSEがないIF文は，IF文の下に空白行を示します。IF文がネストするときは，最外のIF文の下にC1に該当する空白行を示します。

(a)は111200行のIF文の「省略されたELSE」のC1を示します。

(b)は111000行のIF文の「省略されたELSE」のC1を示します。

（例2）うちPERFORM文

UNTIL指定のある「うちPERFORM文」には「ループする」と「ループしない」の2方向の分岐があり，両方のC1を表示します。

(a)は0112000行のPERFORM文の「ループする」ときの分岐先のC1の行です。

(b)は0112000行のPERFORM文の「ループしない」ときの分岐先のC1を空白行で示します。

（例3）そとPERFORM文

UNTIL指定のある「そとPERFORM文」は「ループしない」ときのC1をPERFORM文の下に表示します（「ループする」の分岐先のC1はPERFORM文で実行される文に表示します）。

(a)は0113000行のPERFORM文の「ループしない」ときの分岐先のC1を示します。

(4)　差分ソース表示

原始プログラムの修正によって生じた差分の実行文に対して，変更行，変更影響行，C0実行済み，C1実行済みを明示します。

各項目の内容については，「(3)　全ソース表示」を参照してください。

(5)　未実行表示

原始プログラムの実行していない文を表示します。

各項目の内容については，「(3)　全ソース表示」を参照してください。

(6)　差分未実行ソース表示

原始プログラムの差分未実行ソースを表示します。

各項目の内容については，「(3)　全ソース表示」を参照してください。

(7)　呼び出し文ソース表示

原始プログラムのS1カバレージ対象の呼び出し文を表示します。

各項目の内容については，「(3)　全ソース表示」を参照してください。

6.2.6　カバレージ情報の表示（CSV形式）

次の方法で，プログラム情報ファイルに蓄積されたカバレージ情報を，カバレージ統計情報CSVファイル，およびソースカバレージ情報CSVファイルへ出力できます。

端末からcblcc2kコマンドを実行する。

詳細は，「7.4　カバレージ情報の表示（CSV形式）」を参照してください。

カバレージ情報の表示による出力ファイル（CSV）の形式は次のとおりです。

注意事項

項目および出力内容は，ダブルコーテーション（"）で囲んでCSVファイルに出力します。出力内容にダブルコーテーション（"）を含む場合は2個続けて（""）出力します。出力内容が何もない場合は，ダブルコーテーション（"）も出力しません。

（例）

出力内容が「XXX"YYY」の場合，CSVファイルには「"XXX""YYY"」と出力します。

(1)　カバレージ統計情報の出力

指定されたソースファイル単位または翻訳単位のC0メジャー，C1メジャー，S1メジャーをカバレージ統計情報CSVファイルに出力します。

注※

3行目は空白行が出力されます。

表6‒11　カバレージ統計情報CSVファイルの出力内容

項目

出力内容

ヘッダ

バージョン

COBOL2002のバージョン情報

「COBOL2002 (c) VV-RR」の形式で出力する。

COBOL2002：COBOL2002であることの記述

(c)：COBOL2002の識別記号

COBOL2002の識別記号については「付録E.2　このマニュアルでの表記」を参照

VV-RR：COBOL2002のバージョン番号

出力日時

カバレージ統計情報CSVファイルに出力した日時

カバレージ統計情報

プログラム情報ファイル格納先

プログラム情報ファイルが格納されている場所の絶対パス

プログラム情報ファイル名

プログラム情報ファイル名

ソースカバレージ情報CSV

同時に出力するソースカバレージ情報CSVファイルのうち，該当する行のプログラム情報ファイルに対応するソースカバレージ情報CSVファイルの絶対パス

ソースカバレージ情報CSVファイルを出力しない場合は-（ハイフン）

翻訳単位名

ソースファイル単位の場合

-（ハイフン）

翻訳単位の場合

翻訳単位の名称

コンパイル日時

翻訳単位を含む原始プログラムをコンパイルした日時

テスト日時

ソースファイル単位の場合

-（ハイフン）

翻訳単位の場合

翻訳単位を含む原始プログラムのカバレージ情報を最後に蓄積した日時

カバレージ情報を蓄積していない場合は-（ハイフン）

変更回数

ソースファイル単位の場合

-（ハイフン）

翻訳単位の場合

翻訳単位を含む原始プログラムを変更した回数

32,767を超えた場合は*

テスト回数

ソースファイル単位の場合

-（ハイフン）

翻訳単位の場合

翻訳単位を含む原始プログラムを実行した回数

32,766を超えた場合は*

種別

ソースファイル単位の場合

-（ハイフン）

翻訳単位の場合

翻訳単位の種別

P：プログラム

C：クラス

T：利用者定義関数

C0対象総数

実行文の数

C0実行済数

実行が済んだ実行文の数

C0カバレージ率

C0メジャー※

C0対象総数が0の場合は-（ハイフン）

差分C0対象総数

差分に含まれる実行文の数

差分C0実行済数

差分に含まれる実行が済んだ実行文の数

差分C0カバレージ率

差分C0メジャー※

差分C0対象総数が0の場合は-（ハイフン）

C1対象総数

実行できる分岐の数

C1実行済数

実行が済んだ分岐の数

C1カバレージ率

C1メジャー※

C1対象総数が0の場合は-（ハイフン）

差分C1対象総数

差分に含まれる実行できる分岐の数

差分C1実行済数

差分に含まれる実行が済んだ分岐の数

差分C1カバレージ率

差分C1メジャー※

差分C1対象総数が0の場合は-（ハイフン）

S1対象総数

実行できる呼び出し文の数

S1実行済数

実行が済んだ呼び出し文の数

S1カバレージ率

S1メジャー※

S1対象総数が0の場合は-（ハイフン）

差分S1対象総数

差分に含まれる実行できる呼び出し文の数

差分S1実行済数

差分に含まれる実行が済んだ呼び出し文の数

差分S1カバレージ率

差分S1メジャー※

差分S1対象総数が0の場合は-（ハイフン）

注※

小数点第2位以下を切り捨てます。

注意事項

C0メジャー，C1メジャー，差分C0メジャー，差分C1メジャー，S1メジャーおよび差分S1メジャーのそれぞれの対象総数，または実行済数が99,999,999を超えた場合，出力内容は「*」となります。

プログラム情報ファイルを指定した場合，カバレージ統計情報CSVファイルには，指定されたプログラム情報ファイルの順に出力します。プログラム情報ファイルに複数の翻訳単位があるときは，COBOLソースファイルに記述された順に出力します。

プログラム情報ファイル格納ディレクトリパスを指定した場合，カバレージ統計情報CSVファイルには，次の順序で出力します。

・同一ディレクトリ内のプログラム情報ファイルおよびサブディレクトリは，ファイル名およびディレクトリ名の文字コードの昇順で出力します。

・同一ディレクトリにプログラム情報ファイルとサブディレクトリが混在する場合，ディレクトリ直下にあるプログラム情報ファイルを先に出力します。

・サブディレクトリ下にあるプログラム情報ファイルは，上位ディレクトリから順に出力します。

・プログラム情報ファイルに複数の翻訳単位がある場合は，COBOLソースファイルに記述された順に出力します。

翻訳単位のカバレージ統計情報とソースファイル単位のカバレージ統計情報を同時に出力する場合，同一ソースファイルに対するカバレージ統計情報は，翻訳単位のカバレージ統計情報のあとにソースファイル単位のカバレージ統計情報を出力します。

(2)　ソースカバレージ情報の出力

原始プログラム，原始プログラムの変更による差分，C0とC1の実行済みの状態をソースカバレージ情報CSVファイルに出力します。また，差分ソース，未実行ソース，差分未実行ソースまたは呼び出し文ソースのどれかに該当する行を識別します。

注※

3行目は空白行が出力されます。

表6‒12　ソースカバレージ情報CSVファイルの各項目の出力内容

項目

出力内容

ヘッダ

バージョン

COBOL2002のバージョン情報

「COBOL2002 (c) VV-RR」の形式で出力する。

COBOL2002：COBOL2002であることの記述

(c)：COBOL2002の識別記号

COBOL2002の識別記号については「付録E.2　このマニュアルでの表記」を参照

VV-RR：COBOL2002のバージョン番号

出力日時

ソースカバレージ情報CSVファイルに出力した日時

コンパイル日時

翻訳単位を含む原始プログラムをコンパイルした日時

プログラム情報ファイル格納先

プログラム情報ファイルが格納されている場所の絶対パス

プログラム情報ファイル名

プログラム情報ファイル名

ソースカバレージ情報

翻訳単位名

翻訳単位の名称

ソース要素種別

ソース要素の種別

PPROG：いちばん外側のプログラム

IPROG：入れ子プログラム

METHOD：ファクトリメソッドまたはオブジェクトメソッド

FUNC：利用者定義関数名

ソース要素名

ソース要素の名称

未実行ソース

UNEX：原始プログラムの実行していない文の行

該当しない場合は何も出力されない

差分ソース

DIFF：原始プログラムの修正によって生じた差分の行

該当しない場合は何も出力されない

差分未実行ソース

UNEXDIFF：原始プログラムの修正によって生じた差分に含まれる，実行していない文の行

該当しない場合は何も出力されない

呼び出し文ソース

ACT：原始プログラムのS1カバレージ対象の呼び出し文の行

該当しない場合は何も出力されない

コメント行

COMMENT：コメント行（注記行）

該当しない場合は何も出力されない

変更

Y：原始プログラムの変更された行

#：原始プログラムの変更によって影響がある行

C0

*：実行が済んだ文

.：実行していない文

C1

@：実行が済んだ分岐

.：実行していない分岐

行番号

コンパイラが振り直した行番号

ソーステキスト

原始プログラムの行

注意事項

原始プログラムの1行に複数の実行可能文が含まれる場合，C0，C1には，実行済みかどうかを示す記号を実行可能文の個数分出力します。

原始プログラムの末尾の半角空白文字は，ソーステキストとして出力しません。

IF文のELSE側を省略した場合など，暗黙的に生成されるC1メジャーの対象となるときは，行番号は空になります。行番号が空になる行の条件は，「6.2.5　カバレージ情報の表示（テキスト形式）」の「(3)　全ソース表示」を参照してください。

6.2.7　カバレージ情報の操作

次の方法で，プログラム情報ファイルのカバレージ情報を操作できます。

端末からcblca2kコマンドを実行する。

カバレージ情報の操作には次の機能があります。

詳細は，「7.5　カバレージ情報の操作」を参照してください。

(1)　カバレージ情報の0％化

実行が済んだ文を未実行文に戻します。再度のテストが必要な場合，蓄積したカバレージ情報を0％に戻すときに使用できます。

次のカバレージ情報が0％になります。

C0メジャー

差分C0メジャー

C1メジャー

差分C1メジャー

S1メジャー

差分S1メジャー

(2)　差分カバレージ情報の0％化

差分に含まれる実行が済んだ文をすべて未実行文に戻します。次のカバレージ情報が0％になります。

差分C0メジャー

差分C1メジャー

差分S1メジャー

(3)　差分カバレージ情報のクリア

差分の対象となる文を差分とみなさないようにします。次の情報が0になります。

差分の実行文の数

差分の実行できる分岐の数

差分の実行できる呼び出し文の数

(4)　カバレージ情報のマージ

複数のプログラム情報ファイルのカバレージ情報を，一つのプログラム情報ファイルへマージします。実行環境をコピーして複数のテスト環境を作成して別々に蓄積したカバレージ情報を，一つのプログラム情報ファイルにマージするときに使用できます。マージするプログラム情報ファイルのコンパイル時間は，すべて同じである必要があります。

注意事項

カバレージ情報の操作は，プログラム情報ファイルの単位で行います。プログラム情報ファイルに複数の翻訳単位がある場合は，すべてを対象にします。

6.3　カウント情報の表示

この節では，カウント情報の表示について説明します。

6.3.1　カウント情報

プログラムを実行させたときの各文の実行回数です。

実行回数は，ブロックごとにカウントします。カバレージのブロックは，順次実行される無条件文の集まりで，条件文の条件句の直前までが原則として一つのブロックとなります。ブロックの先頭の文を実行したときにブロック全体が実行されたと判断します。ブロック中の文で実行時エラーが発生した場合も，そのブロックは実行されたとします。

6.3.2　カウント情報表示の手順

カウント情報を表示する手順を次に示します。

プログラムのコンパイル

カウント情報を表示するプログラムは，-CVInfコンパイラオプションを指定してコンパイルします。コンパイラオプションについては，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

プログラムのコンパイル

カウント情報を表示するプログラムは，-CVInfコンパイラオプションを指定してコンパイルします。コンパイラオプションについては，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

プログラムの実行

次の方法でプログラムを実行することによって，カウント情報をテキスト形式のカウント情報リストファイルへ出力します。

端末からcblcn2kコマンドを実行する。

「プログラムからの連動実行」の設定を行い，プログラムを実行する。

注意事項

マルチスレッドプログラムは，COBOLプログラムの全スレッドがカウント情報表示の対象になります。

実行可能ファイル・共用ライブラリに含まれる翻訳単位とプログラム情報ファイルは，コンパイルによって同時に作成されていなければなりません（同一のコンパイル時間である必要があります）。

プログラムの実行が終了したとき，カウントした実行回数を表示します。プログラムが実行時エラーによって終了した場合も，終了までにカウントした実行回数を表示します。

6.3.3　カウント情報の表示

カウント情報の表示によって，ファイルへ出力される出力リストを説明します。

表示される順序は，実行可能ファイル，共用ライブラリファイル（共用ライブラリファイル名でソート）の順です。実行可能ファイル，共用ライブラリファイル内の翻訳単位はソートされて表示されます。ただし，-Mainコンパイラオプションで指定した翻訳単位は，最初に表示されます。翻訳単位内の表示順は，プログラムに書かれている順です。

AIXの場合

共用ライブラリファイルがアーカイブファイルの場合，メンバ名でソートされます。

詳細は，「7.6　カウント情報の表示」を参照してください。

表6‒13　カウント情報の表示

項目

備考

翻訳単位名の種別

プログラム名・クラス名・利用者定義関数名

翻訳単位名

翻訳単位の名称

コンパイル日時

翻訳単位を含む原始プログラムをコンパイルした日時

実行日時

翻訳単位を含むプログラムを実行した日時

ソース要素名の種別

プログラム名・メソッド名・利用者定義関数名

ソース要素名

ソース要素の名称

行番号

コンパイラが振り直した行番号

実行回数

文のブロックが実行された回数。0〜2,147,483,647の範囲で表示する2,147,483,647を超えた場合は，実行回数に代えて"**********"を表示します。

ソーステキスト

原始プログラムの行

6.4　その他の機能

6.4.1　マルチスレッド対応COBOLプログラムのカバレージ

マルチスレッドのプログラムのための注意事項を記述します。

注意事項

AIXの場合，マルチスレッドプログラムをカバレージ対象とする場合は，各ユーザスレッドが一つのカーネルスレッドにマップされる1：1モデルで動作する必要があります。1：1モデル以外で動作した場合，カバレージの動作は保証しません。1：1モデルの設定は，環境変数AIXTHREAD_SCOPEにSを設定することで行えます。

設定例

　　　AIXTHREAD_SCOPE=S
　　　export AIXTHREAD_SCOPE

6.4.2　共用ライブラリ

(1)　コンパイルと実行

カバレージ情報の蓄積・カウント情報の表示で共用ライブラリを使用するとき，-PIC,Std，および-CVInfコンパイラオプションを指定してプログラムをコンパイルします。コンパイラオプションについては，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

共用ライブラリファイルは，cbltd2kコマンドや，cbltl2kコマンドの-Libraryオプションで，パスプレフィクスが付いていないファイル名を指定した場合，環境変数の指定有無によって検索順序が決まります。

-Libraryオプションで指定された共用ライブラリが，環境変数CBLLSLIB，CBLLPATH，またはLD_LIBRARY_PATH（Linuxの場合）に設定したパスで見つかり，そのパスがロードされた共用ライブラリのパスと一致する場合は，ローディングされた共用ライブラリをカバレージ情報の蓄積・カウント情報の表示の対象とし，KCCC1203T-Iメッセージを出力します。

「KCCC1203T-I ユーザプログラムのライブラリファイルがロードされました。ファイル（*** 1 ***）」

検索した結果，共用ライブラリが見つかってもパスが一致しない場合は，カバレージ情報の蓄積・カウント情報の表示の対象としないで，KCCC1203T-Iメッセージも出力しません。

検索した結果，共用ライブラリが見つからない場合は，KCCC4207T-Eのエラーメッセージを出力し，カバレージ情報の蓄積・カウント情報の表示の対象となりません。

「KCCC4207T-E　ユーザプログラムの実行可能ファイル又はライブラリファイルが存在しません。ファイル（*** 1 ***）」

OSごとに，環境変数の指定有無による検索順序を説明します。

AIXの場合

環境変数CBLLSLIBの指定がある場合

cblcv2kコマンドやcblcn2kコマンドの-Libraryオプションで指定したファイル名と同一名称のファイル名が，パスプレフィクス付きで環境変数CBLLSLIBに指定されていれば，そのパスだけが検索されます。同一名称のファイル名が指定されていない，またはパスプレフィクスなしで指定されているときは，次の項目のとおりに検索します。

環境変数CBLLPATHの指定がある場合

指定されているパス，カレントディレクトリの順序で検索します。

環境変数が何も指定されていない場合

カレントディレクトリを検索します。

Linuxの場合

環境変数CBLLSLIBの指定がある場合

環境変数CBLLSLIBにパスプレフィクス付きのファイル名の指定があり，cblcv2kコマンドやcblcn2kコマンドの-Libraryオプションのファイル名と一致するとき

環境変数CBLLSLIBに指定されているパスだけ検索します。

環境変数CBLLSLIBにパスプレフィクスなしのファイル名の指定だけがあるとき

環境変数CBLLSLIBに指定されているファイルを，環境変数CBLLPATHまたは環境変数LD_LIBRARY_PATHに指定されているパスから検索します。

環境変数CBLLPATHの指定がある場合

環境変数CBLLSLIBに指定されているファイルを，環境変数CBLLPATHに指定されているパスから検索します。カレントディレクトリを検索対象とするときは，パスにカレントディレクトリを追加する必要があります。

環境変数LD_LIBRARY_PATHの指定がある場合

環境変数CBLLSLIBに指定されているファイルを，環境変数LD_LIBRARY_PATHに指定されているパスから検索します。カレントディレクトリを検索対象とするときは，パスにカレントディレクトリを追加する必要があります。

なお，環境変数CBLLPATHと同時に指定されているときは，環境変数CBLLPATHに指定されているパスを検索したあと，環境変数LD_LIBRARY_PATHに指定されているパスを検索します。

検索についての注意事項（AIXの場合）

環境変数LIBPATHに指定されているパスは検索されません。この環境変数で共用ライブラリの検索パスを指定している場合は，-Libraryオプションにパスプレフィクスを付けて指定する必要があります。

注意事項

AIXの場合の注意事項を次に示します。

arコマンドでアーカイブファイルとして作成した共用ライブラリ中に，同じ名称のメンバ（共用オブジェクト）が複数あるときは，先に配置されているメンバ（共用オブジェクト）をカバレージ対象とします。

-Lおよび-lオプションを指定して共用ライブラリをリンケージしたプログラムを実行し，-DynamicLink,Callまたは-DynamicLink,IdentCallコンパイラオプションを指定して再びリンケージした場合，この共用ライブラリをカバレージ情報の蓄積，カウント情報の表示の対象とできない場合があります。その場合は，次のどちらかの指定をします。

・共用ライブラリの検索ディレクトリ指定の，-Lオプションと同じディレクトリを，環境変数CBLLPATHに指定。

・-Lオプションと同じディレクトリを指定した共用ライブラリファイルを，環境変数CBLLSLIBに指定。

アーカイブファイルの中に含まれるアーカイブファイルは，カバレージ情報の蓄積，カウント情報の表示の対象になりません。

環境変数CBLLTAGによる検索動作の指定は，デバッガでは有効になりません。

遅延ロードされる共用ライブラリはカバレージ情報の蓄積，およびカウント情報の表示の対象となりません。遅延ロードについては，システムのマニュアルを参照してください。

ldコマンドの-sオプションやstripコマンドなどで共用ライブラリのシンボル情報を削除した場合，その共用ライブラリは，カバレージ情報の蓄積，カウント情報の表示の対象になりません。

なお，Linuxでは，cblcv2kコマンドやcblcn2kコマンドの-Executeオプションに指定する実行可能ファイルは，カバレージ情報の蓄積，カウント情報の表示の対象にしない場合でもシンボル情報が必要です。

使用例1

ccbl2002コマンドに-Lおよび-lオプションを使用して実行可能ファイルを作成します。

sub1.cblをコンパイルする。

AIXの場合

ccbl2002 -PIC,Std -CVInf sub1.cbl

Linuxの場合

ccbl2002 -PIC,Std -CVInf -UniObjGen sub1.cbl

共用ライブラリを作成する。

AIX(32)の場合

ld -o libsub1.a sub1.o -bpT:0x10000000 -bpD:0x20000000 -bnoentry -bM:SRE -bexpall
-L/opt/HILNGcbl2k/lib -lcbl2k -lcbl2kml -lm -lc

AIX(64)の場合

ld -o libsub1.a sub1.o -b64 -bpT:0x100000000 -bpD:0x110000000 -bnoentry -bM:SRE -bexpall
-L/opt/HILNGcbl2k64/lib -lcbl2k64 -lcbl2kml64 -lm -lc

Linux(x86)の場合

ld -shared -o libsub1.so sub1.o -Bstatic -L/opt/HILNGcbl2k/lib -lcbl2kml -Bdynamic -lc

Linux(x64)の場合

ld -shared -o libsub1.so sub1.o -Bstatic -L/opt/HILNGcbl2k64/lib -lcbl2kml -Bdynamic -lc

-Lおよび-lオプションで共用ライブラリを指定して，実行可能ファイルを作成する。-Lおよび-lオプションについては，システムの規則に従ってください。

AIXの場合

ccbl2002 -CVInf main1.cbl -L ./ -lsub1 -OutputFile a.out

Linuxの場合

ccbl2002 -CVInf -UniObjGen main1.cbl -L ./ -lsub1 -OutputFile a.out

-Libraryオプションを指定してカバレージ情報を蓄積する。

AIXの場合

cblcv2k -Library libsub1.a -Execute a.out

Linuxの場合

cblcv2k -Library libsub1.so -Execute a.out

使用例2

ccbl2002コマンドの-DynamicLink,Callコンパイラオプションを使用して実行可能ファイルを作成します。

使用例1の1.および2.と同様の手順で，sub1.cblに-CVInfコンパイラオプションを指定してコンパイルし，共用ライブラリを作成する。

-DynamicLink,Callコンパイラオプションを指定して実行可能ファイルを作成する。

AIXの場合

ccbl2002 -DynamicLink,Call -CVInf main1.cbl -OutputFile a.out

Linuxの場合

ccbl2002 -DynamicLink,Call -CVInf -UniObjGen main1.cbl -OutputFile a.out

使用例1の4.と同様の手順で，-Libraryオプションを指定してカバレージ情報を蓄積する。

使用例3

ccbl2002コマンドの-DynamicLink,IdentCallコンパイラオプションを使用して実行可能ファイルを作成します。

使用例1の1.および2.と同様の手順で，sub1.cblに-PIC,Std，および-CVInfコンパイラオプションを指定してコンパイルし，共用ライブラリを作成する。

-DynamicLink,IdentCallコンパイラオプションを指定して実行可能ファイルを作成する。

AIXの場合

ccbl2002 -DynamicLink,IdentCall -CVInf main1.cbl -OutputFile a.out

Linuxの場合

ccbl2002 -DynamicLink,IdentCall -CVInf -UniObjGen main1.cbl -OutputFile a.out

使用例1の4.と同様の手順で，-Libraryオプションを指定してカバレージ情報を蓄積する。

(2)　-TDInfおよび-CVInfコンパイラオプションがないCOBOLプログラム，またはCOBOLプログラム以外から共用ライブラリを呼ぶ場合

-CVInfコンパイラオプションを指定したCOBOLプログラムが含まれる共用ライブラリを，次のどちらかのプログラムで呼び出すときに，カバレージ情報の蓄積，カウント情報の表示ができない場合があります。

このような場合にカバレージ情報の蓄積，カウント情報の表示ができる環境変数CBLTDEXTARGETについて説明します。

-TDInfおよび-CVInfコンパイラオプションの指定がないCOBOLプログラム

COBOLプログラムを含まない実行可能ファイル

環境変数

CBLTDEXTARGET

形式

CBLTDEXTARGET=YES
export CBLTDEXTARGET

機能

-CVInfコンパイラオプションを指定したCOBOLプログラムが含まれる共用ライブラリを，次のどちらかのプログラムを呼ぶ場合に，カバレージ情報の蓄積，カウント情報の表示ができます。

-TDInfおよび-CVInfコンパイラオプションの指定がないCOBOLプログラム

COBOLプログラムを含まない実行可能ファイル

注意事項

環境変数CBLTDEXTARGETは，カバレージ情報の蓄積，カウント情報の表示を使用するときに有効になります。運用環境では指定しないでください。

環境変数CBLTDEXTARGETを指定したときは，テスト対象のプロセスの情報を収集する回数が増加するため，処理速度が低下することがあります。カバレージ情報の蓄積，カウント情報の表示を終了した部分は，-CVInfコンパイラオプションを外して再コンパイル後に，カバレージ情報の蓄積，カウント情報の表示を実行してください。

次のディレクトリに格納した共用ライブラリは，カバレージ情報の蓄積，カウント情報の表示を対象にできません。

AIX(32)およびLinux(x86)の場合

/usr/lib，/lib

/opt/HILNGcbl2k/lib

AIX(64)の場合

/usr/lib，/lib

/opt/HILNGcbl2k64/lib

Linux(x64)の場合

/usr/lib64，/lib64

/opt/HILNGcbl2k64/lib

環境変数CBLTDEXTARGETの値にYES以外を指定した場合，環境変数CBLTDEXTARGETの指定は無効となります。

カバレージ情報の蓄積，カウント情報の表示を実行する前に，環境変数CBLTDEXTARGETを設定する必要があります。プログラムの連動実行をするときは，プログラムを実行する前に環境変数CBLTDEXTARGETを設定する必要があります。

7　カバレージ

カバレージの方法について説明します。

カバレージは，テスト工程の管理作業をサポートします。カバレージには，テストの進捗状況を定量的に表すカバレージ情報，文の実行回数をカウントするカウント情報の表示機能があります。

一括してカバレージを実行させることができます。

7.1　概要

端末から入力するコマンドの指示によって，カバレージの機能を操作できます。プログラムからカバレージを連動実行させ，一括してカバレージの蓄積およびカウント情報の表示をすることもできます。一度実行を開始すれば，利用者の操作を必要としないので，効率良く大量のプログラムのカバレージが実行できます。

7.2　カバレージ情報の蓄積

この節では，カバレージ情報を蓄積する方法について説明します。

7.2.1　コマンドによる方法

端末からコマンドを入力して，カバレージ情報を蓄積します。

カバレージ情報については，「6.2.1　カバレージ情報」を参照してください。

(1)　カバレージ情報の蓄積の手順

バッチモードでカバレージ情報を蓄積するときの作業の流れを説明します。

コンパイル時にはコンパイラオプションを指定する。

-CVInfコンパイラオプションを必ず指定してください。

カバレージ情報の蓄積およびカバレージ情報の蓄積対象プログラムの実行に必要な環境変数を設定する。

プログラムの実行に必要な環境変数と，カバレージに必要な環境変数を指定します。カバレージに必要な環境変数については，「(3)　環境変数の指定」を参照してください。プログラムの実行に必要な環境変数については，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

cblcv2kコマンドを指定して，実行する。

cblcv2kコマンドについては，「(2)　cblcv2kコマンド」を参照してください。

実行結果を端末に出力されるメッセージで確認する。カバレージ情報の蓄積結果は，カバレージ情報の表示機能を用いて確認する。

カバレージ情報の表示機能については，「6.2　カバレージ情報の表示と操作」を参照してください。

(2)　cblcv2kコマンド

cblcv2kコマンドの形式を次に示します。

形式1

形式2

-NoSave

プログラム情報ファイルへ書き込みをする前にバックアップをしません。

-Library

カバレージ情報を蓄積するプログラムがある共用ライブラリ名を指定します。

-Execute

カバレージ情報を蓄積するプログラムがある実行可能ファイル名を指定します。

プログラムへ渡す引数

カバレージ情報を蓄積するプログラムへ渡す引数を指定します。

-Help

cblcv2kコマンドの構文を表示します。-Helpオプションを指定すると，ほかの引数はすべて無視されます。

注意事項

-NoSaveオプションの指定がないときは，プログラム情報ファイルへ書き込みを行う前にバックアップのファイルを生成します。バックアップのファイルは，プログラム情報ファイルへの書き込みでエラーが発生したときに残り，正常に終了したときは残りません。バックアップのファイル名は，システムが生成する，ほかに合致しない名称のファイルであり，カレントディレクトリに生成します。

-Libraryオプションは，複数のファイル名を指定できます。

-Executeオプションは，必ず最後に指定します。-Executeオプション以外のオプションの指定順序は任意です。

実行可能ファイル名のあとにある文字列は，すべてプログラムへ渡す引数とみなします。

起動後のカレントディレクトリは，cblcv2kコマンドを実行したディレクトリです。

cblcv2kコマンドのメッセージは標準エラー出力へ出力します。

cblcv2kコマンド名は，英小文字で指定します。

cblcv2kコマンド名だけを指定した場合は，cblcv2kコマンドの構文を表示します。

オプションは，英大文字，英小文字のどちらでも指定できます。オプションの始まりは，ハイフン（-）とします。

オプションの区切り記号は空白文字およびタブです。空白文字およびタブを区切り記号としたくないときは，オプションをダブルコーテーション（"）で囲みます。

同じオプションを複数指定した場合は，最後に指定したオプションを有効とします。

オプションにパスの付かないファイル名を指定したときは，カレントディレクトリのファイルとします。相対パスの付いたファイル名を指定したときは，カレントディレクトリを起点とする相対パスのディレクトリにあるファイルとします。

オプションに複数のファイル名を指定するときは，コンマ（,）または空白で区切ります。また，アスタリスク（*）をファイル名の一部に指定することによって，（*）以外の文字が一致するすべてのファイルを指定できます。

cblcv2kコマンドが返す終了コードは，次のとおりです。

終了コード

内容

0

正常終了

1

エラー発生による終了

2

キー操作による割り込みによる終了

-Helpオプションによるコマンドの構文は，標準出力へ出力します。それ以外のメッセージは，標準エラー出力へ出力します。

次に示すどれかに該当する場合，単独で実行したユーザプログラムが異常終了すると，「セグメンテーション違反です」などのメッセージがシステムから表示されます。カバレージからユーザプログラムを起動すると，システムからのこのメッセージは表示されません。

・実行時環境変数CBLEXCEPTにNOSIGNALを指定した場合

・次に示すコンパイラオプションのどれか一つも指定しないでコンパイルしたプログラムの場合

　-DebugInf，-DebugInf,Trace，-DebugCompati，-DebugData，-TDInf，-CVInf，-DebugRangeコンパイラオプション

・COBOLが例外（スタックオーバーフローなど）を検出できない場合

(3)　環境変数の指定

カバレージ情報の蓄積に必要な環境変数を指定します。

表7‒1　環境変数一覧（カバレージ情報の蓄積）

環境変数名

概要

CBLPIDIR

プログラム情報ファイルがあるディレクトリ名を指定する。

CBLLSLIB

共用ライブラリファイルのファイル名を指定する。

CBLLPATH

共用ライブラリファイルがあるディレクトリ名を指定する。

LD_LIBRARY_PATH※

共用ライブラリファイルがあるディレクトリ名を指定する。

注※

Linuxで有効

プログラムの実行に関するその他の環境変数は，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

注意事項

カバレージ情報の蓄積のプログラム情報ファイルを次に示す検索順序で検索します。検索した結果，見つからないときは，プログラム情報ファイルに該当するプログラムはカバレージ情報の蓄積およびカウント情報表示の対象となりません。

検索順序

(1)環境変数CBLPIDIRで指定したディレクトリ

(2)実行可能ファイルに含まれるプログラムは，実行可能ファイルのあるディレクトリ

　共用ライブラリファイルに含まれるプログラムは，共用ライブラリファイルのあるディレクトリ

(3)カレントディレクトリ

プログラムが-CVInfコンパイラオプションでコンパイルされていない場合，カバレージ情報の蓄積の対象となりません。

カバレージ情報の蓄積の対象となるプログラム情報ファイルが一つもない場合は，カバレージ情報の蓄積のためのプログラムを実行しません。

環境変数CBLLSLIB，環境変数CBLLPATH，および環境変数LD_LIBRARY_PATHについては，「6.4.2　共用ライブラリ」を参照してください。

7.2.2　プログラムからの連動実行による方法

カバレージ情報の蓄積対象プログラムからコマンドを実行し，カバレージ情報を蓄積する方法です。

(1)　カバレージ情報の蓄積の手順

連動実行でカバレージ情報を蓄積するときの作業の流れを説明します。

コンパイル時にはコンパイラオプションを指定する。

-CVInfコンパイラオプションを必ず指定してください。

連動実行のための環境変数を指定する。

環境変数CBLTDEXECを指定します。形式は次のとおりです。

形式

各オプションの詳細および注意事項については，「(2)　環境変数の指定」を参照してください。

カバレージ情報の蓄積または，カバレージ情報の蓄積対象プログラムの実行に必要な環境変数を設定する。

環境変数は，「6.1.1　カバレージ機能の入出力構成と使用するファイル」の「(3)　使用する環境変数の指定」を参照してください。プログラムの実行に必要な環境変数については，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

カバレージ情報の蓄積対象の実行可能ファイルを実行する。

カバレージ情報が蓄積されます。

実行結果を実行結果出力ファイルによって確認する。カバレージ情報の蓄積結果は，カバレージ情報の表示機能を用いて確認する。

カバレージ情報の表示機能については，「7.3　カバレージ情報の表示（テキスト形式）」を参照してください。実行結果出力ファイルについては「6.1.1　カバレージ機能の入出力構成と使用するファイル」の「(2)　使用するファイル」および「(3)　実行結果出力ファイルにメッセージを出力できないときの処理」を参照してください。

(2)　環境変数の指定

連動実行するための環境変数は，次のとおりです。その他の環境変数は，「7.2.1　コマンドによる方法」の「(3)　環境変数の指定」を参照してください。

形式

-OutFile

カバレージ情報の蓄積の実行結果およびトラブルシュート情報※を出力するファイル名を指定します。ファイル名の拡張子は，「.cvo」でなければなりません。-OutFileオプション省略時は，実行可能ファイル名に拡張子「.cvo」を付加した名前のファイルを，カレントディレクトリに出力します。

注※

当社保守員が調査するときに使用する情報です。共用ライブラリのカバレージ情報が蓄積されないなど，連動実行が動作しない場合には，当社保守員に連絡してください。

-Add

実行結果出力ファイルに追加書きで結果を出力します。省略すると，同名の実行結果出力ファイルが存在した場合に，上書きされます。

-NoSave

プログラム情報ファイルへ書き込みをする前にバックアップをしません。

-Library

カバレージ情報の蓄積の対象とする共用ライブラリ名を指定します。

-Execute

カバレージ情報の蓄積の対象とするプログラムを起動するための実行可能ファイル名を指定します。

注意事項

AIX(32)の場合

環境変数PATHに，/opt/HILNGcbl2k/bin:/usr/binを含めて指定する必要があります。

Linux(x86)の場合

環境変数PATHに，/opt/HILNGcbl2k/bin:/usr/bin:/binを含めて指定する必要があります。

AIX(64)の場合

環境変数PATHに，/opt/HILNGcbl2k64/bin:/usr/binを含めて指定する必要があります。

Linux(x64)の場合

環境変数PATHに，/opt/HILNGcbl2k64/bin:/usr/bin:/binを含めて指定する必要があります。

-NoSaveオプションの指定がないときは，プログラム情報ファイルへ書き込みを行う前にバックアップのファイルを生成します。バックアップのファイルは，プログラム情報ファイルへの書き込みでエラーが発生したときに残り，正常に終了したときは残りません。バックアップのファイル名は，システムが生成するほかに合致しない名称のファイルであり，カレントディレクトリに生成します。

カレントディレクトリは，プログラムが実行されたディレクトリです。

CVの文字とオプションの間は空白またはタブで区切ります。

実行結果出力ファイル名・共用ライブラリ名・実行可能ファイル名は，カレントディレクトリからの相対パスが指定されたものとします。カレントディレクトリが認識できないときは，絶対パス名で指定する必要があります。

環境変数CBLTDEXECで指定した実行可能ファイル名と，カバレージを起動した実行可能ファイルが一致する必要があります。

プログラムを起動するときのパスの名称は，次の点に注意して指定します。次の条件に従わないパスの名称が指定された場合，カバレージの動作は保証しません。

・環境変数CBLTDEXECに指定した実行可能ファイル名およびプログラムを起動するときの実行可能ファイル名は，絶対パス名で指定します。相対パス名で指定した場合，またはパスプレフィクスを指定しなかった場合は，実行可能ファイル名だけが一致しているかどうかを確認します。

・プログラムを起動するときパス名は，60バイト以下とします。60バイトを超えたときは，61バイト以降が切り捨てられ，60バイトまでをパス名とみなします。

・パスを除いた実行可能ファイル名の長さは，14バイト以下とします。14バイトを超えたときは15バイト以降が切り捨てられ，14バイトまでが実行可能ファイル名とみなされます。

プログラムに渡す引数は，プログラムの起動時に指定します。環境変数CBLTDEXECには指定できません。

カバレージ情報の蓄積のプログラム情報ファイルを次の順序で検索します。検索した結果，見つからないときは，プログラム情報ファイルに該当するプログラムはカバレージ情報の蓄積の対象となりません。

1.環境変数CBLPIDIRで指定したディレクトリ

2.実行可能ファイルに含まれるプログラムは，実行可能ファイルのあるディレクトリ

　共用ライブラリファイルに含まれるプログラムは，共用ライブラリファイルのあるディレクトリ

3.カレントディレクトリ

プログラムが-CVInfコンパイラオプションでコンパイルされていない場合，カバレージ情報の蓄積の対象となりません。

カバレージ情報の蓄積の対象となるプログラム情報ファイルが一つもない場合は，カバレージ情報の蓄積のためのプログラムを実行しません。

環境変数CBLLSLIB，環境変数CBLLPATH，および環境変数LD_LIBRARY_PATHについては，「6.4.2　共用ライブラリ」を参照してください。

環境変数CBLTDEXECに空白またはタブを含むパス名を指定できません。

拡張子が「.cvo」ではないファイルを実行結果出力ファイル名に指定した場合は，エラーになり連動実行は開始しません。

(3)　実行結果出力ファイルにメッセージを出力できないときの処理

実行結果出力ファイルにメッセージを出力できない場合は，次のメッセージを出力します。

環境変数TMPDIRの指定がある場合は指定されたディレクトリに，環境変数TMPDIRに指定がない場合は/tmpディレクトリに，次のファイル名で実行結果を出力します。

*****は，一意な文字が自動的に割り振られます。

カバレージ情報の蓄積では，CVO*****.tmp

カウント情報の表示では，CNO*****.tmp

/tmpディレクトリに出力された実行結果のファイルは，不要になったら削除してください。

/tmpディレクトリに出力できないときは，標準エラー出力に出力します。

7.3　カバレージ情報の表示（テキスト形式）

端末から，コマンドを入力してカバレージ情報をテキスト形式で表示します。

カバレージ情報の表示については，「6.2.5　カバレージ情報の表示（テキスト形式）」を参照してください。

7.3.1　カバレージ情報の表示の方法（テキスト形式）

端末から，コマンドを入力してカバレージ情報をテキスト形式で表示します。

(1)　カバレージ情報の表示の手順

バッチモードでカバレージ情報（テキスト形式）を表示するときの作業の流れを説明します。

カバレージ情報を蓄積する。

カバレージ情報の蓄積については，「7.2.1　コマンドによる方法」，「7.2.2　プログラムからの連動実行による方法」を参照してください。

cblcl2kコマンドを指定して，実行する。

cblcl2kコマンドについては，「(2)　cblcl2kコマンド」を参照してください。

コマンドに指定したカバレージ情報リストファイルをテキストエディタ（viやFSEDなど）で開き，内容を確認する。

(2)　cblcl2kコマンド

cblcl2kコマンドの形式を次に示します。

形式1

形式2

-List

すべてのプログラムのカバレージ情報一覧を表示します。

-Summary

カバレージ情報のまとめを表示します。

-Source

すべてのソース情報を表示します。

-Difference

差分ソース情報を表示します。

-Unexecuted

未実行ソース情報を表示します。

-UnexecutedDifference

差分未実行ソース情報を表示します。

-Activate

呼び出し文情報を表示します。

-All

すべての情報を表示します。次の引数をすべて指定したのと同じです。

-List，-Summary，-Source，-Difference，-Unexecuted，-UnexecutedDifference，-Activate

-Allが指定されたときは，ほかの引数は無視されます。

-Output

カバレージ情報リストファイルのパス名を指定します。ファイルの拡張子は，「.cll」でなければなりません。省略時はカレントディレクトリに，最初に指定したプログラム情報ファイル名に拡張子「.cll」を付けたファイル名で出力されます。

-Input

プログラム情報ファイルのパス名を指定します。

複数指定したプログラム情報ファイルは，先頭から拡張子をチェックします。拡張子の不正を検出した場合は，それよりもあとに指定しているプログラム情報ファイルの拡張子をチェックしないで処理を終了します。

また，-Inputの直後にコンマ，または末尾にコンマを指定している場合も，エラーとなり，処理を終了します。

-Help

cblcl2kコマンドの構文を表示します。-Helpオプションを指定すると，ほかの引数はすべて無視されます。

出力されるカバレージ情報リストの詳細については，「6.2.5　カバレージ情報の表示（テキスト形式）」を参照してください。

注意事項

cblcl2kコマンドのメッセージは標準エラー出力へ出力します。

cblcl2kコマンド名は，英小文字で指定します。

cblcl2kコマンド名だけを指定した場合は，cblcl2kコマンドの構文を表示します。

オプションは，英大文字，英小文字のどちらでも指定できます。オプションの始まりは，ハイフン（-）とします。

オプションの区切り記号は空白文字とタブです。空白文字およびタブを区切り記号としたくないときは，オプションをダブルコーテーション（"）で囲みます。

同じオプションを複数指定した場合は，最後に指定したオプションを有効とします。

オプションにパスの付かないファイル名を指定したときは，カレントディレクトリのファイルとします。相対パスの付いたファイル名を指定したときは，カレントディレクトリを起点とする相対パスのディレクトリにあるファイルとします。

オプションに複数のファイル名を指定するときは，コンマ（,）または空白文字で区切ります。また，アスタリスク（*）をファイル名の一部に指定することによって，（*）以外の文字が一致するすべてのファイルを指定できます。

cblcl2kコマンドが返す終了コードは，次のとおりです。

終了コード

内容

0

正常終了

1

エラー発生による終了

2

キー操作による割り込みによる終了

-Helpオプションによるコマンドの構文は，標準出力へ出力します。それ以外のメッセージは，標準エラー出力へ出力します。

(3)　環境変数の指定

カバレージ情報の表示に必要なファイルを環境変数に指定します。

表7‒2　環境変数（カバレージ情報の表示）

環境変数名

概要

CBLPIDIR

プログラム情報ファイルの存在するディレクトリをパスで指定する。

注意事項

カバレージ情報の表示のプログラム情報ファイルがパスの付かないファイル名または，相対パスで指定された場合，次のディレクトリを検索します。相対パスを指定したときは，次のディレクトリからの相対パスを検索します。絶対パスが指定されたとき，次の検索はしません。

1.環境変数CBLPIDIRで指定したディレクトリ

2.カレントディレクトリ

プログラムが-CVInfコンパイラオプションでコンパイルされていない場合，カバレージ情報の表示の対象となりません。

カバレージ情報の表示では対象外とするエラーメッセージを出力します。

カバレージ情報の表示の対象となるプログラム情報ファイルが一つもない場合は，カバレージの表示をしません。カバレージ情報リストファイルも出力しません。

7.4　カバレージ情報の表示（CSV形式）

端末から，コマンドを入力してカバレージ情報をCSV形式で表示します。

カバレージ情報の表示については，「6.2.6　カバレージ情報の表示（CSV形式）」を参照してください。

7.4.1　カバレージ情報の表示の方法（CSV形式）

端末から，コマンドを入力してカバレージ情報をCSV形式で表示します。

(1)　カバレージ情報の表示の手順

バッチモードでカバレージ情報（CSV形式）を表示するときの作業の流れを説明します。

カバレージ情報を蓄積する。

カバレージ情報の蓄積については，「7.2.1　コマンドによる方法」，「7.2.2　プログラムからの連動実行による方法」を参照してください。

cblcc2kコマンドを指定して，実行する。

cblcc2kコマンドについては，「(2)　cblcc2kコマンド」を参照してください。

出力されたCSVファイルをエディタやExcelなどの表計算プログラムで開き，内容を確認する。

(2)　cblcc2kコマンド

cblcc2kコマンドの形式を次に示します。

形式1

形式2

-List

カバレージ統計情報CSVファイルを出力します。

-Source

ソースカバレージ情報CSVファイルを出力します。

-All

カバレージ統計情報CSVファイルとソースカバレージ情報CSVファイルの両方を出力します。

-Listと-Sourceを同時に指定したのと同じです。

-NoHeader

ヘッダカラム名とヘッダを出力しません。

この引数を指定した場合，カバレージ統計情報CSVファイルとソースカバレージ情報CSVファイルには，それぞれ次の内容を出力します。

カバレージ統計情報CSVファイルのとき

カバレージ統計情報カラム名とカバレージ統計情報

ソースカバレージ情報CSVファイルのとき

ソースカバレージ情報カラム名とソースカバレージ情報

カバレージ統計情報CSVファイルおよびソースカバレージ情報CSVファイルの出力内容については，「6.2.6　カバレージ情報の表示（CSV形式）」を参照してください。

-ListSourceFile

カバレージ統計情報CSVファイルにソースファイル単位の統計情報を出力します。カバレージ統計情報CSVファイルを出力しない場合は無視されます。

-ListCompilationUnit

カバレージ統計情報CSVファイルに翻訳単位の統計情報を出力します。カバレージ統計情報CSVファイルを出力しない場合は無視されます。

-ListAll

カバレージ統計情報CSVファイルに，ソースファイル単位と翻訳単位の両方の統計情報を出力します。

-ListSourceFileと-ListCompilationUnitを同時に指定したのと同じです。カバレージ統計情報CSVファイルを出力しない場合は無視されます。

-Comment

ソースに記述されたコメント行（注記行）をソースカバレージ情報CSVファイルに出力します。ソースカバレージ情報CSVファイルを出力しない場合は無視されます。

省略時は，ソースに記述されたコメント行（注記行）をソースカバレージ情報CSVファイルに出力しません。

-ListFileName

出力するカバレージ統計情報CSVファイルのファイル名（.csv）を指定します。ファイル名には，カバレージ統計情報CSVファイルを格納するディレクトリのパスを含めないで，ファイル名だけを指定してください。

省略時は，「summary_list.csv」を仮定します。カバレージ統計情報CSVファイルを出力しない場合は無視されます。

-OutputPath

生成するCSVファイルの出力先ディレクトリのパスを指定します。出力先ディレクトリ名には，存在するディレクトリを指定してください。省略時は，出力先ディレクトリをカレントディレクトリとします。

カバレージ統計情報CSVファイルの場合

-OutputPathオプションで指定したディレクトリに，-ListFileNameオプションで指定したファイル名で出力します。

ソースカバレージ情報CSVファイルの場合

-OutputPathオプションで指定したディレクトリに，プログラム情報ファイル名（拡張子を除く）に「_source.csv」を付けたファイル名で出力します。例えば，プログラム情報ファイル名が「makeline.cbp」の場合は，ソースカバレージ情報CSVファイルは「makeline_source.csv」で出力します。

-Recursive

-InputPathで指定したディレクトリと，そのサブディレクトリにあるすべてのプログラム情報ファイルを出力対象とします。また，-OutputPathに指定した出力先ディレクトリに，-InputPathで指定したディレクトリ下と同じディレクトリ構成で出力します。

省略時は，-InputPathで指定したディレクトリの直下にあるプログラム情報ファイルだけを出力対象とし，-OutputPathに指定した出力先ディレクトリの直下に出力します。

この引数は，-InputPathを指定した場合にだけ有効になります。

-Input

出力対象のプログラム情報ファイル名を指定します。

プログラム情報ファイル名は，コンマ（,）区切り，または空白区切りで複数指定できます。ファイル名が同じプログラム情報ファイル名は同時に指定できません。絶対パスや相対パスで指定した場合も，同じパスではなく，同じプログラム情報ファイル名は同時に指定できません。

複数指定したプログラム情報ファイルは，先頭から拡張子をチェックします。拡張子の不正を検出した場合は，それよりもあとに指定しているプログラム情報ファイルの拡張子をチェックしないで処理を終了します。

また，-Inputの直後にコンマ，または末尾にコンマを指定している場合も，エラーとなり，処理を終了します。

-InputPath

出力対象のプログラム情報ファイルを格納しているディレクトリのパスを指定します。

-Help

cblcc2kコマンドの構文を表示します。-Helpオプションを指定すると，ほかの引数はすべて無視されます。

出力されるカバレージ情報リストの詳細については，「6.2.6　カバレージ情報の表示（CSV形式）」を参照してください。

注意事項

-List，-Sourceまたは-Allのうち何も指定がなかった場合，-Allオプションを仮定します。

-ListSourceFile，-ListCompilationUnitまたは-ListAllのうち何も指定がなかった場合，-ListAllオプションを仮定します。

-ListFileNameの指定によって，ソースカバレージ情報CSVファイルとカバレージ統計情報CSVファイルが同一ファイルになった場合の動作は保証しません。

cblcc2kコマンドのメッセージは標準エラー出力へ出力します。

複数のファイルを出力する場合に，処理中にエラーが発生したときは，それ以降のファイルの出力を中止します。それより前に出力したファイルは削除されません。

cblcc2kコマンド名は，英小文字で指定します。

cblcc2kコマンド名だけを指定した場合は，cblcc2kコマンドの構文を表示します。

オプションは，英大文字，英小文字のどちらでも指定できます。オプションの始まりは，ハイフン（-）とします。

オプションの区切り記号は空白文字とタブです。空白文字およびタブを区切り記号としたくないときは，オプションをダブルコーテーション（"）で囲みます。

同じオプションを複数指定した場合は，最後に指定したオプションを有効とします。

オプションにパスの付かないファイル名を指定したときは，カレントディレクトリのファイルとします。相対パスの付いたファイル名を指定したときは，カレントディレクトリを起点とする相対パスのディレクトリにあるファイルとします。

オプションに複数のファイル名を指定するときは，コンマ（,）または空白文字で区切ります。また，アスタリスク（*）をファイル名の一部に指定することによって，（*）以外の文字が一致するすべてのファイルを指定できます。

cblcc2kコマンドが返す終了コードは，次のとおりです。

終了コード

内容

0

正常終了

1

エラー発生による終了

2

キー操作による割り込みによる終了

-Helpオプションによるコマンドの構文は，標準出力へ出力します。それ以外のメッセージは，標準エラー出力へ出力します。

(3)　環境変数の指定

カバレージ情報の表示に必要なファイルを環境変数に指定します。

表7‒3　環境変数（カバレージ情報の表示）

環境変数名

概要

CBLPIDIR

プログラム情報ファイルの存在するディレクトリをパスで指定する。

注意事項

カバレージ情報の表示のプログラム情報ファイルがパスの付かないファイル名または，相対パスで指定された場合，次のディレクトリを検索します。相対パスを指定したときは，次のディレクトリからの相対パスを検索します。絶対パスが指定されたとき，次の検索はしません。

1.環境変数CBLPIDIRで指定したディレクトリ

2.カレントディレクトリ

プログラムが-CVInfコンパイラオプションでコンパイルされていない場合，カバレージ情報の表示の対象となりません。

カバレージ情報の表示では対象外とするエラーメッセージを出力します。

カバレージ情報の表示の対象となるプログラム情報ファイルが一つもない場合は，カバレージの表示をしません。カバレージ統計情報CSVファイルも出力しません。

7.5　カバレージ情報の操作

蓄積したカバレージ情報に対して次の操作ができます。

カバレージ全情報を0％にする

カバレージ差分情報を0％にする

ソース差分情報をクリアする

カバレージ情報をマージする

7.5.1　コマンドによる方法

端末からコマンドを入力して，カバレージ情報を操作できます。

カバレージ情報の操作については，「6.2.7　カバレージ情報の操作」を参照してください。

(1)　カバレージ情報の操作の方法

バッチモードでカバレージ情報を操作するときの作業の流れを説明します。

cblca2kコマンドに操作したい機能を指定して，実行する。

cblca2kコマンドについては，「(2)　cblca2kコマンド」を参照してください。

(2)　cblca2kコマンド

cblca2kコマンドの形式を次に示します。

形式1

形式2

-Coverage0

カバレージ全情報を0%にします。

-Difference0

カバレージ差分情報を0%にします。

-ClearDifference

ソース差分情報をクリアします。

-Merge

プログラム情報ファイル名1のカバレージ情報をプログラム情報ファイル名2へマージします。プログラム情報ファイル名1は，パスを除いたファイル名がプログラム情報ファイル1と同じでなければなりません。

-NoSave

プログラム情報ファイルへ書き込みを行う前にバックアップをしません。

-Input

プログラム情報ファイルを指定します。

-Help

cblca2kコマンドの構文を表示します。-Helpオプションを指定すると，ほかの引数はすべて無視されます。

注意事項

-Mergeオプションを指定した場合，プログラム情報ファイル名1のパスを除いたファイル名はすべて同じでなければなりません。

-Coverage0，-Difference0，-ClearDifference，-Mergeオプションから複数のオプションを指定すると，最後に指定されたオプションが有効となります。

-NoSaveオプションの指定がない場合は，プログラム情報ファイルへ書き込みをする前にバックアップのファイルを生成します。バックアップのファイルは，プログラム情報ファイルへの書き込みでエラーが発生したときに残り，正常に終了したときは残りません。バックアップのファイル名は，システムが生成するほかに合致しない名称のファイルであり，カレントディレクトリに生成します。

cblca2kコマンド名は，英小文字で指定します。

cblca2kコマンド名だけを指定した場合は，cblca2kコマンドの構文を表示します。

オプションは，英大文字，英小文字のどちらでも指定できます。オプションの始まりは，ハイフン（-）とします。

オプションの区切り記号は空白文字およびタブです。空白文字およびタブを区切り記号としたくないときは，オプションをダブルコーテーション（"）で囲みます。

同じオプションを複数指定した場合は，最後に指定したオプションを有効とします。

オプションにパスの付かないファイル名を指定したときは，カレントディレクトリのファイルとします。相対パスの付いたファイル名を指定したときは，カレントディレクトリを起点とする相対パスのディレクトリにあるファイルとします。

オプションに複数のファイル名を指定するときは，コンマ（,）または空白で区切ります。また，アスタリスク（*）をファイル名の一部に指定することによって，（*）以外の文字が一致するすべてのファイルを指定できます。

cblca2kコマンドが返す終了コードは，次のとおりです。

終了コード

内容

0

正常終了

1

エラー発生による終了

2

キー操作による割り込みによる終了

-Helpオプションによるコマンドの構文は，標準出力へ出力します。それ以外のメッセージは，標準エラー出力へ出力します。

(3)　環境変数の指定

カバレージ情報の操作に必要なファイルを環境変数に指定します。

表7‒4　環境変数（カバレージ情報の操作）

環境変数名

概要

CBLPIDIR

プログラム情報ファイルの存在するディレクトリをパスで指定する。

注意事項

カバレージ情報の操作のプログラム情報ファイルがパスの付かないファイル名，または相対パスで指定された場合，次のディレクトリを検索します。相対パスを指定したときは，次のディレクトリからの相対パスを検索します。絶対パスが指定されたとき，次の検索はしません。

1.環境変数CBLPIDIRで指定したディレクトリ

2.カレントディレクトリ

プログラムが-CVInfコンパイラオプションでコンパイルされていない場合，カバレージ情報の操作の対象となりません。

カバレージ情報の操作では対象外とするエラーメッセージを出力します。

カバレージ情報の操作の対象となるプログラム情報ファイルが一つもない場合は，カバレージの操作をしません。

7.6　カウント情報の表示

カウント情報は，テスト実行させたプログラムの文の実行回数を表示します。COBOLプログラムの実行性能改善の施策を検討するときに，各文の実行回数を測定し，COBOLプログラムの性能を分析するために必要な情報を取得し，表示できます。

7.6.1　コマンドによる方法

端末から，コマンドを入力してカウント情報を取得します。

(1)　カウント情報の表示の手順

バッチモードでカウント情報を取得するときの作業の流れを説明します。

コンパイラオプションを指定して，プログラムをコンパイルする。

-CVInfコンパイラオプションを必ず指定してください。

カウント情報の取得またはカウント情報の取得対象プログラムの実行に必要な環境変数を設定する。

カウント情報の取得に必要な環境変数については，「(3)　環境変数の指定」を参照してください。プログラムの実行に必要な環境変数については，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

cblcn2kコマンドを指定して，実行する。

cblcn2kコマンドについては，「(2)　cblcn2kコマンド」を参照してください。

実行結果を画面に出力されるメッセージから確認する。カウント情報の取得取結果は，カウント情報リストファイルをテキストエディタ（viやFSEDなど）で開いて確認する。

(2)　cblcn2kコマンド

COBOLプログラムを実行してカウント情報を取得し，結果をファイルに出力します。

cblcn2kコマンドの形式を次に示します。

形式1

形式2

-Library

カウント情報の表示を行う共用ライブラリ名を指定します。

-Output

カウント情報リストファイル名を指定します。ファイル名の拡張子は，「.cnl」でなければなりません。-Outputオプション省略時は，-Executeで指定した実行可能ファイル名の拡張子を「.cnl」に変更したファイル名のファイルを，カレントディレクトリに出力します。

-Execute

実行可能ファイル名を指定します。

-Help

cblcn2kコマンドの構文を表示します。-Helpオプションを指定すると，ほかの引数はすべて無視されます。

注意事項

実行可能ファイルのパス名のあとに指定されたものすべてをカウント情報の取得対象のプログラムへ渡す引数とみなします。

-Libraryオプションは，複数のファイル名を指定できます。

-Executeオプションは，必ず最後に指定します。-Executeオプション以外のオプションの指定順序は任意です。

起動後のカレントディレクトリは，cblcn2kコマンドを実行したディレクトリです。

cblcn2kコマンドのメッセージは標準エラー出力へ出力します。

cblcn2kコマンド名は，英小文字で指定します。

cblcn2kコマンド名だけを指定した場合は，cblcn2kコマンドの構文を表示します。

オプションは，英大文字，英小文字のどちらでも指定できます。オプションの始まりは，ハイフン（-）とします。

オプションの区切り記号は空白文字およびタブです。空白文字およびタブを区切り記号としたくないときは，オプションをダブルコーテーション（"）で囲みます。

同じオプションを複数指定した場合は，最後に指定したオプションを有効とします。

オプションにパスの付かないファイル名を指定したときは，カレントディレクトリのファイルとします。相対パスの付いたファイル名を指定したときは，カレントディレクトリを起点とする相対パスのディレクトリにあるファイルとします。

オプションに複数のファイル名を指定するときは，コンマ（,）または空白文字で区切ります。また，アスタリスク（*）をファイル名の一部に指定することによって，（*）以外の文字が一致するすべてのファイルを指定できます。

cblcn2kコマンドが返す終了コードは，次のとおりです。

終了コード

内容

0

正常終了

1

エラー発生による終了

2

キー操作による割り込みによる終了

-Helpオプションによるコマンドの構文は，標準出力へ出力します。それ以外のメッセージは，標準エラー出力へ出力します。

次に示すどれかに該当する場合，単独で実行したユーザプログラムが異常終了すると，「セグメンテーション違反です」などのメッセージがシステムから表示されます。カバレージからユーザプログラムを起動すると，システムからのこのメッセージは表示されません。

・実行時環境変数CBLEXCEPTにNOSIGNALを指定した場合

・次に示すコンパイラオプションのどれか一つも指定しないでコンパイルしたプログラムの場合

　-DebugInf，-DebugInf,Trace，-DebugCompati，-DebugData，-TDInf，-CVInf，-DebugRangeコンパイラオプション

・COBOLが例外（スタックオーバーフローなど）を検出できない場合

(3)　環境変数の指定

カウント情報の表示に必要な環境変数に指定します。

表7‒5　環境変数一覧（カウント情報の表示）

環境変数名

概要

CBLPIDIR

プログラム情報ファイルがあるディレクトリ名を指定する。

CBLLSLIB

共用ライブラリファイルのファイル名を指定する。

CBLLPATH

共用ライブラリファイルがあるディレクトリ名を指定する。

LD_LIBRARY_PATH※

共用ライブラリファイルがあるディレクトリ名を指定する。

注※

Linuxで有効

プログラムの実行に関するその他の環境変数は，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

注意事項

カウント情報の表示のプログラム情報ファイルを次の順序で検索します。検索した結果，見つからないときは，プログラム情報ファイルに該当するプログラムはカウント情報表示の対象となりません。

1.環境変数CBLPIDIRで指定したディレクトリ

2.実行可能ファイルに含まれるプログラムは，実行可能ファイルのあるディレクトリ

共用ライブラリファイルに含まれるプログラムは，共用ライブラリファイルのあるディレクトリ

3.カレントディレクトリ

プログラムが-CVInfコンパイラオプションでコンパイルされていない場合，カウント情報の表示の対象となりません。

カウント情報の表示の対象となるプログラム情報ファイルが一つもない場合は，カウント情報の表示のためのプログラムを実行しません。カウント情報リストファイルも出力しません。

環境変数CBLLSLIB，環境変数CBLLPATH，および環境変数LD_LIBRARY_PATHについては，「6.4.2　共用ライブラリ」を参照してください。

7.6.2　プログラムからの連動実行による方法

カウント情報の取得対象プログラムからコマンドを実行しカウント情報を取得する方法です。

(1)　カウント情報の表示の手順

プログラムからの連動実行で，プログラムのカウント情報を表示するときの作業の流れを説明します。

コンパイラオプションを指定して，プログラムをコンパイルする。

-CVInfコンパイラオプションを必ず指定してください。

連動実行の環境変数を指定する。

環境変数CBLTDEXECを指定します。形式は次のとおりです。

形式

各オプションの詳細および注意事項については，「(2)　環境変数の指定」を参照してください。

カウント情報の取得またはプログラムの実行に必要な環境変数を設定する。

カウント情報の取得に必要な環境変数は，「6.1.1　カバレージ機能の入出力構成と使用するファイル」の「(3)　使用する環境変数の指定」を参照してください。プログラムの実行に必要な環境変数については，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。

カウント情報の取得対象の実行可能ファイルを実行する。

カウント情報が取得されます。

実行結果を実行結果出力ファイルで確認する。取得したカウント情報はカウント情報リストファイルをテキストエディタ（viやFSEDなど）で開いて確認する。

(2)　環境変数の指定

連動実行するための環境変数は，次のとおりです。その他の環境変数は，「7.6.1　コマンドによる方法」の「(3)　環境変数の指定」を参照してください。

形式

-Output

カウント情報リストファイル名を指定します。ファイルの拡張子は，「.cnl」でなければなりません。指定しなかった場合は，カレントディレクトリに，実行可能ファイルに拡張子「.cnl」を付けた名前で出力されます。

-OutFile

カウントの実行結果およびトラブルシュート情報※を出力するファイル名を指定します。ファイルの拡張子は，「.cno」でなければなりません。指定しなかった場合は，実行可能ファイルに拡張子「.cno」を付けた名前でカレントディレクトリに出力します。

注※

当社保守員が調査するときに使用する情報です。共用ライブラリのカウント情報が表示されないなど，連動実行が動作しない場合には，当社保守員に連絡してください。

-Add

実行結果出力ファイルに追加書きで結果を出力します。指定しなかった場合，同名の実行結果出力ファイルがあった場合は，上書きされます。

-Library

カウント情報取得の対象とする共用ライブラリファイル名を指定します。

-Execute

カウント情報取得の対象とするプログラムを起動するための実行可能ファイル名を指定します。

注意事項

AIX(32)の場合

環境変数PATHに，/opt/HILNGcbl2k/bin:/usr/binを含めて指定する必要があります。

Linux(x86)の場合

環境変数PATHに，/opt/HILNGcbl2k/bin:/usr/bin:/binを含めて指定する必要があります。

AIX(64)の場合

環境変数PATHに，/opt/HILNGcbl2k64/bin:/usr/binを含めて指定する必要があります。

Linux(x64)の場合

環境変数PATHに，/opt/HILNGcbl2k64/bin:/usr/bin:/binを含めて指定する必要があります。

カレントディレクトリは，プログラムが実行されたディレクトリです。

CＮの文字とオプションの間は空白またはタブで区切ってください。

カウント情報リストファイル名・実行結果出力ファイル名・共用ライブラリ名・実行可能ファイル名は，カレントディレクトリからの相対パスが指定されたものとします。カレントディレクトリが認識できないときは，絶対パス名で指定する必要があります。

環境変数CBLTDEXECに指定した実行可能ファイル名と，COBOL2002カバレージを起動した実行可能ファイルが一致する必要があります。

プログラムを起動するときのパスの名称は，次の点に注意して指定します。これらに反したパスの名称が指定された場合，カバレージの動作は保証しません。

・環境変数CBLTDEXECに指定した実行可能ファイル名と，プログラムを起動するときの実行可能ファイル名は，絶対パス名で指定します。相対パス名で指定した場合，またはパスプレフィクスを指定しなかった場合は，実行可能ファイル名だけが一致しているかどうかを確認します。

・プログラムを起動するときパス名は，60バイト以下とします。60バイトを超えたときは，61バイト以降が切り捨てられ，60バイトまでをパス名とみなします。

・パスを除いた実行可能ファイル名の長さは，14バイト以下とします。14バイトを超えたときは15バイト以降が切り捨てられ，14バイトまでが実行可能ファイル名とみなされます。

プログラムに渡す引数は，プログラムの起動時に指定します。環境変数CBLTDEXECには指定できません。

カウント情報の表示のプログラム情報ファイルを次の順序で検索します。検索した結果，見つからないときは，プログラム情報ファイルに該当するプログラムはカウント情報表示の対象となりません。

1.環境変数CBLPIDIRで指定したディレクトリ

2.実行可能ファイルに含まれるプログラムは，実行可能ファイルのあるディレクトリ

　共用ライブラリファイルに含まれるプログラムは，共用ライブラリファイルのあるディレクトリ

3.カレントディレクトリ

プログラムが-CVInfコンパイラオプションでコンパイルされていない場合，カウント情報の表示の対象となりません。

カウント情報の表示の対象となるプログラム情報ファイルが一つもない場合は，カウント情報の表示のためのプログラムを実行しません。カウント情報リストファイルも出力しません。

環境変数CBLLSLIB，環境変数CBLLPATH，および環境変数LD_LIBRARY_PATHについては，「6.4.2　共用ライブラリ」を参照してください。

環境変数CBLTDEXECに空白またはタブを含むパス名を指定できません。

拡張子が「.cno」ではないファイルを実行結果出力ファイル名に指定した場合は，エラーになり連動実行は開始しません。

(3)　実行結果出力ファイルにメッセージを出力できないときの処理

実行結果出力ファイルにメッセージを出力できない場合のメッセージの出力方法については，「7.2.2　プログラムからの連動実行による方法」の「(3)　実行結果出力ファイルにメッセージを出力できないときの処理」を参照してください。

7.7　cblcvコマンド（COBOL85/TD互換）

cblcvコマンドは，UNIX COBOL85からのCOBOL2002への移行を円滑にするために使用するコマンドです。cblcv2kコマンドと同等の機能を持つため，通常はcblcv2kコマンドを使用することをお勧めします。

指定する実行可能ファイル・共用ライブラリはCOBOL2002で生成されている必要があります。

7.7.1　cblcvコマンド

cblcvコマンドの形式を次に示します。

形式

cblcv 〔 -s 〕〔 -d 共用ライブラリ名〔,共用ライブラリ名 … 〕〕
　　　　　　　実行可能ファイル 〔 プログラムへ渡す引数 〕

-s

プログラム情報ファイルへ書き込みをする前にバックアップをします。

-d

カバレージ情報を蓄積するプログラムがある共用ライブラリ名を指定します。

実行可能ファイル名

カバレージ情報を蓄積するプログラムがある実行可能ファイル名を指定します。

プログラムへ渡す引数

カバレージ情報を蓄積するプログラムへ渡す引数を指定します。

8　TDコマンド生成機能

TDコマンド生成機能とは，テストデバッグで使用するTDコマンドをコンパイル時にファイルに生成する機能です。この章では，この機能によって生成されるTDコマンドの内容について説明します。

8.1　概要

8.1.1　機能の概要

TDコマンド生成機能とは，COBOLソースファイルを解析して，テストデバッガで使用するTDコマンドをファイルに生成する機能です。

生成されるTDコマンドには，中断点情報，プログラムのシミュレーション情報，およびファイルのシミュレーション情報の3種類があります。

これらのTDコマンド群は，-TestCmdコンパイラオプションを指定してコンパイルしたときに生成されます。生成されたTDコマンド群に，必要に応じてTDコマンドの修正や追加をすることで，TDコマンド格納ファイルを作成できます。

また，TDコマンド生成機能の対象となるプログラムは，コンパイルしたときすべてのプログラムで，Sレベル，Uレベルのコンパイルエラーのなかった原始プログラムファイルだけです。

8.1.2　TDコマンド格納ファイルの構成と出力先

(1)　TDコマンド格納ファイルの構成

TDコマンド格納ファイルは，COBOLソースファイル単位に生成されます。指定するコンパイラオプションと，生成されるTDコマンド格納ファイル（.tdiまたは.tds）との関係を次に示します。

表8‒1　コンパイラオプションとTDコマンド格納ファイルとの関係

指定するコンパイラオプション

生成されるファイルの名称とその内容

-TestCmd,Full

-TestCmd,Full　-TestCmd,Break

-TestCmd,Full　-TestCmd,Sim

-TestCmd,Full　-TestCmd,Break　-TestCmd,Sim

a.tdi（中断点情報，シミュレーション情報）

-TestCmd,Break

a.tdi（中断点情報）

-TestCmd,Sim

a.tds（シミュレーション情報）

-TestCmd,Break　-TestCmd,Sim

a.tdi（中断点情報）

a.tds（シミュレーション情報）

注1

生成されるファイルの名称は，COBOLソースファイル名をa.cblとしたときの例で示しています。

注2

-TestCmd,Fullコンパイラオプションと同時に指定された-TestCmd,Break，および-TestCmd,Simコンパイラオプションは無効となります。

注3

-TestCmd,Break，および-TestCmd,Simコンパイラオプションを同時に指定したときに出力される.tdiファイルには，シミュレーション情報を一括入力するための #INCLUDEコマンドが追加になります。

注4

TDコマンドはCOBOL原始プログラム単位に作成します。

(2)　TDコマンド格納ファイルの出力先

TDコマンド格納ファイルの出力先は，環境変数CBLPIDIRで指定します。環境変数の指定がない場合は，カレントディレクトリに出力されます。

CBLPIDIR環境変数の指定

中断点情報を含む

シミュレーション情報を含む

パス名

ファイル名

パス名

ファイル名

指定あり

環境変数で指定するディレクトリ

a.tdi

環境変数で指定するディレクトリ

a.tds

指定なし

カレントディレクトリ

a.tdi

カレントディレクトリ

a.tds

注

生成されるファイルの名称は，COBOLソースファイル名をa.cblとしたときの例で示しています。

8.2　中断点情報とシミュレーション情報

TDコマンド生成機能で生成されるそれぞれのTDコマンド群について説明します。

8.2.1　中断点情報

(1)　注釈行（中断点情報の開始）

形式

機能

中断点情報のTDコマンドの設定開始を表示します。

生成条件

原始プログラムごとに必ず生成されます。

(2)　SET QUALIFICATIONコマンド

形式

機能

このTDコマンド以降に指定するTDコマンドを最外側のプログラム名，クラス名または関数名で修飾します。内側のプログラム，メソッドについては生成されません。このため，以降のTDコマンドで内部プログラムやメソッドのデータ名や節名を参照するときは，内側のプログラム名，メソッド名による修飾が必要となります。

生成条件

tdiファイル上では，最外側のプログラムのSET BREAKコマンドの前ごとに生成されます。

tdsファイル上では，複数の最外側のプログラムがあるときだけシミュレーションTDコマンドの前ごとに生成されます。

(3)　#INCLUDEコマンド

形式

#INCLUDE INFILE('ファイル名') NOMESSAGE

機能

ファイル名で示すシミュレーション情報のTDコマンド格納ファイルを入力します。

生成条件

SET BREAKコマンドのあとに生成されます。環境変数CBLPIDIRが指定されている場合，環境変数で指定したディレクトリ名がファイル名に付けられます。

(4)　SET BREAKコマンド（節名）

形式

機能

プログラムが実行中に一時停止する中断点を指定します。GOコマンドがあるので，実行のトレース情報を知るのに役立ちます。

生成条件

プログラム内で一意となる節名があるときに生成されます。

入れ子プログラムのときは内側のプログラム名で修飾します。

(5)　SET BREAKコマンド（文）

形式

SET BREAK STATEMENT(xxxxxxx〔.n〕)　DO
GO
ENDDO

機能

プログラムが実行中に一時停止する中断点を指定します。GOコマンドによって，実行のトレース情報を参照できます。

生成条件

条件文（IF文，EVALUATE文，PERFORM文，SEARCH文，および条件指定のある文）または出口文（GOBACK文，EXIT PROGRAM文，EXIT METHOD文，EXIT FUNCTION文，およびSTOP RUN文）のある行に対して生成されます。

文番号（xxxxxxx）は常に7けたとし，7けたに満たない場合は前に0を入れます。

条件文や出口文が1行に2文以上ある場合，2文目からは行番号に位置番号（.2，.3，……）が付きます。

(6)　注釈行（中断点情報の終了）

形式

*>**    SET BREAK TD COMMAND ENDED                         ***

機能

中断点情報のTDコマンドの設定終了を表示します。

生成条件

中断点情報TDコマンド格納ファイルには，最外側のプログラムごとに必ず生成されます。

(7)　SET BREAKコマンド（プログラム名）

形式

機能

最外側のプログラム，メソッドまたは関数の実行を開始する入口点を指定します。また，USINGで指定されたデータに対してASSIGN DATAコマンドでデータ値を設定します。設定するデータ値については，「8.2.3　データ設定値」を参照してください。

生成条件

最外側のプログラム，メソッドまたは関数のPROCEDURE DIVISIONに対して生成されます。

"ASSIGN DATA(データ名) VALUE(データ値)"は，USING指定があるときに生成されます。なお，ASSIGN DATAコマンドは，USINGに指定された左側の引数から生成されます。

"GO"は，最後のプログラムにだけ生成されます。また，"COVERAGE"は，-CVInfコンパイラオプションを指定してコンパイルしたときだけ生成されます。

8.2.2　シミュレーション情報

(1)　注釈行（シミュレーション情報の開始）

形式

機能

シミュレーションのTDコマンドの設定開始を表示します。

生成条件

シミュレーション情報を含むTDコマンド格納ファイルには必ず生成されます。

(2)　注釈行（主プログラム）

形式

機能

主プログラムシミュレーションの設定開始を表示します。

生成条件

-SimMainコンパイラオプションを指定したプログラムに対して生成されます。

(3)　SIMULATE MAINコマンド

形式

機能

主プログラムをシミュレーションします。

生成条件

-SimMainコンパイラオプションを指定したプログラムに対して生成されます。USING指定があるときは，データ値が設定されます。なお，USING指定があるとき生成されるASSIGN DATAコマンドは，指定された左側の引数から生成されます。

設定されるデータ値については，「8.2.3　データ設定値」を参照してください。

(4)　注釈行（副プログラム）

形式

機能

副プログラムシミュレーションの設定開始を表示します。

生成条件

-SimSubコンパイラオプションを指定したプログラムを定数指定のCALL文で呼び出しているときに生成されます。

注意事項

-SimIdentコンパイラオプションを指定した場合，一意名指定のCALL文に対する注釈行（副プログラム）は，生成されません。

(5)　SIMULATE SUBコマンド

形式

機能

呼び出されるプログラムをシミュレーションします。

生成条件

-SimSubコンパイラオプションを指定した最外側のプログラムを定数指定のCALL文で呼び出しているときに生成されます。

CALL文のUSING指定があるときは，データ名の内容を表示します。なお，USING指定があるとき生成されるDISPLAY DATAコマンドは，指定された左側の引数から生成されます。また，CALL文のRETURNING指定があるときは，データ値を設定します。このとき生成する記号名は，文字列"PARM"に8けたの1から始まる数字を付加したものとします。また，設定されるデータ値については，「8.2.3　データ設定値」を参照してください。

注意事項

-SimIdentコンパイラオプションを指定した場合，一意名指定のCALL文に対するSIMULATE SUBコマンドは，生成されません。-SimIdentコンパイラオプションを指定して副プログラムシミュレーションをする場合は，一意名指定のCALL文で呼び出す副プログラム名に対するSIMULATE SUBコマンドを，TDコマンド格納ファイルに定義して使用してください。

(6)　注釈行（ファイル）

形式

機能

ファイルシミュレーションの設定開始を表示します。

生成条件

ファイルに対してOPEN文のあるときに生成されます。

(7)　SIMULATE FILEコマンド（INPUT／I-Oモード）

形式

機能

OPEN INPUTまたはOPEN I-Oモードで開かれた入出力ファイルに対するシミュレーションをします。

1回目のシミュレーションでデータを設定し，2回目以降のシミュレーションでファイル終了シミュレーションまたは無効キーシミュレーションをします。

生成条件

FD項で定義したファイルがOPEN INPUTモードで開かれたときはSIMULATE FILE 〜 OPENMODE(INPUT)が生成されます。OPEN I-Oモードで開かれたときはSIMULATE FILE 〜 OPENMODE(IO)コマンドが生成されます。

修飾対象がファクトリ定義のデータ部で定義されているときは#FACTORYで，インスタンス定義のデータ部で定義されているときは#OBJECTで，関数定義のデータ部で定義されているときは#FUNCTIONで修飾されます。

また，順アクセスのファイルにはGO ENDが，乱アクセス，動的アクセスのファイルにはGO INVALIDが設定されます。

(8)　SIMULATE FILEコマンド（OUTPUT／EXTENDモード）

形式

機能

OPEN OUTPUTまたはOPEN EXTENDモードで開かれた出力ファイルに対するシミュレーションをします。

生成条件

FD項で定義したファイルがOPEN OUTPUTモードで開かれたときは，SIMULATE FILE 〜 OPENMODE(OUTPUT)コマンドが生成されます。OPEN EXTENDモードで開かれたときはSIMULATE FILE 〜 OPENMODE(EXTEND)コマンドが生成されます。

修飾対象がファクトリ定義のデータ部で定義されているときは#FACTORYで，インスタンス定義のデータ部で定義されているときは#OBJECTで，関数定義のデータ部で定義されているときは#FUNCTIONで修飾されます。

(9)　注釈行（シミュレーション情報の終了）

形式

>***        SIMULATE SUB COMMAND ENDED        ***

機能

ファイルシミュレーションのTDコマンドの終了を表示します。

生成条件

シミュレーション情報を含むTDコマンド格納ファイルには必ず生成されます。

8.2.3　データ設定値

TDコマンド格納ファイル中のASSIGN DATAコマンドで設定されるデータ値を次に示します。

表8‒2　データ設定値

データ属性

設定内容

生成例

定義

設定値

英字項目

Aで始まるnけたの文字を埋め込む。

PIC A(10)

'ABCDEFGHIJ'

英数字項目

PIC X(4)

'ABCD'

英数字編集項目

PIC XBXBX

'ABC'

数字項目

外部10進項目

nけたの数字を埋め込む。小数点の位置も合わせる。Pに対しては0を埋め込む。

PIC S9V99

1.23

内部10進項目

PIC 9V9 USAGE COMP-3

1.2

2進項目

PIC 99PP USAGE COMP

1200

外部浮動小数点

仮数部にnけたの数字を埋め込む。

小数点の位置も合わせる。指数部にはE12を埋め込む。

PIC +9.9E-99

1.2E12

内部浮動小数点

COMP-1

1.2E34を埋め込む。

USAGE COMP-1

1.2E34

COMP-2

2.3E45を埋め込む。

USAGE COMP-2

2.3E45

ブール項目

nけたの数字を埋め込む。

PIC 1(8) USAGE DISPLAY

B'11111111'

PIC 1(4) USAGE BIT

B'1111'

数字編集項目

nけたの数字を埋め込む。

PIC ¥¥¥¥¥¥¥9

1234567

日本語項目

nけたの全角数字を埋め込む。

PIC N(4)

N'１２３４'

日本語編集項目

PIC NBN

N'１２'

英数字集団項目

半角空白を設定する。配下の集団項目，基本項目についても，規則に従って設定する。

SYU1.
 SYU2.
  KI1 PIC XX.
  KI2 PIC 99.

' '
 ' '
  'AB'
  12

日本語集団項目

全角空白を設定する。配下の集団項目，基本項目についても，規則に従って設定する。

SYU1 GROUP-USAGE NATIONAL.
   SYU2.
    KI1  PIC N.
    KI2  PIC NN.

N'　'
 N'　'
  N'１'
  N'１２'

指標データ項目

設定しない。

USAGE INDEX

−

アドレスデータ項目

USAGE ADDRESS

−

ポインタ項目

USAGE POINTER

−

オブジェクト参照データ項目

USAGE OBJECT REFERENCE

−

動的長基本項目

連絡節での定義で，LIMIT指定がある場合，LIMITに指定されたけた数を上限値として，基本項目の規則に従って設定する。

PIC X DYNAMIC LENGTH C-STRING LIMIT 4.

PIC N DYNAMIC LENGTH C-STRING LIMIT 4.

'ABCD'

N'１２３４'

連絡節での定義で，LIMIT指定がない場合，1,024けたが仮定されているものとして，基本項目の規則に従って設定する。※

PIC X DYNAMIC LENGTH C-STRING.

PIC N DYNAMIC LENGTH C-STRING.

'ABCDE･･･'

N'１２３４･･･'

その他

FILLER項目は設定しない。

FILLER PIC X(4)

−

（凡例）

−：設定されない。

注1

埋め込めるけた数の最大は28けたです。

注2

OCCURS句が付くときは添字(1)だけを設定します。

注※

-SimMainオプションを指定した場合の主プログラムシミュレーションのときだけ生成されます。

8.3　TDコマンドの生成例

次の「被テストCOBOL原始プログラム」から生成される次のファイルの内容を示します。

中断点情報ファイル単独作成のときの中断点情報ファイル

シミュレーション情報ファイルと同時作成時の中断点情報ファイル

シミュレーション情報ファイル

中断点情報・シミュレーション情報ファイル

図8‒1　被テストCOBOL原始プログラム（ファイル名：FLI0010.cbl）

図8‒2　中断点情報ファイル単独作成時の中断点情報ファイル

図8‒3　シミュレーション情報ファイルと同時作成の中断点情報ファイル

図8‒4　シミュレーション情報ファイル

図8‒5　中断点情報・シミュレーション情報ファイル

9　64bitアプリケーションの開発

この章では，AIX(64) COBOL2002およびLinux(x64) COBOL2002について説明します。

9.1　COBOL2002での64bitアプリケーションの開発について

AIX(64) COBOL2002，Linux(x64) COBOL2002では，ポインタサイズの64bit化に対応しています。

ここでは，AIX(64) COBOL2002およびLinux(x64) COBOL2002の機能について説明します。

9.1.1　使用できない機能

AIX(64) COBOL2002およびLinux(x64) COBOL2002で使用できない機能について説明します。

(1)　機能

AIX(64) COBOL2002およびLinux(x64) COBOL2002で使用できない機能を次に示します。

表9‒1　AIX(64) COBOL2002およびLinux(x64) COBOL2002で使用できない機能

機能名

OS

説明

AIX

(64)

Linux

(x64)

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

○

×

画面節（SCREEN SECTION）を使用して画面の入出力をします。

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

○

×

画面節（WINDOW SECTION）を使用して画面の入出力をします。

XMAP3を使用した書式印刷機能

×

×

書式と行データを重ね合わせる印刷（書式オーバレイ印刷）や，印刷制御付きの行データを印刷します。

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

×

×

接続されているほかのワークステーションやPC上にある，ISAMを使用する索引編成ファイルにアクセスします。

通信節による画面操作

×

×

ディスプレイとの間で画面データを送受信したり，プリンタに帳票データを送信したりします。

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

×

○

SQL埋め込みCOBOLプログラムで，データベースにアクセスできます。

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

×

×

COBOL2002で作成したプログラムをCGIプログラムとして利用するための機能です。

（凡例）

○：使用できる

×：使用できない

(2)　サービスルーチン

AIX(64) COBOL2002およびLinux(x64) COBOL2002で使用できないサービスルーチンを次に示します。

表9‒2　AIX(64) COBOL2002およびLinux(x64) COBOL2002で使用できないサービスルーチン

サービスルーチン名

OS

説明

AIX

(64)

Linux

(x64)

CBLADDPAIR

×

×

CGIリストの最後に「名前」と「値」の対を追加します。

CBLCGIINIT

×

×

受け取ったフォーム情報からCGIリストを作成します。

CBLCGITRACE

×

×

CGIプログラムの作成を支援します。サービスルーチンのトレース情報をファイルに出力します。

CBLCONVERTTEXT

×

×

テキスト文字列を実体参照形式に変換し，出力します。

CBLCREATELIST

×

×

CGIリストを新たに作成します。

CBLDELETEPAIR

×

×

CGIリストの現在のポイント位置の「名前」と「値」の対を削除します。

CBLDESTROYLIST

×

×

CGIリストを削除し，領域を解放します。

CBLDISPLAYTEXT

×

×

テキスト文字列を出力します。

CBLENDREPEAT

×

×

CGIリストに，HTML拡張言語のREPEATで終端を認識する終端インジケータを追加します。

CBLFILLTEMPLATE

×

×

HTMLテンプレートをインタプリットし，動的なWebページを出力します。

CBLFINDNEXTPAIR

×

×

CGIリストの，次のポイント位置から「名前」をキーにして検索し，「値」を取得します。

CBLFINDPAIR

×

×

CGIリストの先頭ポイント位置から「名前」で検索し，「値」を取得します。

CBLGETENV

×

×

環境変数の値を取得します。

CBLGETPAIR

×

×

CGIリストの現在のポイント位置から「名前」と「値」の対を取得します。

CBLGETPAIRNEXT

×

×

CGIリストの現在のポイント位置から「名前」と「値」の対を取得し，ポイント位置を進めます。

CBLHTMLBEGIN

×

×

HTMLの先頭部分を出力します。

CBLHTMLEND

×

×

HTMLの終端部分を出力します。

CBLLISTCOUNT

×

×

CGIリストから「名前」と「値」の対の数を取得します。

CBLPRINTENV

×

×

CGI環境変数の値をHTML形式で出力します。

CBLPRINTLIST

×

×

CGIリストの内容をHTML形式で出力します。

CBLSENDERROR

×

×

エラーメッセージをHTML形式で出力します。

JCPOPUP

○

×

表形式のデータ項目を主画面とは別の画面に表示し，選ばれたブロック番号をインタフェース領域に格納します。

（凡例）

○：使用できる

×：使用できない

9.1.2　COBOL2002での64bitアプリケーション固有の言語仕様

AIX(64) COBOL2002，Linux(x64) COBOL2002では，ポインタサイズの64bit化に対応しました。そのため，AIX(64) COBOL2002およびLinux(x64) COBOL2002の言語仕様にも一部変更があります。

AIX(64) COBOL2002およびLinux(x64) COBOL2002固有の言語仕様について説明します。

(1)　アドレス系データを表現するデータ項目

長さが8バイトになるアドレス系データを表現するデータ項目を，次に示します。これらの項目の自然な境界は8バイトです。SYNCHRONIZED句を指定してけた詰めする場合は，8バイト境界になります。

アドレス名

アドレスデータ項目

ポインタ項目

指標名

指標データ項目

オブジェクト参照データ項目

既定義オブジェクト参照

ADDRESS OF指定で指定した一意名のアドレス

連絡節でのBY REFERENCE指定のデータ項目

SYNCHRONIZED句については，マニュアル「COBOL2002　言語　標準仕様編」の「SYNCHRONIZED句」を参照してください。

けた詰めについては，マニュアル「COBOL2002　言語　標準仕様編」の「実行用コードの効率を高めるための項目のけた詰め」を参照してください。

(2)　長さを返す組み込み関数の戻り値

返却値のサイズが8バイト2進になる組み込み関数を，次に示します。

LENGTH関数

LENGTH OF指定で生成されるデータ領域

COUNT-CHAR関数

LENGTH-OF-SUBSTRING関数

LENGTH関数については，マニュアル「COBOL2002　言語　標準仕様編」の「LENGTH関数」参照してください。

COUNT-CHAR関数については，マニュアル「COBOL2002　言語　拡張仕様編」の「COUNT-CHAR関数」を参照してください。

LENGTH-OF-SUBSTRING関数については，マニュアル「COBOL2002　言語　拡張仕様編」の「LENGTH-OF-SUBSTRING関数」を参照してください。

9.1.3　COBOL2002での64bitアプリケーション固有の機能仕様

64bitアプリケーション固有の機能仕様について説明します。

(1)　サービスルーチンの引数におけるハンドル項目

次に示すサービスルーチンについて，引数におけるハンドル項目のサイズは8バイト2進となります。

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

(2)　インタフェース領域中のアドレス格納領域

インタフェース領域中のアドレス格納領域が8バイトになるサービスルーチンを，次に示します。

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

なお，AIX(64) COBOL2002およびLinux(x64) COBOL2002では，アドレス格納領域が自然な境界の8バイトになるように，アドレス格納領域の直前に明示的な境界の調整領域を追加しました。領域については，マニュアル「COBOL2002　使用の手引　手引編」の「インタフェース領域の形式」を参照してください。

(3)　併合処理のメモリサイズについて

併合処理のメモリサイズについては，アドレス格納領域として使うサイズがAIX(64) COBOL2002およびLinux(x64) COBOL2002では8バイトになります。併合処理で使用するメモリサイズの計算式については，マニュアル「COBOL2002　使用の手引　手引編」の「併合処理のメモリサイズ」を参照してください。

9.2　COBOLソースの作成とコンパイル

AIX(64) COBOL2002およびLinux(x64) COBOL2002でのCOBOLソースのコンパイル方法は，AIX(32) COBOL2002およびLinux(x86) COBOL2002と同じです。しかし，AIX(64) COBOL2002およびLinux(x64) COBOL2002と，AIX(32) COBOL2002およびLinux(x86) COBOL2002では使用できるコンパイラオプションの一部が違います。

AIX(64) COBOL2002およびLinux(x64) COBOL2002が使用できるコンパイラオプションについては，マニュアル「COBOL2002　使用の手引　手引編」の「コンパイラオプションの一覧」を参照してください。

9.2.1　定義別のコンパイル方法とリポジトリファイル

AIX(64) COBOL2002およびLinux(x64) COBOL2002での定義別のコンパイル方法とリポジトリファイルは，AIX(32) COBOL2002およびLinux(x86) COBOL2002と同じです。

定義別のコンパイル方法とリポジトリファイルについては，マニュアル「COBOL2002　使用の手引　手引編」のプログラム定義のほかに，関数定義，クラス定義，およびインタフェース定義など，さまざまな定義の情報を保管するリポジトリファイルや定義別のコンパイル方法について説明している「定義別のコンパイル方法とリポジトリファイル」を参照してください。

9.3　プログラムの実行

ここでは，プログラムの実行について説明します。

9.3.1　プログラムの実行環境の設定

プログラムの実行環境の設定について説明します。

(1)　実行時環境変数の設定方法

AIX(64) COBOL2002およびLinux(x64) COBOL2002での実行時環境変数の設定方法は，AIX(32) COBOL2002およびLinux(x86) COBOL2002と同じです。詳細については，マニュアル「COBOL2002　使用の手引　手引編」の「実行時環境変数の設定方法」を参照してください。

(2)　実行時環境変数の一覧

AIX(64) COBOL2002およびLinux(x64) COBOL2002と，AIX(32) COBOL2002およびLinux(x86) COBOL2002では使用できる実行時環境変数の一部が違います。AIX(64) COBOL2002およびLinux(x64) COBOL2002が使用できる実行時環境変数については，マニュアル「COBOL2002　使用の手引　手引編」の「実行時環境変数の一覧」を参照してください。

9.3.2　プログラムの実行時の注意事項

AIX(64) COBOL2002およびLinux(x64) COBOL2002でのプログラム実行時の注意事項を次に示します。

AIX(64)の場合

AIX(64) COBOL2002で作成したアプリケーションからCALL文を使用して，AIX(32) COBOL2002で作成した実行可能ファイルを呼び出せます※。ただし，AIX(64) COBOL2002で作成したアプリケーションからはAIX(32) COBOL2002で作成した共用ライブラリに含まれるプログラムは呼び出せません。

注※

AIX(64) COBOL2002とAIX(32) COBOL2002がインストールされた環境で実行してください。

Linux(x64)の場合

Linux(x64) COBOL2002で作成したアプリケーションからCALL文を使用して，Linux(x86) COBOL2002で作成した実行可能ファイルを呼び出せます※。ただし，Linux(x64) COBOL2002で作成したアプリケーションからはLinux(x86) COBOL2002で作成した共用ライブラリに含まれるプログラムは呼び出せません。

注※

Linux(x64) COBOL2002とLinux(x86) COBOL2002がインストールされた環境で実行してください。

9.4　実行可能ファイルと共用ライブラリの作成

AIX(64) COBOL2002およびLinux(x64) COBOL2002での実行可能ファイルと共用ライブラリの作成の詳細については，マニュアル「COBOL2002　使用の手引　手引編」の，プログラムをコンパイルして作成したオブジェクトファイルをリンクして，実行可能ファイルや共用ライブラリを作成する方法について説明している「実行可能ファイルと共用ライブラリの作成」を参照してください。

9.4.1　実行可能ファイルと共用ライブラリの作成時の注意事項

AIX(64) COBOL2002およびLinux(x64) COBOL2002での実行可能ファイルと共用ライブラリの作成時の注意事項を次に示します。

他システムのCOBOL2002で作成したファイル（オブジェクト，共用ライブラリ，アーカイブ）をリンクすることはできません。

10　COBOL2002でのUTF-8ロケールの対応

この章では，Linux(x86) COBOL2002，Linux(x64) COBOL2002を使用する場合の注意事項について説明します。

10.1　UTF-8環境でのCOBOL2002について

ここでは，Linux(x86) COBOL2002，Linux(x64) COBOL2002の動作環境，使用できる機能，使用できるサービスルーチンについて説明します。

10.1.1　動作環境

Linux(x86) COBOL2002，Linux(x64) COBOL2002では，UTF-8ロケールだけをサポートしています。

UTF-8ロケールで動作する場合，Unicode機能を前提機能としています。このため，使用できる機能，日本語項目，および多バイト文字の使用範囲に制限があります。

UTF-8ロケールの詳細については，マニュアル「COBOL2002　使用の手引　手引編」の付録「COBOLで使用する文字集合」の「Unicodeの場合」の「UTF-8の動作環境」を参照してください。

Unicode機能の詳細については，マニュアル「COBOL2002　使用の手引　手引編」の「Unicode機能」を参照してください。

10.1.2　使用できる機能

Linux(x86) COBOL2002，Linux(x64) COBOL2002で使用できる機能については，マニュアル「COBOL2002　使用の手引　手引編」の「Unicode機能」の「Unicodeに対応する機能」を参照してください。

10.1.3　使用できるサービスルーチン

使用できるサービスルーチンに制限があります。

使用できるサービスルーチンについては，マニュアル「COBOL2002　使用の手引　手引編」の「サービスルーチン」を参照してください。

10.2　コンパイル時の注意事項

Linux(x86) COBOL2002，Linux(x64) COBOL2002でコンパイルするときの注意事項を次に示します。

シフトJISで記述されたCOBOLソースプログラムだけがコンパイルできます。UTF-8で記述されたCOBOLソースはコンパイルできません。

コンパイル時には，-UniObjGenコンパイラオプションおよび環境変数CBLSRCENCODINGにSJISを指定しなければなりません。

-UniObjGenコンパイラオプションについては，マニュアル「COBOL2002　使用の手引　手引編」の「コンパイラオプション」の「その他の設定」の「-UniObjGenオプション」を参照してください。コンパイラ環境変数CBLSRCENCODINGについては，マニュアル「COBOL2002　使用の手引　手引編」の「コンパイラ環境変数」の「コンパイラ環境変数の詳細」の「CBLSRCENCODING」を参照してください。

ccblコマンドは使用できません。ccbl2002コマンドを使用してください。

日本語文字，半角かたかななど，UTF-8で多バイトとなる文字は，言語仕様上，使用できる個所に制限があります。詳細は，マニュアル「COBOL2002　使用の手引　手引編」の「Unicode機能」の「Unicode機能での制限事項」の「コンパイル時の制限事項」を参照してください。

環境変数名，環境変数に設定する値，コマンドライン引数，コンパイル時に使用するファイル名，ディレクトリの絶対パス名，およびコンパイルを実行するカレントディレクトリの絶対パス名には，UTF-8で多バイトとなる文字は使用できません。詳細は，マニュアル「COBOL2002　使用の手引　手引編」の「Unicode機能」の「Unicode機能での制限事項」の「コンパイル時の制限事項」を参照してください。

Linux(x86) COBOL2002，Linux(x64) COBOL2002で使用できるコンパイラオプションについては，マニュアル「COBOL2002　使用の手引　手引編」の「コンパイラオプション」の「コンパイラオプションの一覧」を参照してください。また，-UniObjGenコンパイラオプションと同時に指定した場合に無効となるオプションについては，マニュアル「COBOL2002　使用の手引　手引編」の「コンパイラオプション」の「コンパイラオプションの優先順位」の「オプション間の優先順位」の「オプションを指定すると，ほかのオプションが無効となる場合」を参照してください。

Linux(x86) COBOL2002，Linux(x64) COBOL2002で使用できるコンパイラ環境変数については，マニュアル「COBOL2002　使用の手引　手引編」の「コンパイラ環境変数」の「コンパイラ環境変数の一覧」を参照してください。

コンパイルリストはシフトJISで出力されます。詳細は，マニュアル「COBOL2002　使用の手引　手引編」の「Unicode機能」の「入出力情報と取り扱う文字コード」を参照してください。

コンソールに出力するエラーメッセージはUTF-8で出力されます。詳細は，マニュアル「COBOL2002　使用の手引　手引編」の「Unicode機能」の「入出力情報と取り扱う文字コード」を参照してください。

10.3　実行可能ファイルと共用ライブラリの作成時の注意事項

Linux(x86) COBOL2002，Linux(x64) COBOL2002で，実行可能ファイルと共用ライブラリを作成するときの注意事項を次に示します。

Linux(x86) COBOL85で作成したファイル（オブジェクト，共用ライブラリ，アーカイブ）をリンクすることはできません。COBOL2002環境下で再コンパイルが必要です。

実行可能ファイル名および共用ライブラリ名にUTF-8で多バイトとなる文字を使用しないでください。使用した場合の動作は保証しません。

10.4　実行時の注意事項

Linux(x86) COBOL2002，Linux(x64) COBOL2002の実行時の注意事項を次に示します。

Linux(x86) COBOL85で作成した実行可能ファイル，または共用ライブラリは，COBOL2002環境下で実行および呼び出すことはできません。COBOL2002環境下で，COBOL85で作成したプログラムが実行または呼び出された場合，KCCC0117R-Sのメッセージが出力されます。

実行時には，環境変数CBLLANGにUNICODEを指定しなければなりません。環境変数CBLLANGなどのUnicode機能で使用する環境変数については，マニュアル「COBOL2002　使用の手引　手引編」の「Unicode機能」の「Unicode機能の詳細」の「実行」を参照してください。

日本語文字，半角かたかななど，UTF-8で多バイトとなる文字は，ファイル名に使用できないなどの制限があります。詳細は，マニュアル「COBOL2002　使用の手引　手引編」の「Unicode機能」の「Unicode機能での制限事項」の「実行時の制限事項」を参照してください。

10.5　テストデバッガ，およびカバレージ使用時の注意事項

Linux(x86) COBOL2002，Linux(x64) COBOL2002のテストデバッガ，およびカバレージ使用時の注意事項を次に示します。

テストデバッガ，またはカバレージを使用するときは，環境変数CBLLANGにUNICODE，およびCBLSRCENCODINGにSJISを指定しなければなりません。これらの環境変数の詳細については，「1.4.1　機能の概要」の「(2)　コンパイラオプションと環境変数について」を参照してください。

日本語文字，半角かたかななど，UTF-8で多バイトとなる文字は，ファイル名に使用できないなどの制限があります。詳細は，「1.4.3　その他の注意事項」の「(4)　UTF-8環境下での注意事項（Linuxの場合）」を参照してください。

日本語文字など，シフトJISとUTF-8の間で変換できない文字は，TDコマンドで使用できないなどの制限があります。詳細は，「1.4.3　その他の注意事項」の「(4)　UTF-8環境下での注意事項（Linuxの場合）」を参照してください。

付録

付録A　TDコマンドとサブコマンドの違い

COBOL2002のTDコマンドと，COBOL85のサブコマンドの違いを表A-1に示します。

表A‒1　TDコマンドとサブコマンドの違い

機能

COBOL2002

TDコマンド名

COBOL85

サブコマンド名

中断点の設定

SET BREAK

sb

中断点の解除

RESET BREAK

rb

中断点の表示

DISPLAY BREAK

db

データ値の監視の開始

SET WATCH

sw

データ値の監視の終了

RESET WATCH

rw

連続実行

GO

g

ステップイン

STEP IN

gs

ステップオーバー

STEP OVER

gp

ジャンプ

STEP TO

gs/gp

実行の強制終了

STOP

stop

トレース表示の設定

SET TRACE

st/mt

トレース表示の解除

RESET TRACE

st/mt

フロー情報の蓄積

SET FLOW

flow

フロー情報の蓄積中止

RESET FLOW

flow

フロー情報の表示

DISPLAY FLOW

df

現在位置の表示

DISPLAY POINT

dp

データ値の表示

DISPLAY DATA

dv

オブジェクトデー

タ値の表示

DISPLAY OBJEECT

dcl

DISPLAY FACTORY

データ値の代入

ASSIGN DATA

sv

データ値の比較

IF

if/else

領域の確保

ALLOCATE AREA

geta

領域の解放

FREE AREA

freea

主プログラムシミュレーション

SIMULATE MAIN

simm〜esim

副プログラムシミュレーション

SIMULATE SUB

sims〜esim

ファイルシミュレーション

SIMULATE FILE

simf〜esim

入出力文選択指定

SELECT ACTION

−

ファイル入出力条件のシミュレーション

ファイル終了条件

GO END

ge

ページ終了条件

GO EOP

geop

無効キー

GO INVALID

gi

入出力誤り

GO ERROR

gue

DCシミュレーション

SIMULATE DC

simdc〜esim

繰り返し指定

REPEAT

rpt〜erpt

実行するテストケースの指定

TEST

test〜et

テストケースの手続きの設定

CASE

case〜ec

ケースコードの指定

ASSIGN CASECODE

ccd

テストデバッガの終了

QUIT

q

テスト結果への注釈の表示

DISPLAY COMMENT

dc

翻訳単位，ソース要素の変更

SET QUALIFICATION

sq

翻訳単位指定，ソース要素指定の解除

RESET QUALIFICATION

rq

TDコマンド格納ファイルのTDコマンドの実行

#INCLUDE

i

等価規則の変更

#OPTION

−

結果出力先の指定

SET PRINT

spr

結果出力先の指定の解除

RESET PRINT

spr

ログ出力ファイルの設定

SET LOG

log

ログ出力ファイルの解除

RESET LOG

log

装置名へのファイルの割り当て

ASSIGN DEVICE

asgn

UNIXコマンドの実行

!

!

アドレスの取得

ASSIGN ADDRESS

−

付録B　制限値，限界値

付録B.1　テストデバッガの制限値，限界値

テストデバッガの制限値，限界値を次に示します。

表B‒1　テストデバッガの制限値，限界値

分類

項目

制限値，限界値

テストデバッガ

表示するデータのサイズ

32,767バイト

1行に入力できる文字列長※

511バイト

TDコマンド

1行に記述できるTDコマンド文字列長

11,264バイト以内

文番号指定の行番号に指定できる整数値

7けた以内

文番号指定の位置番号に指定できる整数値

2けた以内

添字に指定する次元数

7

添字に指定する整数定数

10けた以内

添字の範囲指定で指定する整数定数

10けた以内

部分参照の最左端位置に指定する整数定数

10けた以内

部分参照の長さに指定する整数定数

10けた以内

拡張16進定数の文字列長

160文字

TD利用者定義語であるカウンタ変数名，記号名，監視識別子，ケース識別子の文字列長

31文字

カウンタ変数に設定される値

1〜2,147,483,647

SET BREAKコマンドのSKIPオペランドに指定する整数値

1〜2,147,483,647

SET TRACEコマンドのTOSTEPオペランドに指定する整数値

1〜2,147,483,647

SET FLOWコマンドのSTACKオペランドに指定する整数値

1〜500

データの値表示の表示形式

見出し域12バイト

値域80バイト

記号名構造指定のレベル番号に指定する整数値

2けた以内

REPEATコマンドのTIMESオペランドに指定する整数値

1〜2,147,483,647

CASEコマンドのTOSTEPオペランドに指定する整数値

1〜2,147,483,647

ASSIGN CASECODEコマンドで設定できる値

0〜2,147,483,647

TDコマンド群のネスト数

128以内

カバレージ

カバレージ情報の表示形式：対象総数，実行済数，未実行数

8けた

カバレージ情報の表示形式：変更回数

0〜32,767

カバレージ情報の表示形式：テスト回数

0〜32,766

カバレージ情報の表示形式：実行回数

0〜2,147,483,647

注※

ラインモードの場合です。記載の値を超える文字列を端末から入力したときの動作は保証しません。

付録C　テストデバッガの例題

付録C.1　例題プログラム

(1)　主プログラム（AVERAGE）

入力ファイルIN-FILEからEnglish，Japanese，Mathematicsの得点を入力し，3教科の平均点を表示するプログラムです。

000010 IDENTIFICATION  DIVISION.
000020 PROGRAM-ID.     AVERAGE.
000030
000040 ENVIRONMENT     DIVISION.
000050 INPUT-OUTPUT    SECTION.
000060 FILE-CONTROL.
000070      SELECT     IN-FILE  ASSIGN TO SYS001
000080        ORGANIZATION IS LINE SEQUENTIAL.
000090      SELECT     OUT-FILE ASSIGN TO SYS002.
000100 DATA            DIVISION.
000110 FILE            SECTION.
000120 FD   IN-FILE.
000130 01   IN-REC.
000140  02   IN-POINT  PIC 9(9).
000150  02   FILLER    PIC X.
000160 FD   OUT-FILE   LABEL RECORD OMITTED.
000170 01   OUT-REC    PIC X(80).
000180 WORKING-STORAGE SECTION.
000190 01  PR-REC.
000200  02  FILLER     PIC X(13) VALUE SPACE.
000210  02  E-POINT    PIC Z(3)9.
000220  02  FILLER     PIC X(6)  VALUE SPACE.
000230  02  K-POINT    PIC Z(3)9.
000240  02  FILLER     PIC X(8)  VALUE SPACE.
000250  02  S-POINT    PIC Z(3)9.
000260  02  FILLER     PIC X(5)  VALUE SPACE.
000270  02  A-POINT    PIC Z(3)9.
000280  02  FILLER     PIC X(31) VALUE SPACE.
000290 01  TITLE.
000300  02  FILLER     PIC X(10) VALUE SPACE.
000310  02  T-REC      PIC X(40)
000320              VALUE 'English  Japanese  Mathematics  Average'.
000330  02  FILLER     PIC X(30) VALUE SPACE.
000340 01  ERR-MSG.
000350  02  FILLER     PIC X(10)  VALUE SPACE.
000360  02  ERMSG      PIC X(34)
000370              VALUE '** Error:  Input data is mistaken.'.
000380  02  ERMSG2     PIC X(18) VALUE ' ==> error data:'.
000390  02  ER-REC.
000400   03  ER-DATA   PIC 9(9).
000410  02  FILLER     PIC X(9)  VALUE SPACE.
000420 01  NO-MSG.
000430  02  FILLER     PIC X(10) VALUE SPACE.
000440  02  NMSG       PIC X(40)
000450              VALUE '** Information:  There is no input data.'.
000460  02  FILLER     PIC X(30) VALUE SPACE.
000470 77  ENDM        PIC X(3).
000480 88  END-OF-FIL  VALUE 'EOF'.
000490 01  WORK-TBL.
000500  02  W-TBL      OCCURS 20.
000510   03  W-REC.
000520    04  WE-P     PIC 9(3).
000530    04  WK-P     PIC 9(3).
000540    04  WS-P     PIC 9(3).
000550   03  WA-P      PIC 9(4).
000560   03  R-CODE    PIC 9.
000570 77  I           PIC 9(3).
000580 77  J           PIC 9(3).
000590*
000600 PROCEDURE       DIVISION.
000610 MAIN-PROCESS    SECTION.
000620 OPEN-FILE.
000630        OPEN INPUT  IN-FILE
000640             OUTPUT OUT-FILE.
000650 MAKING-WTBL.
000660        READ IN-FILE
000670             AT END MOVE 'EOF' TO ENDM.
000680        PERFORM VARYING I FROM 1 BY 1 UNTIL END-OF-FIL
000690          MOVE IN-POINT TO W-REC(I)
000700          READ IN-FILE AT END MOVE 'EOF' TO ENDM
000710          END-READ
000720         END-PERFORM.
000730 ZERO-CHECK.
000740        COMPUTE I = I - 1.
000750        IF I = 0
000760          WRITE OUT-REC FROM NO-MSG AFTER 1
000770          GO TO CLOSE-FILE
000780        ELSE
000790          CONTINUE
000800        END-IF.
000810 CALCULATE.
000820        CALL 'SUBAV' USING WORK-TBL I.
000830 PRINTING-DATA.
000840        PERFORM  DATA-PUT.
000850 CLOSE-FILE.
000860       CLOSE IN-FILE OUT-FILE.
000870       STOP RUN.
000880*
000890 DATA-PUT        SECTION.
000900 PRINTING-TITLE.
000910        WRITE OUT-REC FROM TITLE AFTER 1.
000920 PRINTING-AVERAGE.
000930        PERFORM VARYING J FROM 1 BY 1 UNTIL J > I
000940          IF R-CODE(J) = 8
000950            MOVE W-REC(J) TO ER-REC
000960            WRITE OUT-REC FROM ERR-MSG AFTER 1
000970          ELSE
000980            MOVE WE-P(J) TO E-POINT
000990            MOVE WK-P(J) TO K-POINT
001000            MOVE WS-P(J) TO S-POINT
001010            MOVE WA-P(J) TO A-POINT
001020            WRITE OUT-REC FROM PR-REC AFTER 1
001030          END-IF
001040        END-PERFORM.
001050 END PROGRAM AVERAGE.

(2)　副プログラム（SUBAV）

平均点を計算するプログラムです。

000010 IDENTIFICATION  DIVISION.
000020 PROGRAM-ID.     SUBAV.
000030 ENVIRONMENT     DIVISION.
000040 DATA            DIVISION.
000050 WORKING-STORAGE SECTION.
000060 77  I            PIC S9(8) COMP.
000070 77  J            PIC S9(8) COMP.
000080 77  K            PIC S9(8) COMP.
000090 77  L            PIC S9(8) COMP.
000100 77  M            PIC S9(8) COMP.
000110 77  MM           PIC S9(8) COMP.
000120 77  CHGSW        PIC X     VALUE LOW-VALUE.
000130 88  NO-CHANGE    VALUE HIGH-VALUE.
000140 88  ALL-CHANGE   VALUE LOW-VALUE.
000150 01  SORT-TBL.
000160  02  S-TBL       OCCURS 20 INDEXED BY DATA-INDEX
000170                                       COMP-INDEX1
000180                                       COMP-INDEX2.
000190   03  S-P.
000200    04  FILLER    PIC 9(9).
000210   03  SA-P       PIC 9(4).
000220   03  FILLER     PIC 9.
000230 01  SW-TBL.
000240  02  SORT-ITEM   INDEX  OCCURS 20 INDEXED BY SORT-INDEX.
000250 LINKAGE         SECTION.
000260 01  WORK-TBL.
000270  02  W-TBL       OCCURS 20.
000280   03  W-REC.
000290    04  WE-P      PIC 9(3).
000300    04  WK-P      PIC 9(3).
000310    04  WS-P      PIC 9(3).
000320   03  WA-P       PIC 9(4).
000330   03  R-CODE     PIC 9.
000340 77  KOSU         PIC 9(3).
000350*
000360 PROCEDURE       DIVISION USING WORK-TBL KOSU.
000370 MAIN-PROCESS    SECTION.
000380 DATA-CHEK-AND-COMPUTE.
000390        PERFORM VARYING I FROM 1 BY 1 UNTIL I > KOSU
000400          MOVE ZERO TO WA-P(I)
000410          IF WE-P(I) > 100 OR
000420             WK-P(I) > 100 OR
000430             WS-P(I) > 100
000440            MOVE 8 TO R-CODE(I)
000450          ELSE
000460            MOVE 0 TO R-CODE(I)
000470            COMPUTE WA-P(I) ROUNDED
000480              = (WE-P(I) + WK-P(I) + WS-P(I)) / 3
000490          END-IF
000500          MOVE W-TBL(I) TO S-TBL(I)
000510        END-PERFORM.
000520        PERFORM DATA-SORT.
000530        EXIT PROGRAM.
000540*
000550 DATA-SORT       SECTION.
000560        IF KOSU = 1 THEN
000570          GO TO DATA-SORT-EXIT
000580        ELSE
000590          CONTINUE
000600        END-IF.
000610        PERFORM VARYING I FROM 1 BY 1 UNTIL I > 20
000620          SET DATA-INDEX TO I
000630          SET SORT-ITEM(I) TO DATA-INDEX
000640        END-PERFORM.
000650        MOVE 2 TO M.
000660        PERFORM UNTIL M > KOSU
000670          COMPUTE M = M * 2
000680        END-PERFORM.
000690        COMPUTE M = M / 2 - 1.
000700        PERFORM UNTIL M < 1
000710          PERFORM VARYING I FROM 1 BY 1 UNTIL I > M
000720            PERFORM VARYING J FROM I BY M UNTIL J + M > KOSU
000730              COMPUTE K = J + M
000740              SET COMP-INDEX1 TO SORT-ITEM(J)
000750              SET COMP-INDEX2 TO SORT-ITEM(K)
000760              IF SA-P(COMP-INDEX1) < SA-P(COMP-INDEX2) THEN
000770                SET SORT-ITEM(K) TO COMP-INDEX1
000780                MOVE LOW-VALUE TO CHGSW
000790                COMPUTE MM = - M
000800                PERFORM VARYING K FROM J BY MM
000810                        UNTIL K - M < I OR NO-CHANGE
000820                  COMPUTE L = K - M
000830                  SET COMP-INDEX1 TO SORT-ITEM(L)
000840                  IF SA-P(COMP-INDEX1) < SA-P(COMP-INDEX2) THEN
000850                    SET SORT-ITEM(K) TO COMP-INDEX1
000860                  ELSE
000870                    SET SORT-ITEM(K) TO COMP-INDEX2
000880                    MOVE HIGH-VALUE TO CHGSW
000890                  END-IF
000900                END-PERFORM
000910                IF ALL-CHANGE THEN
000920                  IF J = I THEN
000930                    SET SORT-ITEM(J) TO COMP-INDEX2
000940                  ELSE
000950                    SET SORT-ITEM(L) TO COMP-INDEX2
000960                  END-IF
000970                ELSE
000980                  CONTINUE
000990                END-IF
001000              ELSE
001010                CONTINUE
001020              END-IF
001030            END-PERFORM
001040          END-PERFORM
001050          COMPUTE M = M / 2
001060        END-PERFORM.
001070        PERFORM VARYING J FROM 1 BY 1 UNTIL J > KOSU
001080          SET DATA-INDEX TO SORT-ITEM(J)
001090          MOVE S-TBL(DATA-INDEX) TO W-TBL(J)
001100        END-PERFORM.
001110 DATA-SORT-EXIT.
001120        EXIT.
001130 END PROGRAM SUBAV.

(3)　実行結果

付録C.2　TDコマンドとその結果

(1)　TDコマンドの例

入力ファイル（IN-FILE）と副プログラム（SUBAV）が未完成な場合，擬似実行によって主プログラムをテストします。

図C‒1　テストケース1（TDコマンドの例）

注※

テストケース1のTDコマンド群

図C‒2　テストケース2（TDコマンドの例）

注※

テストケース2のTDコマンド群

図C‒3　テストケース3（TDコマンドの例）

注※

テストケース3のTDコマンド群

(2)　カバレージ情報

付録C.2(1)に示したTDコマンド群（テストケース1〜3）で，主プログラム（AVERAGE）の単体テストをした結果のカバレージ情報を次に示します。

図C‒4　テストケース1（カバレージ情報）

図C‒5　テストケース2（カバレージ情報）

図C‒6　テストケース3（カバレージ情報）

付録C.3　カバレージ情報の操作

(1)　プログラム情報ファイルのマージ

次の例では，プログラム情報ファイルをマスタ用ファイルとテスト用ファイルに分けて使用します。カバレージ情報はテスト用ファイルに蓄積し，テスト後にマスタ用ファイルにマージします。このようにプログラム情報ファイルを使用すると，ファイルを保護したり，同一のテストプログラムを複数の使用者でテストしたりできます。

（使用例）

プログラム情報ファイル/usr/test/master/testa.cbpをマスタ用ファイルとして使用する。

テスト方法

cp /usr/test/master/testa.cbp /usr/tmp/testa.cbp  …1.
CBLPIDIR=/usr/tmp                                 …2.
export CBLPIDIR
cbltd2k -input /usr/batch/testa01.tdi -Execute /usr/test/testa    …3.

マスタ用のプログラム情報ファイルをコピーする。

蓄積したカバレージ情報を格納するディレクトリを環境変数CBLPIDIRで設定する。

cbltd2kコマンドでプログラムのテストを実行し，カバレージ情報を蓄積する。TDコマンド格納ファイル中のGO TDコマンドには，COVERAGEオペランドを指定しておく。

マージ方法

cblca2k -merge /usr/test/master/testa.cbp -input /usr/tmp/testa.cbp

付録D　カバレージ情報の表示例

付録D.1　カバレージ情報の表示例（テキスト形式）

(1)　翻訳単位の一覧表示

名称欄には，プログラム名，またはクラス名が最大8文字で表示されます。名称が9文字以上の場合，名称欄には記号（＊）が表示され，正しい名称は〈名称〉の欄に表示されます。

種別欄には，プログラムの場合は「P」が，クラスの場合は「C」，利用者定義関数の場合は「T」が表示されます。

(2)　まとめ情報の表示

変更回数：最初のコンパイル時からのCOBOLソースファイルの変更回数を示します。

テスト回数：カバレージ情報を蓄積した回数を示します。

テスト日時：カバレージ情報を蓄積した最新の日時を表示します。

(3)　全ソース表示

表D‒1　全ソース表示の説明

項目

内容

翻訳単位名の種別

プログラム名・クラス名・利用者定義関数名

翻訳単位名

翻訳単位の名称

コンパイル日時

翻訳単位を含む原始プログラムをコンパイルした日時

テスト日時

翻訳単位を含む原始プログラムのカバレージ情報を最後に蓄積した日時

変更回数

翻訳単位を含む原始プログラムを変更した回数

テスト回数

翻訳単位を含む原始プログラムを実行した回数

ソース要素名の種別

プログラム名・メソッド名・利用者定義関数名

ソース要素名

ソース要素の名称

変更

Y：原始プログラムの変更された行

#：原始プログラムの変更により影響がある行

<C0 >

*：実行が済んだ文

.：実行していない文

<C1 >

@：実行が済んだ分岐

.：実行していない分岐

行番号

コンパイラが振り直した行番号

ソーステキスト

原始プログラムの行

(4)　差分ソース表示

(5)　未実行表示

(6)　差分未実行ソース表示

(7)　呼び出し文ソース表示

付録D.2　カバレージ情報の表示例（CSV形式）

(1)　カバレージ統計情報の出力

AIX(32) COBOL2002で実行したときの表示例を次に示します。

"バージョン","出力日時"
"COBOL2002 (A)  04-10","2019-04-01 11:00:00"

"プログラム情報ファイル格納先","プログラム情報ファイル名","ソースカバレージ情報CSV","翻訳単位名","コンパイル日時","テスト日時","変更回数","テスト回数","種別","C0対象総数","C0実行済数","C0カバレージ率","差分C0対象総数","差分C0実行済数","差分C0カバレージ率","C1対象総数","C1実行済数","C1カバレージ率","差分C1対象総数","差分C1実行済数","差分C1カバレージ率","S1対象総数","S1実行済数","S1カバレージ率","差分S1対象総数","差分S1実行済数","差分S1カバレージ率"
"/home/COBOL/CBP","foemat_outline.cbp","/home/COBOL/CV_CSV/foemat_outline_source.csv","FORMAT_OUTLINE","2019-04-01 09:00:00","2019-04-01 10:00:00","0","1","C","10","2","20.0","0","0","-","0","0","-","0","0","-","0","0","-","0","0","-"
"/home/COBOL/CBP","foemat_outline.cbp","/home/COBOL/CV_CSV/foemat_outline_source.csv","-","2019-04-01 09:00:00","-","-","-","-","10","2","20.0","0","0","-","0","0","-","0","0","-","0","0","-","0","0","-"
"/home/COBOL/CBP","makeline.cbp","/home/COBOL/CV_CSV/makeline_source.csv","MAKELINE","2019-04-01 09:00:00","2019-04-01 10:00:00","1","2","C","16","12","75.0","3","1","33.3","4","2","50.0","2","1","50.0","5","5","100.0","0","0","-"
"/home/COBOL/CBP","makeline.cbp","/home/COBOL/CV_CSV/makeline_source.csv","-","2019-04-01 09:00:00","-","-","-","-","16","12","75.0","3","1","33.3","4","2","50.0","2","1","50.0","5","5","100.0","0","0","-"
"/home/COBOL/CBP","outline.cbp","/home/COBOL/CV_CSV/outline_source.csv","OUTLINE","2019-04-01 09:00:00","2019-04-01 10:00:00","1","2","C","25","10","40.0","1","1","100.0","6","3","50.0","0","0","-","0","0","-","0","0","-"
"/home/COBOL/CBP","outline.cbp","/home/COBOL/CV_CSV/outline_source.csv","-","2019-04-01 09:00:00","-","-","-","-","25","10","40.0","1","1","100.0","6","3","50.0","0","0","-","0","0","-","0","0","-"

出力内容については，「6.2.6　カバレージ情報の表示（CSV形式）」の「(1)　カバレージ統計情報の出力」を参照してください。

(2)　ソースカバレージ情報の出力

AIX(32) COBOL2002で実行したときの表示例を次に示します。

"バージョン","出力日時","コンパイル日時","プログラム情報ファイル格納先","プログラム情報ファイル名"
"COBOL2002 (A)  04-10","2019-04-01 11:00:00","2019-04-01 09:00:00","/home/COBOL/CBP","makeline.cbp"

"翻訳単位名","ソース要素種別","ソース要素名","未実行ソース","差分ソース","差分未実行ソース","呼び出し文ソース","コメント行","変更","C0","C1","行番号","ソーステキスト"
"MAKELINE","METHOD","INIT_MAKELINE_F",,,,,,,,,"0000021"," PROCEDURE  DIVISION."
"MAKELINE","METHOD","INIT_MAKELINE_F",,,,"ACT",,,"*",,"0000022","     INVOKE SUPER  'INIT-COLORS-F'."
"MAKELINE","METHOD","INIT_MAKELINE_F",,,,"ACT",,,"*",,"0000023","     CALL 'CBLEXEC' USING EXEC-NAME-LEN EXEC-NAME EXEC-PARM."
"MAKELINE","METHOD","INIT_MAKELINE_F",,,,,,,"*",,"0000024"," EXIT  METHOD."
"MAKELINE","METHOD","INIT_MAKELINE_F",,,,,,,,,"0000025"," END  METHOD  INIT-MAKELINE-F."
"MAKELINE","METHOD","INIT_MAKELINE_F",,,,,,,,,"0000026",
"MAKELINE","METHOD","INIT_MAKELINE_F",,,,,,,,,"0000027"," END FACTORY."
"MAKELINE","METHOD","INIT_MAKELINE_O",,,,,,,,,"0000042"," PROCEDURE  DIVISION."
"MAKELINE","METHOD","INIT_MAKELINE_O",,,,"ACT",,,"*",,"0000043","     INVOKE  SUPER  'INIT-COLORS-O'."
"MAKELINE","METHOD","INIT_MAKELINE_O",,,,,,,"*",,"0000044","     COMPUTE  MSGCOUNT  =  0."
"MAKELINE","METHOD","INIT_MAKELINE_O",,,,,,,"*",,"0000045","     EXIT  METHOD."
"MAKELINE","METHOD","INIT_MAKELINE_O",,,,,,,,,"0000046"," END  METHOD  INIT-MAKELINE-O."
"MAKELINE","METHOD","DRAWLINE",,,,,,,,,"0000056"," PROCEDURE  DIVISION  USING  I-COLOR."
"MAKELINE","METHOD","DRAWLINE",,,,"ACT",,,"*",,"0000057","     INVOKE  SELF  'CHECK-MY-PALETTE'  RETURNING  MINE."
"MAKELINE","METHOD","DRAWLINE",,,,,,,"*",,"0000058","     EVALUATE  MINE"
"MAKELINE","METHOD","DRAWLINE",,,,,,,,"@","0000059","       WHEN  I-COLOR"
"MAKELINE","METHOD","DRAWLINE",,,,"ACT",,,"*","@","0000060","         INVOKE  SUPER  'WHATCOLOR'  USING  BY  CONTENT  I-COLOR"
"MAKELINE","METHOD","DRAWLINE",,,,,,,,,"0000061","                                   RETURNING  IRO"
"MAKELINE","METHOD","DRAWLINE",,,,,,,"*",,"0000063","           DISPLAY  IRO  'の線を書きました'"
"MAKELINE","METHOD","DRAWLINE","UNEX",,,,,,,".","0000064","       WHEN  OTHER"
"MAKELINE","METHOD","DRAWLINE","UNEX",,,,,,".",,"0000067","         COMPUTE  MSGCOUNT  =  MSGCOUNT  +  1"
"MAKELINE","METHOD","DRAWLINE","UNEX",,,,,,".",,"0000068","         DISPLAY  '同色の絵の具がパレットにありません'"
"MAKELINE","METHOD","DRAWLINE",,,,,,,,,"0000069","     END-EVALUATE."
"MAKELINE","METHOD","DRAWLINE","UNEX","DIFF","UNEXDIFF",,,"Y","*",".","0000070","     IF  MSGCOUNT  >  20  THEN"
"MAKELINE","METHOD","DRAWLINE","UNEX","DIFF","UNEXDIFF",,,"#",".",,"0000071","       DISPLAY  'ﾍﾙﾌﾟを参照して使用方法を確認してください'"
"MAKELINE","METHOD","DRAWLINE","UNEX","DIFF","UNEXDIFF",,,"#",".",,"0000072","       COMPUTE  MSGCOUNT  =  0"
"MAKELINE","METHOD","DRAWLINE",,"DIFF",,,,,,,"0000073","     END-IF."
"MAKELINE","METHOD","DRAWLINE",,"DIFF",,,,"#",,"@",,
"MAKELINE","METHOD","DRAWLINE",,,,,,,"*",,"0000074","     EXIT  METHOD."
"MAKELINE","METHOD","DRAWLINE",,,,,,,,,"0000075"," END METHOD  DRAWLINE."
"MAKELINE","METHOD","DRAWLINE",,,,,,,,,"0000077"," END OBJECT."
"MAKELINE","METHOD","DRAWLINE",,,,,,,,,"0000079"," END CLASS MAKELINE."

出力内容については，「6.2.6　カバレージ情報の表示（CSV形式）」の「(2)　ソースカバレージ情報の出力」を参照してください。

付録D.3　カウント情報の表示例

付録E　このマニュアルの参考情報

このマニュアルを読むに当たっての参考情報を示します。

付録E.1　関連マニュアル

このマニュアルは次のマニュアルと関連があります。必要に応じてお読みください。

COBOL2002　使用の手引　手引編　（4010-1J-802）

COBOL2002　言語　標準仕様編　（4010-1J-804）

COBOL2002　言語　拡張仕様編　（4010-1J-805）

COBOL2002　Cosminexus連携機能ガイド　（4010-1J-806）

COBOL2002　XML連携機能ガイド　（4010-1J-808）

COBOL2002　メッセージ　（4010-1J-809）

Hitachi Code Converter（UNIX編）　（3020-7-358）

付録E.2　このマニュアルでの表記

このマニュアルでは，マイクロソフト製品の名称を次のように表記しています。

マニュアルでの表記

製品名

Excel

Microsoft Excel

このマニュアル中では，「このシステム」と表現している場合，「COBOL2002」を示しています。

また，このマニュアルは，製品種別によって相違点があります。本文中での製品種別ごとの表記を次に示します。

マニュアルでの表記

該当する製品の形名

UNIXまたはUNIX COBOL2002

AIX

AIX(32)またはAIX(32) COBOL2002

−※

AIX(64)またはAIX(64) COBOL2002

−※

Linux

Linux(x86)またはLinux(x86) COBOL2002

−※

Linux(x64)またはLinux(x64) COBOL2002

P-9W36-1251

P-9W36-2251

注※

該当する製品の形名の詳細は，「リリースノート」でご確認ください。

また，このマニュアルでは各製品を次のように表記しています。

マニュアルでの表記

製品名

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

XMAP3の製品を区別する必要がある場合は，それぞれの製品名称を表記しています。

日立COBOL2002のことを日立COBOL2002，または単にCOBOL2002と表記しています。

日立COBOL85のことを日立COBOL85，または単にCOBOL85と表記しています。また，プラットフォームを明確にする必要がある場合は，「PC COBOL85」「VOS3 COBOL85」のように表記しています。

リストのヘッダ部に表示されるCOBOL2002の識別記号を次のように表記しています。識別記号以外については，マニュアル「COBOL2002　使用の手引　手引編」のコンパイルリストを参照してください。

識別記号（ｃ）

内容

Aと表示された場合

AIX(32)であることを示します。

Bと表示された場合

AIX(64)であることを示します。

Jと表示された場合

Linux(x86)であることを示します。

Kと表示された場合

Linux(x64)であることを示します。

CSVファイルのヘッダ部の「バージョン」に表示されるCOBOL2002の識別記号を（ｃ）と表記しています。識別記号以外については，「6.2.6　カバレージ情報の表示（CSV形式）」を参照してください。

識別記号（ｃ）

内容

Aと表示された場合

AIX(32)であることを示します。

Bと表示された場合

AIX(64)であることを示します。

Jと表示された場合

Linux(x86)であることを示します。

Kと表示された場合

Linux(x64)であることを示します。

コンパイラオプションの説明では，次の表記を使用します。

「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だけを意味します。

付録E.3　KB（キロバイト）などの単位表記について

1KB（キロバイト），1MB（メガバイト），1GB（ギガバイト），1TB（テラバイト）はそれぞれ1,024バイト，1,024²バイト，1,024³バイト，1,024⁴バイトです。

付録F　用語解説

（英字）

BOM（バイトオーダマーク）

ファイルの先頭に付加された，Unicodeの表現形式を表す情報。

COBOL2002では，テキスト編成ファイルに対してこの情報を付加する。本文中では，Unicodeシグニチャと表記する。

C0メジャー情報

全体の実行文の数に対する実行済み文の数の割合を示す情報。

C1メジャー情報

全体の分岐の数に対する実行済みの分岐の数の割合を示す情報。

IVS（Ideographic Variation Sequence/Selector）

漢字を表すUnicodeの直後に Variation Selectorと呼ばれるコードを付加し，漢字の「異体字」を表現する方法のこと。

COBOL2002では，用途がDISPLAYおよびNATIONALの項目で使用する。

S1メジャー情報

全体の呼び出し文（CALL文，INVOKE文）の数に対する実行済みの呼び出し文の数の割合を示す情報。

SELF

メッセージの受け手のオブジェクトを参照するための名前。SELFが参照するオブジェクトをSELFオブジェクトという。メソッド中で使用されるSELFは，そのメソッドの呼び起こし対象のオブジェクト自身のことを表す。

TDコマンド

テストデバッグで使用するコマンド。

UCS-2（Universal multi-octet Character Set 2）

符号化文字集合の一つの形式。1文字を2バイトで表現する。

COBOL2002では，用途がDISPLAYおよびNATIONALの項目でサポートする。

UCS-4（Universal multi-octet Character Set 4）

符号化文字集合の一つの形式。1文字を4バイトで表現する。

COBOL2002では，用途がDISPLAYおよびNATIONALの項目でUCS-4の範囲をサポートする。

Unicode

1バイトでは表現できない文字セットを含めあらゆる文字セットをサポートした文字コード。代表的な符号化文字集合としてUCS-2，UCS-4がある。代表的なエンコーディングスキーマとしてUTF-8，UTF-16がある。

COBOL2002では，UCS-4の範囲（UCS-2の範囲を含む）をサポートする。

本文中では，符号化文字集合，およびエンコーディングスキーマを文字コードと表記する。

UTF-16(16-bit UCS Transformation Format)

エンコーディングスキーマの一つの形式。1つのコード単位を2バイトとし，1文字を1コード単位（2バイト），または2コード単位（4バイト）で表現する。UTF-16では2バイトのコード単位の1バイト目を先に書くビッグエンディアン形式（UTF-16BE）と1バイト目を後に書くリトルエンディアン形式（UTF-16LE）がある。

COBOL2002では，用途がNATIONALの項目でUCS-4の範囲（UCS-2の範囲を含む）をサポートする。

UTF-8(8-bit UCS Transformation Format)

エンコーディングスキーマの一つの形式。ASCII文字を1バイト，日本語文字を3〜8バイト，半角かたかなを3バイトで表現する。

COBOL2002では，用途がDISPLAYの項目で使用する。

（ア行）

入れ子プログラム

原始プログラムが入れ子構造になっている場合の，内側のプログラムのこと。内側のプログラム，または内部プログラムともいう。

インスタンスオブジェクト（instance object）

あるクラスに属するオブジェクトのこと。「BASEクラス」のファクトリオブジェクトのメソッド「NEWクラス」の呼び起こしによって生成され，実行単位の終了か，ガーベジコレクションによって消滅させられる。

インタフェース（interface）

メッセージの送り手から見えるオブジェクトの部分のこと。

例えば，現金支払い機を一つのオブジェクトとすると，「引き出し」「預け入れ」などのメニューがインタフェースに当たり，そのサービスを実現するための内部的な仕組みが実装に当たる。インタフェースは，メソッド原型の集合である。つまり，どのようなメソッド原型を持つかによって，オブジェクトが持つインタフェースの型が決まる。インタフェースは，クラスとは別に定義できる。

内側のプログラム

原始プログラムが入れ子構造になっている場合の，内側のプログラムのこと。入れ子プログラム，または内部プログラムともいう。

オブジェクト（object）

データとそのデータを操作するメソッド（手続き）を一体化させたモジュール。オブジェクトは，ある特定の仕事を受け持ち，所定のメッセージに対してメソッドを動作させることで問題を処理する。オブジェクト指向のプログラムでは，オブジェクト同士がメッセージのやり取りをすることによって，問題が処理される。

オブジェクト参照データ項目

オブジェクトを参照するためのデータ。オブジェクト参照は，データ項目に，USAGE IS OBJECT REFERENCE句を指定したもの。

オブジェクト指向（Object Orientation）

現実にある「もの」（オブジェクト）同士のやり取りをモデル化し，それをそのままコンピュータの世界でも実現しようとする考え方のこと。

オプション

コンパイラやコマンドへの動作を指示するためのもの。

（カ行）

外部プログラム

原始プログラムが入れ子構造になっている場合の，最も外側のプログラムのこと。このマニュアルでは，外部プログラムのことを最外側のプログラムと呼ぶ。

カウント情報

プログラム中の文の実行回数をカウントして数値で表したもの。

型（type）

ある集合の中の個々を，何によって識別するかを明示するもの。例えば，プログラムを構成する要素をデータごとに識別する場合は，データ型となる。

活性化されるプログラム

CALL文の対象となるプログラムで，実行時に呼び出し元プログラムと組み合わされて1個の実行単位となる。このマニュアルでは，活性化されるプログラムのことを呼び出し先のプログラムと呼ぶ。

カバレージ情報

テストの進捗状況を数値で表したもので，C0メジャー情報，C1メジャー情報，S1メジャー情報，およびこれらの差分情報がある。

環境変数

実行可能ファイルおよびその実行環境へのオプションを変数として設定しておくもの。

クラス（class）

ある共通の性質を持つオブジェクトを一つのグループにまとめて定義したもの。クラスでは，それに属するオブジェクトのデータおよびメソッドを定義することで，そのクラスに属するオブジェクトの型を規定する。

継承（inheritance）

スーパクラスから，その性質（メソッド）をサブクラスが受け継ぐ仕組みのこと。COBOL2002のオブジェクト指向機能では，INHERITS句を指定することでスーパクラスから，その性質を継承できる。一つのクラスの性質を継承することを単純継承という。これに対して，複数のスーパクラスの性質を継承することを多重継承という。また，多重継承の結果，同じクラスを重複して継承することをダイヤモンド継承という。

コンパイル

原始プログラムを翻訳すること。

COBOLプログラムのコンパイルは，ccbl2002コマンドで実行する。

（サ行）

最外側のプログラム

原始プログラムが入れ子構造になっている場合の，最も外側のプログラムのこと。外部プログラムともいう。

サブクラス（subclass）

クラスの階層関係の中の継承する側のクラス。

差分カバレージ情報

原始プログラムの修正によって影響を受けた部分に対するカバレージ情報。

サロゲート

UTF-16の拡張で，2つのコード単位（4バイト）で1文字を表す機能。この2つのコード単位の組み合わせのことをサロゲートペアと呼ぶ。

COBOL2002では，用途がNATIONALの項目で使用する。

実行可能プログラム

呼び出し元のプログラムと呼び出し先のプログラムをコンパイル，リンクし，一つの実行できるプログラムにしたもの。

実行時要素

プログラム定義，メソッド定義，および関数定義の総称。このマニュアルでは，実行時要素のことをプログラムと呼ぶ。

スーパクラス（superclass）

クラスの階層関係の中の継承される側のクラス。

（タ行）

単体テスト

プログラム（コンパイル）単位のテスト。

定数長拡張機能

英数字定数の定数長を拡張できるようにする機能。英数字定数の長さの限界値を160文字（バイト）から8,191文字（バイト）に拡張できる。

定数長を拡張するプログラムのコンパイル時には，-LiteralExtend,Alnumコンパイラオプションを指定する。

動的長基本項目（dynamic-length elementary item）

実行時に長さを変更できるデータ項目（英数字項目または日本語項目）のこと。DYNAMIC LENGTH句で定義する。動的長基本項目に新しい値が格納されると，項目の長さは自動的に調整される。

動的長基本項目は格納する値によって長さが変わる。想定以上にデータ項目の長さが長くなることを防ぐため，データ項目の最大長はLIMITで指定できる。

（ナ行）

内部プログラム

原始プログラムが入れ子構造になっている場合の，内側のプログラムのこと。このマニュアルでは，内部プログラムのことを内側のプログラム，または入れ子プログラムと呼ぶ。

日本語集団項目（national group item）

用途がNATIONALで字類および項類が日本語となる集団項目。日本語集団項目となるデータ項目には，明示的にまたは暗黙的にGROUP-USAGE IS NATIONALの指定が必要。

日本語集団項目の従属項目は，日本語項目，日本語編集項目および日本語集団項目だけとなる。

（ハ行）

バイトオーダ

2バイト以上のデータの記録を行う順序のこと。例えば，0x1234のデータを0x1234のように最上位のバイトから順番に記録する方式をビッグエンディアン，0x3412のように最下位のバイトから順番に記録する方式をリトルエンディアンという。2バイトのUTF-16は，バイトオーダを意識する。

ファクトリオブジェクト

一つのクラス中のすべてのオブジェクトが共有するデータ（ファクトリデータ）とそれを操作するためのメソッド（ファクトリメソッド）から成るオブジェクト。ファクトリオブジェクトは，実行単位の開始によって生成され，実行単位が終了すると消滅させられる。

ファクトリデータ

一つのクラス中のすべてのオブジェクトが共有するデータのこと。ファクトリメソッドによって操作される。

ファクトリメソッド

ファクトリデータを操作するためのメソッド。

プログラム

プログラム定義，メソッド定義，および関数定義の総称。実行時要素ともいう。

（マ行）

マルチスレッド

プログラム内の仕事を，スレッドという単位に分けて実行する方式。複数のプログラムを並列に実行できる。

見た目幅

Unicode機能の組み込み関数で使用する，文字の見た目の幅。半角文字の幅は1，全角文字の幅は2として扱う。

Unicode機能の組み込み関数で，文字を見た目幅で数える場合に使用する。

メソッド（method）

オブジェクトが提供するサービス（メソッド原型という）とそのサービスの実装を定義した手続き。オブジェクト間のやり取りは，すべてメソッドを通して行われる。メソッドには，ファクトリメソッドおよびインスタンスメソッドの2種類がある。

メソッド原型（method prototype）

メソッドを定義する際，メソッドが提供するインタフェースを定義した部分。メソッド原型は，メソッド名と，パラメタおよび終了コードから成る。

メソッドの呼び起こし（method invocation）

オブジェクトに対してメソッドを呼び起こすこと。COBOL2002では，INVOKE文によってメソッドを呼び起こす。

（ヤ行）

呼び出し先プログラム（called program，subprogram）

CALL文の対象となるプログラムであって，実行時に呼び出し元プログラムと組み合わされて1個の実行単位となる。

呼び出し元プログラム（calling program）

CALL文を実行してほかのプログラムを呼ぶプログラム。

索引

記号

！（UNIXコマンドの実行）[1]

#INCLUDE[1]

#INCLUDEコマンド[1]

#OPTION[1]

-CVInf[1]、[2]

-DynamicLink,Call[1]

-DynamicLink,IdentCall[1]

-SimIdent[1]

-SimMain[1]

-SimSub[1]

-TDInf[1]

-UniEndian[1]

-UniObjGen[1]

数字

16進数表示[1]

64bitアプリケーションの開発[1]

A

AIX(64) COBOL2002およびLinux(x64) COBOL2002で使用できない機能[1]

AIX(64) COBOL2002およびLinux(x64) COBOL2002で使用できないサービスルーチン[1]

ALLOCATE AREA[1]

ASSIGN ADDRESS（アドレスの取得）[1]

ASSIGN CASECODE[1]

ASSIGN DATA[1]

ASSIGN DEVICE（装置名へのファイルの割り当て）[1]

B

BOM[1]

C

C0メジャー[1]

C0メジャー情報[1]

C1メジャー[1]

C1メジャー情報[1]

CASE[1]

cblca2kコマンド[1]

cblcc2kコマンド[1]

cblcl2kコマンド[1]

cblcn2kコマンド[1]

cblcv2kコマンド[1]

cblcvコマンド[1]

CBLLANG[1]

CBLPIDIR[1]

CBLSRCENCODING[1]

cbltd2kコマンド[1]

CBLTDEXTARGET〔カバレージ機能〕[1]

CBLTDEXTARGET〔テストデバッガ機能〕[1]

cbltdコマンド[1]、[2]

cbltl2kコマンド[1]

CBLUNIENDIAN[1]

COBOL2002でのUTF-8ロケールの対応[1]

D

DCシミュレーション[1]

DCシミュレーションの設定[1]

DISPLAY BREAK（中断点の表示）[1]

DISPLAY COMMENT[1]

DISPLAY DATA[1]

DISPLAY FACTORY[1]

DISPLAY FLOW[1]

DISPLAY OBJECT[1]

DISPLAY POINT（現在位置の表示）[1]

E

EUCコード[1]

F

FREE AREA[1]

G

GO[1]

GO END[1]

GO EOP[1]

GO ERROR[1]

GO INVALID[1]

I

IF[1]

IVS[1]

Q

QUIT[1]

R

REPEAT[1]

RESET BREAK[1]

RESET FLOW[1]

RESET LOG[1]

RESET PRINT[1]

RESET QUALIFICATION[1]

RESET TRACE[1]

RESET WATCH[1]

S

S1メジャー[1]

S1メジャー情報[1]

SELECT ACTION[1]

SELF[1]

SET BREAK[1]

SET BREAKコマンド（節名）[1]

SET BREAKコマンド（プログラム名）[1]

SET BREAKコマンド（文）[1]

SET FLOW[1]

SET LOG[1]

SET PRINT[1]

SET QUALIFICATION[1]

SET QUALIFICATIONコマンド[1]

SET TRACE[1]

SET WATCH[1]

SIMULATE DC[1]

SIMULATE FILE[1]

SIMULATE FILEコマンド（INPUT/I-Oモード）[1]

SIMULATE FILEコマンド（OUTPUT/EXTENDモード）[1]

SIMULATE MAIN[1]

SIMULATE MAINコマンド[1]

SIMULATE SUB[1]

SIMULATE SUBコマンド[1]

STEP IN[1]

STEP OVER[1]

STEP TO[1]

STOP[1]

T

TDコマンド[1]、[2]

TDコマンド格納ファイル[1]

TDコマンド格納ファイルの構成[1]

TDコマンド格納ファイルの構成と出力先[1]

TDコマンド格納ファイルの出力先[1]

TDコマンド格納ファイルの取り込み[1]

TDコマンド格納ファイルの読み込み[1]

TDコマンド群[1]

TDコマンド生成機能[1]

TDコマンド生成機能とは[1]

TDコマンドとサブコマンドの違い[1]

TDコマンドとその結果[1]

TDコマンド入力時の注意事項[1]

TDコマンドの一覧[1]

TDコマンドの行[1]

TDコマンドの形式[1]

TDコマンドの指定方法[1]

TDコマンドの詳細[1]

TDコマンドの生成例[1]

TDコマンドの例[1]

TDコマンド名[1]

TD利用者定義語[1]

TEST[1]

U

UCS-2[1]

UCS-4[1]

Unicode[1]

Unicode機能[1]

Unicode機能に必要な環境変数[1]

Unicode機能に必要なコンパイラオプション[1]

Unicode機能の概要[1]

Unicode機能の詳細[1]

UTF-16[1]

UTF-8[1]

UTF-8環境下での注意事項（Linuxの場合）[1]

UTF-8コード[1]

い

一連番号[1]

入口，出口指定[1]

入口名[1]

入れ子プログラム[1]

インスタンスオブジェクト[1]

インタフェース[1]

う

ウィンドウの表示先変更[1]

内側のプログラム[1]

え

英大文字と英小文字，英数字文字と拡張文字を区別しての文字列の指定方法[1]

お

オブジェクト[1]、[2]

オブジェクト参照データ項目[1]

オブジェクト指向[1]

オブジェクトデータの監視[1]

オブジェクトデータの表示[1]

オブジェクトのデータ値の表示[1]

オプション[1]

オプションの変更[1]

オペランドの指定方法[1]

オペランドの補助語[1]

か

外部プログラム[1]

外部プログラム名[1]

概要[1]、[2]、[3]

カウンタ変数[1]

カウント情報[1]、[2]、[3]

カウント情報の表示[1]、[2]、[3]、[4]

カウント情報の表示の手順[1]、[2]

カウント情報の表示例[1]

カウント情報表示の手順[1]

拡張16進定数[1]

型[1]

活性化されるプログラム[1]

カバレージ[1]

カバレージ機能の概要[1]

カバレージ機能の入出力構成と使用するファイル[1]

カバレージ情報[1]、[2]、[3]、[4]

カバレージ情報の0％化[1]

カバレージ情報の操作[1]、[2]、[3]

カバレージ情報の操作の方法[1]

カバレージ情報の蓄積[1]、[2]

カバレージ情報の蓄積の手順[1]、[2]

カバレージ情報の表示（CSV形式）[1]、[2]

カバレージ情報の表示（テキスト形式）[1]、[2]

カバレージ情報の表示と操作[1]、[2]

カバレージ情報の表示の手順〔CSV形式〕[1]

カバレージ情報の表示の手順〔テキスト形式〕[1]

カバレージ情報の表示の方法（CSV形式）[1]

カバレージ情報の表示の方法（テキスト形式）[1]

カバレージ情報の表示例[1]

カバレージ情報の表示例（CSV形式）[1]

カバレージ情報の表示例（テキスト形式）[1]

カバレージ情報のマージ[1]

カバレージ情報表示の手順[1]

カバレージ統計情報の出力[1]

カバレージとは[1]

カバレージの機能一覧[1]

環境変数[1]

環境変数CBLUNIENDIANの値と仮定するバイトオーダ[1]

環境変数の指定（カウント情報の表示）[1]

環境変数の指定（カバレージ情報の操作）[1]

環境変数の指定（カバレージ情報の蓄積）[1]

環境変数の指定（カバレージ情報の表示）〔CSV形式〕[1]

環境変数の指定（カバレージ情報の表示）〔テキスト形式〕[1]

環境変数の指定（バッチモードでのテストの方法）[1]

環境変数の指定（ラインモードでのテストの方法）[1]

環境変数の指定〔連動実行によるカウント情報の表示〕[1]

環境変数の指定〔連動実行によるカバレージ情報の蓄積〕[1]

環境変数の指定〔連動実行によるテストデバッグ〕[1]

関数指定[1]

関数名[1]

き

記号名[1]、[2]

記号名構造指定[1]

既定義オブジェクト名[1]

機能の概要[1]

共通例外を発生させるプログラムのテストデバッグ[1]

行番号[1]

共用ライブラリ[1]、[2]

く

空白と括弧を含む文字列の指定方法[1]

クラス[1]

クラス指定[1]

クラス名[1]

繰り返し指定[1]

け

継承[1]

ケースコードによる条件判定[1]

ケースコードの設定[1]

ケース識別子の指定[1]

結果出力先の指定[1]

限界値[1]

こ

コマンドによる方法[1]、[2]、[3]

コンパイル[1]

コンパイルと実行[1]

さ

再帰によるソース要素の実行[1]

最外側のプログラム[1]

サブクラス[1]

差分C0メジャー[1]

差分C1メジャー[1]

差分S1メジャー[1]

差分カバレージ情報[1]

差分カバレージ情報の0％化[1]

差分カバレージ情報のクリア[1]

差分ソース表示[1]、[2]

差分未実行ソース表示[1]、[2]

サロゲート[1]

し

実行可能プログラム[1]

実行結果[1]

実行結果出力ファイルにメッセージを出力できないときの処理[1]、[2]

実行時エラーが発生した場合の中断[1]

実行時要素[1]

実行の開始／再開[1]

実行の開始と開始時にできる指定[1]

実行の強制終了[1]

シフトJISコード[1]

シフトJISへ変換するデータ項目[1]

シミュレーション情報[1]

ジャンプ[1]

ジャンプ実行[1]

主プログラム（AVERAGE）[1]

主プログラムシミュレーション[1]

主プログラムシミュレーションの設定[1]

使用する環境変数の指定[1]

使用するコード変換ライブラリ[1]

使用するファイル[1]

す

数字項目のけた拡張機能[1]

スーパクラス[1]

ステップイン[1]

ステップイン実行の開始／再開[1]

ステップオーバー[1]

ステップオーバー実行の開始／再開[1]

ステップツー実行の再開[1]

せ

制限値[1]

全ソース表示[1]、[2]

そ

添字[1]

添字に指定[1]

ソースカバレージ情報の出力[1]

ソース要素指定[1]

ソース要素の入口[1]

ソース要素の出口[1]

ソース要素・中断点・通過点の表示形式[1]

その他の機能[1]、[2]、[3]

その他の注意事項[1]

た

代入規則（Unicode機能）[1]

単体テスト[1]、[2]

ち

注釈[1]

注釈行（シミュレーション情報の開始）[1]

注釈行（シミュレーション情報の終了）[1]

注釈行（主プログラム）[1]

注釈行（中断点情報の開始）[1]

注釈行（中断点情報の終了）[1]

注釈行（ファイル）[1]

注釈行（副プログラム）[1]

注釈の表示[1]、[2]

中断点情報[1]

中断点情報とシミュレーション情報[1]

中断点の解除[1]

中断点の設定[1]

中断点の設定による中断[1]

て

定数[1]

定数一覧[1]

定数長拡張機能[1]、[2]

データ監視条件の解除[1]

データ監視条件の設定[1]

データ監視条件の設定による中断[1]

データ項目・ファイル名が参照できる範囲[1]

データ設定値[1]

データ操作の規則[1]

データ属性表示[1]

データ値の代入[1]

データ値の表示[1]

データの値代入[1]

データの値比較[1]

データの値表示[1]

データの操作[1]、[2]

データの代入[1]

データの代入規則[1]

データの比較[1]

データの比較規則[1]

データの比較・代入規則[1]

データの部分を参照[1]

データ名[1]

データ名指定[1]

テスト機能[1]

テストケース[1]

テストケースの指定[1]

テストケースの選択[1]

テスト結果蓄積先の解除[1]

テスト結果蓄積先の設定[1]

テスト結果の出力[1]

テストしたいプログラムの実行[1]、[2]

テストデバッガ，およびカバレージ使用時の注意事項〔Linux〕[1]

テストデバッガ，カバレージ，TDコマンド生成機能，およびUnicode機能の概要[1]

テストデバッガとは[1]

テストデバッガの概要と規則[1]

テストデバッガの機能一覧[1]

テストデバッガの制限値，限界値[1]

テストデバッガの前提条件[1]

テストデバッガの入出力構成と使用するファイル[1]

テストデバッガの例題[1]

テストデバッグの概要[1]

テストデバッグの環境設定[1]

テストデバッグの終了[1]

テストデバッグのための設定[1]

テストの手順[1]、[2]

テストプログラムの構成[1]、[2]

手続き名[1]

手続き名指定[1]

デバッグ機能[1]

と

等価規則[1]、[2]

動的長基本項目[1]

トレース表示の開始[1]

トレース表示の中止[1]

な

内部プログラム[1]

内部プログラム名[1]

に

日本語集団項目[1]

入出力構成[1]

入出力条件シミュレーション[1]

入出力条件のシミュレーション[1]

入出力文選択指定[1]

入力する文字の扱い[1]

任意オペランド[1]

は

バイトオーダ[1]

バイトオーダマーク[1]

バッチによるテスト[1]、[2]

バッチモードでのテストの方法[1]

バッチモードによるテストデバッグ[1]

バッチモードによるテストデバッグの概要[1]

ひ

比較条件式[1]

比較条件式の設定[1]

必須オペランド[1]

表の参照[1]

ふ

ファイルシミュレーション[1]、[2]

ファイルシミュレーションの設定[1]

ファイル入出力文のシミュレーション[1]

ファイルの書き込み時の制約[1]、[2]

ファイル名指定[1]

ファクトリオブジェクト[1]

ファクトリオブジェクトとインスタンスオブジェクト[1]

ファクトリデータ[1]

ファクトリメソッド[1]

副プログラム（SUBAV）[1]

副プログラムシミュレーション[1]

副プログラムシミュレーションの設定[1]

部分参照[1]

フロー情報の蓄積開始[1]

フロー情報の蓄積中止[1]

フロー情報の表示[1]

プログラム[1]

プログラムからの連動実行[1]、[2]

プログラムからの連動実行による方法[1]、[2]、[3]

プログラム指定[1]

プログラム情報ファイルのエラーについて[1]

プログラム情報ファイルのマージ[1]

プログラムの強制終了[1]

プログラムのコンパイル[1]、[2]、[3]

プログラムの実行[1]

プログラムの実行環境の文字コード[1]

プログラムの実行の制御と追跡[1]

プログラムの実行の追跡[1]

プログラムの状態の表示[1]

プログラムの単体テスト[1]

プログラムの中断[1]

文番号[1]

文番号指定[1]

ほ

補助語[1]

翻訳単位指定[1]

翻訳単位の一覧表示[1]、[2]

翻訳単位・ソース要素の指定[1]

翻訳単位・ソース要素の指定の解除[1]

ま

まとめ情報の表示[1]、[2]

マルチスレッド[1]

マルチスレッド対応COBOLプログラムのカバレージ[1]

マルチスレッド対応COBOLプログラムのテストデバッグ[1]

み

未実行表示[1]、[2]

見た目幅[1]

め

メソッド[1]、[2]

メソッド原型[1]

メソッドの呼び起こし[1]

も

文字コード[1]

よ

用語解説[1]

呼び出し先プログラム[1]

呼び出し順序番号[1]

呼び出し文ソース表示[1]、[2]

呼び出し元プログラム[1]

ら

ラインモードでのテストの方法[1]

ラインモードとバッチモード[1]

ラインモードによるテストデバッグ[1]

ラインモードによるテストデバッグの概要[1]

り

領域の解放[1]

領域の確保[1]

領域の確保・解放[1]

れ

例題プログラム[1]

レベル番号[1]

連続実行[1]

連動実行[1]

連動実行の指定[1]

連動実行〔カウント情報の表示〕[1]

連動実行〔カバレージ情報の蓄積〕[1]

連動実行〔ラインモード〕[1]

ろ

ログ出力の解除[1]

ログ出力ファイルの設定[1]

ロケール，環境変数の設定値によるカバレージの動作[1]

ロケール，環境変数の設定値によるテストデバッガの動作[1]

論理誤りチェックと入出力状態の値[1]