Criar Programas de Saída de Utilizador com Linguagem de Controle

O exemplo que se segue ilustra como configurar uma linguagem de controle (CL) de programa de saída de utilizador.

/******************************************************************/
/*                                                                */
/* SERVIDORES iSeries - PROGRAMA DE SAÍDA DE UTILIZADOR EXEMPLO   */
/*                                                                */
/* O PROGRAMA DE LINGUAGEM DE CONTROLE QUE SE SEGUE ACEITA        */
/* INCONDICIONALMENTE TODOS OS PEDIDOS. PODE SER USADO COMO       */
/* INTERFACE PARA DESENVOLVIMENTO DE PROGRAMAS DE SAÍDA           */
/* PERSONALIZADOS PARA O SEU AMBIENTE OPERACIONAL                 */
/*                                                                */
/*                                                                */
/******************************************************************/
PGM PARM(&STATUS &REQUEST)
 
/* * * * * * * * * * * * * * * * * * * */
/*                                     */
/* DECL. PARÂMETROS CHAMADA PROGRAMA   */
/*                                     */
/* * * * * * * * * * * * * * * * * * * */
 
DCL VAR(&STATUS) TYPE(*CHAR) LEN(1) /* indicador de aceitação/rejeição */
/* */
/* Nota: O pedido é declarado como *CHAR LEN(2000) porque é esse */
/* o limite em CL. o comprimento real de REQUEST é 4171. */
/* */
DCL VAR(&REQUEST) TYPE(*CHAR) LEN(2000) /* Estrutura de parâmetros */
 
/***********************************/
/*                                 */
/* DECLARAÇÕES DE PARÂMETROS       */
/*                                 */
/***********************************/
 
/* DECLARAÇõES COMUNS */
DCL VAR(&USER) TYPE(*CHAR) LEN(10)
/* ID de utilizador     */
DCL VAR(&APPLIC) TYPE(*CHAR) LEN(10)
/* ID do Servidor   */
DCL VAR(&FUNCTN) TYPE(*CHAR) LEN(10) /* Função que está a ser executada   */
 
 
 /* DECLARAÇõES DE IMPRESSÂO VIRTUAL */
DCL VAR(&VPOBJ)  TYPE(*CHAR) LEN(10)  /* Nome do objecto        */
DCL VAR(&VPLIB)  TYPE(*CHAR) LEN(10)  /* Nome da biblioteca de objectos */
DCL VAR(&VPLEN)  TYPE(*DEC) LEN(5 0)   /* Comprimento dos campos seguintes*/
DCL VAR(&VPOUTQ) TYPE(*CHAR) LEN(10) /* Nome da fila de output     */
DCL VAR(&VPQLIB) TYPE(*CHAR) LEN(10) /* Nome da biblioteca da fila de output */
 
/* DECLARAÇÕES DA FUNÇÃO DE TRANSFERÊNCIA */
 DCL VAR(&TFOBJ) TYPE(*CHAR) LEN(10)   /* Nome do objecto */
 DCL VAR(&TFLIB) TYPE(*CHAR) LEN(10)   /* Nome da biblioteca de objectos */
 DCL VAR(&TFMBR) TYPE(*CHAR) LEN(10)   /* Nome do membro */
 DCL VAR(&TFFMT) TYPE(*CHAR) LEN(10)   /* Nome do formato de registo */
 DCL VAR(&TFLEN) TYPE(*DEC) LEN(5 0)   /* Comprimento do pedido */
 DCL VAR(&TFREQ) TYPE(*CHAR) LEN(1925) /*Instrução do pedido de transferência*/
 
/* DECLARAÇÕES DO SERVIDOR DE FICHEIROS */
DCL VAR(&FSFID) TYPE(*CHAR) LEN(4)   /* Identificador da função */
DCL VAR(&FSFMT) TYPE(*CHAR) LEN(8)   /* Formato do parâmetro  */
DCL VAR(&FSREAD) TYPE(*CHAR) LEN(1)  /* Abrir para leitura    */
DCL VAR(&FSWRITE) TYPE(*CHAR) LEN(1) /* Abrir para escrita    */
DCL VAR(&FSRDWRT) TYPE(*CHAR) LEN(1) /* Abrir para leitura/escrita */
DCL VAR(&FSDLT) TYPE(*CHAR) LEN(1)   /* Abrir para eliminação */
DCL VAR(&FSLEN) TYPE(*CHAR) LEN(4)   /* Comprimento de fname   */
DCL VAR(&FSNAME) TYPE(*CHAR) LEN(2000) /* Nome de ficheiro qualificado */
 
