TYPE

TYPE 属性を使用すると、構造体メンバーおよび属性を別の宣言から継承できます。次の形式で記述します。reference は変数の参照です。

TYPE(reference)

または

TYPE reference

たとえば、変数 INTEGER が固定 2 進数として宣言されている場合、固定 2 進数として宣言する必要がある別の変数を TYPE(INTEGER) として宣言できます。次に例を示します。

DECLARE INTEGER   FIXED BIN(31);    /* TYPE DEFINITION */
DECLARE CODE      TYPE(INTEGER);    /* TYPED VARIABLE */

この例では、INTEGER から CODE に属性がコピーされるため、CODE の宣言は次のようになります。

DECLARE CODE   FIXED BIN(31);

前記の例では、INTEGER は型定義と呼ばれ、CODE は型付き変数と呼ばれます。型定義は通常の変数宣言です。型定義には記憶域が割り当てられないため、基底付き記憶域クラスを指定できます。

次の例では、TYPE 属性を使用して、ある宣言から別の宣言に構造体メンバーを複製しています。

DECLARE 1 TEMPLATE BASED, /* TYPE DEFINITION */
   2 NAME CHAR(45),
   2 SALARY FIXED BIN(15), 
   2 EMP_NO FIXED BIN(15);
DECLARE EMPLOYEE_INFO TYPE TEMPLATE; /* TYPED VARIABLE */

TEMPLATE のメンバーが複製されて EMPLOYEE_INFO の宣言が展開されると、EMPLOYEE_INFO の宣言は次のようになります。

DECLARE 1 EMPLOYEE_INFO
   2 NAME CHAR(45),
   2 SALARY FIXED BIN(15),
   2 EMP_NO FIXED BIN(15);

TYPE 属性は、次のいずれかの場所で使用できます。

次の例は、TYPE 属性のすべての使用方法を示しています。

/*----------- TYPE DEFINITION -----------*/
/* (LINE MAY ALSO BE USED AS A VARIABLE) */ 
DECLARE LINE CHAR(80) VARYING;
/*---------------------------------------*/
/* VARIABLE DECLARATION */ 
DECLARE FORMAT_LINE TYPE(LINE);

/* PARAMETER DECLARATION */ 
DECLARE PARAM TYPE(LINE);

/* PARAMETER DESCRIPTOR */
DECLARE WRITE_LINE ENTRY(TYPE(LINE));

/* RETURNS OPTION IN PROCEDURE STATEMENT */ 
GET_LINE: PROC RETURNS(TYPE(LINE));

/* RETURNS OPTION IN ENTRY STATEMENT */ 
READ_LINE: ENTRY RETURNS(TYPE(LINE));

/* RETURNS ATTRIBUTE IN DECLARE STATEMENT (USING ALTERNATE SYNTAX)*/ 
DECLARE GET_LINE ENTRY RETURNS(TYPE LINE);

型付き変数は、次の属性のみを型定義から継承できます (記憶域クラスは継承されません)。