Hitachi

ノンストップデータベース HiRDB Version 10 構造型データベース機能(UAP開発編)


2.4.2 埋込み変数の宣言方法

DML中に記述する埋込み変数は,データ部の次のどちらかの節で宣言する必要があります。

上記以外の節で宣言した変数は,埋込み変数として使用できません。

〈この項の構成〉

(1) 埋込み変数の宣言例

埋込み変数はレコード型,構成要素のデータ型に合わせて宣言します。埋込み変数の宣言例を次に示します。

レコード型の定義
RECORD FMBDT_ROOT
  2 DBKEY
   3  KEYDATA1           XCHARACTER  1  TYPE  K,L
  2  CHR_L01             CHARACTER   1  TYPE  U,D
  2  CHR_L30             CHARACTER  30  TYPE  U,D
  2  XCHR_L01            XCHARACTER  1  TYPE  U,D
  2  XCHR_L30            XCHARACTER 30  TYPE  U,D
  2  PACK_38_0           PACKED 38,0    TYPE  U,D
  2  PACK_10_5           PACKED 10,5    TYPE  U,D
  2  PACK_0_38           PACKED 0,38    TYPE  U,D
  2  INT                 INTEGER        TYPE  U,D
  2  SINT                SMALLINT       TYPE  U,D
RECORD FMBDT_CHILD
  2  KEYDATA1            XCHARACTER 1   TYPE  K,L
  2  DBKEY               INTEGER        TYPE  K,N
  2  CHR_L01             CHARACTER   1  TYPE  U,D
  2  CHR_L30             CHARACTER  30  TYPE  U,D
  2  XCHR_L01            XCHARACTER  1  TYPE  U,D
  2  XCHR_L30            XCHARACTER 30  TYPE  U,D
  2  PACK_38_0           PACKED 38,0    TYPE  U,D
  2  PACK_10_5           PACKED 10,5    TYPE  U,D
  2  PACK_0_38           PACKED 0,38    TYPE  U,D
  2  INT                 INTEGER        TYPE  U,D
  2  SINT                SMALLINT       TYPE  U,D
埋込み変数の宣言例
 WORKING-STORAGE SECTION.
*
 77  RECNAME            PIC X(30)      VALUE SPACE.        ...1
 77  RECLENG            PIC S9(8) COMP VALUE ZERO.         ...2
*
 01  FMBDT_ROOT.                                           ...3
   02  PDBKEYRT.
     03  PKEYDATA1      PIC X          VALUE SPACE.
   02  PCHR_L01         PIC X          VALUE SPACE.
   02  PCHR_L30         PIC X(30)      VALUE SPACE.
   02  PXCHR_L01        PIC X          VALUE SPACE.
   02  PXCHR_L30        PIC X(30)      VALUE SPACE.
   02  PPACK_38_0       PIC S9(38)       COMP-3 VALUE 0.
   02  PPACK_10_5       PIC S9(10)V9(5)  COMP-3 VALUE 0.
   02  PPACK_0_38       PIC SV9(38)      COMP-3 VALUE 0.
   02  PINT             PIC S9(5)        COMP   VALUE 0.
   02  PSINT            PIC S9(1)        COMP   VALUE 0.
*
 01  FMBDT_CHILD.                                          ...4
   02  CKEYDATA1        PIC X          VALUE SPACE.
   02  CDBKEY           PIC S9(8)        COMP   VALUE 0.
   02  CCHR_L01         PIC X          VALUE SPACE.
   02  CCHR_L30         PIC X(30)      VALUE SPACE.
   02  CXCHR_L01        PIC X          VALUE SPACE.
   02  CXCHR_L30        PIC X(30)      VALUE SPACE.
   02  CPACK_38_0       PIC S9(38)       COMP-3 VALUE 0.
   02  CPACK_10_5       PIC S9(10)V9(5)  COMP-3 VALUE 0.
   02  CPACK_0_38       PIC SV9(38)      COMP-3 VALUE 0.
   02  CINT             PIC S9(9)        COMP   VALUE 0.
   02  CSINT            PIC S9(4)        COMP   VALUE 0.
[説明]
  1. FETCH文,またはFIND文で検索したレコードのレコード名を受け取るための埋込み変数(RECNAME)を宣言します。

  2. FETCH文,MODIFY文,またはSTORE文で操作したレコードのレコード長を受け取るための埋込み変数(RECLENG)を宣言します。

  3. レコード型FMBDT_ROOTとデータの受け渡しをする埋込み変数を宣言します。

  4. レコード型FMBDT_CHILDとデータの受け渡しをする埋込み変数を宣言します。

COBOL言語のデータ記述項で埋込み変数を宣言します。データ記述項の指定形式および構文規則については,マニュアル「COBOL85 言語」の「データ記述項」を参照してください。

