4.1 WEBROUTINEのTRANSFERステートメント

簡素なフォームでは、WAMの各WEBROUTINEには1つのXSLスタイルシートが関連付けられています。このXSLスタイルシートがプレゼンテーション層、つまりWebデザインを定義します。WEBROUTINEが呼び出されると、そのWEBROUTINEページのみが返されます。ただし、実行処理をRDMLXから別のページに「リダイレクト」することが必要な場合もあります。例えば、WEBROUTINEを要求したものの、セッションの有効期限が切れている場合です。この場合、要求対象のページとは異なるエラー・ページや他のページを表示する必要があります。

またもう1つの例としては、ログオンWEBROUTINEを呼び出す1つのログオン・ボタンが付いているログオン・ページです。このWEBROUTINEは、ユーザーの認証を行い、それが登録済みのユーザーかゲスト・ユーザーかに応じて、該当するWEBROUTINEに処理を「リダイレクト」して対象のページを表示します。WEBROUTINE間の「リダイレクト」が必要になる例は、他にも多数あります。

この「リダイレクト」を行うには、TRANSFERステートメントを使用します。ターゲットWEBROUTINEへの各フィールドのマッピングは、そのターゲットWEBROUTINEのWEB_MAPステートメントに基づいて行われます。ターゲットWEBROUTINEに渡されるのは、そのWEB_MAPに受信用として指定されているフィールドやリストのみになります。

TRANSFERステートメントには、以下のプロパティがあります。

プロパティ

説明

TOROUTINE

ターゲットWEBROUTINEの名前を指定します。別のWAMを指定することも可能です。その場合は、WAM名の後にWEBROUTINE名を指定し、その間をピリオドで区切ります(例えば、#MYWAM.Browseのように入力します)。

サービス名も指定できます。その場合は、*SERVICE修飾子を接頭辞として使用します。

フィールドから値を取り込むことも可能です。その場合は、*EVALUATE修飾子を接頭辞として使用します。

OnEntry

このプロパティは、ターゲットWEBROUTINEに受信用のフィールドやリストをマッピングするために使用します。以下のいずれかの値になります。

*MAP_NONE (フィールドやリストのマッピングを行わない)

*MAP_ALL (すべての必要なフィールドやリストのマッピングを行う)

*MAP_LOCAL (WEBROUTINEのWEB_MAPに指定されているフィールドやリストのマッピングだけを行う)

*MAP_SHARED (WEBROUTINEレベルではなく、WAMレベルでWEB_MAPに指定されているフィールドやリストのマッピングだけを行う)

デフォルトは、*MAP_ALLです。

 

 

TRANSFERが実行されると、ターゲットWEBROUTINEが実行制御を取得し、ソースWEBROUTINEに制御が戻ることはありません。ターゲットWEBROUTINEが終了すると、このWEBROUTINEがブラウザーから直接呼び出された場合と同じように、このWEBROUTINEのページが返されます。

TRANSFERステートメントの例を以下に示します。

TRANSFER TOROUTINE(Browser)
TRANSFER TOROUTINE(#MYWAM.Browser)
TRANSFER TOROUTINE(*SERVICE EmployeeBrowse)
change #WEBRTN 'wam1.routine1'
TRANSFER TOROUTINE(*EVALUATE #WEBRTN)