Você está na página 1de 17

Diretoria IT

050. Plataforma Mainframe 010. Desenvolvimento 004. ADABAS 002 Sistema de Restart ADABAS IT Development Support & Da Aurlio Guerreiro IT Data Center Infrastructure Juarez Almeida Marco Antonio Ugolini Mugnol Publicao: 25/04/2002 Reviso: 25/04/2003 Mandatria Recomendada Aconselhvel Sim No Prazo Adequao Legado:

Classificao Ttulo Gestor Elaborado por Datas Tipo Impacta Legado ndice
1. 1.1 1.2 2. 2.1. 2.2. 2.3. 2.4. 2.5. 2.6. 2.7. 2.8. 2.9. 2.10. 2.11. 2.12. 3.

Introduo Objetivo reas Envolvidas / Responsabilidades Detalhamento Aplicao / Limitaes Elementos Cadastramento do Programa / Criao do Etdata Programao Instrues Iniciais Macros ADABAS Macros do Restart Programa Exemplo Com Restart e Macros Adabas Programa Exemplo Com Restart E Adasql Execuo (Jcl's, Instrues Especias) Implantao em Produo (em Bancos de Dados de Qualquer Cpd) Abend's e Mensagens

Assinaturas

1 1 1 1 1 2 2 3 3 4 4 6 8 9 10 11 17

1. Introduo
1.1. Objetivo Restart automtico dos programas que utilizam ADABAS, acessando e/ou atualizando arquivos sequenciais. O sistema garante o sincronismo das atualizaes do Banco de Dados com a gravao dos arquivos sequenciais, efetuando o reposicionamento dos arquivos de entrada e sada em caso de trmino anormal.

1.2.

reas Envolvidas / Responsabilidades reas - IT DBA Project Brazil - IT Development Support & DA - IT (Analistas e Desenvolvedores)

Responsabilidades - Criar a norma - Divulgar a norma - Utilizao da norma

2. Detalhamento
2.1. Aplicao / Limitaes Aplicvel a programas PL/I BATCH que ATUALIZEM Banco de Dados e utilizem ENDTRANSACTION (macro ENDTRA) ou COMMIT WORK USERDATA e, simultaneamente, utilizem arquivos sequenciais. Os arquivos sequenciais para o sistema podem ser definidos com os seguintes formatos de registro (RECFM) : F, FB, V e VB.

O dsname deve possuir no mximo 44 posies, XX.ENTRA.G0001V00 ou XX@.ENTR.G0002V00.

incluindo

gerao

verso.

Ex:

O nmero mximo de arquivos sequenciais permitido 50. O tamanho mximo do etdata ("rea de restart" + "rea do usurio") para programas utilizando Macros Adabas 1800 bytes e para programas utilizando ADASQL 2000 bytes. O Sistema de Restart s reposiciona os arquivos sequenciais. O reposicionamento do Banco de Dados responsabilidade do programa PL/I. O PROGRAMA NO PODE ATUALIZAR ARQUIVO DE OUTRA APLICAO (OUTRO BANCO DE DADOS), POIS O ET GRAVA NESSE OUTRO BANCO DE DADOS OS DADOS DE RESTART. Quando vrios jobs executam o mesmo programa com Restart, cada job deve rodar com um USERID diferente, que deve ser cadastrado no sistema online. Esse USERID deve ser recebido como parmetro pelo programa com Restart. Nesse caso, o nome do programa (informado com NOMEPGM ou NM_PROG) ficar diferente do userid de Restart (informado por USERID e EXEC ADABAS CONNECT 'userid'). proibido a confeco de programas novos em NATURAL BATCH. 2.2.

2.2.1.

Elementos O sistema de "Restart" Composto dos Seguintes Elementos Arquivo "DBRESTART" (file 210) o Cadastro dos programas com "Restart". Registro "ETDATA" Este registro contem informaes sobre o nmero de registros processados, bem como a chave do ltimo registro de cada arquivo seqencial. Este registro est no arquivo "CHECKPOINT" do ADABAS, sendo lido pela macro ABRIR e atualizado atravs das macros ENDTRA e FECHAR. Para fazer o cadastramento dos programas que usam RESTART, a manuteno e pesquisa do registro de controle (ETDATA) e o guarda necessrio entrar no ZADB na opo 216.19. Programa "PSRESAD" Rotina Assembler existente na CP.LOD06, cuja finalidade principal, alm do RESTART, a execuo das operaes de entrada e sada (OPEN, READ, etc.), dos arquivos sequenciais. Macros: ADRESTAR So macros em PL/I existentes na CP.MAC01 p/ a programao das chamadas para a rotina Assembler (PSRESAD). Cadastramento do Programa / Criao do Etdata Todo o programa a utilizar do Restart deve ser cadastrado e possuir o ETDATA. As Informaes para o Cadastramento so as Seguintes PGMNAME Nome do programa. Deve ser utilizado na macro USERID do ADABAS. DDNAME Nome do DD. Deve ser utilizado no JCL e nas macros do RESTART. TYPE Se arquivo de entrada ou sada (E ou S). KEYPOS Posio da chave para o Restart. Indica a posio de um campo do registro a ser utilizado pelo Restart para verificar o reposicionamento do arquivo. KEYLEN Tamanho da chave para o Restart. O tamanho mximo desta chave 20 bytes. RECFM Opcional. Formato do registro. S aceita os formatos: F, FB, V e VB.

2.2.2.

2.2.3.

2.2.4.

2.2.5.
2.3.

2.3.1. 2.3.2.

LRECL Opcional. Tamanho do registro. Para arquivo VB no informar os 4 bytes de tamanho BLKSIZE Opcional. Tamanho do bloco. Os parmetros RECFM, LRECL e BLKSIZE so opcionais, pois podem ser informados tambm no JCL.

2.3.3. 2.3.4.
2.4.

Essa solicitao deve ser feita pelo analista da aplicao, pela opo 216.19, no ZCDB. Aps esta etapa pode ser feita a PESQUISA do Cadastro e/ou ETDATA em qualquer ambiente pela opo 216.19 do ZADB. Programao Neste item so apresentadas todas as regras para a programao com o Restart. IMPORTANTE observar que o sistema efetua o reposicionamento e o acesso dos arquivos sequenciais, mas o comando destas operaes de RESPONSABILIDADE do programador, que as solicitar atravs da codificao das macros do Restart. NECESSRIO que todas as macros utilizadas (#OPEN,#READ,#ENDWRITE,etc) estejam fisicamente em ordem pois existe a possibilidade das macros gerarem resultados imprevistos devido ao posicionamento incorreto, portanto, a ordem deve ser obedecida conforme apresentado nos exemplos existentes neste manual. O Sistema de Restart s reposiciona os arquivos sequenciais. O reposicionamento do Banco de Dados responsabilidade do programa PL/I. Segue um resumo das macros do Restart: Open dos arquivos. #OPEN #FILE(ddname) .... #FILE(ddname); Close dos arquivos. #CLOSE #FILE(ddname) ... #FILE(ddname); Informa o "label" para desvio ao ser encontrado o fim de arquivo. #ENDFILE(ddname) #GOTO(label); Leitura dos arquivos. #READ #FILE(ddname) #INTO(rea); #READ #FILE(ddname) #SET(pointer); Gravao dos arquivos. #WRITE #FILE(ddname) #FROM(rea); Efetiva a gravao de todos os arquivos de sada. #ENDWRITE; Reposiciona todos os arquivos cadastrados. #RESTART Instrues Iniciais Arquivos sequenciais Os arquivos sequenciais cadastrados para o Restart NO DEVEM SER DECLARADOS NO PROGRAMA. A DCB destes arquivos so alocadas e montadas pela rotina. Registro de ETDATA Este registro contem as informaes mais IMPORTANTES para o sistema pois atravs destas que efetuado o reposicionamento dos arquivos. O contedo deste registro de inteira RESPONSABILIDADE do programa, pois o Restart no altera estes dados. Estes dados devem ser alterados no programa antes das macros ENDTRA e FECHAR do ADABAS, que regravam este registro. O reposicionamento do arquivo efetuado atravs do contador de registros e, aprovado pelo Restart somente se conferir a chave do ltimo registro. O registro de controle (ETDATA) deve ser codificado com o seguinte lay-out:

2.4.1. 2.4.2.

2.4.3.

2.4.4. 2.4.5.

2.5. 2.5.1.

2.5.2.

2.5.2.1. 2.5.2.2. 2.5.2.3. 2.5.2.4.

1 AREA_ETDATA CHAR(...),

1 AREA_ETDATA_R DEF AREA_ETDATA, 2 AREA_RESTART, 3 INDICADOR_TRMINO CHAR(1), 3 QUANTIDADE_ARQUIVOS BIN FIXED(15), 3 ARQUIVOS (nn), 4 DDNAME CHAR(8), 4 CONTADOR_REGISTROS BIN FIXED(31), 4 CHAVE_LTIMO_REGISTRO CHAR(20), 2 AREA_USUARIO CHAR (16).
2.5.2.5. 2.5.2.6. Obviamente estas variveis podem ter outros nomes, desde que se conservem suas caractersticas. A descrio do lay-out a seguinte: INDICADOR_TRMINO - Indica o trmino do programa. Utilizado pelo programa para chamar ou no o Restart. Ex: Pode conter um 'X' para indicar trmino anormal. QUANTIDADE_ARQUIVOS Indica o nmero de arquivos para o Restart. ARQUIVOS(nn) Dados referentes a cada arquivo. 'nn' deve ser substitudo pela quantidade de arquivos. ATENO: Os arquivos devem estar na mesma ordem do cadastramento do restart e do jcl. DDNAME Nome do DD, normalmente j vem preenchido no ETDATA. CONTADOR_REGISTROS Total de registros processados at o ENDTRA (pode ser o total final, se gravado pelo FECHAR). CHAVE_LTIMO_REGISTRO Chave do ltimo registro processado at o ENDTRA (pode ser a chave do ltimo registro se gravado pelo FECHAR). Deve ser sempre declarada como char (20) independente do tamanho definido no cadastro do Restart. AREA_USER rea opcional livre para o programa. No considerado pelo Restart. Pode ser usada para guardar a chave para reposicionamento do Banco de Dados. Macros ADABAS Necessidades com referncia s macros do ADABAS: Macro USERID obrigatria a declarao desta macro UMA NICA VEZ no programa. O nome do programa deve ser o MESMO cadastrado. Ex: USERID('pgmname ); ou USERID (varivel); Macro ABRIR Deve ser codificada com a opo para ler o ETDATA. A execuo da macro ABRIR deve preceder a execuo de todas as macros do Restart. Ex: ABRIR ETDATA(area_etdata); Macro ENDTRA Deve ser codificada para gravar o ETDATA. Ex: ENDTRA(area_etdata); Macro FECHAR Tambm deve ser codificada para gravar o ETDATA. Ex: FECHAR(area_etdata); Macros do Restart Para a utilizao destas macros, codificar aps a instruo %INCLUDE MAC01(ADABAS), o seguinte comando PL/I: %INCLUDE MAC01(ADRESTAR); Macro: #OPEN

2.6.

2.7.

2.7.1.

Sintaxe: #OPEN #FILE(ddname)..........#FILE(ddname); Efetua o OPEN dos Arquivos Cadastrados Note que como os arquivos j foram cadastrados, no se deve informar se INPUT ou OUTPUT. No deve ser executada antes da macro #RESTART em uma situao de trmino anormal pois, caso contrrio, o arquivo no reposicionado, causando assim duplicidade em parte do processamento. Internamente, alm do OPEN dos arquivos, esta macro atualiza p/ cada arquivo, as informaes de STATUS e DSNAME do Cadastro (DBRESTART) que um arquivo em ADABAS. O importante deste fato que a macro #OPEN INICIA UMA TRANSAO LGICA, devendo ser considerado pelo programador para codificar a macro ENDTRA do ADABAS (inicia a contagem do transaction time OBS: RSP-CODE = 9). Se esta macro for uma opo da instruo condicional IF, o #OPEN deve ser codificado entre um DO e um END. Ex: IF A > B THEN DO; #OPEN #FILE(ddname)......#FILE(ddname); END; 2.7.2. Macro: #CLOSE Sintaxe: #CLOSE #FILE(ddname).........#FILE(ddname); Efetua o CLOSE dos arquivos cadastrados, executando antes a gravao fsica do ltimo bloco do arquivo, se houver; Internamente, como na macro #OPEN, esta macro tambm atualiza o Banco de Dados, mais especificamente o campo STATUS do Cadastro (DBRESTART); Portanto, a macro #CLOSE INICIA UMA TRANSAO LGICA, devendo tambm ser considerada pelo programador para a codificao da macro ENDTRA do ADABAS (inicia a contagem do transaction time OBS: RSP-CODE = 9); Se esta macro for uma opo da instruo condicional IF, o #CLOSE deve ser codificado entre um DO e um END. Ex: IF A > B THEN DO; #CLOSE #FILE(ddname)......#FILE(ddname); END. Macro: #ENDFILE Sintaxe: #ENDFILE(ddname) #GOTO(label); Informa o label para o qual a macro #READ dever desviar ao encontrar o fim de arquivo; O tamanho mximo para o label 16 caracteres; Deve ser codificada uma vez para cada arquivo de entrada e, antes da sua leitura (macro #READ). Macro: #READ Sintaxe: #READ #FILE(ddname) #INTO(rea); ou #READ #FILE(ddname) #SET(pointer); Efetua a leitura do arquivo, podendo ser nas duas formas acima. Obtendo o registro em uma rea declarada no programa, ou obtendo o endereo do registro em uma varivel pointer do PL/I; A codificao da #ENDFILE obrigatria antes desta macro; Para arquivos com registros de formato varivel, basta utilizar uma varivel PL/I do tipo CHAR VAR, pois a rotina devolve o registro precedido do tamanho (exclusive length) em dois bytes binrios. Macro: #WRITE Sintaxe: #WRITE #FILE(ddname) #FROM(rea); Efetua a gravao no arquivo; Para arquivos com registros de formato varivel, utilizar uma varivel PL/I do tipo CHAR VAR, pois a rotina est preparada para receber o registro precedido do tamanho (exclusive length) em 2 bytes binrios; Macro: #ENDWRITE

2.7.3.

2.7.4.

2.7.5.

2.7.6.

2.7.7.

Sintaxe: #ENDWRITE; Efetiva a gravao de todos os arquivos de sada. Isto , fora fisicamente a gravao dos buffer's dos arquivos de sada; Esta macro deve ser codificada sempre antes da macro ENDTRA do ADABAS.

Macro: #RESTART Sintaxe: #RESTART; Efetua o reposicionamento dos arquivos de entrada e sada; Deve ser a primeira macro (do Restart) executada pelo programa se for verificada a situao de trmino anormal do processamento anterior; Deve ser precedida pelas macros USERID e ABRIR do ADABAS; Internamente, alm do reposicionamento dos arquivos, a macro atualiza a informao de DSNAME do Cadastro e j emite um END-TRANSACTION. Programa Exemplo Com Restart e Macros Adabas No permitido a confeco de programas novos utilizando Macros Adabas Programa: ADPGM001 Ddname type ENTRADA1 E ENTRADA2 E SADA1 S SADA2 S keypos 1 2 1 2 keylen 20 15 20 15 recfm VB FB VB FB lrecl blksize

2.8.

ADPGM001: PROC(PARM) OPTIONS(MAIN); %INCLUDE MAC01(ADABAS); %INCLUDE MAC01(ADRESTAR); DCL PARM CHAR(20) VAR, FIMARQ1 CHAR(01) INIT (' '), FIMARQ2 CHAR(01) INIT (' '), COUNTX BIN FIXED (15), (ISN1,I1) BIN FIXED (31), REGOUT CHAR(82) VAR; DCL 1 PARTES DEF REGOUT, 2 PARTEL CHAR (2), 2 PARTE1 CHAR (20), 2 PARTE2 CHAR (60); DCL PNT POINTER, REGISTRO2 CHAR(80) BASED(PNT), 1 REGDEF2 BASED(PNT), 2 FIL1 CHAR(1), 2 FNAME2 CHAR(15), 2 FIL2 CHAR(64), 1 ETDADOS CHAR(132), 1 ETDADOSR DEF ETDADOS, 2 ARESTART, 3 INDICADOR CHAR(1), 3 OCOR BIN FIXED (15), 3 ARQUIVOS (4), 4 DDNAME1 CHAR(08), 4 CONTADOR1 BIN FIXED (31), 4 XAVE1 CHAR(20), 2 AUSER, 3 FIL3 CHAR(13); ARQ(DBPERSONNEL) NUM(94) USO(ALTER) CPO(NAME,BA) ALFA(20)

CPO(FIRST_NAME,BB) ALFA(15) FIM; #ENDFILE(ENTRADA1) #GOTO(FINAL1); #ENDFILE(ENTRADA2) #GOTO(FINAL2); USERID ('ADPGM001'); ABRIR ETDATA(ETDADOS); IF INDICADOR = ' ' THEN #RESTART; ELSE DO; DO I1 = 1 TO 4; CONTADOR1(I1) = 0; XAVE1(I1) = ' '; END; END; #OPEN #FILE(ENTRADA1) #FILE(ENTRADA2); #FILE(SADA1) #FILE(SADA2); INDICADOR = 'X'; ENDTRA(ETDADOS); COUNTX = 0; LER1: IF FIMARQ1 = 'X' THEN DO; #READ #FILE(ENTRADA1) #INTO(REGOUT); #WRITE #FILE(SADA1) #FROM(REGOUT); NAME = PARTE1; FIRST_NAME = 'XXXXXX1'; POR(DBPERSONNEL) EM(ISN1); CONTADOR1(1), CONTADOR1(3) = CONTADOR1(1) + 1; COUNTX = COUNTX + 1; XAVE1(1), XAVE1(3) = PARTE1; END; LER2: IF FIMARQ2 = 'X' THEN DO; #READ #FILE(ENTRADA2) #SET(PNT); #WRITE #FILE(SADA2) #FROM(REGISTRO2); NAME = PARM; FIRST_NAME = FNAME2; POR(DBPERSONNEL) EM(ISN1); CONTADOR1(2), CONTADOR1(4) = CONTADOR1(2) + 1; COUNTX = COUNTX + 1; XAVE1(2), XAVE1(4) = FNAME2; END; IF COUNTX = 100 THEN DO; COUNTX = 0; #ENDWRITE; ENDTRA(ETDADOS); END; IF FIMARQ1 = 'X' & FIMARQ2 = 'X' THEN GO TO FINALIZACAO; ELSE GO TO LER1; FINAL1: FIMARQ1 = 'X'; GO TO LER1; FINAL2: FIMARQ2 = 'X'; GO TO LER2; FINALIZACAO:

#ENDWRITE; ENDTRA(ETDADOS); #CLOSE #FILE(ENTRADA1) #FILE(ENTRADA2) #FILE(SADA1) #FILE(SADA2); INDICADOR = ' '; FECHAR(ETDADOS); END;
2.9. Programa Exemplo Com Restart E Adasql Programa: DBTEST ddname type keypos keylen recfm ENTRADA E 1 8 FB SADA S 6 8 FB

lrecl 80 133

blksize

DBTEST: PROC OPTIONS (MAIN); DCL SYSPRINT FILE, ADDR BUILTIN; DCL 1 REG_IN, 2 NMERO PIC '(8)9', 2 FILLER CHAR(72) INIT(' '), 1 REG_OUT, 2 ASA CHAR(5) INIT(' '), 2 NMERO PIC '(8)9', 2 FILLER CHAR(120) INIT(' '), FIM_ARQ CHAR(1) INIT ('N'), CONT BIN FIXED(31) INIT(0), I BIN FIXED(31) INIT(0); %INCLUDE MAC01(ADABAS); %INCLUDE MAC01(ADRESTAR); %INCLUDE MAC01(DBACALL); NM_PROG = 'DBTEST'; EXEC ADABAS BEGIN DECLARE SECTION; DCL 1 AREA_ETDATA CHAR(100), 1 AREA_ETDATAR DEF AREA_ETDATA, 2 AREA_RESTART, 3 INDI CHAR(1), 3 QT_ARQ BIN FIXED(15), 3 ARQS(2), 4 DDNAME CHAR(8), 4 CONT_REG BIN FIXED(31), 4 CH_ULT_REG CHAR(20), 2 AREA_USUARIO, 3 FILLER CHAR(10); #ENDFILE(ENTRADA) #GOTO(CONTINUA); USERID('DBTEST'); EXEC ADABAS CONNECT 'DBTEST' AND USERDATA INTO :AREA_ETDATA; IF INDI = ' ' THEN #RESTART; ELSE DO; CONT_REG(1) = 0; CH_ULT_REG(1) = ' '; CONT_REG(2) = 0; CH_ULT_REG(2) = ' '; END;

#OPEN #FILE(ENTRADA) #FILE(SADA); INDI = 'X'; EXEC ADABAS COMMIT WORK USERDATA = :AREA_ETDATA; DO WHILE (FIM_ARQ = 'N'); I = I + 1; #READ #FILE(ENTRADA) #INTO(REG_IN); CH_ULT_REG(1) = REG_IN.NMERO; CONT_REG(1) = CONT_REG(1) + 1; EXEC ADABAS FIND DECLARE PERS CURSOR SELECT PERSONNEL-NUMBER,AGE FROM DBPERSONNEL PER WHERE PERSONNEL-NUMBER = :REG_IN.NMERO OPTIONS HOLD RETURN; IF ADACODE = 3 THEN DO; IF AGE > 0 THEN AGE = AGE - 1; EXEC ADABAS UPDATE DBPERSONNEL WHERE CURRENT OF PERS; CONT_REG(2) = CONT_REG(2) + 1; CH_ULT_REG(2) = REG_IN.NMERO; REG_OUT.NMERO = REG_IN.NMERO; #WRITE #FILE(SADA) #FROM(REG_OUT); CONT = CONT + 1; END; IF CONT = 100 THEN DO; CONT = 0; #ENDWRITE; EXEC ADABAS COMMIT WORK USERDATA = :AREA_ETDATA; END; END; CONTINUA: #ENDWRITE; EXEC ADABAS COMMIT WORK USERDATA = :AREA_ETDATA; #CLOSE #FILE(ENTRADA) #FILE(SADA); INDI = ' '; EXEC ADABAS DBCLOSE USERDATA = :AREA_ETDATA; END;
Na compilao de programa ADASQL com restart, tambm colocar MACRO=M. 2.10. Execuo (Jcl's, Instrues Especiais) 2.10.1. Classe de JOB Para os jobs que gravam arquivos de sada em fita magntica, deve ser prevista uma unidade adicional, que alocada dinamicamente em uma situao de Restart. Esta alocao dinmica de apenas uma unidade para qualquer nmero de arquivos de sada em fita magntica. 2.10.2. Carto DD Os DD's referentes aos arquivos cadastrados devem ser informados normalmente. O importante em relao aos DD's de SADA para os quais devem ser observadas as seguintes regras: No necessrio os parmetros RECFM, LRECL E BLKSIZE da DCB se j foram informados no Cadastro.

DISP=(NEW,CATLG,CATLG)

Catalogar estes datasets em qualquer situao. No colocar arquivos DUMMY e no usar temporrios. Em uma situao de Restart, no descatalogar estes datasets pois eles so utilizados e posteriormente descatalogados automaticamente pelas rotinas do sistema. Em uma situao de Restart, todos os datasets gerados pela execuo que terminou anormalmente, so recriados mesmo que j tivessem sido fechados normalmente (#CLOSE). 2.10.3. Entries GDG Em uma situao de Restart, o sistema efetua a descatalogao automtica dos datasets criados por uma execuo terminada anormalmente, evitando assim o desperdcio de entries gdg. Neste caso, a entry gdg fica com saltos na sequncia do dsname. Ex: A entry gdg: XX.DSNX contem as 3 seguintes entradas: XX.DSNX(0) = XX.DSNX.G0005V00 XX.DSNX(-1) = XX.DSNX.G0003V00 XX.DSNX(-2) = XX.DSNX.G0002V00 Pode-se concluir que o dsn=XX.DSNX.G0004V00 tinha sido gerado por uma execuo que terminou anormalmente. Existem no entanto, as seguintes situaes nos quais o sistema no consegue evitar o desperdcio de entries gdg: Trmino anormal antes da primeira macro #OPEN ser executada. Isto pode ser observado atravs da SMB do job, na qual no se encontra a mensagem de PGM C/ RESTART que impressa pela primeira macro #OPEN executada no programa. Neste caso, os datasets catalogados so mantidos. Trmino anormal durante a execuo da macro #RESTART. Isto pode ser observado atravs da SMB do job, na qual se encontra a mensagem "________ INICIO DO RESTART", mas falta a mensagem "FIM NORMAL DO RESTART". Neste caso, a prxima execuo normal efetua a descatalogao dos datasets gerados pelos ABEND's anteriores. 2.10.4. Arquivo de Entrada com Datasets Concatenados Em uma situao de Restart, a rotina s verifica o dsname do primeiro dataset da concatenao. A confirmao do reposicionamento p/ os outros concatenados efetuado atravs da chave do registro. 2.11. Implantao em Produo (em Bancos de Dados de Qualquer Cpd) As etapas para implantao em produo so as seguintes: Guarda do programa PL/I Efetuar normalmente. Guarda do cadastro do programa / criao do ETDATA inicial Solicitar a guarda atravs do formulrio do memo FMRT01 opo Restart automtico de jobs batch Montagem da proc e do job Solicitar Coordenao, informando-os do pgm com Restart, e dos cuidados necessrios quanto ao JCL e execuo.

2.12. Abend's e Mensagens 2.12.1. Mensagens da Execuo / Mensagens informativas emitidas pelo sistema. +-----------------PGM C/ RESTART--------------------+ (Emitida pela primeira macro #OPEN ou pela #RESTART.) + USERID = ________ INICIO DO RESTART + (Mensagem completada pelo userid emitida pela macro #RESTART indicando o incio do Restart.) + FIM NORMAL DO RESTART + (Emitida pela macro #RESTART indicando o final do Restart.) ABEND U0001 Mensagens emitidas pela macro #OPEN AD__ - __________________________________ MACRO: #OPEN Completada pela mensagem das rotinas internas. Vide item "MENSAGENS DAS ROTINAS INTERNAS". ADO1 - ________ USERID PROBLEM Mensagem completada pelo userid. Erro no programa. Userid no confere. Provavelmente a varivel @#_U teve seu contedo alterado entre a execuo de duas macros #OPEN, ou entre a #RESTART e a #OPEN. ADO2 - ________ MULTIPLE OPEN Mensagem completada pelo ddname. Erro no programa. Duplo open para o arquivo. Duas macros #OPEN para este arquivo, sem #CLOSE entre elas. ADO3 - ________ ERRO NO GETMAIN Mensagem completada pelo ddname. Falta de Region. Aumentar a Region e re-executar. ADO4 - ________ RECFM INVALIDO Mensagem completada pelo ddname. Erro no JCL. Verificar o RECFM para este DD. O sistema s permite os formatos F, FB, V e VB. ABEND U0002 Mensagens emitidas pela macro #CLOSE. AD__ - __________________________________ MACRO: #CLOSE Completada pela mensagem das rotinas internas. Vide item "MENSAGENS DAS ROTINAS INTERNAS". ADC1 - TODOS ARQUIVOS FECHADOS Erro no programa. A macro #CLOSE foi executada antes da #RESTART ou #OPEN. ADC2 - ________ MULTIPLE CLOSE

Mensagem completada pelo ddname. Erro no programa. Duplo close para o arquivo. Duas macros #CLOSE para este arquivo, sem #OPEN entre elas. ADC3 - ________ FREEMAIN ERROR Mensagem completada pelo ddname. Erro no S.O. Tentar re-executar, e comunicar ao IT DBA Project Brazil se repetir o erro. ABEND U0003 Mensagens emitidas pela macro #READ. AD__ - __________________________________ MACRO: #READ Completada pela mensagem das rotinas internas. Vide item "MENSAGENS DAS ROTINAS INTERNAS". ADR1 - TODOS ARQUIVOS FECHADOS Erro no programa. A macro #READ foi executada antes da #RESTART ou #OPEN. ADR2 - ________ ARQUIVO FECHADO Mensagem completada pelo ddname. Erro no programa. No foi executada a macro #OPEN para este arquivo, ou o arquivo j foi fechado (#CLOSE). ADR3 - ________ READ EM ENDFILE Mensagem completada pelo ddname. Erro no programa. Tentativa de leitura aps ser encontrado o fim de arquivo. ABEND U0004 Mensagens emitidas pela macro #WRITE. AD__ - __________________________________ MACRO: #WRITE Completada pela mensagem das rotinas internas. Vide item "MENSAGENS DAS ROTINAS INTERNAS". ADW1 - TODOS ARQUIVOS FECHADOS Erro no programa. A macro #WRITE foi executada antes da #RESTART ou #OPEN. ADW2 - ________ ARQUIVO FECHADO Mensagem completada pelo ddname. Erro no programa. No foi executada a macro #OPEN para este arquivo, ou o arquivo j foi fechado (#CLOSE). ADW3 - ________ LRECL INVALIDO Mensagem completada pelo ddname. Erro no programa ou no JCL. O registro varivel a ser gravado maior do que o LRECL informado na DCB. Verificar JCL ou Cadastro (NATURAL) e programa PL/I. ABEND U0005

Mensagens emitidas pela macro #ENDWRITE. ADE1 - TODOS ARQUIVOS FECHADOS Erro no programa. A macro #ENDWRITE foi executada antes da #RESTART ou #OPEN. ABEND U0007 Mensagens emitidas pela macro #RESTART. AD__ - __________________________________ MACRO: #RESTART Completada pela mensagem das rotinas internas. Vide item "MENSAGENS DAS ROTINAS INTERNAS". ADX1 - RESTART TEM QUE SER PRIMEIRO CALL Erro no programa. Foi executada a macro #OPEN antes da #RESTART. A macro #RESTART tem que ser a primeira, quando executada. ADX2 - ERRO NO GETMAIN DO RB PARA ETDATA Falta de region. Erro na alocao do record-buffer para ler o ETDATA. Aumentar a region e re-executar. ADX3 - RSP___ ERRO ADABAS / COMANDO __ Mensagem completada pelo response-code e cdigo do comando. Problema com o monitor de Banco de Dados (MPM). Se possvel, verificar o response-code e re-executar. Repetindo-se o erro, consultar IT DBA Project Brazil. ADX4 - DDS DO CADASTRO=__ DIF DO ETDATA=__ Mensagem completada pelo nmero de DD's informados. Erro no cadastramento ou na criao do ETDATA. O nmero de arquivos cadastrados difere do nmero de arquivos informado no registro de ETDATA. Verificar Cadastro contra o registro de ETDATA. ADX5 - ________ DDNAME NO CADASTRADO Mensagem completada pelo ddname. Erro no cadastramento ou na criao do ETDATA. O ddname informado no ETDATA no consta no Cadastro. Verificar Cadastro contra o registro de ETDATA. ADX6 - DSNAME CADASTRADO NO CONFERE COM DSNAME DO JCL ________/___________________________________________ Mensagem completada pelo ddname e dsname. Erro no JCL. Este arquivo de entrada foi alterado para a re-execuo deste job. O dsname da execuo anterior o informado nesta mensagem; verifique contra o JCL. Se realmente foi necessrio recriar este arquivo, e se este arquivo novo idntico ao anterior (mesmos registros, na mesma sequncia), alterar o dsname que consta no cadastro e re-submeter. Uma re-criao incorreta pode acarretar srios danos execuo do programa. ADX7 - ________ CHAVE NO CONFERE Mensagem completada pelo ddname. Erro no arquivo ou erro no programa. A chave do ltimo registro do arquivo no confere com a informada no ETDATA.

Erro no programa ao gravar o contador e a chave. Se arquivo de entrada, pode ser uma re-criao errada do dataset ou se houver datasets concatenados, alguma inverso na concatenao. ADX8 - DSNAME NO ESTA CATALOGADO - VEJA ABAIXO ________/__________________________________________ Mensagem completada pelo ddname e dsname. Erro no JCL. A re-execuo deste job est tentando recriar o arquivo de sada com o mesmo dsname da execuo anterior. Alterar o dsname deste dd, e re-submeter. ADX9 - ________ ERRO NO GETMAIN Mensagem completada pelo ddname. Falta de region. Aumentar o region e re-executar. ADX10 - ________ ERRO NO FREEMAIN Mensagem completada pelo ddname. Problemas com S.O. Re-submeter. Repetindo-se esta situao, contatar IT DBA Project Brazil. ADX11 - ___________________________________________ ERRO NO DYNALLOC ERROR/INFO = ___/___ (IN HEX) Mensagem completada pelo dsname e o cdigo de erro. No ERROR vem o valor do return code da alocao dinmica ,cujos valores mais comuns so: '0000' - OK dataset alocado dinamicamente; '0210' - dataset no alocado por estar sob controle de outro job; '0214' - unidade no disponvel; '0484' - dataset no alocado por ter ocorrido problemas na montagem do volume onde este se encontra. As seguintes situaes podem levar a esta condio: a) no havia unidade de fita ou cartucho disponvel para montar o volume; b) o operador no montou o volume e respondeu "NO" para a mensagem de pedido de MOUNT; '1708' - dataset no esta catalogado, no momento do DYNALLOC. Contatar IT DBA Project Brazil. ADX11 - ___________________________________________ ERRO NO DYNALLOC DATASET EM USO Mensagem completada pelo dsname. Dataset em uso por outro job. Verificar se j terminou esse outro job e re-submeter. ADX12 - ________ RESTART COM DCB ALTERADA Mensagem completada pelo ddname. Erro no JCL ou no Cadastro. A DCB foi alterada entre esta execuo e a anterior. Voltar os parmetros RECFM, LRECL e BLKSIZE da execuo anterior e re-submeter. ADX13 - ________ CONTADOR < REGS.GRAVADOS Mensagem completada pelo ddname. Erro no programa. O contador de registros do ETDATA no foi atualizado corretamente. O ltimo bloco do arquivo contem um nmero de registros que excede o contador do ETDATA.

ADX14 - ________ CONTADOR > REGS.GRAVADOS BLOCOS LIDOS REGS. GRAVADOS CONTADOR (ETDATA) Mensagem completada pelo ddname. Erro no programa. O contador de registros do ETDATA no foi atualizado corretamente Foi encontrado o ENDFILE antes de se completar o total informado. ADX15 - ________ USERID SEM ETDATA CORRESP. Mensagem completada pelo userid. Erro no programa, cadastramento ou ADABAS. No consta o registro de ETDATA no arquivo CHECKPOINT do ADABAS. Verificar: se o pgm no est alterando a varivel @#_U. se foi criado o registro de ETDATA no cadastramento. se houve algum problema com o arquivo CHECKPOINT. ADX16 - ___________________________________________ ERRO LOCATE - PROBLEMA NO ACESSO AO CATALOGO Mensagem completada pelo dsname. Erro no JCL ou no Restart. Houve problemas no acesso ao catlogo. Verifique o catlogo; se o dsname estiver catalogado, re-executar. Se repetir o erro, contatar o IT DBA Project Brazil. ADX17 - ________/___________________________________________ DSNAME NO ESTA CATALOGADO Mensagem completada pelo ddname e dsname. Erro no JCL ou no Restart. Dsname no est catalogado. Verifique se o carto DD est com DISP=(,CATLG,DELETE); se estiver e for sada em fita: Verificar o label e recatalogar o dataset; Corrigir a proc para DISP=(,CATLG,CATLG); Re-submeter. Outra possibilidade do programador de produo ter descatalogado este dataset para efetuar o Restart. Proceder como o caso anterior, com a possibilidade adicional de tambm recuperar o dataset em disco. Se arquivo GDG verificar o tamanho do arquivo (Nome do arquivo mais a gerao e verso), no deve passar de 44 dgitos. ADX18 - __________________________________________ ERRO UNCATALOG - PROBLEMA NO ACESSO AO CATALOGO Mensagem completada pelo dsname. Erro no acesso ao catalogo. Houve problemas na tentativa de descatalogar este dataset. Descatalogar este dataset e re-submeter. ADX19 - ____________________________________________ UNCATLG Mensagem completada pelo dsname. Emitida pela macro #RESTART indicando a descatalogao do dataset.

ADX20 - ____________________________________________ ERRO _ ___ SCRATCH/TENTATIVA DE ELIMINAR O ARQUIVO Erro na tentativa de eliminar o arquivo. Mensagem completada pelo dsname e pelo status code da macro SCRATCH, que pode ser

encontrado nos manuais MVS/DFP System Programming Reference ou MVS/DFP Diagnosis Reference. Essa mensagem antecedida da mensagem IEC614I que pode ser interpretada atravs do manual MVS System Messages. Se o status code for 7, o programa PL1 provavelmente deu OPEN FILE (ddname) num arquivo cadastrado no Sistema de Restart sendo que esta funo deve ser feita s pela rotina de Restart (nas macros #RESTART ou #OPEN). ADX21 - ____________________________________________ SCRATCH Mensagem completada pelo dsname. Emitida pela macro #RESTART indicando a eliminao do dataset. 2.12.2. MENSAGENS DAS ROTINAS INTERNAS Mensagens emitidas pelas rotinas internas do sistema. So acompanhadas pelo nome da macro que a chamou. ADI1 - RSP___ ERRO ADABAS / __ Mensagem completada pelo response-code e cdigo do comando. Problemas com o MPM ou com o S.O. Verificar se o monitor de Banco de Dados e/ou o Sistema Operacional est com problemas. Re-submeter aps normalizar. Contatar o IT DBA Project Brazil se o problema se repetir. Emitida pela rotina interna PSXINIT. ADI2 - ________ USERID INEXISTENTE Mensagem completada pelo userid. Erro no programa ou no cadastramento. Verificar se existe o registro de ETDATA, ou se est errado o userid informado na macro USERID do ADABAS. Emitida pela rotina interna PSXINIT. ADI3 - ________ MAIS QUE 50 DDNAMES Mensagem completada pelo userid. Erro no programa. O campo do ETDATA que indica o nmero de arquivos para o programa est com um valor maior do que 50. Emitida pela rotina interna PSXINIT. ADI4 - ________ FALHA NO GETMAIN Mensagem completada pelo userid. Falta Region. Aumentar a Region e re-submeter. Emitida pela rotina interna PSXINIT. ADI5 - ________ RECFM INVALIDO Mensagem completada pelo ddname. Erro no cadastramento. O RECFM s pode ser F, FB, V ou VB. Emitida pela rotina interna PSXINIT. ADS1 - ________ DDNAME INVALIDO Mensagem completada pelo ddname. Erro no programa. O ddname no consta no cadastro. Verificar se o ddname informado nesta macro est correto. Verificar o userid. Emitida pela rotina interna PSXSEAR. ADU1 - RSP___ ERRO ADABAS / COMANDO __ Mensagem completada pelo response-code e cdigo do comando. Problemas com o MPM ou com o S.O.

Verificar se o monitor de Banco de Dados e/ou o Sistema Operacional est com problemas. Re-submeter aps normalizar. Contatar IT DBA Project Brazil se o problema se repetir. Emitida pela rotina interna PSXUPDT. ADU1 - RSP 09 ERRO ADABAS / COMANDO HI MACRO: #RESTART Contatar o Suporte ao Desenvolvimento para verificar as alternativas para correo do erro. ADD1 - ID NO PERTENCE A ENTRADA AMB = __ APLIC = __ Mensagem completada com a identificao do ambiente e da aplicao do usurio. Problemas com o TABELA na CSA. Contatar o IT DBA Project Brazil, informando o ambiente e aplicao. Emitida pela rotina interna PSXDBID. ADD2 - ENTRADA NO EXISTE NA CSA AMB = __ APLIC = __ Mensagem completada com a identificao do ambiente e da aplicao do usurio. Problemas com o TABELA na CSA. Contatar o IT DBA Project Brazil, informando o ambiente e aplicao. Emitida pela rotina interna PSXDBID. ADD3 - ERRO NA ROTINA =====> DBPTAB AMB = __ APLIC = __ Mensagem completada com a identificao do ambiente e da aplicao do usurio. Problemas com o TABELA na CSA. Contatar o IT DBA Project Brazil, informando o ambiente e aplicao. Emitida pela rotina interna PSXDBID.

3. Assinaturas
Propriedade do Banco ABN AMRO Real S.A.