コンパイラが出力するリストの種類と出力方法について説明します。
プログラム情報やエラー総数などのコンパイル時の情報を要約して出力したものです。
コンパイル時に入力した原始プログラムを出力したものです。相互参照情報やコンパイル時にエラーが検出されたときのエラーメッセージなども出力されます。
コンパイルエラーのエラーレベルやエラーメッセージを出力したものです。
COBOLプログラムをコンパイルしてコンパイルリストを出力するオプションを次に示します。これらのコンパイラオプションを指定しない場合,コンパイルリストを出力しません。
情報リストと原始プログラムリストはコンパイルリストファイル(.lst)に出力されます。
また,エラーリストは標準エラー出力(stderr)に出力されます。
コンパイルリストの出力に関連する翻訳指令について,説明します。
LISTING指令は,コンパイルリストにソースを出力するかどうかを指定します。
なお,LISTING指令の行そのものは,ON/OFFの状態に関係なく,常にコンパイルリストに出力されます。
LISTING指令の例を次に示します。下線部分は,コンパイルリストに出力されません(出力されない行は詰められます)。
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE1.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
>>LISTING OFF
01 A PIC X(10).
>>LISTING ON
01 B PIC X(10).
PROCEDURE DIVISION.
DISPLAY 'OK'.
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE1.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
>>LISTING OFF
>>LISTING ON
01 B PIC X(10).
PROCEDURE DIVISION.
DISPLAY 'OK'.
コンパイルリストへの出力がOFFの状態でも,LISTING OFFの行は出力されます。LISTING OFFが出力される例を次に示します。
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE2.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
>>LISTING OFF
01 A PIC X(10).
>>LISTING OFF ←この行は出力される
01 B PIC X(10).
>>LISTING ON
PROCEDURE DIVISION.
DISPLAY 'OK'.
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE2.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
>>LISTING OFF
>>LISTING OFF
>>LISTING ON
PROCEDURE DIVISION.
DISPLAY 'OK'.
LISTING指令を含むCOBOLプログラム(登録集原文)をCOPY文で複写した場合,LISTING指令の効果は登録集原文の終わりで終了し,複写元のプログラムのCOPY文が持つLISTING指令の状態に戻ります。COPY文の言語仕様については,マニュアル「COBOL2002 言語 標準仕様編 3.2.2 COPY文」を参照してください。
原始プログラム(SAMPLE1.CBL)中のCOPY文で,LISTING指令を含むCOBOLプログラム(登録集原文 SAMPLE2.CBL)を複写した場合の例を次に示します。
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE1.
ENVIRONMENT DIVISION.
COPY SAMPLE2.
PROCEDURE DIVISION.
DISPLAY 'OK'.
DATA DIVISION.
WORKING-STORAGE SECTION.
>>LISTING OFF
01 A PIC X(10).
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE1.
ENVIRONMENT DIVISION.
COPY SAMPLE2.
DATA DIVISION.
WORKING-STORAGE SECTION.
>>LISTING OFF
01 A PIC X(10).
PROCEDURE DIVISION. ←この行以降は出力される
DISPLAY 'OK'.
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE1.
ENVIRONMENT DIVISION.
COPY SAMPLE2.
C1 DATA DIVISION.
C1 WORKING-STORAGE SECTION.
C1 >>LISTING OFF
PROCEDURE DIVISION.
DISPLAY 'OK'.
PAGE指令は,コンパイルリストの改ページを指定します。PAGE指令のコンパイルリストでの効果は,固定形式正書法の改ページ標識「/」と同じです。
PAGE指令の例を次に示します。
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE1.
ENVIRONMENT DIVISION.
>>PAGE ←この行から改ページする
DATA DIVISION.
WORKING-STORAGE SECTION.
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE1.
ENVIRONMENT DIVISION.
(この位置で改ページ)
>>PAGE
DATA DIVISION.
WORKING-STORAGE SECTION.
このシステムでは,翻訳処理の最後にLISTING指令およびPAGE指令が処理されます。そのため,条件翻訳の無効行(条件翻訳の結果,コンパイル対象とならなかった行)にLISTING指令またはPAGE指令が現れた場合,これらの指令は無効となります。
LISTING指令およびPAGE指令が条件翻訳の無効行にある場合の例を次に示します。
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE1.
ENVIRONMENT DIVISION.
>>DEFINE ABC 123
>>IF ABC = 123
*> コメント
>>ELSE
>>PAGE ←この>>PAGEは効果がない
>>LISTING OFF ←この>>LISTING OFFは効果がない
>>END-IF
DATA DIVISION.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.