Oracle Tuxedo Application Runtime for IMS (Tuxedo ART for IMS)リファレンス・ガイドでは、Tuxedo ART for IMSソフトウェアとともに配布されるシステム・プロセスおよびコマンドについて説明します。
表1に、Tuxedo ART for IMSのユーティリティを示します。
chgcobol.sh
- Tuxedo ART for IMSに対してMicro Focus COBOLとCOBOL-ITの間を切り替えるために使用されるシェル・スクリプト。
Micro Focus COBOLとCOBOL-ITの両方を同じホストにインストールしておくことができ、相互に切替え可能です。chgcobol.sh
は、Micro Focus COBOLとCOBOL-IT間の切り替えに使用されます。COBOLランタイムの切り替えには、最初にTuxedo ART for IMSアプリケーションを停止する必要があります。
cit
mf
./chgcobol.sh
./chgcobol.sh mf
DFSRRC00
: ARTIBMP
またはARTIBMPT
サーバーをアクティブ化するために使用されるユーティリティ。
DFSRRC00 "BMP,${MBR}
,${PSB},${IN},,,,,${CKPTID},,,,,,,,,,,,"
DFSRRC00
は、DFSRRC00
入力を待機しているARTIBMP/ARTIBMPT
サーバーをアクティブ化するために使用されます。DFSRRC00
パラメータは、ワークベンチによってJCLから変換されたスクリプトから渡された文字列です。現在、文字列に含まれるサブパラメータでサポートされているものは、5つのみです("BMP, ${MBR}, ${PSB}, ${IN}, ${CKPTID}"
)。文字列内の残りのサブパラメータは無視されます。
IMSサーバー・エラーや異常終了がなく、ユーザー・プログラムもクラッシュしていない場合、ユーザー・プログラムのリターン・コードはDFSRRC00
です。
DFSRRC00
クライアント名の書式は、次のとおりです。"${MBR}-DFSRRC00"
。tmadmin
を使用すると、現在実行中のBATCHプログラムを確認できます。
トランザクションやプログラムの開始/終了時に、プログラム起動ログ・ファイルに、次の形式でトレース行が追加されます: "transaction name, program name, Sstart time, Eend time, group id, server id"
(注意: 使用する場合、"-"
は空の値を示します)。
2つの重複するFML32フィールド(IMS_BMP_APPNAME_ROUTE
とIMS_JOB_NAME_ROUTE
)を、DFSRRC00
がBMPサービスを呼び出すときに、ルーティング・フィールドとして使用できます。このため、特定のアプリケーション・プログラムまたはバッチ・ジョブを特定のBMPサーバー・グループにルーティングできます。これらの2つのFML32フィールドは、$IMSDIR/include/ROUTEFML
で定義されています。
注: | 将来の使用に備えて、16個の追加のパラメータが予約されていますが、現在サポートされていません。 |
BMP
${MBR}
${PSB}
{IN}
{CKPTID}
注: | ${MBR} が空の場合、DFSRRC00 はエラーによってすぐに終了します。 |
注: | ${IN} が空の場合、ARTIBMP /ARTIBMP_ORA にリクエストが送信され、BMP プログラムが呼び出されます。 |
注: | ${IN} が空でない場合、ARTIBMPT にリクエストが送信され、トランザクション・コードが${IN} であるトランザクション指向BMPプログラムが呼び出されます。 |
genimsprofile
- セキュリティ・プロファイル・ジェネレータ
genimsprofile [-f <output_file>]
このユーティリティは、Tuxedoアプリケーションのセキュリティ・プロファイルを生成します。このユーティリティが起動されると、Tuxedoアプリケーション・パスワード、ユーザー名およびユーザー・パスワードの入力を求められます。出力は、ユーザー名と暗号化されたパスワードを含むセキュリティ・プロファイル・ファイルです。生成されたセキュリティ・プロファイル・ファイルは、imsadmin
、ARTICTL
およびDFSRRC00
で、Tuxedoドメインに参加するために使用できます。
-f <output_file>
imsadmin
- Tuxedo ART for IMSのランタイム管理ツール。
imsadmin [-p <profile>] -l PGM1, PGM2
imsadmin [-p <profile>] -u -d <directory>
imsadmin [-p <profile>] -c -d <directory>
imsadmin -x flushperf|cleanperf|enableperf|disableperf
[-m machine]|[-g groupid [-s serverid] ]
imsadmin -x settracelevel number [-m machine]|
[-g groupid [-sserverid] ]imsadmin [-v]
imsadmin [-h]
このユーティリティは、実行中のIMSシステムへの変更を行うための管理ツールとして使用できます。これにより、IMSシステムにプログラムの再ロード・リクエストを送信できます(変更済のユーザーのCOBOLプログラムが再ロードされます)。これはまた、構成の検証またはIMSシステムへの再ロード・リクエストにも使用されます。
[-p <profile>]
genimsprofile
を使用して作成する必要があります。
~/.tuxAppProfile
に指定されます。 注: | セキュリティ・レベルがMANDANTORY_ACL に設定されている場合、imsadmin で再ロード・リクエストがTuxedo ART for IMSサーバーに正常に送信されるようにするには、プロファイル内のユーザー名に..IMSADM _grpid_svrid (grpid/svrid は、各Tuxedo ART for IMSのMPP/BMP に対応するグループIDおよびサーバーID)という名前のサービスへのアクセス権があることを確認する必要があります。 |
-l PGM1, PGM2
u
-c
-d <ディレクトリ>
-x flushperf|cleanperf|enableperf|disableperf
flushperf
: パフォーマンス・トレースをログ・ファイルにフラッシュします。 cleanperf
: パフォーマンス・トレースのログ・ファイルをクリーンアップします。 enableperf
: パフォーマンス・トレースを有効化します。 disableperf
: パフォーマンス・トレースを無効化します。
-x settracelevel number
[-m machine]
[-g groupid]
[-s serverid]
machine
、groupid
およびserverid
パラメータを指定しない場合、アクションは、UBBCONFIG SERVERS
セクションに指定したすべての適用可能なサーバーに適用されます。1つ以上のパラメータを指定すると、アクションは、指定したサーバーにのみ適用されます。 適用可能なサーバーには、ARTIMPP*
/ARTIBMP*
/ARTIGW
/ARTIADM
が含まれます。現在、この機能では、ARTICTL
/ARTICTLH
の動的トレース制御はサポートされません。
注: | flushperf またはcleanperf を指定する場合、これら2つのアクションはすべての適用可能なサーバーに適用されるため、-m 、-g および-s は省略できます。 |
注: | パフォーマンス・トレースが有効になると、デバッグ・トレースは自動的に無効になります。 |
[-v]
[-h]
PGM1
およびPGM2
を再ロードするには、imsadmin -l PGM1,PGM2
と入力します。PGM1
およびPGM2
を再ロードするには、imsadmin -p /home/app/imsprofile -l PGM1,PGM2
と入力します。 /opt/ims_config
にある場合、imsadmin -c -d /opt/ims_config
と入力して新しい構成ファイルを検証できます。imsadmin -u -d /opt/ims_config
と入力します。imsadmin -x settracelevel 2
と入力します。3
で、グループIDが6
など)のデバッグ・トレースをクローズする場合、imsadmin -x settracelevel -1 -s 3 -g 6
と入力します。 10
のグループに含まれるサーバーのパフォーマンス・トレースを有効にする場合、imsadmin -x enableperf -g 10
と入力します。LMID
がSITE1
のマシンに存在するサーバーのパフォーマンス・トレースを無効にする場合、imsadmin -x disableperf -m SITE1
と入力します。 imsadmin -x flushperf
と入力します。imsadmin -x cleanperf
と入力します。
imsgenconf
- Tuxedo ART for IMSの構成生成ツール。
imsgenconf -i inputdir [-o outputdir] [-h]
imsgenconf
を使用すると、特定のトランザクションおよびバッチ・アプリケーション用のTuxedo ART for IMSの構成を生成できます。
ファイル生成処理中、imsgenconf
により、Tuxedo ART for IMSがそのフィールド定義に応じて使用するフィールド定義が検証されます。検証に失敗した場合、特定のエラーがレポートされ、構成ファイルの生成が停止されます。
成功した場合、レポート・ファイル(imsgenconf_report
)が出力ディレクトリに生成されます。現在、このレポート・ファイルには、トランザクションが定義ファイル名と行番号とともに含まれます。
-i inputdir
[-o outputdir]
[-h]
imsperf
- Tuxedo ART for IMSのランタイム・パフォーマンス分析ツール
トランザクションおよびアプリケーションのパフォーマンス・レポートを生成するには、このツールを使用します。
-d
オプションを指定すると、指定したパスの下でパフォーマンス・トレース・ファイルが検索されます。
-d
オプションを指定しない場合、パフォーマンス・トレースはまず$IMS_TRACE_PATH
の下で検索され、次に$APPDIR/log
の下で検索されます。詳細は、 『Tuxedo ART for IMSユーザーズ・ガイド』を参照してください。
imsperf
により、パフォーマンス・トレース・ファイルと同じディレクトリに、トランザクション/アプリケーションのパフォーマンス・レポートが次のような形式で生成されます。
時間の単位はマイクロ秒です。このCSV形式のレポート・ファイルは、直接開くことができます。パフォーマンス・レポートに含まれる処理の説明を表2に示します。
[-d path]
[-h]
/home/oracle/logの下にパフォーマンス・トレース・レポートを生成するには、次のようにします。
MFSGEN
: ARTICTL
サーバーのバイナリ制御ブロック・ジェネレータ。
mfsgen [-options…] files
このユーティリティは、ART MFSの開発に使用します。ユーザーが記述した制御文をMFSバイナリ制御ブロックに変換します。
図 1は、MFSGEN
ワークフローを示しています。
-l
-d dir
*.MSG
および*.FMT
)およびリスト・ファイルなどすべての出力ファイルを格納するターゲット・ディレクトリとして既存のディレクトリを指定します。 これは、デフォルトで<current directory>/format
です。
FILE.MSG
FILE.FMT
FILE.lst
0
1
2
ソース・ファイルfile.mfsを変換するには、次のコマンドを使用します。
$mfsgen file1.mfs file.mfs file3.mfs
注: | 入力ファイル.mfs 接尾辞は必須ではありません。 |
odbastop
: z/OS上のODBAプロキシを停止するために使用されるオープン・システム・ツール。
odbastop -l host -p port -c cmd
オープン・システム上でodbastop
を使用して、z/OS上で実行されているODBAプロキシを停止します。
prepro-ims.pl
- z/OS上のCプログラムをTuxedo ART for IMSで実行可能な形式に変換するために使用されるユーティリティ。
prepro-ims.pl -i source-file -o dest-file [-m yourmakefile]
prepro-ims.pl
は、z/OS上のCプログラムをTuxedo ART for IMSで実行可能な形式に変換するために使用されます。ファイルの変換に失敗した場合、障害情報および障害の原因となったソース・ファイルの行がstderr
に出力されます。完了すると、サマリーがstdout
に報告されます。
#pragma runopts
の行と他のブラグマ・ディレクティブをコメント化します。
IBM IMSの下で呼び出された場合、env(IMS)
は適切な動作環境を確立し、plist(IMS)
は適切なパラメータ・リストを確立します。それは、Tuxedo ART for IMSランタイムでは不要であり、削除する必要があります。
関数ctdli()
/aibtdli()
は、引数リストに後続のNULL
を追加することで再構築されました。このNULL
は、Tuxedo ART for IMS引数リストの終わりを示すために使用されます。aibtdli()
では、parmcount
パラメータが削除されます。
関数main()
引数リストは削除されました(argc
、argv
、envp
など)。メインフレームでは、IMSはグローバル・リストおよびそのリストを定義するマクロを使用します。Tuxedo ART for IMSでは、PCBリストを取得するためのGET
メソッドとして__getcb(int)
関数が実装されています。
exit()
関数は、 __art_ims_return ()
という名前に変更されました。IBM IMSドキュメントによれば、プログラムが処理するメッセージがない場合、mainから返すか、またはexit()
を呼び出すことでIMSに制御が返されます。exit()
によって、コンテナ・サーバーが予期せずに終了した場合、__art_ims_return ()
関数が使用され、制御をコンテナ・サーバーに返すための手助けをします。
表 2は、処理ルールの例を示しています。
注: | prepro-ims.pl は、メインフレームからオープン・システムへの一部の汎用Cの移植を処理できません。 |
makefile
を手動で変更し、他の従属Cファイルを追加する必要があります。ctdli/aibtdli
の呼出しはサポートされていません。gmake
を使用する必要があります。ims.h
など)をメインフレームからオープン・システムにコピーする必要があります。 prepro-ims.pl
のパラメータ、終了コード、およびサポート・モードを、それぞれ表 3、表 4および表 5に示します。
ソース・プログラムはリスト1に類似したものになります。
/* #pragma runopts(env(IMS), plist(IMS)) */
#include <ims.h>
#include <stdio.h>
#define n 20 /* I/O area size - Application dependent */
typedef struct {PCB_STRUCT(10)} PCB_10_TYPE;
int main()
{
static const char func_GU[4] = "GU ";
static const char func_ISRT[4] = "ISRT";
char ssa_name[] = "ORDER ORDER (ORDERKEY = 666666)";
int rc;
char msg_seg_io_area[n];
char db_seg_io_area[n];
char alt_msg_seg_out[n];
PCB_STRUCT_8_TYPE *alt_pcb;
PCB_10_TYPE *db_pcb;
IO_PCB_TYPE *io_pcb;
io_pcb = (IO_PCB_TYPE *)__pcblist[0];
alt_pcb = __pcblist[1];
db_pcb = (PCB_10_TYPE *)__pcblist[2];
..
/* get first message segment from message area */
rc = ctdli(func_GU, io_pcb, msg_seg_io_area, NULL);
..
/* get the data from the database having the specified key value */
rc = ctdli(func_GU, db_pcb, db_seg_io_area, ssa_name, NULL);
..
/* build output message in program's I/O area */
rc = ctdli(func_ISRT, alt_pcb, alt_msg_seg_out, NULL);
..
}
RUNPROXY
: z/OS上のODBAプロキシを開始するために使用します。
USER.ODBA.JCL(RUNPROXY) JCL
を変更し、それを送信してODBAプロキシを開始します。詳細は、Oracle Tuxedo Application Runtime for IMSユーザーズ・ガイドのODBAプロキシの使用方法に関する項を参照してください。
z/OS上でRUNPROXY
を使用して、z/OS上のODBAプロキシを開始します。
STOPROXY
: z/OS上のODBAプロキシを停止するために使用します。
USER.ODBA.JCL(STOPROXY)
JCL
を変更し、それを送信してODBAプロキシを停止します。詳細は、Oracle Tuxedo Application Runtime for IMSユーザーズ・ガイドのODBAプロキシの使用方法に関する項を参照してください。
z/OS上でSTOPROXY
を使用して、z/OS上で実行されているODBAプロキシを停止します。
Tuxedo ART for IMSでは、DL/Iは、動的にロードされるライブラリのグループ内に実装されます。サポート対象のDL/I機能は、次のとおりです。
表 6は、サポート対象のDL/Iインタフェースを示しています。
CBLTDLI
: OS/39におけるIMS/TMでのDL/I呼出しの0エントリ。
Tuxedo ART for IMSでは、CBLTDLI
は、DLIライブラリのエントリとして機能する関数です。CBLTDLI
は、それに渡された関数コードに基づいて適切な関数を呼び出します。
関数コード(GUなど)、I/O PCBまたは代替PCB、I/O領域、MOD
AIBTDLI
は、z/OSにおけるIMS/TMでのDL/I呼出しのエントリです。Tuxedo ART for IMSでは、AIBTDLI
は、DL/Iライブラリのエントリとして機能する関数です。AIBTDLI
は、AIBマスクで指定されているPCB名に従ってPCBアドレスを取得し、見つかったPCBアドレスとともにそれに渡された関数コードに基づいて適切な関数を呼び出します。
関数呼び出し(GUなど)、AIBマスク、I/O領域、入力または出力バッファ。表 7は、AIBマスク・パラメータを示しています。
AIBマスク・フィールドAIBRSNM1
におけるPCB名の指定の詳細なルールは、次のとおりです。
$appname.psb
構成ファイル内のlabel=
で構成する必要があり、AIBマスクで適切に指定されている必要があります。各代替PCBの名前(ラベル)は、1つのPSB内(つまり、1つの$appname.psb
ファイル内)で一意である必要があります。
$appname.psb
構成ファイル内のlabel=
で構成する必要があり、AIBマスクで適切に指定されている必要があります。各DB PCBの名前(ラベル)は、1つのPSB内(つまり、1つの$appname.psb
ファイル内)で一意である必要があります。
Tuxedo ART for IMSでは、CTDLI
は、DLIライブラリのエントリとして機能する関数です。CTDLI
は、それに渡された関数コードに基づいて適切な関数を呼び出します。
関数呼び出し(GUなど)、PCB (I/O PCBまたは代替PCB)、I/O領域、入力または出力バッファ。
op
引数は、実行するDL/I関数を指定します。ctdli()
呼出し形式は、選択した関数によって異なります。詳細は、「CBLTDLI」を参照してください。
注: | CTDLIを使用する場合、SSAパラメータは、ポインタ・パラメータである必要があります。 |
DL/Iは、受信メッセージの処理およびIMS/TMでのPCBに対する送信メッセージの構築を担当します。Tuxedo ART for IMSでは、メッセージ・キューおよびメッセージ配信はTuxedoインフラストラクチャが担当するため、受信メッセージの処理は現在のリクエスト・メッセージにのみ関係します。DLIライブラリは、COBOLアプリケーションからのリクエストに基づいて最初および後続のセグメント(FMLフィールド)を取得できます。送信メッセージを構築するために、各PCBは中間記憶域として関連するメッセージ・バッファ(FML)を持っており、メッセージが送信される前にそのメッセージ・データがそこに格納されます。メッセージ処理用の詳細なAPIを、表 8に示します。
GU
: IMS/TM環境のメッセージ・キューから最初のセグメントを取得するために使用されます。
GU
は、メッセージ・キューの最初のセグメントを取得するために使用されます。会話型トランザクションの場合、メッセージの最初のセグメントは常にSPAです。 Tuxedo ART for IMSでは、処理中のメッセージのFMLバッファの最初のフィールドを取得するために、シミュレートされたGU呼出しが使用されます。会話型トランザクションの場合、GU
呼出しは、常にSPAのフィールドを取得し、それ以外の場合はユーザー・データの最初のフィールドを取得します。
I/O PCB
AIB
I/O領域
'AD': 関数パラメータが無効です。関数呼出しがCBLTDLIに指定されていないか、無効な関数呼び出し名がCBLTDLIに指定されています。
GN
: IMS/TM環境のメッセージ・キューから後続のセグメントを取得するために使用されます。
最後のセグメントが取得された後、GN
呼出しは、QD
ステータス・コードがPCBで返されるという結果になります。Tuxedo ART for IMSでは、処理中のメッセージのFMLバッファの次のフィールドを取得するために、シミュレートされたGN
呼出しが使用されます。
SI/O PCB
AIB
I/O領域
'AD': 関数パラメータが無効です。関数呼出しがCBLTDLIに指定されていないか、無効な関数呼び出し名がCBLTDLIに指定されています。
ISRT
: IMS/TMにおいて指定されているPCBに関連付けられているメッセージにセグメントを追加するために使用されます。
I/O PCB or alternate PCB or AIB, I/O Area, MOD
Tuxedo ART for IMSでは、指定されたPCBに関連付けられているFMLバッファにCARRAYタイプのフィールドを追加するために、シミュレートされたISRT呼出しが使用されます。会話型トランザクションの場合、最初のセグメントは常にSPAです。メッセージ・セグメントの最大長は32767
です。
I/O PCB
または代替PCB
AIB
I/O領域
MOD
'AD
': 関数パラメータが無効です。関数呼出しがCBLTDLI
に指定されていないか、無効な関数呼び出し名がCBLTDLI
に指定されています。
'XA
': リクエストに応答した後に、そのリクエストを別のトランザクションに転送しようとしています。
'XB
': リクエストを別のトランザクションに転送した後に、それに応答しようとしています。
'XC
': Z1ビットが0ではありません。それは予約済であり、常に0として保持されます。
PURG
: そのメッセージが低速PCBに対して完了したことをIMS/TMに通知するために使用されます。
I/O PCB or alternate PCB or AIB, I/O Area (optional), MOD (optional)
PURG
呼出しは正常ですが、送信されなかったか、メッセージが高速PCBに対してただちに送信されました。
I/O領域がPURG
呼出しに提供されている場合、PURG
呼出しもISRT呼出しとして機能します。つまり、PURG
は、PCBに関連付けられている(現在の)メッセージを完了としてマークし、I/O領域のデータを次のメッセージの最初のセグメントとしてISRT
します。最終結果は、ISRT
呼出しが後に続くI/O領域のないPURG
呼出しと同じです。
Tuxedo ART for IMSでは、低速PCBに対して関連付けられたメッセージが完了したとマークするため、または高速PCBに対して関連付けられたメッセージを送信するために、シミュレートされたPURG
呼出しが使用されます。ただし、I/Oバッファが指定されている場合は、単一のPCBに対する複数の保留メッセージはサポートされていないため、それは無視され、したがってMODも無視されます。ただし、ステータス・コードはカスタマ・プログラムによってチェックされるため、この場合、特別なステータス・コードは追加されません。
I/O PCB
または代替PCB
I/O領域
MOD
'AD
': 関数パラメータが無効です。関数呼出しがCBLTDLI
に指定されていないか、無効な関数呼び出し名がCBLTDLI
に指定されています
'A3
': 宛先が設定されていないが、それに対してPURGが呼び出される変更可能なTP PCB
CHNG
: IMS/TMにおいてPCB内の宛先を変更するために使用されます。
Alternate PCB or AIB
、宛先トランザクション・コード
Tuxedo ART for IMSでは、シミュレートされたCHNG
により、代替PCBの別のサービス名(のみ)が指定されます。宛先トランザクション名は、8バイト以下であり、その制限を超えている場合、それは8までに切り捨てられます。後続の空白も削除されます。トランザクション名は、それがimstrans.descファイルに存在し、かつ正しい構成である場合に、有効として評価されます。
1つのTuxedoドメイン内の1つのトランザクション・コードが、異なるドメインの他のサービスに切り替えるように設計されている場合、切り替えられるトランザクション・コードは、[imstrans.desc]構成ファイルで有効なトランザクションとして定義されている必要がありますが、それをそのクラスの制御で公開しないでください。
プログラム切替えの場合、新しいターゲットは別のトランザクション・コードです。会話型プログラム切替えの場合、Tuxedo ART for IMSでは、元のコードおよびターゲット・コードのspaサイズに制限はありません。
I/O PCB
AIB
'AD
': 関数パラメータが無効です。宛先が指定されていません。関数呼出しが無効です。
'A2
': PCBが変更可能でないか、ISRT操作がすでに実行されています。
'QH
': 代替PCBに指定するトランザクションが空白であるか無効です。
CMD
: プログラムでIMSコマンドを発行可能にするために使用されます。
IMSコマンドを送信または発行し、応答メッセージの最初のセグメントを取得します。
CMD
は、IMSコマンドを発行するために使用されます。これは、すべてのサポートされているIMSコマンドを処理できると想定されるインタフェースにIMSコマンドを転送します。CMD呼出しは、そのインタフェースによってIMSコマンドが処理されるまで待ち、その応答メッセージの最初のフィールドを取得します。
コマンドには、"/DIS TRAN
"、"/DIS PGM
"および"/DIS USER
"のみサポートされます。これらのコマンドがCMD APIによって発行されると、関連するタイトル・セグメントがI/O領域を介して返され、それには、後続のセグメントの各フィールドの意味が記述されています。
/DISP TRAN
" Tuxedoで取得可能なトランザクション関連情報がI/O領域内に返されます。"/DISP TRAN tranname
"の場合。返されるセグメント・タイトルは次のとおりです(llzz部分は除く)。T70 TRAN CLS ENQCT QCT LCT PLCT CP NP LP SEGSZ SEGNO PARLM RC
tranname
が永続トランザクションを表す場合、TRAN
、CLS
およびQCT
のみがサポートされ、GCMD
に対して返されるセグメントに値が入ります。"tranname"が非永続トランザクションを表す場合、TRAN
およびCLS
のみがサポートされ、GCMD
に対して返されるセグメントに値が入ります。
"/DISP TRAN tranname QCNT
"の場合、返されるセグメントは次のとおりです(llzz部分を除く)。T70 TRAN GBLQCT
TRAN
のみがサポートされ、GCMD
に対して返されるセグメントでGBLQCT
は常にN/Aです。
QCT
: トランザクションのキュー内の残されたメッセージ数(キュー数) (5バイト)。
注: | キュー数は、次の基準に一致する場合にのみ正確で信頼できます。 |
注: | - tranname は、現在のTuxedo ART for IMSサーバーによってのみ処理されます。 |
注: | - DISPLAY TRAN は、IOAREA を指定しないCHKP の後に発行されます。 |
GCMD
に対して返されるセグメントで、すべてのサポートされないフィールドはN/Aになります。各フィールドは1つの空白で区切られます。
/DISP user
Tuxedoで取得可能なユーザー関連情報が返されます。返されるセグメントは(llzz部分を除く)、CUR_USER CUR_TRAN
です。
/DISP PGM
Tuxedoで取得可能なプログラム関連情報が返されます。返されるセグメントは(llzz部分を除く)、CUR_PGM CUR_TRAN
です。
注: | 現在、前述の3つのコマンドでは他のすべてのパラメータは無視されます。前述の3つのサポートされているもの以外のコマンドがCMD呼出しによって発行されると、応答セグメントなしで成功ステータスが返されます。 |
'bb': 成功(2つの空白)。ただし、応答セグメントはありません。
'CC': 1つまたは複数の応答セグメントが生成されました。
'CH': AOIコマンド・インタフェースがシステム・エラーを検出し、そのコマンドを処理できなかったため、発行したCMD呼出しはIMSによって無視されます。IMSの処理は続行されます。
GCMD
: CMDコマンドの応答メッセージの2番目および後続のセグメントを取得します。
I/O PCB or AIB, I/O Area
GCMD
は、アプリケーション・プログラムによってCMD呼出しを使用してIMSコマンドが処理されるときに、IMS TMから2番目および後続の応答セグメントを取得します。返されるセグメントそれぞれには、前述の"CMD"呼出しのタイトル・セグメントに応じたフィールドが含まれます。最後のセグメントが取得された後に、GCMD呼出しは、"QD"ステータス・コードがPCBで返されるという結果になります。
'bb': セグメントは正常に取得されました(2つの空白)。
GUID
- ARTIMPP
サーバーの長いユーザー名モードで、完全なユーザー名の取得に使用する偽のDL/I。
I/O PCB or AIB, I/O Area
GUID
は、長いユーザー名/パスワードのモードでのみ推奨されるARTIMPP
サーバーの完全ユーザー名を取得するために使用します。
'bb': セグメントは正常に取得されました(2つの空白)。
'AD': 指定されたPCBはI/O PCBではありません。
DLIライブラリは、MPPまたはBMPプログラムから発行されたデータベース処理を実行します。これは、指定されたセグメント検索基準に応じた1つの特定のセグメントの取得および保持、特定のセグメントの更新、特定の位置へのセグメントの挿入、特定のセグメントの削除などを実行できます。データベース処理の詳細なAPIを、表 9に示します。
GU/GHU
: 現在の位置(存在する場合)またはデータベースの先頭から基準(存在する場合)を満たす最初のセグメントを取得(および保持)します。
DB PCB,GSAM PCB
またはAIB, I/O Area, and SSA list (optional)
またはRSA (Mandantory for GSAM)
GU
は、指定されているSSAを満たし、順次処理の開始位置を確立する最初のセグメントを取得するために使用されます。GU
の検索開始位置は、データベースの先頭(つまり、ルート・レベル)です。呼出しを満たす最初のセグメントを見つけた後、現在の位置が順次処理の開始位置となります。
GHU
は、GU
に加えて、順次書込み操作(置換、削除など)のためにセグメントをロックします。GHU
はGSAMには適用されません。
GN/GHN
: 現在の位置から基準(存在する場合)を満たす次のセグメントを取得(および保持)します。
DB PCB,GSAM PCB or AIB, I/O Area, and SSA list (optional) or RSA(opitional for GSAM)
GN
は、現在の位置から検索して、指定されているSSAを満たす次のセグメントを取得するために使用されます。セグメントを見つけた後、順次処理のために現在の位置が更新されます。DB
に現在の位置が確立されていない場合、GN
はGU
のように動作します(つまり、先頭から検索します)。階層型DBにおける順次取得は、常に上から下、かつ左から右(つまり、ツリーの前順取得)です。
GHN
は、GN
に加えて、返されるセグメントをそれに対する順次書込み操作のためにロックします。GHN
はGSAM
には適用されません。
GN
のパラメータの使用方法と制限事項は、GU
に似ています。
GNP/GHNP
: 確立した親の依存セグメントから基準を満たす次のセグメントを取得(および保持)します。
DB PCB, GSAM PCB or AIB, I/O Area, and SSA list
(オプション)
GNP
は、確立した親の依存セグメントで、次の修飾セグメントを取得するために使用されます。階層型DBにおける確立した親とは、前の成功したGU/GN
呼出しで返された最も下位のセグメントであり、失敗したGU/GN
呼出しによって取り消されます。
GHNP
は、GNP
に加えて、返されたセグメントを順次書込み操作のためにロックします。
GNP/GHNPのパラメータの使用方法と制限事項は、GU
に似ています。
ISRT
: 既存のセグメント・タイプの新しいオカレンスを階層型データベースに挿入するために使用されます。
DB PCB, GSAM PCB or AIB, I/O Area, and SSA list or RSA(opitional for GSAM)
ISRT
は、既存のセグメント・タイプの新しいオカレンスを階層型データベースに挿入するために使用されます。挿入位置は、挿入されるセグメントのレベルを除いた一連の修飾SSAによって、または非修飾SSAの場合は現在の位置によって決定されます。
DB PCB or AIB, I/O Area, and SSA list
REPL
は、既存のセグメントを更新するために使用されます。最初にGet Hold
呼出しを使用してセグメントを取得し、その後、そのセグメントを変更および更新する必要があります。I/O領域のセグメントのフィールドの長さは変更できません。
パラメータの使用方法と制限事項は、GU
に似ています。
DLET
: セグメントとその依存関係を削除するために使用されます。
DB PCB or AIB, I/O Area, and SSA list
(オプション)
DLET
呼出しは、セグメントとその依存関係を削除するために使用されます。これは、Get Hold
呼出しの後に続く必要があります。修飾SSAは、DLET
呼出しに指定しないでください。
パラメータの使用方法と制限事項は、GU
に似ています。
FLD: セグメント内のフィールドにアクセスし、変更するために使用されます。
DB PCB or AIB, I/O Area, and SSA list
FLD
呼出しは、セグメント内のフィールドにアクセスし、変更するために使用されます。
FLD
呼出しに必須です。
POS
はDEDBのみをサポートします。Tuxedo ART for IMSでは、次の制限があります。 1. keyword
パラメータはサポートされていません。 2.LLおよび対応する数値フィールド(フィールド4、フィールド5)は、ホスト・バイト・エンディアンに格納されます。
注: | I/Oデータ領域には、24バイトのDEDBのすべての領域の位置情報が入ります。 |
OPEN
: GSAMデータベースを明示的に開くために使用されます。
GSAM PCB or AIB, i/o area
GSAMデータベースを明示的に開きます。GASMデータベースに対する次の処理によって、GSAMデータベースが再度開かれることはありません。GSAMデータベースを明示的に開かない場合、他の操作によってGSAMデータベースが暗黙的に開かれます。
注: | このパラメータは無視されます。IMS/DBに対するOracleの実装では、GSAMデータベースをローカル・ファイル・システムでシミュレートするため、I/O領域はデータ・セットの種類を指定するために使用されません。$appname.psbでPROCOPTオプションを使用して、データ・セットが読取り専用であるか、取得および追加されるかどうかを定義します。 |
GSAM PCB
AIB
IMS/DBの様々な種類の実装をサポートするため、IMS/DBのサポートは、Tuxedo ART for IMSにプラグイン可能で、プラグイン後にTuxedo ART for IMSサーバーによってロード可能な動的リンク・ライブラリ(DLL)として設計されています。このプラグアンドプレイ・メカニズムを有効化するには、DLLによってどのAPIがエクスポートされるのかのアグリーメントが必要です。
Tuxedo ART for IMSサーバー(ARTIMPP
およびARTIBMP
)は、オンラインまたはバッチCOBOLプログラムを実行するためのコンテナとして使用されます。プログラムによつて発行されるデータベース・アクセス操作を有効化するには、通常、サーバーは、データベースの実装に対してなんらかの初期化または構成を実行する必要があり、COBOLプログラムを起動する前に何かを実行する必要があり、プログラムの完了後に何かを実行する必要があり、サーバーが停止する前になんらかのクリーンアップを実行する必要があります。そのほかに、CBLTDLIを介した各データベース処理が、特定のAPIにマップされている必要があります。
DB PCB構造を指すポインタは、Tuxedo ART for IMSサーバーからCOBOLプログラムに渡され、最後にIMS/DBのプラグインのdb_entry()
に渡されます。プラグインが適切に機能するようにするには、各COBOLプログラムを呼び出す前にDB PCB構造に適切に入力する必要があります。この項では、DB PCBへの入力方法に関する詳細な要件を定義します。
DB PCB構造の例をリスト2に示します。
struct {
char dbname[8];
char seglevel[2];
char stat_code[2];
char opt[4];
char res[4];
char segname[8];
char keylen[4];
char segnum[4];
char keyfa[IMS_FEEDAREA_LEN];
};
リスト3は、get_dbpcbattr
インタフェースに使用される構造定義を示しています。コンテンツはPSB
ファイルから読み取られ、get_dbpcbattr
インタフェースを介してアプリケーションに返されます。
enum PCBTYPE {IOPCB = 1, ALTPCB = 2, GSAMPCB = 3, DBPCB = 4};
enum SEQUENTIALBUFFERING {NO = 1, COND = 2};
enum PCBPOS {SINGLE = 1, MULTIPLE = 2};
enum SENSITIVITY {READ = 1, UPDATE = 2};
struct __SENFLD {
char name[8]; /* mandatory, less than 8 filled with blank */
unsigned short start; /* mandatory, range [1-32767] */
int replace; /* optional, default is 1 */
};
struct SSPTR {
unsigned short pointer; /* range[1-8], default 0 */
enum SENSITIVITY sens;
};
struct __SENSEG {
char segname[8]; /* mandatory, less than 8 filled with blank */
char parent[8]; /* mandatory, less than 8 filled with blank */
char procopt[4]; /* optional, default filled with blank */
SSPTR ssptr[8]; /* each slot contains a subset pointer number and associated sensitivity, pointer of 0 indicates end, totally up to 8 can be specified */
char indices[8]; /* optional, default filled with blank */
SENFLD * senfld; /* optional, default is NULL */
unsigned short senfld_num; /* optional, default is 0, up to 255 SENFLD can be defined for each SENSEG */
};
struct __DB_PCB_ATTR { /* PCB Attributes */
enum PCBTYPE type; /* mandatory */
char dbname[8]; /* db name, default filled with blank */
char pcbname[8]; /* pcb name, optional, default filled with blank */
char procopt[4]; /* procopt , default filled with blank */
enum SEQUENTIALBUFFERING sb; /* optional, default is NO */
enum PCBPOS pos; /* optional, default is SINGLE */
int keylen; /* optional, default is invalid value 0 */
char procseq[8]; /* optional, default filled with blank */
int msdb_commit; /* optional, default is 0 */
int list; /* optional, default is 1 */
char *areas; /* area list set by SETR in DFSCTL, no change will be applied on it in ART/IMS */
int senseg_num; /* optional, default is 0 */
struct SENSEG * senseg; /* optional, default is NULL */
};
IMS/DBプラグインのAPIを定義するには次の手順を実行する必要があります。
extern "C" int db_init(int argc, char * argv[])
引数: サーバーのCLOPTから渡されるパラメータ・リスト。
使用する場所: このAPIは、Tuxedo ART for IMSサーバーが起動する際に呼び出されます。IMS/DBの特定の実装には、初期化作業は必要ありません。単に空の関数を指定して、それが0を返すようにします。
機能: 実装に必要な構成またはその他のものに対するクリーンアップ
引数: なし。サーバーはプラグインに入力を提供できないためです。
使用する場所: このAPIは、Tuxedo ART for IMSサーバーが停止する際に呼び出されます。IMS/DBの特定の実装には、初期化作業は必要ありません。単に空の関数を指定して、それが0を返すようにします。
機能: IMS/DB実装にアクセスできるCOBOLプログラムを起動する前に実装によって必要とされる事前アクション。
引数: なし。サーバーはプラグインに入力を提供できないためです。
使用する場所: このAPIは、IMS/DB実装にアクセスできるCOBOLプログラムがTuxedo ART for IMSサーバーによって起動される前に呼び出されます。IMS/DBの特定の実装には、初期化作業は必要ありません。単に空の関数を指定して、それが0を返すようにします。
機能: IMS/DB実装にアクセスできるCOBOLプログラムを起動した後に実装によって必要とされる事後アクション。
引数: なし。サーバーはプラグインに入力を提供できないためです。
使用する場所: このAPIは、IMS/DB実装にアクセスできるCOBOLプログラムがTuxedo ART for IMSサーバーによって起動された後に呼び出されます。IMS/DBの特定の実装には、初期化作業は必要ありません。単に空の関数を指定して、それが0を返すようにします。
extern "C"
int db_entry(const char * op, __DB_PCB * pcb, void * io, char * ssa_list[], int ssa_cnt);
機能: IMS/DB実装へのアクセスのエントリ・ポイントCOBOLプログラムから発行されたデータベース・アクセスのための各DL/I呼び出しは、最終的にそれによって処理されます。
pcb: ユーザー提供のDB PCBのスーパークラスである__DB PCBを指すポインタ。
io: 外部実装者によって定義されたバッファDB_IO_AREAを指すポインタ。
ssa_list: 文字列の配列であり、それぞれが1つのSSAを含み、形式は外部実装者によって異なります。
ssa_cnt: ssa_list内の要素の数。値の範囲は[0..15]です。
使用する場所: COBOLプログラムによって発行されるDL/I DB呼出し。
extern "C"
const __DB_PCB_ATTR * get_dbpcbattr (struct __DB_PCB * pcbm)
機能: db pcbの追加属性を取得するために使用されます。これらの属性はPSBファイルで構成されます。
戻り値: PCB属性ポインタ。このAPIから返されるPCB属性構造に含まれる内容を、ユーザーが変更することはできません。入力がDB PCBまたはGSAM PCBでない場合は、nullが返されます。オプションの属性が構成されていない場合は、デフォルト値が返されます。ポインタを解放する必要はありません。
使用する場所: db pcbによって呼び出されたサード・パーティのDBプラグイン。
extern "C"
int fill_dbpcb_segname (struct __DB_PCB * pcb)
機能: db pcbのセグメント名を取得するために使用されます。このインタフェースはDBプラグインによって提供されます。
pcb: PCBマスク・ポインタ(DB PCBまたはGSAM PCB)。pcbマスクのsegnameには正しい値が設定されます。
Tuxedo ART for IMS内では、デフォルトDLLはIMS/DBのOracleソリューションとして提供されています。
DLIライブラリは、COBOLアプリケーションによって渡される命令に従い、トランザクション管理作業(つまり、すでに行われた変更のコミット、すでに作成されたメッセージの送信またすべての変更のロールバック、すべてのメッセージの削除)を実行します。COBOLアプリケーションによってトランザクションをコミットする明確な命令が発行されない場合は、ARTIMPP
によってトランザクションがコミットされます。
表 10は、トランザクション管理のプロセスおよびコマンドを示しています。
CHKP
(基本): 明示的なコミット・ポイントを設定するために使用されます。
CHKP
は、明示的なコミット・ポイントを設定するために使用されます。コミット・ポイントで、IMS/TMが、アプリケーション・プログラムによって行われた変更(通常はデータベースの更新)をコミットし、すべてのメッセージを完了としてマークして(低速PCBの場合はPURGによって)送信し、指定されたIOAREAに次の入力メッセージを取得します。
Tuxedo ART for IMSでは、tpcommit()
コマンドを使用して行われた変更をコミットするために、シミュレートされたCHKP
が使用されます。完了とマークされているメッセージが送信されます。明示的なPURG
呼出しによってマークされていないメッセージも送信されます。
トランザクションが永続トランザクションで、永続モードのARTIMPP
によって処理されているか、ARTIBMPT
によって処理されている場合、次のメッセージはこのトランザクションの/Qから取得されます。
トランザクションが永続トランザクションでない場合、次のメッセージは取得されません。
'AD': 関数パラメータが無効です。関数呼出しがCBLTDLI
に指定されていないか、無効な関数呼び出し名がCBLTDLI
に指定されています。
CHKP
(シンボリック): 明示的なコミット・ポイントを設定するために使用されます。プログラムを開始できるチェック・ポイントを設定し、プログラムに7つのデータ領域を保存し、現在のGSAM DB
取得位置を記録します。
CHKP
(シンボリック)は、リカバリのために使用できます。これによって、プログラムによって行われたすべての変更がコミットされ、アプリケーション・プログラムが異常終了した場合は、そのプログラムが再開できるポイントが確立されます。さらに、シンボリックCHKP
呼出しは次のことを実行できます。
Tuxedo ART for IMSでは、シュミレートされたCHKP
(シンボリック)を使用して、次のことが実行されます。
tpcommit()
を使用して、すでに行われた変更をコミットします。これは基本CHKP
と同じです。 CHKP
と同じ次のメッセージを取得します。GSAM DB
の現在の取得位置を記録します。注: | ユーザーがシンボリックCHKP を使用してデータ領域を格納した後、ユーザーがXRST を使用してプログラムを再起動する前に、ART BMP サーバーが再起動された場合、シンボリックCHKP によって格納されたデータ領域は、XRST によってリストアされません。 |
注: | CHKP レコードは、programname.psbname.logというレコード・ログ・ファイルに保存されます。環境変数ART_IMSLOGDIR は、レコード・ログ・ファイルが配置されるディレクトリを指定するために使用されます。環境変数ART_IMSLOGDIR が設定されなかった場合、そのデフォルト値は$APPDIR/IMSLOGDIR になります。 |
注: | MPモードで複数のマシンがレコード・ログ・ファイルを共有する場合、ART_IMSLOGDIR は、Tuxedoドメイン内のマシンがアクセスできるNFSディレクトリを指している必要があります。CHKP レコードは常にシンボリックCHKP によってレコード・ログ・ファイルに追加され、保存されたレコードは、ユーザーがレコード・ログ・ファイルを手動で空にしないかぎり削除されません。重複するCHKP レコードは、CHKP レコード・ファイルに追加されます。 |
注: | 関連するすべてのGSAM/DB PCB のステータス・コードは、CHKP (シンボリック)コールの後、空白になります。 |
I/O PCB or AIB, I/O Area, I/O Area Length, IO Area, area length, area, …
最初の領域からチェック・ポイントまでの長さ(バイナリ形式)を含むプログラム内の4バイトのフィールドを指定します。このパラメータは、入力パラメータです。最大7つの領域の長さを指定できます。領域の長さごとに、領域パラメータを指定することも必要です。
'AD': 関数パラメータが無効です。Tuxedo ART for IMSによって関数呼出しが提供されていません
ROLB
: データベースの更新を取り消すために使用されます。
ROLB
は、データベースの更新を取り消すために使用されます。伝送できないすべての挿入済メッセージが取り消されます。高速PCBの場合、メッセージは、IMSがメッセージの完了を認識したとき(つまりPURG
呼出しが呼び出されるとき)に、伝送に使用できるようになります。低速PCBでは、プログラムがコミット・ポイントに到達するまではメッセージが送信可能になりません。
Tuxedo ART for IMSでは、tpabort()
を使用することでアプリケーション・プログラムによって行われたすべての変更をロールバックし、送信されていないメッセージ・バッファを空にするために、シミュレートされたROLB
呼出しが使用されます。
永続トランザクション(TPまたはトランザクション指向BMPプログラム)では、永続モードのARTIMPP
で処理されているか、ARTIBMPT
で処理されている場合、ROLB
は最後のコミット・ポイントから最初のメッセージの最初のセグメントをIOAREAに返し、/Qの最後のコミット・ポイントから最初のメッセージを削除します。
非永続トランザクション(TPまたはトランザクション指向バッチ)では、Tuxedo ART for IMSは現在処理中のメッセージの最初のセグメントのみを返します。
'AD': 関数パラメータが無効です。関数呼出しがCBLTDLIに指定されていないか、無効な関数呼び出し名がCBLTDLIに指定されているか、PCBが指定されていません。
'QE': IOAREAがNULLでない場合、GUが以前に呼び出されていません。
ROLL: データベースの更新を取り消し、Tuxedo ART for IMSに戻るために使用されます。
ROLL
は、データベースの更新を取り消し、挿入されたが伝送に使用できないすべてのメッセージを取り消します。高速PCBの場合、メッセージは、IMSがメッセージの完了を認識したとき(つまりPURG
呼出しが呼び出されるとき)に、伝送に使用できるようになります。低速PCBでは、プログラムがコミット・ポイントに到達するまではメッセージが送信可能になりません。
Tuxedo ART for IMSでは、tpabort()
を使用してアプリケーション・プログラムによって作成されたすべての変更をロールバックし、未送信のメッセージ・バッファを空にするために、シミュレートされたROLL
呼出しが使用されます。これは、Tuxedo ART for IMSにコントロールを返しますが、呼出し元プログラムにはコントロールを返しません。
永続トランザクション(TPまたはトランザクション指向BMPプログラム)では、永続モードのARTIMPP
で処理されているか、ARTIBMPT
で処理されている場合、ROLL
により/Qの最後のコミット・ポイントから現在のメッセージが削除されます。
SYNC
: アプリケーション・プログラムによって行われた変更(通常は、データベースの更新)をコミットするために使用されます。
I/O PCB or AIB
Tuxedo ART for IMSでは、プログラムが異常終了した場合、すでに行われた変更をコミットするためにシミュレートされたSYNCが使用され、プログラム内には再開位置が設定されません。
INQY
: 実行環境、宛先タイプおよびステータス、およびセッション・ステータスに関する情報を要求するために使用されます。INQYは、AIBTDLIインタフェースを使用している場合にのみ有効です。
IMSでは、次のサブ関数のみがサポートされています。NULL
、FINDbbbb
、PROGRAMb
、DBQUERYb
。
NULL
サブ関数の場合、ART/IMSは、ART/IMSがサポート可能なPCB関連情報のみがI/O領域に返されます。"端末の位置"および"トランザクションの位置"は、"LOCAL"を使用する場合にのみサポートされています。
"FINDbbbb
"の場合、PCBアドレスはAIBRSA1フィールドで返されます。
64ビット・プラットフォームでは、アドレスの長さが8バイトであるため、AIBRES3の最初の4バイトも使用されます。
サブ関数"PROGRAMb
"は、I/O領域の最初の8バイトでプログラム名を返します。
"DBQUERYb
"サブ関数の場合、PSBで定義されているDBPCB
がない場合、"BJ"がIO PCBステータスで返されます。それ以外の場合、IO PCBステータスは、データベースの使用可能性に従って返されます。
戻りコードおよび理由コードは、IBMの戻りコードおよび理由コードの説明に沿って調整されます。"DBQUERYb
"の場合、データベースの使用可能性ステータスは、IOPCBステータスです。
' bb' (2つの空白): 呼出しは成功し、すべてのデータベースが使用可能です。
'BJ': DB PCBがPSBに存在していません。または、PSB内のデータベースのいずれも使用可能でないか、PSBにPCBが存在していません。すべてのデータベースPCB (GSAMを除く)には、INQY DBQUERY呼出しの処理結果としてNAステータス・コードが含まれています。
'BK': PSBの少なくとも1つのデータベースが、使用可能でないか、使用可能性が制限されています。少なくとも1つのデータベースPCBに、INQY DBQUERY呼出しの処理結果としてNAまたはNUステータス・コードが含まれています。
IMSでは、"DBQUERYb"
呼出しの後に、各DB PCBのステータス・コードを使用してDBステータスを確認することはできません。
XRST
: プログラムを再起動するために使用されます。プログラム内でシンボリック・チェックポイント呼出しを使用する場合、XRST呼出しを使用する必要があります。
XRST
は、プログラムを再起動するために使用されます。プログラム内でシンボリック・チェックポイント呼出しを使用する場合、XRST
呼出しを使用する必要があります。
Tuxedo ART for IMSでは、関連するCHKP
(シンボリック)呼出しに保存されたデータをリカバリするために、シミュレートされたXRST
が使用されます。GSAM
は、CHKP
(シンボリック)呼び出しが行われた記録位置に再配置されるので、後続のすべての"GN
"呼び出しはリカバリされた位置で続行します。関連するすべてのGSAM/DB PCB
のステータス・コードは、XRST
コール(既存のCHKPID
を使用)が成功した後、空白になります。
特定のCHKP ID
の場合、XRST
は、Job name + program name + psb name + CHKP ID
という検索キーを使用して、レコード・ログ・ファイル内で、先頭から末尾の方向に、CHKP
レコードを検索します。検索キーに一致する1つ目のCHKP
レコードが検出された場合、XRST
はこのレコード内のデータをリストアし、成功を返します。検索キーに一致するCHKP
レコードが存在しない場合、XRST
は異常終了します。
CHKP IDがLAST
の場合、XRST
は、Job name + program name + psb name
という検索キーを使用して、レコード・ログ・ファイル内で、末尾から先頭の方向に、CHKP
レコードを検索します。検索キーに一致する1つ目のCHKP
レコードが検出された場合、XRST
はこのレコード内のデータをリストアし、成功を返します。検索キーに一致するCHKP
レコードが存在しない場合、XRST
は異常終了します。
I/O PCB or AIB, I/O Area, I/O Area Length, IO Area, area length, area, …
次のフィールドは、AIB内で初期化されている必要があります。
XRST
呼出し中に使用されません。互換性のために、このパラメータは、依然としてコード化されている必要があります。
'AD': 関数パラメータが無効です。Tuxedo ART for IMSによって関数呼出しが提供されていません
CEE3ABD
は、Tuxedo ART for IMSがプログラムの実行を異常終了コードで終了することをリクエストします。この関数からは何も返されず、関数に関連付けられた条件もありません。Tuxedo ART for IMSでは、次の手順を実行してこの関数を起動できます。
abcode
clean-up
注: | COBOL-IT環境では、CEE3ABD/ またはART3ABD という名前を使用して、COBOLプログラムからこのAPIを呼び出すことができます。Micro Focus COBOL環境では、ART3ABD という名前を使用した場合のみ、COBOLプログラムからこのAPIを呼び出すことができます。 |
メッセージ形式およびデバイス形式の定義は、定義文の別の階層セットで実行されます。表11は、すべての定義文とそれらの説明を示しています。
前述の表の"END"文は、入力ファイルの終わりを定義します。その後のすべてのコンテンツは無視されます。入力ファイルに"END"がない場合、MFSGEN
によって警告メッセージが生成され、入力ファイルにそれが追加されます。
文の名前ごとに、いくつかのフィールドがあります。詳細なフィールド名および値の要件を、表12および表13に示します。他のすべての文は、現在、サポートされていないフィールドとみなされます(表14に示す)。
注: | system-literals include: TIME , DATE1 , DATE2 , DATE3 , DATE4 , DATE1Y4 , DATE2Y4 , DATE3Y4 , DATE4Y4 , YYDDD , MMDDYY , DDMMYY , YYMMDD , YYYYDDD , MMDDYYYY , DDMMYYYY , YYYYMMDD , DATEJUL , DATEUSA , DATEEUR , DATEISO , LTSEQ , LTNAME . |
注: | LTMSG およびLPAGENO の場合、警告メッセージが表示され、何も効果はありません。表12にない他の文字列については、構文エラーが表示されます。 |
前述の表の最後の列について、「サポート対象」とはフィールドがサポートされていることを意味し、「警告」とはフィールドはサポートされておらず、このフィールドは指定されてないかのようにツールによって無視され、警告が生成されることを意味します。「エラー」とはフィールドがサポートされておらず、ツールによってエラーが報告され、現在の定義文セットの解析に失敗することを意味します。
MPPによってエクスポートされたサービスへの非端末アクセスをサポートし、より多くのクライアントがMPPによってエクスポートされたサービスを使用できるように、この機能によってTuxedo ART for IMSの非端末アクセス・サポートが強化されています。ユーザーは、非端末アプリケーション(ネイティブのOracle Tuxedoクライアント、SALTクライアント、JCAクライアントなど)を介してTuxedo ART for IMSのMPPサービスを使用できます。
この機能は非端末tuxedoクライアント(ネイティブのTuxedoクライアント、SALTクライアント、JCAクライアントを含む)とMQアプリケーションの両方をサポートしています。
非端末tuxedoクライアントの場合、プログラミング・インタフェースが提供されます。クライアントは、次のプログラミング・インタフェースを使用して、MPPサービスにアクセスできます。
非端末Oracle Tuxedoクライアントと異なり、WebSphere MQアプリケーションはOracle Tuxedoクライアントではありません。MQメッセージ形式と、MQアプリケーションと従来のIMSアプリケーション間のメッセージ・フローは、WebSphere MQアプリケーション・プログラミング・ガイドですでに定義済です。IMS環境では、MQアプリケーションがMQ-IMSブリッジを使用して暗黙的なMQIサポートを有効にすることで、従来のIMSアプリケーションをリライト、再コンパイル、再リンクしなくても、WebSphere MQメッセージがそれらにアクセスできるようにします。この機能では、Oracle Tuxedo MQ Adapterを利用して、MQアプリケーションをOracle Tuxedoクライアントに変換します。
Tuxedo ART for IMSでは、非端末クライアントとTuxedo ART for IMSのMPPサーバー間のブリッジとして機能するサーバー、ARTIGW
が提供されます。非端末クライアントは、次に示すプログラミング・インタフェースに従って、ARTIGW
サービスを呼び出します。ARTIGW
はサービス・リクエストをARTMPP
に転送します。
ARTIGW
と非端末Oracle Tuxedoクライアント間の唯一のインタフェースは、FML表です。
アプリケーション・バッファでIMSトランザクション(TRANS1など)を実行するには、次の手順を実行します。
IMS_SVC_NAME
IMSトランザクション名("TRANS1
"など)。
IMS_SVC_FLAG
将来使用するために予約されたフィールド。
IMS_SEG_DATA
アプリケーション・バッファ・データ。LLZZはバッファ内に必要ありません。セグメントの最大長は32764
です(これはARTIMPP
の制限です)。
tpcall()
/tpacall()
を発行します。 ret = tpcall(< tuxclt_service_name>, …)
この< tuxclt_service_name>
はARTIGWの通知済サービスで、サービス名が構成可能です。詳細は、ARTIGW CONFIGURATIONを参照してください。
0: ARTIMPP
がレスポンス・メッセージによってリクエストを正常に処理します。
1: ARTIMPP
がレスポンス・メッセージなしでリクエストを正常に処理します。
インタフェースのFMLフィールド表(ARTIGWFML
)とヘッダー・ファイル(ARTIGWFML.h
)は、$IMSDIR/include
の下にあります。リスト4は、ARTIGWFML
の内容を示しています。
*base 30000700
#name rel-number type flags comment
#----- ----------- ------ ------- ------------------------
IMS_SVC_NAME 181 string
IMS_SVC_FLAG 182 long
IMS_SVC_RESULT 183 long
IMS_SEG_DATA 184 carray
IMS_SVC_SYSMSG 185 carray
MQ-Tuxedo ART for IMSブリッジは次のメッセージ・タイプを受け入れます。
注: |
注: | 1. 角カッコ[ ]はオプションの複数セグメントを表しています。 |
注: | 2. メッセージにMQIIH構造が含まれる場合、MQMD構造の「フォーマット」フィールドはMQFMT_IMS に設定されます。 |
注: | 3. メッセージにMQIIH構造が含まれない場合、MQMD構造の「フォーマット」フィールドはMQFMT_IMS_VAR_STRING に設定されます。 |
MQアプリケーションをサポートするには、ユーザーはTuxedo 12cR1 RP17以降を適用し、次に示す手順に従う必要があります。
TM_MQI *SERVICE
セクションを次のように定義する必要があります。 この< mq_service_name>
はARTIGW
の通知済サービスで、サービス名が構成可能です。詳細は、「ARTIGWの構成」を参照してください。
TM_MQI
構成ファイルの*SERVER
セクションで、次のパラメータを指定する必要があります。UBBCONFIG
ファイルでは、TM_MQI
サーバーが、WebSphere MQ Resource ManagerのTMSサーバーによって構成されたグループ内に存在する必要があります。 ARTIGW
は、非端末クライアントとARTIMPP
サーバー間のブリッジとして機能するTuxedoサーバーです。詳細は、「サーバーの構成」を参照してください。
ARTIGW
とARTIMPP
が異なるドメインにデプロイされている場合、ARTIGW
は<tuxclt_service_name>_REPLY_<grpid>_<srvid>
および<mq_service_name>_REPLY_<grpid>_<srvid>
という名前でサービスをエクスポートします。GRPID
とSVRID
は5文字です(0で始まります)。
前述のサービス名は、ARTIMPP
が属しているすべてのリモート・ドメインのDMCONFIG
ファイルのDM_REMOTE_SERVICES
セクションで構成されている必要があります。さらに、ARTIGW
が配置されている各ドメインによって適切なサービス名がエクスポートされ、サービス競合がないようにする必要があります。
たとえば、ARTIGW
がドメインGW
にあり、ARTIMPP
がドメインMPP
にあると想定します。ARTIGW
は、SRVID=101, SRVGRP= GROUP1
で、デフォルト・サービス名を使用するように構成されています。リスト5は、MPP
およびGW
ドメインに対するDMCONFIG
ファイルの例を示しています。
注: |
注: | 1. 非端末tuxedoクライアントに対しては、ARTIGW による変換は行われません。クライアント・アプリケーションから提供されるデータは、ARTMPPサーバーとアプリケーション・プログラムで予想される形式にする必要があります。 |
注: | 2. ARTIGW は、単一スレッドのTuxedoサーバーです。ユーザーはパフォーマンス調整のためにARTIGW の複数インスタンスをデプロイできます。 |
注: | 3. Oracle Tuxedo MQ Adapterは、MQアプリケーションとのMQIインタフェースです。メインフレームとオープン・システムでWebSphere MQの動作は異なっているため、Tuxedo MQ Adapterの動作も異なるように見える可能性があります。 |
注: | たとえば、MQアプリケーションがメインフレーム上にMQPMO_NONE と指定されたメッセージを投入した場合、Oracle Tuxedo MQ Adapterは、MQアプリケーションによってMQCMIT が呼び出されるまで、IMSトランザクションをトリガーしません。 |
注: | 注意: オープン・システムでは、IMSトランザクションはすぐにトリガーされます。 |
注: | 4. MQアプリケーションでは、メッセージの処理中にARTIGW またはARTIMPP によって予期しないエラーが発生した場合、レポート・メッセージが生成され、元のメッセージによって指定されている応答キューに送信されます。レポート・メッセージには元のメッセージのデータは含まれておらず、エラー・メッセージの詳細を示す文字列のみが含まれています。 |
COMMIT_THEN_SEND
)のみがサポートされています。Tuxedo ART for IMSでは、MQIIH
に設定されているコミット・モード値に関係なく、常にトランザクションがコミット・モード0として処理されます。ULOG
ファイルにもあります。 Tuxedo ART for IMSでは、ALT PCB
を使用するプログラムに対してのみ、永続メッセージがサポートされます。ALT PCB
によるプログラム切替えでは、ターゲット・トランザクションが永続トランザクションの場合、メッセージはそのトランザクションの/Qに格納されます。永続トランザクションの定義方法については、imsresource.descに関する項を参照してください。
永続メッセージをサポートするために、ARTIMPP
は2つの実行モードで区別されます。1つは標準モードのARTIMPP
で、もう一方は永続モードのARTIMPP
です。2つのARTIMPP
サーバー・モードの定義方法については、ARTIMPP
の構成に関する項を参照してください。
標準モードのARTIMPP
はトランザクションをサービスとして通知し、端末リクエストやARTIGW
からのリクエストなど、フロントエンドからの標準サービス・リクエストを処理します。サービス・リクエストはTuxedoフレームワークによってスケジュールされ、Tuxedo IPCキュー経由で渡されます。
永続モードのARTIMPP
は、サービスを通知しません。これは、CLASS
が属している永続トランザクションのすべての/Qが、ARTIMPP
の" -l class_list
"パラメータに対応しているかどうかをモニターします。永続トランザクションの/Qからメッセージを取得し、トランザクションに対応するプログラムを実行します。
ARTIBMPT
は永続メッセージのサポートに関連するサーバーでもあります。ARTIBMPT
が提供するトランザクション指向BMP
プログラムは、永続トランザクションのみである必要があります。"トランザクション指向BMP
"の詳細は、ARTIBMPT
の構成に関する項を参照してください。トランザクション指向BMP
プログラムでは、GU操作によってトランザクションの/Qからメッセージを取得します。
表18は、サーバー構成のプロセスとおよびコマンドを示しています。
ARTICL
- 3270端末をTuxedo ART for IMSランタイムに結合するために使用されます。
CLOPT="[servopts options] -- -n netaddr -L pnetaddr [-S ssladdr] [-m minh] [-M maxh] [-x session-per-handler] [-p profile-name][-z mine] [-Z maxe]
[-D [+H handler-number]]"
UBBCONFIGファイルのMACHINES
セクションでMAXWSCLIENTS
パラメータを指定する必要があります。MAXWSCLIENTS
は、ARTICTL
に対して特別な意味を持つ唯一のパラメータです。MAXWSCLIENTS
は、3270端末専用に予約されているアクセス・スロットの数を、起動時にOracle ARTに通知します。
MAXWSCLIENTS
に対して、ノードに接続できる3270端末の最大数を指定します。デフォルトは0です。指定しない場合、端末から、指定されたマシンに接続できません。
-n netaddr
-L pnetaddr
[-m minh]
minh
とmaxh
の間にあります。 注: | minh は1-255の数ですが、システム・リソースの制限に従って、それは、(FD_SETSIZE - 24) 以下である必要があります。FD_SETSIZE は、1つのプロセスで一度に開くことができるファイルの最大数を意味します。この値は、システム・コマンドulimit -n を使用して取得できます。 |
[-M maxh]
ARTICTL
によって開始されるハンドラ・プロセスの最大数であるmaxh
は、1-1000の数であり、デフォルト値は1000です。ハンドラ・プロセスの実際の数は、システム負荷に基づいて、常に minh
とmaxh
の間にあります。 注: | maxh は1-1000の数ですが、システム・リソースの制限に従って、それは、(FD_SETSIZE - 24) 以下である必要があります。FD_SETSIZE は、1つのプロセスで一度に開くことができるファイルの最大数を意味します。この値は、システム・コマンドulimit -n を使用して取得できます。 |
[-x session-per-handler]
[-S ssladdr]
//computer:5000
は、computerというマシン上のポート5000を指定します。文字、1-256、A-Z、a-z、0-9、[/:-]
。-n
オプションが指定されない場合、[-S ssladdr]
は必須です。
[-p profile-name]
~/.tuxAppProfile
です。 注: | Tuxedoドメインへの参加には、ARTICTL はセキュリティ・プロファイルに格納されているAPP_PW のみ使用します。ARTICTL で使用されるユーザー名/ユーザー・パスワードは3270端末からのものです。 |
-z minencryptbits
ARTICTL
ハンドラ間でネットワーク・リンクを確立する際に必要な暗号化の最小レベルを指定します。0は暗号化が行われないことを示し、40、56、128および256は暗号化キーの長さをビット単位で指定します。ここで指定する最小レベルの暗号化が満たされない場合、リンクの確立は失敗します。デフォルトは0です。-s
オプションが指定されない場合、このオプションは無視されます。
– Z maxencryptbits
[-D [+H handler-number]]
-D
オプションは、ARTICTL
サーバーのトレース・ログを有効にするために使用されます。指定しない場合、無効です。+H handler-number
オプションは、ARTICTLH
サーバーで有効なハンドラ数のうち、最初にブートした数にかぎり、ARTICTLH
サーバーのトレース・ログを有効にするために使用されます。handler-numberが0
の場合、トレース・ログは、現在のARTICTL
サーバーから作成されたすべてのARTICTLH
サーバーで有効になります。すべてのトレース・ログは、/tmp
ディレクトリに配置されます。
*MACHINES
DEFAULT:
MAXWSCLINETS = 20
...
*SERVERS
ARTICTL SRVGRP="MFSGRP"
SRVID=1000
RESTART=Y GRACE=0
CLOPT="-- -n //hostname:4000 -L //hostname:4002 -m 1 -M 10"
ARTIMPP
: TPタイプCOBOL/Cプログラムのサービス・ハンドラおよびコンテナ。
CLOPT="[servopts options] -- -l class_list [-V][-p][-m cobol mode][-D trace-level][-x parameter list for DB plugin]"
ARTIMPP
は、TPタイプCOBOL/Cプログラムのサービス・ハンドラおよびコンテナとして機能するTuxedoサーバーです。ARTIMPP
には2つの実行モードがあります。1つは標準モード(CLOPT
で-p
の指定なし)のARTIMPP
、もう一方は永続モード(CLOPT
で-p
を指定)のARTIMPP
です。
標準モードのARTIMPP
は、フロントエンドから受け取ったサービス・リクエスト(端末、ARTIGW
からのリクエスト)に従って、対応するCOBOL/Cプログラムを起動します。
永続モードのARTIMPP
は、ARTIMPP
のCLOPT
にある"-l class_list
"パラメータでクラスが定義されている永続トランザクションの/Qをモニターします。これは/Qからメッセージを受信し、対応するCOBOL/Cプログラムを起動します。
[-l class_list]
class_list
で指定されているサービスは、標準モードのARTIMPP
によって通知されます。
-p
-V
[-m cobol mode]
[-D trace-level]
[-x]
Oracle IMS/DBソリューションの場合、パラメータ・リストは次のとおりです。
-o host:port:dra
これは、IMS/DB用のOracleプラグインで必要とされるパラメータです。
注: | UBBCONFIG ファイルでARTIMPP サーバーが永続モードに構成されており、imsresource.desc で永続トランザクションが構成されている場合、UBBCONFIG ファイルで、imsresource.desc の/Qの構成に従って(ARTIMPP の前に)TMQUEUE サーバーを構成する必要もあります。 |
注: | Tuxedo ART for IMSを起動する前に、imsresource.desc 内の情報に従って/Qも作成する必要があります。 |
ROLB
またはROLL
を発行する永続トランザクションの場合、トランザクションは永続モード・サーバーの1つのARTIMPP
によってのみ処理できます。つまり、(imstrans.desc
で定義された)トランザクションのCLASS
定義は、永続モード・サーバーの1つのARTIMPP
の-l
パラメータのみと一致します。
ARTIMPP_ORA
は、ARTIMPP
のすべての機能を備えています。また、外部リソース・マネージャ(RM)として使用されるOracle Databaseもサポートできます。これは、Oracle Databaseによって提供されるいくつかのライブラリを使用します。Oracle Databaseでこの環境変数を使用するには、UBBCONFIG
ファイルでRMセクションを適切に構成する必要があります。
ARTIBMP
: BATCHタイプCOBOL/Cプログラムのプログラム・コンテナ。
CLOPT="[servopts options] -- [-V][-m cobol mode][-D trace-level][-x parameter list for DB plugin] "
ARTIBMP
は、BATCHタイプのCOBOL/Cプログラムのプログラム・コンテナとして機能するTuxedoサーバーであり、受信したプログラム名に応じて対応するCOBOLプログラムを起動します。エラーや異常終了がなく、ユーザー・プログラムもクラッシュしていない場合、ユーザー・プログラムのリターン・コードはDFSRRC00
です。
-V
[-m cobol mode]
[-D trace-level]
[-x]
Oracle IMS/DBソリューションの場合、パラメータ・リストは次のとおりです。
-o host:port:dra
これは、IMS/DB用のOracleプラグインで必要とされるパラメータです。
ARTIBMPT
: トランザクション指向バッチ・プログラムを処理するOracleTuxedoサーバー。
ARTIMPP SRVGRP="identifier" SRVID="number"
CLOPT="[servopts options] -- -l class_list [-m cobol mode][-D trace-level] [-x parameter list for DB plugin] "
トランザクション指向BMP
プログラムは、ARTIBMPT
によって処理され、 ${IN}
パラメータの指定されたDFSRRC00
によってトリガーされる必要があります。トランザクション指向BMP
プログラムは、imstrans.desc
で定義され、imsapps.desc
でもTYPE=BATCH
によって定義されているプログラムです。
トランザクション指向BMP
プログラムは永続トランザクションにする必要があり、imsresource.desc
で定義する必要があります。ARTIBMPT
サーバーは、トランザクション指向BMPプログラムのみを処理します。
エラーや異常終了がなく、ユーザー・プログラムもクラッシュしていない場合、ユーザー・プログラムのリターン・コードはDFSRRC00
です。
[-l class_list]
class_list
で指定されているサービスは、ARTIBMPT
によって公開されます。
[-m cobol mode]
[-D trace-level]
[-x]
Oracle IMS/DBソリューションの場合、パラメータ・リストは次のとおりです。
-o host:port:dra
これは、IMS/DB用のOracleプラグインで必要とされるパラメータです。
注意: | ARTIBMPT がUBBCONFIG ファイルで構成されており、トランザクション指向BMP トランザクションがimsresource.desc で構成されている場合、UBBCONFIG ファイルで、imsresource.desc の/Qの構成に従ってTMQUEUE サーバーを構成する必要もあります。 |
ROLB
またはROLL
を発行するトランザクション指向BMP
プログラムの場合、トランザクションは1つのARTIBMPT
サーバーによってのみ処理できます。
つまり、(imstrans.descで定義された)トランザクションのCLASS
定義は、1つのARTIBMPT
サーバーの"-l class_list
"パラメータのみと一致します。
ARTIBMP_ORA
は、ARTIBMPのすべての機能を備えています。また、外部リソース・マネージャ(RM)として使用されるOracle Databaseもサポートできます。これは、Oracle Databaseによって提供されるいくつかのライブラリを使用します。Oracle Databaseでこの環境変数を使用するには、UBBCONFIG
ファイルでRMセクションを適切に構成する必要があります。
ARTIADM
- Tuxedo ART for IMSランタイムの管理を担当するOracle Tuxedoサーバー。
CLOPT="[servopts options]--[-D trace-level]"
分散ターゲット環境では、このサーバーを各ノード上に構成して、構成の通知を実行することができます。これらのサーバーを使用すると、マスター・ノード上では、構成ファイルのみ構成する必要があり、管理サーバーは構成ファイルを各スレーブ・ノードに通知します。
起動時に、マスター・ノード上で動作している管理サーバーは、ディレクトリ${ART_IMS_CONFIG}
にあるすべての構成ファイルを読み込みます。スレーブ・ノード上で動作する各管理サーバーの起動起動時には、マスター・ノード上の管理サーバーと通信して、構成ファイルの内容をフェッチします。
続いてスレーブ・ノード上の管理サーバーは、スレーブ・ノード上のディレクトリ${ART_IMS_CONFIG}
にある、対応する構成ファイルに書き込みます。存在しない場合は、新しい構成ファイルが作成されます。構成ファイル同期関数はオプションです。デフォルトでは、この関数は無効になっています。
[-D trace-level]
ARTITERM
: 異なるドメインに配置されているARTICTL
とARTIMPP
の間のメッセンジャとして機能します。
クロス・ドメイン環境では、ARTITERM
サーバーは、異なるドメインに配置されているARTICTL
とARTIMPP
の間のメッセンジャとして機能するために使用されます。ARTITERM
は、ARTIMPP
に特別なサービスを提供し、したがって、ARTIMPP
はデータをARTITERM
に渡すことができ、それは次にそのデータをARTICTL
に渡します。
ARTIGW
: 非端末クライアントとARTIMPP
サーバー間のブリッジとして機能するOracle Tuxedoサーバー。
CLOPT="[servopts options] [-m mq_service_name] [-s tuxclt_service_name] [-V][-D trace-level]"
ARTIGW
は、非端末クライアントとARTIMPP
サーバー間のブリッジとして機能するOracle Tuxedoサーバーです。主な機能は次のとおりです。
MQアプリケーションのリクエスト・メッセージの場合、MQメッセージを、ARTIMPP
で使用可能な形式に変換します。応答メッセージの場合は、ARTIMPP
の応答メッセージをMQメッセージに変換します。
非端末Oracle Tuxedoクライアント・リクエスト・メッセージの場合、ARTIGW
は、クライアントのFML32バッファをプログラムが必要とするメッセージ形式に転送する役割を果たし、そのメッセージをMPPに送信します。次にMPPメッセージをデコードして、標準のFML32バッファをクライアントに送信します。
セッション管理を使用して、非同期のARTIMPP
応答と元のARTIGW
クライアント・リクエストを関連付けます。
セッション管理を使用して、ARTIMPP
からの非同期の応答と、ARTIGW
クライアントからの元のリクエストを関連付けます。
mq_service_name
<IMSGW_MQ_SVC>
は通知されません。
tuxclt_service_name
<IMSGW_MQ_SVC>
は通知されません。
-V
[-D trace-level]
注意: | mq_service_name とtuxclt_service_name はどちらも、先頭を"<domainid>_" にすることはできません。そうでなければ、ARTIGW はレスポンス・メッセージを正しく取得できません。この場合、<domainid> は、ARTIMPP が属しているドメインのIDです。 |
ODBAPROX
- z/OS上のソケット・サーバーであり、TCP/IPを介してTuxedo ART for IMS
サーバーと通信するものです。
ODBAPROX -h host -l command_port -p odba_port -n max_handler_num [-D]
ODBA
プロキシは、ソケット・サーバーであり、TCP/IPを介してTuxedo ART for IMSサーバーと通信します。ODBAPROX
は、Tuxedo ART for IMS内のプログラムと通信するように開発され、これらのプログラムのかわりにデータベース処理を実行します。
[-h]
[-l]
[-p]
[-n]
[-D]
詳細は、Oracle Tuxedo Application Runtime for IMSユーザーズ・ガイドのODBAプロキシの使用方法に関する項を参照してください。
Tuxedoでは、セキュリティ・メカニズムのどのタイプでも、Tuxedo ATMIアプリケーションに参加するためのプロセスの一部として、すべてのユーザーにアプリケーション・パスワードの入力が要求されますが、Tuxedo ART for IMSでは、IMSがz/OS上に配置されている場合と同じ動作を保つため、それは削除されました。ユーザーはアプリケーション・パスワードをNULLとして保持する必要があります。Tuxedoアプリケーション・パスワードを構成する方法の詳細情報は、Tuxedoのドキュメントを参照してください。USER_AUTHおよびACL/必須ACLセキュリティ・メカニズムでは、ユーザーはTuxedo ART for IMSランタイムに参加するために有効なユーザー名とパスワードを入力することを要求されます。ユーザーごとのパスワードは、tpusrという名前のファイルに格納されたユーザー名に関連付けられているパスワードと一致する必要があります。クライアント名は、使用されません。tpusrのパスワードおよびユーザー名に対するユーザーごとのパスワードの照合は、Tuxedo認証サーバーAUTHSVRによって提供される、Tuxedo認証サービスAUTHSVCによって行われます。Tuxedo USER_AUTHおよびACL/必須ACL認証を構成する方法の詳細は、Tuxedoのドキュメントを参照してください。
詳細は、Oracle Tuxedoユーザーズ・ガイドのATMIアプリケーションにおけるセキュリティの使用に関する項を参照してください。
Tuxedo ART for IMSでは、次の既存のUBBCONFIG
ファイル・パラメータを使用して、SSL識別文字列およびSSL証明書の暗号化パスワードの場所に関する情報が構成されます。
詳細は、Oracle Tuxedoユーザーズ・ガイドのATMIアプリケーションにおけるセキュリティの使用に関する項を参照してください。
ART_IMS_CONFIG
*.desc
や*.psb
などの構成ファイルが配置されている絶対パスを指定するためにTuxedo ART for IMSによって必要とされる環境変数。これはARTIMPP
、ARTIMPP_ORA
、ARTIBMP
、ARTIBMP_ORA
、ARTIBMPT
、ARTIADM
に必須の環境変数です。
ART_IMS_DB
ART_IMS_FMT
MFSGEN
によって生成された制御ブロック・ファイルが配置されている絶対パスを指定するためにARTICTL
によって必要とされる環境変数。これは、PATH
環境変数に類似した一連のパスであり、セパレータは:
です。この変数が指定されていない場合、PATH APPDIR
が使用されます。MFSを使用する場合、これはARTICTL
に必須の環境変数です。
ART_IMSLOGDIR
すべてのレコード・ログ・ファイルが配置されるディレクトリを指定します。レコード・ログ・ファイルは、CHKP (シンボリック)
とXRST
によって使用されます。指定しなかった場合、ART_IMSLOGDIR
のデフォルト値は$APPDIR/IMSLOGDIR
になります。MPモードでOracle Tuxedoドメイン内の複数のマシンがレコード・ログ・ファイルを共有する場合、ART_IMSLOGDIR
は、Oracle Tuxedoドメイン内のマシンがアクセスできるNFS
ディレクトリを指している必要があります。
ARTIMS_CAPITAL_USERID
ユーザー名を大文字に変換するかどうかを指定するために、ARTICTL
によって必要とされる環境変数。Y
を設定すると、すべてのユーザー名の文字が大文字に変換されます。N
を設定するか、または設定しない場合は、変換されません。
ARTIMS_COBOL_MODE
ユーザーのCOBOLプログラムの起動/取消方法を指定します(Micro Focus COBOLのみ)。これはCOBOL-ITでは無視されます。表に19に、使用可能な値と説明を示します。設定しない場合、デフォルト値はMF_SUBSYS
です。
ARTIMS_DYNAMIC_BMP
動的BMP設定を指定します。値は"Y
"または"N
"に設定できます。
"Y
"に設定した場合、BMPサーバーはBMPプログラムの実行後終了します。"N
"に設定した場合、BMPサーバーはBMPプログラムの実行後も存続します。
ART_IMS_EXCEPTION_TO_CATCH
アプリケーション例外として捕捉するシグナル番号のリストを指定します。各番号は、カンマで区切ります(ART_IMS_EXCEPTION_TO_CATCH=8,11,4
など)。
この環境変数が設定されない場合、デフォルト・リスト(SIGSEGV,SIGILL,SIGBUS,SIGFPE
)が使用されます。誤ったシグナル番号が指定された場合は無視され、警告メッセージがULOG
ファイルに書き込まれます。捕捉できない正しいシグナル番号が指定された場合(SIGKILL
、SIGSTOP
など)、サーバーの起動が失敗し、警告メッセージがULOG
ファイルに書き込まれます。
ARTIMS_EXCEPTION_HANDLING
ユーザー・アプリケーションによって生成された重大な例外が捕捉された場合のサーバーの動作を指定します。値は、KEEP
またはABORT
に設定できます。
ABORT
に設定した場合、ユーザー・アプリケーションからの例外が捕捉されると、サーバーMPP/BMP
は中止されます。サーバーのコア・ファイルはシステムの構成に基づいて生成される場合とされない場合があります。
KEEP
に設定した場合、サーバーは起動したままになります。設定しない場合、デフォルト値はKEEP
です。
ARTIMS_LOGON_SCREEN
ログオン画面ディレクトリを指定します。これは$IMSDIR
のサブディレクトリである必要があります。設定しない場合、デフォルト値はsysmap
で、これは、$IMSDIR/sysmap
のログオン画面が使用されることを意味します。$IMSDIR/sysmap2
では別のログオン画面が定義されており、sysmap2
とsysmap
の間の違いは、ユーザー名およびパスワードの入力フィールドの位置のみです。ユーザー定義のログオン画面の詳細は、$IMSDIR/sysmap2
のreadme
ファイルを参照してください。
COBPATH
Micro Focus COBOL環境で必要とされる環境変数。これは、動的にロードされるCOBOLプログラムを検索する1つ以上のディレクトリを定義します。その使用方法は、UNIX PATHに似ています。これはMicro Focus COBOLに必須の環境変数です。
COB_LIBRARY_PATH
COBOL-ITを使用している場合、COBOLプログラムの検索順序を定義するためにCOBOL-ITによってCOB_LIBRARY_PATH
が必要とされます。これは、動的にロードされるCOBOLプログラムを検索する1つ以上のディレクトリを定義します。その使用方法は、Unix PATHに似ています。これはCOBOL-ITに必須の環境変数です。
DFSRRC00_TIMEOUT_SEC
DFSRRC00
は、 BMP/BMPT
プログラムのレスポンスを待機する、DFSRRC00
のタイムアウト秒の値を指定するために使用されます。これには、次のルールが使用されます。
EXTERCODE
アウトバウンド・データのどのエンコーディング・タイプを使用するかを指定します。この値は、z/OSプラットフォームで使用されるどのEBCDICエンコーディング・タイプでもかまいません。この変数が指定されていない場合、IBM-37が使用されます。この変数が指定されている場合、INTERCODE
も指定する必要があります。
IMS_DUMP_TYPE
プログラムのダンプ・タイプを指定します。次のいずれかの条件が満たされる場合、ダンプ・ファイルが生成されます。
CEE3ABD
/ART3ABD
が呼び出される場合(MF環境でCEE3ABD
が呼び出される場合を除く)。DLI ROLL
が呼び出される場合。ART_IMS_EXCEPTION_TO_CATCH
またはデフォルト・シグナル・リスト(ART_IMS_EXCEPTION_TO_CATCH
が未設定の場合)で指定されたシグナルが捕捉される場合。表に20に、使用可能な値と説明を示します。
IMS_DUMP_TYPE
が構成されていない場合、デフォルト値はNONE
ですが、ARTIMS_EXCEPTION_HANDLING
がABORT
に設定されている場合、シグナルの捕捉時にSYSTEM_DUMP
が有効になります。表21に、ダンプ・タイプのすべての組合せを示します。
表22に、ダンプ・ファイル生成の要件を示します
IMS_ENV_LIST
DFSRRC00
のため、ARTIBMP
サーバーに送信する必要のある、接頭辞"DD_
"の付く環境変数以外のすべて環境変数名の指定に使用されます。すべての環境変数の名前はカンマで区切ります。DFSRRC00
を起動する前に設定する必要があります。
IMS_LONG_USERNAME
ARTIMSは、従来の8バイトのユーザー名/パスワードを使用した端末からのログインIMSをサポートし、ユーザー名パスワードは最大で30バイトまでです。この環境変数は、従来のユーザー名/パスワードと長いユーザー名/パスワードとを切り替えるために使用します。デフォルト・モードは従来の8バイトのユーザー名/パスワードです。
IMS_LONG_USERNAME
を"Y"
に設定した場合、最大30バイトのユーザー名/パスワードが使用されます。それ以外の場合、従来の8バイトのユーザー名/パスワードが使用されます。
IMS_PERF_ENABLE
パフォーマンス・トレースのためのグローバル・スイッチです。IMS_PERF_ENABLE
をY/N
に設定した、パフォーマンス・トレースのオン/オフが制御され、UBBCONFIG
ファイル設定より優先されます。
IMS_PERF_ENABLE
が設定されていない場合、パフォーマンスの動作はUBBCONFIG
ファイルの-V
オプションの使用により設定されます。
IMS_PRO_LOG
プログラム起動ログのグローバル・スイッチ。IMS_PRO_LOG
をY/N
に設定している場合、プログラム起動ログのオン/オフが制御されます。
Y
に設定している場合、MPP/BMPサーバーでのトランザクションやプログラムの開始/終了時に、プログラム起動ログ・ファイルに、次の形式でトレース行が追加されます: transaction name
, program name
, Sstart time,
Eend time
, group id
, server id
.
注意: | 使用する場合、"-"は空の値を示します。 |
IMS_TRACE_PATH
デバッグ・トレース、プログラム起動ログ、パフォーマンス・トレース・レポートが起きれるパスを指定します。Tuxedo ART for IMSサーバーには、このディレクトリの書込み権限と実行権限の両方が必要です。
指定しない場合、デフォルトでは$APPDIR/log
に置かれます。
IMSDIR
インストール済Tuxedo ART for IMSサブシステムのルート・パス(絶対パス)が含まれている環境変数。ARTICTL
を使用して端末からの接続を受け付ける場合、これは必須の環境変数です。
INTERCODE
インバウンド・データのどのエンコーディング・タイプを使用するかを指定します。この値は、一般的なプラットフォームで使用されるどのエンコーディング・タイプでもかまいません。この変数を指定しなかった場合、ASCIIが使用されます。この変数が指定されている場合、EXTERCODE
も指定する必要があります。
表23は、3270端末上で入力でき、Tuxedo ART for IMSで処理できるコマンドおよび関連するパラメータを示しています。
この項のすべての構成ファイルで、キーおよび非リテラル値について大文字小文字が区別されません。例: bool (yes|no)
およびenum
リテラル値とそれらの大文字小文字は保持されます。コメント行には、前に"*"を付ける必要があります。構成ファイルにエラーがある場合、または構成ファイルに矛盾がある場合、サーバーは起動に失敗する場合があります。
[section name]
Field1=value1
Field2=value2
….
[section name]
….
[section name]
…
表24は、z/OS上のIMSのTRANSACT MACROからフィールド名がマップされた構成ファイルの例を示しています。
表25は、z/OS上のIMSのAPPLCTN MACROからフィールド名がマップされた構成ファイルの例を示しています。
このファイルで定義されるトランザクションはすべて永続トランザクションです。プログラム切替えによる永続トランザクションに対するメッセージは/Qに格納されます。Tuxedo ART for IMSを起動する前に、このファイル内に構成されているキュー・スペースに対応して、キュー名をトランザクション名と同じにして、すべての永続トランザクション用の/Qを作成する必要があります。表26に、imsresource.desc
のフィールド名をリストします。
リスト7は、キュー・スペースと参照用のキューを作成するためのスクリプト例を示しています。このスクリプトを実際の要件に合わせてカスタマイズできます。詳細は、Oracle Tuxedo /Qのガイドを参照してください。
qmadmin ${ARTIMS QSPACE_DEVICE} <<!end
crdl . . .
qspacecreate . . .
qcreate TRAN11 fifo none 2 30 80% 0 ""
qcreate TRAN12 fifo none 2 30 80% 0 ""
!end
--->
qmadmin ${ARTIMS QSPACE_DEVICE} <<!
echo
crdl ${ARTIMS QSPACE_DEVICE} 0 10000
qspacecreate
${QUEUE_SPACENAME}
22839
5000
50
1000
1000
10000
errque
y
16
qopen ${QUEUE_SPACENAME}
qcreate TRAN11 fifo none 2 30 80% 0% ""
qcreate TRAN12 fifo none 2 30 80% 0% ""
qcreate errque fifo none 2 30 80% 0% ""
q
!
ROLB
またはROLL
を発行する永続トランザクションの場合、トランザクション・キューの作成の再試行回数は、比較的大きな数に設定する必要があります(最大で2147483647
)。
注意: | 再試行回数は、特定のメッセージが永続トランザクションに入れられる回数の2倍以上の数に設定することをお薦めします。 |
imsdbs.desc
は、 $ART_IMS_CONFIG
の下にあります。
一部のimsdbs.desc
フィールド構成は、z/OS上のIMSのなんらかのDBD文からマップされています。ROLB
またはROLL
を発行する永続トランザクションの場合、トランザクション・キューの作成の再試行回数は、比較的大きな数に設定する必要があります(設定可能な最大値は2147483647)。
注意: | 再試行回数は、特定のメッセージが永続トランザクションに入れられる回数の2倍以上の数に設定することをお薦めします。 |
$appname
は、imsapps.descでタイプがTPと定義されているCOBOLアプリケーション・プログラムの名前であり、$appname.psb
は、それに対応するPSB定義ファイルです。タイプがBATCHのアプリケーション・プログラムの場合は、$appname.psb
は使用されず、DFSRRC00
を呼び出すスクリプトによってPSBが提供される必要があります。
LIST=YES
の[imspcb
]セクションの数は(最大)31です。IOPCB
を含むPCBの最大数は32です。
注意: | LIST=NO の[imspcb ]セクションはカウントされません。 |
表28は、z/OS上のIMSのPCB文からフィールド名がマップされた構成ファイルの例を示しています。
segments.descは、データベース内のセグメントを定義します。1つのデータベース(GSAMデータベースを除く)は、1つのsegments.descを持ち、それは$ART_IMS_CONFIG/db/$dbname
の下にあります。
segments.desc内のフィールドは、DBDのSEGM文からマッピングされています。
注: | 可変長セグメントの場合、BYTES定義がSEGM文からマップされ(BYTES= (max bytes,min bytes) など)、最大バイト数は最小バイト数以上である必要があります。可変長セグメントは、2バイト・フィールドで始まる必要があり、それによって、その2バイトの長さのフィールドを含めたセグメントの長さが定義されます。 |
注: | SEGPGM_A2E 、SEGPGM_E2A およびSSAPGM_A2E 、KFAPGM_E2A の場合: |
注: | 1. 上述の4つのパラメータがどれもsegments.descで定義されていない場合、$segname.descが存在する必要があり、後述するデータ変換を行うために$segname.descが使用されます。 |
注: | 2. SEGPGM_A2E とSEGPGM_E2A 。 |
注: | SEGPGM_A2E とSEGPGM_E2A は、両方合わせて定義済であるか、未定義である必要があります。SEGPGM_A2E とSEGPGM_E2A が定義済の場合、ODBAプラグインはSEGPGM_A2E /SEGPGM_E2A を使用してセグメント・データの変換を実行します。この場合、$segname.desc が存在していても、$segname.desc がセグメント・データの変換の実行に使用されることはありません。 |
注: | SEGPGM_A2E とSEGPGM_E2A が未定義の場合、ODBAプラグインは$segname.desc のFIELDS定義を使用してセグメント・データの変換を実行します。 |
注: | 3. SSAPGM_A2E |
注: | SSAPGM_A2E が定義されている場合、ODBAプラグインは定義済のCOBOLプログラムを使用して、このセグメントの限定されたSSAの変換を実行します。 |
注: | SSAPGM_A2E が定義されていない場合、ODBAプログラムは$segname.desc のKEY フィールド・タイプ定義を使用して、このセグメントのSSAのKEY 値を変換します。 |
注意: | 4. KFAPGM_E2A 。 |
注意: | KFAPGM_E2A が定義されている場合、ODBAプラグインは定義済のCOBOLプログラムを使用して、このセグメントのキー・フィードバック領域のデータ変換を実行します。 |
注意: | KFAPGM_E2A が定義されていない場合、ODBAプログラムは$segname.desc のFBAFIELD 定義を使用して、このセグメントのキー・フィードバック領域のデータ変換を実行します。 |
注意: | 上述のCOBOLプログラムの生成およびコンパイル方法については、Oracle Tuxedo Application Rehosting Workbenchユーザー・ガイドおよびOracle Tuxedo Application Rehosting Workbenchリファレンス・ガイドのバッファ変換に関する項を参照してください。 |
注意: | Tuxedo ART for IMSサーバーを起動する前に、コンパイル済の変換プログラムをCOBPATH (Micro Focus COBOLの場合)またはCOB_LIBRARY_PATH (CITの場合)の下に配置します。 |
$segname.desc
は、セグメント内のフィールドを定義します。$segname.desc
は、imsdbs.desc
でGSAMとMSDBのどちらでもないアクセス・タイプが定義されているデータベースに対してのみ存在します。$segname.desc
は$ART_IMS_CONFIG/db/$dbname
の下に配置されています。
フィールド・タイプの定義はDBDのFIELD文によるものだけではありません。ユーザーはCOBOLプログラムでの使用方法に従ってフィールド・タイプを定義する必要もあります。
フィールドのタイプを定義しない場合、デフォルトのフィールド・タイプはCになります。
表31は、COBOLプログラムでの使用方法に基づくフィールド定義のマッピング表を示しています。
取得またはISRT
呼出しが完了すると、ODBAプロキシからキー・フィードバック領域が返されます。DB PCBでキー・フィードバック領域を変換するために、FBAFIELD
という名前の特別なFIELDが予約されています。
セグメント連結キーは、それぞれの親のキーと独自のキーで構成されます。キー形式は左から右へと配置され、ルート・セグメントのキー形式で始まり、階層パスが続きます。
$segment
で定義されているこの特別なFIELD(FBAFIELD)
によって、セグメントの連結キーの形式を定義する必要があります。キー・フィードバック領域は、segnameでのこのフィールドの定義に従って変換されます。
リスト8は、$segname.desc
の定義例を示しています。
[field]
NAME=FBAFIELD
START=0
BYTES=11
TYPE=M
FORMAT=5,P;6,C
BYTES
はキー・フィードバック領域の長さ合計(つまり連結キーの長さ合計)を定義します。
TYPE
は連結キーのタイプを定義します。連結キーに異なるタイプが含まれる場合は、TYPE
をM
に設定する必要があります。
キーの形式がTYPE=M
の場合、FORMAT
で連結を定義する必要があります。
$ segname.desc
で特別なFIELD(FBAFIELD)
が定義されていない場合、segnameではキー・フィードバック領域がデフォルトでTYPE C
として変換されます。
注意: | SSAの検索キー・フィールドの場合、フィールド名は、DBDで定義されている検索KEY FIELD名、およびSSAで使用されている名前と同じである必要があります。 |
imsdebug.desc
は、すべてのプログラム・デバッグ情報を定義します(現在はCOBOLプログラムのデバッグのみが対象)。
zostrans.desc
ファイルは、z/OSに残っているすべてのトランザクションを定義します。これらすべてのトランザクションは、サブトランザクションとしてのみ呼び出す必要があり、現在は非会話型トランザクションのみがサポートされます。
トランザクション入力メッセージのバッファ・コンバータ・プログラム。ART for Workbenchは、入力メッセージ/セグメント構造を記述したコピーブックに基づいてこれを生成できます。これは、Z/OSでサブトランザクションを呼び出す前にデータ変換を処理します。
CONV が指定されない場合、ART for IMSは、デフォルトでASCIIをEBCDICに変換するため、入力メッセージのすべてのバイトは文字として処理されます。
コンバータ・プログラムの生成方法については、『Oracle Tuxedo Application Rehosting Workbenchリファレンス・ガイド』を参照してください。
|
imsgenconf
により、IMS.WHITE
(形式は次のとおり)にリストされているトランザクション/アプリケーションの構成が作成されます。
[TRANCODE]
TRAN1
TRAN2
TRAN3
[APPPSB]
PSB1
PSB2
PSB3
[TRANCODE]
セクション: ブラック/ホワイト・リストにトランザクション・コードを定義します。各トランザクション・キーは、最大で8文字です。
[APPPSB]
セクション: ブラック/ホワイト・リストにバッチ・アプリケーション・プログラムのPSB
名を定義します。各PSB
キーは、最大で8文字です。
imsgenconf
により、IMS.BLACK
に定義されていないトランザクション/アプリケーションの構成が作成されます。形式は次のとおりです。
[TRANCODE]
TRAN1
TRAN2
TRAN3
[APPPSB]
PSB1
PSB2
PSB3
Tuxedo ART for IMSでは、Micro Focus COBOL環境で、Tuxedo ART for IMSバッチCOBOLプログラム内に記述されたACCEPT/DISPLAY
文のSYSIN/SYSOUT
リダイレクションがサポートされます。これをサポートするために、Tuxedo ART for IMSは"ARTEXTFH
"という名前の新規ファイル・ハンドラを追加します($IMSDIR/coblib_mf/BMP
にあります)。
ARTIMPP
サーバー用にARTEXTFH
という同じ名前の別のファイル・ハンドラがあり、その動作はMicro Focus COBOLのデフォルト・ファイル・ハンドラと同じです。
このファイル・ハンドラは$IMSDIR/coblib_mf/MPP
にあります。これらの2つのファイル・ハンドラは、ARTIBMP
またはARTIMPP
サーバーによってロードされます。デフォルト・ファイル・ハンドラの動作が適さないケースがある場合、ユーザーはこれらの2つのファイル・ハンドラ・ファイルを切り替えるか、ユーザー指定のファイル・ハンドラと置き換えます。
注意: | 現在、この機能はCOBOL-ITではサポートされていません。 |
Cのプログラムでは、STDIN/STDOUT/STDERR
はSYSIN/SYSOUT/SYSOUT
ファイルにリダイレクトされます。SYSIN
が定義されていないか、アクセスできない場合、リダイレクトは起きません。
SYSOUT
が定義されていないか、アクセスできない場合、STDOUT/STDERR
は$APPDIR/SYSOUT
ファイルにリダイレクトされます。
COBOL-ITでは、SUBSYS
モードのみがサポートされます。Micro Focus COBOLでは、次の7つのCOBOLモードがサポートされます。
デフォルト値はMF_SUBSYS
です。詳細は、「環境変数」を参照してください。
これらのCOBOLモードは、環境変数ARTIMS_COBOL_MODE
で設定するか、または各BMP/MPP
サーバーのUBBCONFIG
ファイルのCLOPT
で設定します。CLOPT
のパラメータは-m COBOL_MODE
です(たとえば、-m MF_SUBSYS
)。
COBOLモード構成の組合せのルールとして、次の4つがあります。
ART IMSでは、Micro Focus COBOLおよびCOBOL-IT COBOLでユーザーCOBOLプログラムのデバッグがサポートされます。animツールを使用してMicro Focus COBOLプログラムをデバッグし、deetツールを使用してCOBOL-IT COBOLプログラムをデバッグできます。デバッグする必要のあるすべてのトランザクション/プログラムを構成ファイルimsdebug.desc
で構成できます。デバッグできるのは、このファイルで構成されたトランザクション/プログラムのみです。この構成ファイルを変更してから、imsadmin
ツールを使用してオンライン・システムでそれを有効にできます。
COBOLのデバッグをサポートするには、MFでデバッグ情報を出力するようにすべてのCOBOLプログラムをコンパイルする必要があり、.idy
ファイルが存在する必要があります。
Micro Focus COBOLを使用してデバッグするには、次の手順を実行します。
注意: | デバッグが終了したら、状況に応じて、デバッグしたプログラムをデタッチする必要があります。 |
COBOL-IT COBOLを使用してデバッグするには、次の手順を実行します。
${ART_IMS_CONFIG}
でimsdebug.desc
構成ファイルを作成または変更します。 tmshutdown
/tmboot
を使用してサーバーを再起動するか、"imsadmin
"を使用してオンライン・システムで構成を再ロードします。vncserver
を使用してVNC環境を開始できます。 VNC xtermで、deet -p yourDEBUGID
コマンドを使用してデバッグを開始します。これにより、DeetグラフィックUIが起動され、COBOLプログラムがアタッチされます。
注意: | デバッグが終了したら、状況に応じて、デバッグしたプログラムをデタッチする必要があります。 |