Admin Production rocket
Current Publication

TYPE 属性の使用

Enterprise Developer for Eclipse (including UNIX Components) (Japanese) V9.0
Rocket® Enterprise Developer (formerly a product of Micro Focus or formerly a product of Open Text) documentation, created before Rocket Software acquired certain products from OpenText, may include outdated references to "Micro Focus" or "OpenText", both of which are trademarks of OpenText or its affiliates. Rocket Software is not affiliated with Micro Focus or OpenText and has since rebranded these products as Rocket® products. You may also encounter outdated links in this documentation. If you do, please contact Rocket Support (support@rocketsoftware.com) for assistance.

TYPE 属性の使用

TYPE(reference) の参照では、次を使用できません。

  • ポインター修飾子
  • 定数
  • 添え字リストまたは引数リスト

たとえば、次の宣言は無効です。

DECLARE MYFILE FILE STREAM OUTPUT PRINT;
DECLARE ZZZ TYPE( P -> Q );      /* INVALID -
                                 POINTER-QUALIFIED */
DECLARE URFILE TYPE( MYFILE );   /* INVALID - MYFILE IS
                                    CONSTANT */
DECLARE XXX TYPE( AAA(8) );      /* INVALID - HAS
                                    SUBSCRIPT LIST */ 
DECLARE YYY TYPE( FUN( ) );      /* INVALID -
                                    HAS ARGUMENT LIST */

型定義では、TYPE 属性を指定できず、次の使用もできません。

  • パラメーター
  • メンバー
  • TYPE 属性で宣言された構造体

たとえば、次の宣言は無効です。

EXPROC: PROCEDURE( XYZ );
   DECLARE XYZ FIXED BIN(15),
      AAA TYPE( XYZ );/* INVALID - XYZ IS A PARAMETER */


   DECLARE INT FIXED BIN(15),
      B TYPE(INT),
      Y TYPE(B); /* INVALID - B IS TYPED */

   DECLARE 1 STRUCA,
      2 PROG TYPE (INT),
      2 NAMES CHAR(80);
      STRUCT1 TYPE(STRUCA),
      STRUCT2 TYPE(STRUCT1.NAMES); /* INVALID - NAMES IS
                                 IN TYPED STRUCTURE */

TYPE(reference) の参照では、宣言された変数を直接的にも間接的にも参照できません。そのような参照を行うと、循環定義になります。

たとえば、次の宣言は無効です。

DECLARE 1 PROG,
   2 MOD CHAR(80),
   2 INT FIXED BIN(15),
   2 STRUCZ TYPE(PROG);/* INVALID - DIRECTLY CIRCULAR */

DECLARE 1 STRUCA,
   2 MOD CHAR(80),
   2 INT FIXED BIN(15),
   2 STRUCA TYPE(STRUCB); /* INVALID - INDIRECTLY
                           CIRCULAR */

DECLARE 1 STRUCB, 
   2 MOD CHAR(80), 
   2 INT CHAR(80), 
   2 STRUCA TYPE(STRUCA); /*INVALID - INDIRECTLY
                           CIRCULAR */