E compilando com -w3 -es2... facilita muito mais.
Problema:
tem lá a rotina que cria e pode enviar por email os XMLs de um mês
Agora foi necessário gerar de 2016 a 2018, 36 meses....
Como separar por mês?
Bom... vamos lá...
GET dDatIni
GET dDatFim
...
rotina que gera
passo 1:
Separei a rotina que gera
FUNCTION GeraDados( dDatIni, dDatFim )
E compilando com -w3 -es2, ajustei as variáveis, pra deixar no lugar certo.
Desta forma, a sub-rotina passou a gerar qualquer intervalo que eu queira
Agora só restou passar as datas pra rotina, e nada mais.
Solução relativamente simples:
dSubDatIni := dDatIni
DO WHILE dSubDatIni < dDatFim
dDatSubFim := Min( UltDia( dSubDatIni ), dDatFim )
GeraDados( dSubDatIni, dSubDatFim )
dDatSubIni := UltDia( dDatSubIni ) + 1
ENDDO
Pronto, problema resolvido.
explicando....
A data inicial se mantém...
A data final pode ser o último dia do mês da data inicial, ou a data final digitada, a menor das duas
Exemplo: de 1/5 a 10/5 ou 1/5 a 31/5
Pronto... isso resolve pra ter as datas limites do primeiro mês
O próximo mês: será o último dia desse primeiro mês, somando um.
Exemplo: se é 1/5... o último dia será 31/5, que somado um é 1/6
E volta a repetir o anterior, até que esse primeiro dia seja maior do que o limite digitado.
Um problema que à primeira vista seria complexo, resolvido com poucas linhas.
E lógico... compilando com -w3 -es2, que avisa sobre variáveis, facilitou evitar erros na separação da rotina, foi só criar as variáveis necessárias, ou passar por parâmetro se necessário.
A intenção é mostrar aqui o seguinte:
1. Compilando com -w3 -es2 ajuda muito, porque mexe sem medo, e evita erros
2. Pensando em melhorar rotinas, sobra tempo pra pensar em rotinas melhores.
3. Resultado final: rotinas melhores, menos trabalho, e soluções mais rápidas
Às vezes até compensa fazer pausas, pensar um pouco, tomar café, jogar asteroyds, voltar a pensar, jogar mais asteroyds, e depois alterar.
Vai gastar o mesmo tempo, mas fazer muito mais tranquilo.
Agora gerando....
Conferidos os meses já gerados, tempo pra jogar mais asteroyds, ou postar no fórum, ou melhorar mais coisas, ou tomar café, ou relaxar um pouco, ou partir pra próxima tarefa... tudo tranquilo.
Nota: São todos os XMLs emitidos e recebidos em 3 anos, por isso demora um pouquinho, talvez alguns gigas...
O nome dos arquivos.... CNPJ-ano/mês.zip... mais simples impossÃvel.