バージョン 6.3.3
 —  エディタ  —

クラスビルダ

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


概要

クラスビルダは、Natural クラスを階層構造で表示し、クラスおよびそのコンポーネントを効率的に管理するために使用できるツールです。

Natural クラスは、"実際の" Natural オブジェクト(オブジェクトデータエリアなど)やクラスソースにのみ存在するオブジェクト(インターフェイスコンポーネントなざ)などのさまざまなコンポーネントで構成できます。

クラスビルダは、クラスの各コンポーネントをノードの形で表します。 これらのノードを選択することにより、クラスおよびそのコンポーネントをコンテキストに対応した方法で管理できます。

このセクションでは、クラスビルダを使用して Natural クラスを作成および変更する方法について説明します。 Natural クラスの一般的な使用法については、「NaturalX について」(『プログラミングガイド』)の「クラスの定義」を参照してください。

Top of page

クラスビルダとは

クラスビルダには、次の機能が備えられています。

クラスビルダで処理できるクラス

クラスビルダでは、構文的に正しければあらゆるクラスを管理できます。 クラスソースの変更にはプログラムエディタも使用できますが、クラスビルダを使用することをお勧めします。 プログラムエディタで変更し、構文エラーが含まれた状態で保存されたクラスは、クラスビルダで開けなくなることに注意してください。

クラス構文は非常に "柔軟" です。つまり、構文構造が異なっていても、ランタイム時に同じ処理を行うことができます。 以前の Natural バージョンではユーザーがクラスコードをすべて自分で入力する必要があったため、これは非常に重要です。 クラスビルダではこの必要がなくなり、クラスビルダでクラスコードが生成され、クラスで使用される Natural オブジェクトが作成されます。 クラスビルダでは、最も妥当なコードのみが生成されます。

この理由により、次の機能はクラスビルダでサポートされていません。

クラスビルダでは、すべてのクラス構文構造を作成することはできませんが、これらの構造を持つ既存のクラスを読み込み、それらのクラスを使用して構造を変更することはできます。

構文に誤りがあるために、クラスビルダでクラスを読み込むことができない場合は、エラーメッセージが表示され、プログラムエディタが起動されます。 構文エラーは、プログラムエディタで修正する必要があります。 保存済みのクラスは、クラスビルダで開くことができます。

注意:
クラスビルダでクラスを保存すると、クラスソースが生成されます。 これは、段落付けなどの特殊なソース形式がすべて失われることを意味します。

クラスが保存される時期

クラスビルダでクラスを開くと、クラスソースからコンテンツが読み込まれ、内部構造で保存されます。 クラスを変更すると、変更は内部構造でのみ実行されます。 変更内容は Natural のすべてのビューに表示されます。 したがって、例えば、新しいインターフェイスをライブラリワークスペースに追加すると、このインターフェイスのノードもクラスの "インターフェイス" リストビューに作成されます。 変更を保存するには、クラスに対して[保存][名前をつけて保存]、または[Stow]を実行する必要があります。

新しいクラスを作成しても、新しいクラスモジュールは自動的に作成されません。 この作成は、クラスに対して[保存][名前をつけて保存]、または[Stow]を実行した場合にのみ行われます。 このため、"新しい" クラスは、初めて保存されるまで、ライブラリワークスペースのファイルビューには表示されません。

[復元]コマンドを使用すると、クラスに適用した変更を削除できます。 このコマンドは、クラスモジュールに含まれていた状態(最後に保存した状態など)にクラスを復元します。

Natural の終了時に未保存のクラスが存在すると、クラスを保存するかどうかがユーザーに尋ねられます。

クラスコメント

クラスビルダは、クラスソースで検出されたすべてのコメントをクラスの 1 つのコンポーネントに割り当てようとします。 コメントは通常、次のクラスコンポーネントに割り当てられます。 例えば、インターフェイスの定義の前に検出されたコメントは、このインターフェイスのコメントとみなされます。

すべてのクラスコンポーネントノードで使用できる[プロパティ]メニュー項目を使用すると、コメントを作成および変更できます。 詳細については、「ノードのプロパティ」を参照してください。

注意:
クラスビルダでクラスを初めて読み込むとき、ユーザーが予期しないコンポーネントにコメントが割り当てられる可能性があります。 クラスの保存時にコメントが失われることはありませんが、ユーザーは、コメントが正しいコンポーネントに割り当てられているかどうかを確認する必要があります。

クラスビルダでクラスを初めて保存するとき、すべてのコメントは特殊なタグでマークされます。 これにより、クラスビルダで後からこのクラスを読み込むときに、コメントの割り当てが正しいことを確認することができます。

Top of page

クラスビルダのインターフェイス

クラスビルダは、Natural の論理ビューとフラットビューで使用できます。 Natural オブジェクトをツリービューまたはリストビューのノードとして表示する、一般的な Natural ユーザーインターフェイスと完全に統合されています。

ライブラリワークスペースまたはアプリケーションワークスペースのツリービューでは、クラスノードを展開してクラスを "開く" ことができます。 クラスノードは階層的にグループ化されています。 例えば、インターフェイスはクラスノードの子であり、メソッドはインターフェイスノードの子になります。 すべてのクラスノードには、他のすべてのノードと同じ機能(ノード固有の操作が可能なコンテキストメニューなど)が用意されています。 子ノードが存在するほとんどのクラスノードは、このノードのすべての子が表示されるリストビューとして開くことができます。 リストビューには、ノードに関する詳しい情報(オブジェクトデータエリアが存在するライブラリなど)が表示されます。 リストビューのノードには、対応するツリービューのノードと同じコンテキストメニューがあります。

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

論理ビュー

論理ビューのクラスノードは、クラス名(つまリ、このクラスのオブジェクトを CREATE OBJECT ステートメントで作成するときに使用される名前)で示されます。

論理ビューでは、ノードがそのタイプによって基本的にグループ化されます。 これは、クラスノードについても同じです。 同じタイプのクラスノードは、その内容によってタイプを示すグループノードの下に集められます。 したがって、すべてのオブジェクトデータノードは、"Object Data" という名前のオブジェクトデータグループノードの子になります。

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

ツリービュー

クラスのノードを展開および圧縮できます。 展開するとすべての子ノードが表示され、圧縮すると選択されたクラスノードのすべての子ノードが非表示になります。

論理ビューでは、クラスの構造化ビューが表示されます。 操作するクラスノードを展開できます。 詳細については、「ライブラリワークスペース」セクションを参照してください。

リストビュー

クラスのほとんどの親ノードには、コンテキストメニューの[開く]コマンドで開くことができるリストビューが割り当てられています。 このセクションでは、論理ビューのリストビューに表示される情報について説明します。 詳細については、「リストビュー」を参照してください。

クラスリストビュー

クラスリストビューは、グループノードで構成されます。 グループノードのリストビューは、[開く]コマンドで開くことができます。

次のグループノードが存在します。

クラスリストビューには次の列が含まれます。

オブジェクトデータグループリストビュー

"オブジェクトデータ" グループリストビューは、オブジェクトデータノードで構成されています。 ノードの[開く]コマンドを選択すると、データエリアの場合はデータエリアエディタが表示され、インライン定義の場合は特殊なクラスビルダダイアログが表示されます。

"オブジェクトデータ" グループリストビューには次の列が含まれます。

ローカルデータグループリストビュー

"ローカルデータ" グループリストビューは、ローカルデータノードで構成されています。 ノードの[開く]コマンドを選択すると、データエリアの場合はデータエリアエディタが表示され、インライン定義の場合は特殊なクラスビルダダイアログが表示されます。