(2) DMLのデータ型とCOBOL言語のデータ記述項の対応

埋込み変数を宣言する際は,埋込み変数のデータ型に合わせてデータ記述項を記述してください。埋込み変数のデータ型は,埋込み変数を使用するDMLのデータ型によって決まります。DMLのデータ型とは,レコード型の各構成要素のデータ型のことです。DMLのデータ型によって埋込み変数のデータ型が決まり,埋込み変数のデータ型に従って埋込み変数を宣言する際のデータ記述項を記述します。

DMLのデータ型とCOBOL言語のデータ記述項の対応を次の表に示します。

表2‒3 DMLのデータ型とCOBOL言語のデータ記述項の対応

DMLのデータ型

COBOL言語のデータ記述項

項目の種類

備考

CHARACTER n

L1 基本項目名

  PICTURE X(n)

 〔〔USAGE〕 DISPLAY〕

  • 基本項目

  • 独立項目

1≦n≦30,000

XCHARACTER n

L1 基本項目名

  PICTURE X(n)

 〔〔USAGE〕 DISPLAY〕

  • 基本項目

  • 独立項目

1≦n≦30,000

PACKED 〔DECIMAL FIXED〕 m〔,n〕

  • m>0,かつn>0の場合

    L1 基本項目名

      PICTURE S9(m)V9(n)

     〔USAGE〕

      COMPUTATIONAL-3.

  • m>0,かつn=0の場合

    L1 基本項目名

      PICTURE S9(m)

     〔USAGE〕

      COMPUTATIONAL-3.

  • m=0の場合

    L1 基本項目名

      PICTURE SV9(n)

     〔USAGE〕

      COMPUTATIONAL-3.

  • 基本項目

  • 独立項目

1≦m+n≦38※1

SMALLINT

L1 基本項目名

  PICTURE S9(n)

  COMPUTATIONAL.※2

  • 基本項目

  • 独立項目

1≦n≦4

INTEGER

L1 基本項目名

  PICTURE S9(n)

  COMPUTATIONAL.※2

  • 基本項目

  • 独立項目

5≦n≦9

(凡例)

L1:レベル番号01〜49,または77

注※1

HiRDB/SDで使用可能な範囲です。埋込み変数として使用可能な範囲は,COBOLコンパイラの仕様によって決まります。

注※2

2進項目をビッグエンディアン形式にするUAPの場合,データ型がINTEGERまたはSMALLINTの埋込み変数を宣言するときは,COMPUTATIONAL-5またはCOMP-5を指定してください。

2進項目をビッグエンディアン形式にするUAPを作成する場合の注意事項については,「2.13 2進項目をビッグエンディアン形式にするUAPを作成する場合の注意事項」を参照してください。

記述規則

埋込み変数を宣言する際のデータ記述項の句は,次の表に示す形式で記述してください。

表2‒4 データ記述項の句の記述形式

データ記述項の句の記述形式

左記以外の記述形式

PICTURE

PIC

COMPUTATIONAL

COMP

COMPUTATIONAL-n

COMP-n

9(n)

999....9(n個の9の並び)

X(n)

XXX....X(n個のXの並び)

OCCURS n TIMES

OCCURS 1 TO n TIMES

OCCURS 1 TO n

OCCURS n

(3) 複数のレコード型の構成要素に対応するデータ記述項

レコード型や,複数のレコード型の構成要素から成る集団項目に対応する埋込み変数は,対象となる各レコード型の構成要素に対応する基本項目を持った集団項目で宣言します。埋込み変数の宣言例を次の図に示します。

図2‒3 ルートレコードのレコード型とレコード実現値の受け渡しの際に使用する埋込み変数の宣言例

[図データ]

図2‒4 子レコードのレコード型とレコード実現値の受け渡しの際に使用する埋込み変数の宣言例

[図データ]

記述規則
  • 埋込み変数に使用する集団項目は,この埋込み変数下の階層構造,基本項目のデータ型およびデータ長を,対応するレコード型,構成要素と一致させてください。なお,埋込み変数の長さに対応する,次のSDBデータベース定義については,HiRDB/SDがチェックします。

    ・レコード長

    ・シーケンシャルインデクスの構成要素の合計長

    集団項目を構成する基本項目のデータ記述については,「2.1.3 データ部(DATA DIVISION)」の「埋込み変数のデータ記述項」を参照してください。

  • 埋込み変数に使用する集団項目は,ほかの集団項目の下位項目であってもかまいません。

  • レベル番号,変数名は一致していなくてもかまいません。埋込み変数の下位項目については,変数名にFILLERを指定できます。

(4) 埋込み変数の規則

埋込み変数の規則を次に示します。

上記以外にも埋込み変数の規則があります。詳細については,マニュアル「HiRDB 構造型データベース機能」の「埋込み変数」を参照してください。