Histórico da Página
...
Na primeira situação em que a função Ca100Incl é chamada recebendo o vetor aFlagCTB, os elementos do vetor devem ser bloqueados para serem no final atualizados na origem. O conteúdo de alguns campos da tabela CTK também deverão ser bloqueados, como o CTK_TABORI e CTK_RECORI, pois nem sempre o conteúdo destes campos da tabela CTK são os mesmos do vetor aFlagCTB. Na grande maioria das vezes serão, neste caso, se utilizarmos a função SimpleLock ou uma outra que não utilize o LockByName ocultamente, duas vezes, devemos certificar que não ocorrerá nenhum problema. Também devemos certificar que uma outra conexão não consiga pegar esses registros.
O Bloqueio no conteúdo campo CTK_RECORI deve ser feito quando o vetor aFlagCTB estiver vazio. E quando o aFlagCTB estiver preenchido efetuar o bloqueio pelo conteúdo deste vetor.
Em relação a SimpleLock não existe problema em chamar a função duas vezes e ela não utiliza a função LockByname de forma oculta. Único cuidado a ser tomado é no momento de tirar o bloqueio de um registro com a função MsRUnlock. Caso esteja dentro de transação não há necessidade de executar essa função ( segundo a TEC não existe problema ).
...