PROCESS PAGE

このドキュメントでは、次のトピックについて説明します。


関数

PROCESS PAGE ステートメントは、外部レンダリングエンジン(Natural for Ajax など)に一般的なインターフェイスの説明を提供し、Natural 内部データ表現と外部データ表現をリンクします。このリンクを介して、データおよびイベントがブラウザベースの外部アプリケーションとやりとりされます。ただし、レンダリング情報はやりとりされません。

詳細については、『Natural for Ajax』ドキュメントを参照してください。最新の Natural for Ajax ドキュメントは、https://empower.softwareag.com/ でいつでも入手できます。

構文 1 - PROCESS PAGE

PROCESS PAGE [(parameter)] operand1
  [WITH PARAMETERS
    {[NAME] operand3 [VALUE] operand4 [(parameters)]} ...
  END-PARAMETERS]
  [GIVING operand11]

構文図で使用されている記号については、「構文記号」を参照してください。

関連機能グループ:対話型処理用の画面生成

構文説明 - 構文 1

PROCESS PAGE ステートメントの構文 1 は、通常 Natural アダプタ内でのみ使用されます。アダプタとは、Natural アプリケーションと Web ページ間のインターフェイスを形成する Natural オブジェクトです。アダプタは、レイアウトの保存時に Natural for Ajax によって自動的に作成/更新されます。

注意:

オペランド定義テーブル:

オペランド 構文要素 フォーマット オペランド参照 ダイナミック定義
operand1 C S       A U                       ×
operand2   S A                         C     × ×
operand3 C S       A U                       ×
operand4 C S A     A U N P I F B D T L      
operand5   S A                         C     × ×
operand11   S               I4                

構文要素の説明:

構文要素 説明
parameter
属性制御変数:
カッコで囲んだ CV パラメータを指定することで、operand2 で指定されている 1 つ以上の属性制御変数を参照できます。
(CV=operand2)

プログラミングガイド』の「論理条件基準」、「MODIFIED オプション - フィールドの内容が変更されているかどうかのチェック」も参照してください。

operand1
外部ページレイアウト名:
operand1 には外部ページレイアウトの名前が入ります。
operand2
属性制御変数の名前:

operand2 には属性制御変数の名前が入ります。フォーマット C で、スカラまたは 1 つの配列オカレンスであることが必要です。

operand3
外部データフィールドの名前:
operand3 には operand4 の相互転送に使用される外部データフィールドの名前が入ります。
operand4
Natural データフィールドの名前:
operand4 には転送される Natural データフィールドの名前が入ります。
parameters
Parameters:
1 つまたは複数のパラメータをカッコで囲んで、operand4 の直後に指定できます。
EM または EMU

データ転送時に使用される編集マスク。

詳細については、『パラメータリファレンス』のセッションパラメータ EM を参照してください。

Unicode 編集マスクの詳細については、『パラメータリファレンス』でセッションパラメータ EMU を参照してください。

CV カッコで囲まれた CV パラメータは、operand5 で指定されている 1 つ以上の属性制御変数を参照するように operand4 の直後に指定できます。
(CV=operand5)

プログラミングガイド』の「論理条件基準」、「MODIFIED オプション - フィールドの内容が変更されているかどうかのチェック」も参照してください。

operand5
属性制御変数の名前:
operand5 には属性制御変数の名前が入ります。変数はフォーマット C である必要があります。

operand4 がスカラまたは 1 つの配列オカレンスである場合、operand5は、

  • スカラ

  • または 1 つの配列オカレンスである必要があります。

operand4 が次元 1 の配列の全範囲である場合、operand5 は、

  • スカラ

  • または 1 つの配列オカレンス

  • または同じサイズの次元 1 の配列の全範囲である必要があります。

operand4 が次元 2 の配列の全範囲である場合、operand5 は、

  • スカラ

  • または 1 つの配列オカレンス

  • または両方の次元が同じサイズの次元 2 の配列の全範囲

  • または operand4 が次元 1 で持つのと同じサイズの次元 1 の配列の全範囲である必要があります。

