リファレンス・ガイド

     前  次    新規ウィンドウで目次を開く    PDFとして表示 - 新規ウィンドウ  Adobe Readerを取得 - 新規ウィンドウ
コンテンツはここから始まります

Oracle Tuxedo Application Runtime for IMSリファレンス・ガイド

Oracle Tuxedo Application Runtime for IMS (Tuxedo ART for IMS)リファレンス・ガイドでは、Tuxedo ART for IMSソフトウェアとともに配布されるシステム・プロセスおよびコマンドについて説明します。

この章の内容は次のとおりです。

 


ARTIMSユーティリティ

表 1は、ARTIMSユーティリティの一覧を示しています。

表1 ARTIMSユーティリティ
名前
説明
ARTICTLサーバーのバイナリ制御ブロック・ジェネレータ
ARTIMSに対してMicroFocusとCOBOL-ITの間を切り替えるために使用されるシェル・スクリプト。
ARTIBMPサーバーをアクティブ化するために使用されるユーティリティ。
z/OS上のCプログラムを、ART IMSで実行可能な形式に変換するために使用されるユーティリティ。
オープン・システム上のツールであり、z/OS上のODBAプロキシを停止するために使用されます。
z/OS上のODBAプロキシを停止するために使用されるJCL。

 


MFSGEN

名前

MFSGEN: ARTICTLサーバーのバイナリ制御ブロック・ジェネレータ。

説明

このユーティリティは、ART MFSの開発に使用します。ユーザーが記述した制御文をMFSバイナリ制御ブロックに変換します。

図 1は、MFSGENワークフローを示しています。

図 1 Mfsgenワークフロー

Mfsgenワークフロー

形式

mfsgen 	[-options…] 	files

オプション

コマンド・オプションは次のとおりです。

-l

入力ファイルごとにリスト(.lst)ファイルを生成します。

-d dir

バイナリ制御ブロック・ファイル(*.MSGおよび*.FMT)およびリスト・ファイルなどすべての出力ファイルを格納するターゲット・ディレクトリとして既存のディレクトリを指定します。 これは、デフォルトで<current directory>/formatです。

ファイル

MFSGENユーティリティで、次のファイルが作成されます。

FILE.MSG

MIDおよびMOD制御ブロックのバイナリ・ファイルの1つのカテゴリ。名前"FILE"は、入力MSG定義文から取得されます。

FILE.FMT

DIFおよびDOF制御ブロックのバイナリ・ファイルの1つのカテゴリ。名前"FILE"は、入力FMT定義文から取得されます。

FILE.lst

ソース・リスト・ファイル。ここで、"FILE"は、入力ファイルのベース名と同じです。

戻りコード

0

正常終了。すべての入力ファイルは正常に解析され、エラーも警告もなく制御ブロックに変換されました。

1

正常終了しましたが警告が生成されました。すべての入力ファイルは正常に解析され、制御ブロックに変換されましたが、警告があります。

2

失敗。解析または制御ブロックへの変換に一部またはすべての入力ファイルが失敗しました。

ソース・ファイルfile.mfsを変換するには、次のコマンドを使用します。

$mfsgen file1.mfs  file.mfs   file3.mfs
注意: 入力ファイル.mfs接尾辞は必須ではありません。

 


chgcobol.sh

名前

chgcobol.sh: ARTIMSに対してMicroFocusとCOBOL-ITの間を切り替えるために使用されるシェル・スクリプト。

形式

chgcobol.shは、IMS_RTルート
chgcobol.sh [mf|cit]の下で実行する必要があります。

説明

MicroFocusとCOBOL-ITの両方を同じホストにインストールでき、相互に切り替えることができます。MicroFocusとCOBOL-ITの間の切り替えには、chgcobol.shを使用します。COBOLランタイムに切り替えるには、最初にARTIMSアプリケーションを停止する必要があります。

chgcobol.shには、次のオプションを指定できます。

オプションなし

現在のCOBOL環境を表示します。

cit

COBOLランタイムをCOBOL-ITに変更します。

mf

COBOLランタイムをMicroFocusに変更します。

./chgcobol.sh

出力: 現在のCOBOLランタイムはCOBOL-ITです。

./chgcobol.sh mf

出力: COBOLランタイムはMicroFocusに変更されました。

 


DFSRRC00

名前

DFSRRC00: ARTIBMPまたはARTIBMPTサーバーをアクティブ化するために使用されるユーティリティ。

説明

DFSRRC00は、DFSRRC00入力を待機しているARTIBMP/ARTIBMPTサーバーをアクティブ化するために使用されます。DFSRRC00パラメータは、ワークベンチによってJCLから変換されたスクリプトから渡された文字列です。現在、文字列に含まれるサブパラメータでサポートされているものは、5つのみです("BMP, ${MBR}, ${PSB}, ${IN}, ${CKPTID}")。文字列内の残りのサブパラメータは無視されます。

注意: 将来の使用に備えて、16個の追加のパラメータが予約されていますが、現在サポートされていません。

形式:

DFSRRC00 "BMP,${MBR},${PSB},${IN},,,,,${CKPTID},,,,,,,,,,,,"

パラメータ

BMP

ハードコード化された文字列。

${MBR}

呼び出されるバッチ・プログラムを表し、標準BMPとトランザクション指向BMPの両方によって必要とされます。

${PSB}

プログラムのPSB名を表します。

{IN}

トランザクション指向BMPプログラムのトランザクション/キューの名前を表します。

{CKPTID}

XRSTで使用されるチェック・ポイントIDを表します。
注意: ${MBR}が空の場合、DFSRRC00はエラーによってすぐに終了します。
注意: ${IN}が空の場合、ARTIBMP/ARTIBMP_ORAにリクエストが送信され、BMPプログラムが呼び出されます。
注意: ${IN}が空でない場合、ARTIBMPTにリクエストが送信され、トランザクション・コードが${IN}であるトランザクション指向BMPプログラムが呼び出されます。

 


prepro-ims.pl

名前

prepro-ims.pl: z/OS上のCプログラムを、ART IMSで実行可能な形式に変換するために使用されるユーティリティ。

説明

prepro-ims.plは、z/OS上のCプログラムを、ART IMSで実行可能な形式に変換するために使用されます。ファイルの変換に失敗した場合、障害情報および障害の原因となったソース・ファイルの行がstderrに出力されます。完了すると、サマリーがstdoutに報告されます。

処理ルールは次のとおりです。

注意: prepro-ims.plは、メインフレームからオープン・システムへの一部の汎用Cの移植を処理できません。

制限事項

  1. 1つのプログラムで複数のソース・ファイルが必要な場合、プリプロセッサは、メイン・エントリが含まれているソース・ファイルに対する処理のみを実行します。ユーザーは、makefile を手動で変更し、他の従属Cファイルを追加する必要があります。
  2. 関数ポインタとしてのctdli/aibtdliの呼出しはサポートされていません。
  3. 有効なブラグマ記号が付いている行はコメントアウトされます。
  4. ソース・ファイルのディレクトリは、宛先ソース・ファイルのものと異なる必要があります。
  5. 入力がディレクトリである場合、そのサブディレクトリは処理されません。
  6. 順序番号が含まれている列73-80はサポートされていません。これらの列は、空白に置換するか空のままにする必要があります。

依存関係

  1. 生成されたMakefileにはgmakeを使用する必要があります。
  2. 変換する前に、Cソース・コードがUNIX形式であることを確認する必要があります。
  3. IMSによって提供されるいくつかのヘッダー・ファイル(ims.hなど)をメインフレームからオープン・システムにコピーする必要があります。

形式:

prepro-ims.pl -i source-file -o dest-file [-m yourmakefile]

パラメータ

prepro-ims.plのパラメータ、終了コード、およびサポート・モードを、それぞれ表 3表 4および表 5に示します。

表 3 prepro-ims.plのパラメータ
オプション名
値の範囲
コメント
-i
既存のファイルまたはディレクトリ
IBM IMSアプリケーション・プロジェクトからの元のCプログラム・ファイルです。ファイル名の接尾辞は、.cまたは.hである必要があります。また、*や?などの単純なワイルドカードもサポートされています。
-o
ファイルまたはディレクトリ
書込み先の宛先ファイルまたはディレクトリです。ディレクトリが存在しない場合は作成されます。
-m
ファイル
宛先プログラム用に生成されたMakefileです。宛先ディレクトリ内に配置されています。このファイル名は、相対パスまたは絶対パスであってはなりません。

表 4 終了コード
終了コード
意味
コメント
0
成功
 
1
失敗
一般的な失敗
2
失敗
無効な引数

表 5 サポート・モード
-i
-o
サポートの有無
ディレクトリ
ディレクトリ
あり
ディレクトリ1/ファイル1
ディレクトリ2/ファイル2
あり
ディレクトリ1/ファイル1
ディレクトリ2
あり
ディレクトリ1/ファイル1
ディレクトリ2/ファイル2
ディレクトリ3
あり
ソース・ファイルのディレクトリは、ディレクトリ3とは異なる必要があります。

ソース・プログラムはリスト1に類似したものになります。

リスト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);
..
}

 


odbastop

名前

odbastop: z/OS上のODBAプロキシを停止するために使用されるオープン・システム・ツール。

説明

オープン・システム上でodbastopを使用して、z/OS上で実行されているODBAプロキシを停止します。

形式

odbastop -l host -p port -c cmd

パラメータ

host

ODBAプロキシ・ホスト名またはIPv4アドレス。

port

ODBAリクエストを受信するためのODBAプロキシ・ポート。

cmd

SHUTDOWNのみをサポート。

 


STOPROXY(z/OS)

名前

STOPROXY: z/OS上のODBAプロキシを停止するために使用します。

説明

z/OS上でSTOPROXYを使用して、z/OS上で実行されているODBAプロキシを停止します。

形式:

USER.ODBA.JCL(STOPROXY) JCLを変更し、それを送信してODBAプロキシを停止します。詳細は、Oracle Tuxedo Application Runtime for IMSユーザーズ・ガイドのODBAプロキシの使用方法に関する項を参照してください。

 


ARTIMS DL/Iサポート

ARTIMSでは、DL/Iは、動的にロードされるライブラリのグループ内に実装されます。サポート対象のDL/I機能は、次のとおりです。

サポート対象のDL/Iインタフェース

表 6は、サポート対象のDL/Iインタフェースを示しています。

表 6 サポート対象のDL/Iインタフェース
インタフェース名
説明
OS/39におけるIMS/TMでのDL/I呼出しの0エントリ。
AIBTDLIは、DL/Iレイヤー全体のエントリ関数です。CBLTDLIとの基本的な違いは、AIBTDLIは、制御情報をやり取りするための最初のパラメータとしてAIBマスクを使用することです。
CTDLIは、DLIライブラリ全体のエントリ関数です。DLIへのリクエストはすべて、この関数を呼び出すことで渡されます。CTDLIは、Cプログラムからのみ呼び出すことができます。

 


CBLTDLI

名前

CBLTDLI: OS/39におけるIMS/TMでのDL/I呼出しの0エントリ。

説明

ARTIMSでは、CBLTDLIは、DLIライブラリのエントリとして機能する関数です。CBLTDLIは、それに渡された関数コードに基づいて適切な関数を呼び出します。

パラメータ

関数コード(GUなど)、I/O PCBまたは代替PCB、I/O領域、MOD

 


AIBTDLI

名前

AIBTDLI: DL/Iレイヤー全体のエントリ関数。

説明

AIBTDLIは、z/OSにおけるIMS/TMでのDL/I呼出しのエントリです。ARTIMSでは、AIBTDLIは、DL/Iライブラリのエントリとして機能する関数です。AIBTDLIは、AIBマスクで指定されているPCB名に従ってPCBアドレスを取得し、見つかったPCBアドレスとともにそれに渡された関数コードに基づいて適切な関数を呼び出します。

パラメータ

関数呼び出し(GUなど)、AIBマスク、I/O領域、入力または出力バッファ。表 7は、AIBマスク・パラメータを示しています。

表 7 AIBマスク・パラメータ
名前
説明
サポート
AIBID
X(8)
AIB識別子、"DFSAIBbb"に設定されている必要があります。これは、入力専用です。
はい
AIBLEN
X(4)
AIBの長さ、AIBマスクの長さ。これはアプリケーション・プログラムで適切に設定する必要があり、最小値は128です。これは、入力専用です。
はい
AIBSFUNC
X(8)
AIBサブ関数、いくつかのDL/I呼出しによって必要とされるサブ関数。必要な場合は、アプリケーション・プログラムによって適切に設定されることが必要です。
あり
IMSでは、INQYサブ関数のみがサポートされています。
AIBRSNM1
X(8)
このフィールドにはPCB名が入ります。これは、プログラムによって適切に指定される必要があります。その設定については、「AIBTDLI」の項を参照してください。
はい
RESERV1
X(16)
予約済の16バイト。
いいえ
AIBOALEN
X(4)
AIB出力領域の長さ、AIBTDLIに対して指定されているI/O領域の長さ。
はい
AIBOAUSED
X(4)
AIB出力領域の使用済の長さ、I/O領域における返されたデータの長さ。これは、そのI/O領域が出力バッファとして使用されている場合にのみ有効です。
はい
RESERV2
X(12)
予約済の12バイト。
いいえ
AIBRETRN
X(4)
AIB戻りコード、AIBTDLIの戻りコード
呼出し。
一部サポートされています。
現在、このフィールドの設定は次のシナリオでのみサポートされています。
  1. INQYサブ関数。
  2. DBPCB(GSAMデータベースを除く)上のDLI呼出し。
その他のシナリオでは、処理に失敗した場合、このフィールドは0x0900に設定されます。関連するPCBステータスを確認する必要があります。
処理が正常に終了した場合、このフィールドは0x0000に設定されます。
AIBREASN
X(4)
AIB理由コード、AIBTDLI呼出しの理由コード。
一部サポートされています。
現在、このフィールドの設定は次のシナリオでのみサポートされています。
  1. NQYサブ関数。
  2. DBPCB(GSAMデータベースを除く)上のDLI呼出し。
処理が正常に終了した場合、このフィールドは0x0000に設定されます。
AIBERRXT
X(4)
AIB拡張エラー・コード、追加のエラー情報が入ります。
いいえ
AIBRSA1
X(4)
AIBリソース・アドレス、これは、AIBRSNM1で指定されているPCB名に対応するPCBアドレスが格納される出力フィールドです。ART/IMS 64ビットでは、PCBアドレスの長さは8バイトであり、このフィールドには実際に8バイトが格納されます(次の予約済領域の最初の4バイトから取得された追加の4バイトを含む)。
あり
64ビット・プラットフォームでは、カスタマは、正しいPCBのアドレスを取得するためにAIBRSA1だけでなくRESERV3の最初の4バイトを使用する必要があります。
RESERV3
X(48)
ART/IMS 64ビットでは、その最初の4バイトが、AIBRSA1とともに返されたPCBアドレスを格納するために借用されるため、それを他の目的には使用できません。
いいえ

AIBマスク・フィールドAIBRSNM1におけるPCB名の指定の詳細なルールは、次のとおりです。

I/O PCB

I/O PCBの名前は、IOPCBbbbとして指定する必要があります。

代替PCB