"ローカルデータ" グループリストビューには次の列が含まれます。

インターフェイスモジュールグループリストビュー

"インターフェイスモジュール" グループリストビューは、インターフェイスモジュールノードで構成されています(「インターフェイスモジュールのリストビュー」を参照)。 ノードの[開く]コマンドを選択すると、このインターフェイスモジュールのリストビュー(「複数クラスのインターフェイスの使用」を参照)が表示されます。

"インターフェイスモジュール" グループリストビューには次の列が含まれます。

インターフェイスモジュールリストビュー

インターフェイスモジュールリストビューは、インターフェイスノードで構成されています。 ノードの[開く]コマンドを選択すると、このインターフェイスのリストビュー(「インターフェイスリストビュー」を参照)が表示されます。

インターフェイスモジュールリストビューには次の列が含まれます。

インターフェイスグループリストビュー

"インターフェイス" グループリストビューは、インターフェイスノードで構成されています。 ノードの[開く]コマンドを選択すると、このインターフェイスのリストビュー(「インターフェイスリストビュー」を参照)が表示されます。

"インターフェイス" グループリストビューには次の列が含まれます。

インターフェイスリストビュー

インターフェイスリストビューは、グループノードで構成されています。 ノードの[開く]コマンドを選択すると、このグループのリストビューが表示されます。

次のグループノードが存在します。

インターフェイスリストビューには次の列が含まれます。

プロパティグループリストビュー

"プロパティ" グループリストビューは、プロパティノードで構成されています。 "プロパティ" グループリストビューには次の列が含まれます。

メソッドグループリストビュー

"メソッド" グループリストビューは、メソッド実装およびパラメータデータノードで構成されています。 インターフェイスのすべてのメソッドについて、1 つのメソッド実装(サブプログラム)ノード、およびメソッドのパラメータデータ定義ごとに 1 つのノードが含まれています。

このリストビューのノードの[開く]コマンドを選択すると、特定のノードタイプのエディタ(メソッド実装ノードの場合はプログラムエディタなど)が表示されます。

"メソッド" グループリストビューには次の列が含まれます。

メソッドパラメータデータグループリストビュー

"パラメータデータ" グループリストビューは、パラメータデータノードで構成されています。 ノードの[開く]コマンドを選択すると、データエリアの場合はデータエリアエディタが表示され、インライン定義の場合は特殊なクラスビルダダイアログが表示されます。

"パラメータデータ" グループリストビューには次の列が含まれます。

フラットビュー

フラットビューのクラスのノードには、クラスモジュール名が表示されます。

論理ビューと異なり、フラットビューにはグループノードは含まれません。 フラットビューには、特定のクラスコンポーネントが表示されるレベルが、論理ビューに比べて低いため、クラス概要が見やすいという利点があります。

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

ツリービュー

クラスのノードを展開および圧縮できます。 展開するとすべての子ノードが表示され、圧縮すると選択されたクラスノードのすべての子ノードが非表示になります。 フラットビューには、クラスの一般的な概要が表示されます。 同じレベルにあるクラスコンポーネントのすべてのサブコンポーネントがリスト表示されます。 例えば、インターフェイスノードを展開すると、インターフェイスのすべてのプロパティおよびメソッドが、インターフェイスノードの子ノードとして表示されます。 詳細については、「ライブラリワークスペース」を参照してください。

リストビュー

フラットビューでは、ノードのネストレベルが低いため少数のリストビューしかサポートされていません。 コンテキストメニューの[開く]コマンドを使用すると、リストビューを開くことができます。 このセクションでは、フラットビューのリストビューに表示される情報について説明します。 詳細については、「リストビュー」を参照してください。

クラスリストビュー

クラスリストビューには、子コンポーネントごとに 1 つのノードが含まれています。

次のノードが存在します。

クラスリストビューには次の列が含まれます。

インターフェイスモジュールリストビュー

インターフェイスモジュールリストビューは、インターフェイスノードで構成されています。 ノードの[開く]コマンドを選択すると、このインターフェイスのリストビュー(「リストビュー」を参照)が表示されます。

インターフェイスモジュールリストビューには次の列が含まれます。

インターフェイスリストビュー

インターフェイスリストビューには、インターフェイスのプロパティおよびメソッドのすべてのノードが含まれます。

次のノードが存在します。

インターフェイスリストビューには次の列が含まれます。

Top of page

クラスビルダのノード

ユーザーインターフェイスに関連して、クラスのすべてのコンポーネントはノードによって表されます。 ノードは、ツリービューとリストビューの両方に表示されます。

各ノードには、アイコンおよびコンポーネントに関するテキスト情報が表示されます。この情報は、(ライブラリワークスペース内の)コンポーネント名であったり、(リストビュー内の)コンポーネント名と追加情報であったりします。

次の表に、使用可能なクラスビルダのノードを、アイコンおよび簡単な説明とともに示します。

タイプ アイコン 説明
新しいクラス

まだ保存されていない新しいクラス
クラス(src)

ソースとしてのみ使用可能なクラス
クラス(gp)

生成プログラムとしてのみ使用可能なクラス
クラス(src と gp)

ソースおよび生成プログラムとして使用可能なクラス
ODA

データエリアモジュールで定義されるオブジェクトデータ
インライン ODA

インラインデータ定義を使用して定義されるオブジェクトデータ
LDA

データエリアモジュールで定義されるローカルデータ(GUID 用)
インライン LDA

インラインデータ定義を使用して定義されるローカルデータ(GUID 用)
インターフェイスモジュール

インターフェイスモジュール、つまりインターフェイスを定義するコピーコード
内部インターフェイス

クラスで定義されるインターフェイス
外部インターフェイス

クラスで使用されるインターフェイスモジュールで定義されるインターフェイス
内部プロパティ

内部インターフェイスで定義されるプロパティ
外部プロパティ

外部インターフェイスで定義されるプロパティ
内部メソッド

内部インターフェイスで定義されるメソッド
外部メソッド

外部インターフェイスで定義されるメソッド
メソッド実装

メソッドを実装するサブプログラム
メソッド PDA

データエリアモジュールで定義されるメソッドパラメータデータ
インラインメソッド PDA

インラインデータ定義を使用して定義されるメソッドパラメータデータ

次のセクションでは、クラスビルダのノードについて詳しく説明します。 特定ノードのコマンドは、ノードのコンテキストメニューまたは[クラス]ツールバーから呼び出すことができます。

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

クラスノード

クラスノードはクラス自体を表します。 クラスノードに表示される名前は、クラス名(論理ビュー)またはクラスモジュール名(フラットビュー)のどちらかです。

タイプ

新しいクラス

新しいクラスを作成すると、初めて保存するまでは、新しいクラスのアイコンで表示されます。 したがって、新しいクラスは、クラスが現在の Natural セッションで "一時的" なものであり、ソース形式では使用できないことを表します。 このため、新しいクラスは、Natural オブジェクトのソースファイルと生成プログラムファイルを示すファイルビューには表示されません。 また、新しいクラスではクラスノードコマンドも一切実行できません。

ソースのみ

クラスがソース形式でのみ使用でき、まだカタログされていない場合、ソースのみのクラスアイコンが表示されます。

GP のみ

クラスが GP フォーマットでのみ使用できる場合、GP のみのクラスアイコンが表示されます。 このタイプのクラスは、クラスビルダで処理できず、このようなクラスのコンテキストメニューは、GP フォーマット専用の他のすべての Natural オブジェクトのものと同じです。

ソースと GP

クラスがソース形式と GP フォーマットで使用できる場合、ソースと GP のクラスアイコンが表示されます。

