残りのトピックの情報は、DDM の大半のユーザーにとっては必要ではありません。ここで述べる情報は、
主として DDM に関してさらに詳細な情報を必要とする熟練したプログラマーを対象としています。
以下で説明するのは、下記の各事項に関する詳細な概念と例です。
v TDDM (ターゲット・ジョブ) を始動するためのプログラム開始要求。
v ファイルへアクセスするために使用するオープン・データ・パス (ODP)。
v リモート・ロケーションの情報。
v ソース側とターゲット側の通信用に確立された DDM 会話。
v ソース・ジョブとターゲット・ジョブ。
v ジョブでの入出力操作。
DDM のクライアント・システムとしての IBM i:
これらの処置はすべて、サーバー・システム上で必要な処置も含めて、ソース・プログラムが要求する操作
(ファイルまたは非ファイル) を行う前に、正常に完了している必要があります。
DDM ファイルが参照されると、次のことが行われます。
v 要求がファイルのオープンであれば、そのファイルの情報を使用して、クライアント・システムでのオ ープン・データ・パス (ODP) の作成と、SDDM サポートの始動が同時に行われます。このサポート は、ソース・プログラムと同じジョブ内で稼働するものです。 SDDM は、クライアント・システム要求 を DDM 要求に変換したり、適切なサーバー・システムとの通信を実行したり、ソース・ジョブで使用 する DDM 会話を確立するといった情報も使用します。(ODP の一部のみ、 DDM ファイル情報を使っ て作成されます。したがって、DDM 会話が確立された後 SDDM が残りの情報の処理を終了しないうち は、ODP を使用することはできません。)
v DDM の通信部分は、サーバー・システムとの通信パスを確立します。サーバー・システム は、DDM ファイル内に指定されるリモート・ロケーション情報で識別され、ターゲット・ファイル は、リモー ト・ファイル名で識別されます。リモート・ロケーションに関するその他の情報は、DDM ファイルに保 持されず、SDDM によって保管されます。この情報には、トランザクション・プログラム名、ユーザー
ID、活動化グループ数、および会話の有効範囲が含まれます。 TDDM はリモート・ロケーション情報
を使ってサーバー・システムで始動され、リモート・システムがプログラム開始要求を受け取ったと き、DDM 会話が確立されます。会話はリモート・ファイルが初めてアクセスされたときに確立されます が、それは、そのサーバー・システムのための同じリモート・ロケーション値を用いる会話が、ソー ス・ジョブ用として存在しない場合に限られます。
v ファイル関連要求の場合、DDM 会話の確立が終了すると、SDDM (同一ソース・ジョブ内の複数のプロ グラムと複数の DDM ファイルによる使用が可能) は、DDM 体系コマンドを TDDM に送ります。こ のコマンドは、実行すべきファイル操作について記述し、アクセスすべきリモート・ファイル (DDM フ ァイル内で指定された) の名前を含んでいます。リモート・コマンド投入 (SBMRMTCMD) コマンドを使用 するような、非ファイル関連要求の場合、リモート・ファイル名は TDDM には送られません。リモー ト・ファイル名は無視されます。
SDDM は、ファイル・オープンや入出力操作などの各プログラム要求 (DDM ファイルと ODP を使用し て受け取る) を、それと同等の DDM コマンド要求に変換してから、サーバー・システムに送ります。
次の図は、リモート・ファイルへのアクセスに関係した、クライアント・システムの基本部分を示していま す。
各要求をターゲット・ジョブが処理し終わると、サーバー・システムから DDM 応答が返されますが、こ の応答は SDDM によって適切な形式に変換されてから、ユーザーに返送されます。この応答には、データ
(データを要求した場合) や状況を示す情報 (他のタイプのファイル・アクセスの場合) が入っていることが
あります。ソース・プログラムは、要求した機能の完了および結果の受信待ちになります。
次の図は、リモート・ファイルへの標準的なアクセス要求の場合の、クライアント・システムとサーバー・
システム間のデータ交換を単純化して表した例です。
図13. DDM クライアント・システムとしての IBM i
ジョブ内でオープンされた最初の DDM ファイルがクローズされても、通常はそのファイルが使用した DDM 会話は活動状態のままです。このため、その同じプログラムまたはそのジョブ内の別のプログラム は、別の DDM ファイルをオープンするときや、他の DDM 関連操作を実行するときに、その同じ会話を 使用することができます。(たとえば、37ページの図16 にあるとおり、ソース・ジョブ 3A には、同一の 会話を使用する 2 つの DDM ファイルがあります。) これで、同一のリモート・ロケーション情報を使用 する別々の DDM ファイルをジョブ内で使用する場合の、時間と資源を費やして新たに会話を確立する手 間が省けます。
DDM ファイルをクローズしても DDM 会話は活動状態のままですが、SDDM がプログラムからの次の DDM 関連の要求を処理するまでは、その会話では何も起きません。ただし、会話が使用中でなければ、そ れを除去することができます。除去されるのは、ジョブ変更 (CHGJOB) コマンドで DDMCNV ジョブ属性 のデフォルト値 *KEEP を *DROP に変更した場合、または、ジョブの活動中に DDM 会話再使用
(RCLDDMCNV) コマンドや資源再使用 (RCLRSC) コマンドを使用した場合です。
関連概念:
23ページの『DDM の構成要素: ソース DDM』
クライアント (または、ローカル) システム上のサポートは、DDM 機能を行うために必要に応じてソー ス・ジョブ内で開始されます。
統合言語環境と DDM:
Integrated Language Environment® (ILE) は、IBM i ジョブ内で実行される活動化グループの概念を導入し ます。活動化グループとは、実行時ジョブの副構造のことです。
活動化グループは、1 つ以上のプログラムに割り当てられるシステム資源 (プログラムまたはプロシージャ ーの変数、コミットメント定義、およびオープン・ファイル用の記憶装置) によって構成されています。活 動化グループは、ジョブ内の小さなジョブのようなものです。 デフォルトでの DDM 会話の有効範囲はす べて、活動化グループ・レベルまでです。 有効範囲によって、使用できるシステム資源の境界が指定され ます。それぞれ異なる活動化グループ内で実行される複数のプログラムの場合、それらが同一 DDM ファ イル情報や同一リモート・ロケーション情報を使用するとしても、DDM 会話は別々に始動します。 既存 DDM 会話の共用が行われるのは、その活動化グループ内に限ります。 OPNDBF コマンド上で OPNSCOPE
(*JOB) を指定すれば、DDM 会話の有効範囲をジョブ・レベルにまで広げることができます。
図14. 入出力操作要求の一般的処理法
サーバー・システムのタイプに従属するクライアント・システム・アクション:
クライアント・システムが IBM i でもシステム/38 でもない場合は、レベル 2.0 以前の DDM 体系で定 義された DDM 体系コマンドのみが使用されます。
クライアント・システムが IBM iまたはシステム/38 であれば、そのアーキテクチャーに対する IBM i や システム/38 の拡張機能が使用され、レベル 2.0 DDM 体系で定義されていない特定の操作がサポートされ るようになります。このアーキテクチャーに対するシステム/38およびIBM i 拡張機能の例には、リモー ト・コマンド投入 (SBMRMTCMD) やリモート・ファイルのファイル・メンバーの処理などがあります。クラ イアントが IBM i であり、サーバーも IBM i のときにファイルを作成する場合は、IBM i 拡張機能が使 用されます。
サーバー・システムが IBM i でもシステム/38 でもない場合は、IBM i やシステム/38 で処理できる機能 をすべて処理できるとは限りません。例えば、システム/36 では、1 つのオープン操作での相対レコード処 理とキー付きレコード処理はサポートしないため、ファイル内のレコードに対して、キーまたは相対レコー ドによるアクセスが混在しているプログラムは、ファイルがシステム/36 にある場合は機能しません。さら に、レベル 2.0 の DDM 体系をサポートしていないサーバー・システムでは、そのシステムでサポートし ているレベルで定義されている機能しか処理できません。
フォルダー管理オブジェクトへのアクセスは、システム/36 でもシステム/38 でもサポートされていませ ん。
注: IBM i オペレーティング・システムでフォルダー管理サービス (FMS) オブジェクトへアクセスできる のは、ストリーム・ファイル (レコード境界のない連続フィールドにデータが読み取られ、また書き込まれ るディスク上のファイル) 用とディレクトリー用のレベル 2.0 の DDM 体系 (例:DDM を使用する IBM パーソナル・コンピューター) をクライアント・システムがサポートする場合のみです。
IBM i クライアントは、ストリーム・ファイルとディレクトリーへのアクセスはサポートされません。
DDM のサーバー・システムとしての IBM i:
IBM i ターゲット DDM (つまり TDDM) は、実際には DDM 関連のサーバー・システム・プログラムを 実行するジョブです。これは、クライアント・システムがプログラム開始要求を送る (SDDM) と始動しま す。
クライアント IBM i システムの場合、プログラム開始要求の始動は、 IBM 提供の DDM 用のシステム間
通信機能 (ICF) ファイルに入っている情報を使用して、クライアント・システムで行われます。アクセス
された DDM ファイル内のリモート・ロケーション情報を使用して、プログラム開始要求は該当するサー バー・システムへ送られます。
ターゲット・ジョブの属性は、通信項目追加 (ADDCMNE) コマンドで指定する値によって決定されます。こ のコマンドは、そのジョブで使用されるサブシステム記述に通信項目を追加するため、サーバー・システム で使用されるものです。またこのコマンドは、サブシステムが使用する装置記述、ジョブ記述 (ターゲッ ト・ジョブのライブラリー・リストも含む)、およびデフォルト・ユーザー・プロファイルを識別します。
IBM i Access Family 接続の場合、DDM 用の QIWS サブシステム内の経路指定項目 (CMPVAL ('DDM')) は、パーソナル・コンピューターの接続先の装置記述も使用して、ターゲット・ジョブの属性を明らかにし ます。
TDDM は、始動後に以下を行います。
v データベース・ファイルの場合
– APPC、TCP/IP、または IBM i Access Family データ・リンクを使用して確立された DDM 会話を使 用して、クライアント・システムとの通信を処理します。
– クライアント・システムからのアクセス要求をそれに相当するシステム機能に変換し、サーバー・シ ステムで実行します。ターゲット・オブジェクトを見つけた後、サーバー・システム作成の ODP と ターゲット・データベース管理サービスが使用されて、要求のあった操作のためにそのオブジェクト へのアクセスが行われます。たとえば TDDM は、オブジェクトをオープンした後、そのオブジェク トに対する所定の入出力操作の要求を渡すことができます。
– クライアント・システム (クライアント側が IBM iかシステム/38 の場合) から要求を受信すると、
DDM レベル 2.0 アーキテクチャーに対する IBM i またはシステム/38 拡張機能が組み込まれ、これ により、ローカル・システムで機能するほとんどの IBM i 機能が、リモート側の IBM i システムで も機能するようになります。たとえば、現行ターゲット・ジョブ内のライブラリー・リストの置き換 えにライブラリー・リスト置換 (RPLLIBL) CL コマンドを使用するなど、非ファイル関連操作を実行
する SBMRMTCMD コマンドをクライアント・システム (IBM iまたはシステム/38) から受け取ることが
できます。
– ターゲット IBM i 応答を同等の DDM 応答に変換し、クライアント・システムに送り返します。ク ライアント・システムが IBM i またはシステム/38 の場合は、実際の IBM i またはシステム/38 の メッセージがクライアント・システムに送り返されます。
v フォルダー管理サービス・オブジェクトの場合
DDM ストリームとディレクトリーへのアクセス要求を、同等の IBM i フォルダー管理サービス機能に 変換し、ターゲット・サーバーで実行します。 以下のコマンドがサポートされます。
– 現行ディレクトリー変更 (CHGCD) – ファイル属性変更 (CHGFAT)
– ディレクトリー・クローズ (CLSDRC) – 文書クローズ (CLOSE)
– ファイル・コピー (CPYFIL) – ディレクトリー作成 (CRTDRC)
– ストリーム・ファイル作成 (CRTSTRF) – ディレクトリー削除 (DELDRC)
– ファイル削除 (DELFIL) – バッファー強制 (FRCBFF)
– データ・ストリーム GET (GETSTR) – ディレクトリー項目 GET (GETDRCEN) – ファイル属性リスト (LSTFAT)
– ストリーム・ファイル・ロード (LODSTRF) – データ・ストリーム・ロック (LCKSTR) – ディレクトリー・オープン (OPNDRC) – 文書オープン (OPEN)
– データ・ストリーム PUT (PUTSTR) – 現行ディレクトリー QUERY (QRYCD) – 使用可能スペース QUERY (QRYSPC) – ディレクトリー名変更 (RNMDRC) – ファイル名変更 (RNMFIL)