代替PCBの名前は、$appname.psb構成ファイル内のlabel=で構成する必要があり、AIBマスクで適切に指定されている必要があります。各代替PCBの名前(ラベル)は、1つのPSB内(つまり、1つの$appname.psbファイル内)で一意である必要があります。

DB PCB

DB PCBの名前は、$appname.psb構成ファイル内のlabel=で構成する必要があり、AIBマスクで適切に指定されている必要があります。各DB PCBの名前(ラベル)は、1つのPSB内(つまり、1つの$appname.psbファイル内)で一意である必要があります。

 


CTDLI

名前

CTDLI: DL/Iレイヤー全体のエントリ関数。

説明

ARTIMSでは、CTDLIは、DLIライブラリのエントリとして機能する関数です。CTDLIは、それに渡された関数コードに基づいて適切な関数を呼び出します。

パラメータ

関数呼び出し(GUなど)、PCB (I/O PCBまたは代替PCB)、I/O領域、入力または出力バッファ。

op引数は、実行するDL/I関数を指定します。ctdli()呼出し形式は、選択した関数によって異なります。詳細は、「CBLTDLI」を参照してください。

注意: CTDLIを使用する場合、SSAパラメータは、ポインタ・パラメータである必要があります。

メッセージ処理

DL/Iは、受信メッセージの処理およびIMS/TMでのPCBに対する送信メッセージの構築を担当します。ARTIMSでは、Tuxedoインフラストラクチャはメッセージ・キューおよびメッセージ配信を担当するため、受信メッセージの処理には現在のリクエスト・メッセージのみが含まれます。DLIライブラリは、COBOLアプリケーションからのリクエストに基づいて最初および後続のセグメント(FMLフィールド)を取得できます。送信メッセージを構築するために、各PCBは中間記憶域として関連するメッセージ・バッファ(FML)を持っており、メッセージが送信される前にそのメッセージ・データがそこに格納されます。メッセージ処理用の詳細なAPIを、表 8に示します。

表8 ARTIMS DL/Iのプロセスおよびコマンド
名前
説明
IMS/TM環境のメッセージ・キューから最初のセグメントを取得するために使用されます。
IMS/TM環境のメッセージ・キューから後続のセグメントを取得するために使用されます。
IMS/TMにおいて指定されているPCBに関連付けられているメッセージにセグメントを追加するために使用されます。
低速PCBでメッセージが完了したことをIMS/TMに通知するために使用されます。
IMS/TMにおいてPCB内の宛先を変更するために使用されます。
IMSコマンドを送信または発行し、応答メッセージの最初のセグメントを取得します。
CMDコマンドの応答メッセージの2番目および後続のセグメントを取得します。

 


GU

名前

GU: IMS/TM環境のメッセージ・キューから最初のセグメントを取得するために使用されます。

説明

GUは、メッセージ・キューの最初のセグメントを取得するために使用されます。会話型トランザクションの場合、メッセージの最初のセグメントは常にSPAです。 ARTIMSでは、シミュレートされたGU呼出しが、処理中のメッセージのFMLバッファの最初のフィールドを取得するために使用されます。会話型トランザクションの場合、GU呼出しは、常にSPAのフィールドを取得し、それ以外の場合はユーザー・データの最初のフィールドを取得します。

形式

I/O PCB or AIB, I/O Area

パラメータ

I/O PCB

リクエストのソースを表すPCBを指すポインタ。

AIB

呼出しに使用されるアプリケーション・インタフェース・ブロック(AIB)を指定します。このパラメータは、入出力パラメータです。次のフィールドは、AIB内で初期化されている必要があります。

AIBID Eyecatcher。

この8バイトのフィールドには、DFSAIBbbを含める必要があります。

AIBLEN AIBの長さ。

このフィールドには、アプリケーション・プログラムによって取得されたAIBの実際の長さを含める必要があります。

AIBRSNM1リソース名。

この8バイトの左揃えのフィールドには、PCB名IOPCBbbbを含める必要があります。

AIBOALEN I/O領域の長さ。

このフィールドには、呼出しリストに指定されているI/O領域の長さを含める必要があります。

I/O領域

最初のセグメントが格納されるバッファを指すポインタ。

結果(ステータス・コード)

'bb': 成功(2つの空白)。

'AB': セグメントI/O領域が指定されていません。

'AD': 関数パラメータが無効です。関数呼出しがCBLTDLIに指定されていないか、無効な関数呼び出し名がCBLTDLIに指定されています。

'QC': 入力メッセージがありません。

'QF': セグメントが5文字未満です。

 


GN

名前

GN: IMS/TM環境のメッセージ・キューから後続のセグメントを取得するために使用されます。

説明

最後のセグメントが取得された後、GN呼出しは、QDステータス・コードがPCBで返されるという結果になります。ARTIMSでは、シミュレートされたGN呼出しが使用されて、処理中のメッセージのFMLバッファで次のフィールドが取得されます。

形式

I/O PCB or AIB, I/O Area

パラメータ

SI/O PCB

リクエストのソースを表すPCBを指すポインタ。

AIB

呼出しに使用されるアプリケーション・インタフェース・ブロック(AIB)を指定します。このパラメータは、入出力パラメータです。次のフィールドは、AIB内で初期化されている必要があります。

AIBID Eyecatcher。

この8バイトのフィールドには、DFSAIBbbを含める必要があります。

AIBLEN AIBの長さ。

このフィールドには、アプリケーション・プログラムによって取得されたAIBの実際の長さを含める必要があります。

AIBRSNM1リソース名。

この8バイトの左揃えのフィールドには、PCB名IOPCBbbbを含める必要があります。

AIBOALEN I/O領域の長さ。

このフィールドには、呼出しリストに指定されているI/O領域の長さを含める必要があります。

I/O領域

最初のセグメントが格納されるバッファを指すポインタ。

結果(ステータス・コード):

'bb': 成功(2つの空白)。

'AB': セグメントI/O領域が指定されていません。

'AD': 関数パラメータが無効です。関数呼出しがCBLTDLIに指定されていないか、無効な関数呼び出し名がCBLTDLIに指定されています。

'QD': セグメントはこれ以上ありません。

 


ISRT

名前

ISRT: IMS/TMにおいて指定されているPCBに関連付けられているメッセージにセグメントを追加するために使用されます。

説明

ARTIMSでは、シミュレートされたISRT呼出しは、指定されているPCBに関連付けられているFMLバッファに、CARRAYタイプのフィールドを追加するために使用されます。会話型トランザクションの場合、最初のセグメントは常にSPAです。

形式

I/O PCB or alternate PCB or AIB, I/O Area, MOD

パラメータ

I/O PCBまたは代替PCB

送信メッセージの宛先を表すPCBを指すポインタ。

AIB

呼出しに使用されるアプリケーション・インタフェース・ブロック(AIB)を指定します。このパラメータは、入出力パラメータです。次のフィールドは、AIB内で初期化されている必要があります。

AIBID Eyecatcher。

この8バイトのフィールドには、DFSAIBbbを含める必要があります。

AIBLEN AIBの長さ。

このフィールドには、アプリケーション・プログラムによって取得されたAIBの実際の長さを含める必要があります。

AIBRSNM1リソース名。

この8バイトの左揃えのフィールドには、PCB名IOPCBbbb (TP PCBが使用される場合)、または代替PCBの名前(代替PCBが使用される場合)を含める必要があります。

AIBOALEN I/O領域の長さ。

このフィールドには、呼出しリストに指定されているI/O領域の長さを含める必要があります。

I/O領域

送信されるセグメントが格納されるバッファを指すポインタ。会話型トランザクション・コードの場合、最初のセグメントはSPAである必要があります。

MOD

出力メッセージに使用されます。8バイトのMOD名は左揃えにし、必要に応じて空白を埋め込む必要があります。これは、メッセージへの最初のセグメントにのみ付けることができます。
MODがDFS.EDTまたはDFS.EDTNと等しい場合、メッセージはMFS書式設定を省略します。出力でMFSが省略された場合、アプリケーション・プログラムが3270データ・ストリーム全体(コマンド・コードで始まり、最後のデータ・バイトで終了する)の構築を担当します。

結果(ステータス・コード):

'bb': 成功(2つの空白)。

'AB': セグメントI/O領域が指定されていません。

'AD': 関数パラメータが無効です。関数呼出しがCBLTDLIに指定されていないか、無効な関数呼び出し名がCBLTDLIに指定されています。

'QF': セグメントが5文字未満です。

'QH': PCBに宛先名がありません。

'XA': リクエストに応答した後に、そのリクエストを別のトランザクションに転送しようとしています。

'XB': リクエストを別のトランザクションに転送した後に、それに応答しようとしています。

'XC': Z1ビットが0ではありません。それは予約済であり、常に0として保持されます。

 


PURG

名前

PURG: そのメッセージが低速PCBに対して完了したことをIMS/TMに通知するために使用されます。

説明

PURG呼出しは正常ですが、送信されなかったか、メッセージが高速PCBに対してただちに送信されました。

I/O領域がPURG呼出しに提供されている場合、PURG呼出しもISRT呼出しとして機能します。つまり、PURGは、PCBに関連付けられている(現在の)メッセージを完了としてマークし、I/O領域のデータを次のメッセージの最初のセグメントとしてISRTします。最終結果は、ISRT呼出しが後に続くI/O領域のないPURG呼出しと同じです。

ARTIMSでは、シミュレートされたPURG呼出しは、低速PCBに対して関連付けられたメッセージが完了したとマークするため、または高速PCBに対して関連付けられたメッセージを送信するために使用されます。ただし、I/Oバッファが指定されている場合は、単一のPCBに対する複数の保留メッセージはサポートされていないため、それは無視され、したがってMODも無視されます。ただし、ステータス・コードはカスタマ・プログラムによってチェックされるため、この場合、特別なステータス・コードは追加されません。

形式

I/O PCB or alternate PCB or AIB, I/O Area (optional), MOD (optional)

パラメータ

I/O PCBまたは代替PCB

送信メッセージの宛先を表すPCBを指すポインタ。

AIB

呼出しに使用されるアプリケーション・インタフェース・ブロック(AIB)を指定します。このパラメータは、入出力パラメータです。次のフィールドは、AIB内で初期化されている必要があります。

AIBID Eyecatcher。

この8バイトのフィールドには、DFSAIBbbを含める必要があります。

AIBLEN AIBの長さ。

このフィールドには、アプリケーション・プログラムによって取得されたAIBの実際の長さを含める必要があります。

AIBRSNM1リソース名。

この8バイトの左揃えのフィールドには、PCB名IOPCBbbb (TP PCBが使用される場合)、または代替PCBの名前(代替PCBが使用される場合)を含める必要があります。

AIBOALEN I/O領域の長さ。

このフィールドには、呼出しリストに指定されているI/O領域の長さを含める必要があります。

I/O領域

指定されている場合、次のメッセージの最初のセグメントとして挿入されるバッファを指すポインタです。

MOD

出力メッセージに使用されます。8バイトのMOD名は左揃えにし、必要に応じて空白を埋め込む必要があります。

結果(ステータス・コード):

'bb': 成功(2つの空白)。

'AD': 関数パラメータが無効です。関数呼出しがCBLTDLIに指定されていないか、無効な関数呼び出し名がCBLTDLIに指定されています。

'A3': 宛先が設定されていないが、それに対してPURGが呼び出される変更可能なTP PCB。

 


CHNG

名前

CHNG: IMS/TMにおいてPCB内の宛先を変更するために使用されます。

説明

ARTIMSでは、シミュレートされたCHNGが、代替PCBの別のサービス名(のみ)を指定します。宛先トランザクション名は、8バイト以下であり、その制限を超えている場合、それは8までに切り捨てられます。後続の空白も削除されます。トランザクション名は、それがimstrans.descファイルに存在し、かつ正しい構成である場合に、有効として評価されます。

1つのTuxedoドメイン内の1つのトランザクション・コードが、異なるドメインの他のサービスに切り替えるように設計されている場合、切り替えられるトランザクション・コードは、[imstrans.desc]構成ファイルで有効なトランザクションとして定義されている必要がありますが、それをそのクラスの制御で公開しないでください。

プログラム切替えの場合、新しいターゲットは別のトランザクション・コードです。会話型プログラム切替えの場合、ARTIMSでは、元のコードおよびターゲット・コードのspaサイズに制限はありません。

形式

Alternate PCB or AIB、宛先トランザクション・コード

パラメータ

I/O PCB

送信メッセージの宛先を表すPCBを指すポインタ。宛先名は、別のトランザクション(サービス)の名前を表す文字列です。

AIB

呼出しに使用されるアプリケーション・インタフェース・ブロック(AIB)を指定します。このパラメータは、入出力パラメータです。次のフィールドは、AIB内で初期化されている必要があります。

AIBID Eyecatcher。

この8バイトのフィールドには、DFSAIBbbを含める必要があります。

AIBLEN AIBの長さ。

このフィールドには、アプリケーション・プログラムによって取得されたAIBの実際の長さを含める必要があります。

AIBRSNM1リソース名。

この8バイトの左揃えのフィールドには、変更可能な代替PCBの名前を含める必要があります。

AIBOALEN I/O領域の長さ。

このフィールドには、呼出しリストに指定されているI/O領域の長さを含める必要があります。

結果(ステータス・コード):

'bb': 成功(2つの空白)。

'AD': 関数パラメータが無効です。宛先が指定されていません。関数呼出しが無効です。

'A1': PCBが有効ではありません。

'A2': PCBが変更可能でないか、ISRT操作がすでに実行されています。

'QH': 代替PCBに指定するトランザクションが空白であるか無効です。

 


CMD

名前

CMD: プログラムでIMSコマンドを発行可能にするために使用されます。

説明

IMSコマンドを送信または発行し、応答メッセージの最初のセグメントを取得します。

CMDは、IMSコマンドを発行するために使用されます。これは、すべてのサポートされているIMSコマンドを処理できると想定されるインタフェースにIMSコマンドを転送します。CMD呼出しは、そのインタフェースによってIMSコマンドが処理されるまで待ち、その応答メッセージの最初のフィールドを取得します。

制限事項

/DIS TRAN、/DIS PGM、および/DIS USERコマンドのみがサポートされています。これらのコマンドがCMD APIによって発行されると、関連するタイトル・セグメントがI/O領域を介して返され、それには、後続のセグメントの各フィールドの意味が記述されています。

- /DISP TRAN: Tuxedoで取得可能なトランザクション関連情報がI/O領域内に返されます。返されるセグメントは(llzz部分を除く)、CUR_TRAN CUR_QCNTです。

- /DISP user: Tuxedoで取得可能なユーザー関連情報が返されます。返されるセグメントは(llzz部分を除く)、CUR_USER CUR_TRANです。

- /DISP PGM: Tuxedoで取得可能なプログラム関連情報が返されます。返されるセグメントは(llzz部分を除く)、CUR_PGM CUR_TRANです。

注意: 現在、前述の3つのコマンドでは他のすべてのパラメータは無視されます。前述の3つのサポートされているもの以外のコマンドがCMD呼出しによって発行されると、応答セグメントなしで成功ステータスが返されます。

形式

I/O PCBまたはAIB、I/O領域

パラメータ

I/O PCB

リクエストのソースを表します。

AIB

呼出しに使用されるアプリケーション・インタフェース・ブロック(AIB)を指定します。このパラメータは、入出力パラメータです。次のフィールドは、AIB内で初期化されている必要があります。

