EZEROLLB chama serviços do sistema que faz rollback de atualizações feitas em bancos de dados ou arquivos recuperáveis desde o último ponto de commit. Um retrocesso ocorre automaticamente se o programa terminar com um erro inesperado.
Você pode utilizar EZEROLLB como o nome de função em uma instrução de chamada da função.
Pode-se usar EZEROLLB no lugar da rotina de serviço RESET de CALL.
Um roll back ocorre quando:
Ambiente | Considerações de compatibilidade |
---|---|
VM CMS | EZEROLLB resultará em um SQL ROLLBACK WORK se os pedidos SQL foram emitidos pelo programa. |
VM batch | Igual a VM CMS. |
CICS para MVS/ESA | EZEROLLB resulta em um CICS SYNCPOINT ROLLBACK. É feito o rollback
de todas as atualizações ocorridas desde o último ponto de commit para bancos
de dados DL/I, bancos de dados relacionais e arquivos definidos como
recursos recuperáveis. Os serviços EZEROLLB são chamados
automaticamente para o program se o programa chamar o serviço RESET.
O programa batch chamado remotamente pode chamar EZEROLLB. Chamar EZEROLLB a partir de programas remotos pode resultar em um CICS SYNCPOINT ROLLBACK se ECI_NO_EXTENDED estiver especificado na tabela de roteamento do middleware. É emitida uma mensagem de erro de runtime indicando que o rollback falhou com INVREQ se ECI_EXTEND estiver especificado na tabela de roteamento do middleware. Arquivos spool não sofrem rollback. |
MVS/TSO | EZEROLLB resulta em SQL ROLLBACK WORK se o programa emitiu pedidos do
SQL.
Se tiverem sido emitidos pedidos DL/I, será executada uma chamada ROLB (rollback) DL/I. O parâmetro batch IMS BKO=Y tem que ser especificado na CLIST de inicialização para que a chamada ROLB possa ser honrada. Se BKO=N estiver especificado, o DL/I retornará o código de status AL para a chamada ROLB. A execução trata AL como código de erro de programa, não sendo dada mensagem de erro. Programas VisualAge Generator que não utilizam a DL/I emitem um rollback somente se o programa fez alterações em uma tabela SQL. Não ocorre rollback para alterações a tabela SQL feitas por programa não-VisualAge Generator. |
MVS batch | Se o programa executado pelo programa de supervisão de terminal TSO para
acesso ao SQL, chamar EZEROLLB resultará em um SQL ROLLBACK WORK.
Se o programa for executado como um job em lote da DL/I e os pedidos DL/I or SQL foram emitidos, uma chamada ROLB da DL/I será emitida. O parâmetro de batch IMS BKO=Y tem que ser especificado quando o job do batch é iniciado para que a chamada ROLB possa ser honrada. Se BKO=N estiver especificado, o DL/I retornará o código de status AL para a chamada ROLB. A execução trata AL como código de erro de programa, não sendo dada mensagem de erro. BKO é especificado como parâmetro na fase do job que chama o programa de controle IMS DFSRRC00. Arquivos seriais ou de impressão associados a arquivos GSAM e CALL AUDIT resultam em pedidos DL/I e fazem com que a chamada ROLB DL/I seja emitida. Programas VisualAge Generator que não utilizam a DL/I emitem um rollback somente se o programa fez alterações em uma tabela SQL. Não ocorre rollback para alterações a tabela SQL feitas por programa não-VisualAge Generator. |
IMS/VS | EZEROLLB resulta em uma chamada ROLB da DL/I. |
IMS BMP | Igual a IMS/VS. |
CICS para VSE | Igual a CICS para MVS/ESA. |
VSE batch | EZEROLLB resultará em um SQL ROLLBACK WORK se os pedidos SQL foram
emitidos pelo programa. Não há função de rollback automática para
bancos de dados DL/I sob VSE batch.
Se for preciso o roll back das alterações para um banco de dados da DL/I, você deverá codificar o programa para ser encerrado com uma mensagem de erro indicando que o usuário final deve ser executado no utilitário de backout da DOS/VS da DL/I. Arquivos spool não sofrem rollback. |
CICS para OS/2 | EZEROLLB resulta primeiro em um SQL ROLLBACK WORK, se o programa emitiu
pedidos SQL na estação de trabalho e, depois, um CICS SYNCPOINT
ROLLBACK. O CICS coordena as funções de rollback do host e da estação
de trabalho.
SYNCPOINT ROLLBACK CICS faz o backout das alterações feitas aos arquivos da estação de trabalho definidos como recursos recuperáveis para CICS OS/2. O CICS SYNCPOINT ROLLBACK também faz o back out das alterações em bancos de dados e arquivos recuperáveis em um host CICS quando as alterações são feitas por um programa batch chamado remotamente que seja chamado por este programa. ROLLBACK WORK SQL faz o backout das alterações feitas a bancos de dados relacionais. O programa batch chamado remotamente pode chamar EZEROLLB. Chamar EZEROLLB a partir de programas remotos pode resultar em um CICS SYNCPOINT ROLLBACK se ECI_NO_EXTENDED estiver especificado na tabela de roteamento do middleware. É emitida uma mensagem de erro de runtime indicando que o rollback falhou com INVREQ se ECI_EXTEND estiver especificado na tabela de roteamento do middleware. Arquivos gerados com arquivo do tipo OS2COBOL não são recursos recuperáveis e não são afetados por EZEROLLB. |
OS/400 | Nenhum. |
OS/2 (GUI) | EZEROLLB usa o suporte de comunicação do cliente/servidor. |
Windows (GUI) | Igual a OS/2 (GUI). |
Java (GUI) | Igual a OS/2 (GUI). |
OS/2 (C++) | EZEROLLB faz o rollback das alterações sofridas por bancos de dados relacionais. Os arquivos não são afetados por EZEROLLB. |
AIX | Igual a OS/2 (C++). |
HP-UX | Igual a OS/2 (C++). |
Solaris | Igual a OS/2 (C++). |
CICS for Solaris | EZEROLLB faz o rollback das alterações sofridas por bancos de dados relacionais e por arquivos definidos como recursos recuperáveis. |
CICS for AIX | EZEROLLB faz o rollback das alterações sofridas por bancos de dados relacionais e por arquivos definidos como recursos recuperáveis. |
Windows NT | Igual a OS/2 (C++). |
CICS para Windows NT | Igual a CICS for AIX. |
Dispositivo de Teste | O ambiente de execução VSE batch DL/I não suporta EZEROLLB.
dispositivo de teste emite EZEROLLB, o que torna desnecessária a limpeza
manual do banco de dados.
Se estiver sendo usada a opção de emulação DL/I local, os produtos Micro Focus ignorarão pedidos de rollback. O posicionamento do banco de dados se perde quando o rollback é emitido, mas os dados em si não sofrem rollback. |
EZEREPLY=1; EZEROLLB();