10.16.3 実行順序ツリーでトレースできる実行順序情報
実行順序情報は,[実行順序表示]画面または実行順序リストの実行順序ツリーを使用してトレースできます。それぞれの実行順序ツリーの内容を次に示します。
(1) [実行順序表示]画面での実行順序ツリーの表示内容
[解析生成オプション設定]画面の[その他の解析オプション]タブで[プログラムの制御フロー情報(実行順序表示機能で使用する情報)を抽出する]をチェックして,解析/生成を実行すると,[プログラム詳細]画面の[セクション一覧]の[実行順序]列に「表示」が表示されます。「表示」をクリックすると,その節に対する[実行順序表示]画面が表示されます。
プログラム全体の[実行順序表示]画面を表示させたい場合は,手続き部分先頭の節の「表示」をクリックします。手続き部先頭が節見出しではない場合は,「{PROCEDURE_START}」が手続き部分先頭の節です。
左ペインでは,実行順序ツリーをしおり(目次)として表示します。右ペインでは,[ソース表示(COPY展開後)]画面の右ペインと同じソースプログラムのソースコードを表示します。左ペインの下線のリンクをクリックすると,該当する行を右ペインの最上行に位置付けます。[実行順序表示]画面については,「7.4.5 [実行順序表示]画面」を参照してください。
実行順序ツリーの表示規則
-
各行は次の規則でソース行1行分を表示します。ただし,条件式を含むIF文,EVALUATE文,WHEN条件指定,およびPERFORM文は,条件式の終わりまで表示します。
-
節と段落の見出しの末尾には終止符を表示します。
-
文中の不要な空白(連続した空白の先頭以外の部分)は削除します。
-
コメント(空白行,注記行,行内注記,翻訳指令行,および条件翻訳の無効行)は削除します。
-
継続行は継続対象行に含めます。
-
実行文の終止符や明示範囲終了子(END-PERFORMとEND-EXECを除く)は表示しません。また,END-PERFORMは,コメントとして表示し,リンク(下線)は付加しません。
-
文が複数行にわたる場合は,先頭の1行(埋め込みSQL文の場合は2行)を表示します。
-
条件指定は条件記述部分だけ表示し,無条件文は次の行に表示します。
-
条件指定の予約語部分は常に完全形(補助語の省略なし)を半角英数字文字で表示します。また,「EOP」と書いても「END-OF-PAGE」と表示します。
-
-
インデンテーションで制御ブロックの親子関係を表現します。
-
手続き呼び出しの場合,開始と終了を次のコメントで囲みます。
- 節のとき
-
=== 節(節名)呼び出し入口 ===
=== 節(節名)呼び出し出口 ===
- 段落のとき
-
=== 段落(段落名)呼び出し入口 ===
=== 段落(段落名)呼び出し出口 ===
ただし,再帰呼び出しとなっている場合は,呼出先の実行順序ツリーは表示しないで「"*** 再帰呼び出しのため省略 ***"」を表示します。
-
GO TO文の分岐先が通過済みの場合は,分岐先の実行順序ツリーは表示しないで「"*** この先省略 ***"」を表示します。ただし,分岐先の節・段落が単純でかつ制御フローの終端となる場合を除きます。
-
プログラム全体ではなく,節個別の実行順序表示の場合でGO TO文の分岐先が節外のときは,分岐先の実行順序ツリーは出力しないで「"*** 節外への分岐 ***"」を表示します。
-
手続き部末尾で仮定される暗黙のGOBACK文に対しては「"END PROGRAM"」を表示します(END PROGRAMで終わっていない手続き部末尾の暗黙のGOBACK文に対しても「"END PROGRAM"」を表示します)。
-
プログラム終了となる次の文は半角英数字文字で表示し,後ろには「"---> (プログラム終了)"」を付加します。
-
STOP RUN文(埋め込み例外宣言のSTOP指定はSTOP RUN文と同じ表示となる)
-
GOBACK文
-
EXIT PROGRAM文
-
END PROGRAM文(暗黙のGOBACK文)
-
CBLABNサービスルーチン呼び出しのCALL文(区切り記号はアポストロフィ(')固定で引数は表示しない)
-
-
プログラム全体ではなく,節個別の実行順序表示の場合で,プログラム終了となる文やUSE節終了となる文(USE節の場合)と遭遇しないで節の終わりに達したときは,「"=== 節(節名)の終わり ==="」を表示します。ただし,節が空の場合は何も表示しません。
-
基本ブロック(制御の移行を伴わない文の連続した並び)の場合は,先頭の文だけ表示し,2つ目以降の文は「":"」で代替します。
-
右ペインに対応する行がある場合はリンク(下線)を付加します。内部的に仮定された文や条件指定,コメント(手続き呼び出しの入口と出口など)にはリンクは付加しません。
- 注意事項
-
しおり(目次)の実行順序ツリーの行数が上限(60,000)を超えた場合は,「"======= 上限(60,000)を超えたため打ち切り ======="」が表示され,以降の行は表示されません。
(2) 実行順序リストでの実行順序ツリーの出力内容
[解析生成オプション設定]画面の[その他の解析オプション]タブの[プログラムの制御フロー情報(実行順序表示機能で使用する情報)を抽出する],および[生成ドキュメント]タブの[実行順序リスト]をチェックして,解析/生成を実行すると,プログラムごとに実行順序リストCSVファイルが出力されます。
- 実行順序リストCSVファイルの出力先
生成ドキュメントの出力先フォルダ\プロジェクト名\CSV\実行順序リスト\実行順序リスト_プログラム名.csv
- 実行順序リストCSVファイルの出力例
-
-
テキストエディタの場合
-
表計算ソフトの場合
-
実行順序リストCSVファイルについては,「8.2.7 実行順序リスト」を参照してください。
実行順序ツリーの出力規則
-
各行の先頭にはソース行番号を出力します。6桁に満たない場合は前に半角空白を補います。内部的に仮定された文や条件指定,コメント(手続き呼び出しの入口と出口など)の場合は空文字列を出力します。
-
各行は次の規則で文や条件指定の先頭から末尾までのすべてを1行で出力します。
-
節と段落の見出しの末尾には終止符を出力します。
-
文中の不要な空白(連続した空白の先頭以外の部分)は削除します。
-
コメント(空白行,注記行,行内注記,翻訳指令行,および条件翻訳の無効行)は削除します。
-
継続行は継続対象行に含めます。
-
実行文の終止符や明示範囲終了子(END-PERFORMとEND-EXECを除く)は出力しません。また,END-PERFORMは,コメントとして出力し,行の先頭はソース行番号ではなく,空文字列となります。
-
条件指定は条件記述部分だけ出力し,無条件文は次の行に出力します。
-
-
コンマ(,)によるインデンテーションで制御ブロックの親子関係を表現します。
-
手続き呼び出しの場合,開始と終了を次のコメントで囲みます。
- 節のとき
-
=== 節(節名)呼び出し入口 ===
=== 節(節名)呼び出し出口 ===
- 段落のとき
-
=== 段落(段落名)呼び出し入口 ===
=== 段落(段落名)呼び出し出口 ===
ただし,再帰呼び出しとなっている場合は,呼出先の実行順序ツリーは出力しないで「"*** 再帰呼び出しのため省略 ***"」を出力します。
-
GO TO文の分岐先が通過済みの場合は,分岐先の実行順序ツリーは出力しないで「"*** この先省略 ***"」を出力します。ただし,分岐先の節・段落が単純でかつ制御フローの終端となる場合を除きます。
-
手続き部末尾で仮定される暗黙のGOBACK文に対しては「"END PROGRAM"」を出力します(END PROGRAMで終わっていない手続き部末尾の暗黙のGOBACK文に対しても「"END PROGRAM"」を出力します)。
-
プログラム終了となる次の文はの後ろには「"---> (プログラム終了)"」を付加します。
-
STOP RUN文
-
GOBACK文
-
EXIT PROGRAM文
-
END PROGRAM文(暗黙のGOBACK文)
-
CBLABNサービスルーチン呼び出しのCALL文
-
-
基本ブロック(制御の移行を伴わない文の連続した並び)の場合は,制御ブロック内のすべての文を出力します。
- 注意事項
-
-
実行順序リストでは,手続き部分先頭の節に対する[実行順序表示]画面の実行順序表示と同じ実行経路を表示します。手続き部分先頭から到達できない手続き(節・段落)や文は表示されません。
-
プログラムの手続き部分が空の場合,実行順序リストCSVファイルには実行順序リストは出力されないでヘッダだけが出力されます。
-
実行順序リストの実行順序ツリーの行数が上限(999,999)を超えた場合は,「"======= 上限(999,999)を超えたため打ち切り ======="」が出力され,以降の行は出力されません。
-
プログラム名が英小文字を含む場合,出力ファイル名は,実行順序リスト_プログラム名.英小文字識別子コード.csvとなります。英小文字識別コードは16進数で,英大文字と英小文字だけが異なるファイル名が同一とみなされて上書きされることを回避するために付加されます。
-