IBM Books

Guia de Referência do Net.Data


Ambientes de Linguagem Aceitos

O Net.Data é projetado para permitir que novas interfaces de linguagem e de banco de dados sejam incluídas de modo 'pluggable'. Estes ambientes de linguagem são acessados como programas de serviço. O nome do programa de serviço é configurado no arquivo de inicialização do Net.Data e associado ao nome do ambiente de linguagem. Cada ambiente de linguagem deve suportar um conjunto padrão de interfaces definidas pelo Net.Data.

O Net.Data para OS/400 suporta os seguintes ambientes de linguagem:

As seguintes seções descrevem os ambientes de linguagem acima relacionados.

Ambiente de Linguagem REXX (DTW_REXX)

O ambiente de linguagem REXX pode interpretar programas REXX internos que estão especificados em um bloco FUNCTION da macro Net.Data ou pode executar programas REXX externos armazenados em um arquivo separado. Algumas das características dos ambientes de linguagem REXX são:

Programas REXX acessam os valores de um parâmetro de tabela da macro Net.Data como variáveis stem do REXX. Para um programa REXX, o cabeçalho das colunas para tabela T é T_N.i e os valores de campo são T_V.i.j.

Chamadas a programas REXX externos são identificadas em um bloco FUNCTION por uma instrução do formato:

%EXEC{ REXX-file-name Yoptional parameters" %}

Segue um simples exemplo de uma macro (REXXM) com um programa REXX interno e uma referência a um programa REXX externo:

%define a = "3"
%define b = "0"
 
%function(DTW_REXX) func1(IN inp1, OUT outp1){
%EXEC{ /QSYS.LIB/REXX.LIB/REXXSRC.FILE/TREXX.MBR %}
%}
 
%function(DTW_REXX) func2(IN inp1, OUT outp1){
outp1 = 2*inp1
%}
 
%HTML(REPORT) {
@func1(a, b)
b=$(b)
@func2(a, b)
b=$(b)
%}

No exemplo, os resultados @func1 no programa REXX TREXX.MBR sendo interpretados pelo intérprete REXX, e os resultados @func2 no intérprete REXX estão interpretando a instrução "outp1 = 2*inp1". Em ambos os casos, o pool de variáveis REXX está definido de tal modo que o intérprete REXX possa acessar as variáveis "a" e "b". Após a conclusão da @func2, "b" é definido como "6" (supondo que o programa REXX TREXX.MBR não modificou "a").

Este é um exemplo de uma URL referenciando a macro, supondo que:

http://hostname/cgi-bin/db2www/WWW/macro/REXXM/report 

Caso opte pela não criação de um arquivo de inicialização do Net.Data, o ambiente de linguagem REXX é ativado por padrão. No entanto, caso tenha criado um arquivo de inicialização e deseje utilizar o ambiente de linguagem REXX, a seguinte instrução de configuração deverá estar no arquivo de inicialização:

ENVIRONMENT(DTW_REXX) /QSYS.LIB/QTCP.LIB/QTMHREXX.SRVPGM ( )

Ambiente de Linguagem SQL (DTW_SQL ou SQL)

O ambiente de linguagem SQL é utilizado para executar instruções SQL utilizando o DB2. Algumas das características do ambiente de linguagem SQL são:

Segue abaixo um simples exemplo de uma macro (SQLM) que emite um único comando SQL:

%define DATABASE="HOSTNAME"
 
%FUNCTION(DTW_SQL) sql1 (){
select * from custinfo.customer
%}
 
%HTML(REPORT) {
@sql1()
 %} 

A URL que faz referência à macro é semelhante ao exemplo da URL fornecido para o ambiente de linguagem REXX, exceto pelo nome do arquivo macro REXXM que é substituído por SQLM.

Caso opte pela não criação de um arquivo de inicialização do Net.Data, o ambiente de linguagem SQL é ativado por padrão. No entanto, caso tenha criado um arquivo de inicialização e deseje utilizar o ambiente de linguagem SQL, a seguinte instrução de configuração deverá estar no arquivo de inicialização:

ENVIRONMENT(DTW_SQL)  /QSYS.LIB/QTCP.LIB/QTMHSQL.SRVPGM
  ( IN DATABASE, LOGIN, PASSWORD, TRANSACTION_SCOPE, SHOWSQL, DTW_SET_TOTAL_ROWS,
    DB_CASE, OUT DTWTABLE, SQL_CODE, TOTAL_ROWS  )

O texto desta instrução do ambiente deve estar todo em um linha do arquivo de inicialização. Aqui ele será mostrado dividido em diversas linhas para ficar legível.

Os parâmetros do ambiente de linguagem SQL na instrução de configuração acima são transmitidos ao ambiente de linguagem e estão descritos abaixo:

Ambiente de Linguagem System (DTW_SYSTEM)

O ambiente de linguagem SYSTEM suporta chamadas a programas externos identificados em uma instrução EXEC no bloco FUNCTION.

O ambiente de linguagem de SYSTEM interpreta as instruções EXEC transmitindo o nome e parâmetros do programa especificado ao sistema operacional para execução através da chamada de função system() de linguagem C. Este método não permite que as variáveis do Net.Data sejam passadas ou recuperadas diretamente para as instruções executáveis, como faz o ambiente de linguagem do REXX, então o ambiente de linguagem do SYSTEM passa e recupera variáveis do seguinte modo:

Programas do ambiente de linguagem SYSTEM acessam os valores de um parâmetro de tabela da macro Net.Data através de seu nome Net.Data. Os cabeçalhos de coluna para a tabela T serão T_N_i e os valores de campo são T_V_i_j.

O ambiente de linguagem SYSTEM espera que o executável seja um comando ou um programa. O perfil de usuário QTMHHTP1 deverá possuir a autoridade adequada para executar o executável, além dos recursos que um executável utiliza.

Segue abaixo um simples exemplo de uma macro (SYSM) que especifica um programa como o executável, passando-a um parâmetro do Net.Data:

%define var1 = "OriginalValue"
 
%FUNCTION(DTW_SYSTEM) test(INOUT parm1){
%EXEC{ /QSYS.LIB/PGM.LIB/TSYS0001.PGM %}
%}
 
%HTML(REPORT) {
<PRE>
Valor da var1 antes da chamada de função: $(var1)
@test(var1)
Valor da var1 após a chamada de função: $(var1)
</PRE>
%} 

A URL que faz referência à macro é semelhante ao exemplo da URL fornecido para o ambiente de linguagem REXX, exceto pelo nome do arquivo macro REXXM que é substituído por SYSM.

Caso opte pela não criação de um arquivo de inicialização do Net.Data, o ambiente de linguagem SYSTEM é ativado por padrão. No entanto, caso tenha criado um arquivo de inicialização e deseje utilizar o ambiente de linguagem SYSTEM, a seguinte instrução de configuração deverá estar no arquivo de inicialização:

 ENVIRONMENT(DTW_SYSTEM) /QSYS.LIB/QTCP.LIB/QTMHSYS.SRVPGM  ( )


[ Início da Página | Página Anterior | Próxima Página | Tabela de Conteúdos | Índice ]