ILE COBOL 解説書

参照変更

参照変更は、他のコンピューター言語におけるサブストリング化と類似しています。 参照変更は、データ項目の開始桁と長さを指定することによって、データ項目を定義します。

形式
 
>>-+-データ名-1-------------------------------+----------------->
   '-FUNCTION--関数名-1--+------------------+-'
                         |    .--------.    |
                         |    V        |    |
                         '-(----引数-1-+--)-'
 
>--(--左端桁:--+------+--)-------------------------------------><
               '-長さ-'
 
 
データ名-1
使用法が DISPLAY、DISPLAY-1、または NATIONAL として暗黙に、または明示的に定義されているデータ項目を参照する必要があります。 データ名-1 には修飾や添え字付けができます。

+----------------------------------IBM 拡張----------------------------------+

ブール・データ項目を参照することはできません。

TYPE 文節を使用して定義した項目を参照してはなりません。

+------------------------------End of IBM 拡張-------------------------------+

関数名-1
引数を含む、英数字関数、DBCS 関数、または国別関数でなければなりません。

詳細は 組み込み関数を参照してください。

引数-1
引数-1 は、ID、リテラル (表意定数以外)、または算術式でなければなりません。
左端桁
算術式でなければなりません。 左端桁の位置の評価結果は、データ名-1 または関数名-1 によって参照されるデータ項目内の文字数以下である正の非ゼロ整数にならなければなりません。
長さ
算術式でなければなりません。

左端桁と長さの和から 1 を引いた値は、データ名-1 または関数名-1 によって参照されるデータ項目内の文字数以下でなければなりません。 長さを省略すると、使用される長さは、データ名-1 または関数名-1 によって参照されるデータ項目内の文字数に 1 を加え、さらにそこから左端桁を引いた値と同じになります。 長さの評価の結果は、正の非ゼロの整数でなくてはなりません。

注:
算術式の結果が固定小数点の非整数の場合は、切り捨てが行われて整数になります。 算術式の結果が浮動小数点の非整数の場合は、丸めが行われて整数になります。

+----------------------------------IBM 拡張----------------------------------+

DBCS または国別データ項目の場合、桁および長さは 2 バイト文字の数を参照します。

+------------------------------End of IBM 拡張-------------------------------+

参照変更は、ID による英数字、DBCS、または国別データ項目の参照が認められるところでは、許可されるのが普通です。

+----------------------------------IBM 拡張----------------------------------+

日時クラスのデータ項目を参照変更することはできません。

+------------------------------End of IBM 拡張-------------------------------+

データ名-1 または関数名-1 が参照するデータ項目の各文字には、左端桁から右端桁へ 1 ずつ増分する序数が割り当てられます。 左端桁には序数 1 が割り当てられます。 データ名-1 のデータ記述項目に SIGN IS SEPARATE 文節が含まれている場合、符号の桁にはそのデータ項目内の序数が割り当てられます。

参照変更は、データ名-1 または関数名-1 およびその引数によって参照されるデータ項目のサブセットとその引数である固有のデータ項目を作成します。 この固有データ項目は、JUSTIFIED 文節なしの基本項目と見なされます。

データ名-1 が参照変更される場合、固有データ項目は、データ名-1 によって参照されるデータ項目に対して定義されたものと同じクラスとカテゴリーを持っています。 しかし、データ名-1 のカテゴリーが数字、数字編集、英数字編集、または外部浮動小数点である場合、固有データ項目のクラスとカテゴリーは英数字です。

関数が参照変更される場合、固有データ項目は、関数の引数によって英数字、DBCS、または国別のクラスおよびカテゴリーを持ちます。

長さが指定されない場合、作成された固有のデータ項目は、左端桁によって識別された文字から、データ名-1 または関数名-1 によって参照されたデータ項目の右端桁までの範囲となります。

関連情報

オペランドの計算

1 つのオペランドの参照変更は次のように計算されます。

参照変更の例

この例では、変数 whole-name 内の最初の 25 字を、変数 last-name に転送しています。

MOVE whole-name(1:25) TO last-name

範囲エラー

範囲外の参照変更コンポーネント、たとえば左端の桁がゼロの場合などには、システム・メッセージが生成されます。

これは、添え字範囲や文字ストリング境界内でのエラーを知らせるメッセージと同じものです。 (このメッセージは、CRTCBLMOD または CRTBNDCBL コマンドで RANGE オプションが指定された場合にだけ生成されます。)

参照変更に関する制約事項

+----------------------------------IBM 拡張----------------------------------+

INDICATORS 句は参照変更をサポートしません。

+------------------------------End of IBM 拡張-------------------------------+

次の制約事項は以下にリストするステートメントに適用されます。

ステートメント
制約事項

STRING
ID-3 の参照変更は不可。

UNSTRING
ID-1 の参照変更は不可。

START
データ名-1 の最終オカレンスのに参照変更が可。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]