Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, プログラミング・ガイド

ラージ・オブジェクト (LOB) サポートに関する追加情報

LOB に関する一般情報

LOBS、CLOBS、および BLOBS は、最大で 2,147,483,647 バイト (2 ギガバイト) の 長さにすることができます。2 バイト CLOBS は、1,073,741,823 文字 (1 ギガバイト) の長さに することができます。

BLOB、CLOB、および DBCLOB データ・タイプ
BLOB、CLOB、および DBCLOB の変数宣言は、PL/I SQL プリプロセッサーによって 変換されます。

例えば、次のように宣言したとします。

  DCL my-identifier-name SQL TYPE IS lob-type-name (length);

SQL プリプロセッサーは、LOB() プリコンパイラー・オプションの設定 に応じて、この宣言を以下の構造体の 1 つに変換します。LOB(DB2) が指定され、LOB サイズが 32767 バイト以下である場合、生成される 構造体は、以下のようになります。

   DCL
  /*$*$*$
  SQL TYPE IS lob-type-name (length)
  $*$*$*/
        1 my-identifier-name,
              3 my-identifier-name_LENGTH FIXED BIN(31),
              3 my-identifier-name_DATA CHAR(size1);

LOB(DB2) が指定され、サイズが 32767 バイトより大きい場合、生成される 構造体は、以下のようになります。

   DCL
 /*$*$*$
 SQL TYPE IS lob-type-name (length)
 $*$*$*/
       1 my-identifier-name,
             3 my-identifier-name_LENGTH FIXED BIN(31),
             3 my-identifier-name_DATA,
               4 my-identifier-name_DATA1(size1) CHAR(32767),
               4 my-identifier-name_DATA2 CHAR(size2);

LOB(PLI) が指定され、LOB サイズが 32767 バイト以下である場合、生成される 構造体は、以下のようになります。

  DEFINE STRUCTURE
    1  lob-type$$x,
      2  my-identifier-name_LENGTH FIXED BIN(31),
      2  my-identifier-name_DATA,
         3 my-identifier-name_DATA1 CHAR(size1);
 DCL my-identifier-name TYPE lob-type$$x;

LOB(PLI) が指定され、LOB サイズが 32767 バイトより大きい場合、生成される 構造体は、以下のようになります。

  DEFINE STRUCTURE
    1  lob-type$$x,
      2  my-identifier-name_LENGTH FIXED BIN(31),
      2  my-identifier-name_DATA,
         3 my-identifier-name_DATA1(size1) CHAR(32767),
         3 my-identifier-name_DATA2 CHAR(size2),
  DCL my-identifier-name TYPE lob-type$$x;

これらの構造体の中で、my-identifier-name は PL/I ホスト ID の名前、lob-type$$x はプリプロセッサーが生成した名前です。size1 は、length/32767 の値を 切り捨てた整数値です。size2 は、length/32767 の剰余です。

DBCLOB データ・タイプの場合、生成される構造体は少し異なります。 2 バイト文字はそれぞれが 2 バイトなので、size1length/16383 の値を切り捨てた整数値であり、size2length/16383 の剰余です。

BLOB、CLOB、および DBCLOB LOCATOR データ・タイプ
BLOB、CLOB、および DBCLOB ロケーターの変数宣言も、PL/I SQL プリプロセッサーによって変換されます。

例えば、次のように宣言したとします。

   DCL my-identifier-name SQL TYPE IS lob-type_LOCATOR;

SQL プリプロセッサーは、LOB() プリコンパイラー・オプションの設定 に応じて、この宣言を以下の構造体の 1 つに変換します。LOB(DB2) が指定されている場合、生成されるコードは次のようになります。

   DCL
  /*$*$*$
  SQL TYPE IS lob-type_LOCATOR
  $*$*$*/
   my-identifier-name FIXED BIN(31);

LOB(PLI) が指定されている場合、SQL プリプロセッサーはこの宣言を次のコードに変換します。

  DEFINE ALIAS lob-type_LOCATOR FIXED BIN(31);

  Dcl my-identifier-name TYPE lob-type_LOCATOR;

この例の中で、my-identifier-name は PL/I ホスト ID、lob-type_LOCATOR は LOB の タイプとストリング LOCATOR からなる、プリプロセッサーが生成した名前です。

LOB サポートのための PL/I 変数宣言

次の例は、サンプルの PL/I 変数宣言と、LOB サポートの ための対応する変換を示しています。 これらの例はすべて、デフォルトの LOB(DB2) プリコンパイラー・オプションを指定してコンパイル されています。

例 1
  DCL my_blob SQL TYPE IS BLOB(2000);

変換後:

   DCL
 /*$*$*$
 SQL TYPE IS BLOB(2000)
 $*$*$*/
       1 MY_BLOB,
             3 MY_BLOB_LENGTH FIXED BIN(31),
             3 MY_BLOB_DATA CHAR(2000);
例 2
  DCL my_dbclob SQL TYPE IS DBCLOB(4000K);

変換後:

   DCL
 /*$*$*$
 SQL TYPE IS DBCLOB(4000K)
 $*$*$*/
       1 MY_DBCLOB,
             3 MY_DBCLOB_LENGTH FIXED BIN(31),
             3 MY_DBCLOB_DATA,
               4 MY_DBCLOB_DATA1(250) GRAPHIC(16383),
               4 MY_DBCLOB_DATA2 GRAPHIC(250);
例 3
  DCL my_clob_locator SQL TYPE IS CLOB_LOCATOR;

変換後:

   DEFINE ALIAS CLOB_LOCATOR FIXED BIN(31);
   DCL my_clob_locator TYPE CLOB_LOCATOR;

Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)