この章では、Pro*COBOLプリコンパイラの概要を説明します。Oracleデータを操作するアプリケーション・プログラムを開発する際にPro*COBOLプリコンパイラの役割を理解することで、アプリケーションでどのように活用できるかを理解できます。
Oracle Databaseにアクセスするには、Structured Query Language(SQL)という高水準の問合せ言語を使用します。通常はSQL*Plusなどの対話型インタフェースを介してSQLを使用します。
Pro*COBOLは、SQL文をCOBOLプログラムに埋め込むことができるプログラミング・ツールです。Pro*COBOLプリコンパイラは、COBOLプログラム内のSQL文を標準のOracleランタイム・ライブラリ・コールに変換します。生成された出力ファイルは、通常の方法でコンパイル、リンクおよび実行できます。
迅速な開発と他のシステムとの互換性を優先する場合は、Pro*COBOLプリコンパイラを使用します。
Pro*COBOLプリコンパイラは、SQL文をホストのCOBOLプログラムに埋め込むことができるプログラミング・ツールです。図1-1に示すように、プリコンパイラはホスト・プログラムを入力として受け取り、埋込みSQL文を標準Oracleランタイム・ライブラリ・コールに変換して、ソース・プログラムを生成します。このソース・プログラムは、通常の方法でコンパイル、リンクおよび実行できます。
注意: Pro*COBOLは、Windows 2000の32-bit版対応のMicro Focus Net Express 4.0をサポートしています。 |
注意: Pro*COBOLでは、オブジェクト指向COBOL(OOCOBOL)仕様をサポートしていません。 |
Pro*COBOLプリコンパイラを使用すると、アプリケーション・プログラムに強力で柔軟なSQLを組み込めます。SQL文をCOBOLに埋め込むことができます。便利なインタフェースによって、アプリケーションから直接Oracleにアクセスできます。
他の多くのアプリケーション開発ツールとは異なり、Pro*COBOLではアプリケーションを高度にカスタマイズできます。たとえば、最新のウィンドウ機能およびマウス技術を取り込んだユーザー・インタフェースを作成できます。また、ユーザーとの対話なしに、バックグラウンドで実行するアプリケーションも作成できます。
さらに、Pro*COBOLを使用してアプリケーションを微調整できます。リソース使用率、SQL文の実行および様々なランタイム・インジケータの状況を詳細に監視できます。得られた情報に基づいて、最大のパフォーマンスが実現できるようにプログラムのパラメータを調整できます。
Oracleデータにアクセスして操作するには、SQLが必要です。SQLを対話形式で使用するか、アプリケーション・プログラムに埋め込んで使用するかは、作業の内容によって異なります。COBOLのプロシージャ処理能力を必要とする作業や定期的に実行する作業の場合は、埋込みSQLを使用します。
SQLは、その柔軟で強力な特性、および習得が容易であることから、最もすぐれたデータベース言語となりました。SQLは非プロシージャ言語であるため、目的とする処理を指定するときにその方法を指定する必要がありません。英文に似た少数の文で、Oracleデータを一度に1行または複数行ずつ簡単に操作できます。
任意の(SQL*Plus以外の)SQL文をアプリケーション・プログラムから実行できます。たとえば、次の操作が可能です。
データベース表の動的なCREATE(作成)、ALTER(変更)およびDROP(削除)
データ行のSELECT(選択)、INSERT(挿入)、UPDATE(更新)およびDELETE(削除)
トランザクションのCOMMIT(コミット)やROLLBACK(ロールバック)
アプリケーション・プログラムにSQL文を埋め込む前に、SQL*Plusを使用して対話式にSQL文をテストできます。通常、対話型SQLから埋込みSQLへの切替えはわずかな変更で行えます。
SQLを拡張したPL/SQLは、プロシージャ構造、変数宣言および強力なエラー処理をサポートするトランザクション処理言語です。同一PL/SQLブロック内では、SQLおよびPL/SQLの拡張機能をすべて使用できます。
埋込みPL/SQLの主な利点はパフォーマンスの向上です。SQLと異なり、PL/SQLでは、SQL文を論理的にグループ化し、1文単位ではなくブロック単位でOracleに送信できます。この結果、ネットワークの通信量および処理のオーバーヘッドが減少します。
アプリケーション・プログラムにPL/SQLを埋め込む方法などPL/SQLの詳細は、第6章「埋込みPL/SQL」を参照してください。
図1-2に示すように、Pro*COBOLには、効率がよく信頼性の高いアプリケーション開発を支援する機能および利点が数多くあります。
たとえば、Pro*COBOLプリコンパイラを使用して次のことができます。
COBOLを使用したアプリケーション開発
ANSI/ISO埋込みSQL規格への準拠
実行時に、COBOLプログラム内で有効な任意のSQL文の受入れおよび作成を可能にする、ANSI動的SQL方法4の利用
高度にカスタマイズされたアプリケーションの設計および開発
Oracle9iの内部データ型とCOBOLデータ型の間の自動変換
COBOLアプリケーション・プログラムにPL/SQLトランザクション処理ブロックを埋め込むことによる、パフォーマンスの向上
有用なプリコンパイラ・オプションの指定およびプリコンパイル中の値変更
データ型の同値化機能を使用した、Oracle9iによる入力データの解析および出力データの形式設定の制御
複数のプログラム・モジュールを個別にプリコンパイルし、後でリンクして1つの実行可能プログラムを作成する機能
埋込みSQLデータを操作する文およびPL/SQLブロックの構文と意味のチェック
Oracle Net(旧称「Net8」)を使用した、複数ノード上のOracle9iデータベースへの同時アクセス
入力および出力プログラム変数での配列の使用
異なった環境下でのホスト・プログラムの実行を可能にする、コード・セクションの条件付きプリコンパイル
高級言語で記述されているユーザー・イグジットを使用した、Oracle FormsおよびOracle Reportsなどのツールとのインタフェース
ANSI準拠の状態変数SQLSTATEとSQLCODE、またはSQLコミュニケーション領域(SQLCA)とWHENEVER文(あるいはそのすべて)を使用した、エラーおよび警告の処理
Oracle通信領域(ORACA)に備えられている診断プログラム拡張セットの使用
ラージ・オブジェクト(LOB)データベース型へのアクセス
Pro*COBOLをインストールする際に、Oracle Universal Installerによって\precomp
というディレクトリがORACLE_BASE\ORACLE_HOME
ディレクトリに作成されます。
注意:
|
\precomp
ディレクトリは、表1-1に示すディレクトリで構成されています。
表1-1 ディレクトリ
ディレクトリ名 | 内容 |
---|---|
|
構成ファイル |
|
|
|
サンプル・プログラムのSQLスクリプト |
|
Pro*COBOLリリース9.2.0のREADMEファイル |
|
ライブラリ・ファイル |
|
メッセージ・ファイル |
|
ヘッダー・ファイル |
ORACLE_BASE\ORACLE_HOME
\precomp\public
ディレクトリには、表1-2に示すPro*COBOLのヘッダー・ファイルが格納されています。
表1-2 ヘッダー・ファイル
ヘッダー・ファイル | 説明 |
---|---|
ランタイム・エラーの診断、およびプログラムによる様々なOracleリソースの使用状況の監視に役立つOracle通信領域(ORACA)が含まれています。 |
|
|
ORACA5は、ORACAのCOMP-5バージョンです。 |
ランタイム・エラーの診断に役立つSQLコミュニケーション領域(SQLCA)が含まれています。SQLCAは、実行可能なSQL文が実行されるたびに更新されます。 |
|
|
SQLCA5は、SQLCAのCOMP-5バージョンです。 |
動的SQL方法4を使用するプログラムに必要なデータ構造であるSQL記述子領域(SQLDA)が含まれています。 |
|
|
これは、SQLDAのCOMP-5バージョンです。 |
ORACLE_BASE\ORACLE_HOME
\precomp\lib
ディレクトリには、Pro*COBOLアプリケーションをリンクするときに使用するライブラリ・ファイルが格納されています。ライブラリ・ファイル名は、orasql9.lib
です。
Windowsのすべてのオペレーティング・システムでは、ファイル名やディレクトリ名にスペースを含めることができますが、Oracle Pro*COBOLプリコンパイラでは、ファイル名やディレクトリ名にスペースを含むファイルはプリコンパイルされません。たとえば、次のような書式は使用しないでください。
proc iname=test one.pc
proc iname=d:\dir1\second dir\sample1.pc
/LITLINKオプションを使用してリンクされていないPROCOBアプリケーションを実行すると、実行時に次のエラーが表示され、失敗することがあります。
Load error: file 'ORASQL8'
この場合、orasql9.dll
が置かれているディレクトリで、orasql9.dll
をorasql8.dll
にコピーする必要があります。