A redução de transações significa mais memória livre, pois a quantidade de registros bloqueados é menor. Entretanto, para diminuir as transações, existe um aumento na complexidade da codificação dos programas. Será descrito a seguir algumas dicas para diminuir transações: 1) Criar sub-transações: Para cada agrupamento de comandos que façam alteração de informações em um banco de dados, é criado uma transação no escopo do bloco atual que pode ser o programa como um todo ou um laço(DO TRANSACTION: ... END.). Exemplos: Uma grande transação: Código: ... /* Início do programa – Não acessa o banco de dados */ DO: <var1> = 1 TO 1000: CREATE <tabela>. ASSIGN <tabela>.<campo> = <VALOR>. END. ... /* Finalização do programa – Não acessa o banco de dados */ OBS: A transação deste programa fica no escopo da programa (DO: ... END.) e bloqueia 1000 registros. Para isto é consumida uma quantia de memória. É importante ressaltar que um simples comando DO não é suficiente para gerar uma transação. Caso só exista ele, como é o caso, o escopo da transação é o programa como um todo. Uma pequena transação: Código: ... /* Início do programa – Não acessa o banco de dados */ DO <var1> = 1 TO 1000: DO TRANSACTION: CREATE <tabela>. ASSIGN <tabela>.<campo> = <VALOR>. END. END. ... /* Finalização do programa – Não acessa o banco de dados */ OBS: A transação deste programa é menor, pois fica no escopo da sub-transação (DO TRANSACTION: ... END.) e bloqueia apenas 1 registro. Para isto é consumido menos memória do que no exemplo anterior. 2) Utilizar o comando DO para laços (LOOP) simples ao invés do comando REPEAT: É considerado um laço simples, aquele que não tiver envolvimento com transações. O comando REPEAT cria por default uma transação: Transação desnecessária: Código: ... /* Início do programa */ REPEAT <VAR> = 1 TO 100: ASSIGN <variável> = <VALOR>. DISPLAY ... END. ... /* Finalização do programa */ OBS: Foi criado desnecessariamente transações, ocupando então memória. Correção: Código: ... /* Início do programa */ DO <VAR> = 1 TO 100: ASSIGN <variável> = <VALOR>. DISPLAY ... END. ... /* Finalização do programa */ OBS: Não foi criado nenhuma transação, consumindo menos memória. Abb, Fernanda