マップエディタ

Natural マップエディタを使用して、タイプマップの Natural オブジェクトを作成します。マップとは、INPUT USING MAP ステートメント(入力マップ用)または WRITE USING MAP ステートメント(出力マップ用)のいずれかを使用して、プログラムなどの Natural オブジェクトで参照できる画面レイアウトです。

マップには、テキストフィールドおよびデータフィールドが含まれます。テキストフィールドはリテラルの文字列であり、データフィールドは変数です。データフィールドには、ユーザー定義変数または Natural システム変数のいずれかを使用できます。

マップを作成すると、ソースオブジェクトおよびカタログ化オブジェクトとして、Natural システムファイルのライブラリに保存できます。

注意:
Windows 環境で Natural スタジオを使用する場合、マップエディタは Unicode フォーマットおよび Unicode 文字列のフィールドをサポートしています。ただし、ローカルの UNIX、OpenVMS、またはメインフレーム環境で、Unicode マップのソースをマップエディタの編集エリアに読み込むと、すべての Unicode 文字列がソースから削除されます。

マップエディタ』ドキュメントでは、次のトピックについて説明します。


マップの作成

マップの作成には、主に次の 4 つの手順が関係しています。

  1. マッププロファイルの定義(つまり、使用するフィールドデリミタ、フォーマット設定、コンテキスト設定、および充填文字)。必要な項目を選択するメニューが提供されます。

  2. マップの定義。マップは、2 つの異なる方法で定義できます。

    • 最初にプロトタイプマップを定義して、次にマップを参照するオブジェクトで対応するデータ定義を作成し、その後でマップをアプリケーションに統合します。

      フィールドは、マップ編集画面で直接定義できます。各フィールドにはデフォルト名が割り当てられます。続けて、対応するデータ定義が各オブジェクトで作成されたら、これらのデータ定義をマップフィールドに割り当てることができます(事後割り当て)。

    • 既存のデータ定義を使用してマップを定義します。

      データ定義がマップを参照するオブジェクトにすでに存在する場合、マップフィールドは、このオブジェクトに含まれているデータ定義を使用することによって作成できます。この場合、データ定義のすべての特性はマップにコピーされます。

  3. マップで使用するフィールドの定義。マップフィールドは、マップ編集画面でフィールド定義を直接入力するか、または別の Natural オブジェクトからデータ定義を選択して作成できます(「データ定義の選択」を参照)。

  4. マップ定義の保存またはカタログ、あるいはその両方。前の手順で説明したようにマップを定義した後は、ソースオブジェクトまたはカタログ化オブジェクトとして、現在のライブラリおよび Natural システムファイルに保存できます。ソースオブジェクトとして保存した後は、続くマップ編集セッション中にマップを読み込んだり変更したりできます。カタログ化オブジェクトとしてマップを保存すると、そのマップを Natural プログラムから呼び出すことができます。

マップエディタの起動

次のセクションでは、Natural マップエディタを起動して新規マップの作成または既存マップの編集を行う方法について説明します。

新規マップの作成

Natural のメインメニューで[Direct]を選択して ENTER キーを押し、[Direct Command]ウィンドウを呼び出します。

注意:
また、Natural のメインメニューでライブラリを選択したときに表示されるライブラリ選択リストで、[<DIRECT COMMAND>]を選択して[Direct Command]ウィンドウを呼び出すこともできます。

Direct Command window に次のコマンドを入力します。

EDIT MAP

または、短縮形では次のようになります。

E M

ENTER キーを押します。[MAP EDITOR]メニューが表示されます。

   ··············································································· 
                       NATURAL MAP EDITOR (Esc to select field)                  · 
   Create   Modify    Erase     Drag      Info OFF  Lines     Ops. Map  Quit     · 
   ···············································································

既存マップの編集

Natural のメインメニューで[Direct]を選択して ENTER キーを押し、[Direct Command]ウィンドウを呼び出します。

このウィンドウで、次のコマンドを入力します。

EDIT map-name

または、短縮形では次のようになります。

E map-name

編集するマップの名前を覚えていない場合は、Natural のメインメニューで[Library]を選択し、ENTER キーを押します。使用可能なすべてのライブラリのリストが表示されます。

カーソルを使用して必要なライブラリをリストから選択し、ENTER キーを押します。このライブラリにあるすべてのオブジェクトのリストが表示されます。

注意:
ファイル指定は列[Type]の下にリストされます。

カーソルキーを使用して、目的のマップがリストに表示されるまでリストをスクロールします。次に、オブジェクト名の前の列でマップを E(編集)でマークし、ENTER キーを押します。マップエディタが起動して、選択したマップが表示されます。

注意:
F2 キーを押すと、この特定のオブジェクトに有効な機能(C=Check、D=Read、E=Edit など)がリストされたウィンドウが項目[Ops. Map]に表示されます。

呼び出されたマップに関係なく、画面の最下部にプロンプトが表示され、カーソルキーを使用してフィールドを選択し、ENTER キーを押すよう求められます。選択したフィールドは強調表示されます。

注意:
最下行の右端に、強調表示されたフィールドの列番号および行番号が表示されます。

ESC キーを押すと、[MAP EDITOR]メニューが呼び出されます。

注意:
既存マップのプログラミングモード(ストラクチャード/レポーティング)を変更するには、[Direct Command]ウィンドウに次のコマンドを入力します。

READ map-name
GLOBALS SM=ON/OFF
SAVE map-name

Map Editor メニュー

マップエディタのメインメニューは上記の[MAP EDITOR]メニューです。次のセクションでは、メニュー項目について説明します。

Create

ENTER キーを押すと、次の項目を含むリストが表示されます。

  • A - パラメータデータエリア

  • G - グローバルデータエリア

  • H - Helproutine

  • L - ローカルデータエリア

  • M - マップ

  • N - サブプログラム

  • P - プログラム

  • S - サブルーチン

  • T - テキスト定数

  • U - ユーザー定義

  • V - ビュー(DDM)定義

  • 1 - パラメータ定義

  • 2 - ローカル定義

これらの項目を使用して、このクラスのオブジェクトのフィールド/変数をオブジェクトから選択します。また、「C」およびオブジェクトクラスの省略形(キー依存)を入力して、オブジェクトクラスを起動することもできます。詳細については、「データ定義の選択」セクションを参照してください。

変更

Modify]で選択したフィールドを変更できます。選択したフィールドとは現在のフィールドのことです。このフィールドは強調表示されます。

フィールド属性(拡張フィールド編集)を表示するウィンドウが表示されます。このウィンドウで、これらの属性の内容を変更できます。

Erase

Erase]で現在のフィールドを削除できます。次のメッセージが表示されます。

Delete field (Y/N)?

すべての応答はキーに依存するため、注意してください。

現在のフィールドが配列フィールドの場合は、(フィールドだけでなく)配列全体が削除されます。

Drag

Drag]で画面上で未使用の位置に現在のフィールドを移動できます。選択したフィールドは、カーソルを使用して制限なく移動できます。

フィールドを配置して ENTER キーを押すと、このフィールド位置が有効になります。

Info ON/OFF

Info ON/OFF]は、[Extended Field Editing]ウィンドウの表示の ON と OFF の切り替えに使用されます(トグルスイッチ)。[OFF]はデフォルト値です。

ONOFF の切り替えには、ENTER キーまたは I(キー依存)を使用します。

[Lines]を選択すると、次の行固有機能を選択できる選択リストが表示されます。

   Insert After    
   Erase Line      
   Copy After      
   Duplicate Line  
   Move After      
   Split Line      
   Join Line

これらの機能を選択すると、(単一のフィールドではなく)マップの行全体に操作を実行できます。すべての操作は現在の行に対して実行されます。