operand4 が次元 3 の配列の全範囲である場合、operand5 は、

  • スカラ

  • または 1 つの配列オカレンス

  • または 3 つすべての次元同じサイズの次元 3 の配列の全範囲

  • または operand4 が次元 1 と 2 で持つのと同じサイズの次元 2 の配列の全範囲

  • または operand4 が次元 1 で持つのと同じサイズの次元 1 の配列の全範囲である必要があります。

GIVING operand11
GIVING 節:

要求を実行できなかった場合は、operand11 に Natural エラーが含まれます。

Natural for Ajax によって作成されたアダプタの例:

* PAGE1: PROTOTYPE       --- CREATED BY Natural for Ajax --- 
* PROCESS PAGE USING 'XXXXXXXX' WITH
* INFOPAGENAME RESULT YOURNAME
DEFINE DATA PARAMETER
1 INFOPAGENAME (U) DYNAMIC
1 RESULT (U) DYNAMIC
1 YOURNAME (U) DYNAMIC
END-DEFINE
*
PROCESS PAGE U'/njxdemos/helloworld' WITH
PARAMETERS
 NAME U'infopagename'
  VALUE INFOPAGENAME
 NAME U'result'
  VALUE RESULT
 NAME U'yourname'
  VALUE YOURNAME
END-PARAMETERS
*
*  TODO: Copy to your calling program and implement.
/*/*( DEFINE EVENT HANDLER
* DECIDE ON FIRST *PAGE-EVENT
*  VALUE U'nat:page.end'
*   /* Page closed.
*   IGNORE
*  VALUE U'onHelloWorld'
*   /* TODO: Implement event code.
*   PROCESS PAGE UPDATE FULL
*  NONE VALUE
*   /* Unhandled events.
*   PROCESS PAGE UPDATE
* END-DECIDE
/*/*) END-HANDLER
*
END

構文 2 - PROCESS PAGE USING

PROCESS PAGE USING operand6

WITH {operand7} ../graphics/dot3.gif
NO PARAMETER

GIVING operand11]

構文図で使用されている記号については、「構文記号」を参照してください。

関連機能グループ:対話型処理用の画面生成

構文説明 - 構文 2

この構文は、ページレイアウト(Natural for Ajax または類似のツールで作成)から生成されたアダプタタイプのオブジェクトを使用してリッチ GUI 入力/出力処理を実行するために使用します。

オペランド定義テーブル:

オペランド 構文要素 フォーマット オペランド参照 ダイナミック定義
operand6 C S       A                         ×
operand7   S A G   A U N P I F B D T L      
operand11   S               I4                

構文要素の説明:

構文要素 説明
USING operand6
アダプタ名:

Natural システムファイルに事前に保存されているアダプタ定義を呼び出します。『プログラミングガイド』の「リッチ GUI ページの処理 - アダプタ」も参照してください。

アダプタ名(operand6)には、1 ~ 8 文字の英数字定数またはユーザー定義変数を使用できます。変数を使用する場合、事前の定義が必要です。

アダプタ名にはアンパサンド(&)を含めることができます。この文字は実行時に Natural システム変数 *LANGUAGE の現在の値で置き換えられます。この機能は履歴上の理由で用意されています。複数言語のアダプタが必要な場合、外部レンダリングシステム(例えば、Natural for Ajax)の機能を使用してください。

注意:
新しいアプリケーションでは、複数言語にするためのアンパサンド機能は必要ありません。Natural for Ajax などを使用して設計されたページでは、レイアウト設計の一部として複数言語の情報を保持できます。『Natural for Ajax』ドキュメントの「Multi Language Management」を参照してください。

operand7
フィールド指定:

データベースフィールドまたはユーザー定義変数(すべて事前の定義が必要)のリストを指定します。フィールドは、番号、シーケンス、フォーマット、長さ、オカレンス数(配列の場合)について、参照されているアダプタに準拠している必要があります。そうでない場合、エラーが発生します。

データベースフィールドの内容が PROCESS PAGE 処理の結果として変更される場合は、データエリアにある値のみが変更されます。データベースの内容を変更するためには、適切なデータベース UPDATE/STORE ステートメントを使用する必要があります。

プログラムで定義されたフィールドに基づく PROCESS PAGE USING」を参照してください。

