4.3.3 WEB_MAPの*PERSISTキーワード

WEB_MAPのOPTIONSプロパティの中では、*PERSISTオプションを使用することができます。WAMはサーバー側のWebベースの環境で実行されるように設計されています。スケーラビリティを最大限に高め、リソース使用量を最小限に抑えるために、WAMコンポーネントはステートレスな性質を持っています。つまり、WAMのメモリー状態が保持されるのは、WEBROUTINEの実行中だけです。WEBROUTINEの実行が終了すると、メモリー状態(フィールドやリストの値など)は破棄されます詳細は「4.3 WAMのセッション管理」を参照してください。

Webセッションが有効な間、複数のWEBROUTINEの実行中にデータを存続させて保持するフィールドやリストを宣言することもできます。そのためには、WEB_MAPで指定するフィールドやリストにOPTIONS(*PERSIST)を宣言します。このOPTIONS(*PERSIST)の宣言に加えて、WEBROUTINEの初期のSessionStatusをActiveに設定することも必要になります。これには、WAMに対してSessionStatusを設定する方法、または個々のWEBROUTINEに対してOnEntry(*SessionStatus_Active)キーワードを設定する方法があります。このような方法で、SessionStatusをアクティブに設定することにより、WEBROUTINEが実行を開始する前に、WEBROUTINEはセッション状態をロードするようになります。

WEBROUTINEとの対応関係の方向を指定しないで、セッション・データを宣言するだけの場合は、以下の構文を使用します。

WEB_MAP FOR(*NONE) FIELDS #で始まるフィールド および リスト名 OPTIONS(*PERSIST)

 

FOR(*NONE)宣言を使用すると、宣言されたフィールドやリストとWEBROUTINEとの対応関係の方向は定義されませんが、フィールドやリストの値は、WEBROUTINEの実行をまたぐようにして、WEBROUTINEのRDMLXで使用できるようになります。上のWEB_MAPをWAMレベルで宣言すると(つまり、BEGIN_COMの後で、しかもすべてのWEBROUTINEブロックの外に記述すると)、セッションを必要とする(つまり、初期のSessionStatusがNoneではない)すべてのWEBROUTINEが、セッション状態を格納したそれらのフィールドやリストにアクセスできます。