AIBID Eyecatcher。

この8バイトのフィールドには、DFSAIBbbを含める必要があります。

AIBLEN AIBの長さ。

このフィールドには、アプリケーション・プログラムによって取得されたAIBの実際の長さを含める必要があります。

AIBRSNM1リソース名。

この8バイトの左揃えのフィールドには、PCB名IOPCBbbbを含める必要があります。

AIBOALEN I/O領域の長さ。

このフィールドには、呼出しリストに指定されているI/O領域の長さを含める必要があります。

I/O領域

IMSコマンドとそのパラメータを含み、最初のセグメントが格納されるバッファを指すポインタ。I/O領域の一般的な形式は次のとおりです。
LLZZ/verb KEYWORD1 P1 KEYWORD2 P2, P3. コメント
LL: LLZZなどコマンド・テキストの長さが入る2バイト・フィールド。
ZZ: IMS用に予約済の2バイト・フィールド。
/: IMSコマンドが後に続くことを示します。
verb: 発行したコマンド。
KEYWORDx: 発行したコマンドに適用されるキーワード。
Px: 指定したキーワードのパラメータ。
. (ピリオド): コマンドの終わり。

結果(ステータス・コード)

'bb': 成功(2つの空白)。ただし、応答セグメントはありません。

'CC': 1つまたは複数の応答セグメントが生成されました。

'AB': セグメントI/O領域が指定されていません。

'CH': AOIコマンド・インタフェースがシステム・エラーを検出し、そのコマンドを処理できなかったため、発行したCMD呼出しはIMSによって無視されます。IMSの処理は続行されます。

 


GCMD

名前

GCMD: CMDコマンドの応答メッセージの2番目および後続のセグメントを取得します。

説明

GCMDは、アプリケーション・プログラムによってCMD呼出しを使用してIMSコマンドが処理されるときに、IMS TMから2番目および後続の応答セグメントを取得します。返されるセグメントそれぞれには、前述の"CMD"呼出しのタイトル・セグメントに応じたフィールドが含まれます。最後のセグメントが取得された後に、GCMD呼出しは、"QD"ステータス・コードがPCBで返されるという結果になります。

形式

I/O PCB or AIB, I/O Area

パラメータ

I/O PCB

リクエストのソースを表すPCBを指すポインタ。

AIB

呼出しに使用されるアプリケーション・インタフェース・ブロック(AIB)を指定します。このパラメータは、入出力パラメータです。次のフィールドは、AIB内で初期化されている必要があります。

AIBID Eyecatcher。

この8バイトのフィールドには、DFSAIBbbを含める必要があります。

AIBLEN AIBの長さ。

このフィールドには、アプリケーション・プログラムによって取得されたAIBの実際の長さを含める必要があります。

AIBRSNM1リソース名。

この8バイトの左揃えのフィールドには、PCB名IOPCBbbbを含める必要があります。

AIBOALEN I/O領域の長さ。

このフィールドには、呼出しリストに指定されているI/O領域の長さを含める必要があります。

I/O領域

最初のセグメントが格納されるバッファを指すポインタ。

結果(ステータス・コード):

'bb': セグメントは正常に取得されました(2つの空白)。

'AB': セグメントI/O領域が指定されていません。

'QD': セグメントはこれ以上ありません。

'QE': CMDの前のGCMDリクエスト。

データベース処理

DLIライブラリは、MPPまたはBMPプログラムから発行されたデータベース処理を実行します。これは、指定されたセグメント検索基準に応じた1つの特定のセグメントの取得および保持、特定のセグメントの更新、特定の位置へのセグメントの挿入、特定のセグメントの削除などを実行できます。データベース処理の詳細なAPIを、表 9に示します。

表 9 データベース処理のプロセスとコマンド
名前
説明
現在の位置(存在する場合)またはデータベースの先頭から基準(存在する場合)を満たす最初のセグメントを取得(および保持)します。
現在の位置から基準(存在する場合)を満たす次のセグメントを取得(および保持)します。
確立した親の依存セグメントから基準を満たす次のセグメントを取得(および保持)します。
既存のセグメント・タイプの新しいオカレンスを階層型データベースに挿入するために使用されます。
既存のセグメントを更新するために使用されます。
セグメントとその依存関係を削除するために使用されます。
セグメント内のフィールドにアクセスするために使用されます。
修飾位置(POS)呼出しは、特定の順次従属セグメントの位置を取得するために使用されます。非修飾POSは、順次従属セグメント(SDEP)データの論理的な終わりを指します。
GSAMデータベースを明示的に開くために使用されます。
GSAMデータベースを明示的に閉じるために使用されます。

 


GU/GHU

名前

GU/GHU: 現在の位置(存在する場合)またはデータベースの先頭から基準(存在する場合)を満たす最初のセグメントを取得(および保持)します。

説明

GUは、指定されているSSAを満たし、順次処理の開始位置を確立する最初のセグメントを取得するために使用されます。GUの検索開始位置は、データベースの先頭(つまり、ルート・レベル)です。呼出しを満たす最初のセグメントを見つけた後、現在の位置が順次処理の開始位置となります。

GHUは、GUに加えて、順次書込み操作(置換、削除など)のためにセグメントをロックします。GHUはGSAMには適用されません。

形式

DB PCB,GSAM PCBまたはAIB, I/O Area, and SSA list (optional)またはRSA (Mandantory for GSAM)

パラメータ

DB PCB

すべてのDB関連情報(特にDB名)が入ります。

AIB

呼出し用のAIBを指定します。このパラメータは、入出力パラメータです。
これらのフィールドは、AIB内で初期化されている必要があります。

AIBID Eyecatcher。

この8バイトのフィールドには、DFSAIBbbを含める必要があります。

AIBLEN AIBの長さ。

このフィールドには、アプリケーション・プログラムによって取得されたAIBの実際の長さを含める必要があります。

AIBRSNM1リソース名。

この8バイトの左揃えのフィールドには、DB PCBの名前を含める必要があります。

AIBOALEN I/O領域の長さ。

このフィールドには、呼出しリストに指定されているI/O領域の長さを含める必要があります。

I/O領域

返されるセグメントを受け取るために使用されます。

SSA:

SSAの数はmin(階層レベルの数、15)以下です

RSA:

レコード検索引数を含むプログラムの領域を指定します。この必須の入力パラメータはGSAMのみに使用されます。
注意: RSA "00010000"により、GSAMの最初に位置がリセットされます。

 


GN/GHN

名前

GN/GHN: 現在の位置から基準(存在する場合)を満たす次のセグメントを取得(および保持)します。

説明

GNは、現在の位置から検索して、指定されているSSAを満たす次のセグメントを取得するために使用されます。セグメントを見つけた後、順次処理のために現在の位置が更新されます。DBに現在の位置が確立されていない場合、GNGUのように動作します(つまり、先頭から検索します)。階層型DBにおける順次取得は、常に上から下、かつ左から右(つまり、ツリーの前順取得)です。

GHNは、GNに加えて、返されるセグメントをそれに対する順次書込み操作のためにロックします。GHNGSAMには適用されません。

形式

DB PCB,GSAM PCB or AIB, I/O Area, and SSA list (optional) or RSA(opitional for GSAM)

パラメータ

GNのパラメータの使用方法と制限事項は、GUに似ています。

RSA:

レコードのRSAが返されるプログラムの領域を指定します。この出力パラメータはGSAMのみに使用され、オプションです。

 


GNP/GHNP

名前

GNP/GHNP: 確立した親の依存セグメントから基準を満たす次のセグメントを取得(および保持)します。

説明

GNPは、確立した親の依存セグメントで、次の修飾セグメントを取得するために使用されます。階層型DBにおける確立した親とは、前の成功したGU/GN呼出しで返された最も下位のセグメントであり、失敗したGU/GN呼出しによって取り消されます。

GHNPは、GNPに加えて、返されたセグメントを順次書込み操作のためにロックします。

形式

DB PCB, GSAM PCB or AIB, I/O Area, and SSA list (オプション)

パラメータ

GNP/GHNPのパラメータの使用方法と制限事項は、GUに似ています。

 


ISRT

名前

ISRT: 既存のセグメント・タイプの新しいオカレンスを階層型データベースに挿入するために使用されます。

説明

ISRTは、既存のセグメント・タイプの新しいオカレンスを階層型データベースに挿入するために使用されます。挿入位置は、挿入されるセグメントのレベルを除いた一連の修飾SSAによって、または非修飾SSAの場合は現在の位置によって決定されます。

形式

DB PCB, GSAM PCB or AIB, I/O Area, and SSA list or RSA(opitional for GSAM)

パラメータ

I/O

領域には、追加するセグメントが入ります。

AIB

呼出し用のAIBを指定します。このパラメータは、入出力パラメータです。これらのフィールドは、AIB内で初期化されている必要があります。

AIBID Eyecatcher。

この8バイトのフィールドには、DFSAIBbbを含める必要があります。

AIBLEN AIBの長さ。

このフィールドには、アプリケーション・プログラムによって取得されたAIBの実際の長さを含める必要があります。

AIBRSNM1リソース名。

この8バイトの左揃えのフィールドには、DB PCBの名前を含める必要があります。

AIBOALEN I/O領域の長さ。

このフィールドには、呼出しリストに指定されているI/O領域の長さを含める必要があります。

SSA

挿入中のセグメントの位置を確立するための一連の修飾または非修飾SSAが入ります。最も下位のSSA (つまり、挿入中のセグメントのレベルにあるSSA)は非修飾である必要があります。非修飾SSAは、セグメント・タイプの最初のオカレンスで満たされます。

RSA

DL/IによってRSAが返されるプログラムの領域を指定します。

 


REPL

名前

REPL: 既存のセグメントを更新するために使用されます。

説明

REPLは、既存のセグメントを更新するために使用されます。最初にGet Hold呼出しを使用してセグメントを取得し、その後、そのセグメントを変更および更新する必要があります。I/O領域のセグメントのフィールドの長さは変更できません。

形式

DB PCB or AIB, I/O Area, and SSA list

パラメータ

パラメータの使用方法と制限事項は、GUに似ています。

 


DLET

名前

DLET: セグメントとその依存関係を削除するために使用されます。

説明

DLET呼出しは、セグメントとその依存関係を削除するために使用されます。これは、Get Hold呼出しの後に続く必要があります。修飾SSAは、DLET呼出しに指定しないでください。

形式

DB PCB or AIB, I/O Area, and SSA list (オプション)

パラメータ

パラメータの使用方法と制限事項は、GUに似ています。

 


FLD

名前

FLD: セグメント内のフィールドにアクセスし、変更するために使用されます。

説明

FLD呼出しは、セグメント内のフィールドにアクセスし、変更するために使用されます。

形式

DB PCB or AIB, I/O Area, and SSA list

パラメータ

I/O

領域には、特定のフィールドを見つけるためのフィールド検索引数が入ります。

AIB

呼出し用のAIBを指定します。このパラメータは、入出力パラメータです。これらのフィールドは、AIB内で初期化されている必要があります。

AIBID Eyecatcher。

この8バイトのフィールドには、DFSAIBbbを含める必要があります。

AIBLEN AIBの長さ。

このフィールドには、アプリケーション・プログラムによって取得されたAIBの実際の長さを含める必要があります。

AIBRSNM1リソース名。

この8バイトの左揃えのフィールドには、DB PCBの名前を含める必要があります。

AIBOALEN I/O領域の長さ。

このフィールドには、呼出しリストに指定されているI/O領域の長さを含める必要があります。

SSA

この呼出しで使用されるSSAを指定します。この入力パラメータで最大15個のSSAを使用できます。指定するSSAは、呼出しに対して定義したデータ領域を指します。このパラメータは、FLD呼出しに必須です。

 


POS

POS: 修飾位置(POS)呼出しは、特定の順次従属セグメントの位置を取得するために使用されます。非修飾POSは、順次従属セグメント(SDEP)データの論理的な終わりを指します。

説明

POSはDEDBのみをサポートします。ARTIMSでは、次の制限があります。 1. keywordパラメータはサポートされていません。 2. LLおよび対応する数値フィールド(フィールド4、フィールド5)は、ホスト・バイト・エンディアンに格納されます。

形式

DB PCB or AIB, I/O Area, and SSA list (オプション)

パラメータ

DB PCB

すべてのDB関連情報(特にDB名)が入ります。

AIB

呼出し用のAIBを指定します。このパラメータは、入出力パラメータです。これらのフィールドは、AIB内で初期化されている必要があります。

AIBID Eyecatcher。

この8バイトのフィールドには、DFSAIBbbを含める必要があります。

AIBLEN AIBの長さ。

このフィールドには、アプリケーション・プログラムによって取得されたAIBの実際の長さを含める必要があります。

AIBRSNM1リソース名。

この8バイトの左揃えのフィールドには、DB PCBの名前を含める必要があります。

AIBOALEN I/O領域の長さ。

このフィールドには、呼出しリストに指定されているI/O領域の長さを含める必要があります。I/O領域は、返された出力を受け取るために使用されます。
キーワードはサポートされていないため、I/O領域の出力形式は、次のとおりです。 LLフィールド1 フィールド2 フィールド4 フィールド5 LL: この2バイトの数は、全体の長さを示します。 フィールド1: この8バイトのフィールドには、AREA文からのDD名が入ります。 フィールド2: CIを割り当てるための次の順次従属。 フィールド4: この4バイトのフィールドには、順次従属部にある未使用制御インターバルの数が入ります。 フィールド5: この4バイトのフィールドには、独立したオーバーフロー部分にある未使用制御インターバルの数が入ります。
注意: I/Oデータ領域には、24バイトのDEDBのすべての領域の位置情報が入ります。

SSAリスト

挿入中のセグメントの位置を確立するための一連の修飾または非修飾SSAが入ります。最も下位のSSA (つまり、挿入中のセグメントのレベルにあるSSA)は非修飾である必要があります。非修飾SSAは、セグメント・タイプの最初のオカレンスで満たされます。

 


OPEN

名前

OPEN: GSAMデータベースを明示的に開くために使用されます。

説明

GSAMデータベースを明示的に開きます。GASMデータベースに対する次の処理によって、GSAMデータベースが再度開かれることはありません。GSAMデータベースを明示的に開かない場合、他の操作によってGSAMデータベースが暗黙的に開かれます。

形式

GSAM PCB or AIB,  i/o area

パラメータ

GSAM PCB

PCBに対応するGSAMデータベース。

AIB

呼出し用のAIBを指定します。このパラメータは、入出力パラメータです。これらのフィールドは、AIB内で初期化されている必要があります。

AIBID Eyecatcher。

この8バイトのフィールドには、DFSAIBbbを含める必要があります。

AIBLEN AIBの長さ。

このフィールドには、アプリケーション・プログラムによって取得されたAIBの実際の長さを含める必要があります。

AIBRSNM1Resource名。

この8バイトの左揃えのフィールドには、GSAM PCBのPCB名を含める必要があります。

AIBOALENI/O領域の長さ。

このフィールドには、呼出しリストに指定されているI/O領域の長さを含める必要があります。I/O領域。
開いているデータ・セットの種類を指定します。
注意: このパラメータは無視されます。IMS/DBに対するOracleの実装では、GSAMデータベースをローカル・ファイル・システムでシミュレートするため、I/O領域はデータ・セットの種類を指定するために使用されません。$appname.psbでPROCOPTオプションを使用して、データ・セットが読取り専用であるか、取得および追加されるかどうかを定義します。

 