/* DECLARAÇõES DE FILAS DE DADOS */
DCL VAR(&DQQ)    TYPE(*CHAR) LEN(10)  /* Nome da fila de dados */
DCL VAR(&DQLIB)  TYPE(*CHAR) LEN(10)  /* Nome da biblioteca da fila de dados */
DCL VAR(&DQLEN)  TYPE(*DEC)  LEN(5 0) /* Comprimento total do pedido */
DCL VAR(&DQROP)  TYPE(*CHAR) LEN(2)   /* Operador relacional */
DCL VAR(&DQKLEN) TYPE(*DEC)  LEN(5 0) /* Comprimento da chave */
DCL VAR(&DQKEY)  TYPE(*CHAR) LEN(256) /* Valor da chave */
 
/* DECLARAÇÕES DE SQL REMOTA */
DCL VAR(&RSOBJ) TYPE(*CHAR) LEN(10) /* Nome do objecto             */
DCL VAR(&RSLIB) TYPE(*CHAR) LEN(10) /* Nome da biblioteca de objectos*/
DCL VAR(&RSCMT) TYPE(*CHAR) LEN(1) /* Nível do controlo de consolidações */
DCL VAR(&RSMODE) TYPE(*CHAR) LEN(1) /* Indicador do modo de Bloco/Actualização*/
DCL VAR(&RSCID) TYPE(*CHAR) LEN(1) /* ID do cursor            */
DCL VAR(&RSSTN) TYPE(*CHAR) LEN(18) /* Nome da instrução       */
DCL VAR(&RSRSU) TYPE(*CHAR) LEN(4) /* Reservado                */
DCL VAR(&RSREQ) TYPE(*CHAR) LEN(1925)/* Instrução de SQL       */
 
