現時点では、プログラムで使用するフィールドは、プログラム内の DEFINE DATA
ステートメントで定義されています。 このフィールド定義をプログラム外のローカルデータエリア(LDA)に配置し、プログラムの DEFINE DATA
ステートメントを使用して、ローカルデータエリアを名前で参照することもできます。 再利用および明確なアプリケーション構造という観点から見ると、通常、プログラム外のデータエリアにフィールドを定義することが推奨されます。
情報を DEFINE DATA
ステートメントからローカルデータエリアに再配置します。 以下の演習を完了すると、サンプルのアプリケーションは次のモジュールで構成されます。
このドキュメントには次の演習が含まれています。
必須フィールドを指定するデータエリアエディタを起動します。
データエリアエディタを起動するには
[Development Functions]メニューの下部で、次の情報を入力して Enter キーを押します。
Code .. C Type .. L Name .. LDA01___________________________ |
"C" は[Create Object]機能、"L" はオブジェクトタイプのローカルデータエリア、および "LDA01" は新しいローカルデータエリア名を表します。
データエリアエディタが表示されます。 オブジェクトタイプは "Local" に設定されています。 これは、画面の左上に示されます。
Local LDA01 Library TUTORIAL DBID 11177 FNR 8 Command > + I T L Name F Length Miscellaneous All -- -------------------------------- - ---------- -------------------------> ----------------------------------------------------------------- S 0 L 1 |
次のフィールドを定義します。
レベル(L 列) | 名前 | フォーマット(F 列) | 長さ |
---|---|---|---|
1 | #NAME-START |
A | 20 |
1 | #NAME-END |
A | 20 |
1 | #MARK |
A | 1 |
これらは、DEFINE DATA
ステートメントで前に定義したユーザー定義変数です。
データフィールドを定義するには
プログラムおよびデータエリアエディタを同じ画面に表示するには、次のように入力して画面分割モードを起動します。
SPLIT P PGM01
画面が 2 つのセクションに分割されます。 プログラムは画面の下半分に表示されます。 このモードではプログラムを変更できません。 データエリアエディタでユーザー定義変数を挿入する場合の参照として、プログラムを使用できます。 プログラムの次のページまたは前のページに進むには、コマンド
SPLIT +
および SPLIT -
を使用します。
上の表に示す必須情報をすべて指定します。
ローカルデータエリアが次のように表示されます。
Local LDA01 Library TUTORIAL DBID 11177 FNR 8 Command > + I T L Name F Length Miscellaneous All -- -------------------------------- - ---------- -------------------------> 1 #NAME-START A 20 1 #NAME-END A 20 1 #MARK A 1 ----------------------------------------------------------------- S 0 L 1 Program PGM01 Library TUTORIAL 0010 DEFINE DATA 0020 LOCAL 0030 1 #NAME-START (A20) 0040 1 #NAME-END (A20) 0050 1 #MARK (A1) 0060 1 EMPLOYEES-VIEW VIEW OF EMPLOYEES |
次のコマンドを入力して、画面分割モードを終了します。
SPLIT .
プログラムの DEFINE DATA
ステートメントで前に定義したデータフィールドをインポートします。 フィールドは、Natural データビューからデータエリアエディタに直接読み込まれます。 データビューは、データ定義モジュール(DDM)で定義されたデータベースフィールドを参照します。
DDM からデータフィールドをインポートするには
すでに定義した変数の下の行で、T 列から開始して次のように入力します。
.V(EMPLOYEES)
例:
Local LDA01 Library TUTORIAL DBID 11177 FNR 8 Command > + I T L Name F Length Miscellaneous All -- -------------------------------- - ---------- -------------------------> 1 #NAME-START A 20 1 #NAME-END A 20 1 #MARK A 1 . V( EMPLOYEES) |
Enter キーを押します。
EMPLOYEES
ビューが表示されます。
SYSGDA 4461: Mark fields to incorporate into data area. Local LDA01 Library TUTORIAL DBID 11177 FNR 8 View EMPLOYEES I T L Name F Length Miscellaneous - - -- -------------------------------- - ---------- ------------------------- 2 PERSONNEL-ID A 8 /* CNNNNNNN G 2 FULL-NAME /* NAME INFORMATION 3 FIRST-NAME A 20 /* FIRST/CHRISTIAN NAME 3 MIDDLE-I A 1 /* MIDDLE INITIAL 3 NAME A 20 /* SURNAME/FAMILY NAME 2 MIDDLE-NAME A 20 /* SECOND/MIDDLE NAME 2 MAR-STAT A 1 /* M=MARRIED 2 SEX A 1 2 BIRTH D /* BIRTH-DATE (YYYY-MM- 2 N§BIRTH I 2 /* INDICATOR OF BIRTH G 2 FULL-ADDRESS M 3 ADDRESS-LINE A 20 (1:8)/* ALL ADDRESS LINES 3 CITY A 20 /* MAIN CITY/TOWN 3 ZIP A 10 /* POSTAL ADDRESS CODE 3 POST-CODE A 10 /* POSTAL ADDRESS CODE 3 COUNTRY A 3 /* COUNTRY CODE G 2 TELEPHONE - - -- -------------------------------- - ---------- ------------------------- |
I 列に任意の文字を入力して、次のフィールドをマークします。
PERSONNEL-ID
FULL-NAME
NAME
DEPT
LEAVE-DATA
LEAVE-DUE
これらのフィールドがすべてビューの最初のページに表示されるわけではありません。 ビューで次のページにスクロールし、Enter キーを押します。
注意:
フィールド PERSONNEL-ID
は、後でサブプログラムを作成するときに使用します。
必須フィールドをすべてマークしたら、データエリアエディタが再表示されるまで Enter キーを押して処理を続行します。
ローカルデータエリアが次のように表示されます。
SYSGDA 4462: 6 field(s) of view EMPLOYEES included. Local LDA01 Library TUTORIAL DBID 11177 FNR 8 Command > + I T L Name F Length Miscellaneous All -- -------------------------------- - ---------- -------------------------> 1 #NAME-START A 20 1 #NAME-END A 20 1 #MARK A 1 V 1 EMPLOYEES-VIEW EMPLOYEES 2 PERSONNEL-ID A 8 /* CNNNNNNN G 2 FULL-NAME /* NAME INFORMATION 3 NAME A 20 /* SURNAME/FAMILY NAME 2 DEPT A 6 /* DDDDSS G 2 LEAVE-DATA /* LEAVE/VACATION INFO 3 LEAVE-DUE N 2.0 /* VACATION DAYS/YEAR ----------------------------------------------------------------- S 10 L 1 |
ビューの名前に、"-VIEW" が自動的に追加されます。 これは、プログラムですでに使用している名前と同じものです。
T 列は、変数タイプを示します。 ビューは "V" で示され、各グループは "G" で示されます。
ローカルデータを格納します。
ローカルデータエリアを格納すると、Natural プログラムから参照できます。
定義したローカルデータエリアを使用するため、プログラムの DEFINE DATA
ステートメントを変更します。
プログラムでローカルデータエリアを使用するには
データエリアエディタのコマンド行で次のように入力して、プログラムエディタに戻ります。
E PGM01
DEFINE DATA
ステートメントで、LOCAL
と END-DEFINE
間にある変数をすべて削除します(行コマンド .D を使用)。
LOCAL
行を次のように変更して、ローカルデータエリアへの参照を追加します。
LOCAL USING LDA01
プログラムは次のようになります。
DEFINE DATA LOCAL USING LDA01 END-DEFINE * RP1. REPEAT * INPUT USING MAP 'MAP01' * IF #NAME-START = '.' THEN ESCAPE BOTTOM (RP1.) END-IF * IF #NAME-END = ' ' THEN MOVE #NAME-START TO #NAME-END END-IF * RD1. READ EMPLOYEES-VIEW BY NAME STARTING FROM #NAME-START ENDING AT #NAME-END * IF LEAVE-DUE >= 20 THEN PERFORM MARK-SPECIAL-EMPLOYEES ELSE RESET #MARK END-IF * DISPLAY NAME 3X DEPT 3X LEAVE-DUE 3X '>=20' #MARK * END-READ * IF *COUNTER (RD1.) = 0 THEN REINPUT 'No employees meet your criteria.' END-IF * END-REPEAT * DEFINE SUBROUTINE MARK-SPECIAL-EMPLOYEES MOVE '*' TO #MARK END-SUBROUTINE * END
プログラムを実行します。
前(DEFINE DATA
ステートメントでローカルデータエリアを参照していない場合)と同じ結果になることを確認するため、開始名に「JONES」と入力して、Enter キーを押します。
プログラムエディタに戻るには、MORE
プロンプトで「EDIT
」と入力します。
プログラムを格納します。
次の演習「グローバルデータエリア」に進みます。