CLSE

名前

CLSE: GSAMデータベースを明示的に閉じるために使用されます。

説明

GSAMデータベースを明示的に閉じます。GSAMデータベースを明示的に閉じない場合、IMSによってGSAMデータベースが暗黙的に閉じられます。

形式

GSAM PCBまたはAIB

パラメータ

GSAM PCB

GSAMデータベースの対応するPCB。

AIB

呼出し用のAIBを指定します。このパラメータは、入出力パラメータです。これらのフィールドは、AIB内で初期化されている必要があります。

AIBID Eyecatcher。

この8バイトのフィールドには、DFSAIBbbを含める必要があります。

AIBLEN AIBの長さ。

このフィールドには、アプリケーション・プログラムによって取得されたAIBの実際の長さを含める必要があります。

AIBRSNM1リソース名。

この8バイトの左揃えのフィールドには、GSAM PCBのPCB名を含める必要があります。

IMS/DBの様々な実装のためのプラグイン定義

IMS/DBの様々な種類の実装をサポートするために、IMS/DBに対するサポートが、ARTIMSにプラグイン可能で、プラグ後にARTIMSサーバーによってロード可能な動的リンク・ライブラリ(DLL)として設計されています。このプラグアンドプレイ・メカニズムを有効化するには、DLLによってどのAPIがエクスポートされるのかのアグリーメントが必要です。

ARTIMSサーバー(ARTIMPPおよびARTIBMP)は、オンラインまたはバッチCOBOLプログラムを実行するためのコンテナとして使用されます。プログラムによつて発行されるデータベース・アクセス操作を有効化するには、通常、サーバーは、データベースの実装に対してなんらかの初期化または構成を実行する必要があり、COBOLプログラムを起動する前に何かを実行する必要があり、プログラムの完了後に何かを実行する必要があり、サーバーが停止する前になんらかのクリーンアップを実行する必要があります。そのほかに、CBLTDLIを介した各データベース処理が、特定のAPIにマップされている必要があります。

IMS/DBプラグインのデータ構造定義

DB PCB構造を指すポインタは、ARTIMSサーバーからCOBOLプログラムに渡され、最後にIMS/DBのプラグインのdb_entry()に渡されます。プラグインが適切に機能するようにするには、各COBOLプログラムを呼び出す前にDB PCB構造に適切に入力する必要があります。この項では、DB PCBへの入力方法に関する詳細な要件を定義します。

DB PCB構造の例をリスト2に示します。

リスト2 DB PCB構造
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インタフェースを介してアプリケーションに返されます。

リスト3 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定義

IMS/DBプラグインのAPIを定義するには次の手順を実行する必要があります。

  1. 初期化
  2. extern "C" int db_init(int argc, char * argv[])

    機能: 実装に必要な構成またはその他のものに対する初期化

    引数: サーバーのCLOPTから渡されるパラメータ・リスト。

    戻り値: 0 - 成功、-1 -- 失敗

    使用する場所: このAPIは、ARTIMSサーバーが起動する際に呼び出されます。IMS/DBの特定の実装には、初期化作業は必要ありません。単に空の関数を指定して、それが0を返すようにします。

  3. クリーンアップ
  4. extern "C" int db_destroy()

    機能: 実装に必要な構成またはその他のものに対するクリーンアップ

    引数: なし。サーバーはプラグインに入力を提供できないためです。

    戻り値: 0 - 成功、-1 -- 失敗

    使用する場所: このAPIは、ARTIMSサーバーが停止する際に呼び出されます。IMS/DBの特定の実装には、初期化作業は必要ありません。単に空の関数を指定して、それが0を返すようにします。

  5. COBOLプログラムを起動する前のアクション
  6. extern "C" int db_pre()

    機能: IMS/DB実装にアクセスできるCOBOLプログラムを起動する前に実装によって必要とされる事前アクション。

    引数: なし。サーバーはプラグインに入力を提供できないためです。

    戻り値: 0 - 成功、-1 -- 失敗

    使用する場所: IMS/DB実装にアクセスできるCOBOLプログラムがARTIMSサーバーによって起動される前にこのAPIが呼び出されます。IMS/DBの特定の実装には、初期化作業は必要ありません。単に空の関数を指定して、それが0を返すようにします。

  7. COBOLプログラムを起動した後のアクション
  8. extern "C" int db_post()

    機能: IMS/DB実装にアクセスできるCOBOLプログラムを起動した後に実装によって必要とされる事後アクション。

    引数: なし。サーバーはプラグインに入力を提供できないためです。

    戻り値: 0 - 成功、-1 -- 失敗

    使用する場所: IMS/DB実装にアクセスできるCOBOLプログラムがARTIMSサーバーによって起動された後にこのAPIが呼び出されます。IMS/DBの特定の実装には、初期化作業は必要ありません。単に空の関数を指定して、それが0を返すようにします。

  9. データベース・アクセス・エントリ
  10. extern "C" 
    int db_entry(const char * op, __DB_PCB * pcb, void * io, char * ssa_list[], int ssa_cnt);

    機能: IMS/DB実装へのアクセスのエントリ・ポイントCOBOLプログラムから発行されたデータベース・アクセスのための各DL/I呼び出しは、最終的にそれによって処理されます。

    引数:

    op: 関数呼出し名(GUなど)

    pcb: ユーザー提供のDB PCBのスーパークラスである__DB PCBを指すポインタ。

    io: 外部実装者によって定義されたバッファDB_IO_AREAを指すポインタ。

    ssa_list: 文字列の配列であり、それぞれが1つのSSAを含み、形式は外部実装者によって異なります。

    ssa_cnt: ssa_list内の要素の数。値の範囲は[0..15]です。

    戻り値: 0 - 成功、-1 - 失敗

    使用する場所: COBOLプログラムによって発行されるDL/I DB呼出し。

  11. db pcb属性を取得します。
  12. extern "C" 
    const __DB_PCB_ATTR * get_dbpcbattr (struct __DB_PCB * pcbm)

    機能: db pcbの追加属性を取得するために使用されます。これらの属性はPSBファイルで構成されます。

    引数:

    pcbm: PCBマスク・ポインタ

    戻り値: PCB属性ポインタ。このAPIから返されるPCB属性構造に含まれる内容を、ユーザーが変更することはできません。入力がDB PCBまたはGSAM PCBでない場合は、nullが返されます。オプションの属性が構成されていない場合は、デフォルト値が返されます。ポインタを解放する必要はありません。

    使用する場所: db pcbによって呼び出されたサード・パーティのDBプラグイン。

  13. db pcbセグメント名を設定します。
  14. extern "C" 
    int fill_dbpcb_segname (struct __DB_PCB * pcb)

    機能: db pcbのセグメント名を取得するために使用されます。このインタフェースはDBプラグインによって提供されます。

    引数:

    pcb: PCBマスク・ポインタ(DB PCBまたはGSAM PCB)。pcbマスクのsegnameには正しい値が設定されます。

    戻り値: 0: 成功、その他: 失敗。

IMS/DBのデフォルトの実装

ARTIMS内では、デフォルトDLLはIMS/DBのOracleソリューションとして提供されています。

トランザクション管理

DLIライブラリは、COBOLアプリケーションによって渡される命令に従い、トランザクション管理作業(つまり、すでに行われた変更のコミット、すでに作成されたメッセージの送信またすべての変更のロールバック、すべてのメッセージの削除)を実行します。COBOLアプリケーションによってトランザクションをコミットする明確な命令が発行されない場合は、ARTIMPPによってトランザクションがコミットされます。

表 10は、トランザクション管理のプロセスおよびコマンドを示しています。

表 10 トランザクション管理のプロセスとコマンド 
名前
説明
明示的なコミット・ポイントを設定するために使用されます。
明示的なコミット・ポイントを設定するために使用されます。プログラムを開始できるチェック・ポイントを設定し、プログラムに7つのデータ領域を保存し、現在のGSAM DB取得位置を記録します。
データベースの更新を取り消すために使用されます。
アプリケーション・プログラムによって行われた変更をコミットします。
実行環境、宛先タイプおよびステータス、およびセッション・ステータスに関する情報を要求するために使用されます。
プログラムを通常どおり開始できるようにするか、シンボリックCHKP呼出しで指定されたチェック・ポイントIDから再開できるようにするために使用されます。

 


CHKP (基本)

名前

CHKP (基本): 明示的なコミット・ポイントを設定するために使用されます。

説明

CHKPは、明示的なコミット・ポイントを設定するために使用されます。コミット・ポイントで、IMS/TMが、アプリケーション・プログラムによって行われた変更(通常はデータベースの更新)をコミットし、すべてのメッセージを完了としてマークして(低速PCBの場合はPURGによって)送信し、指定されたIOAREAに次の入力メッセージを取得します。

ARTIMSでは、シミュレートされたCHKPが使用されて、tpcommit()コマンドを使用することですでに行われている変更がコミットされます。完了とマークされているメッセージが送信されます。明示的なPURG呼出しによってマークされていないメッセージも送信されます。

トランザクションが永続トランザクションで、永続モードのARTIMPPによって処理されているか、ARTIBMPTによって処理されている場合、次のメッセージはこのトランザクションの/Qから取得されます。

トランザクションが永続トランザクションでない場合、次のメッセージは取得されません。

パラメータ

I/O PCB or AIB, I/O Area

I/O PCB

宛先を表すPCBを指すポインタ。

AIB

呼出しに使用されるアプリケーション・インタフェース・ブロック(AIB)を指定します。このパラメータは入出力パラメータです。次のフィールドは、AIB内で初期化されている必要があります。

AIBID Eyecatcher。

この8バイトのフィールドには、DFSAIBbbを含める必要があります。

AIBLEN AIBの長さ。

このフィールドには、アプリケーション・プログラムによって取得されたAIBの実際の長さを含める必要があります。

AIBRSNM1リソース名。

この8バイトの左揃えのフィールドには、PCB名IOPCBbbbを含める必要があります。

AIBOALEN I/O領域の長さ。

このフィールドには、呼出しリストに指定されているI/O領域の長さを含める必要があります。

I/O領域

次の入力メッセージを受信するためのバッファへのポインタ。この領域には、返される可能性がある最長のメッセージを格納できるだけの長さが必要です。

結果(ステータス・コード)

'bb': 成功(2つの空白)。

'AD': 関数パラメータが無効です。関数呼出しがCBLTDLIに指定されていないか、無効な関数呼び出し名がCBLTDLIに指定されています。

'AB': I/O領域は提供されません。

'QC': 入力メッセージがありません。

'QF': セグメントが5文字未満です。

 


CHKP (シンボリック)

名前

CHKP (シンボリック): 明示的なコミット・ポイントを設定するために使用されます。プログラムを開始できるチェック・ポイントを設定し、プログラムに7つのデータ領域を保存し、現在のGSAM DB取得位置を記録します。

説明

CHKP (シンボリック)は、リカバリのために使用できます。これによって、プログラムによって行われたすべての変更がコミットされ、アプリケーション・プログラムが異常終了した場合は、そのプログラムが再開できるポイントが確立されます。さらに、シンボリックCHKP呼出しは次のことを実行できます。

ARTIMSでは、シュミレートされたCHKP (シンボリック)を使用して、次のことが実行されます。

  1. tpcommit()を使用して、すでに行われた変更をコミットします。これは基本CHKPと同じです。
  2. 基本のCHKPと同じ次のメッセージを取得します。
  3. 最大7つのデータ領域を受け入れ、それをチェック・ポイントIDとともに保存します。
  4. 注意: ユーザーがシンボリックCHKPを使用してデータ領域を格納した後、ユーザーがXRSTを使用してプログラムを再起動する前に、ART BMPサーバーが再起動された場合、シンボリックCHKPによって格納されたデータ領域は、XRSTによってリストアされません。
    注意: 環境変数"ART_IMS_CLEAN_DBSTATUS"が"Y" (または"y")に設定されている場合、CHKP (シンボリック)の呼び出し後、関連するすべてのGSAM/DB PCBのステータス・コードは空白になります。
  5. 関連するすべてのGSAM DBの現在の取得位置を記録します。

パラメータ

I/O PCB or AIB, I/O Area, I/O Area Length, IO Area, area length, area, …

I/O PCB

宛先を表すPCBを指すポインタ。

AIB

呼出しに使用されるアプリケーション・インタフェース・ブロック(AIB)を指定します。このパラメータは、入出力パラメータです。次のフィールドは、AIB内で初期化されている必要があります。

AIBID Eyecatcher。

この8バイトのフィールドには、DFSAIBbbを含める必要があります。

AIBLEN AIBの長さ。

このフィールドには、アプリケーション・プログラムによって取得されたAIBの実際の長さを含める必要があります。

AIBRSNM1リソース名。

この8バイトの左揃えのフィールドには、PCB名IOPCBbbbを含める必要があります。

AIBOALEN I/O領域の長さ。

このフィールドには、呼出しリストに指定されているI/O領域の長さを含める必要があります。

I/O領域の長さ

使用されなくなりました。互換性のために、このパラメータは、依然として呼出し内に含める必要がありますが有効なアドレスを含んでいる必要があります。

I/O領域

入力パラメータの場合、チェック・ポイントID (8ビット)を指定するために使用されます。出力パラメータの場合は、次の入力メッセージを受信するためのバッファへのポインタ。この領域には、返される可能性がある最長のメッセージを格納できるだけの長さが必要です。

領域の長さ

最初の領域からチェック・ポイントまでの長さ(バイナリ形式)を含むプログラム内の4バイトのフィールドを指定します。このパラメータは、入力パラメータです。最大7つの領域の長さを指定できます。領域の長さごとに、領域パラメータを指定することも必要です。

領域

IMSでチェック・ポイントとして使用する、プログラム内の領域を指定します。常に、最初に領域の長さのパラメータを指定し、その後に領域パラメータを続けます。

結果(ステータス・コード)

'bb': 成功(2つの空白)。

'AD': 関数パラメータが無効です。ARTIMSによって関数呼出しが提供されていません。

'AB': I/O領域は提供されません。

'QC': 入力メッセージがありません。

'QF': セグメントが5文字未満です。

 


ROLB

名前

ROLB: データベースの更新を取り消すために使用されます。

説明

ROLB: データベースの更新を取り消し、挿入されたが伝送に使用できないすべてのメッセージを取り消します。高速PCBの場合、メッセージは、IMSがメッセージの完了を認識したとき(つまりPURG呼出しが呼び出されるとき)に、伝送に使用できるようになります。低速PCBでは、プログラムがコミット・ポイントに到達するまではメッセージが送信可能になりません。

ARTIMSでは、シミュレートされたROLB呼出しは、tpabort()を使用することでアプリケーション・プログラムによって行われたすべての変更をロールバックし、送信されていないメッセージ・バッファを空にするために使用されます。

永続トランザクション(TPまたはトランザクション指向BMPプログラム)では、永続モードのARTIMPPで処理されているか、ARTIBMPTで処理されている場合、ROLBは最後のコミット・ポイントから最初のメッセージの最初のセグメントをIOAREAに返し、/Qの最後のコミット・ポイントから最初のメッセージを削除します。

