Boa tarde!
Possuo uma rotina via schedule que tem controle de semáforo, onde ela cria um arquivo ao iniciar, deixa ele aberto enquanto processa e fecha assim que concluí o processo. Essa rotina executa de 10 em 10 minutos.
Dessa forma, se esse processamento demorar mais de 10 minutos e outro processo iniciar, caso ele não conseguir criar o arquivo, é porque ainda existe um processamento em aberto. Assim, essa segunda tentativa é abortada.
Acontece que de vez em quando essa rotina gera alguns error logs devido a cadastro incorreto, e devido ao error log, a rotina é encerrada antes de fechar o arquivo. Então, quando novos processos tentam ser executados, eles não conseguem pois o arquivo ainda está em aberto.
Gostaria de melhorar esse processo, de modo que mesmo que gere error log, o semáforo se feche.
Minha dúvida é se consigo executar um bloco de Begin Sequence, que caso ocorra um erro no processo, eu consiga fechar o arquivo antes de finalizar a rotina.
Caso não existir, alguém sabe de alguma forma mais inteligente e eficaz para realizar este controle de semáforo?
Agradeço desde já pela atenção.