新規記事の投稿を行うことで、非表示にすることが可能です。
2020年02月07日
【ABAP】DATA命令―3分で学ぶ変数定義
本ページでは、ABAPコーディングの第1歩である「DATA命令」の使い方・構文ルールについてまとめています。
DATA命令は、ABAPにおける「変数」宣言の命令であり、どのようなプログラムでも必ずと言ってよいほど用いられています。
このページで学べる内容
・そもそも「変数」とは何か?
・DATA命令の使い方
・DATA命令の構文ルール
・DATA命令に関する注意点・Tips
・そもそも「変数」とは何か?
・DATA命令の使い方
・DATA命令の構文ルール
・DATA命令に関する注意点・Tips
目次
1 DATA命令とは?
2 構文ルール:DATA命令
2.1 構文解説:DATA命令
2.2 "TYPE"オプションで変数の型を定義する
2.3 @DATA命令―インライン宣言
3 TYPES命令との混同に注意
4 合わせて覚えておきたい:定数定義
1 DATA命令とは?
2 構文ルール:DATA命令
2.1 構文解説:DATA命令
2.2 "TYPE"オプションで変数の型を定義する
2.3 @DATA命令―インライン宣言
3 TYPES命令との混同に注意
4 合わせて覚えておきたい:定数定義
1 DATA命令とは?
DATA命令とは「変数」を定義する命令です。
プログラミングでいう「変数」とは、何かを入れておく「箱」のようなものです。
プログラムの実際の処理は、極論この「箱」の操作である、ということができます。
数字や文字列などの実際の値を「箱」に格納して、編集したり計算したり、その結果を表示するために利用したりします。
データの操作は、必ずこの「変数」を用いる必要があるため、「変数」を使わないプログラムは、ほぼ存在しません。
ABAPでは、この変数の定義をDATA命令を用いて行います。
実際のコーディングを見てさらにDATA命令の使い方・構文ルールを解説していきます。
2 構文ルール:DATA命令
@通常命令の場合
DATA (変数名) TYPE (データ型).
DATA (変数名)TYPE(データ型).
Aチェーン命令の場合
DATA:
(変数名1) TYPE(データ型),
(変数名2) TYPE(データ型),
(変数名3) TYPE(データ型).
2.1 構文解説:DATA命令
例として、以下のサンプルコードを用います。
DATA Z_DATE TYPE D.
この構文では、「Z_DATE」という「変数」を宣言しています。
この「Z_DATE」という名称は、任意の文字列でOKです。
ただし、変数の命名についてはソースコード全体の可読性を高めるためにできるだけわかりやすい名称を指定するようにします。
DATA Z_DATE TYPE D.
後半の「〜TYPE D」は、この変数の仕様を決めています。
仕様を決めるとは「この変数にいれるのは、文字列にするのか、日付にするのか」みたいなことです。
「D」は日付型を表します。
これで一旦、日付型の変数「Z_DATE」の宣言が完了します。
システムといっても、魔法ではなく確実にロジックが存在しており、その中心が変数となります。
したがって、このDATA命令を理解しないと、ABAPのコーディングはおろか、読むことさえできません。
TYPEオプションについては、初心者にとって理解しがたい部分があるため、もう少し深堀して解説します。
2.2 "TYPE"オプションで変数の型を定義する
変数を宣言する際にはあらかじめ「変数の型」を指定する必要があります。
DATA Z_DATE TYPE D.
つまり、変数は必ず1つのデータ型(何を格納するものか?)を指定しなければなりません。
「Z_DATE」という変数を定義するよ!
だけでは変数定義は不完全であり、必ず
その変数は「日付」を格納するものだよ!
と指定することによってはじめて「変数の定義を行った」ことになるのです。
変数は、箱の名前と箱の仕様(データ型)をセットで宣言すると覚えておきましょう。
トリビア:ABAPerでも知らないDATA命令のTIPS
ABAPerでも、知らない人は多くいる知識を紹介します。
先ほど変数の宣言は「名前」と「データ型」をセットで行うと説明しました。
ただし、実はセットで行わなくてもOKな場合が存在します。
例えば
DATA A.
のように、TYPEオプションを用いずにDATA命令を利用することも可能なのです。
TYPEオプションを用いずにDATA命令で宣言した変数は、「データ型 "C" データ長1」になります。
基本は、この構文は利用しないため、あくまでも豆知識としてご理解ください。
ある現場のプログラムで一度だけ見かけたことがありましたが、かなりレアなものであり、可読性も非常に低くなってしまうため、利用は厳禁です。
2.3 @DATA命令―インライン宣言
ABAPも他のプログラミング言語同様に、日々進化し続けています。
@DATA で「箱」と「箱の中身」を同時に定義・処理する記述方式があります。
3 TYPES命令との混同に注意
最初に躓くのが、TYPEとTYPESの違いです。
先ほどの章で、構文の後半部分の「〜TYPE」を説明しましたが、よくある間違い・混乱ポイントとなるのが、TYPEとTYPES命令の違いです。
両者は似て非なるものであるので、しっかりとした理解・認識が必要になります。
4 合わせて覚えておきたい:定数定義
DATA命令は、変数を定義する命令でした。
変数と対をなす概念に「定数」があります。
これは、プログラム実行中に値が書き換えられない「箱」です。
タグ:ABAP