非永続トランザクション(TPまたはトランザクション指向バッチ)では、ART IMSは現在処理中のメッセージの最初のセグメントのみを返します。

形式

I/O PCB or AIB, I/O Area

パラメータ

I/O PCB

宛先を表すPCBを指すポインタ。

AIB

呼出しに使用されるアプリケーション・インタフェース・ブロック(AIB)を指定します。このパラメータは入出力パラメータです。次のフィールドは、AIB内で初期化されている必要があります。

AIBID Eyecatcher。

この8バイトのフィールドには、DFSAIBbbを含める必要があります。

AIBLEN AIBの長さ。

このフィールドには、アプリケーション・プログラムによって取得されたAIBの実際の長さを含める必要があります。

AIBRSNM1リソース名。

この8バイトの左揃えのフィールドには、PCB名IOPCBbbbを含める必要があります。

AIBOALEN I/O領域の長さ。

このフィールドには、呼出しリストに指定されているI/O領域の長さを含める必要があります。

I/O領域

返されたメッセージの最初のセグメントを受信するためのバッファへのポインタ。

結果(ステータス・コード):

'bb': 成功(2つの空白)。

'AD': 関数パラメータが無効です。関数呼出しがCBLTDLIに指定されていないか、無効な関数呼び出し名がCBLTDLIに指定されているか、PCBが指定されていません。

'QE': IOAREAがNULLでない場合、GUが以前に呼び出されていません。

'QC': 入力メッセージがありません。

'QF': セグメントが5文字未満です。

 


ROLL

名前

ROLL: データベースの更新を取り消し、ART IMSに返すために使用されます。

説明

ROLLは、データベースの更新を取り消し、挿入されたが伝送に使用できないすべてのメッセージを取り消します。高速PCBの場合、メッセージは、IMSがメッセージの完了を認識したとき(つまりPURG呼出しが呼び出されるとき)に、伝送に使用できるようになります。低速PCBでは、プログラムがコミット・ポイントに到達するまではメッセージが送信可能になりません。

ARTIMSでは、シミュレートされたROLL呼び出しを使用して、tpabort()を使用してアプリケーション・プログラムによって作成されたすべての変更をロールバックし、未送信のメッセージ・バッファを空にします。さらに、ART IMSにはコントロールを返しますが、呼び出し元プログラムにはコントロールを返しません。

永続トランザクション(TPまたはトランザクション指向BMPプログラム)では、永続モードのARTIMPPで処理されているか、ARTIBMPTで処理されている場合、ROLLは/Qの最後のコミット・ポイントから現在のメッセージを削除します。

形式

ROLL

パラメータ

ROLLの呼び出しに必要なパラメータはコール関数のみです。

結果(ステータス・コード):

ステータス・コードは返されません。

 


SYNC

名前

SYNC: アプリケーション・プログラムによって行われた変更(通常は、データベースの更新)をコミットするために使用されます。

説明

ARTIMSでは、シミュレートされたSYNCは、プログラムが異常終了した場合に、すでに行われた変更をコミットし、プログラム内に再開できる位置を確立しないために使用されます。

形式

I/O PCB or AIB

パラメータ

I/O PCB

宛先を表すPCBを指すポインタ。

AIB

呼出しに使用されるアプリケーション・インタフェース・ブロック(AIB)を指定します。このパラメータは入出力パラメータです。次のフィールドは、AIB内で初期化されている必要があります。

AIBID Eyecatcher。

この8バイトのフィールドには、DFSAIBbbを含める必要があります。

AIBLEN AIBの長さ。

このフィールドには、アプリケーション・プログラムによって取得されたAIBの実際の長さを含める必要があります。

AIBRSNM1リソース名。

この8バイトの左揃えのフィールドには、PCB名IOPCBbbbを含める必要があります。

 


INQY

名前

INQY: 実行環境、宛先タイプおよびステータス、およびセッション・ステータスに関する情報を要求するために使用されます。INQYは、AIBTDLIインタフェースを使用している場合にのみ有効です。

説明

IMSでは、次のサブ関数のみがサポートされています。NULLFINDbbbbPROGRAMbDBQUERYb

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ステータスは、データベースの使用可能性に従って返されます。

形式

AIB I/O Area

パラメータ

AIB

呼出しに使用されるアプリケーション・インタフェース・ブロック(AIB)のアドレスを指定します。このパラメータは、入出力パラメータです。次のフィールドは、AIB内で初期化されている必要があります。

AIBID Eyecatcher。

この8バイトのフィールドには、DFSAIBbbを含める必要があります。

AIBLEN AIBの長さ。

このフィールドには、アプリケーション・プログラムによって取得されたAIBの実際の長さを含める必要があります。

AIBSFUNCサブ関数コード。

このフィールドには、次のように8バイトのサブ関数コードの1つが含まれている必要があります。
bbbbbbbb (Null)
DBQUERYb
FINDbbbb
PROGRAMb

AIBRSNM1リソース名。

この8バイトの左揃えのフィールドには、PSBで指定されたPCBのPCB名を含める必要があります。

AIBOALEN I/O領域の長さ。

このフィールドには、呼出しリストに指定されているI/O領域の長さを含める必要があります。このフィールドは、IMSによって変更されません。

I/O領域

返される出力を受信するために使用されます。

AIBでの結果:

戻りコードおよび理由コードは、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は、プログラムを再起動するために使用されます。プログラム内でシンボリック・チェックポイント呼出しを使用する場合、XRST呼出しを使用する必要があります。

ARTIMSでは、シミュレートされたXRSTは、関連するCHKP (シンボリック)呼出しに保存されたデータをリカバリするために使用されます。GSAMは、CHKP (シンボリック)呼び出しが行われた記録位置に再配置されるので、後続のすべての"GN"呼び出しはリカバリされた位置で続行します。

環境変数"ART_IMS_CLEAN_DBSTATUS"が"Y" (または"y")に設定されている場合、(既存のCHKPIDによる) XRST呼び出しの後、関連するすべてのGSAM/DB PCBのステータス・コードは空白になります。

パラメータ

I/O PCB or AIB, I/O Area, I/O Area Length, IO Area, area length, area, …

I/O PCB

宛先を表すPCBを指すポインタ。

AIB

呼出しに使用されるアプリケーション・インタフェース・ブロック(AIB)を指定します。このパラメータは、入出力パラメータです。

次のフィールドは、AIB内で初期化されている必要があります。

AIBID Eyecatcher。

この8バイトのフィールドには、DFSAIBbbを含める必要があります。

AIBLEN AIBの長さ。

このフィールドには、アプリケーション・プログラムによって取得されたAIBの実際の長さを含める必要があります。

AIBRSNM1リソース名。

この8バイトの左揃えのフィールドには、PCB名IOPCBbbbを含める必要があります。

AIBOALEN I/O領域の長さ。

このフィールドには、呼出しリストに指定されているI/O領域の長さを含める必要があります。このパラメータは、XRST呼出し中に使用されません。互換性のために、このパラメータは、依然としてコード化されている必要があります。

I/O領域の長さ

使用されなくなりました。互換性のために、このパラメータは、依然として呼出し内に含める必要がありますが有効なアドレスを含んでいる必要があります。

I/O領域

プログラムを再起動するチェック・ポイントIDを指定するために使用されます。プログラムを通常どおりに起動する場合、I/O領域の最初の5文字を空白にする必要があります。

領域の長さ

最初の領域からチェック・ポイントまでの長さ(バイナリ形式)を含むプログラム内の4バイトのフィールドを指定します。このパラメータは、入力パラメータです。領域の長さごとに、領域パラメータを指定することも必要です。XRST呼出しで指定する領域の数は、プログラムが発行するCHKP呼出しに指定する領域の数以下であることが必要です。

領域

IMS TMがリストアする、プログラム内の領域を指定します。常に、最初に領域の長さのパラメータを指定し、その後に領域パラメータを続けます。

結果(ステータス・コード)

'bb': 成功(2つの空白)。

'AD': 関数パラメータが無効です。ARTIMSによって関数呼出しが提供されていません。

 


ARTIMS MFSサポート

IMS MFS制御ブロック・サポート

メッセージ形式およびデバイス形式の定義は、定義文の別の階層セットで実行されます。表11は、すべての定義文とそれらの説明を示しています。

表11 定義文と説明
定義文セット名
文の名前
説明
メッセージ定義文セット
----
メッセージ形式の定義に使用されます。
MSG
メッセージ入力または出力定義を開始し、名前を付けます。
LPAGE
オプションのLPAGE文は、論理ページを構成するセグメントのグループを定義します。
PASSWORD
IMSパスワードとして使用する1つ以上のフィールドを識別します。
SEG
メッセージ・セグメントを識別します。
DO
後続のMFLD文の反復処理を要求します。
MFLD
MFLD文は、メッセージ出力セグメントの一部としてアプリケーション・プログラムに提示されるように、メッセージ・フィールドを定義します。少なくとも1つのMFLD文を、MSG定義ごとに指定する必要があります。
ENDDO
先行するMFLD文の反復処理を終了します。
MSGEND
メッセージ定義の終わりを識別します。
形式定義文セット
----
デバイス形式の定義に使用されます。
FMT
形式定義の先頭を識別します。
DEV
デバイス・タイプおよび操作オプションを識別します。
DIV
入力、出力、または両方として形式を識別します。
DPAGE
メッセージ・フィールドのLPAGEグループに対応するデバイス・フィールドのグループを識別します。
PPAGE
一度にリモート・アプリケーション・プログラムに送信できる論理的に関連するレコードのグループを識別します。
DO
後続のDFLD文の反復処理を要求します。
DFLD
デバイス・フィールドを定義します。DFLD文の反復処理は、DOおよびENDDO文を指定することで起動できます。反復処理を実行するには、DO文をDFLD文の前に、ENDDOをDFLD文の後に配置します。
ENDDO
先行するDFLD文の反復処理を終了します。
FMTEND
形式定義の終わりを識別します。
END
 
入力ファイルの終わりを定義します。

前述の表の"END"文は、入力ファイルの終わりを定義します。その後のすべてのコンテンツは無視されます。入力ファイルに"END"がない場合、MFSGENによって警告メッセージが生成され、入力ファイルにそれが追加されます。

文の名前ごとに、いくつかのフィールドがあります。詳細なフィールド名および値の要件を、表12および表13に示します。他のすべての文は、現在、サポートされていないフィールドとみなされます(表14に示す)。

表12 メッセージ定義文セット・フィールド
文の名前
フィールド
指定できる値
注意
MSG

TYPE
INPUT
サポート
OUTPUT
SOR=
(formatname, IGNORE)
"IGNORE"は必須です。
OPT=
1 or 2 or 3
警告
NXT=
msgcontrolblockname
サポート
PAGE=
No or YES
警告
FILL=
C' '
入力されているものが空白でない場合は警告。
C'c'
NULL
PT






LPAGE
SOR=
dpagename






エラー
COND=
(mfldname | mfldname(pp) |
Segoffset, > | < | | | = | != , 'value' )
NXT=
msgcontrolblockname
PROMPT=
(dfldname,'literal')

PASSWORD

PASSWORD
blanks

エラー
comments


SEG
EXIT=
(exitnum,exitvect)
警告
GRAPHIC=
YES or NO
警告

DO
count
 
サポート
SUF=
number
サポート















MFLD
dfldname
 




サポート対象
'literal'
 
G`literal`
 
(dfldname, 'literal')
 
(dfldname, G'literal')
 
(dfldname, system-literal)
 
(,SCA)
 
未定


LTH=
1
サポート
nn
サポート
(pp, nn)
警告
JUST=
L or R
サポート
ATTR=
YES or NO, nn
サポート



FILL
X'40'
警告
X'hh'
警告
C'c'
c=SPACEの場合にのみサポート対象
NULL
警告
EXIT=
(exitnum, exitvect)
警告
ENDDO
   
サポート
MSGEND
   
サポート

注意: 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にない他の文字列については、構文エラーが表示されます。

表13 形式定義文セット・フィールド
文の名前
フィールド
指定できる値
サポート対象かそれ以外か
FMT
   
サポート
DEV


TYPE=
3270
サポート
3270-A2 | | (3270,2)
サポート
(3270,1) | Other values
エラー


FEAT=
IGNORE
サポート
(CARD | NOCD | PFK | NOPFK | DEKYBD | PEN | NOPEN)
警告
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
警告
PEN=
dfldname
警告
CARD=
dfldname
警告
SYSMSG=
dfldlabel
サポート

DSCA=
X'value'
サポート
number
サポート




PFK=
(dfldname, 'literal'…)
サポート
(dfldname, integer='literal'…)
サポート
(dfldname, NEXTPP |NEXTMSG | NEXTMSGP | NEXTLP | ENDMPPI …. )
警告
(dfldname, integer= NEXTPP |NEXTMSG | NEXTMSGP | NEXTLP | ENDMPPI …. )
警告

SUB=
X'hh'
警告
C'c'
警告
PDB=
pdbname
警告
DIV

TYPE=
INOUT
サポート
OUTPUT
DPAGE
CURSOR=
(lll, ccc)
(111,ccc,dfld)
サポート対象;
カーソル > 1: 警告
MULT=
YES
警告
PD=
pdname
警告



FILL=
PT or X'hh'
警告
C'c'
c=SPACEの場合にのみサポート対象
NULL
警告
NONE
警告
ACTVPID=
(パーティション・フォーマット済モードの3290の場合)
警告
PPAGE
comments
 
エラー
DO
Count
 
サポート
1, MAX
 
サポート
line-inc, column-inc
 
サポート
Position-inc
 
警告
SUF=
number
サポート
BOUND=
LINE | FIELD
サポート
DFLD
'literal'
 
サポート
G'literal'
 
サポート
PASSWORD
 
エラー
POS=
(lll,ccc)
サポート
(lll,ccc,pp)
警告
LTH=
nnn
サポート
PEN=
‘literal
警告
NEXTPP
警告
NEXTMSG
警告
NEXTMSGP
警告
NEXTLP
警告
ENDMPPI
警告
ATTR=
ALPHA|NUM
サポート
NOPROT|PROT
サポート
NODET|DET|IDET
警告
NORM|NODISP|HI
サポート
NOMOD|MOD
サポート
STRIP|NOSTRIP
警告
OPCTL=
tablename
警告
EATTR=
HD | HBLINK | HREV | HUL
サポート
   
CD | BLUE | RED | PINK | GREEN | TURQ | YELLOW | NEUTRAL
サポート
PX'00' | PX'hh' | PC'c'
警告
EGCS | EGCS'hh'
サポート対象、EGCS'hh'の場合は、X'00'およびX'F8'の'hh'値のみがサポートされます。
VDFLD | VMFILL, VMFLD | VMFILL | VMFLD
警告
OUTL | OUTL'hh' | BOX | RIGHT | LEFT | UNDER | OVER
サポート
MIX | MIXD
サポート
ENDDO
   
サポート
FMTEND
   
サポート

表14 サポート対象ではない他の定義文とコンパイル文
文の名前
フィールド
サポート対象かそれ以外か
END
 
サポート
PDB
LUSIZE
WARNINGS
SYSMSG
PAGINGOP
LUDEFN
PD
PID
VIEWPORT
VIEWLOC
PRESPACE
WINDOWOF
CELLSIZE
SCROLLI
PDBEND
comments
TABLE
comments
IF
DATA
LENGTH
'literal'
NOFUNC
NEXTP
NEXTMSG
NEXTMSGP
NEXTLP
PAGEREQ
ENDMPPI
TABLEEND
comments
 
