DATA - REF TO

Syntax

DATA ref { {TYPE REF TO type}
         | {LIKE REF TO dobj} }
         [VALUE IS INITIAL]
         [READ-ONLY].

Effect

Using the REF TO addition, you declare a reference variable ref. The specification after REF TO specifies the static type of the reference variables. The static type limits the set of objects to which ref can point. The dynamic type of a reference variable is the data type or the class to which it currently points. The static type is always more general or the same as the dynamic type (see also conversion rule for reference variables).

Syntax and meaning of the additions TYPE and LIKE are completely the same as the definition of reference types in the section TYPES -REF TO, but here they serve to create a bound reference type.

As a start value, only IS INITIAL can be specified after the addition VALUE.

Note

Reference variables are opak - that is, you cannot directly access their content. A reference is made up of the address of an object and other management information.

Example

In this example, an object reference oref and two data references dref1 and dref2 are declared. Both data references are typed fully and can be dereferenced using the dereferencing operator ->* at operand positions.

CLASS c1 DEFINITION.
  PUBLIC SECTION.
    DATA a1 TYPE i VALUE 1.
ENDCLASS.

DATA: oref  TYPE REF TO c1,
      dref1 LIKE REF TO oref,
      dref2 TYPE REF TO i.

CREATE OBJECT oref.
GET REFERENCE OF oref INTO dref1.

CREATE DATA dref2.
dref2->* = dref1->*->a1.