Symfoware Parallel Server RDBユーザーズガイド 応用プログラム開発編
目次 索引 前ページ次ページ

第4章 応用プログラムの翻訳・結合編集> 4.4 複数の翻訳単位から構成される応用プログラムの翻訳・結合編集の方法

4.4.2 動的結合する場合の翻訳・結合編集

図:複数の翻訳単位を動的結合する場合の翻訳・結合編集の方法に、複数の翻訳単を動的結合する場合の翻訳・結合編集の方法を示します。

[図:複数の翻訳単位を動的結合する場合の翻訳・結合編集の方法]

SQL文を使用する翻訳単は、sqlcc、sqlfccまたはsqlcobolを使用して翻訳・結合編集を行います。

sqlcc、sqlfccおよびsqlcobolのオプションの指定方法については、manコマンドを利用して参照してください。

応用プログラムによっては、SQL文を使用しない翻訳単位が存在する場合があります。

SQL文を使用しない翻訳単は、ccコマンド、fccコマンドまたはcobolコマンドを使用して翻訳・結合編集を行います。

また、ロードモジュールを動的結合して作成するためには、副プログラムは共用ライブラリにロードモジュールとして作成し、主プログラムの翻訳・結合編集時に結合する副プログラムのロードモジュール名を指定する必要があります。

表:応用プログラムを動的結合する場合に必要なオプションに、応用プログラムを動的結合する場合に必要なオプションを示します。

[表:応用プログラムを動的結合する場合に必要なオプション]

翻訳対象の性質

指定するオプション

備 考

SQL文を含む翻訳単位

主プログラム

-l 副プログラムのロードモジュール名

結合する副プログラム

-M

COBOLの場合に指定

副プログラム

-G

動的結合の指定

SQL文を含まない翻訳単位

主プログラム

-l 副プログラムのロードモジュール名

結合する副プログラム

-M

COBOLの場合に指定

副プログラム

-G

動的結合の指定

■C言語使用時の例

以下の例において、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                

■COBOL使用時の例

例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での動的結の例

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.cobol

sqlcobol ATMS01.scob
-G -o libATMS01.so
sqlcobol ATMS02.scob
-G -o libATMS02.so sqlcobol ATMS.scob -M -o ATMS
-l ATMS01 -l ATMS02

ATMSはメインプログラム、ATMS01、ATMS02はサブプログラムです。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2006