注意:
これらの機能の動作はその機能名が示しています。各項目を選択すると、画面の最下部にプロンプトが表示されます。

オプションマップ

Ops. Map](マップ操作)を選択すると、次の選択リストが表示されます。

C Check Map   
E Edit  Map   
V Reverse  Map
K Key Rules   
L List  Map   
P Prof. Map   
R Read  Map   
S Save  Map   
T Test  Map   
W Stow  Map   

リストには、次の項目が含まれています。

項目 説明
Check Map 構文をチェックし、ソースコードを生成します。
Edit Map マップ編集画面を起動し、既存のマップ定義を変更します。マップエディタによって、編集セッションが新たに開始されます。
Reverse Map この機能は、デフォルトコードページが、右から左(RTL)に書く言語(ヘブライ語など)をサポートしている場合にのみ適用されます。

画面のマップの方向に関して、左から右(デフォルト)を右から左に、またはその逆に反転します。これは視覚的な変更にすぎません。マップソースで定義された物理的なフィールドの位置は維持されます。

画面の方向は、[Reverse Map]を再度選択するまで反転したままとなります。

Key Rules ファンクションキーに関連した処理ルールの編集を起動します。
List Map ソースコードを生成し、そのソースコードを表示します。
Prof. Map マッププロファイルウィンドウを起動します。このウィンドウについては、「マッププロファイル」で説明します。
Read Map マップ編集画面を起動し、既存のマップ定義を読み込みます。
Save Map ソースコード生成チェックを実行してからマップを保存します。マップ定義はソース形式で Natural ライブラリに保存されます。
Test Map 現在のマップ定義をテストして、正しく実行できることを確認します。このテストには、すべての処理ルールおよびヘルプ機能のテストが含まれています。
Stow Map ソースコード生成チェックを実行し、マップ定義を保存およびカタログします。マップ定義はカタログされ、ソース形式で現在の Natural ライブラリに保存されます。

Quit

Quit]でマップエディタセッションを終了します。

マップを編集して保存していない場合に、[Quit]を選択して ENTER キーを押すと、次のプロンプトが表示されます。

Modifications have not been saved, quit anyway Y/N ?

注意:
応答はキーに依存するため、注意してください。

エディタセッションを終了すると、Natural のメインメニューが表示されます。

テキスト定数の作成

Create]リストから[Text Constant]を選択し、ENTER キーを押します。

呼び出されたマップタイプに応じた画面が表示されます。

画面の最下部に、カーソルを配置してテキストを入力することを求めるプロンプトが常に表示されます。

空フィールドの先頭にカーソルを配置します。

注意:
既存のフィールドは上書きできません。

テキストを入力します。最初の文字を入力すると、その行が強調表示されます。強調表示は、テキストを入力するスペースの空きが最大であることを示しています。ENTER キーを押すまで文字を入力または削除できます。

注意:
ESC キーを押すと、テキスト入力がキャンセルされます。

入力したテキストに使用する属性および色を選択するには、PF2 キーを押します。UP-ARROW および DOWN-ARROW キーを使用してスクロールし、使用可能な属性/色の 1 つを選択するか、または対応する省略形(B=Blinking または RE=Red など)を使用して ENTER キーを押します。LEFT-ARROW および RIGHT-ARROW キーを使用すると、属性定義とカラー定義を切り替えることができます。

テキストの入力を終了します。

注意:
テキストを定義した後にデータ変数を作成または定義、あるいはその両方を行う場合は、「マップでの Natural システム変数の使用」セクションを参照してください。

ユーザー定義変数の作成

フィールドリストから[User Defined]を選択し、ENTER キーを押します。

以下の例のような[Extended Field Editing]ウィンドウが表示されます。

   Extended Field Editing 
   Field :                                                                       
   Format: A Len:            AL:             PM:                  ZP: N  SG: N   
   Rules : 0 Rule Editing: N Array:          Array Editing: N     Mode:          
   AD:            CD:        CV:                                  DY: N  HE: N   
   EM:                                                                         

画面の最下部にメッセージが表示され、次の操作を実行するように求められます:Position cursor and press Enter or format char.

フィールド位置の開始位置にカーソルを配置して ENTER キーを押します。

選択リストが開き、英数字のデータタイプの A など、有効な Natural データフォーマットがすべて表示されます。

注意:
Natural データフォーマットがわかる場合は、カーソルを配置したフィールド位置に直接入力できます。したがって、使用可能なデータフォーマットは表示されません。

必要な Natural データフォーマットを選択して ENTER キーを押します。

Extended Field Editing]ウィンドウに Natural データフォーマットが入力され、デフォルト名(#1 など)がフィールドに割り当てられます。

この画面には、2 つの長さフィールドが表示されます。

  1. AL](英数字長):表示上の長さ

  2. Len]:フィールドの内部的な長さ

ユーザー定義変数の長さは、次の手順を実行して定義します。

  1. 最初のフィールドの長さを入力します(AL など)。

  2. フィールド長の定義を完了した場合は ENTER キーを押します。

  3. 変数にフィールド名を入力するように求められます。適切なフィールド名を選択し、ENTER キーを押します。

これで、最初のフィールドの定義機能が完了します。

2 番目の長さフィールドにカーソルが自動的に移動します(Len)。フィールド長の定義を変更するか、または TAB キーを使用します。定義中のフィールドで使用する他の関連情報をすべて定義するまで、この処理を続行します。

これらのフィールドの詳細については、「ユーザー定義変数の変更 - フィールド編集」を参照してください。

この定義が完了した場合は ENTER キーを押します。

マップでの Natural システム変数の使用

Natural システム変数はマップ定義でも指定できます。

Natural システム変数は、[Create]>[User Defined]フィールドを使用して選択できます。

フィールドリストから[*]を選択し、表示されたリストからシステム変数を選択します。

指定したシステム変数の Natural データフォーマットがフィールド定義フォームに挿入されます。

ユーザー定義変数の変更 - フィールド編集

マップエディタを使用して、フィールドおよびそのすべての属性を定義します。

MAP EDITOR]メニューから[Create]または[Modify]を選択し、ENTER キーを押します。次の例のような[Extended Field Editing]ウィンドウが表示されます。このウィンドウには、現在のフィールドの属性がすべて表示されます。

   Extended Field Editing 
   Field :                                                                       
   Format: A Len:            AL:             PM:                  ZP: N  SG: N   
   Rules : 0 Rule Editing: N Array:          Array Editing: N     Mode:          
   AD:            CD:        CV:                                  DY: N  HE: N   
   EM:                                                                         

Extended Field Editing]ウィンドウで、選択した任意のフィールドを変更できます。選択したフィールドとは現在のフィールドのことです。このフィールドは強調表示されます。

次の表で、[Extended Field Editing]ウィンドウに表示されるフィールド属性について説明します。

フィールド属性 説明
Field フィールド名。フィールド名の割り当ては、そのフィールドを最初に定義した方法に関係します。

別の Natural オブジェクトのデータ定義からフィールドを取得した場合は、このオブジェクトのフィールド定義と同じ名前が割り当てられます。

Natural システム変数としてフィールドを指定した場合は、指定した変数の名前が割り当てられます。

フィールドが上のどちらでもない場合は、ダミーの名前が割り当てられます。このようなフィールドでは、名前を割り当ててからマップを実行する必要があります。

フィールドの名前は変更できます。ただし、事前に接頭辞が割り当てられていないフィールドには、接頭辞を使用しないでください。接頭辞が付けられたフィールド名を取得するには、他の Natural オブジェクトのデータ定義からフィールドを選択します。名前の入力を求められます。変更が完了した場合は、ENTER キーを押して続行する必要があります。完了していない場合は、TAB キーを使用してフィールド属性を移動できます。

