Changes between Initial Version and Version 1 of WF/Conexaocommainframe


Ignore:
Timestamp:
07/24/07 15:01:38 (17 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • WF/Conexaocommainframe

    v1 v1  
     1== Classe: wf_natural == 
     2 Esta classe tem a finalidade de ler dados do ambiente mainframe realizando comunicação através do protocolo Jasppion (Java Active Server Page Package for Internet On Demand) desenvolvido pela CELEPAR. 
     3 
     4 
     5 
     6=== Métodos === 
     7 
     8==== configure ==== 
     9 
     10'''Descrição:''' Realiza a configuração básica do objeto. 
     11 
     12'''Parâmetros:''' 
     13 
     14:$subProgram: Sub-programa nature que será executado no mainframe (8 bytes). 
     15 
     16:$inputParameter: Parâmetro de entrada para execução do sub-programa no mainframe. 
     17 
     18:[$ip]: Endereço IP da máquina mainframe. ex: 10.15.61.10. 
     19 
     20:[$port]: Porta que receberá a requisição no mainframe. ex: 0316. 
     21 
     22:[$key]: Chave de 8 bytes (usuário) que fornece acesso ao top secret (mainframe). Padrão atual: N000 + parâmetro + espaço. 
     23 
     24:[$password]: Senha para a chave (também de 8 bytes). 
     25 
     26:[$environment]: Ambiente onde está localizado o sub-programa. 'D' (desenvolvimento) ou 'P' (produção). 
     27 
     28 
     29 
     30'''Retorno''': <nenhum> 
     31 
     32'''Exemplo de uso:''' 
     33 
     34{{{ 
     35 
     36$natural = wf_create_object("wf_natural"); 
     37 
     38$natural->configure("SUBPROGR", "senha", "10.15.61.10", 0316, "SUB", "SENHA", 'D'); 
     39 
     40}}} 
     41 
     42---- 
     43 
     44==== setDBGatewayProtocol ==== 
     45 
     46'''Descrição:''' Realiza a escolha do formato da transação (DBCon ou DBGateway) no mainframe, utilizando o protocolo Jasppion. 
     47 
     48 
     49 
     50'''Formato DBCon:''' 
     51 
     52Esta transação executa no mainframe um programa chamado JASPIN. É um tipo de chamada mais performática, visto que está limitado a 32Kb de transferência de dados, limitação do DBCon. A partir do momento em que o DBCon passar a tratar mais que 32Kb o JASPIN automaticamente irá tratar este tamanho. O JASPIN não tem limitação de tamanho de dados. 
     53 
     54 
     55 
     56'''Formato DBGateway:''' 
     57 
     58Esta transação executa no mainframe um programa chamado JASPPION. É um tipo de chamada menos performática, visto que  ela devolve uma quantidade ilimitada de registros de dados, uma vez que o JASPPION não tem limitação de tamanho de dados.  No mainframe cada registro formatado no sub-programa natural como se fosse uma linha de um Record Set e é devolvido ao requisitante. 
     59 
     60 
     61 
     62'''Parâmetros:''' 
     63 
     64:[$dbGateway]: Por default, o formato da transação é DBCon, a não ser que este seja alterado através da chamada do método setDBGatewayProtocol(). Se for necessário retornar ao formato DBCon, pode-se setar este parâmetro para false quando o método for invocado. 
     65 
     66 
     67 
     68'''Retorno''': <nenhum> 
     69 
     70'''Exemplo de uso:''' 
     71 
     72{{{ 
     73 
     74$natural->setDBGatewayProtocol(); 
     75 
     76}}} 
     77 
     78'''Exemplo de uso (2):''' 
     79 
     80{{{$this->natutal->getMSG(); 
     81 
     82$natural->setDBGatewayProtocol(false); // Seta formato de transação para DBCon 
     83 
     84}}} 
     85 
     86---- 
     87 
     88==== execute ==== 
     89 
     90'''Descrição:''' Conecta ao mainframe e captura os dados requisitados 
     91 
     92'''Parâmetros:''' <nenhum> 
     93 
     94'''Retorno''': booleano 
     95 
     96'''Exemplo de uso:''' 
     97 
     98{{{ 
     99 
     100$natural->execute(); 
     101 
     102}}} 
     103 
     104---- 
     105 
     106==== getRC ==== 
     107 
     108'''Descrição:''' Retorna o código do erro ocorrido durante a requisição. Se o retorno for zero nenhum erro ocorreu. 
     109 
     110'''Parâmetros:''' <nenhum> 
     111 
     112'''Retorno''': Integer 
     113 
     114'''Exemplo de uso:''' 
     115 
     116{{{ 
     117 
     118$natural->getRC(); 
     119 
     120}}} 
     121 
     122---- 
     123 
     124 
     125 
     126==== getMSG ==== 
     127 
     128'''Descrição:''' Retorna a explanação do erro quando o getRC() é diferente de zero. 
     129 
     130'''Parâmetros:''' <nenhum> 
     131 
     132'''Retorno''': String 
     133 
     134'''Exemplo de uso:''' 
     135 
     136{{{ 
     137 
     138$natural->getMSG(); 
     139 
     140}}} 
     141 
     142---- 
     143 
     144==== getDataParameter ==== 
     145 
     146'''Descrição:''' Retorna os dados obtidos do mainframe em formato String (formato devolvido pelo mainframe) 
     147 
     148'''Parâmetros:''' <nenhum> 
     149 
     150'''Retorno''': String 
     151 
     152'''Exemplo de uso:''' 
     153 
     154{{{ 
     155 
     156$natural->getDataParameter(); 
     157 
     158}}} 
     159 
     160---- 
     161 
     162==== configureResultSet ==== 
     163 
     164'''Descrição:''' Para facilitar a manipulação dos dados (originalmente em string), pode ser configurado um ResultSet para execução de cada sub-programa no mainframe. 
     165 
     166'''Parâmetros:''' 
     167 
     168:[$lineSize]: Tamanho de cada linha retornada pelo mainframe, normalmente o tamanho é fixado em 200 bytes. 
     169 
     170:[$rowConf]: Array de configuração do ResultSet. Deve ser passado o nome do campo (para identificação de cada atributo, já que o mainframe não retorna esta informação) como chave e o tamanho (quantidade de caracteres - em tamanho fixo) como valor. 
     171 
     172'''Retorno''': <nenhum> 
     173 
     174'''Exemplo de uso:''' 
     175 
     176{{{ 
     177 
     178$natural->configureResultSet(200, array("id" => 5, "nome" => 30) ); 
     179 
     180}}} 
     181 
     182---- 
     183 
     184=== ResultSet === 
     185 
     186ResultSet é um objeto que pode ser acessado através da classe wf_nature e que é construído após o método configureResultSet ser invocado. 
     187 
     188 
     189 
     190=== Métodos === 
     191 
     192==== getNextRow ==== 
     193 
     194'''Descrição:''' Retorna a próxima linha dentro do set de registros 
     195 
     196'''Parâmetros:''' <nenhum> 
     197 
     198'''Retorno''': Array contendo uma linha de registros 
     199 
     200'''Exemplo de uso:''' 
     201 
     202{{{ 
     203 
     204$row = $natural->ResultSet->getNextRow(); 
     205 
     206echo $row['id']; // O mesmo resultado pode ser obtido utilizando o método getFieldByName. 
     207 
     208}}} 
     209 
     210---- 
     211 
     212==== getFieldByName ==== 
     213 
     214'''Descrição:''' Captura dado de um campo específico da linha corrente no ResultSet 
     215 
     216'''Parâmetros:''' <nenhum> 
     217 
     218'''Retorno''': String com dado solicitado 
     219 
     220'''Exemplo de uso:''' 
     221 
     222{{{ 
     223 
     224$natural->ResultSet->getNextRow(); 
     225 
     226echo $natural->resultSet->getFieldByName("id"); 
     227 
     228}}} 
     229 
     230---- 
     231 
     232=== Exemplo de uso completo === 
     233 
     234{{{ 
     235 
     236/ * 
     237 
     238 * Neste exemplo o formato de arquivo retornado pelo mainframe contém 2 campos de tamanho 5 e 30, respectivamente. 
     239 
     240 * Considera-se também que cada linha tem 200 caracteres 
     241 
     242 */ 
     243 
     244 
     245 
     246$natural = wf_create_object("wf_natural"); 
     247 
     248$natural->configure("SUB_PROG", ""); 
     249 
     250$natural->setDBGatewayProtocol(); 
     251 
     252$natural->execute(); 
     253 
     254 
     255 
     256// Se não contém nenhum erro 
     257 
     258if (!$natural->getRC()) 
     259 
     260    // Captura a string retornada pelo mainframe 
     261 
     262    $result = $natural->getDataParameter(); 
     263 
     264 
     265 
     266    // Configura ResultSet para manipular os dados 
     267 
     268    $natural->configureResultSet(200, array("id" => 5, "nome" => 30) ); 
     269 
     270    // Captura os dados 
     271 
     272    while ($natural->resultSet->getNextRow()){ 
     273 
     274        echo $natural->resultSet->getFieldByName("id"); 
     275 
     276        echo $natural->resultSet->getFieldByName("nome"); 
     277 
     278    } 
     279 
     280} else { 
     281 
     282    $error = $natural->getMSG(); 
     283 
     284} 
     285 
     286}}} 
     287 
     288---- 
     289 
     290'''OBS''': [] identificam os parâmetros opcionais.