Vérification de l'accès des utilisateurs à l'application WebFacing

L'API d'environnement WebFacing vous permet de vérifier si un utilisateur accède à votre application via un navigateur Web ou une émulation 5250. Cette API vous permet de changer le comportement de votre programme en fonction du type d'accès de l'utilisateur. Par exemple, vous souhaitez peut-être afficher une zone supplémentaire ou un texte différent si l'accès au programme s'effectue via un navigateur, mais supprimer l'affichage de ces éléments si une émulation 5250 est utilisée.

L'API d'environnement WebFacing est appelée QqfEnvironment. Elle fait partie du module d'exécution du serveur WebFacing. Le nom de procédure externe QqfEnvironment tient compte de la distinction majuscules/minuscules. C'est une procédure encapsulée dans un programme de service appelé QQFENV qui se trouve dans la bibliothèque QSYS. L'API renvoie la valeur 1 si l'application s'exécute sous WebFacing et la valeur 0 s'il s'agit d'une émulation 5250.

Les exemples ci-après indiquent comment utiliser cette API. Dans l'exemple RPG, la procédure externe QqfEnvironment est définie avec la spécification D (DSpec) QQFENV. Dans cet exemple, le même nom a été attribué à la spécification D QQFENV qu'au programme de service et il a été défini comme un entier car la procédure renvoie la valeur 0 ou 1. Une spécification D rc a également été définie pour recevoir la valeur 0 ou 1 lorsque l'instruction Eval rc = QQFENV est exécutée. Le programme RPG utilise ensuite la valeur rc pour déterminer à l'aide de conditions le comportement du programme et ce qui s'affichera sur l'écran DDS.

Dans l'exemple de DDS ci-après, si la valeur de rc dans le module RPG est différente de 1, le texte "L'application ne s'exécute pas dans l'environnement WebFacing" apparaît. Si la valeur de rc est égale à 1, le texte "L'application s'exécute dans l'environnement WebFacing" apparaît.

Lorsque vous créez un programme pour utiliser cette API :
  1. Utilisez la commande CRTRPGMOD pour créer un module avec le code RPG qui appelle l'API. Il est nécessaire de créer un module RPG car il utilise une procédure qui ne figure pas dans le programme.
  2. Lorsque vous créez votre programme (CRTPGM=), utilisez le mot clé BNDSRVPGM pour lier votre module RPG au programme de service QQFENV dans la bibliothèque QSYS.
Figure 1. Exemple 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
Figure 2. Exemple 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'Test de l'API d'environnement WebFacing'
     A                                      DSPATR(HI)
     A                                 10  3'F3=Sortie'
     A                                      COLOR(BLU)
     A N01                              5 13'L'application ne s'exécute pas dans -
     A                                      l'environnement WebFacing'
     A  01                              6 15'L'application s'exécute dans l'environnement -
     A                                      WebFacing'
     A                                      COLOR(RED)
     A            FLD001         4S 0O  7 39
     A                                  7 22'QqfEnvironment:'
     A                                                             
     A*%%GP SCREEN1    01