LIKE(名前 {: 長さ調整 })

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

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

このキーワードは *LIKE DEFINE 命令コードと類似しています (*LIKE DEFINEを参照)。ただし、定義されたデータがその長さだけでなくデータ形式および CCSID を引き継ぐ点で *LIKE DEFINE とは異なっています。
注: 変更の始まりALTSEQ(*NONE)、NOOPT、ASCEND、DESCEND、CONST、次元、ヌル可能性などの属性は、LIKE のパラメーターから、定義された項目に継承されません。 継承されるのは、データ・タイプ、長さ、形式、小数点以下の桁数、および CCSID のみです。変更の終わり

変更の始まり配列のような項目を定義するために LIKE が使用されたときは、配列の次元を定義するため DIM キーワードが必要となります。 ただし、別の配列と同じ次元を持つ配列の定義には DIM(%ELEM(配列)) を使用できます。変更の終わり

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

変更の始まり定義している項目の長さを調整できます。 長さ調整は、自由形式定義の LIKE キーワードの 2 番目のパラメーターに指定するか、または、 固定形式定義の長さ記入項目に指定します。 長さ調整は正符号 (+) または負記号 (-) を付けて指定する必要があります。変更の終わり

以下は、LIKE キーワードを異なるデータ・タイプで使用する際のいくつかの考慮 事項です。
  • 変更の始まり文字フィールドの場合、長さ調整は追加する (または減らす) 文字数です。変更の終わり
  • 変更の始まり数値フィールドの場合、長さ調整は追加する (または減らす) 桁数 です。整数フィールドまたは符号なしフィールドの場合、調整値は、調整後のフィールドの桁数が 3、5、10、または 20 になるようにする必要があります。 浮動フィールドの場合、長さ調整を行うことはできません。変更の終わり
  • 変更の始まりグラフィック・フィールドまたは UCS-2 フィールドの場合、 長さ調整は追加する (または減らす) グラフィックまたは UCS-2 の文字数 (1 グラフィックまたは UCS-2 文字 = 2 バイト) です。変更の終わり
  • 変更の始まり日付、時刻、タイム・スタンプ、基底ポインター、またはプロシージャー・ポインターの各フィールドの場合、長さ調整は許可されていません。変更の終わり

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

LIKE キーワードを使用してデータを定義する例

以下の例では、最初に自由形式で、次に固定形式で示されています。

  1. フィールド Long_name は、 フィールド Name と類似であり、長さを 5 文字増やしたものと定義されています。
  2. サブフィールド配列 NameList は、フィールド Name と類似であると定義されています。 配列の各要素は、値 *ALL'X' で初期化されます。
  3. プロトタイプ GetBonus は、 フィールド Salary と類似であり、長さを 2 桁減らしたものと定義されています。
変更の始まり
図 1. 他のフィールドと類似 (LIKE) のフィールドを自由形式で定義する
 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;
変更の終わり 変更の始まり
図 2. 他のフィールドと類似 (LIKE) のフィールドを固定形式で定義する
*.. 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
変更の終わり