Só falta eu colocar um NOBREAK em cada computador, para ver se resolve.
Com certeza nobreak não resolve, porque pelo que mostrou tem informações misturadas.
Talvez esteja olhando a rotina errada, ou já decidiu que é APPEND errado e não procura outra coisa.
Eu diria o seguinte:
Tá com problema nessa rotina, tá quebrando a cabeça com ela?
Tá mais que na hora de fazer uma revisão e deixar a rotina decente.
GravaOrc()... não tem limite de 10 letras... GravaOrcamento()
Parâmetros aTipo e aModo?
aModo é muito mais importante, deveria vir em primeiro lugar.
DBCOMITA... Que troço doido é esse?
Porque só desbloquear se for alteração?
Passar parâmetro INCLUIR/ALTERAR....
Eita coisa fácil de ter problemas.
Em último caso, use #define
Por acaso já pensou que o problema pode ser a palavra "INCLUIR" vindo errada?
Se a rotina só pode ser chamada por incluir ou alterar, bastava um parâmetro .T. ou .F. pra dizer se inclui ou não.
Sua mesma rotina passando por uma transformação visual
Tem uma coisa muito importante que pode passar desapercebida aÃ....
Se o programmers notepad está configurado pra colorir os comandos, porque alguns WITH estão de uma cor e outros de outra?
Lógico... algum caractere diferente está aà no fonte.
Se foi do copiar/colar do fórum ou não, não faço idéia, mas algum caractere estranho existe no fonte.
Se faz diferença usar campo := valor, ou REPLACE eu não sei, mas sempre usei assim e vou continuar usando.
Vamos acabar fazendo tudo de uma vez pro MySQL, então porque não no DBF?
Também não entendi porque a rotina está em separado, talvez melhor rever a rotina principal.
Se essa rotina usa variáveis que nem existem nela.... como considerar que as variáveis estão corretas?
Aliás, simplificando é isso: a rotina está certa, mas se os parâmetros/informações que chegam nela estão corretos, não se sabe.
Deve analisar o conjunto, e não apenas a rotina.
Boa sorte.