コマンド

コマンド 使用可能なクラス 説明
開く

新規
ソースのみ
ソースと GP

クラスリストビューを開きます。 詳細については、「リストビュー」を参照してください。
リスト

新規
ソースのみ
ソースと GP

現在のクラス構造の内部ソース形式で、読み取り専用のプログラムエディタを開きます。
Cat

ソースのみ
ソースと GP

現在のクラスをカタログします。
保存

新規
ソースのみ
ソースと GP

現在のクラス構造を、特定のクラスモジュールに保存します。
名前をつけて保存

新規
ソースのみ
ソースと GP

現在のクラス構造を新しい Natural モジュールに保存するか、または別のエンコードで保存します。
Stow

新規
ソースのみ
ソースと GP

現在のクラス構造を、特定のクラスモジュールに Stow します。
新規 ODA

新規
ソースのみ
ソースと GP

クラスに新しいオブジェクトデータエリアを作成します。
新しいインターフェイス

新規
ソースのみ
ソースと GP

クラスに新しいインターフェイスを作成します。
新しいインターフェイスモジュール

新規
ソースのみ
ソースと GP

新しいインターフェイスモジュールを作成します。 このインターフェイスモジュールはクラスにリンクされます。
リンク LDA

新規
ソースのみ
ソースと GP

既存のデータエリアをクラスの GUID LDA として使用します。 「リンク」を参照してください。
リンク ODA

新規
ソースのみ
ソースと GP

既存のデータエリアをクラスの ODA として使用します。 「リンク」を参照してください。
リンクインターフェイスモジュール

新規
ソースのみ
ソースと GP

既存のコピーコードをクラスのインターフェイスモジュールとして使用します。 インターフェイスモジュールで定義されたすべてのインターフェイスは、クラスに含まれます。 「リンク」を参照してください。
登録 ソースと GP クラスをシステムレジストリに登録します。 詳細については、『プログラミングガイド』の「NaturalX」を参照してください。
登録解除 ソースと GP クラスをシステムレジストリから登録解除します。 詳細については、『プログラミングガイド』の「NaturalX」を参照してください。
名前の変更

新規
ソースのみ
ソースと GP

ライブラリワークスペースの現在のビューに応じて、クラス名またはクラスモジュール名のどちらかを変更します。 詳細については、「クラスメンバの名前の変更」を参照してください。
削除

新規
ソースのみ
ソースと GP

クラスの Natural モジュール(ソースのみおよびソースと GP)を削除するか、またはクラスの内部構造のみ(新規)を削除します。
復元

ソースのみ
ソースと GP

未保存のクラスの変更をすべて削除します。 このコマンドは、クラスのリストビューすべてを閉じ、ライブラリワークスペースでクラスのノードを圧縮します。
切り取り

ソースのみ
ソースと GP

クラスモジュールを切り取ります。
コピー

ソースのみ
ソースと GP

クラスモジュールをコピーします。
貼り付け

ソースのみ
ソースと GP

クラスモジュールを貼り付けます。
印刷

新規
ソースのみ
ソースと GP

現在のクラス構造のソース形式を印刷します。
プロパティ

新規
ソースのみ
ソースと GP

クラス固有の情報を示す[プロパティ]ダイアログを表示します。 詳細については、「ノードのプロパティ」を参照してください。

オブジェクトデータノード

オブジェクトデータノードは、オブジェクトデータエリアモジュールまたはインラインオブジェクトデータ定義を表します。 1 つのクラスに、複数のオブジェクトデータノードが存在できます。 複数のオブジェクトデータノードが存在する場合、メソッド実装でこれらのノードを使用するときには、正しいオブジェクトデータシーケンスに従うよう注意する必要があります。

タイプ

データエリア

このタイプは、オブジェクトデータがローカルデータエリアまたはパラメータデータエリアタイプの別の Natural モジュールで定義されることを示します。 ノードに表示される名前が、Natural データエリアモジュールの名前です。

インラインデータ定義

このタイプは、DEFINE DATA OBJECT ステートメントを使用して、オブジェクトデータがクラスソースで直接定義されることを示します。 この場合、オブジェクトデータを使用するすべてのメソッド実装で、オブジェクトデータをもう一度定義する必要があります。 このタイプのノードの名前は常に「インライン」でになります。

コマンド

コマンド 使用可能なクラス 説明
開く データエリア データエリアエディタでデータエリアモジュールを開きます。
編集 インラインデータ定義 編集用のインラインデータ定義の内容を表示するダイアログが開きます。
リスト データエリア データエリアモジュールのリストを表示します。
Cat データエリア データエリアモジュールのカタログを表示します。
Stow データエリア データエリアモジュールを Stow します。
リンク解除 データエリア データエリアモジュールをクラスからリンク解除します。つまり、クラスのオブジェクトデータエリアとして使用されなくなります。
名前の変更 データエリア オブジェクトデータエリアリンクの名前を変更します。つまり、クラスのオブジェクトデータエリアとして別のデータエリアモジュールを使用します。 詳細については、「クラスメンバの名前の変更」を参照してください。
削除 インラインデータ定義 インラインデータ定義をクラスから削除します。
印刷 データエリア データエリアモジュールを印刷します。
プロパティ

データエリア
インラインデータ定義

オブジェクトデータ固有の情報を示す[プロパティ]ダイアログを表示します。 詳細については、「ノードのプロパティ」を参照してください。

GUID ローカルデータノード

GUID ローカルデータノードは、GUID 定義を含むローカルデータエリアモジュールまたはインラインローカルデータ定義を表します。 1 つのクラスに、複数のローカルデータノードが存在できます。

タイプ

データエリア

このタイプは、GUID ローカルデータがローカルデータエリアまたはパラメータデータエリアタイプの別の Natural モジュールで定義されることを示します。 ノードに表示される名前が、Natural データエリアモジュールの名前です。

インラインデータ定義

このタイプは、DEFINE DATA LOCAL ステートメントを使用して、GUID ローカルデータがクラスソースで直接定義されることを示します。 このタイプのノードの名前は常に「インライン」でになります。

コマンド

コマンド 使用可能なクラス 説明
開く データエリア データエリアエディタでデータエリアモジュールを開きます。
編集 インラインデータ定義 編集用のインラインデータ定義の内容を表示するダイアログが開きます。
リスト データエリア データエリアモジュールのリストを表示します。
Cat データエリア データエリアモジュールのカタログを表示します。
Stow データエリア データエリアモジュールを Stow します。
リンク解除 データエリア データエリアモジュールをクラスからリンク解除します。つまり、データエリアモジュールはクラスの GUID ローカルデータエリアとして使用されなくなります。
名前の変更 データエリア GUID ローカルデータエリアリンクの名前を変更します。つまり、クラスの GUID ローカルデータエリアとして別のデータエリアモジュールを使用します。 詳細については、「クラスメンバの名前の変更」を参照してください。
削除 インラインデータ定義 インラインデータ定義をクラスから削除します。
印刷 データエリア データエリアモジュールを印刷します。
プロパティ

データエリア
インラインデータ定義

ローカルデータ固有の情報を示す[プロパティ]ダイアログを表示します。 詳細については、「ノードのプロパティ」を参照してください。

インターフェイスモジュールノード

インターフェイスモジュールノードは、インターフェイスモジュールを表します。 インターフェイスモジュールは、複数のクラスに含めることができるインターフェイスを定義するコピーコードタイプの Natural モジュールです。 インターフェイスモジュールおよびその使用法の詳細については、「複数クラスのインターフェイス使用」を参照してください。

コマンド

