18.6.4 動的なリンクのプログラム検索トレース機能(AIX(32),AIX(64),Linux(x86),Linux(x64)で有効)

プログラム検索トレース機能では,次のトレース情報を出力します。

<この項の構成>
(1) 環境変数CBLPGMSEARCHTRC
(2) 環境変数CBLPGMSEARCHTRC_SIZE
(3) 注意事項
(4) プログラム検索トレースの内容

(1) 環境変数CBLPGMSEARCHTRC

実行時環境変数CBLPGMSEARCHTRCには,トレース情報を出力するファイル名を指定します。

形式

CBLPGMSEARCHTRC=プログラム検索トレースファイル名

規則
  • プログラム検索トレースファイル名は,絶対パスで指定してください。
  • プログラム検索トレースファイル名のパスに誤りがある,アクセス権がないなどの理由で,プログラム検索トレースファイルが開けない場合,警告メッセージが出力されます。このとき,プログラム検索トレース情報は出力されません。
  • 次のどれかに該当するCALL文では,プログラム検索トレース情報は出力されません。
    ・-DynamicLinkオプションの指定がないCOBOLプログラムのCALL文
    ・-DynamicLink,IdentCallオプションを指定したCOBOLプログラムの定数指定のCALL文
    ・-DynamicLink,Callオプションを指定したCOBOLプログラムの定数指定のCALL文による内部プログラム呼び出し
    ・-DynamicLink,Callオプションを指定したCOBOLプログラムの定数指定のCALL文による2回目以降のプログラム呼び出し
  • 実行時環境変数CBLPGMSEARCHTRCに指定したプログラム検索トレースファイル名は,次の形式のファイル名に変更されて出力されます。
    [形式]
    ファイル名[_i]_j.拡張子
    i:スレッド識別子の値です。マルチスレッド対応COBOLプログラムのときだけ付加されます。
    j:管理番号です。1または2が付加されます。
  • プログラム検索トレースファイルのファイルサイズが実行時環境変数CBLPGMSEARCHTRC_SIZEの指定値を超えた場合,管理番号を切り替えて,ファイルの先頭からトレース情報が出力されます。切り替え後のファイル名と同一名称のファイルが存在する場合,同一名称のファイルは削除されます。必要な場合は,削除される前にバックアップをとってください。
  • 複数プロセスが並列で実行される場合,プログラム検索トレースファイル名には一意となる名称を指定する必要があります。同じプログラム検索トレースファイル名を指定し,プログラムを並列で実行した場合のプログラム検索トレースの出力結果は保証しません。
  • -DynamicLink,Callオプションを指定したCOBOLプログラムでADDR関数にプログラム名を指定した場合,ADDR関数でのプログラム検索情報がCALL文のプログラム検索トレースとして出力されます。
  • ディスクの空き容量不足などで,プログラム検索トレースファイルへのトレース出力中にエラーが発生した場合は,それ以降のトレース情報は出力されません。なお,このとき,実行時メッセージは出力されません。

(2) 環境変数CBLPGMSEARCHTRC_SIZE

実行時環境変数CBLPGMSEARCHTRC_SIZEには,プログラム検索トレースファイル名を切り替えるサイズを指定します。

形式

CBLPGMSEARCHTRC_SIZE=プログラム検索トレースファイル名を切り替えるサイズ(1~2,000,000)

規則
  • ファイルサイズはKB単位で指定してください。
  • 指定に誤りがある場合,または指定がない場合は10,240が仮定されます。
  • 実行時環境変数CBLPGMSEARCHTRC_SIZEの指定に従い,プログラム検索トレースファイルのサイズが指定値の上限を超えた場合,ファイル名の管理番号が切り替えられます。
    切り替え先のファイルが開けないときは,警告メッセージが出力されます。なお,それ以降のプログラム検索トレースは出力されません。
  • プログラム検索トレースファイルの管理番号1のファイルが存在しない場合は,管理番号1のファイルにトレース情報が出力されます。管理番号1のファイルがすでに存在する場合は,次に示す管理番号のファイルにトレース情報が出力されます。
    管理番号1ファイル管理番号2のファイルトレース情報出力
    ファイルサイズが上限を超えていない管理番号1のファイルに追加書きで出力する
    ファイルサイズが上限を超えているファイルが存在しない管理番号2のファイルを作成して出力する
    ファイルが存在するファイルサイズが上限を超えていない管理番号2のファイルに追加書きで出力する
    ファイルサイズが上限を超えている最終更新日時が古い管理番号のファイルを削除,作成して出力する
    (凡例)
    -:条件なし

