データベースおよびセグメント

FM/IMS を使用して、IMS データ編成モデルを操作することができます。IMS は、データを保管する基本方式として階層モデルを使用します。このモデルでは、個々のエンティティー・タイプは、階層構造の中のセグメントとしてインプリメントされます。

階層データ構造の基本構築エレメントは、データのセグメント間の親/子関係です。親セグメントの各オカレンス (インスタンス) は、子セグメントの 0、1、2、または それ以上のオカレンスと関連付けられています。それぞれの子セグメントのオカレンスは、親セグメントの 1 つの (1 つだけの) オカレンスと 関連付けられています。親セグメントのないセグメント (すなわち、最上部のセグメント) は、ルート・セグメントと呼ばれます。場合によっては、セグメント・タイプ (すなわち、セグメントの種類) とセグメント・オカレンス (すなわち、セグメント・タイプの特定のインスタンス) を区別する必要があります。

1. 階層データ構造

この図は IMS の階層データ構造を示しています。PART セグメントは STOCK および PURCHASE ORDER セグメントの親であり、PURCHASE ORDER セグメントは DETAIL セグメントの親です。

IMS では、「データベース」という用語は一般に、1 つの階層のインプリメンテーション (すなわち、構造内で定義されているさまざまなセグメント・タイプとそれらタイプ間の関係) を記述するのに使用します。階層データ構造 では、従属する STOCK、 ORDER、および DETAIL セグメント を持つ各 PART セグメントが、1 つのデータベース・レコードを構成しています。すべての PARTS についてこれらレコードをすべて収集したものを データベース (すなわち、PARTS データベース) と呼びます。

注: 上記の情報は、2000 年 1 月発行の IBM Redbook、「IMS Primer」(SG24-5352-00) の 69 ページから抜粋修正したものです。

階層構造は、セグメントと、必要なアクセス・パスとの間の関係に基づいて データベースの設計者によって決定されます。この構造は、データベース定義 (DBD) で定義されます。FM/IMS を介してデータベースにアクセスするには、DBD が保管されているデータ・セット・メンバーを指定する必要があります。また、DBD は、データベース・タイプ (アクセス方式) およびセグメント・データが保管されているデータ・セットの DD 名も定義します。これらの DDNAMES に割り振られるデータ・セットの名前は、DFSMDA 動的割り振りメンバー (BMP モードで必須) に保管されるか、ユーザーによって定義されます。DL/I モード・アクセスでは、ご使用のシステムで許可されている場合は、ユーザーが指定したデータ・セット名が受け入れられます。

FM/IMS は、データ編成の IMS モデルを使用して、 多数の異なる IMS データベース・タイプをサポートします。これらのタイプは、以下の通りです。

  • HDAM - 階層直接アクセス方式
  • HIDAM - 階層索引直接アクセス方式
  • HISAM - 階層索引順次アクセス方式
  • SHISAM - 単純階層索引順次アクセス方式
  • HSAM - 階層順次アクセス方式 (BSAM あるいは QSAM のみ)
  • SHSAM - 単純階層順次アクセス方式 (BSAM あるいは QSAM)
  • INDEX - 索引データベース
  • DEDB - データ入力データベース (ファースト・パス)
  • MSDB - 主記憶データベース (ファースト・パス)
  • PHDAM - 区画に分割された階層直接アクセス方式 (HALDB)
  • PHIDAM - 区画に分割された階層索引直接アクセス方式 (HALDB)
  • PSINDEX - 区画に分割された 2 次索引 (HALDB)

FM/IMS は、汎用順次アクセス方式 (GSAM) データベースをサポートしません。GSAM データベースは順次データ・セットであるため、File Manager Base component を使用してアクセスすることができます。

セグメント・データは、使用中の DBD で定義されている規則に従った方法であれば、 どのような方法でも操作することができます。セグメントは、ユーザーの設定、およびユーザーが提供する情報によって、 さまざまな形式で表示することができます。CHAR、HEX、および LHEX の表示形式では、セグメント・データは保管されたままの状態で 表示されます。TABL および SNGL 形式では、テンプレートおよびビューを使用して、それぞれのフィールドごとに データを列または行で表示します。