コマンド 説明
開く インターフェイスモジュールリストビューを開きます。 詳細については、「リストビュー」を参照してください。
リスト 現在のインターフェイスモジュール構造のソース形式で、読み取り専用のプログラムエディタを開きます。
保存 現在のインターフェイスモジュール構造を、特定の Natural コピーコードモジュールに保存します。
新しいインターフェイス インターフェイスモジュールで新しいインターフェイスを作成します。
リンク解除 インターフェイスモジュールをクラスからリンク解除します。つまり、インターフェイスモジュールで定義されたインターフェイスは、クラスで使用できなくなります。
印刷 現在のインターフェイスモジュール構造のソース形式を印刷します。
プロパティ インターフェイスモジュール固有の情報を示す[プロパティ]ダイアログを表示します。 詳細については、「ノードのプロパティ」を参照してください。

インターフェイスノード

インターフェイスノードは、インターフェイスモジュールまたはクラスのインターフェイスを表します。 内部および外部インターフェイスの詳細については、「複数クラスのインターフェイス使用」を参照してください。

タイプ

内部

内部インターフェイスの親は、インターフェイスモジュールまたはクラスです。 親がインターフェイスモジュールの場合、インターフェイスは、クラスで使用されるインターフェイスモジュールで定義されます。 この場合、インターフェイスは、クラスの外部インターフェイスとして 2 回目に表示されます(詳細については、「複数クラスのインターフェイス使用」を参照)。 内部インターフェイスがクラス自体の子である場合、インターフェイスはクラスで直接定義されます。

外部

外部インターフェイスは、このインターフェイスを定義するインターフェイスモジュールを使用するクラスのサブノードとしてのみ表示できます。 外部インターフェイスノードで実行できるコマンドは、内部インターフェイスに使用可能なコマンドのサブセットにすぎません。 基本的には、そのようなインターフェイスの実装変更することしかできません。 詳細については、「複数クラスのインターフェイス使用」を参照してください。

コマンド

コマンド 使用可能なクラス 説明
開く

内部
外部

インターフェイスリストビューを開きます。 詳細については、「リストビュー」を参照してください。
新規メソッド 内部 インターフェイスに新しいメソッドを作成します。
新規プロパティ 内部 インターフェイスに新しいプロパティを作成します。
名前の変更 内部 インターフェイスの名前を変更します。 詳細については、「クラスメンバの名前の変更」を参照してください。
削除 内部 インターフェイスおよびその従属コンポーネントをすべて削除します。
プロパティ

内部
外部

インターフェイス固有の情報を示す[プロパティ]ダイアログを表示します。 詳細については、「ノードのプロパティ」を参照してください。

プロパティノード

プロパティノードは、内部または外部インターフェイスのプロパティを表します。

タイプ

内部

プロパティが内部インターフェイスのサブノードとして表示される場合、内部プロパティとして表示されます。 内部プロパティノードには、常に、専用の外部プロパティノードが存在します。

外部

プロパティが外部インターフェイスのサブノードとして表示される場合、外部プロパティとして表示されます。 外部プロパティで実行できるコマンドは、内部プロパティに使用可能なコマンドのサブセットにすぎません。

コマンド

コマンド 使用可能なクラス 説明
名前の変更 内部 プロパティの名前の変更をします。 詳細については、「クラスメンバの名前の変更」を参照してください。
削除 内部 プロパティを削除します。
プロパティ

内部
外部

プロパティ固有の情報を示す[プロパティ]ダイアログを表示します。 詳細については、「ノードのプロパティ」を参照してください。

メソッドノード

メソッドノードは、内部または外部インターフェイスのメソッドを表します。

タイプ

内部

メソッドが内部インターフェイスのサブノードとして表示される場合、内部メソッドとして表示されます。 内部メソッドノードには、常に、専用の外部メソッドノードが存在します。

外部

メソッドが外部インターフェイスのサブノードとして表示される場合、外部メソッドとして表示されます。 外部メソッドで実行できるコマンドは、内部メソッドに使用可能なコマンドのサブセットにすぎません。

コマンド

コマンド 使用可能なクラス 説明
新規 PDA 内部 メソッドに新しいメソッドパラメータデータエリアを作成します。
リンク PDA 内部 既存のパラメータデータエリアをメソッド PDA として使用します。 「リンク」を参照してください。
リンクの実装

内部
外部

既存のサブプログラムをメソッド実装として使用します。 「リンク」を参照してください。
名前の変更 内部 メソッドの名前の変更します。 詳細については、「クラスメンバの名前の変更」を参照してください。
削除 内部 メソッドおよびその従属コンポーネントをすべて削除します。
プロパティ

内部
外部

メソッド固有の情報を示す[プロパティ]ダイアログを表示します。 詳細については、「ノードのプロパティ」を参照してください。

メソッド実装ノード

メソッド実装ノードは、メソッドが呼び出されたときに実行される Natural サブプログラムを表します。

コマンド

コマンド 説明
開く プログラムエディタで、メソッド実装のサブプログラムを開きます。
リスト メソッド実装のサブプログラムを、読み取り専用モードでプログラムエディタに表示します。
Cat メソッド実装のサブプログラムをカタログします。
Stow メソッド実装のサブプログラムを Stow します。
名前の変更 メソッド実装のサブプログラム名を変更します。つまり、メソッド実装に別のサブプログラムを使用します。 詳細については、「クラスメンバの名前の変更」を参照してください。
印刷 メソッド実装のサブプログラムを印刷します。
プロパティ メソッド実装固有の情報を示す[プロパティ]ダイアログを表示します。 詳細については、「ノードのプロパティ」を参照してください。

メソッドパラメータデータノード

メソッドパラメータデータノードは、パラメータデータエリアモジュールまたはインラインパラメータデータ定義を表します。 メソッドには、メソッド実装で使用されるパラメータを定義する複数のメソッドパラメータデータノードが存在できます。 複数のメソッドパラメータデータノードが存在する場合、メソッド実装で正しいパラメータデータシーケンスを確実に使用する必要があります。

タイプ

データエリア

このタイプは、パラメータデータエリアタイプの別の Natural モジュールでメソッドパラメータデータが定義されることを示します。 ノードに表示される名前が、Natural パラメータデータエリアモジュールの名前です。

インラインデータ定義

このタイプは、DEFINE DATA PARAMETER ステートメントを使用して、メソッドパラメータデータがクラスソース(または、インターフェイスモジュールソース)で直接定義されることを示します。 この場合、すべてのメソッドサブプログラムでパラメータデータをもう一度定義する必要があります。 このタイプのノードの名前は常に「インライン」でになります。

コマンド

コマンド 使用可能なクラス 説明
開く データエリア データエリアエディタでデータエリアモジュールを開きます。
編集 インラインデータ定義 編集用のインラインデータ定義の内容を示すダイアログが表示されます。
リスト データエリア データエリアモジュールのリストを表示します。
Cat データエリア データエリアモジュールのカタログを表示します。
Stow データエリア データエリアモジュールを Stow します。
リンク解除 データエリア データエリアモジュールをメソッドからリンク解除します。つまり、データエリアモジュールはメソッドのパラメータデータエリアとして使用されなくなります。
名前の変更 データエリア メソッドパラメータデータエリアリンクの名前を変更します。つまり、メソッドのパラメータデータエリアとして別のデータエリアモジュールを使用します。 詳細については、「クラスメンバの名前の変更」を参照してください。
削除 インラインデータ定義 インラインデータ定義を削除します。
印刷 データエリア データエリアモジュールを印刷します。
プロパティ

データエリア
インラインデータ定義