(3) 注意事項

(4) プログラム検索トレースの内容

[図データ]

  1. 日付/時刻を出力する。
  2. トレース出力の契機を出力する。
    PRE環境変数CBLPRELOADで指定されたプレロードリストファイルに記述された共用ライブラリの情報を出力する。
    PROGCALL文が実行されたプログラム名を5.に示す。
    CALLCALL文の処理であることを示す。3.がprogramの場合,呼び出すプログラム名を5.に示す。
  3. 処理内容の詳細を出力する。
    openファイルのオープン処理であることを示す。
    load共用ライブラリのロード処理であることを示す。
    program呼び出し先プログラムの検索処理を開始したことを示す。
    searchプログラムの検索処理であることを示す。
    getaddrプログラムのアドレス取得処理であることを示す。
  4. 処理の実行結果を出力する。
    SUCCESS処理が成功したことを示す。
    WARNING処理中にエラーが発生したことを示す。処理は継続する。
    ERROR処理中にエラーが発生したことを示す。処理は終了する。
    NOTFOUND処理を実行した結果,呼び出し先プログラムが見つからなかったことを示す。
    FOUND処理を実行した結果,呼び出し先プログラムが見つかり,プログラム検索処理が終了したことを示す。
  5. 処理の対象ファイルまたは対象プログラムを出力する。
    INSIDE PROGRAM呼び出しできる内側のプログラムに対する処理であることを示す。
    CALLED PROGRAMS呼び出し済みプログラムに対する処理であることを示す。
    LINKED TO STATICALLY静的にリンクされた最外側のプログラムに対する処理であることを示す。
    ALREADY LOADED LIBRARYロード済みの共用ライブラリに対する処理であることを示す。
    上記以外(ファイル名またはプログラム名)ファイルまたはプログラムに対する処理であることを示す。
  6. 環境変数CBLPRELOADの指定がある場合は,プレロードリストファイルに記述された共用ライブラリに対するロード結果を出力する。ロード失敗時は,エラー番号(n)と詳細メッセージ(xxxxx)を出力する。
    なお,エラー原因によっては,詳細メッセージが出力されない場合がある。また,Linuxの場合のエラー番号は不定である。
    環境変数CBLPRELOADの指定がない場合,環境変数CBLPRELOADの情報は出力しない。
  7. 呼び出しできる内側のプログラムの中から呼び出し先プログラムを検索した結果を出力する。この情報は,一意名指定のCALL文のときだけ出力する。
  8. 動的なリンクによってすでに呼び出しされたプログラムから呼び出し先プログラムを検索した結果を出力する。
  9. 静的にリンクされた最外側のプログラムから呼び出し先プログラムを検索した結果を出力する。ただし,Linuxの場合,9.と10.を同時に処理するため,10.の出力だけとなる。
  10. すでにロードされている共用ライブラリ中から呼び出し先プログラムを検索した結果を出力する。なお,Linuxの場合,9.の静的にリンクされた最外側のプログラムからの検索処理を含む。
  11. 未ロードの共用ライブラリから呼び出し先プログラムを検索した結果を出力する。
    AIXの場合,環境変数CBLLTAGにNOARMBRが指定されていない環境では,すでにロードされているシステムの共用ライブラリなどを検索した結果も出力する。
  12. 呼び出し先プログラムを含む共用ライブラリをロードした結果を出力する。
  13. 呼び出し先プログラムのアドレスを取得した結果を出力する。
  14. 共用ライブラリのロードに失敗した場合,エラー番号と詳細メッセージを出力する。なお,エラー原因によっては,詳細メッセージが出力されない場合がある。また,Linuxの場合のエラー番号は不定である。