!--a11y-->

定数とは、宣言命令によって静的に作成する名称付きデータオブジェクトです。定数を使用すると、データを特定の名称でプログラムのメモリ領域に保存することができます。定数の値は、定数を宣言する際に定義する必要があります。定数を後で変更することはできません。プログラムの実行中に定数の値を変更することはできません。定数の値を変更しようとすると、構文エラーまたは実行時エラーが発生します。
定数は、CONSTANTS 命令を使用して宣言します。プログラムでは、CONSTANTS を使用してプロシージャ内でローカル変数を宣言することもできます。型に適用されるのと同じ可視性ルールが、定数にも適用されます (TYPE オプション を参照してください) 。プロシージャ内のローカル定数は、メインプログラム内の同一名称付き変数を非可視にします。定数は、その定数が宣言されているコンテキスト内に限って存続します。
CONSTANS 命令の構文は、以下の例外を除いて DATA 命令とまったく同じです。
キ CONSTANTS 命令では VALUE オプションを使用しなければなりません。VALUE オプションで指定した開始値を、プログラムの実行中に変更することはできません。
キ XSTRINGS 、参照、内部テーブル、または内部テーブルを含む構造に対して定数を定義することはできません。

基本定数の例は以下のとおりです。
CONSTANTS: pi TYPE P DECIMALS 10 VALUE '3.1415926536'.
ref_c1 TYPE REF TO C1 VALUE IS INITIAL.
最後の行には、VALUE オプションで IS INITIAL 引数を使用する方法が示されています。CONSTANTS 命令では VALUE オプションを使用しなければならないので、定数の宣言時に定数に初期値を割り当てる場合、これが唯一の方法になります。
複合定数の例は以下のとおりです。
CONSTANTS: BEGIN OF myaddress,
name(20) TYPE c VALUE 'Fred Flintstone',
street(20) TYPE c VALUE 'Cave Avenue',
number TYPE
p VALUE 11,
postcode(5) TYPE
n VALUE 98765,
city(20) TYPE
c VALUE 'Bedrock',
END OF
myaddress.
これにより、定数構造 MYADDRESS が宣言されています。コンポーネントは、MYADDRESS-NAME や MYADDRESS-STREET などを使用してアドレス可能ですが、変更することはできません。