メソッドパラメータデータ固有の情報を示す[プロパティ]ダイアログを表示します。 詳細については、「ノードのプロパティ」を参照してください。

Top of page

ノードのプロパティ

コンテキストメニューから[プロパティ]を選択すると、Natural クラスおよびその要素に関するノード固有の情報がクラスビルダによって表示されます。 このコンテキストメニューエントリは、ライブラリワークスペースまたはリストビューでオブジェクトを選択した場合に使用できます。 プロパティシートには、グループノードに関する情報は表示されません。

情報そのものはプロパティシートに表示されます。 表示される実際のプロパティページ数は、選択したオブジェクトのタイプによって異なります。

すべてのクラス要素には、プロパティページ[一般][コメント]が表示されます。 他のプロパティページは、選択したノードタイプによって異なります。

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

一般

このプロパティページには、選択したオブジェクトに関する一般情報が表示されます。 表示内容は、対応するノードタイプによって異なり、次のセクションで説明します。

クラス

名前 クラス名
定義されている場所 クラスモジュール
ライブラリ ライブラリ

オブジェクトおよびローカルデータエリア

名前 オブジェクトまたはローカルデータエリアの名前
使用されている場所 クラス名
ライブラリ ライブラリ

インラインデータ定義

名前 "インライン定義"
定義されている場所 クラス名

インターフェイスモジュール

名前 インターフェイスモジュールの名前
使用されている場所 クラス名
ライブラリ ライブラリ

インターフェイス

名前 インターフェイスの名前
定義されている場所 クラス名
インターフェイスモジュール インターフェイスがインターフェイスモジュールで定義されている場合、対応する名前がこのフィールドに表示されます。

メソッド

名前 メソッドの名前
定義されている場所 このメソッドを提供するインターフェイスの名前。
インターフェイスモジュール メソッドがインターフェイスモジュールで定義されている場合、対応する名前がこのフィールドに表示されます。

実装

名前 サブプログラムの名前
使用されている場所 このサブプログラムによって実装されるメソッドの名前。
ライブラリ ライブラリ

パラメータデータエリア

名前 パラメータエリアの名前
使用されている場所 メソッドの名前
ライブラリ ライブラリ

プロパティ

名前 プロパティの名前
定義されている場所 このプロパティを提供するインターフェイスの名前。
インターフェイスモジュール プロパティがインターフェイスモジュールで定義されている場合、対応する名前がこのフィールドに表示されます。

コメント

各コンポーネントには独自のコメントがあります。

このプロパティページにはコメントが表示され、新しいコメントの追加または既存のコメントの変更を行うことができます。 コメントは、特別な構文表記なしで入力および表示されます。

[OK]を押してプロパティシートを終了すると、コメントが変更されます。 [キャンセル]を押すと、コメントが変更されないままになります。

識別

このプロパティページは、クラスノードおよびインターフェイスノードに使用できます。 インターフェイスの場合、クラスの一部としてインターフェイスが直接定義されている場合にのみ、下のリストボックスが有効になります。 インターフェイスがインターフェイスモジュールで定義されている場合、リストボックスは表示されません。

上部のコントロール[ユニーク ID]には、クラスまたはインターフェイスの現在のグローバルユニーク ID(Global Unique ID)が読み取り専用情報として表示されます。

このリストボックスには、クラスにリンクされているローカルデータエリアに含まれるすべてのデータ変数が表示されます。 これらの変数は、一意の識別子として使用できます。 変数のインライン定義はサポートされていません。

上部のコントロールに表示される現在のグローバルユニーク ID(Global Unique ID)を別の値と置き換えるには、リストから変数を選択します。 新しく選択した変数名で、名前コントロールが更新されます。 変数を選択し、[OK]を押してプロパティシートを終了すると、グローバルユニーク ID(Global Unique ID)が置き換えられます。 [キャンセル]を押すと、ID が変更されないままになります。 選択した変数が有効なグローバルユニーク ID(Global Unique ID)であるかどうかはチェックされません。

設定

このプロパティページは、クラスノードにのみ使用できます。 クラスビルダでクラスのアクティベーションポリシーを設定できます。

クラスの有効なアクティベーションポリシーは、次のとおりです。

または、デフォルトに設定されます。

これらの値の意味については、『プログラミングガイド』の「Natural X」を参照してください。

現在のアクティベーションポリシーを変更するには、必要な値を選択します。

[OK]を押してプロパティシートを終了すると、値が変更されます。 [キャンセル]を押すと、ID が変更されないままになります。

定義

このプロパティページは、インターフェイスのプロパティにのみ使用できます。 既存のプロパティの定義を変更できます。

プロパティの名前は変更できません。 次の変更が可能です。

[OK]を押してプロパティシートを終了すると、プロパティの定義が変更されます。 [キャンセル]を押すと、定義が変更されないままになります。

Top of page

クラスコンポーネントの追加

クラスの開発を容易にするため、クラスビルダでは、2 つの方法でコンポーネントをクラスに追加できます。

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

リンク

既存の Natural オブジェクトは、クラスコンポーネントにリンクできます。

オブジェクトノードに対してコンテキストメニュー項目[リンク]がアクティブになっていると、ダイアログが表示されます。 現在のライブラリまたはその STEPLIB で検出できる必要なタイプのすべてのオブジェクトが、このダイアログに表示されます。

オブジェクトを選択し、[OK]を押してダイアログを終了すると、選択したオブジェクトへの参照がクラス構造に追加されます。 [キャンセル]を押すと、クラス構造が変更されないままになります。

クラスへのリンク

GUID ローカルデータエリア、オブジェクトデータエリア、またはインターフェイスモジュールは、クラスにリンクできます。 ダイアログにオブジェクト名とライブラリが表示されます。

メソッドへのリンク

各メソッドにはメソッド実装が必要です。 既存の実装は、選択したメソッドに別のサブプログラムをリンクすることによって置き換えることができます。 また、1 つまたは複数のパラメータデータエリアをメソッドにリンクすることもできます。 ダイアログにオブジェクト名とライブラリが表示されます。

新規作成

新しいクラスコンポーネントは、コンテキストメニュー項目[新規作成]で作成されます。

ライブラリワークスペースでは、インプレース編集を使用してクラスコンポーネントを作成します。 リストビューでは、ダイアログを使用して、必要なデータを照会し、新しいオブジェクトを作成します。 これは、クラスプロパティを除くすべてのノードに適用されます。プロパティの作成には、常に、ダイアログを使用します。

次のセクションでは、各種クラスコンポーネントの作成方法について説明します。

新しいクラス

新しいクラスは、まず内部クラス構造として作成されます。 この時点で、クラス名が定義されます。 クラスを初めて保存すると、クラスモジュール名、つまり、実際の Natural オブジェクト名が割り当てられます。

ライブラリワークスペース

新しいクラス名(NEWCLS など)が生成されます。 対応するツリーノードが選択され、インプレースで編集できるようになります。 名前を任意の有効なクラス名に変更できます。

リストビュー

新しいクラスの名前を尋ねるダイアログが表示されます。

新しいオブジェクトデータエリア

新しいオブジェクトデータエリアを作成すると、新しいコンポーネントへの参照がクラス構造に追加されます。 対応する Natural オブジェクトがまだ作成されていません。 これは、Natural オブジェクトを開くときに作成の確認に行うと、作成されます。

ライブラリワークスペース

新しいオブジェクトデータエリア(NEWODA など)が生成されます。 対応するノードが選択され、インプレースで編集できるようになります。 名前を任意の有効なデータエリア名に変更できます。

リストビュー

新しいオブジェクトデータエリアの名前を尋ねるダイアログが表示されます。