ALPHA
'EBCDIC literal character string'
COPY
member-name
EQU
number
エラー
alphanumeric identifier
literal
symbol
RESCAN
OFF | ON
WARNING
number
STACK
ON | OFF
id
UNSTACK
DELETE |KEEP
id
TITLE
literal
PRINT
ON | OFF
GEN | NOGEN
SPACE
number
EJECT
comments

前述の表の最後の列について、「サポート対象」とはフィールドがサポートされていることを意味し、「警告」とはフィールドはサポートされておらず、このフィールドは指定されてないかのようにツールによって無視され、警告が生成されることを意味します。「エラー」とはフィールドがサポートされておらず、ツールによってエラーが報告され、現在の定義文セットの解析に失敗することを意味します。

表15 メッセージ動的属性変更のサポート
バイト
ビット
詳細
サポート
0
0-1
両方のビットがオンである場合、デバイス上でこのフィールドの最初の位置にカーソルを配置することを要求します。物理ページに適用されるLPAGEシリーズ(カーソル属性またはカーソル行/列値を持つ最初のMFLD)で最初に見つかったカーソル位置指定リクエストが、優先されます。これらのビットは00または11である必要があります。
はい
0
2-7
オフであることが必要です。
はい
1
0
オンであることが必須
はい
1
1
オンの場合は置換
オフの場合は追加
はい
1
2
保護
はい
1
3
数値
はい
1
4
高強度
はい
1
5
表示不可
はい
1
6
検出可能
はい
1
7
事前変更済
はい

表16 拡張フィールド属性のメッセージ動的変更のサポート
タイプ
詳細
サポート
01
0-4ビット 予約済
5ビット 入力必須
6ビット 必須フィールド
7ビット 予約済
検証置換。
いいえ
02
上に同じ
検証追加
いいえ
03
0-3ビット 予約済
4ビット 左線
5ビット上線
6ビット 右線
7ビット 下線
X'00' デフォルト(アウトラインなし)
フィールド・アウトラインの置換
はい
04
上に同じ
フィールド・アウトラインの追加
はい
05
0-6ビット 予約済
7ビット SO/SI作成
X'00'デフォルト(SO/SI作成なし)
入力制御置換
いいえ
06
上に同じ
入力制御追加
いいえ
C1
X'00'デバイス・デフォルト
X'F1'点滅
X'F2'反転表示
X'F4'下線
強調表示
はい
C2
X'00'デバイス・デフォルト
X'F1'青
X'F2'赤
X'F3'ピンク
X'F4'緑
X'F5'ターコイズ
X'F6'黄
X'F7'ニュートラル
はい
C3
有効なローカルID値は、範囲X'40'-X'FE'内であり、デバイス・デフォルトはX'00'です。
プログラム・シンボル
はい

表17 DSCAフィールドのビット設定のサポート
バイト
ビット
詳細
サポート
0
0-7
0であることが必要です
はい
1
0
1であることが必要です
はい
1
1
フォーマット書込みの強制(デバイス・バッファを消去し、すべての必須データを書込み)。
はい
1
2
書込み前に保護されていないフィールドを消去します。
はい
1
3
サウンド・デバイス・アラーム。
はい
1
4
候補のポインタに出力をコピーします。
いいえ
1
5
ビット1: 出力を送信するときに画面を保護します。
ビット1: 出力を送信するときに画面を保護しません。
いいえ
1
6-7
0であることが必要です
いいえ

 


ARTIMS非端末アクセス・サポート

MPPによってエクスポートされたサービスへの非端末アクセスをサポートし、より多くのクライアントがMPPによってエクスポートされたサービスを使用できるようにするために、この機能によってARTIMSが非端末アクセスに対応するように強化されています。ユーザーは、非端末アプリケーション(ネイティブのOracle Tuxedoクライアント、SALTクライアント、JCAクライアントなど)を介してARTIMS 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クライアントに変換します。

プログラミング・インタフェース

非端末Oracle Tuxedoクライアントのプログラミング・インタフェース

ARTIMSは、非端末クライアントとARTIMS MPPサーバー間のブリッジとして機能するサーバー、ARTIGWを提供します。非端末クライアントは、次に示すプログラミング・インタフェースに従って、ARTIGWサービスを呼び出します。ARTIGWはサービス・リクエストをARTMPPに転送します。

ARTIGWと非端末Oracle Tuxedoクライアント間の唯一のインタフェースは、FML表です。

アプリケーション・バッファでIMSトランザクション(TRANS1など)を実行するには、次の手順を実行します。

  1. クライアント・ユーザーは次のFMLフィールドを含む送信バッファを準備する必要があります。
  2. IMS_SVC_NAME
    IMSトランザクション名("TRANS1"など)。

    IMS_SVC_FLAG
    将来使用するために予約されたフィールド。

    IMS_SEG_DATA
    アプリケーション・バッファ・データ。LLZZはバッファ内に必要ありません。セグメントの最大長は32764です(これはARTIMPPの制限です)。

  3. クライアントは、手順1で準備したバッファでtpcall()/tpacall()を発行します。
  4. ret = tpcall(< tuxclt_service_name>, …)

    この< tuxclt_service_name>はARTIGWの通知済サービスで、サービス名が構成可能です。詳細は、ARTIGW CONFIGURATIONを参照してください。

  5. クライアントが返信を取得します。返信メッセージには、次のFMLフィールドが存在しています。
  6. IMS_SVC_RESULT

    0: ARTIMPPがレスポンス・メッセージによってリクエストを正常に処理します。

    1: ARTIMPPがレスポンス・メッセージなしでリクエストを正常に処理します。

    -1: ARTIGWエラー。

    -2: ARTIMPPエラー。

    IMS_SEG_DATA
    バッファに返信データが含まれています。LLZZはバッファ内に含まれていません。

    IMS_SVC_SYSMSG
    IMS_SVC_RESULTが負の整数の場合は、冗長エラー・メッセージ。

インタフェースのFMLフィールド表(ARTIGWFML)とヘッダー・ファイル(ARTIGWFML.h)は、$IMSDIR/includeの下にあります。リスト4は、ARTIGWFMLの内容を示しています。

リスト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アプリケーションに対してサポートされているMQメッセージ

MQ-ARTIMSブリッジは次のメッセージ・タイプを受け入れます。

注意:
注意: 1. 角カッコ[ ]はオプションの複数セグメントを表しています。
注意: 2. メッセージにMQIIH構造が含まれる場合、MQMD構造の「フォーマット」フィールドはMQFMT_IMSに設定されます。
注意: 3. メッセージにMQIIH構造が含まれない場合、MQMD構造の「フォーマット」フィールドはMQFMT_IMS_VAR_STRINGに設定されます。

構成

Oracle Tuxedo MQ Adapterの構成

MQアプリケーションをサポートするには、ユーザーはTuxedo 12cR1 RP17以降を適用し、次に示す手順に従う必要があります。

  1. Oracle Tuxedo MQ Adapter構成ファイルで、TM_MQI *SERVICEセクションを次のように定義する必要があります。
  2. MQIIH構造を使用するメッセージの場合:

    *SERVICE

    NAME=< mq_service_name >

    FORMAT= MQIMS

    TRAN = N

    MQIIH構造を使用しないメッセージの場合:

    *SERVICE

    NAME=< mq_service_name>

    FORMAT= MQIMSVS

    TRAN = N

    この< mq_service_name>ARTIGWの通知済サービスで、サービス名が構成可能です。詳細は、「ARTIGWの構成」を参照してください。

  3. TM_MQI構成ファイルの*SERVERセクションで、次のパラメータを指定する必要があります。
  4. *SERVER

    TPESVCFAILDATA=Y

    REPLYONSVCERR=Y

    MSGTYPEONTPFAIL=Y

    IMPORTMQMD=Y

  5. UBBCONFIGファイルでは、TM_MQIサーバーが、WebSphere MQ Resource ManagerのTMSサーバーによって構成されたグループ内に存在する必要があります。

ARTIGWの構成

ARTIGWは、非端末クライアントとARTIMPPサーバー間のブリッジとして機能するTuxedoサーバーです。詳細は、「サーバーの構成」を参照してください。

クロス・ドメイン構成

ARTIGWARTIMPPが異なるドメインにデプロイされている場合、ARTIGW<tuxclt_service_name>_REPLY_<grpid>_<srvid>および<mq_service_name>_REPLY_<grpid>_<srvid>という名前でサービスをエクスポートします。GRPIDSVRIDは5文字です(0で始まります)。

前述のサービス名は、ARTIMPPが属しているすべてのリモート・ドメインのDMCONFIGファイルのDM_REMOTE_SERVICESセクションで構成されている必要があります。さらに、ARTIGWが配置されている各ドメインによって適切なサービス名がエクスポートされ、サービス競合がないようにする必要があります。

たとえば、ARTIGWがドメインGWにあり、ARTIMPPがドメインMPPにあると想定します。ARTIGWは、SRVID=101, SRVGRP= GROUP1で、デフォルト・サービス名を使用するように構成されています。リスト5は、MPPおよびGWドメインに対するDMCONFIGファイルの例を示しています。

リスト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によって予期しないエラーが発生した場合、レポート・メッセージが生成され、元のメッセージによって指定されている応答キューに送信されます。レポート・メッセージには元のメッセージのデータは含まれておらず、エラー・メッセージの詳細を示す文字列のみが含まれています。

制限事項

非端末Oracle Tuxedoクライアントの制限事項

  1. グローバル・トランザクションはサポートされていません。ARTIGWへのtpcallがグローバル・トランザクションの場合、TPNOTRANフラグを設定する必要があります。
  2. ARTIMPPサービスへのアクセス時にアクセス制御違反がある場合、非端末クライアントは"アクセス制御違反"のようなエラー・メッセージをすぐには取得せず、タイムアウトが発生するまで待機します。ULOGを確認して、詳細なエラー・レポートを取得する必要があります。

MQアプリケーションの制限事項

  1. コミット・モード0 (COMMIT_THEN_SEND)のみがサポートされています。ARTIMSは、MQIIHに設定されているコミット・モード値に関係なく、常にトランザクションをコミット・モード0として処理します。
  2. RACFパスワードまたはパスチケットによる認証はサポートされていません。
  3. MFSトランザクションはサポートされていません。
  4. 会話はサポートされていません。
  5. 入力メッセージで指定するトランザクション・コードをコマンドにすることはできません。
  6. Tuxedo MQ Adapterはアクセス制御違反を検出し、配信不能キューに元のメッセージを配置します。応答キューにはレポート・メッセージはありません。エラー・レポートはULOGファイルにもあります。

ARTIMSの永続メッセージのサポート

ART 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は、サーバー構成のプロセスとおよびコマンドを示しています。

表18 サーバー構成のプロセスとコマンド
名前
説明
3270端末をART IMSランタイムに結合するために使用されます。
TPタイプCOBOL/Cプログラムのサービス・ハンドラおよびコンテナ。
ARTIMPPと同じただし、これには、RMとしてOracle Databaseが必要です。
BATCHタイプCOBOL/Cプログラムのプログラム・コンテナ。
ARTIBMPと同じただし、これには、RMとしてOracle Databaseが必要です。
トランザクション指向バッチ・プログラムを処理するOracle Tuxedoサーバー。
ART IMSランタイムの管理を担当するOracle Tuxedoサーバー。
異なるドメインに配置されているARTICTLARTIMPPの間のメッセンジャとして機能します。
非端末クライアントとARTIMPPサーバー間のブリッジとして機能するOracle Tuxedoサーバー。
z/OS上のソケット・サーバーであり、TCP/IPを介してARTIMSサーバーと通信するものです。

 


ARTICTL

名前

ARTICL: 3270端末をART IMSランタイムに結合するために使用されます。

説明

UBBCONFIGファイルのMACHINESセクションでMAXWSCLIENTSパラメータを指定する必要があります。MAXWSCLIENTSは、ARTICTLに対して特別な意味を持つ唯一のパラメータです。MAXWSCLIENTSは、3270端末専用に予約されているアクセス・スロットの数を、起動時にOracle ARTに通知します。

MAXWSCLIENTSに対して、ノードに接続できる3270端末の最大数を指定します。デフォルトは0です。指定しない場合、端末から、指定されたマシンに接続できません。

構文は、MAXWSCLIENTS=numberです。

形式:

ARTICTL SRVGRP="identifier"

SRVID="number"

CLOPT="[servopts options] -- -n netaddr -L pnetaddr [-m minh] [-M maxh] [-x session-per-handler]"

パラメータ

-n netaddr

このアドレスは、TN3270ターミナル・エミュレータがARTICTLサブシステムに接続する場所を指定します。アドレスは、標準インターネットURL書式の文字列です。例を示します。
//computer:4000 は、マシン・コンピュータのポート4000を示します。文字、1-256、A-Z、a-z、0-9、[/:-]。必須のオプション。

-L pnetaddr

このアドレスは、TCPLとCTLHの間でARTICTLサブシステムによって内部で使用されます。アドレスは、標準インターネットURL書式の文字列です。例: //computer1:4001は、マシン・コンピュータ上のポート4000を指定します。文字、1-256、A-Z、a-z、0-9、[/:-]。必須のオプション。

[-m minh]

ARTICTLによって開始されるハンドラ・プロセスの最小数であるminhは、1-255の数であり、そのデフォルト値は1です。ハンドラ・プロセスの実際の数は、システム負荷に基づいて、常に minhmaxhの間にあります。
注意: minhは1-255の数ですが、システム・リソースの制限に従って、それは、(FD_SETSIZE - 24)以下である必要があります。FD_SETSIZEは、1つのプロセスで一度に開くことができるファイルの最大数を意味します。この値は、システム・コマンドulimit -nを使用して取得できます。

[-M maxh]

ARTICTLによって開始されるハンドラ・プロセスの最大数であるmaxhは、1-1000の数であり、デフォルト値は1000です。ハンドラ・プロセスの実際の数は、システム負荷に基づいて、常に minhmaxhの間にあります。
注意: maxhは1-1000の数ですが、システム・リソースの制限に従って、それは、(FD_SETSIZE - 24)以下である必要があります。FD_SETSIZEは、1つのプロセスで一度に開くことができるファイルの最大数を意味します。この値は、システム・コマンドulimit -nを使用して取得できます。

[-x session-per-handler]

CTLHがARTICTLサブシステムで同時に維持できるセッションの数。
数値、1-255。デフォルト値は32です。

*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

名前

ARTIMPP: TPタイプCOBOL/Cプログラムのサービス・ハンドラおよびコンテナ。

説明

ARTIMPPは、TPタイプCOBOL/Cプログラムのサービス・ハンドラおよびコンテナとして機能するTuxedoサーバーです。ARTIMPPには2つの実行モードがあります。1つは標準モード(CLOPT-pの指定なし)のARTIMPP、もう一方は永続モード(CLOPT-pを指定)のARTIMPPです。

標準モードのARTIMPPは、フロントエンドから受け取ったサービス・リクエスト(端末、ARTIGWからのリクエスト)に従って、対応するCOBOL/Cプログラムを起動します。

