Natural プログラム内にストラクチャードモードで記述されている最初のステートメントは常に、プログラムで使用するフィールドを定義するために使用される DEFINE DATA
ステートメントである必要があります。
このドキュメントでは、次のトピックについて説明します。
ソースプログラムのインデントについては、Natural システムコマンド STRUCT
の説明を参照してください。
DEFINE DATA
ステートメントで、プログラムで使用するすべてのフィールド(ユーザー定義変数およびデータベースフィールド)を定義します。
使用するすべてのフィールドは、DEFINE DATA
ステートメントで定義する必要があります。
フィールドを定義するには、以下の 2 つの方法があります。
DEFINE DATA
ステートメントそのものでフィールドを定義します(下記参照)。
プログラム外のローカルデータエリアまたはグローバルデータエリアでフィールドを定義し、DEFINE DATA
ステートメントでそのデータエリアを参照します(下記参照)。
複数のプログラム/ルーチンでフィールドを使用する場合は、プログラム外のデータエリアで定義する必要があります。
アプリケーション構造を明確にするために、通常はプログラム外のデータエリアにフィールドを定義することをお勧めします。
データエリアは、データエリアエディタ(『エディタ』ドキュメントを参照)で作成およびメンテナンスします。
以下の最初の例では、プログラムの DEFINE DATA
ステートメント内でフィールドを定義しています。 2 番目の例では、同じフィールドをローカルデータエリア(LDA)で定義し、DEFINE DATA
ステートメントではそのデータエリアへの参照だけを指定しています。
以下の例は、DEFINE DATA
ステートメント内でのフィールドの定義方法を示しています。
DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 PERSONNEL-ID 1 #VARI-A (A20) 1 #VARI-B (N3.2) 1 #VARI-C (I4) END-DEFINE ...
以下の例は、ローカルデータエリア(LDA)でのフィールドの定義方法を示しています。
プログラム:
DEFINE DATA LOCAL USING LDA39 END-DEFINE ...
ローカルデータエリア LDA39:
I T L Name F Leng Index/Init/EM/Name/Comment - - - -------------------------------- - ---- --------------------------------- V 1 VIEWEMP EMPLOYEES 2 NAME A 20 2 FIRST-NAME A 20 2 PERSONNEL-ID A 8 1 #VARI-A A 20 1 #VARI-B N 3.2 1 #VARI-C I 4
以下のトピックについて説明します。
レベル番号は、定義の構造およびグループ化を示すために、DEFINE DATA
ステートメント内で使用します。 これは以下に関連します。
レベル番号は、01~99 の範囲内の 1 桁または 2 桁の数字です(先頭の "0" は任意)。
一般的に、変数定義はレベル 1 です。
ビュー定義、再定義、およびグループでのレベル番号は、連続している必要があります。レベル番号はスキップできません。
ビューを定義する場合、ビュー名はレベル 1、ビューを構成するフィールドはレベル 2 で指定する必要があります。 ビュー定義の詳細については、データベースアクセスの説明を参照してください。
DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 BIRTH ... END-DEFINE
グループを定義すると、連続する一連のフィールドを簡単に参照できます。 共通のグループ名の下に複数のフィールドを定義すると、後で、個々のフィールド名の代わりにグループ名のみを指定することによって、プログラム内でフィールドを参照できます。
グループ名はレベル 1 で指定し、グループに含まれるフィールドは 1 つ低いレベルにする必要があります。
グループ名には、ユーザー定義変数と同じ命名規則が適用されます。
DEFINE DATA LOCAL 1 #FIELDA (N2.2) 1 #FIELDB (I4) 1 #GROUPA 2 #FIELDC (A20) 2 #FIELDD (A10) 2 #FIELDE (N3.2) 1 #FIELDF (A2) ... END-DEFINE
この例では、フィールド #FIELDC
、#FIELDD
、および #FIELDE
は、共通のグループ名 #GROUPA
の下に定義されています。 他の 3 つのフィールドはグループの一部ではありません。 #GROUPA
はグループ名として機能するだけで、それ自体はフィールドではないことに注意してください(したがって、フォーマット/長さ定義を持っていません)。
フィールドを再定義する場合、REDEFINE
オプションは元のフィールドと同じレベルにする必要があります。再定義から作成するフィールドは、1 つ低いレベルにする必要があります。 再定義の詳細については、「フィールドの再定義」を参照してください。
DEFINE DATA LOCAL 1 VIEWEMP VIEW OF STAFFDDM 2 BIRTH 2 REDEFINE BIRTH 3 #YEAR-OF-BIRTH (N4) 3 #MONTH-OF-BIRTH (N2) 3 #DAY-OF-BIRTH (N2) 1 #FIELDA (A20) 1 REDEFINE #FIELDA 2 #SUBFIELD1 (N5) 2 #SUBFIELD2 (A10) 2 #SUBFIELD3 (N5) ... END-DEFINE
この例では、データベースフィールド BIRTH
は、3 つのユーザー定義変数として再定義され、ユーザー定義変数の #FIELDA
は、他の 3 つのユーザー定義変数として再定義されています。