LIKE(名前 {: 長さ調整 })
LIKE キーワードは、項目を既存の項目と類似させて定義するために使用されます。 LIKE をオブジェクトとともに使用する詳細は、LIKE(オブジェクト名)を参照してください。
LIKE キーワードを指定した場合には、定義されている項目はパラメーターとして指定された項目の長さおよびデータ・フォーマットを引き継ぎます。 独立フィールド、プロトタイプ、およびデータ構造サブフィールドはこのキーワ ードを使用して定義することができます。 LIKE のパラメーターは、独立フィールド、データ構造、データ構造サブフィール ド、プロシージャー・インターフェース定義中のパラメーター、またはプロトタ イプ名とすることができます。 データ・タイプ記入項目 (40 桁目) はブランクでなければなりません。
ALTSEQ(*NONE)、NOOPT、ASCEND、DESCEND、CONST、次元、ヌル可能性などの属性は、LIKE のパラメーターから、定義された項目に継承されません。
継承されるのは、データ・タイプ、長さ、形式、小数点以下の桁数、および CCSID のみです。
配列のような項目を定義するために LIKE が使用されたときは、配列の次元を定義するため DIM キーワードが必要となります。
ただし、別の配列と同じ次元を持つ配列の定義には DIM(%ELEM(配列)) を使用できます。
LIKE のパラメーターがプロトタイプであった場合には、定義されている項目はそ のプロトタイプの戻り値と同じデータ・タイプになります。 戻り値がない場合には、エラー・メッセージが出されます。
定義している項目の長さを調整できます。
長さ調整は、自由形式定義の LIKE キーワードの 2 番目のパラメーターに指定するか、または、
固定形式定義の長さ記入項目に指定します。
長さ調整は正符号 (+) または負記号 (-) を付けて指定する必要があります。
文字フィールドの場合、長さ調整は追加する (または減らす) 文字数です。
数値フィールドの場合、長さ調整は追加する (または減らす) 桁数
です。整数フィールドまたは符号なしフィールドの場合、調整値は、調整後のフィールドの桁数が
3、5、10、または 20 になるようにする必要があります。
浮動フィールドの場合、長さ調整を行うことはできません。
グラフィック・フィールドまたは UCS-2 フィールドの場合、
長さ調整は追加する (または減らす) グラフィックまたは UCS-2 の文字数 (1 グラフィックまたは UCS-2 文字 = 2 バイト) です。
日付、時刻、タイム・スタンプ、基底ポインター、またはプロシージャー・ポインターの各フィールドの場合、長さ調整は許可されていません。
LIKEDS を使用して、別のデータ構造と同じサブフィールドを持つようデータ構造を定義することができます。
LIKE キーワードを使用してデータを定義する例
以下の例では、最初に自由形式で、次に固定形式で示されています。
- フィールド Long_name は、 フィールド Name と類似であり、長さを 5 文字増やしたものと定義されています。
- サブフィールド配列 NameList は、フィールド Name と類似であると定義されています。 配列の各要素は、値 *ALL'X' で初期化されます。
- プロトタイプ GetBonus は、 フィールド Salary と類似であり、長さを 2 桁減らしたものと定義されています。

DCL-S Name CHAR(20);
DCL-S Long_name LIKE(Name : +5); 1
DCL-DS Struct;
NameList LIKE(Name) DIM(20) INZ(*ALL'X'); 2
END-DS;
DCL-PR GetBonus LIKE(Salary : -2); 3
Employee_Id INT(10) VALUE;
END-PR;

*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++
D.....................................Keywords+++++++++++++++++++++++++++++
D Name S 20
D Long_name S +5 LIKE(Name) 1
D Struct DS
D NameList LIKE(Name) DIM(20) INZ(*ALL'X') 2
D GetBonus PR -2 LIKE(Salary) 3
D Employee_Id 10I 0 VALUE