LIKE(名前)

LIKE キーワードは、項目を既存の項目と類似させて定義するために使用されます。 LIKE をオブジェクトとともに使用する詳細は、LIKE(オブジェクト名)を参照してください。

LIKE キーワードを指定した場合には、定義されている項目はパラメーターとして指定された項目の長さおよびデータ・フォーマットを引き継ぎます。 独立フィールド、プロトタイプ、およびデータ構造サブフィールドはこのキーワ ードを使用して定義することができます。 LIKE のパラメーターは、独立フィールド、データ構造、データ構造サブフィール ド、プロシージャー・インターフェース定義中のパラメーター、またはプロトタ イプ名とすることができます。 データ・タイプ記入項目 (40 桁目) はブランクでなければなりません。

このキーワードは *LIKE DEFINE 命令コードと類似しています (*LIKE DEFINEを参照)。ただし、定義されたデータがその長さだけでなくデータ形式および CCSID を引き継ぐ点で *LIKE DEFINE とは異なっています。

注:
ALTSEQ(*NONE)、NOOPT、ASCEND、CONST および空 (NULL) 機能などの属性 は、LIKE のパラメーターから定義された項目に引き継がれません。 データ・タイプ、長さ、小数点以下の桁数、および CCSID だけが引き継がれます。

LIKE のパラメーターがプロトタイプであった場合には、定義されている項目はそ のプロトタイプの戻り値と同じデータ・タイプになります。 戻り値がない場合には、エラー・メッセージが出されます。

以下は、LIKE キーワードを異なるデータ・タイプで使用する際のいくつかの考慮 事項です。

LIKE を使用して配列を定義する場合であっても、DIM キーワードは配列の次元を 定義するためにまだ必要です。 しかし、DIM(%elem(配列)) を使用して、別の配列と完全に類似の配列を定義する ことができます。

LIKEDS を使用して、別のデータ構造と同じサブフィールドを持つようデータ構造を定義することができます。

以下は、LIKE キーワードを使用してデータを定義する例です。

図 117. LIKE による他のフィールドと類似のフィールドの定義
*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++
D.....................................Keywords+++++++++++++++++++++++++++++
 *
 *  長さを 5 文字増やして別のフィールドと類似のフィールドを定義します。
 *
D  Name           S             20
D  Long_name      S             +5    LIKE(Name)
 *
 *  別のフィールドと類似の DIM(20) を持つデータ構造サブフィールド配列を
 *  定義し、各配列要素を値 *ALL'X' によって初期化します。
 *  また、最初のサブフィールドのすぐ後にタイプがポインターの別のサブ
 *  フィールドを宣言します。ポインターには 16 バイトの長さが暗黙に
 *  定義されます。
 *
D  Struct         DS
D   Dim20                             LIKE(Name) DIM(20) INZ(*ALL'X')
D   Pointer                       *
 *
 *  *LDA で基本となるフィールドを定義します。フィールド 'Name' からフィールドの
 *  長さとタイプを選択します。
 *
D  Lda_fld        S                    LIKE(Name) DTAARA(*LDA)

LIKE(オブジェクト名)

LIKE キーワードを使用して、あるオブジェクトが以前に定義済みのオブジェクトと同じクラスを持つように指定することができます。CLASS キーワードの値だけが継承されます。

図 118. LIKE による他のオブジェクトと同様なオブジェクトの定義
* Variables MyString and OtherString are both Java String objects.
D MyString        S               O   CLASS(*JAVA
D                                          :'java.lang.String')
D OtherString     S                   LIKE(MyString)
 * Proc is a Java method returning a Java String object
D Proc            PR                  EXTPROC(*JAVA:'MyClass':'meth')
D                                     LIKE(MyString)
注:
*LIKE DEFINE 命令は、オブジェクトの定義には使用できません。 LIKE キーワードを使用する必要があります。