注意:
重複するフィールド名は、出力専用フィールドとして定義されたフィールドについてのみ許可されています。

Format フィールドの Natural データフォーマット。これらは現在の入力を上書きすることにより変更できます。
Len 変数の内部的なプログラム長。
AL]または [NL] または [FL] または[DF
フィールドを表示するときに使用する長さ。フィールドラベルは、入力した Natural データフォーマットによって異なります。
 
AL フォーマット A(英数字)、L(論理)、および T(時刻)の場合
NL フォーマット B(バイナリ)、I(整数)、N(数値)、および P(パック型数値)の場合
FL フォーマット F(浮動小数点)の場合
DF フォーマット D(日付)の場合
PM 出力モード。

この入力フィールドはセッションパラメータ PM に対応します。このフィールドと有効な入力値の詳細については、『パラメータリファレンス』の「PM - 出力モード」を参照してください。

ZP ゼロ出力。ZP に値を入力できるのは、フィールドが数値または時間システム変数の場合のみです。

この入力フィールドはセッションパラメータ ZP に対応します。このフィールドと有効な入力値の詳細については、『パラメータリファレンス』の「ZP - ゼロ出力」を参照してください。

SG 記号の位置。SG に値を入力できるのは、フィールドが数値または時間システム変数の場合のみです。

この入力フィールドはセッションパラメータ SG に対応します。このフィールドと有効な入力値の詳細については、『パラメータリファレンス』の「SG - 符号の位置」を参照してください。

Rules フィールドに対して現在定義されている処理ルールの数。
Rule Editing 処理ルールの編集。次のプロンプトが表示されます。

Inline Processing Rule Editing (Y, <PF2>=EDIT)?

注意:
処理ルールの定義に使用したソースコードは、Natural プログラムエディタを使用する場合と同じ方法で入力または編集します。

Array フィールドが配列かどうかを示します(配列でない場合は空白)。
Array Editing 配列の編集。次のプロンプトが表示されます。

Array Editing (Y, <PF2>=EDIT)?

Mode フィールドが作成された方法を示します。

Data] - フィールドは別の Natural オブジェクト(DDM を除く)のデータ定義からコピーされています。

Sys] - フィールドはシステム変数です。

Undef] - フィールドは画面に直接作成されており、ダミー名が付けられています。

User] - フィールドの名前は拡張フィールド編集で作成されています。

View] - フィールドは DDM のフィールド定義からコピーされています。

AD フィールド属性。

このフィールドはセッションパラメータ AD に対応します。このフィールドと有効な入力値の詳細については、『パラメータリファレンス』ドキュメントの「AD - 属性の定義」で関連セクション(次を参照)を参照してください。

次のプロンプトが表示されます。

Attribute definitions (<PF2>=EDIT)

次の項目を含む[Attribute Definition]ウィンドウが表示されます。

この機能にはトグル機能が組み込まれています。表示されている属性定義文字が正しい場合は、ESC キーを使用します。文字は変更されません。フィールドの属性特性を変更するには、目的の属性を選択して ENTER キーを押します。AD 定義に変更が挿入されます。この機能を終了するには ESC キーを押します。選択した項目ごとに属性ウィンドウが表示されます。このウィンドウの説明はそれぞれのウィンドウを参照してください。

CD カラー定義。次のプロンプトが表示されます。

Color definitions (<PF2>=EDIT <CSR-UP/DN>=Select (Esc=Cancel Enter=OK))

カラー定義を編集するには PF2 キーを押します。色を選択するにはカーソルを使用して ENTER キーで確定します。

CV ダイナミックフィールド属性の制御変数。次のプロンプトが表示されます。

(<PF2>=Edit Rank if Array)

このフィールドに使用する属性を含む変数の名前。プログラムでは、この変数を Natural データフォーマット C で定義する必要があります。

また、制御変数には MODIFIED データタグが含まれています。このデータタグは、マップ実行後にフィールドが変更されたかどうかを示しています。

単一の制御変数を複数のマップフィールドに適用できます。その場合、制御変数を参照しているフィールドのいずれかが変更されると、MODIFIED データタグが設定されます。

DY ダイナミック STRING 属性。次のプロンプトが表示されます。

(Y,<PF2>=Edit)

このパラメータを使用して、英数字変数のテキスト文字列に格納される特定の文字を定義し、属性設定を制御します。有効な入力値の詳細については、『パラメータリファレンス』の「DY - ダイナミック属性」を参照してください。

HE HE]オプションは、ヘルプルーチンまたはヘルプマップをマップフィールドに割り当てるために使用します。ヘルプルーチンまたはヘルプマップは、その後ヘルプ要求がマップフィールドに対して行われると、実行時に呼び出されます。詳細については、『パラメータリファレンス』の「HE ヘルプルーチン」で HE セッションパラメータの説明を参照してください。

HE]フィールドに「Y」を入力するか、またはフィールドにカーソルを配置して PF2 キーを押すと、ヘルプルーチンまたはヘルプマップの名前、およびこのヘルプルーチンまたはヘルプマップに渡されるパラメータを入力するウィンドウが表示されます。

HE]フィールドに指定する名前およびパラメータに適用される構文は、『パラメータリファレンス』の「HE パラメータの構文」に記載されている HE セッションパラメータの構文に対応しています。そこに記載されている構文の説明に加えて、マップエディタを使用する場合、次のものが適用されます。

operand1

  • マップフィールドの名前に対応する変数名が指定されている場合は、このフィールドは Natural データフォーマット/長さ A8 である必要があります。

  • マップフィールドがまだ存在しない変数名が指定されている場合、その名前のマップパラメータが、Natural データフォーマット/長さフィールド A8 で自動的に定義されます。

operand2

  • マップフィールドがまだ存在しない変数名が指定されている場合、その名前のマップパラメータが、Natural データフォーマット/長さ N7 で自動的に定義されます。

HE]フィールドからパラメータを削除することは、パラメータがマップフィールドでない場合、あるいはヘルプパラメータまたは[Starting from]値として他のマップフィールドに関連付けられていない場合、パラメータがマップからも削除されることを示しています。

EM フィールドに対して使用する編集マスク。

上記の 3 つの項目は、次の内容と特に関連しています。

ルール編集 - 処理ルール

フィールド関連の処理ルール

次の 3 つのタイプの処理ルールを定義できます。

  • インライン処理ルール

  • Predict フリールール

  • Predict 自動ルール

インライン処理ルールはマップソース内で定義され、名前は割り当てられません。インラインルールでは、Predict を使用できなくても構いません。

注意:
フィールド関連のインライン処理ルールは、フィールド単位でも実行できます。詳細については、「フィールドに基づいた処理」セクションを参照してください。

Predict フリールールには名前が割り当てられ、Predict ディクショナリに保存されます。既存の Predict フリールールは変更できません(変更は Predict のみで可能)。ただし、フリールールでは、エディタへの読み込み、変更、および別名での保存による新規フリールールの作成を行うことができます。

ローカルまたはリモートの Predict 環境に保存されている Predict フリールールにアクセスできます。

UNIX、OpenVMS、またはメインフレームホストのリモート環境に保存した Predict フリールールには、Natural RPC サーバーを使用してアクセスできます。

Predict サーバーに接続する方法の詳細については、『パラメータリファレンス』のプロファイルパラメータ USEDIC、および『コンフィグレーションユーティリティ』ドキュメントの「コンフィグレーションファイルのパラメータの概要」セクションの「ディクショナリサーバー割り当て」を参照してください。

ルール名を割り当てると、インラインルールを Predict フリールールにできます。削除すると Predict フリールールをインラインルールにできます。