新しいインターフェイスモジュール

新しいインターフェイスモジュールを作成すると、新しいコンポーネントへの参照がクラス構造に追加されます。 対応する Natural オブジェクトがまだ作成されていません。 これは、クラスの保存時にインターフェイスが Natural オブジェクトに含まれていると、作成されます。

ライブラリワークスペース

新しいインターフェイスモジュール(NEWEIF など)が生成されます。 対応するノードが選択され、インプレースで編集できるようになります。 名前を任意の有効なコピーコード名に変更できます。

リストビュー

インターフェイスモジュールの名前を尋ねるダイアログが表示されます。

新しいインターフェイス

ライブラリワークスペース

新しいインターフェイス(NEWIIF など)が生成されます。 対応するノードが選択され、インプレースで編集できるようになります。 名前を任意の有効なインターフェイス名に変更できます。

リストビュー

インターフェイスの名前を尋ねるダイアログが表示されます。

新規メソッド

ライブラリワークスペース

新しいメソッド(NEWMET など)が生成されます。 対応するノードが選択され、インプレースで編集できるようになります。 名前を任意の有効なメソッド名に変更できます。 新規メソッドの名前はメソッド実装の名前としても使用されます。 両方がクラス構造に追加されます。 有効な Natural サブプログラム名よりメソッド名が長い場合、実装名を確実に有効にものにするため、最初の文字のみが使用されます。

リストビュー

メソッドの名前を尋ねるダイアログが表示されます。 新規メソッドの名前はメソッド実装の名前としても使用されます。 両方がクラス構造に追加されます。 有効な Natural サブプログラム名よりメソッド名が長い場合、実装名を確実に有効にものにするため、最初の文字のみが使用されます。

新規プロパティ

新しいプロパティは、常に、ダイアログを使用して作成されます。

このダイアログでは、次の情報が取得されます。

プロパティ名: 有効なプロパティ名。 新しい名前または選択された ODA 変数の名前です。 完全修飾された ODA 変数名の場合、ドットが下線で置き換えられます。
ODA 変数: リンクされた ODA で定義されているすべての変数が、リストボックスに表示されます。

プロパティ名、フォーマット、および長さに変更がない場合、選択された ODA 変数からこれらの値が取得されます。

フォーマット: ODA 変数の定義と異なるフォーマットおよび長さを必要とする場合は、変更できます。
読み取り専用: プロパティを読み込み専用としてマークできます。

Top of page

クラスコンポーネントの名前の変更

Natural スタジオで修正できる他のすべての Natural オブジェクトと同様に、クラスコンポーネントの識別子をインプレースで編集することによって、名前が変更されます。 この操作には、マウスを使用するか、F2 キーを押すか、あるいはすべてのクラスコンポーネントに有効なコンテキストメニューエントリ[名前の変更]を選択します。

新しい名前は、編集中に構文チェックされます。 有効な Natural 名でない場合、編集モードを終了できません。 Esc キーを押すと、編集モードがキャンセルされ、以前の識別子にリセットされます。

クラスコンポーネントが、オブジェクトデータエリア、パラメータデータエリア、インターフェイスモジュールなどの Natural オブジェクトを参照する場合、クラス内の参照のみが変更されます。 対応する Natural オブジェクトの名前は変更されません。 必要であれば、名前を明示的に変更する必要があります。

Top of page

クラスコンポーネントの削除

リンク解除

コンテキストメニューエントリ[リンク解除]は、データエリアやインターフェイスモジュールなどの Natural オブジェクトを参照するクラスコンポーネントに使用できます。 これらのモジュールがクラスにリンク済みの場合、[リンク解除]を使用して削除することができます。

この操作は、選択したコンポーネントへのクラスからの参照を削除するのみです。 既存の Natural オブジェクトは削除しません。

削除

コンテキストメニューエントリ[削除]は、クラスおよび Natural オブジェクトを参照しないクラスのコンポーネントに使用できます。

このコンテキストメニュー項目を選択すると、クラスビルダの[削除]ダイアログが表示されます。

選択したコンポーネント(複数可)を削除するかどうかが確認されます。 従属する Natural オブジェクトを示す参照リストが、コンポーネントごとに表示されます([すべてはい]を選択しなかった場合)。 これらの Natural オブジェクトは、必要に応じて、名前、ライブラリ、および Natural オブジェクトタイプで識別されます。 リストは情報提供のためにのみ使用されます。 従属する Natural ソースは影響を受けません。

選択したコンポーネントがクラスの場合、内部構造が削除され、対応する Natural ソースおよびカタログモジュールがライブラリから削除されます。

はい 選択したコンポーネントを削除します。 複数のコンポーネントを選択した場合、次のコンポーネントの参照リストが表示されます。
すべてはい ダイアログが閉じ、選択したすべてのコンポーネントを削除します。
いいえ 選択したコンポーネントを削除しません。 他のコンポーネントを選択した場合、次のコンポーネントに対して削除ダイアログを表示し、削除手順が続行します。
キャンセル 削除を行わずにダイアログが閉じます。

Top of page

クラスコンポーネントの編集

クラス

新しいクラスを作成した時点では、対応する新しいクラスモジュールはまだ作成されていません。 この作成は、クラスに対して[保存][名前をつけて保存]、または[Stow]を実行したときにのみ行われます。

保存

既存のクラスに対して[保存]を実行すると、クラスソースがクラスモジュールに書き込まれます。

対応するクラスモジュールがまだ存在しない新しいクラスに対して[保存]を実行すると、[保存][名前をつけて保存]のように動作します。 現在使用しているデフォルトのコードページで、エンコードが初期化されます。 このようなクラスモジュールが現在のライブラリにまだ存在しない場合、クラスモジュールが作成され、このオブジェクトにソースが書き込まれます。

名前をつけて保存

[名前をつけて保存]を実行すると、クラスモジュールおよびクラスのエンコードの入力を求めるダイアログが表示されます。 Natural クラスモジュール名を確実に有効なものにするため、入力長が制限され、入力内容の妥当性がチェックされます。 このようなクラスモジュールがすでに存在するか、または名前が無効の場合、エラーメッセージが表示されます。

Cat

[Cat]コマンドを実行すると、クラスソースがカタログされ、対応するクラス GP が生成されます。 これは新しいクラスには適用されません。

Stow

他の Natural オブジェクトの場合と同様に、[Stow]はクラスを内部的に保存し、カタログします。 新しいクラスを Stow すると、[名前をつけて保存]で説明しているようにクラスモジュールの入力が求められます。

Natural オブジェクト

クラスコンポーネントとして動作できる Natural オブジェクトは、クラス構造のコンテキストで変更することもできます。 オブジェクトデータエリア、パラメータデータエリアおよびインターフェイスモジュールへの参照は、[新規作成]で作成できます。 既存のオブジェクトは、編集、保存および Stow が可能です。

ローカルデータエリアおよびメソッド実装は、クラスのコンテキストでは作成できません。 ここでは、既存のオブジェクトのみがクラスにリンクできます。 ただし、編集、保存および Stow は可能です。

他のクラスコンポーネント

インターフェイス、メソッド、プロパティなどの他のクラスコンポーネントは、単独で保存、カタログ、または Stow することはできません。 クラスのコンテキストで変更のみが可能です。

Top of page

複数クラスのインターフェイスの使用

一部のアプリケーションでは、同じインターフェイスを複数のクラスで実装すると効果的です。 この目的のため、Natural コピーコードモジュールでインターフェイスを定義し、インターフェイスを実装するクラスにこのコピーコードモジュールを含めることができます。 メソッド実装のような実装固有の設定を、デフォルト設定としてコピーコードで定義し、クラス固有の実装を使用するためにクラスで上書きすることができます。

インターフェイスを定義する Natural コピーコードモジュールは、クラスビルダ環境ではインターフェイスモジュールと呼ばれます。 インターフェイスモジュールはクラスビルダに完全に統合されており、インターフェイスモジュールで定義されたインターフェイスを、クラスのインターフェイスと同じように処理することができます。 ただし、インターフェイスモジュールは、クラスに含まれている場合にのみクラスビルダで変更できます。

インターフェイスモジュールで定義されるインターフェイスは、クラスの 2 箇所に常に表示されます。つまり、Interface Module ノードに内部インターフェイスとして表示され、クラスノードに外部インターフェイスとして表示されます。 外部インターフェイスに有効なコマンドを使用して、インターフェイスの実装を変更できます。

変更したインターフェイスモジュールは、クラス全体を保存せずに保存することができます。 インターフェイスモジュールを変更し、Interface Module ノードの親であるクラスを保存すると、インターフェイスモジュールも保存するかどうかがクラスビルダから尋ねられます。

インターフェイスモジュールのロックの原則については、「ロックの概念」を参照してください。

注意:
インターフェイスモジュールを変更する場合、このインターフェイスモジュールが他のクラスでも使用される可能性があることを常に認識している必要があります。 変更を保存した後、他のクラスを Stow する場合にエラーとなる可能性があります。 インターフェイスモジュールが他のクラスで使用されているかどうかは、クラスビルダでチェックできません。

新しいインターフェイスモジュールの作成

クラスコマンド[新規インターフェイスモジュール](「クラスビルダのノード」を参照)は、新しいインターフェイスモジュールを作成します。

Interface Module ノードがツリービューとリストビューに追加され、インターフェイスモジュールに新しいインターフェイスを作成したり、インターフェイスにメソッドやプロパティを作成したりできます。 インターフェイスモジュールに新しいコンポーネントを作成すると、対応する外部ノードがクラスに追加されます。 例えば、新しいインターフェイス INT1 をインターフェイスモジュールに追加すると、INT1 という名前の外部インターフェイスノードが、クラスのサブノードとして作成されます。 新しいインターフェイスモジュールは、単に既存のインターフェイスモジュールとして保存されます。 インターフェイスモジュールが Natural モジュールとして存在すると、他のクラスから直ちにリンクできます。

既存のインターフェイスモジュールのリンク

クラスコマンド[インターフェイスモジュールのリンク](「クラスビルダのノード」を参照)では、クラスに対して既存のインターフェイスモジュールが使用されます。 現在のステップライブラリのすべての Natural コピーコードモジュールを示すダイアログが表示されます。

注意:
ダイアログには、インターフェイスモジュールだけでなく、コピーコードモジュールがすべて表示されます。

クラスインターフェイスを定義するコピーコードモジュールをこのリストから選択すると、これらのインターフェイスが現在のクラスインターフェイスに追加されます。 インターフェイスを定義しないコピーコードモジュールを選択したか、または選択したコピーコードモジュールに、クラスで定義済みのインターフェイスが含まれていると、エラーが発生します。 この場合、インターフェイスモジュールはクラスにリンクされません。

インターフェイスモジュールがクラスに正常にリンクされると、そのノードがクラスツリーに追加されます。 Interface Module ノードを開くと、インターフェイスモジュールのインターフェイスが表示されます。 また、インターフェイスモジュールのすべてのインターフェイスは、外部インターフェイスノードとしてクラスに追加されます。

インターフェイスモジュールのリンク解除

インターフェイスモジュールに対して[リンク解除]コマンド(「インターフェイスモジュールノード」を参照)を実行すると、このインターフェイスモジュールのインターフェイスはクラスで使用されなくなります。

これは、Interface Module ノードおよびこのインターフェイスモジュールのすべての外部インターフェイスノードが、クラスから削除される結果になります。

注意:
インターフェイスモジュールをクラスからリンク解除すると、クラスソースモジュールに含まれているクラス固有のすべての設定(このインターフェイスモジュールのインターフェイスに対するメソッド実装など)も削除されます。

インターフェイスノード

インターフェイスモジュールをクラスで使用している場合、インターフェイスモジュールで定義されたすべてのインターフェイスは、2 つのノード(インターフェイスモジュールのサブノードである内部インターフェイスノードおよびクラスのサブノードである外部インターフェイスノード)に表示されます。 これらの 2 つのインターフェイスノードのタイプは、それぞれのアイコンで区別できます(「インターフェイスノード」を参照)。 同じことはプロパティノードとメソッドノードについても言えます。内部インターフェイスの子である場合は内部ノードに表示され、外部インターフェイスの子である場合は外部ノードに表示されます(「プロパティノード」および「メソッドノード」を参照)。

また、外部インターフェイスのプロパティおよびメソッドで実行できるコマンドは、内部インターフェイスのプロパティおよびメソッドで使用できるコマンドのサブセットにすぎません。 例えば、インターフェイスの名前は内部インターフェイスの場合にのみ変更できます。 外部インターフェイスでは、インターフェイスの実装の再定義(つまり、メソッド実装およびプロパティに割り当てられている ODA 変数の変更)のみが可能です。

Top of page

ロックの概念

Natural では、Natural モジュールを異なる場所から同時に変更できないことを保証する必要があります。 したがって、クラスビルダに関して言えば、クラスビルダで変更済みの Natural モジュールを Natural ユーザーがプログラムエディタで変更できないようにする(またはその逆)ことが必要です。

クラスビルダは、特殊なコピーコードモジュールである Natural クラスおよびインターフェイスモジュールを変更するために使用できます(「複数クラスのインターフェイス使用」を参照)。

異なる要件により、クラスのロック概念は、インターフェイスモジュールのロック概念と異なります。 次のセクションでは、両方の概念について説明します。

クラスのロック

クラスのロックは非常に柔軟です。 クラスビルダでは、クラスが変更されるまで、クラスのロックは行われません。 これは、クラスビルダで開いたクラスが、プログラムエディタでも開けることを意味します。

プログラムエディタでクラスを開いた場合、クラスノードはクラスビルダで表示できますが、変更を加えることはできません。 クラスを変更する前に、プログラムエディタセッションを閉じる必要があります。

クラスビルダにクラスが表示され、ユーザーがプログラムエディタでクラスを変更する場合、クラスを保存すると、変更内容がクラスビルダにも表示されます。 クラスビルダでクラスを変更すると、このクラスをプログラムエディタで開くことができなくなります。

インターフェイスモジュールのロック

インターフェイスモジュールのロックは、クラスのロックに比べてやや制限的です。 インターフェイスモジュールでは、ロックが 2 段階で行われます。 まず、クラスビルダで、インターフェイスモジュールがクラスビルダとプログラムエディタの両方で同時に変更できないことを確認する必要があります。インターフェイスモジュールを使用するクラスをクラスビルダで開くと、インターフェイスモジュールがロックされます。 これは、インターフェイスモジュールを使用するクラスをクラスビルダで開くと、それをプログラムエディタで開けなくなることを意味します。 一方、プログラムエディタですでに開かれているインターフェイスモジュールをクラスで使用している場合、クラスビルダでクラスを開くことはできません。

さらに、インターフェイスモジュールが複数のクラスから含まれている場合は、インターフェイスモジュールをクラスビルダで複数回開くことができます。 クラスビルダでは、ユーザーがインターフェイスモジュールを変更する場合、インターフェイスモジュールが 1 回しか開かれないことを確認する必要があります。これは、他のインターフェイスモジュールインスタンスが最新でなくなるからです。インターフェイスモジュールの現在のインスタンスしか表示されないようにするため、クラスビルダは、他のすべてのインスタンスを閉じようとします。 クラスビルダでは、ユーザーが処理を停止できる確認ダイアログがこのために表示されます。

1 つのクラスがすでに変更されている場合、変更を保存するかどうかがユーザーに尋ねられます。 変更したインターフェイスモジュールを保存したら、インターフェイスモジュールを使用する他のクラスを再び開くことができます。

Top of page

チュートリアル

このセクションでは、クラスビルダの使用法について簡単に説明します。

例では、クラスビルダを使用して、ライブラリ SYSEXCOM にあるクラス EMPLOYEE を構築する方法を示しています。

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

新しいクラス

ライブラリワークスペースの論理ビューを起動し、ローカルデータエリア EMPGUIDS と EMPLOY-O を含む新しいライブラリ MYEXCOM を作成します。 これらは、SYSEXCOM にあるオブジェクトのコピーです。

EMPGUIDS には GUID 定義が含まれ、EMPLOY-O にはオブジェクトデータ定義が含まれています。 新しいクラス MYEMPLOYEE を作成するため、ライブラリノードを選択してから、コンテキストメニュー項目[新規作成]>[クラス]を選択します。 "NEWCLS" というラベルが付いた新しいツリーノードが表示され、インプレースで編集できます。 名前を "MYEMPLOYEE" に変更します。

オブジェクトデータのリンク

MYEMPLOYEE のオブジェクトデータは、オブジェクトデータエリアで定義する必要があります。 このオブジェクトデータエリアを作成するには、ノード "MYEMPLOYEE" のコンテキストメニュー項目[新規作成]を選択するか、またはコンテキストメニュー項目[リンク]>[オブジェクトデータエリア]を選択して既存のオブジェクトデータエリアをリンクします。

ダイアログが表示され、MYEXCOM およびその STEPLIB にあるローカルデータエリアとパラメータデータエリアのすべてのリストが表示されます。 これらのオブジェクトは、オブジェクトデータエリアとして使用できます。 EMPLOY-O を選択します。

インターフェイスの作成

最初のインターフェイスを作成するため、ノード "MYEMPLOYEE" のコンテキストメニュー項目[新規作成]>[インターフェイス]を選択します。 "NEWIIF" というラベルが付いた新しいツリーノードが表示され、インプレースで編集できます。 名前を "EMPLOY-I" に変更します。 他のインターフェイスは、適宜作成するか、または "Interfaces"(グループノード)のコンテキストメニューで[新規作成]を選択して作成できます。

メソッドの作成

最初のメソッドを作成するため、インターフェイスノード "EMPLOY-I" のコンテキストメニュー項目[新規作成]>[メソッド]を選択します。 "NEWMET" というラベルが付いた新しいツリーノードが表示され、インプレースで編集できます。 このノードの名前を "INIT" に変更します。 同じ名前のメソッド実装ノードが自動的に作成されます。

サブプログラム ELOAD-N(SYSEXCOM からコピーされる)を使用してこのメソッドを実装するため、メソッドのコンテキストメニュー項目[リンク]>[実装]を選択し、メソッド実装を変更します。

[リンク]>[パラメータデータエリア]を使用し、適切なモジュールを選択して、パラメータデータエリア ELOAD-A(SYSEXCOM からコピーされる)をリンクできます。 他のメソッドは、適宜作成するか、または "Methods"(グループノード)のコンテキストメニューで[新規作成]を選択して作成できます。

プロパティの作成

最初のプロパティを作成するため、インターフェイスノード "EMPLOY-I" のコンテキストメニュー項目[新規作成]>[プロパティ]を選択します。 リンク済みのオブジェクトデータエリアで定義されたすべてのオブジェクトデータ変数がダイアログに表示され、プロパティに割り当てることができます。 オブジェクトデータ変数は、フォーマットと長さの定義、および次元とともに表示されます。 他のコントロールに情報を入力せずにいずれかの変数を選択すると、この変数名がプロパティ名として取得され、フォーマットと長さの定義が適宜生成されます。

ただし、クラスビルダでは、新しいフォーマットでデータ転送の互換性がある限り、別の名前をプロパティに割り当て、フォーマットと長さを適応させることができます(『プログラミングガイド』の「NaturalX」を参照)。 新しいプロパティを読み込み専用としてマークできます。

インターフェイスモジュールの使用

これまでは、クラス MYEMPLOYEE でインターフェイスを内部的に定義しただけでした。 しかし、組み込み可能なインターフェイスがモジュールで定義されている可能性もあります。

このため、クラスのコンテキストメニュー項目[リンク]>[インターフェイスモジュール]を使用して、インターフェイスモジュールをリンクすることができます。 このモジュールで定義されているインターフェイスは、"Interface Modules" グループの対応するインターフェイスモジュールに挿入され、同時に "Interfaces" グループノードにも挿入されます。 それらのメソッドを実装するため、"Interfaces" で対応するノードを選択します。

GUID ローカルデータエリアのリンク

クラスビルダでは、クラスおよびインターフェイス用にグローバルユニーク ID が自動的に生成されます。 しかし、生成された識別子の代わりに変数を使用すると、対応する定義を持つローカルデータエリアを MYEMPLOYEE にリンクできます。

MYEMPLOYEE の既存のグローバルユニーク ID は、その後で変更できます。 コンテキストメニュー項目[プロパティ]を選択し、[識別]ページを開きます。 このページは、クラスおよびインターフェイスに使用できます。

生成された GUID は、上部コントロールに表示されます。 EMPGUIDS で定義されているローカル変数は、下のボックスに表示されます。 EMPGUID を選択し、[OK]を選択してプロパティシートを終了します。

アクティベーションポリシー

クラスビルダでは、クラスのアクティベーションポリシーを明示的に設定できます。 コンテキストメニュー項目[プロパティ]を選択すると、MYEMPLOYEE の現在のアクティベーションポリシーが[設定]ページに表示されます。 このオプションはクラスでのみ使用できます。 [外部 - 複数]を選択し、[OK]を選択してプロパティシートを終了します。

クラスの保存および Stow

これまでは、新しいクラス MYEMPLOYEE が内部クラス構造としてのみ存在しました。 すべての変更を保存するため、クラスをクラスモジュールに保存および Stow できます。 この状態の変更は、アイコンが変わることで示されます。

登録

最後に、クラスノードでコンテキストメニュー項目[登録]を選択して、MYEMPLOYEE を登録します。

Top of page

用語集

外部インターフェイス

外部インターフェイスとは、インターフェイスモジュールで定義されるインターフェイスのことで、クラスによって取り込まれます。

インターフェイスモジュール

インターフェイスモジュールとは、インターフェイスを定義する Natural コピーコードモジュールのことです。 インターフェイスモジュールは、含まれるインターフェイスを定義するために、クラスで使用できます。 クラスはメソッドとプロパティ実装を上書きできますが、インターフェイスの他のすべての設定はインターフェイスモジュールで定義されたとおりに使用されます。

内部インターフェイス

内部インターフェイスとは、クラスで直接定義されるインターフェイス、またはインターフェイスモジュールで定義される、インターフェイスモジュールのインターフェイスのことです。

メソッド実装

メソッド実装とは、メソッドに割り当てられ、クラスオブジェクトに対してこのメソッドが呼び出されるときに実行される Natural サブプログラムのことです。

プロパティ実装

プロパティ実装とは、プロパティに割り当てられるオブジェクトデータ変数のことです。

Top of page