演算項目 1 に *LIKE があるDEFINE (フィールド定義)命令は、別のフィールドの属性 (長さおよび小 数点以下の桁数) に基づいてフィールドを定義します。
演算項目 2 には参照するフィールドの名前を、結果フィールドには定義する フィールドの名前を入れなければなりません。 演算項目 2 に指定されるフィー ルドはプログラム内または外部で定義することができ、定義するフィールドの 属性を入れます。 演算項目 2 は、リテラル、名前付き定数、浮動数値フィールド、またはオブジェクトにすることはできません。演算項目 2 が配列、配列要素、またはテーブル名の場合には、 配列またはテーブルの要素の属性がそのフィールドの定義に使用されます。 結果フィールドを配列、配列要素、データ構造、またはテーブル名にすること はできません。 ALTSEQ(*NO)、NOOPT、ASCEND、CONST またはヌル値可能などの属性 は、演算項目 2 から、結果フィールドによって引き継がれません。 データ・タイプ、 長さ、小数点以下の桁数だけが引き継がれます。
64 から 68 桁目 (フィールドの長さ) は、結果フィールドの指定を演算項目 2 の 指定より長くしたり短くするために使用することができます。 数字の前のプラス符号 (+) は増やす長さを示し、マイナス符号 (-) は減らす長さを示します。 65 から 68 桁目には、長さの増減 (右寄せ) を入れるか、あるいはブランクにする ことができます。 64 から 68 桁目がブランクの場合には、結果フィールドの指定は 演算項目 2 の指定と同じ長さで定義されます。定義するフィールドの小数点以下の桁数を変更することはできません。 フィールド長の指定を使用できるのは、図形、UCS-2、数値、および文字フィールドの場合だけです。
図形フィールドまたは UCS-2 フィールドの場合には、フィールド長の 差は 2 バイト文字で計算されます。
演算項目 2 が図形フィールドまたは UCS-2 フィールドの 場合、結果フィールドは同じタイプ、すなわち、図形または UCS-2 として定義 されます。 新しいフィールドには、モジュールのデフォルトの図形 CCSID また は UCS-2 CCSID が使用されます。 新しいフィールドに、演算項目 2 のフィールドと同じ CCSID を使用したい 場合には、定義仕様書で LIKE キーワードを使用します。 長さの調整は、2 バイト単位で表されます。
*...1....+....2....+....3....+....4....+....5....+....6....+....7...+.... CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq.... * * FLDA is a 7-position character field. * FLDB is a 5-digit field with 2 decimal positions. * * * FLDP is a 7-position character field. C *LIKE DEFINE FLDA FLDP * * FLDQ is a 9-position character field. C *LIKE DEFINE FLDA FLDQ +2 * * FLDR is a 6-position character field. C *LIKE DEFINE FLDA FLDR - 1 * * FLDS is a 5-position numeric field with 2 decimal positions. C *LIKE DEFINE FLDB FLDS * * FLDT is a 6-position numeric field with 2 decimal positions. C *LIKE DEFINE FLDB FLDT + 1 * * FLDU is a 3-position numeric field with 2 decimal positions. C *LIKE DEFINE FLDB FLDU - 2 * * FLDX is a 3-position numeric field with 2 decimal positions. C *LIKE DEFINE FLDU FLDX
数値フィールドの *LIKE DEFINE について、以下の点に注意してください。
D DS D Fld1 D Fld2 S 7P 2 * * Fld1 will be defined as zoned because it is a subfield of a * data structure and numeric subfields default to zoned format. * C *LIKE DEFINE Fld2 Fld1 * * Fld3 will be defined as packed because it is a standalone field * and all numeric items except subfields default to packed format. C *LIKE DEFINE Fld1 Fld3
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.