コンパイル

本章では、OpenFrame PL/Iを使用してプログラムをコンパイルする方法やコンパイル時に出力されるエラーメッセージについて説明します。

1. コンパイルの実行

PL/Iソースファイルをコンパイルすると、OpenFrameで使用される共有ライブラリが作成されます。

次の3つの方法でコンパイルすることができます。

  • 静的リンクを使用したコンパイル方法

    静的リンクを使用して複数のファイルを一括でコンパイルし、1つの共有ライブラリとして作成することができます。

    以下は、file1.pli、file2.pli、file3.pliをコンパイルして、1つのlibtest.soを作成する例です。-Iオプションを使用して、INCLUDEファイルを現在のディレクトリ下のincディレクトリに格納します。

    ofpli file1.pli file2.pli file3.pli -o libtest.so -I./inc
  • 動的リンクを使用したコンパイル方法

    ソースファイルのコンパイル時に、外部共有ライブラリをリンクして新しい共有ライブラリを作成することができます。

    以下は、file.pliのコンパイル時に$OFPLI_HOME/libにあるlibtest.soをリンクして、libfile.soを作成する例です。

    ofpli file.pli -o libfile.so -L$OFPLI_HOME/lib -ltest -I./inc
  • 動的ロードを使用したコンパイル方法

    ソースファイルのコンパイル時にはリンクせず、実行時に動的ロード呼び出し機能を使用して共有ライブラリを作成することができます。動的ロード機能を使用する場合は、ライブラリをリンクする必要はありません。ただし、呼び出す関数が動的に決定される場合は使用できません。

    以下は、file.pliのコンパイル時に動的ロード呼び出し機能を使用してlibfile.soを作成する例です。

    ofpli file.pli -o libfile.so -U

1.1. コンパイル・コマンド

以下は、コンパイル・コマンドofpliの使用方法です。

  • 使用方法

    ofpli ソースファイル ... [コマンドオプション...]
    • ソースファイル

      コンパイルを実行するソースファイルを指定します。

    • 以下は、ソースファイルをコンパイルする際に使用できるデフォルトのコマンド・オプションです。

      オプション 説明

      -o ファイル名

      出力ファイルを指定します。

      -I <dir>

      INCLUDEディレクトリを指定ます。

      -MI <dir>

      %INCLUDEステートメントで使用するINCLUDEディレクトリを指定します。

      -SI <dir>

      EXEC SQL INCLUDEステートメントで使用するINCLUDEディレクトリを指定します。

      -l <library>

      共有ライブラリをリンクします。

      -L <dir>

      ライブラリのディレクトリを指定します。

      -O0, -O1, -O2, -O3

      最適化レベルを指定します。数値が小さいほどコンパイルは速くなりますが、実行は遅くなる可能性があります。

      -U

      動的ロード呼び出し機能を有効にします。

      -g

      ソース・レベルのデバッグに使用するデバッグ情報がコンパイル結果ファイルに含まれることを指定します。

      --change old:new

      外部エントリ名をoldからnewに変更します。

      --disable-inc-limit

      %INCLUDEステートメントのファイル文字数制限を解除します。

      --dli

      DLITPLIインターフェースを追加します。(IMS)

      --enable-cics

      CICSプリプロセッサーを有効にします。

      --enable-esql-oracle

      Oracle ESQLプリプロセッサーを有効にします。

      --enable-esql-tibero

      Tibero ESQLプリプロセッサーを有効にします。

      --enable-ofasm

      OpenFrame ASMを介してASMを呼び出す場合に指定します。

      --enable-scan-extascii

      拡張ASCII文字を使用できるようにします。--enable-scan-sjisオプションと一緒に使用できません。

      --enable-scan-sjis

      Shift-JIS文字を使用できるようにします。--enable-scan-extasciiオプションと一緒に使用できません。

      --fixeddec31

      FIXED DECIMAL変数の最大精度として31を指定します。

      --rule-margin-s

      ソースコードに含まれない空白以外の文字がある場合は、エラーメッセージを出力します。

      --rule-margin-w

      ソースコードに含まれない空白以外の文字がある場合は、エラーメッセージを出力します。

      --system-cics

      PL/Iプログラムが実行されるシステム環境をCICSに指定します。

      --system-ims

      PL/Iプログラムが実行されるシステム環境をIMSに指定します。

      --system-mvs

      PL/Iプログラムが実行されるシステム環境をMVSに指定します。(デフォルト値)

      --trace

      プロシージャの開始と終了、パラメータ、戻り値に関するトレース情報を表示します。

      --trace-flow

      プロシージャの開始と終了にトレース情報を表示します。

      --trace-param

      パラメータに関するトレース情報を表示します。

      --trace-return

      戻り値に関するトレース情報を表示します。

      --h, --help

      ヘルプ情報を表示します。

      --help-esql

      ESQLプリプロセッサーのヘルプ情報を表示します。

      --license

      OpenFrame PL/Iのライセンス情報を表示します。

      --save-temps

      コンパイル中に生成された一時ファイルを削除せずに保存します。

      以下は、コマンド・オプションによって生成された一時ファイルです。

      • .mp : SQLプリプロセッサーまたはCICSプリプロセッサーが有効な場合にのみ作成されるマクロ前処理結果ファイル

      • .pp : 前処理が完了された前​​処理結果ファイル

      • .bc : コンパイル結果ファイル

      • .o : アセンブリ結果ファイル

      --version

      OpenFrame PL/Iのバージョン情報を表示します。

    • ESQLプリプロセッサー・コマンド・オプション

      オプション 説明

      --close-on-commit

      コミット時にカーソルを自動的に閉じます。

      --end-of-fetch (1403 | 100)

      SQLステートメントの実行後、END-OF-FETCH状態でユーザーに戻されるSQLCODEを指定します。(デフォルト値: 1403)

      --insert-no-data-error

      INSERTとSELECTステートメントの使用時にも「no data found」メッセージが表示されるように指定します。

      --no-select-error

      ホスト変数などによって与えられた実行結果の数よりも、返された実際の問合せ実行結果が多い場合にエラーを発生させます。

      --picx (CHARF | VARCHAR2)

      PL/I CHAR型のSQLデータ型を指定します。(デフォルト値:CHARF)

      --prefetch N

      カーソルのオープン時にプリフェッチする行数を指定します。

      --unsafe-null

      標識変数がないときは、NULL値を許可するように指定します。

1.2. コンパイル・エラーメッセージ

OpenFrame PL/Iは、コンパイル中にエラーが発生すると、エラーメッセージを出力します。

以下は、エラーメッセージの形式です。

SAMPLE.pli 6:11 : OFPLI1009 [S] Syntax error.

[ファイル名] : SAMPLE.pli
[ソースの位置] : 6:11
[エラー番号] : OFPLI1009
[エラータイプ] : [S]
[エラーメッセージ] : Syntax error.
項目 説明

ファイル名

エラーが発生したファイル名です。

ソースの位置

エラーが発生したファイルの行と列の位置です。

エラー番号

エラー番号です。

エラータイプ

  • [I](Information) : 一般的な情報メッセージです。コンパイルが正常に実行されます。

  • [W](Warning) : プログラムの実行には影響を与えません。ただし、目的の結果が得られない可能性があるエラーです。コンパイルは正常に実行されます。

  • [E](Error) : コンパイルが実行されないエラーです。一部のエラーは、コンパイルが実行されますが、プログラムの実行中に問題が発生する可能性があります。

  • [S](Sever) : 重大エラーにより、コンパイルが実行されません。

エラーメッセージ

エラーについての説明です。