Symfoware Parallel Server RDBユーザーズガイド 応用プログラム開発編 |
目次
索引
![]() ![]() |
第4章 応用プログラムの翻訳・結合編集 | > 4.4 複数の翻訳単位から構成される応用プログラムの翻訳・結合編集の方法 |
図:複数の翻訳単位を動的結合する場合の翻訳・結合編集の方法に、複数の翻訳単位を動的結合する場合の翻訳・結合編集の方法を示します。
SQL文を使用する翻訳単位は、sqlcc、sqlfccまたはsqlcobolを使用して翻訳・結合編集を行います。
sqlcc、sqlfccおよびsqlcobolのオプションの指定方法については、manコマンドを利用して参照してください。
応用プログラムによっては、SQL文を使用しない翻訳単位が存在する場合があります。
SQL文を使用しない翻訳単位は、ccコマンド、fccコマンドまたはcobolコマンドを使用して翻訳・結合編集を行います。
また、ロードモジュールを動的結合して作成するためには、副プログラムは共用ライブラリにロードモジュールとして作成し、主プログラムの翻訳・結合編集時に結合する副プログラムのロードモジュール名を指定する必要があります。
表:応用プログラムを動的結合する場合に必要なオプションに、応用プログラムを動的結合する場合に必要なオプションを示します。
翻訳対象の性質 |
指定するオプション |
備 考 |
|
---|---|---|---|
SQL文を含む翻訳単位 |
主プログラム |
-l 副プログラムのロードモジュール名 |
結合する副プログラム |
-M |
COBOLの場合に指定 |
||
副プログラム |
-G |
動的結合の指定 |
|
SQL文を含まない翻訳単位 |
主プログラム |
-l 副プログラムのロードモジュール名 |
結合する副プログラム |
-M |
COBOLの場合に指定 |
||
副プログラム |
-G |
動的結合の指定 |
以下の例において、sqlfccを利用する場合は、sqlccをsqlfccに、またccをfccに置き換えたものになります。
例1
SQL文を使用する主プログラム(demo10main.sc)と、SQL文を使用する2個の副プログラム(libsub1.sc、libsub2.sc)を動的結合します。ロードモジュール名は、副プログラムを“libsub1.so”および“libsub2.so”、主プログラムを“demo10main”とします。
cd /home/rdb2/application/src setenv LD_LIBRARY_PATH /home/rdb2/application/lib:$LD_LIBRARY_PATH sqlcc libsub1.sc -G -o ../lib/libsub1.so sqlcc libsub2.sc -G -o ../lib/libsub2.so sqlcc demo10main.sc -o ../bin/demo10main -l sub1 -l sub2
例2
SQL文を使用しない主プログラム(demo11main.c)と、SQL文を使用する副プログラム(libsub3.sc)、およびSQL文を使用しない副プログラム(libsub4.c)を動的結合します。ロードモジュール名は、副プログラムを“libsub3.so”および“libsub4.so”、主プログラムを“demo11main”とします。
cd /home/rdb2/application/src setenv LD_LIBRARY_PATH /home/rdb2/application/lib:$LD_LIBRARY_PATH sqlcc libsub3.sc -G -o ../lib/libsub3.so cc -G -o ../lib/libsub4.so libsub4.c cc -o ../bin/demo11main demo11main.c -l sub3 -l sub4
例1
SQL文を使用する主プログラム(demo12main.scob)と、SQL文を使用する2個の副プログラム(libsub5.scob、libsub6.scob)を動的結合します。ロードモジュール名は、副プログラムを“libsub5.so”および“libsub6.so”、主プログラムを“demo12main”とします。
cd /home/rdb2/application/src setenv LD_LIBRARY_PATH /home/rdb2/application/lib:$LD_LIBRARY_PATH sqlcobol libsub5.scob -G -o ../lib/libsub5.so sqlcobol libsub6.scob -G -o ../lib/libsub6.so sqlcobol demo12main.scob -M -o ../bin/demo12main -l sub5 -l sub6
例2
SQL文を使用しない主プログラム(demo13main.cobol)と、SQL文を使用する副プログラム(libsub7.scob)、およびSQL文を使用しない副プログラム(libsub8.cobol)を動的結合します。ロードモジュール名は、副プログラムを“libsub7.so”および“libsub8.so”、主プログラムを“demo13main”とします。
cd /home/rdb2/application/src setenv LD_LIBRARY_PATH /home/rdb2/application/lib:$LD_LIBRARY_PATH sqlcobol libsub7.scob -G -o ../lib/libsub7.so cobol -G -o ../lib/libsub8.so libsub8.cobol cobol -M -o ../bin/demo13main -l sub7 -l sub8 demo13main.cobol
COBOL85が提供している動的結合は、SQL埋込みCOBOLプログラムでも使用できます。
したがって、動的リンク構造が適用できます。
COBOL85での動的リンク構造は、Symfoware/RDBにおいては動的結合の方法によって結合することになります。動的結合において、COBOLで記述したプログラムの翻訳方法、SQL埋込みCOBOLで記述したプログラムの翻訳方法をそれぞれ以下に示します。翻訳対象プログラムに埋込みSQLが存在するか否かによって、cobolコマンドを使用するか、sqlcobolコマンドを使用するかをソースプログラム単位に選択します。
例
動的リンク構造の場合
COBOLで記述したプログラムの翻訳
SQL埋込みCOBOLで記述した プログラムの翻訳
cobol -G -o libATMS01.so
ATMS01.cobol
cobol -G -o libATMS02.so
ATMS02.cobol
cobol -M -o ATMS
-l ATMS01 -l ATMS02 ATMS.cobolsqlcobol ATMS01.scob
-G -o libATMS01.so
sqlcobol ATMS02.scob
-G -o libATMS02.so sqlcobol ATMS.scob -M -o ATMS
-l ATMS01 -l ATMS02ATMSはメインプログラム、ATMS01、ATMS02はサブプログラムです。
目次
索引
![]() ![]() |