1.2.3 Linux(EM64T)用標準サブルーチンの適用方法
(1) 提供形態
Linux(EM64T)用標準サブルーチンは,スレッド種別(シングルスレッド対応用とマルチスレッド対応用),ライブラリ形式(アーカイブ形式と共用ライブラリ形式),および文字コード形式とバイナリデータのエンディアン格納形式の組み合わせによって,全16種類のライブラリが提供されます。Linux(EM64T)用標準サブルーチンのライブラリの種類一覧について,次の表に示します。
なお,上記に加えてそれぞれの種類ごとに(和暦)規格の標準版とJIS規格版の2種類が提供されます。
これらを正しく使い分けないと,サブルーチンが正常に動作しない場合があるので,注意してください。
|
ライブラリの種類 |
種類詳細 |
|---|---|
|
スレッド種別 |
シングルスレッド対応用/マルチスレッド対応用の2種類 |
|
文字コード形式 |
UNI_BIG/UNI_LITTLE※の2種類 |
|
バイナリデータのエンディアン形式 |
BIG/LITTLEの2種類 |
|
ファイル形式 |
アーカイブ形式/共用ライブラリ形式の2種類 |
|
(和暦)規格 |
標準版とJIS規格版の2種類 |
- 注※
-
UNI_BIG/UNI_LITTLEはUnicode対応版ライブラリのUTF-16文字データのエンディアン(UNI_BIG=UTF-16BE/UNI_LITTLE=UTF-16LE)を示します。
なお,各ライブラリにあるJIS規格版では標準版に対して,実在日チェック(和暦)[LXRPID02],年月日変換(西暦→和暦)[LXRPID05]で各年号の期間が異なります。年号の詳細な期間については,「標準サブルーチン仕様書」を参照してください。
Unicode対応版の提供形態を次に示します。
|
格納場所 |
構成物 |
提供形態 |
|---|---|---|
|
/opt/SEWB64 |
− |
− |
|
├─ja_JP.UTF-8 | └─COMMON | └─RTSP | └─Cbl_Source |
コピークローズ |
テキストファイル |
|
├─lib |
シングルスレッド対応ライブラリ |
「表1-14 libディレクトリの内容」を参照 |
|
└─mthread └─lib |
マルチスレッド対応ライブラリ |
|
ファイル名 |
形式 |
ライブラリ形式 |
|---|---|---|
|
libLxUniBSB.a |
文字データ,バイナリデータが共にビッグエンディアン形式のライブラリ |
アーカイブ形式 |
|
libLxUniBSB.so |
共用ライブラリ形式 |
|
|
libLxUniBJB.a |
上記のJIS規格版 |
アーカイブ形式 |
|
libLxUniBJB.so |
共用ライブラリ形式 |
|
|
libLxUniBSL.a |
文字データがビッグエンディアン,バイナリデータがリトルエンディアン形式のライブラリ |
アーカイブ形式 |
|
libLxUniBSL.so |
共用ライブラリ形式 |
|
|
libLxUniBJL.a |
上記のJIS規格版 |
アーカイブ形式 |
|
libLxUniBJL.so |
共用ライブラリ形式 |
|
|
libLxUniLSB.a |
文字データがリトルエンディアン,バイナリデータがビッグエンディアン形式のライブラリ |
アーカイブ形式 |
|
libLxUniLSB.so |
共用ライブラリ形式 |
|
|
libLxUniLJB.a |
上記のJIS規格版 |
アーカイブ形式 |
|
libLxUniLJB.so |
共用ライブラリ形式 |
|
|
libLxUniLSL.a |
文字データ,バイナリデータが共にリトルエンディアン形式のライブラリ |
アーカイブ形式 |
|
libLxUniLSL.so |
共用ライブラリ形式 |
|
|
libLxUniLJL.a |
上記のJIS規格版 |
アーカイブ形式 |
|
libLxUniLJL.so |
共用ライブラリ形式 |
(a) コピークローズ
標準サブルーチンのインタフェーステーブルが記述されています。標準サブルーチンを使用して作成したプログラムをコンパイルするときに使用します。
(b) シングルスレッド対応ライブラリ
シングルスレッド対応プログラムで標準サブルーチンを使用するときに使用します。
(c) マルチスレッド対応ライブラリ
マルチスレッド対応プログラムで標準サブルーチンを使用するときに使用します。
(d) ビッグエンディアン形式のライブラリ
標準サブルーチンを使用して作成したプログラムを,ビッグエンディアン環境で実行するときに使用します。
(e) リトルエンディアン形式のライブラリ
標準サブルーチンを使用して作成したプログラムを,リトルエンディアン環境で実行するときに使用します。
(f) 文字データ,バイナリデータ
ここでの文字データとは日本語文字列定数,バイナリデータとは2進および浮動小数点のデータ項目を示します。文字データおよびバイナリデータの形式は,コンパイルオプションの使用によって変わります。詳細については,「1.2.3(2)(c) コンパイル・リンケージ」を参照してください。
(2) 適用方法
Linux(EM64T)用標準サブルーチンを使用してユーザアプリケーションプログラムを作成する手順を次に示します。
(a) 前提条件
Linux(EM64T)用標準サブルーチンでUnicode対応版を利用する場合,次に示すソフトウェアが必要となります。
-
日立コード変換 - Runtime(64)
(b) 環境変数の設定
-
PATH,LD_LIBRARY_PATH
環境変数PATHおよびLD_LIBRARY_PATHに標準サブルーチンのライブラリの格納パスを追加する必要があります。sh(Bourneシェル)を例に,環境変数の設定例を次に示します。
- (例1)シングルスレッド対応版ライブラリを使用する場合
-
PATH=${PATH}:/opt/SEWB64/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/opt/SEWB64/lib
export PATH LD_LIBRARY_PATH
- (例2)マルチスレッド対応版ライブラリを使用する場合
-
PATH=${PATH}:/opt/SEWB64/mthread/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/opt/SEWB64/mthread/lib
export PATH LD_LIBRARY_PATH
-
CBLLIB
環境変数CBLLIBに標準サブルーチンのインタフェーステーブル格納パスを設定する必要があります。
- (例)Unicode対応版を使用する場合
-
CBLLIB=${CBLLIB}:/opt/SEWB64/ja_JP.UTF-8/COMMON/RTSP/Cbl_Source
export CBLLIB
-
LANG
環境変数LANGに使用するロケールを設定する必要があります。
- (例)Unicode対応版を使用する場合
-
LANG=ja_JP.UTF-8
export LANG
-
CBLLANG,CBLSRCENCODING,CBLUNIENDIAN
Unicode 対応版を使用する場合は,環境変数CBLLANG に'UNICODE',環境変数CBLSRCENCODING に'SJIS'を指定し,さらに,環境変数CBLUNIENDIAN に'BIG',または'LITTLE'を指定する必要があります。
- (例)Unicode対応版(文字データがリトルエンディアン形式)を使用する場合
-
CBLLANG=UNICODE
export CBLLANG
CBLSRCENCODING=SJIS
export CBLSRCENCODING
CBLUNIENDIAN=LITTLE
export CBLUNIENDIAN
(c) コンパイル・リンケージ
ccbl2002コマンドを使用して,コンパイルおよびリンケージを行います。
ユーザアプリケーションでのコンパイルオプションの使用の有無によって,リンクの対象となる標準サブルーチンのライブラリファイルが変わります。使用するコンパイルオプションと,リンクの対象となるライブラリファイルの対応を次に示します。
コンパイルオプションの設定方法,および各コンパイルオプションの機能については,マニュアル「COBOL2002 使用の手引 手引編」を参照してください。
|
オプション名 |
UNI_BIG |
UNI_LITTLE |
||||||
|---|---|---|---|---|---|---|---|---|
|
BIG |
LITTLE |
BIG |
LITTLE |
|||||
|
.a |
.so |
.a |
.so |
.a |
.so |
.a |
.so |
|
|
-UniObjGen |
○ |
○ |
○ |
○ |
○ |
○ |
○ |
○ |
|
-UniEndian,Big |
○ |
○ |
○ |
○ |
× |
× |
× |
× |
|
-UniEndian,Little |
× |
× |
× |
× |
○ |
○ |
○ |
○ |
|
-BigEndian,Bin |
○ |
○ |
× |
× |
○ |
○ |
× |
× |
|
-BigEndian,Float |
○ |
○ |
× |
× |
○ |
○ |
× |
× |
- (凡例)
-
○:指定する
×:指定しない
UNI_BIG:文字データがビッグエンディアン
UNI_LITTLE:文字データがリトルエンディアン
BIG:バイナリデータがビッグエンディアン
LITTLE:バイナリデータがリトルエンディアン
|
オプション名 |
UNI_BIG |
UNI_LITTLE |
||||||
|---|---|---|---|---|---|---|---|---|
|
BIG |
LITTLE |
BIG |
LITTLE |
|||||
|
.a |
.so |
.a |
.so |
.a |
.so |
.a |
.so |
|
|
-UniObjGen |
○ |
○ |
○ |
○ |
○ |
○ |
○ |
○ |
|
-UniEndian,Big |
○ |
○ |
○ |
○ |
× |
× |
× |
× |
|
-UniEndian,Little |
× |
× |
× |
× |
○ |
○ |
○ |
○ |
|
-BigEndian,Bin |
○ |
○ |
× |
× |
○ |
○ |
× |
× |
|
-BigEndian,Float |
○ |
○ |
× |
× |
○ |
○ |
× |
× |
|
-MultiThread |
○ |
○ |
○ |
○ |
○ |
○ |
○ |
○ |
|
-lpthread |
○ |
○ |
○ |
○ |
○ |
○ |
○ |
○ |
- (凡例)
-
○:指定する
×:指定しない
UNI_BIG:文字データがビッグエンディアン
UNI_LITTLE:文字データがリトルエンディアン
BIG:バイナリデータがビッグエンディアン
LITTLE:バイナリデータがリトルエンディアン
コンパイルオプションの指定例を次に示します。
- (例1)シングルスレッド対応版,文字データがリトルエンディアン,バイナリデータがビッグエンディアン形式のアーカイブ形式ライブラリを使用する場合
-
(a)標準サブルーチンを呼び出すメインプログラムをコンパイルする場合
ccbl2002 -UniObjGen -UniEndian,Little -BigEndian,Bin -BigEndian,Float -Main,System ABC.cbl -OutputFile ABC -L/opt/SEWB64/lib -Link,-Bstatic -lLxUniLSB -Link,-Bdynamic
(b)標準サブルーチンを呼び出すメインプログラムがコンパイル済みの場合
ccbl2002 -UniObjGen -UniEndian,Little -BigEndian,Bin -BigEndian,Float -OutputFile ABC ABC.o -L/opt/SEWB64/lib -Link,-Bstatic -lLxUniLSB -Link,-Bdynamic
- (例2)シングルスレッド対応版,文字データがリトルエンディアン,バイナリデータがビッグエンディアン形式の共有ライブラリを使用する場合
-
(a)標準サブルーチンを呼び出すメインプログラムをコンパイルする場合
ccbl2002 -UniObjGen -UniEndian,Little -BigEndian,Bin -BigEndian,Float -Main,System ABC.cbl -OutputFile ABC -L/opt/SEWB64/lib -lLxUniLSB
(b)標準サブルーチンを呼び出すメインプログラムがコンパイル済みの場合
ccbl2002 -UniObjGen -UniEndian,Little -BigEndian,Bin -BigEndian,Float -OutputFile ABC ABC.o -L/opt/SEWB64/lib -lLxUniLSB
- (例3)マルチスレッド対応版,文字データがビッグエンディアン,バイナリデータがリトルエンディアン形式の共用ライブラリを使用する場合
-
(a)標準サブルーチンを呼び出すメインプログラムをコンパイルする場合
ccbl2002 -MultiThread -UniObjGen -UniEndian,Big -Main,System ABC.cbl -OutputFile ABC -L/opt/SEWB64/mthread/lib -lLxUniBSL -lpthread
(b)標準サブルーチンを呼び出すメインプログラムがコンパイル済みの場合
ccbl2002 -MultiThread -UniObjGen -UniEndian,Big -OutputFile ABC ABC.o -L/opt/SEWB64/mthread/lib -lLxUniBSL -lpthread