1 概要

この章では、Pro*COBOLプリコンパイラについて説明します。Oracleデータを操作するアプリケーション・プログラムを開発するうえでのその役割と、このプリコンパイラによりアプリケーションで実行できる処理について説明します。次の項目について説明します。

1.1 Pro*COBOLの概要

Oracle Databaseにアクセスするには、Structured Query Language (SQL)という高水準の問合せ言語を使用します。通常はSQL*Plusなどの対話型インタフェースを介してSQLを使用します。

Pro*COBOLは、SQL文をCOBOLプログラムに埋め込むことができるプログラミング・ツールです。Pro*COBOLプリコンパイラは、COBOLプログラム内のSQL文を標準のOracleランタイム・ライブラリ・コールに変換します。生成された出力ファイルは、通常の方法でコンパイル、リンクおよび実行できます。

迅速な開発と他のシステムとの互換性を優先する場合は、Pro*COBOLプリコンパイラを使用します。

1.2 Pro*COBOLプリコンパイラ

Pro*COBOLプリコンパイラは、SQL文をCOBOLプログラムに埋め込むことができるプログラミング・ツールです。図1-1のように、プリコンパイラはホスト・プログラムを入力として受け入れ、埋込みSQL文を標準Oracleランタイム・ライブラリ・コールに変換して、通常の方法でコンパイル、リンクおよび実行できるソース・プログラムを生成します。

図1-1 埋込みSQLプログラムの開発

図1-1の説明が続きます
「図1-1 埋込みSQLプログラムの開発」の説明

ノート:

Pro*COBOLは、Windows 2000の32-bit版対応のMicro Focus Net Express 5.0をサポートしています。

ノート:

Pro*COBOLでは、オブジェクト指向COBOL(OOCOBOL)仕様をサポートしていません。

1.2.1 代替言語

Oracleプリコンパイラは次の言語で使用できます(ただし、すべてのシステムで使用できるとはかぎりません)。

  • C/C++

  • COBOL

  • FORTRAN

1.3 Pro*COBOLプリコンパイラを使用する利点

Pro*COBOLプリコンパイラを使用すると、アプリケーション・プログラムに強力で柔軟なSQLを組み込めます。SQL文をCOBOLに埋め込むことができます。便利なインタフェースによって、アプリケーションから直接Oracleにアクセスできます。

他の多くのアプリケーション開発ツールとは異なり、Pro*COBOLではアプリケーションを高度にカスタマイズできます。たとえば、最新のウィンドウ機能およびマウス技術を取り込んだユーザー・インタフェースを作成できます。また、ユーザーとの対話なしに、バックグラウンドで実行するアプリケーションも作成できます。

さらに、Pro*COBOLを使用してアプリケーションを微調整できます。リソース使用率、SQL文の実行および様々なランタイム・インジケータの状況を詳細に監視できます。得られた情報に基づいて、最大のパフォーマンスが実現できるようにプログラムのパラメータを調整できます。

1.4 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への切替えはわずかな変更で行えます。

1.5 PL/SQL言語

SQLを拡張したPL/SQLは、プロシージャ構造、変数宣言および強力なエラー処理をサポートするトランザクション処理言語です。同一PL/SQLブロック内では、SQLおよびPL/SQLの拡張機能をすべて使用できます。

埋込みPL/SQLの主な利点はパフォーマンスの向上です。SQLと異なり、PL/SQLでは、SQL文を論理的にグループ化し、1文単位ではなくブロック単位でOracleに送信できます。この結果、ネットワークの通信量および処理のオーバーヘッドが減少します。

関連項目

1.6 Pro*COBOLの機能および利点

図1-2に示すように、Pro*COBOLには、効率がよく信頼性の高いアプリケーション開発を支援する機能および利点が数多くあります。

図1-2 Pro*COBOLの機能および利点

図1-2の説明が続きます。
「図1-2 Pro*COBOLの機能および利点」の説明