永続モードのARTIMPPは、ARTIMPPCLOPTにある"-l class_list"パラメータでクラスが定義されている永続トランザクションの/Qを監視します。これは/Qからメッセージを受信し、対応するCOBOL/Cプログラムを起動します。

形式:

ARTIMPP SRVGRP="identifier"

SRVID="number"

CLOPT="[servopts options] -- – l class_list[-p][-x parameter list for DB plugin]"

パラメータ

[-l class_list]

トランザクション・クラスのリスト("1,3,5"など)、クラス範囲("1-3"など)、またはすべてのクラス(*)を指定します。クラスがclass_listで指定されているサービスは、標準モードのARTIMPPによって通知されます。

-p

ARTIMPPは永続モードです。永続モードのARTIMPPはサービスやトランザクションを通知しません。

[-x]

データベース・プラグインが使用されるサーバーを示します。"-x"に続く残りのパラメータ・リストはdb_init()に渡されます。

Oracle IMS/DBソリューションの場合、パラメータ・リストは次のとおりです。

-o host:port:dra

これは、IMS/DB用のOracleプラグインで必要とされるパラメータです。

host

接続先のODBAプロキシのホスト名またはipv4アドレス。

port

ODBAリクエストを受信するためのODBAプロキシのポート。

dra

アクセス先のIMS/DBシステムが定義されているDRA表の名前。例: CLOPT="-A -- -x -o zosmachine:1234:BEA1"
注意: UBBCONFIGファイルでARTIMPPサーバーが永続モードに構成されており、imsresource.descで永続トランザクションが構成されている場合、UBBCONFIGファイルで、imsresource.descの/Qの構成に従って(ARTIMPPの前に)TMQUEUEサーバーを構成する必要もあります。
注意: ART IMSを起動する前に、imsresource.desc内の情報に従って/Qを作成する必要もあります。

制限

ROLBまたはROLLを発行する永続トランザクションの場合、トランザクションは永続モード・サーバーの1つのARTIMPPによってのみ処理できます。つまり、(imstrans.descで定義された)トランザクションのCLASS定義は、永続モード・サーバーの1つのARTIMPP-lパラメータのみと一致します。

 


ARTIMPP_ORA

説明

ARTIMPP_ORAは、ARTIMPPのすべての機能を備えています。また、外部リソース・マネージャ(RM)として使用されるOracle Databaseもサポートできます。これは、Oracle Databaseによって提供されるいくつかのライブラリを使用します。Oracle Databaseでこの環境変数を使用するには、UBBCONFIGファイルでRMセクションを適切に構成する必要があります。

 


ARTIBMP

名前

ARTIBMP: BATCHタイプCOBOL/Cプログラムのプログラム・コンテナ。

説明

ARTIBMPは、BATCHタイプのCOBOL/Cプログラムのプログラム・コンテナとして機能するTuxedoサーバーであり、受信したプログラム名に応じて対応するCOBOLプログラムを起動します。

形式:

ARTIBMPSRVGRP="identifier"

SRVID="number"

CLOPT="[servopts options] -- [-x parameter list for DB plugin]"

パラメータ

[-x]

データベース・プラグインが使用されるサーバーを示します。"-x"に続く残りのパラメータ・リストはdb_init()に渡されます。

Oracle IMS/DBソリューションの場合、パラメータ・リストは次のとおりです。

-o host:port:dra

これは、IMS/DB用のOracleプラグインで必要とされるパラメータです。

host

接続先のODBAプロキシのホスト名またはipv4アドレス。

port

ODBAリクエストを受信するためのODBAプロキシのポート。

dra

アクセス先のIMS/DBシステムが定義されているDRA表の名前。例: CLOPT="-A -- -x -o zosmachine:1234:BEA1"

 


ARTIBMPT

名前

ARTIBMPT: トランザクション指向バッチ・プログラムを処理するOracleTuxedoサーバー。

説明

トランザクション指向BMPプログラムは、ARTIBMPTによって処理され、 ${IN}パラメータの指定されたDFSRRC00によってトリガーされる必要があります。

トランザクション指向BMPプログラムは、imstrans.descで定義され、imsapps.descでもTYPE=BATCHによって定義されているプログラムです。

トランザクション指向BMPプログラムは永続トランザクションにする必要があり、imsresource.descで定義する必要があります。

ARTIBMPTサーバーはトランザクション指向BMPプログラムのみを処理します。

形式

ARTIMPP SRVGRP="identifier" SRVID="number"

CLOPT="[servopts options] -- -l class_list -x parameter list for DB plugin"

パラメータ

[-l class_list]

トランザクション・クラスのリスト("1,3,5"など)、クラス範囲("1-3"など)、またはすべてのクラス(*)を指定します。クラスがclass_listで指定されているサービスは、ARTIBMPTによって公開されます。

Oracle IMS/DBソリューションの場合、パラメータ・リストは次のとおりです。

-o host:port:dra

これは、IMS/DB用のOracleプラグインで必要とされるパラメータです。

host

接続先のODBAプロキシのホスト名またはipv4アドレス。

port

ODBAリクエストを受信するためのODBAプロキシのポート。

dra

接続先のIMS/DBを指定する表の名前。このパラメータはオプションで、構成された場合は、すべてのDB操作がODBAを介して実行されます。そうでない場合、すべてのDB操作はオープン・システム上の実際のDB実装を介して実行されます。DRA表の名前は大文字で4バイト長にする必要があります。
注意: ARTIBMPTUBBCONFIGファイルで構成されており、トランザクション指向BMPトランザクションがimsresource.descで構成されている場合、UBBCONFIGファイルで、imsresource.descの/Qの構成に従ってTMQUEUEサーバーを構成する必要もあります。

制限

ROLBまたはROLLを発行するトランザクション指向BMPプログラムの場合、トランザクションは1つのARTIBMPTサーバーによってのみ処理できます。

つまり、(imstrans.descで定義された)トランザクションのCLASS定義は、1つのARTIBMPTサーバーの"-l class_list"パラメータのみと一致します。

 


ARTIBMP_ORA

説明

ARTIBMP_ORAは、ARTIBMPのすべての機能を備えています。また、外部リソース・マネージャ(RM)として使用されるOracle Databaseもサポートできます。これは、Oracle Databaseによって提供されるいくつかのライブラリを使用します。Oracle Databaseでこの環境変数を使用するには、UBBCONFIGファイルでRMセクションを適切に構成する必要があります。

 


ARTIADM

名前

ARTIADM: ART IMSランタイムの管理を担当するOracle Tuxedoサーバー。

説明

分散ターゲット環境では、このサーバーを各ノード上に構成して、構成の通知を実行することができます。これらのサーバーを使用すると、マスター・ノード上では、構成ファイルのみ構成する必要があり、管理サーバーは構成ファイルを各スレーブ・ノードに通知します。

起動時に、マスター・ノード上で動作している管理サーバーは、ディレクトリ${ART_IMS_CONFIG}にあるすべての構成ファイルを読み込みます。スレーブ・ノード上で動作する各管理サーバーの起動起動時には、マスター・ノード上の管理サーバーと通信して、構成ファイルの内容をフェッチします。

続いてスレーブ・ノード上の管理サーバーは、スレーブ・ノード上のディレクトリ${ART_IMS_CONFIG}にある、対応する構成ファイルに書き込みます。存在しない場合は、新しい構成ファイルが作成されます。

形式

ARTIADM SRVGRP="identifier"

SRVID="number"

CLOPT="[servopts options]"

 


ARTITERM

名前

ARTITERM: 異なるドメインに配置されているARTICTLとARTIMPPの間のメッセンジャとして機能します。

説明

クロス・ドメイン環境では、ARTITERMサーバーは、異なるドメインに配置されているARTICTLARTIMPPの間のメッセンジャとして機能するために使用されます。ARTITERMは、ARTIMPPに特別なサービスを提供し、したがって、ARTIMPPはデータをARTITERMに渡すことができ、それは次にそのデータをARTICTLに渡します。

形式:

ARTITERM SRVGRP="identifier"

SRVID="number"

CLOPT=""

 


ARTIGW

名前

ARTIGW: 非端末クライアントとARTIMPPサーバー間のブリッジとして機能するOracle Tuxedoサーバー。

説明

ARTIGWは、非端末クライアントとARTIMPPサーバー間のブリッジとして機能するOracle Tuxedoサーバーです。主な機能は次のとおりです。

形式:

ARTIGWSRVGRP="identifier"

SRVID="number"

CLOPT="[servopts options] [-m mq_service_name] [-s tuxclt_service_name] [-D trace_level]"

パラメータ

mq_service_name

サーバーから通知されるサービス名を指定します。これはMQアプリケーションのメッセージ処理専用です。このパラメータは省略可能で、このパラメータが存在しない場合は、デフォルト・サービス名<IMSGW_MQ_SVC>が使用されます。

tuxclt_service_name

サーバーから通知されるサービス名を指定します。これは非端末tuxedoクライアントのメッセージ処理専用です。このパラメータは省略可能で、このパラメータが存在しない場合は、デフォルト・サービス名<IMSGW_SVC>が使用されます。

[-D trace_level]

デバッグ・モードを有効にします。トレースは$APPDIR/logに配置されます。現在、trace_levelに設定できる値は0、1、2のいずれかです。この機能ではこれらの値に大きな違いはありません。
注意: mq_service_nametuxclt_service_nameはどちらも、先頭を"<domainid>_"にすることはできません。そうでなければ、ARTIGWはレスポンス・メッセージを正しく取得できません。この<domainid>は、ARTIMPPが属しているドメインのIDです。

 


ODBAPROX

名前

ODBAPROX: z/OS上のソケット・サーバーであり、TCP/IPを介してARTIMSサーバーと通信します。

説明

ODBAプロキシは、ソケット・サーバーであり、TCP/IPを介してARTIMSサーバーと通信します。ODBAPROXは、ARTIMS内のプログラムと通信するように開発され、これらのプログラムのかわりにデータベース処理を実行します。

形式:

ODBAPROX -h host -l command_port -p odba_port -n max_handler_num [-D]

パラメータ:

[-h]

ODBAプロキシが動作しているホスト(ホスト名またはipv4アドレス)を指定します。

[-l]

外部ユーティリティからコマンドを受信するためのポートを指定します。

[-p]

odbaリクエストを受信するためのポートを指定します。

[-n]

起動するハンドラの最大数を指定します。

[-D]

標準出力でのデバッグ情報の出力を有効化します。

詳細は、Oracle Tuxedo Application Runtime for IMSユーザーズ・ガイドのODBAプロキシの使用方法に関する項を参照してください。

 


セキュリティ構成

認証構成

Tuxedoでは、セキュリティ・メカニズムのどのタイプでも、すべてのユーザーがTuxedo ATMIアプリケーションの参加のプロセスの一部としてアプリケーション・パスワードを入力することが要求されますが、ART IMSでは、IMSがz/OS上に配置されている場合と同じ動作を保持するためにそれは削除されました。ユーザーはアプリケーション・パスワードをNULLとして保持する必要があります。Tuxedoアプリケーション・パスワードを構成する方法の詳細情報は、Tuxedoのドキュメントを参照してください。USER_AUTHおよびACL/必須ACLセキュリティ・メカニズムでは、ユーザーはART IMSランタイムに参加するために有効なユーザー名とパスワードを入力することが要求されます。ユーザーごとのパスワードは、tpusrという名前のファイルに格納されたユーザー名に関連付けられているパスワードと一致する必要があります。クライアント名は、使用されません。tpusrのパスワードおよびユーザー名に対するユーザーごとのパスワードの照合は、Tuxedo認証サーバーAUTHSVRによって提供される、Tuxedo認証サービスAUTHSVCによって行われます。Tuxedo USER_AUTHおよびACL/必須ACL認証を構成する方法の詳細は、Tuxedoのドキュメントを参照してください。

 


環境変数

 


コマンドとパラメータ

表 19は、3270端末上で入力でき、ARTIMSで処理できるコマンドおよび関連するパラメータを示しています。

表 19 3270端末のコマンドとパラメータ
表 20 コマンド 表 21 短縮形 表 22 パラメータ
/EXIT
/EXI
None
/Format
/Forma,
/Form,
/For
modname
/Sign
/Sig
None
Userid Passwd
On
On Userid Passwd
Off

 


構成ファイル

この項のすべての構成ファイルで、キーおよび非リテラル値について大文字小文字が区別されません。例: bool (yes|no)およびenumリテラル値とそれらの大文字小文字は保持されます。コメント行には、前に"*"を付ける必要があります。

構成ファイルは次のとおりです。

構成ファイルの一般的な形式は次のとおりです。

リスト6 一般的な構成ファイルの形式
[section name]
Field1=value1
Field2=value2
….
[section name]
….
[section name]

トランザクション定義 - imstrans.desc

表23は、z/OS上のIMSのTRANSACT MACROからフィールド名がマップされた構成ファイルの例を示しています。

表 23 セクション名: [imstran]
フィールド
タイプ
説明
TRANSACTのフィールド
NAME
X(1..8)
Mandatory
トランザクション・コード
CODE
SPA_SIZE
Integer
[16..32767]
SPAサイズ
SPA
RESPONSE
Bool
Yes|No
"NAME"フィールドに指定されているトランザクション・コードに応答が必要かどうか。デフォルトはNoです。
MSGTYPE
EDIT
enum
UC/ULC
メッセージが自動的に大文字に変換されるかどうか。デフォルトはUCです。
EDIT
APPNAME
X(1..8)
Mandatory
"NAME"フィールドで指定されているトランザクション・コードを処理するCOBOLアプリケーション・プログラムの名前。
N/A
CLASS
Integer
[1..999]
トランザクション・コードのクラス。デフォルトは1。
MSGTYPE

アプリケーション定義 - imsapps.desc

表24は、z/OS上のIMSのAPPLCTN MACROからフィールド名がマップされた構成ファイルの例を示しています。

表 24 セクション名: [imsapp]
フィールド
タイプ
説明
APPLCTNのソース
NAME
X(1..8)
Mandatory
アプリケーション名
N/A
PGMTYPE
Enum
TP|BATCH
MPPの場合はTP、BMPおよびBMPTの場合はBATCH。デフォルトはTP。
PGMTYPE
LANG
Enum
COBOL|C
cobolプログラムの場合はCOBOL、cプログラムの場合はC。デフォルトはCOBOL。
LANG

永続トランザクションの定義 - imsresource.desc

このファイルで定義されるトランザクションはすべて永続トランザクションです。プログラム切替えによる永続トランザクションに対するメッセージは/Qに格納されます。ART IMSを起動する前に、このファイル内に構成された対応するキュー・スペースに、キュー名をトランザクション名と同じにして、すべての永続トランザクション用の/Qを作成する必要があります。表25に、imsresource.descのフィールド名をリストします。

表25 セクション名: [imsresource]
フィールド
タイプ
説明
TRANSACTのフィールド
QSPACE
X(1..16)
Mandatory
Qspaceの名前。
 
TRANNAMES
X(1..1024)
Mandatory
永続トランザクションの名前。トランザクション名はカンマ区切りで表せます(例: TRAN1, TRAN2)。トランザクション名は8バイト以内にする必要があります。
N/A

リスト7は、キュー・スペースと参照用のキューを作成するためのスクリプト例を示しています。このスクリプトを実際の要件に合わせてカスタマイズできます。詳細は、Oracle Tuxedo /Qのガイドを参照してください。