/* DECLARAÇÕES DO SERVIDOR DE IMPRESSÃO NA REDE */
DCL VAR(&NPFMT) TYPE(*CHAR) LEN(8) /* Nome do formato         */
DCL VAR(&NPFID)      TYPE(*CHAR) LEN(4) /* Identificador da função */
/* OS PARÂMETROS SEGUINTES SÃO ADICIONAIS PARA O FORMATO SPLF0l00 */
DCL VAR(&NPJOBN)     TYPE(*CHAR) LEN(10)/* Nome do trabalho      */
DCL VAR(&NPUSRN)     TYPE(*CHAR) LEN(10)/* Nome do utilizador    */
DCL VAR(&NPJOB#)     TYPE(*CHAR) LEN(6) /* Número do trabalho    */
DCL VAR(&NPFILE)     TYPE(*CHAR) LEN(10)/* Nome do ficheiro      */
DCL VAR(&NPFIL#)     TYPE(*CHAR) LEN(4) /* Número do ficheiro    */
DCL VAR(&NPLEN)      TYPE(*CHAR) LEN(4) /* Comprimento dos dados */
DCL VAR(&NPDATA)     TYPE(*CHAR) LEN(2000) /* Dados              */
 
DCL VAR(&DBNUM) TYPE(*CHAR) LEN(4) /* Número de bibliotecas    */
DCL VAR(&DBLIB2) TYPE(*CHAR) LEN(10) /* Nome da biblioteca     */
 
 
/* DECLARAÇÕES DO SERVIDOR DE FILAS DE DADOS */
DCL VAR(&DQFMT)    TYPE(*CHAR) LEN(8)    /* Nome do formato          */
DCL VAR(&DQFID)    TYPE(*CHAR) LEN(4)    /* IDENTIFICADOR da função  */
DCL VAR(&DQOOBJ)   TYPE(*CHAR) LEN(10)   /* Nome do objecto          */
DCL VAR(&DQOLIB)   TYPE(*CHAR) LEN(10)   /* Nome da biblioteca       */
DCL VAR(&DQOROP)   TYPE(*CHAR) LEN(2) /* Operador relacional        */
DCL VAR(&DQOLEN)   TYPE(*CHAR) LEN(4) /* Comprimento da chave       */
DCL VAR(&DQOKEY)   TYPE(*CHAR) LEN(256) /* Chave                    */
 
/* DECLARAÇÕES DO SERVIDOR CENTRAL */
DCL VAR(&CSFMT)    TYPE(*CHAR) LEN(8)   /* Nome do formato          */
DCL VAR(&CSFID)    TYPE(*CHAR) LEN(4) /* Identificador da função    */
/* OS PARÂMETROS SEGUINTES SÃO ADICIONAIS PARA O FORMATO ZSCL0100 */
DCL VAR(&CSCNAM)   TYPE(*CHAR) LEN(255) /* Nome de cliente exclusivo  */
DCL VAR(&CSLUSR)   TYPE(*CHAR) LEN(8)     /* Par. ident. utiliz. licença */
DCL VAR(&CSPID)    TYPE(*CHAR) LEN(7)      /* Identificação do produto */
DCL VAR(&CSFID)    TYPE(*CHAR) LEN(4)      /* identificação da função  */
DCL VAR(&CSRID)    TYPE(*CHAR) LEN(6)      /* Identificação da edição  */
DCL VAR(&CSTYPE)   TYPE(*CHAR) LEN(2) /* Tipo de informação pedida  */
/* OS SEGUINTES PARÂMETROS SÃO ADICIONAIS PARA O FORMATO ZSCS0100  */
DCL VAR(&CSCNAM)   TYPE(*CHAR) LEN(255) /* Nome de cliente exclusivo  */
DCL VAR(&CSCMTY)   TYPE(*CHAR) LEN(255) /* Nome da comunidade       */
DCL VAR(&CSNODE)   TYPE(*CHAR) LEN(1) /* Tipo de nó                 */
DCL VAR(&CSNNAM)   TYPE(*CHAR) LEN(255) /* Nome do nó               */
/* OS SEGUINTES PARÂMETROS SÃO ADICIONAIS PARA O FORMATO ZSCN0100  */
DCL VAR(&CSFROM)   TYPE(*CHAR) LEN(4) /* CCSID origem            */
DCL VAR(&CSTO)     TYPE(*CHAR) LEN(4)   /* CCSID destino            */
DCL VAR(&CSCTYP)   TYPE(*CHAR) LEN(2)     /* Tipo de conversão        */
/* DECLARAÇÕES DO SERVIDOR DE BASES DE DADOS */
DCL VAR(&DBFMT)    TYPE(*CHAR) LEN(8)   /* Nome do formato          */
DCL VAR(&DBFID)    TYPE(*CHAR) LEN(4) /* Identificador da função    */
 
 
/* OS SEGUINTES PARÂMETROS SÃO ADICIONAIS PARA O FORMATO ZDAD0100 */
DCL VAR(&DBFILE)   TYPE(*CHAR) LEN(128)   /* Nome do ficheiro       */
DCL VAR(&DBLIB)    TYPE(*CHAR) LEN(10)    /* Nome da biblioteca      */
DCL VAR(&DBMBR)    TYPE(*CHAR) LEN(10)    /* Nome do membro          */
DCL VAR(&DBAUT)    TYPE(*CHAR) LEN(10)    /* Autoridade para o ficheiro */
DCL VAR(&DBBFIL)   TYPE(*CHAR) LEN(128)   /* Com base no nome de ficheiro*/
DCL VAR(&DBBLIB)   TYPE(*CHAR) LEN(10)   /* Com base no nome da biblioteca */
DCL VAR(&DBOFIL)   TYPE(*CHAR) LEN(10)   /* Substituir nome de ficheiro*/
DCL VAR(&DBOLIB)   TYPE(*CHAR) LEN(10)   /* Substituir nome de biblioteca*/
DCL VAR(&DBOMBR)   TYPE(*CHAR) LEN(10)   /* Substituir nome de membro*/
 
/* OS SEGUINTES PARÂMETROS SÃO ADICIONAIS PARA O FORMATO ZDAD0200 */
 DCL VAR(&DBNUM)   TYPE(*CHAR) LEN(4) /* Número de bibliotecas  */
 DCL VAR(&DBLIB2)  TYPE(*CHAR) LEN(10) /* Nome da biblioteca     */
 
/* OS SEGUINTES PARÂMETROS SÃO ADICIONAIS PARA O FORMATO ZDAQ0100 */
DCL VAR(&DBSTMT) TYPE(*CHAR) LEN(18) /* Nome da instrução      */
DCL VAR(&DBCRSR) TYPE(*CHAR) LEN(18) /* Nome do cursor         */
DCL VAR(&DBOPT)  TYPE(*CHAR) LEN(2) /* Opção de preparação      */
DCL VAR(&DBATTR) TYPE(*CHAR) LEN(2) /* Atributos de abertura    */
DCL VAR(&DBPKG)  TYPE(*CHAR) LEN(10) /* Nome do pacote         */
DCL VAR(&DBPLIB) TYPE(*CHAR) LEN(10) /* Nome da biblioteca de pacotes*/
DCL VAR(&DBDRDA) TYPE(*CHAR) LEN(2) /* Indicador de DRDA       */
DCL VAR(&DBCMT)  TYPE(*CHAR) LEN(1)    /* Nível do controlo de consolidações */
DCL VAR(&DBTEXT) TYPE(*CHAR) LEN(512) /* Primeiros 512 da inst. */
 
 
/* OS SEGUINTES PARÂMETROS SÃO ADICIONAIS PARA O FORMATO ZDAR0100 */
DCL VAR(&DBLIBR) TYPE(*CHAR) LEN(20) /* Nome da biblioteca         */
DCL VAR(&DBRDBN) TYPE(*CHAR) LEN(36) /* Nome da Base de Dados Relacional*/
DCL VAR(&DBPKGR) TYPE(*CHAR) LEN(20) /* Nome do Pacote            */
DCL VAR(&DBFILR) TYPE(*CHAR) LEN(256) /* Nome do ficheiro (nome alt. SQL)*/
DCL VAR(&DBMBRR) TYPE(*CHAR) LEN(20) /* Nome do membro             */
DCL VAR(&DBFFMT) TYPE(*CHAR) LEN(20) /* Nome do formato           */
 
/* OS SEGUINTES PARÂMETROS SÃO ADICIONAIS PARA O FORMATO ZDAR0200  */
DCL VAR(&DBPLIB) TYPE(*CHAR) LEN(10) /* Bib da tabela de chaves principais  */
DCL VAR(&DBPTBL) TYPE(*CHAR) LEN(128) /* Tabela de chaves principais */
DCL VAR(&DBFLIB) TYPE(*CHAR) LEN(10) /* Bib da tabela de chaves externas */
DCL VAR(&DBFTBL) TYPE(*CHAR) LEN(128) /* Tabela de chaves externas */
 
/* DECLARAÇÕES DO SERVIDOR DE COMANDOS REMOTOS */
DCL VAR(&RCFMT) TYPE(*CHAR) LEN(8) /* Nome do formato             */
DCL VAR(&RCFID) TYPE(*CHAR) LEN(4) /* Identificador da função     */
DCL VAR(&RCPGM) TYPE(*CHAR) LEN(10) /* Nome do programa            */
DCL VAR(&RCLIB) TYPE(*CHAR) LEN(10) /* Nome da biblioteca de programas */
DCL VAR(&RCNUM) TYPE(*CHAR) LEN(4) /* Número de parms ou cmdlen */
DCL VAR(&RCDATA) TYPE(*CHAR) LEN(6000)/* Cadeia de comandos nem parms */
 
/* DECLARAÇõES DO SERVIDOR DE INÍCIO DE SESSÃO */
 
DCL VAR(&SOFMT) TYPE(*CHAR) LEN(8) /* Nome do formato               */
DCL VAR(&SOFID) TYPE(*CHAR) LEN(4) /* Identificador da função     */
 
 
/***********************************/
/*                                 */
/* OUTRAS DECLARAÇÕES              */
/*                                 */
/***********************************/
 DCL VAR(&WRKLEN) TYPE(*CHAR) LEN(5)
 DCL VAR(&DECLEN) TYPE(*DEC) LEN(8 0)
 
/* * * * * * * * * * * * * * * * * * * * * * * */
/*                                             */
/* EXTRAIR OS VÁRIOS PARÂMETROS DA ESTRUTURA   */
/*                                             */
/* * * * * * * * * * * * * * * * * * * * * * * */
 
/* CABEÇALHO */
CHGVAR VAR(&USER)   VALUE(%SST(&REQUEST 1 10))
   CHGVAR VAR(&APPLIC) VALUE(%SST(&REQUEST 11 10))
   CHGVAR VAR(&FUNCTN) VALUE(%SST(&REQUEST 21 10))
 
/* IMPRESSORA VIRTUAL */
   CHGVAR VAR(&VPOBJ)  VALUE(%SST(&REQUEST 31 10))
   CHGVAR VAR(&VPLIB)  VALUE(%SST(&REQUEST 41 10))
   CHGVAR VAR(&WRKLEN) VALUE(%SST(&REQUEST 71 5))
   CHGVAR VAR(&VPLEN)  VALUE(%BINARY(&WRKLEN 1 4))
   CHGVAR VAR(&VPOUTQ) VALUE(%SST(&REQUEST 76 10))
   CHGVAR VAR(&VPQLIB) VALUE(%SST(&REQUEST 86 10))
 
 
/* FUNÇÃO DE TRANSFERÊNCIA */
   CHGVAR VAR(&TFOBJ)  VALUE(%SST(&REQUEST 31 10))
   CHGVAR VAR(&TFLIB)  VALUE(%SST(&REQUEST 41 10))
   CHGVAR VAR(&TFMBR)  VALUE(%SST(&REQUEST 51 10))
   CHGVAR VAR(&TFFMT)  VALUE(%SST(&REQUEST 61 10))
   CHGVAR VAR(&WRKLEN) VALUE(%SST(&REQUEST 71 5))
   CHGVAR VAR(&TFLEN)  VALUE(%BINARY(&WRKLEN 1 4))
   CHGVAR VAR(&TFREQ)  VALUE(%SST(&REQUEST 76 1925))
 
/* SERVIDOR DE FICHEIROS */
   CHGVAR VAR(&FSFID)      VALUE(%SST(&REQUEST   21   4))
   CHGVAR VAR(&FSFMT)      VALUE(%SST(&REQUEST   25   8))
   CHGVAR VAR(&FSREAD)     VALUE(%SST(&REQUEST   33   1))
   CHGVAR VAR(&FSWRITE)   VALUE(%SST(&REQUEST   34   1))
   CHGVAR VAR(&FSRDWRT)   VALUE(%SST(&REQUEST   35   1))
   CHGVAR VAR(&FSDLT)      VALUE(%SST(&REQUEST   36   1))
   CHGVAR VAR(&FSLEN)      VALUE(%SST(&REQUEST   37   4))
   CHGVAR VAR(&DECLEN)     VALUE(%BINARY(&FSLEN 1 4))
   CHGVAR VAR(&FSNAME)     VALUE(%SST(&REQUEST   41   &DECLEN))
 
 
/* FILAS DE DADOS */
   CHGVAR VAR(&DQQ)        VALUE(%SST(&REQUEST 31 10))
   CHGVAR VAR(&DQLIB)      VALUE(%SST(&REQUEST 41 10))
   CHGVAR VAR(&WRKLEN)     VALUE(%SST(&REQUEST 71  5))
   CHGVAR VAR(&DQLEN)      VALUE(%BINARY(&WRKLEN 1 4))
   CHGVAR VAR(&DQROP)      VALUE(%SST(&REQUEST 76  2))
   CHGVAR VAR(&WRKLEN)     VALUE(%SST(&REQUEST 78  5))
   CHGVAR VAR(&DQKLEN)     VALUE(&WRKLEN)
   CHGVAR VAR(&DQKEY)      VALUE(%SST(&REQUEST 83 &DQKLEN))
 
 
 /* SQL REMOTA */
   CHGVAR VAR(&RSOBJ)    VALUE(%SST(&REQUEST 31 10))
   CHGVAR VAR(&RSLIB)    VALUE(%SST(&REQUEST 41 10))
   CHGVAR VAR(&RSCMT)    VALUE(%SST(&REQUEST 51 1))
   CHGVAR VAR(&RSMODE)   VALUE(%SST(&REQUEST 52 1))
   CHGVAR VAR(&RSCID)    VALUE(%SST(&REQUEST 53 1))
   CHGVAR VAR(&RSSTN)    VALUE(%SST(&REQUEST 54 18))
   CHGVAR VAR(&RSRSU)    VALUE(%SST(&REQUEST 72 4))
   CHGVAR VAR(&RSREQ)    VALUE(%SST(&REQUEST 76 1925))
 
/* SERVIDOR DE IMPRESSÂO NA REDE */
   CHGVAR VAR(&NPFMT)    VALUE(%SST(&REQUEST 21 8))
   CHGVAR VAR(&NPFID)    VALUE(%SST(&REQUEST 29 4))
 
/* SE O FORMATO FOR SPLF0100 */
IF  COND(&NPFMT *EQ 'SPLF0100') THEN(DO)
   CHGVAR VAR(&NPJOBN)   VALUE(%SST(&REQUEST 33 10))
   CHGVAR VAR(&NPUSRN)   VALUE(%SST(&REQUEST 43 10))
   CHGVAR VAR(&NPJOB#)   VALUE(%SST(&REQUEST 53 6))
   CHGVAR VAR(&NPFILE)   VALUE(%SST(&REQUEST 59 10))
   CHGVAR VAR(&NPFIL#)   VALUE(%SST(&REQUEST 69 4))
   CHGVAR VAR(&NPLEN)    VALUE(%SST(&REQUEST 73 4))
   CHGVAR VAR(&DECLEN)   VALUE(%BINARY(&NPLEN 1 4))
   CHGVAR VAR(&NPDATA)   VALUE(%SST(&REQUEST 77 &DECLEN))
ENDDO
 
 
/* SERVIDOR DE FILAS DE DADOS */
   CHGVAR VAR(&DQFMT)  VALUE(%SST(&REQUEST 21 8))
   CHGVAR VAR(&DQFID)  VALUE(%SST(&REQUEST 29 4))
   CHGVAR VAR(&DQOOBJ) VALUE(%SST(&REQUEST 33 10))
   CHGVAR VAR(&DQOLIB) VALUE(%SST(&REQUEST 43 10))
   CHGVAR VAR(&DQOROP) VALUE(%SST(&REQUEST 53 2))
   CHGVAR VAR(&DQOLEN) VALUE(%SST(&REQUEST 55 4))
   CHGVAR VAR(&DQOKEY) VALUE(%SST(&REQUEST 59 256))
 
/* SERVIDOR CENTRAL */
   CHGVAR VAR(&CSFMT) VALUE(%SST(&REQUEST 21 8))
   CHGVAR VAR(&CSFID) VALUE(%SST(&REQUEST 29 4))
 
/* SE O FORMATO FOR ZSCL0100 */
IF COND(&CSFMT *EQ 'ZSCL0100') THEN(DO)
   CHGVAR VAR(&CSCNAM) VALUE(%SST(&REQUEST 33 255))
   CHGVAR VAR(&CSLUSR)  VALUE(%SST(&REQUEST 288 8))
   CHGVAR VAR(&CSPID)   VALUE(%SST(&REQUEST 296 7))
   CHGVAR VAR(&CSFID)   VALUE(%SST(&REQUEST 303 4))
   CHGVAR VAR(&CSRID)   VALUE(%SST(&REQUEST 307 6))
   CHGVAR VAR(&CSTYPE)  VALUE(%SST(&REQUEST 313 2))
ENDDO
 
 
/* SE O FORMATO FOR ZSCS0100 */
IF COND(&CSFMT *EQ 'ZSCS0100') THEN(DO)
  CHGVAR VAR(&CSCNAM) VALUE(%SST(&REQUEST 33 255))
  CHGVAR VAR(&CSCMTY) VALUE(%SST(&REQUEST 288 255))
  CHGVAR VAR(&CSNODE) VALUE(%SST(&REQUEST 543 1))
  CHGVAR VAR(&CSNNAM) VALUE(%SST(&REQUEST 544 255))
  ENDDO
 
 
/* SE O FORMATO FOR ZSCN0100 */
IF COND(&CSFMT *EQ 'ZSCN0100') THEN(DO)
  CHGVAR VAR(&CSFROM) VALUE(%SST(&REQUEST 33 4))
  CHGVAR VAR(&CSTO)   VALUE(%SST(&REQUEST 37 4))
  CHGVAR VAR(&CSCTYP) VALUE(%SST(&REQUEST 41 2))
  ENDDO
 
/* SERVIDOR DE BASES DE DADOS */
   CHGVAR VAR(&DBFMT)    VALUE(%SST(&REQUEST 21 8))
   CHGVAR VAR(&DBFID)    VALUE(%SST(&REQUEST 29 4))
/* SE O FORMATO FOR ZDAD0100 */
IF COND(&CSFMT *EQ 'ZDAD0100') THEN(DO)
   CHGVAR VAR(&DBFILE)   VALUE(%SST(&REQUEST 33 128))
   CHGVAR VAR(&DBLIB)    VALUE(%SST(&REQUEST 161 10))
   CHGVAR VAR(&DBMBR)    VALUE(%SST(&REQUEST 171 10))
   CHGVAR VAR(&DBAUT)    VALUE(%SST(&REQUEST 181 10))
   CHGVAR VAR(&DBBFIL)   VALUE(%SST(&REQUEST 191 128))
   CHGVAR VAR(&DBBLIB)   VALUE(%SST(&REQUEST 319 10))
   CHGVAR VAR(&DBOFIL)   VALUE(%SST(&REQUEST 329 10))
   CHGVAR VAR(&DBOLIB)   VALUE(%SST(&REQUEST 339 10))
   CHGVAR VAR(&DBOMBR)   VALUE(%SST(&REQUEST 349 10))
ENDDO
 
 
/* SE O FORMATO FOR ZDAD0200 */
IF COND(&CSFMT *EQ 'ZDAD0200') THEN(DO)
  CHGVAR VAR(&DBNUM) VALUE(%SST(&REQUEST 33 4))
  CHGVAR VAR(&DBLIB2) VALUE(%SST(&REQUEST 37 10))
  ENDDO
 
/* SE O FORMATO FOR ZDAQ0100 */
IF COND(&CSFMT *EQ 'ZDAQ0100') THEN DO
   CHGVAR VAR(&DBSTMT)     VALUE(%SST(&REQUEST 33  18))
   CHGVAR VAR(&DBCRSR)     VALUE(%SST(&REQUEST 51  18))
   CHGVAR VAR(&DBSOPT)     VALUE(%SST(&REQUEST 69  2))
   CHGVAR VAR(&DBATTR)     VALUE(%SST(&REQUEST 71  2))
   CHGVAR VAR(&DBPKG)     VALUE(%SST(&REQUEST 73  10))
   CHGVAR VAR(&DBPLIB)     VALUE(%SST(&REQUEST 83  10))
   CHGVAR VAR(&DBDRDA)     VALUE(%SST(&REQUEST 93  2))
   CHGVAR VAR(&DBCMT)     VALUE(%SST(&REQUEST 95  1))
   CHGVAR VAR(&DBTEXT)     VALUE(%SST(&REQUEST 96  512))
ENDDO
 
 
/* SE O FORMATO FOR ZDAR0100 */
IF COND(&CSFMT *EQ 'ZDAR0100') THEN DO   
   CHGVAR VAR(&DBLIBR)     VALUE(%SST(&REQUEST 33  20))    
   CHGVAR VAR(&DBRDBN)     VALUE(%SST(&REQUEST 53  36))
   CHGVAR VAR(&DBPKGR)     VALUE(%SST(&REQUEST 69  2))
   CHGVAR VAR(&DBATTR)     VALUE(%SST(&REQUEST 89  20))
   CHGVAR VAR(&DBFULR)     VALUE(%SST(&REQUEST 109  256))
   CHGVAR VAR(&DBMBRR)     VALUE(%SST(&REQUEST 365  20))
   CHGVAR VAR(&DBFFMT)     VALUE(%SST(&REQUEST 385  20))
ENDDO
 
 
/* OS SEGUINTES PARÂMETROS SÃO ADICIONAIS PARA O FORMATO ZDAR0200 */
/* SE O FORMATO FOR ZDAR0200 */
IF COND(&CSFMT *EQ 'ZDAR0200') THEN DO   
   CHGVAR VAR(&DBPLIB)     VALUE(%SST(&REQUEST 33  10))    
   CHGVAR VAR(&DBPTBL)     VALUE(%SST(&REQUEST 43  128))
   CHGVAR VAR(&DBFLIB)     VALUE(%SST(&REQUEST 171  10))
   CHGVAR VAR(&DBFTBL)     VALUE(%SST(&REQUEST 181  128))
ENDDO
 
 
/* SERVIDOR DE COMANDOS REMOTOS */
   CHGVAR VAR(&RCFMT)     VALUE(%SST(&REQUEST 21  8))    
   CHGVAR VAR(&RCFID)     VALUE(%SST(&REQUEST 29  4))
   CHGVAR VAR(&RCPGM)     VALUE(%SST(&REQUEST 33  10))
   CHGVAR VAR(&RCLIB)     VALUE(%SST(&REQUEST 43  10))
   CHGVAR VAR(&RCNUM)     VALUE(%SST(&REQUEST 33  10))    
   CHGVAR VAR(&RCDATA)     VALUE(%SST(&REQUEST 57  6000))
 
/* DECLARAÇÕES DO SERVIDOR DE INÍCIO DE SESSÃO */
   CHGVAR VAR(&SOFNT)     VALUE(%SST(&REQUEST 21  8))    
   CHGVAR VAR(&SOFID)     VALUE(%SST(&REQUEST 29 4))
 
 
/***********************************/
/*                                 */
/* INICIAR PROGRAMA PRINCIPAL      */
/*                                 */
 
 
 CHGVAR VAR(&STATUS) VALUE('1') /* INICIALIZAR VALOR DE +
                           RETORNO PARA ACEITAR O PEDIDO */
 
 /* ADICIONAR LÓGICA COMUM A TODOS OS SERVIDORES */
 
 /* PROCESSO BASEADO NO ID DO SERVIDOR */
 IF COND(&APPLIC *EQ '*VPRT') THEN(GOTO CMDLBL(VPRT))   /* SE IMP. VIRTUAL*/
 IF COND(&APPLIC *EQ '*TFRFCL') THEN(GOTO CMDLBL(TFR))  /* SE FUNÇÃo TRANSFER.*/
 IF COND(&APPLIC *EQ '*FILESRV') THEN(GOTO CMDLBL(FLR)) /* SE SERV. FICHS. */
 IF COND(&APPLIC *EQ '*MSGFCL') THEN(GOTO CMDLBL(MSG))  /* SE FUNÇÃO MSGS. */
 IF COND(&APPLIC *EQ '*DQSRV') THEN(GOTO CMDLBL(DATAQ)) /* SE FILAS DADOS */
 IF COND(&APPLIC *EQ '*RQSRV') THEN(GOTO CMDLBL(RSQL))  /* SE SQL REMOTA */
 IF COND(&APPLIC *EQ '*SQL') THEN(GOTO CMDLBL(SQLINIT)) /* SE SQL */
 IF COND(&APPLIC *EQ '*NDB') THEN(GOTO CMDLBL(NDB))     /* SE BASE DADOS NAT.*/
 IF COND(&APPLIC *EQ '*SQLSRV') THEN(GOTO CMDLBL(SQLSRV)) /* SE SQL */
 IF COND(&APPLIC *EQ '*RTVOBJINF') THEN(GOTO CMDLBL(RTVOBJ)) /* SE OB OBTENÇÃO*/
 IF COND(&APPLIC *EQ '*DATAQSRV') THEN(GOTO CMDLBL(ODATAQ))  /* SE D*/
 IF COND(&APPLIC *EQ '*QNPSERVR') THEN(GOTO CMDLBL(NETPRT))  /* SE IMPR. REDE*/
 IF COND(&APPLIC *EQ '*CNTRLSRV') THEN(GOTO CMDLBL(CENTRAL)) /* SE SER. CENTRAL*/
 IF COND(&APPLIC *EQ '*RMTSRV') THEN(GOTO CMDLBL(RMTCMD))    /* SE CMDRMT/CPD */
 IF COND(&APPLIC *EQ '*SIGNON') THEN(GOTO CMDLBL(SIGNON))  /* SE INÍCIO SESS */
 
 GOTO EXIT
 
/* * * * * * * * * * * * * * * * * * * * * * */
/* SUBROTINAS                                */
/*                                           */
/* * * * * * * * * * * * * * * * * * * * * * */
 
/* IMPRESSORA VIRTUAL */
 VPRT:
 
   /* LÓGICA ESPECÍFICA INDICADA AQUI*/
 
   GOTO EXIT
/* FUNÇÃO TRANSFERÊNCIA */
 TFR:
 
   /* LÓGICA ESPECÍFICA INDICADA AQUI*/
 
   GOTO EXIT
 
/* SERVIDORES DE FICHEIROS */
  FLR:
 
   /* LÓGICA ESPECÍFICA INDICADA AQUI*/
 
   GOTO EXIT
/* FUNÇÃO DE MENSAGENS */
  MSG:
 
   /* LÓGICA ESPECÍFICA INDICADA AQUI*/
 
   GOTO EXIT
/* FILAS DE DADOS */
  FILADADOS:
 
   /* LÓGICA ESPECÍFICA INDICADA AQUI*/
 
   GOTO EXIT
/* SQL REMOTA */
  SQLR:
 
   /* LÓGICA ESPECÍFICA INDICADA AQUI*/
 
   GOTO EXIT
/* INIC BASE DADOS */
  INICSQL:
 
   /* LÓGICA ESPECÍFICA INDICADA AQUI*/
 
   GOTO EXIT
 
/* BASE DE DADOS NATIVA */
       BDN:
 
   /* LÓGICA ESPECÍFICA INDICADA AQUI*/
 
   GOTO EXIT
/* SQL DA BASE DE DADOS*/
  SRVSQL:
 
   /* LÓGICA ESPECÍFICA INDICADA AQUI*/
 
   GOTO EXIT
 
/* OBTER INFORMAÇÕES SOBRE OBJECTOS */
  OBTOBJ:
 
   /* LÓGICA ESPECÍFICA INDICADA AQUI*/
 
   GOTO EXIT
 
/* SERVIDOR DE FILAS DE DADOS */
  FILASDADOSO:
 
   /* LÓGICA ESPECÍFICA INDICADA AQUI*/
 
   GOTO EXIT
/* SERVIDOR DE IMPRESSÃO NA REDE */
  IMPREDE:
 
   /* LÓGICA ESPECÍFICA INDICADA AQUI*/
 
   GOTO EXIT
 /* SERVIDOR CENTRAL */
  CENTRAL:
 
   /* LÓGICA ESPECÍFICA INDICADA AQUI*/
 
   GOTO EXIT
 /* COMANDOS REMOTOS/CHAMADA DE PROGRAMA DISTRIBUÍDA */
  CMDRMT:
 
 /* NESTE CASO, SE UM UTILIZADOR TENTAR EXECUTAR UM COMANDO REMOTO/CHA- */
 /* MADA DE PROGRAMA DISTRIBUÍDA E TIVER UM IDE DE UTILIZADOR userid,   */
 /* NÃO LHE SERÁ PERMITIDO CONTINUAR.                                   */
 IF COND(&USER *EQ 'userid') THEN(CHGVAR VAR(&STATUS) VALUE('0'))
 
      GOTO EXIT
 /* SERVIDOR DE INÍCIO DE SESSÃO */
  INISESS:
 
  /* LÓGICA ESPECÍFICA INDICADA AQUI*/
 
  GOTO EXIT
 
 EXIT:
ENDPGM
Crie um site gratuito Webnode