Predict の自動ルールはデータベースフィールドに適用され、Predict 管理者によって定義されます。他の Natural オブジェクトのデータ定義からフィールドを作成し、そのフィールドがデータベースフィールドである場合は、そのフィールドのすべての自動ルールがマップ定義にリンクされます。すべての自動ルールは連結され、単一のマップルールとして処理されます。

自動ルールのランクはマッププロファイル設定に定義されています(デフォルトは 1)。

自動ルールは、マップエディタを使用して変更することはできません。ただし、コマンド P=n を使用するか、または古いランクを上書きして、異なるランクを割り当てることができます。

処理ルールのソースコード内のアンパサンド(&)は、そのルールを定義したフィールドの完全修飾名によって、ダイナミックに置き換えられます。配列の添字はこの置き換えの影響を受けません。次の例に示すように、アンパサンド(&)の後に明示的に添字表記を指定する必要があります。

例:

IF &    = ' ' THEN REINPUT 'ENTER NAME' MARK *&   /* For a scalar field
IF &(1) = ' ' THEN MOVE 'X' TO &(*)               /* For an array field

処理ルールのソースコード内でフィールド名表記 &.field-nameを使用すると、ビュー名を持つフィールドを明示的に指定することなく、データベースフィールド間の値の完全性を照合する DDM 固有のルールを定義できます。field-name として、DDM に定義されたデータベースフィールドの名前を指定します。コンパイル時には、対応するビュー名でアンパサンド(&)が置き換えられ、フィールドがダイナミックに指定されます。これにより、フィールドを取得するビューに関係なく、特定のフィールドに同じ処理ルールを使用できます。

ファンクションキー関連の処理ルール

次の 2 種類のファンクションキー関連の処理ルールを定義できます。

  • インライン処理ルール

  • Predict フリールール

ファンクションキー関連の処理ルールを使用すると、プログラム依存のファンクションキーにマップ処理中の動作を割り当てることができます。すでにプログラムでコマンドが割り当てられているファンクションキーの場合、ルールは処理されずにこのコマンドが実行されます。

例:

IF *PF-KEY = 'PF3' 
   ESCAPE ROUTINE 
END-IF

このルールが実行されると、それ以上ルール処理が行われずに、マップ処理が終了します。

処理ルールのランク

1 つのフィールドには、最大で 100 の処理ルール(ランク 0~99)を定義できます。マップ実行時に、処理ルールはフィールドのランクおよび画面位置によって昇順に実行されます。PF キー処理ルールは、常に最初の画面位置にあるものとみなされます。

最適なパフォーマンスを得るために、処理ルールにランクを割り当てるときは、次の割り当てをお勧めします。

ランク 処理ルール
0 終了ルール
1~4 自動ルール
5~24 フォーマットチェック
25~44 個別フィールドの値チェック
45~64 フィールド間での値の照合
65~84 データベースアクセス
85~99 特殊な用途

処理ルールの編集

注意:
処理ルールを変更または追加する場合は、変更内容を有効にするために、そのルールを参照しているマップを再カタログする必要があります。

フィールド関連の処理ルールを編集するには、[Extended Field Editing]ウィンドウで[Rule Editing]を選択します。ファンクションキー関連の処理ルールを編集するには、[Ops. Map]選択リストから[Key Rules]を選択します。

オプション[Rules]および[Fields]を含む次のウィンドウが表示されます。

   ··Current Field: PERSONNEL.STREET·············································· 
   ·                      R U L E   E D I T I N G (Esc = Quit)                   · 
   ·Rules                                  Fields                                · 
   ··············································································· 
                                                                                   
                                       Hobby:  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX      
   Address                                                                         
   -                                                                               
   State        :  XX                                                              
   Zip          :  99999                                                           
   City         :  XXXXXXXXXXXXXXX                                                 
   Street/Number:  XXXXXXXXXXXXXXXXXXXX  99999                                     
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                    
                                                                                  
                                                                                   
                                                                                   
                                                                                   
    Create or modify a rule for this field

カーソルを使用してこれらのオプションの 1 つを選択し、ENTER キーを押します。

[Fields]を選択すると、現在のマップで使用されている変数のリストが表示されます(参照目的のみ)。

[Rules]を選択すると、現在のフィールドの既存ルールの選択リストが表示されます。

各リスト上で、Predict ルールは名前によって、インラインルールは最初の 3 行のソースコードによって識別されます。

フィールドまたはキーに処理ルールを定義するには、次の方法があります。

  • 新規処理ルールの作成

    • 新規ルールの定義

    • 既存ルールを変更して新しい名前で保存

  • 既存ルールの割り当て

    • 編集

    • 移動

    • コピー

    • ルールのリンク解除

Start of instruction set新規処理ルールを定義するには

  1. [Create]を選択します。

    空のルールエディタが表示されます。

  2. ルールを入力します。(ソースコードは、Natural プログラムエディタと同じ方法で使用します。)

  3. このルールを Predict フリールールにする場合は、ルールに名前を付けます。このルールをインラインルールにする場合は、名前を付けないでルールを保存します。

  4. ルールを保存します。「処理ルール編集のコマンド」セクションを参照してください。

    重要:
    ルールを保存したら、Predict で変更のみできます。

Start of instruction set既存の処理ルールを変更するには

  1. ルールエディタヘッダーで、[Rule]フィールドに Predict ルールの名前を入力して ENTER キーを押します。

    ルールエディタにルールが表示されます。

  2. ルールを変更します。(ソースコードは、Natural プログラムエディタと同じ方法で使用します。)

  3. ルールの名前を変更して保存します。「処理ルール編集のコマンド」セクションを参照してください。

    重要:
    ルールを保存したら、Predict で変更のみできます。

Start of instruction set既存のルールを割り当てるには

  1. リストから既存のルールを選択します。

  2. ENTER キーを押します。

    ウィンドウが開き、オプション Edit、Move、Copy、Unlink が表示されます。

    • 編集
      ルールを変更するには、[Edit]を選択します。ルールの名前および内容(フリールールの場合)がエディタに表示されます。セクションの手順 2 を参照し、既存の処理ルールを変更します。

    • Move
      ルールのランクを変更するには、[Move]を選択します。ENTER キーを押すと、新しいランクを選択できるリストが表示されます。

    • Copy
      ルールをコピーして新しいランクを割り当てるには、[Copy]を選択します。ENTER キーを押すと、新しいランクを選択できるリストが表示されます。

    • リンク解除
      フィールドからルールを削除するには、[Unlink]を選択します。

    • ESC で終了します。

    注意:
    データベースステートメントを参照するルールが書かれている場合は、行参照番号ではなくラベルを使用する必要があります。

    必要なフィールド処理ルールを入力した後、コマンドを発行します。

    P=nn

    ここで、nn は処理ルールのランクです。

    このコマンドにより、ルールが自動的に保存されます。

処理ルール編集のコマンド

処理ルールエディタでは、エディタコマンド行で次のコマンドを使用して、編集する処理ルールを選択できます。

Command 関数
P nn ランク nn のルールを選択します。
P* 選択リストからルールを選択します。
P フィールドに定義された次のルールに進みます。
P=nn 現在のランクのルールにランク nn を割り当て、ルールを自動的に保存します。
U リンクを解除(削除)します。
. 処理ルールの編集を終了し、ルールを保存します。

Array Editing

配列の編集を起動するには、TAB キーを使用して、フィールド属性ウィンドウの項目[Array Editing]を選択します。文字 NY(キー依存)で置き換えるか、または PF2 キーを押すと、[Array Definition]ウィンドウが表示されます。

   ·Array Definition······························································ 
   Name #1                                         Upper Bnds 1_____ 1_____ 1_____ 
   ------------------------------------------------------------------------------- 
   Dimensions                       Occurrences    Starting from     Spacing       
   1 . Index vertical               1__            ________          0   Lines     
   0 . Index horizontal             1__            ________          1   Columns   
   0 . Index (H/V) V                1__            ________          0   Cls/Ls    
   ···············································································

このウィンドウには、マップに定義されたフィールドが表示されます。変更が不要な場合は、TAB キーを押して次のフィールドに進みます。前のフィールドに戻る場合は、SHIFT+TAB キーを押します。

注意:
マップエディタでは、X-array(拡張可能な配列)はサポートされていません。

この[Array Definition]ウィンドウには、次のエントリが含まれています。

エントリ 説明
Upper Bnds 配列の上限を示します。つまり、(左から右に)1 次元、2 次元、および 3 次元で最も高いオカレンスです。

プログラムで定義されたフィールドがマップ配列を定義するために使用される場合、プログラムで定義されている、そのフィールド(ユーザー定義変数またはデータベースフィールド)の上限が使用されます。これらは配列定義画面で上書きすることはできません。

マップ配列が他の Natural オブジェクトのデータ定義から生成されている場合は、そのマップ配列の次元が、このフィールドに表示されている次元を超えてはいけません。

マップ配列が他の Natural オブジェクトのデータ定義から生成されていない場合は、そのマップ配列の次元が、Natural プログラムで定義されている次元を超えてはいけません。

Dimensions 配列は 3 次元まで保持できます。配列の次元をマップレイアウトにマップする順序は、[Index]オペランドの左側に入力された値によって決まります。使用される短縮形は、H=Horizontal および V=Vertical です。
Occurrences 1 次元に対して定義されるオカレンス数。
Starting from 1 次元に対する開始インデックス値。実際の値がマップ定義を呼び出す Natural プログラムで提供されることを示すために、数値を使用することも、変数名を使用することもできます。
Spacing 各次元のオカレンス間に挿入する空行(垂直方向の次元)または空列(水平方向の次元)の数。

必要な情報を入力して ENTER キーを押します。フィールド属性ウィンドウにリストされている次の項目(AD)に戻ります。

配列定義の例

例 1

10 個の垂直方向のオカレンスから構成される 1 次元配列。各オカレンス間に 2 つの空行が挿入されています。

   ·Array Definition······························································ 
   Name #1                                         Upper Bnds 10____ 1_____ 1_____ 
   ------------------------------------------------------------------------------- 
   Dimensions                       Occurrences    Starting from     Spacing       
   1 . Index vertical               10_            ________          2   Lines     
   0 . Index horizontal             1__            ________          1   Columns   
   0 . Index (H/V) V                1__            ________          0   Cls/Ls    
   ···············································································

例 2

水平方向の配列となること以外は例 1 と同じです。

   ·Array Definition······························································ 
   Name #1                                         Upper Bnds 10____ 1_____ 1_____ 
   ------------------------------------------------------------------------------- 
   Dimensions                       Occurrences    Starting from     Spacing       
   0 . Index vertical               1__            ________          0   Lines     
   1 . Index horizontal             10_            ________          1   Columns   
   0 . Index (H/V) V                1__            ________          0   Cls/Ls    
   ··············································································· 
  

例 3:

2 次元配列。最初の次元は 10 個の垂直方向のオカレンスから構成されています。各オカレンス間に 1 つの空行が挿入されています。2 つ目の次元は 5 個の水平方向のオカレンスから構成されています。各オカレンス間に 2 つの空列が挿入されています。

   ·Array Definition······························································ 
   Name #1                                         Upper Bnds 10____ 5_____ 1_____ 
   ------------------------------------------------------------------------------- 
   Dimensions                       Occurrences    Starting from     Spacing       
   1 . Index vertical               10_            ________          1   Lines     
   2 . Index horizontal             5__            ________          2   Columns   
   0 . Index (H/V) V                1__            ________          0   Cls/Ls    
   ··············································································· 
  

例 4

次元の順序が逆であること以外は例 3 と同じです。

   ·Array Definition······························································ 
   Name #1                                         Upper Bnds 5_____ 10____ 1_____ 
   ------------------------------------------------------------------------------- 
   Dimensions                       Occurrences    Starting from     Spacing       
   2 . Index vertical               10_            ________          1   Lines     
   1 . Index horizontal             5__            ________          2   Columns   
   0 . Index (H/V) V                1__            ________          0   Cls/Ls    
   ··············································································· 
  

例 5

3 次元配列。最初の次元は 3 個の垂直方向のオカレンスから構成されています。各オカレンス間に 1 つの空行が挿入されています。2 つ目の次元は 5 個の水平方向のオカレンスから構成されています。各オカレンス間に 2 つの空列が挿入されています。3 つ目の次元は 2 個のオカレンスから構成され、最初の次元の各オカレンス内に垂直方向に展開されています。

   ·Array Definition······························································ 
   Name #1                                         Upper Bnds 3_____ 5_____ 2_____ 
   ------------------------------------------------------------------------------- 
   Dimensions                       Occurrences    Starting from     Spacing       
   1 . Index vertical               3__            ________          1   Lines     
   2 . Index horizontal             5__            ________          2   Columns   
   3 . Index (H/V) V                2__            ________          0   Cls/Ls    
   ··············································································· 
  

例 6

Starting from を使用した例。最初の次元はインデックス I から始まる 10 個の垂直方向のオカレンスから構成されています。I は、デフォルトでは Natural データフォーマット/長さ N7 でマップエディタに定義されています。2 つ目の次元はインデックス 3 から始まる 5 個の水平方向のオカレンスから構成されています。

   ·Array Definition······························································ 
   Name #1                                         Upper Bnds 10____ 5_____ 1_____ 
   ------------------------------------------------------------------------------- 
   Dimensions                       Occurrences    Starting from     Spacing       
   1 . Index vertical               10_            I_______          1   Lines     
   2 . Index horizontal             5__            3_______          2   Columns   
   0 . Index (H/V) V                1__            ________          0   Cls/Ls    
   ··············································································· 
  

例 7

1 次元配列から 2 次元表示を作成する例。配列は 40 個の要素から構成されています。それぞれ 20 行ある 2 列に表示されます。このためには、水平方向インデックスとして 0 を指定します。

   ·Array Definition······························································ 
   Name #1                                         Upper Bnds 40____ 1_____ 1_____ 
   ------------------------------------------------------------------------------- 
   Dimensions                       Occurrences    Starting from     Spacing       
   1 . Index vertical               20_            ________          0   Lines     
   0 . Index horizontal             2__            ________          10  Columns   
   0 . Index (H/V) V                1__            ________          0   Cls/Ls    
   ··············································································· 
  

AD - 属性定義

属性定義の編集は、次のように実行します。TAB キーを使用して、フィールド属性ウィンドウの[AD]項目に移動します。

PF2 キーを押すと、次の[Attribute Definition]ウィンドウが表示されます。

   Children     :  99                        Years-Educ:  99                       
   Family Status:  XXXXXXXXXX                Years-Comp:  99                       
   Sex          :  X                         Vacation-D:  99                       
                                             Sick-Days :  99                       
                                                                                   
                                        Hobby:  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX     
   Address                                                                         
   -                                                                               
   State        :  XX         ··Attribute Definition···                            
   Zip          :  99999      ·Representation         ·                            
   City         :  XXXXXXXXXXX·Alignment              ·                            
   Street/Number:  XXXXXXXXXXX·I/O Characteristics    ·                            
                              ·Mandatory Characters   ·                            
                              ·Length Characteristics ·                            
                              ·Upper/Lower Case       ·                            
                              ·Filler Character       ·                            
   ··Extended Field Editing······················································· 
   ·Field= PERSONNEL.STREET                                                      · 
   ·Format= A Len= 20    Alphan. Len= 20    PM=                                  · 
   ·Rules:  0 Rule Editing? N Array:          Array Editing? N       Mode= Data  · 
   ·AD= FHWOIL      CD=    CV=                                 DY= ->  HE= ->    · 
   ·EM=                                                                          · 
   ··············································································· 
  

カーソルキーを使用して、必要な項目を選択します。

ENTER キーを押すと、選択した各項目の追加選択ウィンドウが表示されます。

注意:
表示されている属性定義文字が正しい場合は、ESC キーを使用します。この文字は変更されません。ESC キーを押すと、AD 編集が終了します。

データ定義の選択

マップフィールドは、別の Natural オブジェクトからデータ定義を選択することにより定義できます。データ定義は、Natural DDM(データ定義モジュール)内のフィールド定義、または変数定義のいずれかです。

データ定義を選択するには、まずオブジェクトクラスを選択します。有効なオブジェクトクラスは次のとおりです。

オブジェクトクラス 説明
A パラメータデータエリア
G グローバルデータエリア
H Helproutine
L ローカルデータエリア
M マップ
N Subprogram
P プログラム
S サブルーチン
V ビュー(DDM)

プログラム、サブルーチン、サブプログラム、およびヘルプルーチンは、DEFINE DATA ステートメントが含まれている場合にのみ使用できます。

デモ用には、タイプ DDM の Natural オブジェクトを使用します。[MAP EDITOR]メニューから[Create]を選択し、続いて[View Defined]を選択します。または、(Create を表す)C を入力し、続いて(View Defined を表す)V を入力します。

開いたポップアップウィンドウから、必要な DDM を含むライブラリを選択します。

画面に次のライブラリリストが表示されます。

   ··············································································· 
   ·                    NATURAL MAP EDITOR (Esc to select field)                 · 
   ·Create   Modify    Erase     Drag      Info OFF  Lines     Ops. Map  Quit    · 
   ··············································································· 
   N· A Parameter Data Area ·XXXX·ACTIO            ·   :  XXXXXXXXXXXXXXXXXXXX     
   I· G Global Data Area    ·    ·ACTION           ·   :  999999                   
   F· H Helproutine        ·XXXX·AEH-BEDIENSTETER ·ion:  999999                   
   C· L Local Data Area     ·    ·AEH-HDAT         ·duc:  99                       
   F· M Map                 ·    ·BED              ·omp:  99                       
   S· N Subprogram          ·    ·EMPLOYEES        ·n-D:  99                       
    · P Program             ·    ·EMPLOYEES-FILE   ·ys :  99                       
    · S Subroutine          ·    ·FUNC             ·                               
    · T Text Constant       ·    ·FUNCTION         ·XXXXXXXXXXXXXXXXXXXXXXXXXX     
   A· U User Defined        ·    ·GEN_CODE         ·                               
   -· V View Defined        ·    ·HILFSDAT         ·                               
   S. 1 Parm Defined        .    ·MAP              ·                               
   Z. 2 Local Defined       .    ·OBJ              ·                               
   C·························XXXX·OBJECTTYPE       ·                               
   Street/Number:  XXXXXXXXXXXXXX·PERSONNEL        ·                               
                                 ·PERSONNEL-FILE   ·                               
                                 ······LIB= SYSTEM··                               
                                                                                   
                                                                                   
    Take variable definition from view

必要な DDM(PERSONNELなど)を選択して ENTER キーを押します。選択した DDM がウィンドウに表示されます。

                *** Personnel Data Detail Display Function ***                     
                                                                                   
   Person Data                              Employment Data                        
   -                                        -                                      
   Name         :  XXXXXXXXXXXXXXXXXXXX     Job       :  XXXXXXXXXXXXXXXXXXXX      
   Initial      :  X                        Salary    :  999999                    
   First-Name   :  XXXXXXXXXXXXXXX          Commission:  999999                    
   Children     :  99                       Years-Educ:  99                        
   Family Status:  XXXXXXXXXX               Years-Comp:  99                        
   Sex          :  X                        Vacation-D:  99                        
                                            Sick-Days :  99                        
                                                                                   
                                       Hobby:  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX      
   Address                                                                         
   -                                                                               
   ··PERSONEL····································································· 
   ·  1  AA  PERSONNEL-NUMBER                  N  8.0    D                       · 
   ·  1  AA  PERSONAL-NUMMER                   N  8.0    D                       · 
   ·  1  AA  NUMERO-PERSONNEL                  N  8.0    D                       · 
   ·G 1  G1  PERSON                                                              · 
   ·  2  BA  NAME                              A   20  N D                       · 
   ··············································································· 
                                                                                   
   HD=PERSONNEL/NUMBER

強調表示されているフィールドの場合、このウィンドウには画面の最下部に追加の情報行が 3 行表示されます。

こうした行では、現在のフィールドについて次の情報が表示されます。

  • 編集マスク

  • Header

  • コメント

フィールド名は、ピリオドでフィールド名と連結した DDM 名で構成されます。次に例を示します。

personal.personnel-number

マップに追加するフィールドを選択して ENTER キーを押します。

ライブラリウィンドウが開いて選択したフィールドが[Field=]行に表示され、次のようなプロンプトが表示されます。

Position cursor and press Enter.

フィールド位置の開始位置にカーソルを配置して ENTER キーを押します。

ユーザー定義変数の作成」の説明に従って、フィールドの変更を続行します。

この手順を繰り返して、マップに必要なフィールドをすべて定義します。

パラメータまたはローカルデータ定義用フィールドの定義

Create]メニューから項目[Parm Defined]または[Local Defined]を選択して ENTER キーを押すと、新規パラメータまたは新規ローカル変数を作成したり、既存のパラメータまたは変数を変更したりできます。

以下では次のトピックについて説明します。

パラメータ定義

Parm Defined]項目を選択すると、次のウィンドウが表示されます。

   ··PARAMETER···································································· 
   ·<CREATE>                                                                     · 
   ·TEST1                                      L     001:003                     · 
   ·TEST2                                      L     001:003,001:004             · 
   ·TEST3                                      L     001:003,001:004,001:005     · 
   ··············································································· 
  

この機能を使用すると、新規パラメータの追加および既存パラメータの変更を実行できます。

既存パラメータ(TEST3 など)を変更する場合は、カーソルを使用してパラメータを選択し、ENTER キーを押します。ウィンドウが表示され、必要なアクションの選択を求められます。選択したパラメータの Edit および Delete、またはアクションの Cancel を実行できます。

Edit]を選択すると、次のウィンドウが表示されます。このウィンドウでは、選択したパラメータを編集できます。

   ··PARAMETER···································································· 
   ·Name.....: TEST3                                                             · 
   ·Format...: L                                                                 · 
   ·                                                                             · 
   ·Dimension: 3                                                                 · 
   ·           Lower Bnds  :  Upper Bnds                                         · 
   ·1. Index.:          1              3                                         · 
   ·2. Index.:          1              4                                         · 
   ·3. Index.:          1              5                                         · 
   ··············································································· 
  

新規パラメータを作成する場合は、[<CREATE>]オプションを選択します。同様のウィンドウが表示されますが、この時点ではウィンドウが空であるため、作成するパラメータを指定できます。

上述したウィンドウを終了すると別のウィンドウが表示され、変更/指定内容を保存するか、アクションをキャンセルするかを選択するように促されます。

ローカルデータ定義

[Local Defined]項目を選択すると、次のウィンドウが表示されます。

   ··LOCAL········································································ 
   ·<CREATE>                                                                     · 
   ·TESTA                                      L     001:003                     · 
   ·TESTB                                      L     001:003,001:004             · 
   ·TESTC                                      L     001:003,001:004,001:005     · 
   ··············································································· 
  

この機能を使用すると、新規ローカル変数の追加および既存の変数の変更を実行できます。ローカル変数を使用すると、ある処理ルールから別の処理ルールに値を渡すことができます。

既存ローカル変数(TESTC など)を変更する場合は、カーソルを使用して変数を選択し、ENTER キーを押します。ウィンドウが表示され、必要なアクションの定義を求められます。選択した変数の編集および削除、または機能のキャンセルを実行できます。

アクション[Edit]を定義すると、次のウィンドウが表示されます。このウィンドウでは、選択したローカル変数を編集できます。

   ··LOCAL········································································ 
   ·Name.....: TESTC                                                             · 
   ·Format...: L                                                                 · 
   ·                                                                             · 
   ·Dimension: 3                                                                 · 
   ·           Lower Bnds  :  Upper Bnds                                         · 
   ·1. Index.:          1              3                                         · 
   ·2. Index.:          1              4                                         · 
   ·3. Index.:          1              5                                         · 
   ··············································································· 
  

新規ローカル変数を作成する場合は、[<CREATE>]オプションを選択します。同様のウィンドウが表示されますが、このときはウィンドウが空であるため、作成する変数を指定できます。

上述したウィンドウを終了すると別のウィンドウが表示され、変更/指定内容を保存するか、関数をキャンセルするかを選択するように促されます。

マッププロファイル

このセクションでは、マップにマップ設定(プロファイル)を定義する処理について説明します。

マッププロファイルは、[Ops. Map]選択リストから[Prof. Map]を選択して呼び出します。次の画面が表示されます。

   ··············································································· 
   ·                    NATURAL MAP EDITOR (Esc to select field)                 · 
   ·Cr··Map Settings······························································ 
      ·Format                     Context                                     ·    
      ·-------------------------  -------------------------                   ·    
   Add·Page Size .....:  24                                                   ·   
   -  ·Line Size .....:  79       WRITE Statement ...: N                      ·   
   Sta·Layout ........:                                                       ·   
   Zip· dynamic ......: N         Helproutine ......:                        ·   
   Cit·Zero Print ....: N         Help Parameter ....:                        ·   
   Str·Upper Case ....: Y          as field default .: N                      ·   
      ·Documentation Skip ...: N         Help Text .........: N                      ·   
      ·Decimal Char ..: .          Position Line ....:  0    Column :   0     .   
      ·Standard Keys .: N         AutoRuleRank ......:  1                     ·   
      ·Right Justify .: Y                                                     ·   
      ·Print Mode ....:           Filler Characters                           ·   
      ·                           -------------------------                   ·    
      ·Control Var ...:           Optional, Partial .: _                      ·    
      ·                           Required, Partial .: _                      ·    
      ·Field Sensitive: N         Optional, Complete : _                      ·    
                                  Required, Complete : _                      ·    
      ·········································································    
     
   Modify map profile

このマッププロファイル画面は、マッププロファイル設定および充填文字で構成されます。

以下では次のトピックについて説明します。

マッププロファイル設定

次のマッププロファイル設定を使用できます。

エントリ 説明
Page Size 編集するマップの行数(1~250)。[Std Keys](該当エントリを参照)が "Y" に設定されている場合、行数は 3~250 に制限されます。WRITE ステートメントを使用して出力されるマップの場合は(マップ設定の[Context]列のエントリ「WRITE ステートメント」を参照)、マップのサイズではなく、WRITE ステートメントで出力される論理ページの行数を指定します。そのため、マップを 1 ページに複数回出力できます。
Line Size 編集するマップ列の数(5~249)。
Layout dynamic 事前定義済みレイアウトを含むマップソース定義の名前。

Y - レイアウトをダイナミックと指定します。ダイナミックに使用されるレイアウトは、コンパイル時にマップの固定部にならず、ランタイムで実行されます。このため、レイアウトマップに対するその後の変更は、そのレイアウトマップを使用するすべてのマップに対して有効になります。

レイアウトマップにユーザー定義変数が含まれている場合、レイアウトマップを使用して、マップでこれらのパラメータを定義する必要があります。レイアウトマップの入力フィールドおよび変更可能なフィールドは、ランタイムには開かれません。[Field and Variable Definitions]機能で F9 キーを押すと、パラメータを追加できます。

N - レイアウトをスタティックと指定します。マップが初期化されるときに、スタティックレイアウトはソースエリアにコピーされます。充填文字は転送されません。デフォルト設定は "N" です。

Zero Print

Y - すべてゼロのフィールド値をゼロ 1 つのみで表示します。

N - ゼロ値を空白で表示します。

新しいフィールドを作成すると、この値はフィールド定義にコピーされます。個々のフィールドの値は、拡張フィールド編集機能を使用して変更できます。

Upper Case

Y - マップ実行時に、フィールドに入力されたすべての入力が大文字に変換されることを示します。

N - 小文字から大文字への変換が実行されないことを示します。

新しいフィールドを作成すると、この値はフィールド定義にコピーされます。個々のフィールドの値は、拡張フィールド編集機能を使用して変更できます。

Manual Skip

Y - 実行時、現在のフィールドに完全に入力した場合でも、マップの次のフィールドにカーソルが自動的に移動しません

N - 実行時、現在のフィールドに完全に入力した場合は、マップの次のフィールドにカーソルが自動的に移動します。デフォルト設定は "N" です。

Decimal Char 10 進文字として使用される文字。この文字は GLOBALS コマンドでのみ変更することができます。
Standard Keys

Y - 実行時、ファンクションキー指定ができるように、マップの最後の 2 行が空白のままになります。

N - すべての行がマップに使用されます。

Right Justify フィールド桁揃えのタイプ。他の Natural オブジェクトのデータ定義から取得した数値フィールドおよび英数字フィールドに使用されます。

Y - 右詰め
N - 左詰め

Print Mode 変数のデフォルトの出力モードは、以下のとおりです。

C - 代替文字セットを使用することを示します(特殊文字テーブル)。
I - 出力方向を逆にすることを示します。
I C - 標準の出力方向を示します。この値は、新しいフィールドを作成するとフィールド定義にコピーされます。

Control Var 制御変数の名前。この内容によって、属性定義が AD=Y または (Y) に設定されているフィールドおよびテキストの属性特性が決定します。制御変数の最大長は、8 文字に制限されています。マップで参照される制御変数は、そのマップを使用するプログラムで定義する必要があります。
Field Sensitive

Y - マップフィールドに付加された処理ルールがフィールド単位で実行されることを示します。つまり、指定したフィールドを離れた直後に実行されます。

N - マップにフィールド感知を定義しないことを示します。つまり、必要な値をマップフィールドにすべて入力し、ENTER キー(または任意の F キー)を押すまでマップは処理されません。

WRITE ステートメント

Y - このフィールドを Y でマークすると、マップ定義プロセスの終了時に WRITE ステートメントが生成されます。この生成されたマップは、WRITE USING FORM ステートメントを使用して Natural プログラムから呼び出すことができます。マップを 1 ページに複数回出力できるように、マップの最後にある空の行は自動的に削除されます。

N - このフィールドを N でマークすると、マップ定義プロセスの結果、INPUT ステートメントが生成されます。この生成されたマップは、INPUT ステートメントを使用して Natural プログラムから呼び出すことができます。

Helproutine このマップに対してヘルプ機能を呼び出したとき、ランタイム時に呼び出されるヘルプルーチンの名前(マップのグローバルヘルプ)。構文の詳細については、「ユーザー定義変数の変更 - フィールド編集」セクションのパラメータ Help を参照してください。
Help Parameter ヘルプ機能を呼び出したとき、実行時に呼び出されるヘルプパラメータ。

注意:
最大で 20 個のヘルプパラメータを指定できます。20 を超えるヘルプパラメータを入力すると、その値は無視されます。

as field default

Y - マップのヘルプルーチンが、マップの個々のフィールドにデフォルトとして適用されることを示します。つまり、各フィールドの名前が個別にヘルプルーチンに渡されます。

N - マップの名前をヘルプルーチンに渡すことを示します。

ヘルプテキスト Y - このマップが実際はヘルプテキストであることを示します。デフォルトは "N" です。
Position Line Column 実行時にヘルプマップが表示される画面上の位置。
自動ルールランク フィールド定義時にマップにリンクされるときに、Predict 自動ルールに割り当てられるランク(プライオリティ)。デフォルトは 1 です。

充填文字

充填文字を割り当てると、フィールドの情報が必須かどうか、フィールドを完全に満たす必要があるかどうかを示すことができます。

フィールドタイプ 説明
Optional Partial 任意。完全に埋める必要はありません。
Required Partial 必須。完全に埋める必要はありません(AD=E)。
Optional Complete 任意。完全に埋める必要があります(AD=G)。
Required Complete 必須。完全に埋める必要があります(AD=EG)。

拡張フィールド編集機能を使用して、個々のフィールドに充填文字を定義することもできます。フィールドタイプの定義については、セッションパラメータ AD を参照してください。

事後割り当て

以前にマップの画面レイアウトで定義されたフィールドに、DDM フィールド定義または DEFINE DATA 定義のフィールド名およびフィールド属性を割り当てることができます。

注意:
重複するフィールド名は、「出力専用フィールド」として定義されたフィールドについてのみ許可されています。

DDM から作成されているマップフィールドは、この DDM または DEFINE DATA 定義から適切な DDM フィールド定義を使用して再定義する必要があります。ただし、これは同じデータベースフィールドである場合にのみ可能です。

DDM フィールド定義の事後割り当ては、マップから個々のフィールド定義を削除して、新しい DDM フィールド定義を DDM または DEFINE DATA 定義から選択することによってのみ実行できます(「データ定義の選択」を参照)。

その配列の 1 つ以上の次元がレイアウトの配列の次元より小さい場合は、(DDM フィールド定義または DEFINE DATA 定義の)ビュー配列に事後割り当てを使用することはできません。

フィールドに基づいた処理

マッププロファイルでは、必要な値をマップフィールドにすべて入力して ENTER キーを押した後にマップを処理するか、またはマップフィールドに付加された処理ルールをフィールド単位で処理するかどうかを指定できます。

フィールド単位で処理する場合、フィールドに付加された処理ルールは、このフィールドに完全に入力するか、またはカーソルを別の位置に移動した直後に実行されます。実行される順序は、フィールド感知がない場合と同様です。

以下では次のトピックについて説明します。

フィールドに基づいた処理の利点

フィールドに基づいた処理の利点については、次のセクションで説明します。

注意:
フィールドに基づいた処理の利点を十分活用するには、既存の処理ルールをフィールドに基づいて調整する必要があります。処理ルールの詳細については、「ルール編集 - 処理ルール」を参照してください。

フィールドのダイナミックな充填(ユーザー入力に基づく)

フィールドに基づいた処理をしない場合、アプリケーションは、すべてのフィールドへの入力が完了して ENTER キーを押すまで待機してから、入力されたデータが有効かどうかをチェックします。最悪の場合、エラーが通知されるまでにフィールドへの入力に費やした時間と手間が、すべて無駄になることがあります。

一方、フィールドに基づいた処理を行っている場合は、フィールドに完全に入力するか、END キーまたは SHIFT+END キーを押してフィールドを離れるか、またはカーソル移動キーのいずれかを使用してカーソルを移動してフィールドを離れると、データ入力が直ちにチェックされます。他のフィールドは、前のフィールドに入力された値に基づくデータを使用して、事前に(REINPUT FULL を使用して)自動的に入力されます。また、この値に応じて、これらのデータがデータベースクエリの結果となる場合があります。

どのような状態でフィールドを離れたかに関する情報は、*PF-KEY システム変数から取得できます。この変数には、"FULL"(フィールドに完全に入力した場合)または次の表に示す最後に押したキーの名前が含まれています。

押されたキー *PF-KEY
LEFT
RIGT
UP
DOWN
Page Up PGUP
Page Down PGDN
TAB TAB
HOME HOME
END END
Backtab BTAB
ENTER ENTR
フィールドが一杯 FULL

ユーザーガイダンスの改善

フィールドに基づいた処理を行うと、入力した値に従ってフィールドからフィールドへと誘導されます。カーソルは事前に入力されているフィールドをスキップし、次の入力フィールドへと移動します。

フィールドをチェックした直後にメッセージが表示されるため、対応方法についての通知がより迅速かつ正確になります。

ユーザー入力に基づいたセキュリティ

特定のフィールドに入力した値に応じて、プロンプトが表示されることがあります。これには例えば、要求した情報にアクセスするための特別なパスワードなどがあります。

迅速なデータ入力

上記で説明したすべてのメカニズムによって、より早く、より効率的にアプリケーションと対話できます。

Field-Sensitive としてマップを定義

フィールドに基づいた処理を使用できるようにするには、マッププロファイルで[Field Sensitive]を "Y" に設定し、フィールドに基づいてマップを処理するように定義する必要があります。フィールド感知での自動フィールド認識の有効または無効を確認するウィンドウが表示されます。

   ··············································································· 
   ·                    NATURAL MAP EDITOR (Esc to select field)                 · 
   ·Cr··Map Settings······························································ 
      ·Format                     Context                                     ·    
      ·-------------------------  -------------------------                   ·    
   Add·Page Size .....:  24                                                   ·   
   -  ·Line Size .....:  79       WRITE·································      ·   
   Sta·Layout ........:                · Automatic Field Recognition ? ·      ·   
   Zip· dynamic ......: N         Help ·          YES   NO             ·      ·   
   Cit·Zero Print ....: N         Help ·································      ·   
   Str·Upper Case ....: Y          as field default .: N                      ·   
      ·Documentation Skip ...: N         Help Text .........: N                      ·   
      ·Decimal Char ..: .          Position Line ....:  0    Column:   0      .   
      ·Standard Keys .: N         AutoRuleRank ......:  1                     ·   
      ·Right Justify .: Y                                                     ·   
      ·Print Mode ....:           Filler Characters                           ·   
      ·                           -------------------------                   ·    
      ·Control Var ...:           Optional, Partial .: _                      ·    
      ·                           Required, Partial .: _                      ·    
      ·Field Sensitive: Y         Optional, Complete : _                      ·    
                                  Required, Complete : _                      ·    
      ·········································································    
     
   Modify map profile 
  

Natural マップ内のフィールド感知は、2 つの異なる方法で指定できます。

  1. 自動フィールド認識あり。この場合は、適切な処理ルールを有効にするための条件をコーディングする必要がありません。

    注意:
    このようなマップをメインフレームにアップロードした場合、Natural メインフレームマップエディタでは、新しい構文拡張のためにアップロードされたマップの構文を理解できません。

  2. 自動フィールド認識なし。この場合は、最後のキー入力で離れたフィールドを通知する必要があります。Natural プログラムでシステム変数 *CURS-COLおよび *CURS-LINE を使用すると、このことを行うことができます。

    注意:
    このようなマップをメインフレームにアップロードする場合は、メインフレーム上でマップを STOW すると、同じソースコードが生成されます。