リスト7 キュー・スペースの作成スクリプトの例
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

imsdbs.descは、 $ART_IMS_CONFIGの下にあります。

一部のimsdbs.descフィールド構成は、z/OS上のIMSのなんらかのDBD文からマップされています。ROLBまたはROLLを発行する永続トランザクションの場合、トランザクション・キューの作成の再試行回数は、比較的大きな数に設定する必要があります(設定可能な最大値は2147483647)。

注意: 再試行回数は、特定のメッセージが永続トランザクションに入れられる回数の2倍以上の数に設定することをお薦めします。

表26 セクション名: [imsdb]
フィールド
タイプ
説明
DBDのソース
NAME
X(1..8)
database name
データベース名
NAME
ACCESS
Enum
GSAM|MSDB|DEDB|HDAM|HIDAM|HISAM|HSAM|PHDAM|PHIDAM|PSINDEX|SHSAM|SHISAM
GSAMは、GSAM DBを意味します。
ACCESS
次のフィールドはACCESS=GSAMにのみ適用可能であり、ACCESS != GSAMの場合は無視されます。
 
DD1
X(1..8)
Literal String
入力ファイル名。この名前がJCL内で同じDD名を使用して定義されている場合、実際の入力ファイルは、JCL内のDD名に関連付けられているDSNNAMEによって決定されます。そうでない場合、実際の入力ファイルは$ART_IMS_DB/Input file nameになります。
N/A
DD2
X(1..8)
Literal String
出力ファイル名。この名前がJCL内で同じDD名を使用して定義されている場合、実際の出力ファイルは、JCL内のDD名に関連付けられているDSNNAMEによって決定されます。そうでない場合、実際の出力ファイルは$ART_IMS_DB/Output File Nameになります。
N/A
MINRECORD
整数
正の整数
RECFM=Vの場合はレコードの最小長。その値の範囲は1~268435455
N/A
MAXRECORD
整数
正の整数
RECFM=Vの場合はレコードの最大長。その値の範囲は1~268435455
N/A
RECFM
Enum
F|V
F: 固定長レコード
V: 可変長レコード
N/A
RECORD
Integer
正の整数
RECFM=Fの場合はレコード長。その値の範囲は2~32579
N/A

PSB定義 - $appname.psb

$appnameは、imsapps.descでタイプがTPと定義されているCOBOLアプリケーション・プログラムの名前であり、$appname.psbは、それに対応するPSB定義ファイルです。タイプがBATCHのアプリケーション・プログラムの場合は、$appname.psbは使用されず、DFSRRC00を呼び出すスクリプトによってPSBが提供される必要があります。

表27は、z/OS上のIMSのPCB文からフィールド名がマップされた構成ファイルの例を示しています。

表27 セクション名: [imspcb]
フィールド
タイプ
説明
PCBのソース
NAME
X(1..8)
blank or transaction code name
タイプがTPである場合、このフィールドはトランザクション・コードを表し、代替PCBに対してトランザクション・コードのみがサポートされます。modify = noの場合は必須であり、modify = yesの場合はオプションです。
タイプがDBの場合、このフィールドはDB名を表します。このフィールドは、GSAM PCBの場合に構成する必要がありますが、DB PCBの場合はオプションです。詳細は、PROCSEQフィールドを参照してください。
NAME
TYPE
enum
TP|GSAM|DB
TPは代替PCBを意味します。
GSAMは、GSAM DB用のPCBを意味します。
DBは、DEDB用のPCBを意味します。
TYPE
LIST
Bool
Yes|No
名前指定したPCBが、エントリ時にアプリケーション・プログラムに渡されたPCBリストに含まれているかどうかを指定します。LABER=パラメータと組み合せる必要があります。
LIST
次のフィールドはTYPE=TP、つまり代替PCBにのみ適用可能であり、構成されているがTYPE!=TPの場合は無視されます。
 
MODIFY
Bool
Yes|No
このPCBが変更可能かどうか。デフォルトはnoです。
MODIFY
EXPRESS
Bool
Yes|No
これが高速PCBかどうか。デフォルトはnoです。
EXPRESS
LABEL
X(8)
YES
このパラメータは、ODBAを使用している場合にDB PCBに対して必須です。また、DL/Iを呼び出すためにAIBTDLIインタフェースが使用されている場合に代替PCBに対して必須です。
PCBNAME
PROCSEQ
X(8)
データベース名の索引付け
このフィールドが構成されている場合、それがDB PCBの最初の8バイトに入力される必要があり、それ以外の場合は、NAME= によって指定された値が、DB PCBの最初の8バイトに入力される必要があります。DB PCBに対して、少なくとも1つのNAM=およびPROCSEQ=が構成されている必要があります。
PROCSEQ
PROCOPT
X(4)
GSAM: one of G|L|GS|LS
DEDB: One or Combination of A|G|I|R|D|P|O|N|T|E|L|GS|LS|H
このフィールドは、関連するデータベースのアクセス権を定義します。このフィールドは、TYPE=GSAM|DBの場合にのみ有効であり、構成されているがTYPE=TPの場合は無視されます。
GSAM: G|GS - 取得のみ。L|LS - 取得と追加。
DEDB: TBD
DEDB: ARTIMSサーバーは、PROCOPTの妥当性を確認しません。これは、z/OS上のIMSから移行されたもので、DBプラグインによってのみ使用されます。
PROCOPT
次のフィールドはTYPE=DB、つまりGSAM PCBにのみ適用可能であり、構成されているがTP!=DBの場合は無視されます。
 
SB
Enum
COND|NO
このPCBがバッファされる必要があるかを指定します。
SB
POS
Enum
SINGLE|MULTIPLE
論理データ構造の1つまたは複数の位置を指定します。
POS
KEYLEN
int
正の整数
センシティブ・セグメントの階層パスに対する連結キーの最長バイト数を指定します。
KEYLEN
MSDB
bool
YES|NO
MSDBコミット・ビューを指定します。
VIEW
SENSEG
X(8)
リテラル文字列
このPCBに属しているSENSEG名を指定します。現在のPSBファイルで一意である必要があります。
 
セクション名: [$SEGSEG]
 
セクション名は、imspcbセクションでSENSEGアイテムによって定義します。
 
NAME
X(8)
リテラル文字列
セグメント名を指定します。
SENSEG - NAME
PARENT
X(8)
リテラル文字列|0
セグメントの親の名前です。
SENSEG - PARENT
PROCOPT
X(4)
A|G|I|R|D|P|O|E|L|GS|LS|Hのいずれか、または組合せ
処理オプションがこのセンシティブ・セグメントの使用に適しているかどうかを示します。SENSEG PROCOPTPCB PROCOPTをオーバーライドします。
SENSEG - PROCOPT
SSPTR
構造体の配列
整数の1つまたは組合せ、R|U(セミコロンでリンク)
サブセットのポインタ番号と、ポインタの機密性を指定します。
SENSEG - SSPTR
INDICES
X(8)
リテラル文字列
SSAを索引付きセグメント・タイプに限定するために使用する検索フィールドを含む2次索引を指定します。
SENSEG - INDICES
SENFLD
X(8)
リテラル文字列
このSENSEGに属しているSENFLD名を指定します。現在のPSBファイルで一意である必要があります。
 
セクション名: [$SENFLD]
X(8)
 
セクション名は、sensegセクションでSENFLDアイテムによって定義します。
 
NAME
X(8)
リテラル文字列
フィールド名を指定します。
SENFLD - NAME
START
Int
正の整数[1-32767]
このフィールドの開始位置を、セグメントの開始位置と相対的に指定します。
SENFLD - START
REPLACE
bool
YES|NO
このフィールドが置換呼出しで変更可能かどうかを指定します。
SENFLD - REPLACE

セグメント定義 - segments.desc

segments.descは、データベース内のセグメントを定義します。1つのデータベース(GSAMデータベースを除く)は、1つのsegments.descを持ち、それは$ART_IMS_CONFIG/db/$dbnameの下にあります。

segments.desc内のフィールドは、DBDのSEGM文からマッピングされています。

表28 segments.desc
フィールド
タイプ
説明
SEGMのソース
NAME
X(1..8)
必須
セグメント名。
NAME
BYTES
Integer
必須
セグメントの最大長(4~32760)。
BYTES
SEGPGM_A2E
X(1..128)
オプション
セグメント・データをオープン・システムからメインフレームに変換するために使用するCOBOLプログラムの名前。
N/A
SEGPGM_E2A
X(1..128)
オプション
セグメント・データをメインフレームからオープン・システムに変換するために使用するCOBOLプログラムの名前。
N/A
SSAPGM_A2E
X(1..128)
オプション
セグメントに限定されたSSAをオープン・システムからメインフレームに変換するために使用するCOBOLプログラムの名前。
N/A
KFAPGM_E2A
X(1..128)
オプション
セグメントのキー・フィードバック領域をメインフレームからオープン・システムに変換するために使用するCOBOLプログラムの名前。
N/A

注意: 可変長セグメントの場合、BYTES定義がSEGM文からマップされ(BYTES= (max bytes,min bytes)など)、最大バイト数は最小バイト数以上である必要があります。可変長セグメントは、2バイト・フィールドで始まる必要があり、それによって、その2バイトの長さのフィールドを含めたセグメントの長さが定義されます。
注意: SEGPGM_A2ESEGPGM_E2AおよびSSAPGM_A2EKFAPGM_E2Aの場合:
注意: 1. 上述の4つのパラメータがどれもsegments.descで定義されていない場合、$segname.descが存在する必要があり、後述するデータ変換を行うために$segname.descが使用されます。
注意: 2. SEGPGM_A2ESEGPGM_E2A
注意: SEGPGM_A2ESEGPGM_E2Aは、両方合わせて定義済であるか、未定義である必要があります。SEGPGM_A2ESEGPGM_E2Aが定義済の場合、ODBAプラグインはSEGPGM_A2E/SEGPGM_E2Aを使用してセグメント・データの変換を実行します。この場合、$segname.descが存在していても、$segname.descがセグメント・データの変換の実行に使用されることはありません。
注意: SEGPGM_A2ESEGPGM_E2Aが未定義の場合、ODBAプラグインは$segname.descのFIELDS定義を使用してセグメント・データの変換を実行します。
注意: 3. SSAPGM_A2E
注意: SSAPGM_A2Eが定義されている場合、ODBAプラグインは定義済のCOBOLプログラムを使用して、このセグメントの限定されたSSAの変換を実行します。
注意: SSAPGM_A2Eが定義されていない場合、ODBAプログラムは$segname.descKEYフィールド・タイプ定義を使用して、このセグメントのSSAのKEY値を変換します。
注意: 4. KFAPGM_E2A
注意: KFAPGM_E2Aが定義されている場合、ODBAプラグインは定義済のCOBOLプログラムを使用して、このセグメントのキー・フィードバック領域のデータ変換を実行します。
注意: KFAPGM_E2Aが定義されていない場合、ODBAプログラムは$segname.descFBAFIELD定義を使用して、このセグメントのキー・フィードバック領域のデータ変換を実行します。
注意: 上述のCOBOLプログラムの生成およびコンパイル方法については、Oracle Tuxedo Application Rehosting Workbenchユーザー・ガイドおよびOracle Tuxedo Application Rehosting Workbenchリファレンス・ガイドのバッファ変換に関する項を参照してください。
注意: ART IMSサーバーを起動する前に、コンパイル済の変換プログラムをCOBPATH (Microfocusの場合)またはCOB_LIBRARY_PATH (CITの場合)の下に配置します。

セグメント内の定義 - $segname.desc

$segname.descは、セグメント内のフィールドを定義します。$segname.descは、imsdbs.descでGSAMとMSDBのどちらでもないアクセス・タイプが定義されているデータベースに対してのみ存在します。$segname.desc$ART_IMS_CONFIG/db/$dbnameの下に配置されています。

表29 $segname.desc
[imsdb]フィールド
タイプ
説明
SEGMのソース
NAME
X(1..8)
必須
フィールド名
NAME
START
Integer
必須
フィールドのオフセット、セグメント内、セグメントの0~の長さ- 4
START
BYTES
Integer
必須
フィールドの長さ、4-32760
BYTES
TYPE
Enum
Mandatory
C: 英数字文字列、変換が必要です。
P: パック10進数、変換は必要ありません。
X: 16進数、変換が必要です。
M: 混合タイプ、FIELDに様々なタイプのサブ・ピースが含まれている場合に使用します。変換が必要です。
TYPE
FORMAT
X(1...512)
Optional
TYPE=Mの場合のみ必要(必須)。
この形式の構成ルールは次のとおりです。
format=PIECE1-LEN,PIECE1-TYPE;PIECE2-LEN, PIECE2-TYPE; PIECE3-LEN, PIECE3-TYPE.
例: format=3,P;4,C;3,p
次の項目に注意してください。
1. PIECE-TYPEC/P/Xにする必要があります。
2. 処理は許可されません。
3. フォーマット文字列がフィールド内のすべてのバイトに対応する必要があります。
N/A

フィールド・タイプの定義はDBDのFIELD文によるものだけではありません。ユーザーはCOBOLプログラムでの使用方法に従ってフィールド・タイプを定義する必要もあります。

フィールドのタイプを定義しない場合、デフォルトのフィールド・タイプはCになります。

表30は、COBOLプログラムでの使用方法に基づくフィールド定義のマッピング表を示しています。

表30 フィールド定義のマッピング表
COBOL Picture
説明
IMSタイプ
PIC X
英数字の表示
C
PIC 9
数値表示
C
PIC S9
符号付き数値の表示
C
PIC S9 COMP-3
パック10進数
P
PIC S9 COMP、PIC S9 COMP-4
バイナリ
X

会話/変換ルールは次のとおりです。

取得またはISRT呼出しが完了すると、ODBAプロキシからキー・フィードバック領域が返されます。DB PCBでキー・フィードバック領域を変換するために、FBAFIELDという名前の特別なFIELDが予約されています。

セグメント連結キーは、それぞれの親のキーと独自のキーで構成されます。キー形式は左から右へと配置され、ルート・セグメントのキー形式で始まり、階層パスが続きます。

$segmentで定義されているこの特別なFIELD(FBAFIELD)によって、セグメントの連結キーの形式を定義する必要があります。キー・フィードバック領域は、segnameでのこのフィールドの定義に従って変換されます。

リスト8は、$segname.descの定義例を示しています。

リスト8 定義例
[field]
NAME=FBAFIELD
START=0
BYTES=11
TYPE=M
FORMAT=5,P;6,C

STARTは0にする必要があります。

BYTESはキー・フィードバック領域の長さ合計(つまり連結キーの長さ合計)を定義します。

TYPEは連結キーのタイプを定義します。連結キーに異なるタイプが含まれる場合は、TYPEMに設定する必要があります。

TYPE=Mの場合、FORMATで連結キーの形式を定義する必要があります。

$ segname.descで特別なFIELD(FBAFIELD)が定義されていない場合、segnameではキー・フィードバック領域がデフォルトでTYPE Cとして変換されます。

注意: SSAの検索キー・フィールドの場合、フィールド名は、DBDで定義されている検索KEY FIELD名、およびSSAで使用されている名前と同じである必要があります。

 


関連項目


  先頭に戻る       前  次