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