WebFacing アプリケーションへのユーザー・アクセスの照会

WebFacing Environment API によって、ユーザーがアプリケーションに Web ブラウザーを通じてアクセスしているか、あるいは 5250 エミュレーションを通じてアクセスしているかを検査することができます。この API は、ユーザーが持っているアクセス権のタイプに従ってプログラムの動作を変更したい場合に使用してください。例えば、プログラムがブラウザーを通じてアクセスされた場合には表示したい追加のフィールドまたは異なるテキストがあるが、5250 エミュレーションが使用されている場合にはそのフィールドまたはテキストの表示を抑制したいことがあります。

WebFacing Environment API は、QqfEnvironment と呼ばれ、WebFacing サーバー・ランタイムのパーツとなっています。外部プロシージャー名 QqfEnvironment には大文字小文字の区別があります。これは、QQFENV と呼ばれるサービス・プログラムにパッケージされたプロシージャーで、QSYS ライブラリーにあります。この API は、アプリケーションが WebFacing のもとで実行されていれば 1 を戻し、5250 エミュレーションのもとで実行されていれば 0 を戻します。

以下の例は、この API の使用法を示しています。RPG サンプルでは、外部プロシージャー QqfEnvironment は DSpec QQFENV によって定義されます。この例において、QQFENV DSpec には、サービス・プログラムと同じ名前が与えられ、プロシージャーは 0 または 1 を戻すので、整数として定義されています。DSpec rc もまた、Eval rc = QQFENV が実行された時に値 0 または 1 を保持するように定義されています。RPG プログラムは、次に、rc の値を使用して、プログラムの動作および DDS 画面に表示されるものを条件付きで決定します。

以下の DDS サンプルで、RPG モジュールの rc の値が 1 でない場合は、"Application is not running in the Webfacing environment" (アプリケーションは WebFacing 環境内で実行されていません) というテキストが表示されます。rc の値が 1 である場合は、"Application is running in the Webfacing environment" (アプリケーションは WebFacing 環境内で実行されています) というテキストが表示されます。

この API を使用するプログラムを作成する場合:
  1. CRTRPGMOD コマンドを使用して、API を呼び出す RPG コードを含むモジュールを作成します。RPG モジュールは、プログラムの中にないプロシージャーを使用するので、作成する必要があります。
  2. プログラム (CRTPGM) を作成する場合には、BNDSRVPGM キーワードを使用して、RPG モジュールに QSYS 内の QQFENV サービス・プログラムをバインドします。
図 1. RPGLE サンプル
.........1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
     FCHKENVFM  CF   E             Workstn
      *
     DQQFENV           PR            10I 0 Extproc('QqfEnvironment')
      *
     Drc               S             10I 0
      *
     C                   Eval      rc = QQFENV
     C                   Eval      FLD001 = rc
      *
     C                   Dow       NOT *IN03
      *
     C                   If        rc = 1
     C                   Eval      *in01 = *on
      *
     C                   Else
     C                   Eval      *IN01 = *off
     C                   EndIf
      *
     C                   Exfmt     FMT01
     C                   EndDo
      *
     C                   Eval      *inlr = *on
図 2. DDS サンプル
....+A*..1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
     A*%%TS  SD  20010924  150104  USERID      REL-V4R4M0  5769-PW1
     A*%%EC
     A                                      DSPSIZ(24 80 *DS3)
     A          R FMT01
     A*%%TS  SD  20010924  150104  USERID      REL-V4R4M0  5769-PW1
     A                                      CA03(03)
     A                                  1 24'Testing Webfacing Environment API'
     A                                      DSPATR(HI)
     A                                 10  3'F3=Exit'
     A                                      COLOR(BLU)
     A N01                              5 13'Application is not running in the -
     A                                      Webfacing environment'
     A  01                              6 15'Application is running in the Webf-
     A                                      acing environment'
     A                                      COLOR(RED)
     A            FLD001         4S 0O  7 39
     A                                  7 22'QqfEnvironment:'
     A                                                             
     A*%%GP SCREEN1    01