Consultando o Acesso do Usuário a seu Aplicativo WebFacing

A API do Ambiente WebFacing permite que você verifique se um usuário está acessando seu aplicativo por meio de um navegador da Web ou de uma emulação 5250. Utilize esta API quando você desejar alterar o comportamento de seu programa de acordo com o tipo de acesso de um usuário. Por exemplo, pode haver um campo extra ou texto diferente que você gostaria de exibir se o programa estiver sendo acessando por meio de um navegador, mas gostaria de suprimir a exibição do campo ou texto se a emulação 5250 estiver sendo utilizada.

A API do Ambiente WebFacing é chamada QqfEnvironment e faz parte do tempo de execução do servidor WebFacing. O nome do procedimento externo QqfEnvironment faz distinção entre maiúsculas e minúsculas. É um procedimento fornecido em um programa de serviços chamado QQFENV, que está localizado na biblioteca QSYS. A API retornará 1 se o aplicativo estiver executando sob WebFacing e 0 se estiver executando sob emulação 5250.

Os exemplos a seguir mostram como utilizar esta API. Na amostra RPG, o procedimento externo QqfEnvironment é definido com DSpec QQFENV. Nesse exemplo, QQFENV DSpec recebeu o mesmo nome que o programa de serviço e foi definido como um inteiro, já que o procedimento retorna 0 ou 1. Um DSpec rc também foi definido para manter o valor 0 ou 1 quando Eval rc = QQFENV for desempenhado. O programa RPG utiliza o valor de rc para determinar condicionalmente o comportamento do programa e o que será exibido na exibição DDS.

Na amostra DDS abaixo, se o valor para rc no módulo RPG NÃO for 1, o texto "Application is not running in the Webfacing environment" será exibido. Se o valor para rc for 1, o texto "Application is running in the Webfacing environment" será exibido.

Quando você estiver criando um programa para utilizar esta API:
  1. Utilize o comando CRTRPGMOD para criar um módulo com o código RPG que está chamando a API. Um módulo RPG precisa ser criado porque está utilizando um procedimento que não é do programa.
  2. Quando você criar seu programa (CRTPGM), utilize a palavra-chave BNDSRVPGM para ligar o módulo RPG ao programa de serviços QQFENV na QSYS.
Figura 1. Amostra 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
Figura 2. Amostra 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

Feedback