NO PARAMETER
NO PARAMETER オプション:

パラメータリストなしの PROCESS PAGE USING」を参照してください。

GIVING operand11
GIVING 節:

要求を実行できなかった場合は、operand11 に Natural エラーが含まれます。

注意:
GIVING 節では、アダプタオブジェクトの起動中または実行中にエラーが発生した場合に共通 Natural エラー処理を中断します。Natural モジュールを後方追跡して ON ERROR 節を見つける代わりに、Natural エラーコードがこの変数に渡され、次のステートメントの実行が続行されます。

パラメータリストなしの PROCESS PAGE USING

パラメータリストのない PROCESS PAGE USING を使用する場合は、次の要件を満たす必要があります。

  • アダプタ名(operand6)は、英数字定数(最大 8 文字)として指定する必要があります。

  • この方法で使用されるアダプタは、そのアダプタを参照するプログラムのコンパイル前に事前に作成されている必要があります。

  • 処理対象のフィールドの名前は、コンパイル時にアダプタソース定義からダイナミックに取得される必要があります。プログラムとアダプタの両方で使用されるフィールド名が同一である必要があります。

  • PROCESS PAGE ステートメントで参照されるすべてのフィールドは、その時点でアクセス可能である必要があります。

  • ストラクチャードモードでは、フィールドが事前に定義されている必要があります(処理ループまたはビューでデータベースフィールドが適切に参照されている必要があります)。

  • ページレイアウトが変更されたとき、アダプタを使用しているプログラムの再カタログは不要です。ただし、配列構造や名前、フィールドのフォーマット/長さが変更されたとき、またはアダプタでフィールドが追加/削除されたときは、アダプタを使用しているプログラムの再カタログが必要になります。

  • プログラムのコンパイル時にアダプタソースを利用できる必要があります。利用できない場合、PROCESS PAGE USING ステートメントはコンパイルできません。

注意:
アダプタを利用できない場合でもプログラムをコンパイルする必要がある場合は、NO PARAMETER を指定してください。これにより、アダプタを利用できない場合でも PROCESS PAGE USING ステートメントのコンパイルが可能になります。

プログラムで定義されたフィールドに基づく PROCESS PAGE USING

プログラム(operand7)内で処理するフィールドの名前を指定することで、プログラム内のフィールドとアダプタ内のフィールドに異なる名前を使用できます。

プログラム内のフィールドのシーケンスは、アダプタ内のフィールドのシーケンスと一致している必要があります。Natural マップをアダプタオブジェクトとして使用する場合は、マップエディタによって、マップで指定されたフィールドがフィールド名でアルファベット順にソートされることに留意してください。詳細については、『エディタ』ドキュメントのマップエディタの説明を参照してください。

プログラムエディタの行コマンド .I(adaptername) を使用して、指定されたアダプタで定義されているフィールドから派生したパラメータリストとともに完全な PROCESS PAGE USING ステートメントを取得できます。

アダプタのレイアウトが変更されたとき、アダプタを使用しているプログラムの再カタログは不要です。ただし、アダプタ内のフィールド名、フィールドのフォーマット/長さ、または配列構造が変更されたとき、またはアダプタでフィールドが追加/削除されたときは、プログラムの再カタログが必要になります。

実行時に、プログラムで指定されたフィールドのフォーマットと長さがアダプタで指定されたフィールドと一致しているかどうかがチェックされます。両方のレイアウトが一致しない場合は、エラーメッセージが生成されます。

構文 3 - PROCESS PAGE UPDATE

PROCESS PAGE UPDATE
  

FULL
DATA

[event-option] [GIVINGoperand11]

構文図で使用されている記号については、「構文記号」を参照してください。

関連機能グループ:対話型処理用の画面生成

構文説明 - 構文 3

PROCESS PAGE UPDATE ステートメントは、PROCESS PAGE ステートメントに戻って再実行するために使用します。通常、前の PROCESS PAGE ステートメントのデータ入力処理が不完全だったため、イベント処理から戻るために使用します。

注意:
PROCESS PAGE ステートメントとそれに対応する PROCESS PAGE UPDATE ステートメントの間に、INPUTWRITEPRINT または DISPLAY ステートメントを実行することはできません。

