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名を指定し、その間をピリオドで区切ります(例えば、#PSLSYS.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(#PSLSYS.Browser)
TRANSFER TOROUTINE(*SERVICE EmployeeBrowse)
change #WEBRTN 'wam1.routine1'
TRANSFER TOROUTINE(*EVALUATE #WEBRTN)