bea ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > Tuxedo > サンプルを使用した Tuxedo アプリケーションの開発方法 > STOCKAPP (複雑な COBOL アプリケーション) のチュートリアル |
サンプルを使用した Tuxedo アプリケーションの開発方法
|
STOCKAPP (複雑な COBOL アプリケーション) のチュートリアル
ここでは、次の内容について説明します。
STOCKAPP とは
STOCKAPP は、BEA Tuxedo システム・ソフトウェアに同梱されている株式売買の ATMI サンプル・アプリケーションです。このアプリケーションでは、顧客のアカウント情報の検証と更新、株式や株式投資信託の売買注文の執行など、株式売買関連の操作を実行できます。
ここでは、STOCKAPP アプリケーションを開発する方法について、手順を順に示して説明します。このチュートリアルに従って STOCKAPP の「開発」を経験すると、独自のアプリケーションを開発できるようになります。
STOCKAPP チュートリアルは、次の 3 つの節から構成されています。
注記 ここで説明する内容は、アプリケーションの開発、管理、プログラミングに経験のあるシステム・ユーザを対象としています。また、BEA Tuxedo システム・ソフトウェアについて理解していることを前提としています。BEA Tuxedo アプリケーションをビルドするには、開発ラインセンスが必要です。
STOCKAPP について
ここでは、STOCKAPP アプリケーションを構成するファイル、クライアント、およびサービスについて説明します。各作業をクリックすると、その作業を行う手順が表示されます。
STOCKAPP のファイルについて
STOCKAPP アプリケーションを構成するファイルは、STOCKAPP ディレクトリに置かれています。このディレクトリは、次のように構成されています。
株式アプリケーション (STOCKAPP) のファイルについて STOCKAPP ディレクトリには、次のファイルが置かれています。
次の表は、STOCKAPP を構成するファイルを示しています。この表には、BEA Tuxedo システム・ソフトウェアで提供されるソース・ファイル、株式アプリケーションのビルド時に生成されるファイル、および各ファイルの簡単な説明がまとめられています。
関連項目
STOCKAPP クライアントの検証
BEA Tuxedo システムの ATMI クライアント/サーバ・アーキテクチャでは、通信に次の 2 つのモードがあります。
システム・クライアント・プログラム
次の図は、STOCKAPP の構成を示しています4 つのサービス要求のいずれかを選択します。楕円は、アプリケーション・サービスを表しています。
図 5-1 STOCKAPP の要求
型付きバッファ 型付きバッファは、BEA Tuxedo システムの基本部分です。BEA Tuxedo システムでは、型付きバッファに特定のデータ型が格納されます。定義されている型は、VIEW、STRING、CARRAY、X_OCTET、X_COMMON、および XML の 6 つです。アプリケーションで別の型を定義することもできます。 要求/応答クライアント:BUY.cbl BUY は、クライアント・プログラムの 1 つです。このプログラムでは、アカウントの照会が作成されて、BUYSR サービスが呼び出されます。このプログラムは、次のように実行可能プログラムとして呼び出します。 BUY.cbl のソース・コード BUY.cbl プログラムの次のセクションを確認します。 これらのセクションは、BUY.cbl で BEA Tuxedo ATMI 関数が使用される場所です。csimpl.cbl と同様に、BUY.cbl では、TPINITIALIZE を呼び出してアプリケーションに参加し、TPCALL を呼び出してサービスの RPC 要求を行い、TPTERM を呼び出してアプリケーションを終了します。また、BUY.cbl では、cust ファイルで定義される構造体と VIEW 型のレコードが使用されます。構造体のソース・コードは、VIEW 記述ファイル cust.V に記述されています。 クライアントのビルド cust などの VIEW 記述ファイルは、VIEW コンパイラ viewc(1) でコンパイルします。次に示すように、view(c) を実行して、コンパイルします。 viewc には、COBOL ファイル (CUST.cbl)、バイナリ形式の VIEW 記述ファイル (cust.V)、およびヘッダ・ファイル (cust.h) の 3 つの出力ファイルがあります。 クライアント・プログラムの BUY.cbl、FUNDPR.cbl、FUNDUP.cbl、および SELL.cbl は、buildclient(1) でコンパイルされ、必要な BEA Tuxedo ライブラリとリンクされます。 必要に応じて、これらのコマンドは個別に使用できます。その手順に関する規則は、STOCKAPP.mk に定義されています。 関連項目
BUY
* Now register the client with the system
* Issue a TPCALL
* Clean upviewc-C-n
cust.v
STOCKAPP サーバの検証
ここでは、次の内容について説明します。
ATMI サーバとは、1 つ以上のサービスを提供する実行可能プロセスです。BEA Tuxedo システムでは、サーバはクライアントとして動作するプロセスから継続的に要求を受け取り、それを適切なサービスに転送します。サービスは、アプリケーション用に記述された COBOL 言語コードのサブルーチンです。BEA Tuxedo システムのトランザクション処理アプリケーションの機能性は、これらのサービスがリソース・マネージャにアクセスすることによって実現されます。サービス・ルーチンは、BEA Tuxedo システム・プログラマによって作成されなければならないアプリケーションの一部です。ユーザ定義のクライアントは、アプリケーションの別の部分に相当します。
すべての STOCKAPP サービスでは、ATMI (Application to Transaction Monitor Interface) で提供される関数が使用されて、次のタスクが行われます。
STOCKAPP サービス
STOCKAPP には、4 つのサービスがあります。STOCKAPP の各サービスは、次に示すように、サーバのソース・コードにある COBOL 関数名と一致します。
STOCKAPP のファイルおよびリソースの準備
ここでは、STOCKAPP を実行するために必要なファイルやリソースを作成するための手順を順に示します。
各作業をクリックすると、その作業を行う手順が表示されます。
ステップ 1: 環境変数の設定
STOCKAPP に必要な環境変数は、STKVAR ファイルに定義されています。このファイルは数多くのコメントが記述された大きな (約 100 行から構成される) ファイルです。
TUXDIR:parameter null or not set
. ./STKVAR
コード リスト5-1 STKVAR:STOCKAPP の環境変数
#ident "@(#)samples/atmi:STOCKAPP/STKVAR
#
# このファイルには、bankapp を実行するために
# Tuxedo システムで必要なすべての環境変数が設定されています。
#
# このディレクトリには、すべての Tuxedo ソフトウェアが置かれています。
# システム管理者はこの変数を設定する必要があります。
#
TUXDIR=${TUXDIR:?}
#
# このディレクトリには、ユーザ作成の全コードが置かれています。
#
# アプリケーション・ジェネレータによって生成されたファイルが
# 置かれるディレクトリの絶対パス名です。
#
APPDIR=${HOME}/STOCKAPP
#
# tmloadcf で使用される環境ファイルです。
#
COBDIR=${COBDIR:?}
#
# このディレクトリには、コンパイルとリンクに必要な
# COBOL ファイルが置かれています。
#
LD_LIBRARY_PATH=$COBDIR/coblib:${LD_LIBRARY_PATH}
#
# coblib を LD_LIBRARY_PATH に追加します。
#
ENVFILE=${APPDIR}/ENVFILE
#
# CBLVIEWC、tmloadcf などで使用されるフィールド・テーブル・ファイルのリストです。
#
FIELDTBLS=fields,Usysflds
#
# フィールド・テーブル・ファイルを検索するディレクトリのリストです。
#
FLDTBLDIR=${TUXDIR}/udataobj:${APPDIR}
#
# トランザクション・ログのデバイスを設定します。これは、
# UBBCBSHM ファイルの *MACHINES セクションにあるこのサイトの LMID の
# TLOGDEVICE パラメータと一致する必要があります。
#
TLOGDEVICE=${APPDIR}/TLOG
#
# コンフィギュレーション・ファイルのデバイスです。
#
UBBCBSHM=$APPDIR/UBBCBSHM
#
# /T にすべての情報を提供するバイナリ・ファイルのデバイスです。
#
TUXCONFIG=${APPDIR}/TUXCONFIG
#
# 中央ユーザ・ログを記録するファイルの接頭語を設定します。
# これは、UBBCONFIG ファイルの *MACHINES セクションにある
# このサイトの LMID の ULOGPFX パラメータと一致する必要があります。
#
ULOGPFX=${APPDIR}/ULOG
#
# VIEW ファイルを検索するディレクトリのリストです。
#
VIEWDIR=${APPDIR}
#
# CBLVIEWC、tmloadcf などで使用される VIEW ファイルのリストです。
#
VIEWFILES=quote.V,cust.V
#
# COBCPY を設定します。
#
COBCPY=$TUXDIR/cobinclude
#
# COBOPT を設定します。
#
COBOPT="-C ANS85 -C ALIGN=8 -C NOIBMCOMP -C TRUNC=ANSI -C OSEXT=cbl"
#
# CFLAGS を設定します。
#
CFLAGS="-I$TUXDIR/include -I$TUXDIR/sysinclude"
#
# 設定したすべての変数をエクスポートします。
#
export TUXDIR APPDIR ENVFILE
export FIELDTBLS FLDTBLDIR TLOGDEVICE
export UBBCBSHM TUXCONFIG ULOGPFX LD_LIBRARY_PATH
export VIEWDIR VIEWFILES COBDIR COBCPY COBOPT CFLAGS
#
# 設定されていない場合は、TUXDIR/bin を PATH に追加します。
#
a="`echo $PATH | grep ${TUXDIR}/bin`"
if [ x"$a" = x ]
then
PATH=${TUXDIR}/bin:${PATH}
export PATH
fi
#
# 設定されていない場合は、APPDIR を PATH に追加します。
#
a="`echo $PATH | grep ${APPDIR}`"
if [ x"$a" = x ]
then
PATH=${PATH}:${APPDIR}
export PATH
fi
#
# 設定されていない場合は、COBDIR を PATH に追加します。
#
a="`echo $PATH | grep ${COBDIR}`"
if [ x"$a" = x ]
then
PATH=${PATH}:${COBDIR}
export PATH
fi
そのほかの要件
PATH=/usr/5bin:$PATH;export PATH
シェルとしては、csh ではなく /bin/sh を使用します。
関連項目
ステップ 2: STOCKAPP でのサーバのビルド
実行可能な ATMI サーバをビルドするには、buildserver を使用します。このコマンドではオプションを使用して、出力ファイル、アプリケーションで提供される入力ファイル、各種の方法で BEA Tuxedo システム・アプリケーションを実行するためのライブラリを指定します。
-C オプションを指定して buildserver を実行すると、cobcc コマンドが呼び出されます。環境変数の ALTCC を設定すると別のコンパイル・コマンドを指定でき、ALTCFLAGS を設定するとコンパイル時と編集時にフラグを設定できます。buildserver のコマンド行で指定できる主なオプションを以下の例に示します。
buildserver コマンドは STOCKAPP.mk で使用され、株式アプリケーションの各サーバをコンパイルしてビルドします。詳細については、『BEA Tuxedo コマンド・リファレンス』の buildserver(1) を参照してください。
BUYSELL サーバのビルド
BUYSELL ATMI サーバは、BUYSR および SELLSR 関数のコードが記述されたファイルから作成されています。BUYSELL サーバは、まず BUYSELL.o ファイルにコンパイルされ、次に buildserver コマンドに渡されます。そのため、コンパイル・エラーを特定でき、サーバをビルドする前に修正することができます。
buildserver -C -v -o BUYSELL -s SELLSR -f SELLSR.cbl -s BUYSR -f BUYSR.cbl
以下は、コマンド行で指定されている各オプションの説明です。
STOCKAPP.mk でビルドされるサーバ
STOCKAPP サーバをビルドする場合、buildserver コマンドの指定方法を理解していることが大切です。ただし、実際にビルドする場合、makefile にビルドの定義を記述することがよくあります。STOCKAPP でもその方法が採用されています。
関連項目
ステップ 3: STOCKAPP.mk ファイルの編集
STOCKAPP には、すべてのスクリプトを実行可能にし、VIEW 記述ファイルをバイナリ形式に変換し、アプリケーション・サーバの作成に必要なすべてのプリコンパイル、コンパイル、およびビルドを行う makefile が提供されています。また、最初からやり直す場合にもこのファイルを利用できます。
提供されている STOCKAPP.mk をそのまま使わずにフィールドを編集した方がよい場合があります。また、説明が必要なフィールドもあります。以下にそれらのフィールドについて説明します。
TUXDIR パラメータの編集
STOCKAPP.mk にある次のコメントと TUXDIR パラメータを確認します。
#
# Tuxedo システムのルート・ディレクトリです。このファイルは、編集してこの値を正しく設定するか、
# または "make -f STOCKAPP.mk TUXDIR=/correct/rootdir" を使用して正しい値を渡すことが必要となります。
# これを行わないと、STOCKAPP のビルドは失敗します。
#
TUXDIR=../..
TUXDIR パラメータには、BEA Tuxedo システムがインストールされたルート・ディレクトリの絶対パス名を指定します。
APPDIR パラメータの編集
APPDIR パラメータに設定されている値を変更する場合があります。提供された STOCKAPP では、APPDIR には STOCKAPP ファイルが置かれたディレクトリ (TUXDIR の相対パス) が指定されています。次に示す STOCKAPP.mk のセクションには、APPDIR の設定についての説明と定義が記述されています。
#
# STOCKAPP アプリケーションのソース・コードと実行可能ファイルが置かれたディレクトリです。
# このファイルは、編集してこの値を正しく設定するか、
# または "make -f STOCKAPP.mk APPDIR=/correct/appdir" を使用して正しい値を渡すことが必要となります。
# これを行わないと、STOCKAPP のビルドは失敗します。
#
APPDIR=$(TUXDIR)/samples/atmi/STOCKAPP
#
README ファイルに従って、別のディレクトリにファイルをコピーした場合、APPDIR にはファイルのコピー先のディレクトリを指定します。makefile を実行すると、そのディレクトリにアプリケーションがビルドされます。
STOCKAPP.mk ファイルの実行
nohup make -f STOCKAPP.mk install &
関連項目
ステップ 4: コンフィギュレーション・ファイルの編集
STOCKAPP コンフィギュレーション・ファイルには、複数のコンピュータ上でアプリケーションを実行する方法が定義されています。STOCKAPP には、UBBCONFIG(5) で説明されているテキスト形式のコンフィギュレーション・ファイルが提供されています。UBBCBSHM には、単一のコンピュータ上のアプリケーションが定義されています。
コード リスト5-2 値を変更する UBBCBSHM コンフィギュレーション・ファイルのフィールド
#Copyright (c) 1992 Unix System Laboratories, Inc.
#All rights reserved
#Tuxedo COBOL サンプル・アプリケーション用の UBBCONFIG スケルトン・ファイルです。
*RESOURCES
IPCKEY 5226164
DOMAINID STOCKAPP
001 UID <id(1) からのユーザ ID>
002 GID <id(1) からのグループ ID>
MASTER SITE1
PERM 0660
MAXACCESSERS 20
MAXSERVERS 15
MAXSERVICES 30
MODEL SHM
LDBAL Y
MAXGTT 100
MAXBUFTYPE 16
MAXBUFSTYPE 32
SCANUNIT 10
SANITYSCAN 12
DBBLWAIT 6
BBLQUERY 180
BLOCKTIME 10
TAGENT “TAGENT"
#
*MACHINES
003 <SITE1 の名前> LMID=SITE1
004 TUXDIR="<TUXDIR1>"
005 APPDIR="<APPDIR1>"
ENVFILE="<APPDIR1>/ENVFILE"
TUXCONFIG="<APPDIR1>/TUXCONFIG"
TUXOFFSET=0
006 TYPE="<マシン・タイプ>"
ULOGPFX="<APPDIR>/ULOG"
MAXWSCLIENTS=5
#
*GROUPS
COBAPI LMID=SITE1 GRPNO=1
#
#
*SERVERS
FUNDUPSR SRVGRP=COBAPI SRVID=1 CONV=Y ENVFILE="<APPDIR1>/ENVFILE"
FUNDPRSR SRVGRP=COBAPI SRVID=2 ENVFILE="<APPDIR1>/ENVFILE"
BUYSELL SRVGRP=COBAPI SRVID=3 ENVFILE="<APPDIR1>/ENVFILE"
#
#
*SERVICES
SECURITY APP_PW
関連項目
ステップ 5: バイナリ形式のコンフィギュレーション・ファイルの作成
バイナリ形式のコンフィギュレーション・ファイルを作成する前に
バイナリ形式のコンフィギュレーション・ファイルを作成する場合、STOCKAPP ファイルが置かれたディレクトリに移動し、環境変数を設定することが必要です。その場合、次の手順に従います。
コンフィギュレーション・ファイルのロード
コンフィギュレーション・ファイルを編集したら、それを MASTER マシン上にバイナリ・ファイルとしてロードする必要があります。バイナリ形式のコンフィギュレーション・ファイルの名前は TUXCONFIG、そのパス名は TUXCONFIG に定義されています。このファイルは、BEA Tuxedo のシステム管理者の有効なユーザ ID およびグループ ID を持つユーザが作成します。この 2 つの ID は、ご使用のコンフィギュレーション・ファイルの UID および GID の値と同じであることが必要です。同じではない場合、STOCKAPP の実行時にパーミッションの問題が発生します。
tmloadcf UBBCBSHM
TUXCONFIG は、MASTER マシン上だけにインストールできます。アプリケーションの起動時に tmboot によってほかのマシンに複製転送されます。
コンフィギュレーションのオプションとして SECURITY が指定されている場合、tmloadcf の実行時にアプリケーション・パスワードの入力が求められます。30 文字までのパスワードを指定できます。アプリケーションに参加するクライアント・プロセスでは、パスワードを入力する必要があります。
ロードする前に tmloadcf によってテキスト形式のコンフィギュレーション・ファイル (UBBCONFIG) が解析されます。構文エラーが検出された場合、ファイルのロードは失敗します。
関連項目
STOCKAPP の実行
ここでは、STOCKAPP を起動し、各種のクライアント・プログラムとトランザクションを行ってテストし、終了する手順について順に説明します。
各作業をクリックすると、その作業を行う手順が表示されます。
ステップ 1: 起動する前に行う準備作業
コード リスト5-3 IPC レポート
Ipc sizing (minimum /T values only)
Fixed Minimums Per Processor
SHMMIN:1
SHMALL:1
SEMMAP: SEMMNI
Variable Minimums Per Processor
SEMUME, A SHMMAX
SEMMNU, * *
Node SEMMNS SEMMSL SEMMSL SEMMNI MSGMNI MSGMAP SHMSEG
------ ------ ------ ------ ------ ------ ------ ------
machine 1 60 1 60 A + 1 10 20 76K
machine 2 63 5 63 A + 1 11 22 76K
where 1 <= A <= 8.
関連項目
ステップ 2: STOCKAPP の起動
このレポートは、コンフィギュレーション内のすべてのサーバが起動するまで出力されます。起動したサーバの合計数が出力された時点でレポートは終了します。
必要に応じて、コンフィギュレーションの一部のサーバだけを起動することもできます。たとえば、管理サーバだけを起動するには、-A オプションを指定します。オプションが指定されていない場合は、アプリケーション全体が起動します。
tmboot では、起動したサーバ数がレポートされるほかに、ULOG にメッセージが送信されます。
関連項目
ステップ 3: STOCKAPP サービスのテスト
../STKVAR
BUY
関連項目
ステップ 4: STOCKAPP のシャットダウン
STOCKAPP を終了するには、次のように、引数を指定せずに tmshutdown(1) コマンドを MASTER マシンで入力します。
tmshutdown
このコマンド (または tmadmin のシャットダウン・コマンド) を実行すると、次のタスクが行われます。
関連項目
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |