ユーザーがダイレクトコマンドを使用してあるアクティビティから別のアクティビティに移動できるアプリケーションは、ユーザーがメニュー階層を経由して目的のアクティビティに移動するアプリケーションよりも、有用性の点ではるかに上回っています。
上の図は、ダイレクトコマンドを使用することの利点を示しています。 メニュー階層がナビゲーションの基盤となっているアプリケーションでは、Display Document(ドキュメント表示)機能から Delete File(ファイル削除)機能へ移動するユーザーは、ドキュメント関連のブランチを経由して Main Menu(メインメニュー)に戻ってから、ファイル関連のブランチに入る必要があります。 これは、Display Document(ドキュメント表示)機能から Delete File(ファイル削除)機能に直接アクセスする場合と比べて、明らかに非効率的です。
以下に参考情報を示します。
Natural コマンドプロセッサを使用して、アプリケーション内のナビゲーションを定義および制御します。 例えば、コマンドプロセッサを使用して、Display Document(ドキュメント表示)機能に直接アクセスできる DISPLAY DOCUMENT コマンドを定義します。 このコマンドを使用できる画面のコマンド行にこのコマンド文字列を入力すると、Natural コマンドプロセッサによって入力が処理され、コマンドに割り当てられているアクションが実行されます。
メニュー方式のアプリケーションとは対照的に、Natural コマンドプロセッサで実装されるコマンド方式のアプリケーションは、オブジェクト指向のデータ処理に向かって大きな一歩を踏み出しています。 このアプローチには次の利点があります。
アプリケーションの設計は、ある結果に達するまでの過程に依存する必要がなく、求める結果自体にのみ依存します。 そのため、アプリケーション設計は構成要素内の処理フローに影響されなくなります。
アプリケーションの処理ユニットが互いに独立するようになるため、簡単、迅速、しかもより効率的に、アプリケーションをメンテナンスすることができます。
アプリケーションは、独立した処理ユニットを追加することで簡単に拡張できます。 このため、エンドユーザーにとって利用しやすいだけでなく、プログラマにとっても作成しやすいアプリケーションになります。
Natural コマンドプロセッサには、さらに次の利点があります。
プログラムコーディングの縮小
今までは、コマンド処理を操作するために、長くて同じような構造化ステートメントブロックを繰り返す必要がありましたが、コマンドプロセッサを呼び出す PROCESS COMMAND ステートメントを指定するだけで済むようになりました。実際のコマンド操作をソースコードに指定する必要がなくなりました。 これにより、必要なコーディングの量が大幅に削減されます。
コマンド操作の効率化
標準的な方法で一元集中的にコマンド操作を定義するため、アプリケーションのコマンド処理部分の作成およびメンテナンスに伴う作業をより迅速かつ効率的に行うことができます。
パフォーマンスの改善
Natural コマンドプロセッサは、特にパフォーマンス面を考慮して設計されています。そのため、できる限り迅速にコマンドが処理され、Natural アプリケーションのパフォーマンス改善に役立ちます。
Natural コマンドプロセッサには、効率的で使いやすいコマンド操作のための機能が数多く備えられています。
コマンドの柔軟な操作
頻繁に使用するコマンドに対して、別名(キーワードのシノニム)および省略形を定義できます。
省略されたキーワードの一意性の自動チェック
コマンドプロセッサにより、SYSNCP に指定したキーワードごとに他のすべてのキーワードとの比較が自動的に行われ、キーワードを一意に識別するために必要な各キーワードの最小文字数が決定されます。 つまり、アプリケーションでコマンドを入力する場合、ユーザーは各キーワードを、コマンドプロセッサが他のキーワードと区別するために必要とする最小限の長さに短縮できます。
コマンドのローカルおよびグローバルな有効性
特定のコマンドに対応して実行するアクションを、すべての条件で同じにするか、または状況に依存するかを SYSNCP で指定できます。 例えば、前に発行されたプログラムに応じてアクションを決定することができます。 さらに、ある条件下では有効で、別の条件下では無効になるようにコマンドを定義できます。
不正コマンドに対するエラー処理
ユーザー独自のエラー処理ルーチンをコマンドに結び付けることや、エラー入力を Natural で処理することができます。
機能のセキュリティ
Natural Security を使用すると、ライブラリ固有およびユーザー固有の使用条件を SYSNCP で生成したテーブルに定義できます。 このようにして、Natural アプリケーションの特定の機能またはキーワードを、特定のユーザーに対して許可または禁止することができます。
これを、機能のセキュリティと呼びます。 『Natural Security』ドキュメントの「機能のセキュリティ」も参照してください。
ヘルプテキスト
SYSNCP では、キーワードまたはコマンドにヘルプテキストを結び付けることができます。 その後で PROCESS COMMAND ACTION TEXT ステートメントを指定することにより、コマンド固有のヘルプテキストをプログラムに返すことができます。
コマンド処理のオンラインテスト
コマンドの実行結果が意図したものにならなかった場合は、PROCESS COMMAND ステートメント(『ステートメント』ドキュメントを参照)とライブラリ SYSNCP に提供されているソース形式のサンプルテストプログラム EXAM* を使用して、コマンドが正しく処理されなかった理由を調べることができます。 EXAM-* プログラム名の末尾が、関連するアクションウィンドウの上の境界線に、省略形として表示されます。例えば、EXAM-C
の場合は C と表示されます。
コマンドプロセッサをランタイムでテストするには
ダイレクトコマンド「EXAM」を入力して、すべてのテストプログラムをリストします。 [Demonstrate PROCESS COMMAND Statement]ウィンドウが表示されます。
ファンクションコード「O」を入力して、プロセッサを開きます。
プロセッサの名前を入力します。
リストされたファンクションコードのいずれかを選択して、コマンドアクションを適用します。例えば、CHECK の場合は C を選択します。
ファンクションコード「Q」を入力して、プロセッサを閉じます。
Natural コマンドプロセッサは、開発とランタイムの 2 つの部分で構成されます。
開発部分は SYSNCP ユーティリティであり、このセクションで説明しています。 SYSNCP ユーティリティを使用して、コマンド(下記参照)およびコマンドの実行に対応して実行されるアクションを定義します。 SYSNCP は、管理者が設定した定義により、コマンド入力時に実行する処理を判断するデシジョンテーブルを生成します。 これらのテーブルは、プロセッサタイプの Natural メンバに含まれます。
ランタイム部分は PROCESS COMMAND ステートメントであり、『ステートメント』ドキュメントで説明しています。 PROCESS COMMAND ステートメントを使用して、Natural プログラム内でコマンドプロセッサを呼び出します。 PROCESS COMMAND ステートメントでは、ユーザーによるコマンド入力を処理するためにこの時点で使用するプロセッサの名前を指定します。
コマンドとは、コマンド行に入力される一連の値であり、アプリケーションによって認識および処理されます。 コマンドは、最大 3 つの要素を含むことができます。
機能:
1 つ以上の有効なキーワード。 MENU または DISPLAY DOCUMENT など。
パラメータインジケータ:
オプション。 コマンドデータを導くキーワード。
コマンドデータ:
機能に送られる情報。 コマンドデータは、英数字または数字で指定できます。例えば、表示されるファイルの名前または番号を指定します。
コマンドは、常にアプリケーション内のある状態から実行されます。この状態に達した位置をロケーションと呼びます。 コマンドによって、ユーザーはあるロケーションから別のロケーションに導かれます。そのため、各コマンドはベクトルとみなすことができます。
特定のコマンドを発行できるロケーションを、システム全体またはユーザーベースで制限することができます。 例えば、システム全体を基準とした場合、コマンド内に指定する機能をローカルまたはグローバルにすることができます。 グローバル機能はあらゆるロケーションから発行できるのに対し、ローカル機能は指定されたロケーションからのみ発行できます。 ただし、Natural Security がアクティブになっている環境では、キーワードおよび機能に制限を設けることができます。
SYSNCP ユーティリティを使用して、コマンドプロセッサを作成およびメンテナンスします。 コマンドプロセッサには、ユーザーが有効なコマンドを入力したときの処理を決定するデシジョンテーブルが含まれています。
コマンドプロセッサの作成は累積的な作業であり、プロセッサの全般的な設定を構築するヘッダー定義から、キーワード定義、機能定義、および機能に対するアクションの関連付けまでのさまざまな手順を伴います。 SYSNCP には、キーワード、機能、およびアクションを指定するための特別なエディタが用意されています。
コマンドプロセッサ開発の最終的な成果物は複合的なコマンドプロセッサソースであり、このソースをカタログすると、プロセッサタイプの Natural オブジェクトが生成されます。 このオブジェクトを Natural の PROCESS COMMAND ステートメントで参照するたびに、Natural コマンドプロセッサのランタイムシステムが起動されます。
コマンドプロセッサの作成に必要な手順の概要は、以下のとおりです。
コマンドプロセッサを作成するには
セッションプロファイルを確認および修正します。
SYSNCP 自体が使用するセッションプロファイルには、SYSNCP による特定のアクションの実行方法および情報の表示方法を制御するさまざまなパラメータが含まれています。 必要な修正を行った後、そのプロファイルを指定のユーザー ID で保存することができます。
「セッションプロファイル」を参照してください。
コマンドプロセッサを初期化します。
コマンドプロセッサの名前およびコマンドプロセッサを保存するライブラリを指定します。
グローバル設定(ヘッダー)を定義します。
コマンドプロセッサに対するさまざまなグローバル設定を定義します。 例えば、キーワード編集時の記述テキスト、キーワードの最小文字数と最大文字数、ランタイム時に処理するキーワードの順番、ランタイムエラー処理、およびランタイム時の機能呼び出しに PF
キーを使用できるかどうかを設定できます。 「ヘッダーレコード」を参照してください。
キーワードを定義します。
コマンドプロセッサで処理するキーワードはそれぞれ、コマンドの 1~3 番目のどのエントリとして入力するかに関する指定とともに定義します。 キーワードのシノニムは、パラメータインジケータとしても定義できます。 キーワードごとにユーザーテキストを定義できます。
このテキストは、その後、PROCESS COMMAND ACTION TEXT ステートメントを使用して、ランタイム時に読み込むことができます。 「キーワードのメンテナンス」を参照してください。
機能を定義します。
機能は、キーワード結合を有効にすることで定義します。 機能は、ローカル(アプリケーション内の特定のロケーションからのみ呼び出し可能)またはグローバル(アプリケーション内のどこからでも呼び出し可能)あるいはその両方として定義できます。 「機能のメンテナンス」を参照してください。
ランタイムアクションを定義します。
ランタイム時にコマンドが発行されたときに、コマンドプロセッサによって実行されるアクションを定義します。 例えば、Natural プログラムを取り出す、コマンドを Natural スタックの先頭に置く、データを Natural スタックの先頭に置く、およびコマンド行の内容を変更するアクションを定義します。
「ランタイムアクション」を参照してください。
コマンドプロセッサをカタログします。
作成したソースを Natural オブジェクト(プロセッサタイプ)として、指定した Natural ライブラリにカタログします。 これで、PROCESS COMMAND
ステートメントを使用して、Natural プログラムからこのコマンドプロセッサを呼び出すことができます。 「プロセッサのカタログ化」を参照してください。