-1

opencobol コンパイラを使用して ubuntu Linux で cobol-db2 プログラムを実行したかったのですが、opencobol を使用して Linux でプログラムを実行するプロセスを説明してください。

4

1 に答える 1

1

これが Stackoverflow の年齢制限ルールに違反している場合は、ご容赦ください。

http://opencobol.add1tocobol.com/#how-does-the-opencobol-compiler-workを参照してください。

多分http://opencobol.add1tocobol.com/#does-opencobol-support-any-sql-databases

データベース ライブラリへのリンクのサンプルについては、

編集:単純なリンクの代わりに、mbinetteが示唆するように

つまり、OpenCOBOL はマルチフェーズ コンパイラです。

  • ソース テキストを前処理します。cobc -Eは後処理されたテキストを stdout に生成して停止します
  • C に変換します。 cobc -Cで .c ソース コード ファイルを生成して停止します
  • ネイティブ C コンパイラを使用してアセンブラに変換します。cobc -S .s アセンブラ ソースを生成して停止する
  • オブジェクトを生成します。cobc -cは .o オブジェクト ファイルを生成して停止します
  • 建てる。cobc -x、またはcobc -m、またはcobc -b (実行可能ファイル、モジュール (.so または DLL) の場合)、および最後に、複数のコマンド ライン入力から動的共有オブジェクトを作成するためのビルド。

OpenCOBOL は共有ライブラリに優れており、C アプリケーション バイナリ インターフェイスを使用することで、COBOL CALL動詞を使用して、すべてではないにしてもほとんどの .so (または DLL) シンボルを動的にロードできます。

CALL "DB2-CONNECT"
    USING
        BY REFERENCE "database name"
        BY CONTENT credentials
        BY VALUE control-bits
    RETURNING pointer-to-handle
    ON EXCEPTION
        DISPLAY "Can't find DB2-CONNECT, use -ldb2 with cobc" END-DISPLAY
END-CALL

DB2 ライブラリーやドキュメントが手元にないため、上記の呼び出しフレームを作成しました

DB2 サービスを使用するプログラムをコンパイルするには、次のようなものを使用します。

cobc -x myprogram.cob -ldb2 -L/path/to/DB2lib

または、おそらくより大きなアプリケーションでは、次のようなものです

cobc -b myprogram.cob hisprogram.cob herprogram.cob
export COB_LIBRARY_PATH=/path/to/development/libraries
export COB_PRE_LOAD=db2-dev:other-dev-libs
cobcrun myprogram

詳細については、FAQ を参照してください。うまくいけば、上記のリンクに永遠に隠されます

1.1 の時点で OpenCOBOL が EXEC 構文をサポートしていないことを指摘します。DB2 EXEC プリプロセッサーは、OpenCOBOL に適した COBOL を生成する場合と生成しない場合があります。Oracle Pro*COBOL EXEC END-EXEC プリコンパイラは、Oracle SQL にリンクするために OpenCOBOL でコンパイルする COBOL ソース コードを生成すると言われています。

于 2012-11-25T07:03:34.320 に答える