たとえば、Pro*COBOLプリコンパイラを使用して次のことができます。

  • COBOLを使用したアプリケーション開発。

  • ANSI/ISO埋込みSQL規格への準拠。

  • 実行時に、COBOLプログラム内で有効な任意のSQL文の受入れおよび作成を可能にする、ANSI動的SQL方法4の利用。

  • 高度にカスタマイズされたアプリケーションの設計および開発。

  • Oracleの内部データ型とCOBOLデータ型の間の自動変換。

  • COBOLアプリケーション・プログラムにPL/SQLトランザクション処理ブロックを埋め込むことによる、パフォーマンスの向上。

  • 有用なプリコンパイラ・オプションの指定およびプリコンパイル中の値変更。

  • データ型の同値化機能を使用した、Oracleによる入力データの解析および出力データの形式設定の制御。

  • 複数のプログラム・モジュールを個別にプリコンパイルし、後でリンクして1つの実行可能プログラムを作成する機能。

  • 埋込みSQLデータを操作する文およびPL/SQLブロックの構文と意味のチェック。

  • Oracle Net Servicesを使用した、複数ノード上のOracle Databaseへの同時アクセス。

  • 入力および出力プログラム変数での配列の使用。

  • 異なった環境下でのホスト・プログラムの実行を可能にする、コード・セクションの条件付きプリコンパイル。

  • 高級言語で記述されているユーザー・イグジットを使用した、Oracle FormsおよびOracle Reportsなどのツールとのインタフェース。

  • ANSI準拠の状態変数SQLSTATEとSQLCODE、またはSQLコミュニケーション領域(SQLCA)とWHENEVER文を使用した、エラーおよび警告の処理。または、SQLSTATEとSQLCODE、およびSQLコミュニケーション領域(SQLCA)とWHENEVER文を使用。

  • Oracle通信領域(ORACA)に備えられている診断プログラム拡張セットの使用。

  • ラージ・オブジェクト(LOB)データベース型へのアクセス。

1.7 ディレクトリ構造

Pro*COBOLをインストールする際に、Oracle Universal Installerによって\precompというディレクトリがORACLE_BASE\ORACLE_HOMEディレクトリに作成されます。

ノート:

\precompディレクトリには、Pro*C/C++など他の製品のファイルが格納されている場合があります。

\precompディレクトリは、表1-1に示すディレクトリで構成されています。

表1-1 ディレクトリ

ディレクトリ名 目次

\admin

構成ファイル

\demo\procob2

Pro*COBOLのサンプル・プログラム

\demo\sql

サンプル・プログラムのSQLスクリプト

\doc\procob2

Pro*COBOLのREADMEファイル

\lib

ライブラリ・ファイル

\mesg

メッセージ・ファイル

\public

ヘッダー・ファイル

1.7.1 ヘッダー・ファイル

ORACLE_BASE\ORACLE_HOME\precomp\publicディレクトリには、表1-2に示すPro*COBOLのヘッダー・ファイルが格納されています。

表1-2 ヘッダー・ファイル

ヘッダー・ファイル 説明

oraca.cob

ランタイム・エラーの診断、およびプログラムによる様々なOracleリソースの使用状況の監視に役立つOracle通信領域(ORACA)が含まれています。

oraca5.cob

ORACA5は、ORACAのCOMP-5バージョンです。

sqlca.cob

ランタイム・エラーの診断に役立つSQLコミュニケーション領域(SQLCA)が含まれています。SQLCAは、実行可能なSQL文が実行されるたびに更新されます。

sqlca5.cob

SQLCA5は、SQLCAのCOMP-5バージョンです。

sqlda.cob

動的SQL方法4を使用するプログラムに必要なデータ構造であるSQL記述子領域(SQLDA)が含まれています。

sqlda5.cob

これは、SQLDAのCOMP-5バージョンです。

1.7.2 ライブラリ・ファイル

ORACLE_BASE\ORACLE_HOME \precomp\libディレクトリには、Pro*COBOLアプリケーションにリンクするときに使用するライブラリ・ファイルが格納されています。ライブラリ・ファイル名は、orasql12.libです。

orasql11.libは正しいでしょうか。

1.7.3 既知の問題、制限事項および対処方法

  1. Windowsのすべてのオペレーティング・システムでは、ファイル名やディレクトリ名にスペースを含めることができますが、Oracle Pro*COBOLプリコンパイラでは、ファイル名やディレクトリ名にスペースを含むファイルはプリコンパイルされません。たとえば、次のような書式は使用しないでください。

    • proc iname=test one.pc

    • proc iname=d:\dir1\second dir\sample1.pc

  2. /LITLINKオプションを使用してリンクされていないPROCOBアプリケーションを実行すると、実行時に次のエラーが表示され、失敗することがあります。

    Load error: file 'ORASQL8'
    

    この場合、orasql9.dllが置かれているディレクトリで、orasql9.dllorasql8.dllにコピーする必要があります。

    これはまだ問題でしょうか。エラーの内容およびlibファイル名は何でしょうか。

  3. SPARC Solaris 64ビット・コンピュータでは、COMP5プリコンパイラ・オプションを使用できません。かわりにCOMPオプションを使用します。

1.8 互換性、アップグレードおよび移行

追加の「配列INSERT」および「配列SELECT」構文は、DB2プリコンパイラ・アプリケーションをPro*Cobolアプリケーションに移行する場合に役立ちます。これは、DB2の配列INSERTおよび配列SELECT構文をOracle Pro*Cobol用に変更する必要がないためです。

Pro*Cobolでサポートされている「暗黙的なバッファ済INSERT」機能は、パフォーマンスを向上させるために、Pro*Cobolの配列構文を使用せず、DB2プリコンパイラ・アプリケーションをPro*Cobolアプリケーションに移行する場合に役立ちます。