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

ラージ・オブジェクト (LOB) サポート

バイナリー・ラージ・オブジェクト (BLOB)、文字ラージ・オブジェクト (CLOB)、および 2 バイト文字ラージ・オブジェクト (DBCLOB) が、LOB ロケーターと LOB ファイルの概念とともに、現在では、プリプロセッサーによって認識されます。これらの詳細については、DB2 マニュアルを参照してください。

LOB に関する一般情報

LOB、CLOB、および BLOB は、最大で 2,147,483,640 バイト (2 ギガバイトから PL/I オーバーヘッドの 8 バイトを引いた値) の長さにすることができます。2 バイト CLOB は、1,073,741,820 文字 (1 ギガバイトから PL/I オーバーヘッドの 4 文字を引いた値) の長さにすることができます。BLOB、CLOB、および DBCLOB は、以下の構文 (ラージ・オブジェクト列、ロケーター、およびファイルに対する PL/I 変数) を使用して、PL/I プログラム内で宣言することができます。

構文図を読む構文図をスキップする>>-+-Declare-+--PL/I host identifier---------------------------->
   '-Dcl-----'
 
>--SQL TYPE IS-| PL/I LOB type |--| PL/I LOB type: |------------>
 
>--+-+-+-Binary Large Object-+----+--(--length--+---+--)-+-----><
   | | '-BLOB----------------'    |             +-K-+    |
   | +-+-Character Large Object-+-+             +-M-+    |
   | | +-Char Large Object------+ |             '-G-'    |
   | | '-CLOB-------------------' |                      |
   | '-DBCLOB---------------------'                      |
   +-+-BLOB (ロケーターとして)---+-----------------------+
   | +-CLOB (ロケーターとして)---+                       |
   | '-DBCLOB (ロケーターとして)-'                       |
   '-+-BLOB (ファイルとして)---+-------------------------'
     +-CLOB (ファイルとして)---+
     '-DBCLOB (ファイルとして)-'
 
BLOB、CLOB、および DBCLOB データ型
BLOB、CLOB、および DBCLOB の変数宣言は、PL/I SQL プリプロセッサーによって変換されます。

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

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

SQL プリプロセッサーは、この宣言を次の構造体に変換します。

  Define structure
    1  lob-type-name_length,
      2  Length unsigned fixed bin(31),
      2  Data(length) char(1);
  Dcl my-identifier-name TYPE lob-type-name_length;

この構造体の中で、my-identifier-name は PL/I ホスト ID の 名前、lob-type-name_length は LOB のタイプと長さからなる、プリプロセッサーが生成した名前です。

DBCLOB データ型の場合、生成される構造体は次のように少し異なります。

  Define structure
    1  lob-type-name_length,
      2  Length unsigned fixed bin(31),
      2  Data(length) type wchar_t;

この場合、type wchar_t は、インクルード・メンバー sqlsystm.cpy 内で定義されます。 このメンバーは、DBCLOB データ型を使用するためにはインクルードする必要があります。

length
長さフィールドは、固定長 2 進数にマッピングされる符号なし整数です。 長さフィールドの値は、0 から (2**32)-8 の範囲になります。 長さフィールドに K、M、または G が追加されている場合は、長さは、プリプロセッサーによって計算されます。
BLOB、CLOB、および DBCLOB LOCATOR データ型
BLOB、CLOB、および DBCLOB ロケーターの変数宣言も、PL/I SQL プリプロセッサーによって変換されます。

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

   Dcl my-identifier-name SQL TYPE IS lob-type AS LOCATOR;

SQL プリプロセッサーは、この宣言を次のコードに変換します。

  Define alias lob-type_LOCATOR fixed bin(31) unsigned;

  Dcl my-identifier-name TYPE lob-type_LOCATOR;

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

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

例えば、以下の宣言文を考えてみます。

  Dcl my-identifier-name SQL TYPE IS lob-type AS FILE;

SQL プリプロセッサーは、以下のように宣言文を変換します。

  Define structure
     1  lob-type_FILE,
       2  Name_Length unsigned fixed bin(31),
       2  Data_Length unsigned fixed bin(31),
       2  File_Options unsigned fixed bin(31),
       2  Name char(255);

  Dcl my-identifier-name TYPE lob-type_FILE;

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

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

次の例は、サンプルの PL/I 変数宣言と、LOB サポートのための対応する変換を示しています。

例 1
  Dcl my_blob SQL TYPE IS blob(2000);

変換後:

  Define structure
     1  blob_2000,
       2  Length unsigned fixed bin(31),
       2  Data(2000) char(1);
  Dcl my_blob type blob_2000;
例 2
  Dcl my_dbclob SQL TYPE IS DBCLOB(1M);

変換後:

  Define structure
     1  dbclob_1m,
       2  Length unsigned fixed bin(31),
       2  Data(1048576) type wchar_t;
  Dcl my_dbclob type dbclob_1m ;
例 3
  Dcl my_clob_locator SQL TYPE IS clob as locator;

変換後:

   Define alias clob_locator fixed bin(31) unsigned;
   Dcl my_clob_locator type clob_locator;
例 4
  Dcl my_blob_file SQL TYPE IS blob as file;

変換後:

  Define structure
     1  blob_FILE,
       2  Name_Length unsigned fixed bin(31),
       2  Data_Length unsigned fixed bin(31),
       2  File_Options unsigned fixed bin(31),
       2  Name char(255);

  Dcl my_blob_file type blob_file;
例 5
  Dcl my_dbclob_file SQL TYPE IS dbclob as file;

変換後:

  Define structure
     1  dbclob_FILE,
       2  Name_Length unsigned fixed bin(31),
       2  Data_Length unsigned fixed bin(31),
       2  File_Options unsigned fixed bin(31),
       2  Name char(255);

  Dcl my_dbclob_file type dbclob_file;

Terms of use | Feedback

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