PROCESS PAGE UPDATE ステートメントが実行されると、PROCESS PAGE ステートメントが実行されたときに存在していたサブルーチン、特殊条件、およびループ処理を考慮してプログラムステータスが再位置づけされます(PROCESS PAGE ステートメントのステータスがまだ有効な場合)。PROCESS PAGE ステートメントの実行後にループが開始され、PROCESS PAGE UPDATE ステートメントがそのループ内にある場合、ループは中断され、PROCESS PAGE UPDATE ステートメントの結果として再処理された PROCESS PAGE ステートメントの後で再開されます。

PROCESS PAGE ステートメントの実行後にサブルーチン階層が呼び出され、サブルーチン内で PROCESS PAGE UPDATE が実行された場合、Natural は自動的に全サブルーチンをさかのぼり、PROCESS PAGE ステートメントの位置にプログラムステータスを再位置づけします。

PROCESS PAGE ステートメントが実行されたステータスがすでに終了してしまった時点では、PROCESS PAGE ステートメントをループ、サブルーチン、または特殊条件ブロック内に位置づけ、PROCESS PAGE UPDATE ステートメントを実行することはできません。このエラー条件が検出されると、エラーメッセージが生成され、プログラムの実行が終了します。

オペランド定義テーブル:

オペランド 構文要素 フォーマット オペランド参照 ダイナミック定義
operand11   S               I4                

構文要素の説明:

構文要素 説明
FULL
FULL オプション:

PROCESS PAGE UPDATE ステートメントで FULL オプションを使用すると、対応する PROCESS PAGE ステートメントが完全に再実行されます。

  • FULL オプションを使用しない通常の PROCESS PAGE UPDATE ステートメントでは、PROCESS PAGE ステートメントと PROCESS PAGE UPDATE ステートメントの間で変更された変数の内容は表示されません。つまり、画面上のすべての変数は、PROCESS PAGE ステートメントが初めて実行されたときに保持していた内容を示します。

  • PROCESS PAGE UPDATE FULL ステートメントでは、PROCESS PAGE ステートメントの最初の実行後に行われたすべての変更が、PROCESS PAGE ステートメントの再実行時に適用されます。つまり、画面上のすべての変数は、PROCESS PAGE UPDATE ステートメントの実行時に保持していた値を含みます。すべての制御変数の MODIFIED ステータスがリセットされます。

PROCESS PAGE UPDATE FULL ステートメントの特徴は、属性制御変数のステータスが NOT MODIFIED にリセットされることです。この処理は普通の PROCESS PAGE UPDATE ステートメントでは行われません。属性制御変数にステータス MODIFIED が割り当てられているかどうかを確認するには、MODIFIED オプションを使用します。

DATA
DATA オプション:

DATA オプションは、制御変数の MODIFIED ステータスがリセットされないことを除いて、FULL オプションのように動作します。

event-option
EVENT オプション:

下記の「EVENT オプション」を参照してください。

GIVING (operand11)
GIVING 節:

要求を実行できなかった場合は、operand11 に Natural エラーが含まれます。

ユーザープログラムフラグメントの例:

PROCESS PAGE USING "HELLOW-A"
*
/*( DEFINE EVENT HANDLER
DECIDE ON FIRST *PAGE-EVENT
 VALUE U'nat:page.end'
  /* Page closed.
  IGNORE
 VALUE U'onHelloWorld'
  COMPRESS "HELLO WORLD" YOURNAME INTO RESULT
  PROCESS PAGE UPDATE FULL
 NONE VALUE
  /* Unhandled events.
  PROCESS PAGE UPDATE
END-DECIDE
/*) END-HANDLER

EVENT オプション

AND SEND EVENToperand8
  [WITH PARAMETERS
   {[NAME] operand9 [VALUE] operand10 [

EMU=value
EM=value

]}...
  END-PARAMETERS]

このオプションでは、外部 I/O システムに特定の機能を実行するように指示できます。これらの機能は、外部 I/O システムの一部であるか、またはフォーカスの設定、メッセージボックスの表示などの出力処理に関する特別な機能を実装します。

オペランド定義テーブル:

オペランド 構文要素 フォーマット オペランド参照 ダイナミック定義
operand8 C S       A U                       ×
operand9 C S       A U                       ×
operand10 C S A     A U N P I F B D T L      

構文要素の説明:

構文要素 説明
AND SEND EVENT operand8
外部 I/O システムから要求されるイベント:

外部 I/O システムの実装に応じて、イベントを使用できます。『Natural for Ajax』ドキュメントの「Sending Events to the User Interface」を参照してください。

WITH PARAMETERS
WITH PARAMETERS 節:

この節を使用する場合、次のオプションを指定できます。

NAME operand9
外部データフィールド名:

operand9 には、operand10 の相互転送に使用される外部データフィールドの名前が入ります。

VALUE operand10
Natural データフィールド:

operand10 には、転送される Natural データフィールドが入ります。

EMU=
EM=

編集マスク:

データ転送時に使用される編集マスク。

編集マスクの詳細については、『パラメータリファレンス』でセッションパラメータ EM を参照してください。

Unicode 編集マスクの詳細については、『パラメータリファレンス』でセッションパラメータ EMU を参照してください。

END-PARAMETERS
WITH PARAMETERS 節の終了:

WITH PARAMETERS 節を終了するには、Natural の予約語 END-PARAMETERS を使用する必要があります。

構文 4 - PROCESS PAGE MODAL

PROCESS PAGE MODAL
  statement ...
END-PROCESS

構文図で使用されている記号については、「構文記号」を参照してください。

関連ステートメント: PROCESS PAGE

関連機能グループ:

構文説明 - 構文 4

PROCESS PAGE MODAL ステートメントは、処理ブロックを開始し、モーダルリッチ GUI ウィンドウの存続期間を制御するために使用します。

PROCESS PAGE MODAL ステートメントブロックに入ると、次のアクションが実行されます。

  • まだ表示されていない、レポート 0 のデータが最初に表示されます。

  • システム変数 *PAGE-LEVEL が増えます。

  • モーダルページを開く準備ができました。モーダルページは、次の PROCESS PAGE USING operand6 WITH ステートメントで物理的に開きます。ここで、operand6 は使用するアダプタの名前です。

PROCESS PAGE MODAL ステートメントブロックを抜けると、次のアクションが実行されます。

  • モーダルページがこのレベルでオープンされている場合、モーダルページのクローズが準備されます。モーダルページの実際のクローズは次の PROCESS PAGE UPDATE [FULL] ステートメントで実行されます。

  • システム変数 *PAGE-LEVEL が減少し、システム変数 *PAGE-EVENT が、ステートメントブロックに入る前の値に戻されます。

  • モーダルページを開いたプログラムで nat:page.default イベントが発生します。

注意:
PROCESS PAGE MODAL ステートメントとそれに対応する END-PROCESS ステートメントの間に、レポート 0 を参照する PRINTWRITEINPUT または DISPLAY ステートメントを実行することはできません。

PROCESS PAGE MODAL ステートメントをバッチモードで使用することはできません。

構文要素の説明:

構文要素 説明
statement
実行するステートメント:

状況に応じて、statement の代わりに、1 つ以上の適切なステートメントを指定する必要があります。不要なステートメントがある場合は、IGNORE ステートメントを挿入します。

END-PROCESS
PROCESS PAGE MODAL ステートメントの終了:

PROCESS PAGE MODAL ステートメントを終了するには、Natural の予約語 END-PROCESS を使用する必要があります。

例:

* Name: First Demo/Open modal! 
*
PROCESS PAGE USING "EMPTY-A"
*
/*( DEFINE EVENT HANDLER
DECIDE ON FIRST *PAGE-EVENT
  VALUE U'nat:page.end', U'onClose'
    /* Page closed.
    IGNORE
  VALUE U'onNextLevel'
    PROCESS PAGE MODAL
      FETCH RETURN "EMPTY-P"
    END-PROCESS
    PROCESS PAGE UPDATE
  NONE VALUE
    PROCESS PAGE UPDATE
END-DECIDE
/*) END-HANDLER
END

PROCESS PAGE ステートメントのその他の使用例については、ライブラリ SYSEXNJX にも記載されています。