Dicas de Performance. Objetivo

Tamanho: px
Começar a partir da página:

Download "Dicas de Performance. Objetivo"

Transcrição

1 Dicas de Performance Objetivo Este documento tem como objetivo informar algumas dicas rápidas de performance que podem ser aplicadas no dia-a-dia. As regras são simples e seus efeitos, isoladamente, podem não apresentar grandes resultados, entretanto, seguindo a uma maior quantidade de regras, a melhoria de performance é considerável. Muito dos problemas envolvem uso de comandos que causam impactos, enquanto outros problemas são causados por má utilização de comandos existentes, isto é, usar um comando que se substituído por outro melhora performance, podendo também diminuir consumo de memória. Um fator importante a ressaltar, é que a má performance pode ser resultado de um comando mal aplicado, bem como pelo consumo elevado de memória. Itens que serão abordados neste documento: Utilização do comando IF repetidamente. Utilização de blocos para agrupar comandos. Utilização do comando CASE. Utilização do comando IF para o uso do método LOAD-MOUSE-POINTER. Testes de variáveis lógicas. Utilização do comando CAN-FIND. Redução de transações. LOCK de registros Escopo de registros Não utilizar WORKFILES Utilização de TEMP-TABLE do tipo global. Utilização do parâmetro NO-UNDO em definição de variáveis e TEMP-TABLES. Limpeza de registros nas TEMP-TABLES Regras para utilização de índice Truques para economizar BANDWIDTH Quanto menos acesso melhor Use o comando ASSIGN

2 Utilização do comando IF repetidamente O comando IF é um dos piores no ponto de vista de performance, entretanto, sua utilização é inevitável. Porém, é possível, em alguns pontos, fazer um melhor uso deste comando. Caso não seja possível substituir o comando IF por outro comando (CASE por exemplo), por motivos de lógica de programação, o uso adequado já auxilia na performance. A substituição dos comandos IF S colocados um após o outro por uma encadeação do comando pode melhorar de maneira considerável a performance, isto é: Exemplo de código a ser melhorado : IF <condição 1> THEN DO: IF <condição 2> THEN DO: IF <condição 3> THEN DO: IF <condição 4> THEN DO: IF <condição 5> THEN DO: Exemplo de código performático : IF <condição 1> THEN DO: IF <condição 2> THEN DO: IF <condição 3> THEN DO: IF <condição 4> THEN DO: IF <condição 5> THEN DO: Desta maneira, as condições 2,3,4 e 5 só serão executadas caso necessário, enquanto que no primeiro caso, todas as condições são executadas. É bom levar em consideração que este exemplo depende, logicamente, da necessidade do programa. Se for possível fazer a troca deste IF por um comando CASE, a performance pode ser melhorada. 2

3 Utilização de blocos para agrupar comandos A utilização de blocos para agrupar comandos, pode: aumentar desnecessariamente o arquivo compilado (RCODE) acarreta um aumento de gravações no LBI (local before image), quando os comandos que estão nele são atualizações de registros (gera sub-transação) ou de variáveis SEM a cláusula no-undo (controle de sub-transação) Exemplo de Código a ser melhorado : IF <condição> THEN DO: ASSIGN VAR1 = <valor 1> VAR2 = <valor 2> VAR3 = <valor 3>. DO: ASSIGN VAR1 = <valor 4> VAR2 = <valor 5> VAR3 = <valor 6>. Exemplo de Código performático : IF <condição> THEN ASSIGN VAR1 = <valor 1> VAR2 = <valor 2> VAR3 = <valor 3>. ASSIGN VAR1 = <valor 4> VAR2 = <valor 5> VAR3 = <valor 6>. É importante ressaltar que neste caso, existe apenas um comando após o THEN e/ou, ou seja, é desnecessária a utilização da estrutura DO... Entretanto, é necessário tomar cuidado em caso de chamada de INCLUDE numa estrutura IF...THEN. Como não é possível saber o que há dentro da INCLUDE, por precaução, é aconselhável utilizar o bloco. Exemplo: IF <condição> THEN DO: {INCLUDE} DO: {INCLUDE2} Utilização do comando CASE Como já foi dito, a utilização do comando IF encadeado pode melhorar a performance em relação a utilização de comandos IF repetidos, mas, ainda podem causar um impacto na performance de um programa. Caso seja possível, é aconselhável utilizar o comando CASE no lugar dos comandos IF existentes. 3

4 Trocar: IF <condição 1> THEN DO: IF <condição 2> THEN DO: IF <condição 3> THEN DO: Por: CASE c-campo: WHEN teste THEN Comando... WHEN aluno THEN Comando... WHEN compr THEN Comando... OTHERWISE Comando END CASE. Utilização do comando IF para o uso do método LOAD-MOUSE-POINTER Após alguns testes, foi percebido que a linha de comando: IF CAMPO:LOAD-MOUSE-POINTER("<DIRETÓRIO\ARQUIVO>") IN FRAME {&FRAME-NAME} THEN. Pode ser substituída por: CAMPO:LOAD-MOUSE-POINTER("<DIRETÓRIO\ARQUIVO>") IN FRAME {&FRAME-NAME}. Aparentemente o ganho com esta troca pode parecer pequeno, mas levando em consideração que muitos programas utilizam várias vezes esta técnica, a somatória destes pequenos ganhos pode vir a ser considerável. Teste de variáveis lógicas As comparações realizadas com variáveis lógicas em comandos, como por exemplo, as condições em um comando IF, são mais rápidas se não utilizam o sinal de igualdade para expressar a condição desejada. Exemplos: Exemplo de código a ser melhorado : IF <variável ou campo lógico> = YES THEN DO: Comandos... Exemplo de código performático : IF <variável ou campo lógico> THEN DO: Comandos... 4

5 Utilização do comando CAN-FIND A utilização do comando CAN-FIND retorna TRUE ou FALSE quando utilizado, isto é, existe apenas a verificação se o registro existe ou não. O registro pesquisado não fica habilitado para nenhuma operação, nem mesmo para leitura. Ao contrário do comando FIND que pode tornar o registro habilitado até mesmo para escrita. Porém, o principal ganho para a melhoria da performance, é que o comando CAN-FIND retorna apenas um valor lógico, enquanto que o comando FIND busca todo o registro, isto é, aumenta o tráfego de rede fazendo I/O e aplicando controle de LOCK sobre o registro, desnecessariamente. A principal funcionalidade do comando CAN-FIND é a necessidade de saber se um registro existe ou não, como por exemplo, em um cadastro. Ao verificar se a chave informada já existe, não é necessário trazer todo o registro, somente a informação de sua existência. Exemplo: Exemplo de Código a ser melhorado : FOR EACH <supertabela> no-lock: FIND <tabela> WHERE <tabela>.<campo-chave> = <VALOR> no-lock. IF NOT AVAILABLE <tabela> THEN DO: CREATE <tabela>. ASSIGN <tabela>.<campo-chave> <tabela>.<demais-campos>. Exemplo de Código performático : FOR EACH <supertabela> no-lock: IF NOT CAN-FIND(<tabela> WHERE <tabela>.<campo-chave> = <VALOR>) THEN DO: CREATE <tabela>. ASSIGN <tabela>.<campo-chave>. Redução de transações Esse é o item mais importante na questão performance. A redução de transações significa mais memória livre e menos registros bloqueados. 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: 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(<block header> TRANSACTION:... ). Regras para verificação de transações analisando o código fonte: As transações são geradas em tempo de compilação, é comum analisar-se o código e achar que determinado código não está gerando travamento de registro porque a rotina não passa por ali, o que NÃO é verdadeiro. O Progress cria transações para o primeiro bloco acima de uma comando FIND... EXCLUSIVE-LOCK, ou ASSIGN/UPDATE com controle de erro (ON ENDKEY, ON ERROR) 5

6 Exemplos: Uma grande transação:... /* Início do programa Não acessa o banco de dados */ DO <var1> = 1 TO 1000: CREATE <tabela>. ASSIGN <tabela>.<campo> = <VALOR>.... /* Finalização do programa Não acessa o banco de dados */ Para este exemplo como não existe bloco superior com controle a transação deste programa fica no escopo do programa e bloqueia 1000 registros. Uma pequena transação:... /* Início do programa Não acessa o banco de dados */ DO <var1> = 1 TO 1000: DO TRANSACTION: CREATE <tabela>. ASSIGN <tabela>.<campo> = <VALOR>.... /* Finalização do programa Não acessa o banco de dados */ A transação deste programa é menor, pois fica no escopo da transação (DO TRANSACTION:... ) e bloqueia apenas 1 registro. Para isto é consumido menos memória e menos controle de.bi do que no exemplo anterior. Problema comum:... /* Início do programa Não acessa o banco de dados */ IF <condição> THEN DO: FIND <tabela> EXCLUSIVE-LOCK. UPDATE <tabela>. FOR EACH <tabela_2> EXCLUSIVE-LOCK: ASSIGN <tabela_2>.<campo> = <VALOR>.... /* Finalização do programa Não acessa o banco de dados */ No exemplo acima TODOS os registros da <tabela_2> ficarão travados devido ao fato do comando FIND...EXCLUSIVE-LOCK gerar uma transação forçando o programa a ser uma transação. Forma de corrigir:... /* Início do programa Não acessa o banco de dados */ IF <condição> THEN DO TRANSACTION: FIND <tabela> EXCLUSIVE-LOCK. UPDATE <tabela>. FOR EACH <tabela_2> EXCLUSIVE-LOCK: ASSIGN <tabela_2>.<campo> = <VALOR>.... /* Finalização do programa Não acessa o banco de dados */ 6

7 Ao diminuir-se o tamanho da transação para o FIND...EXCLUSIVE-LOCK o programa deixa de ser transação e apenas o registro que estiver em memória dentro do FOR EACH estará travado (1 por vez). 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: REPEAT <VAR> = 1 TO 100: ASSIGN <variável> = <VALOR>. DISPLAY... Foi criado desnecessariamente transações, ocupando então memória. Correção: DO <VAR> = 1 TO 100: ASSIGN <variável> = <VALOR>. DISPLAY... Não foi criado nenhuma transação, consumindo menos memória. Para saber exatamente quais as transações em um programa pode-se utilizar a opção LISTING na compilação do código e verificar em quais linhas e blocos o progress esta reconhecendo como transação Ex.: compile /cpp/programa.p listing c:/temp/trans.txt O Progress irá gerar um arquivo trans.txt com o código do programa e seus includes incorporados e após isto colocará a análise de quais blocos são ou não transação. Ex. de arquivo gerado pelo compile listing com transação na procedure (programa mau escrito) {} Line Blk DEF VAR l-testa AS LOG NO-UNDO IF l-testa THEN DO: 4 1 FIND FIRST ITEM EXCLUSIVE-LOCK. 5 1 UPDATE ITEM.it-codigo = ITEM.it-codigo FOR EACH man_docto EXCLUSIVE-LOCK: 9 1 ASSIGN man_docto.cdn_fabrica = man_docto.cdn_fabrica. 10 File Name Line Blk. Type Tran Blk. Label c:\temp\teste.p 0 Procedure Yes Buffers: mgind.item c:\temp\teste.p 3 Do No c:\temp\teste.p 8 For Yes Buffers: grdind.man_docto O programador deve tomar cuidado para não criar transações dentro de outra, pois a subtransação NÃO será liberada até que a transação seja concluída. Neste caso o programador receberá a mensagem abaixo na compilação ** WARNING--TRANSACTION keyword given within actual transaction level. 7

8 LOCK de registros O Progress possui 3 controles de LOCK (trava de registro), são eles. NO-LOCK. SHARE-LOCK. EXCLUSIVE-LOCK NO-LOCK Obtém o registro somente para leitura dos dados, utilizar sempre em relatórios para não esperar pelos registros que estão sendo atualizados ou criados. SHARE-LOCK Obtém o registro para leitura e impossibilita outros usuários de aplicar leitura como EXCLUSIVE-LOCK, quase nunca utilizado EXCLUSIVE-LOCK Obtêm o registro para alteração do mesmo, outros usuários não podem atualizar o mesmo registro até que este seja liberado Quando usuário tenta acessar um registro com exclusive-lock e que está sendo atualizado por outro usuário, este espera até que o registro seja liberado. Para não esperar até que outro usuário libere o registro o usuário pode trabalhar apenas com os registros NÃO travados ignorando os que estão sendo atualizados por outros usuários. Exemplo de acesso apenas a registros não travados : FOR EACH <tabela> NO-WAIT EXCLUSIVE-LOCK: UPDATE <tabela>.<campo> = teste. END: Ou FIND FIRST <tabela> NO-WAIT EXCLUSIVE-LOCK. IF AVAILABLE <tabela> THEN UPDATE <tabela>.<campo> = teste. Escopo de registros O escopo do registro é o tempo em que o registro está disponível no programa ou entre programas. O escopo do registro pode ser FORTE ou FRACO O escopo FRACO, é comumente utilizado, onde o programa deixa para o Progress o controle da disponibilidade do registro no programa Exemplo de escopo FRACO: <pedaço do código> DO TRANSACTION: FIND FIRST <tabela> EXCLUSIVE-LOCK. UPDATE <tabela>.<campo> = teste. DISPLAY <tabela>.<campo>. <pedaço do código> No exemplo acima o Progress mantém o registro disponível após o final da transação. 8

9 Exemplo de escopo FORTE: <pedaço do código> DO TRANSACTION for <tabela>: FIND FIRST <tabela> EXCLUSIVE-LOCK. UPDATE <tabela>.<campo> = teste. DISPLAY <tabela>.<campo>. <pedaço do código> No exemplo acima o Progress NÂO mantém o registro disponível após o final da transação e irá ocasionar um erro de compilação para este código Qual a utilização do escopo FORTE? R.: Para forçar o Progress a manter o registro disponível em memória Exemplo de escopo FRACO: FOR EACH <tabela>: IF <condição> THEN DO: FIND FIRST <tabela1> NO-LOCK. IF NOT AVAILABLE <tabela> THEN DISPLAY <tabela1>.<campo> Exemplo de escopo FORTE: DO FOR <tabela2>: FOR EACH <tabela>: IF <condição> THEN DO: FIND FIRST <tabela1> NO-LOCK. IF NOT AVAILABLE <tabela> THEN DISPLAY <tabela1>.<campo> No exemplo acima foi solicitado ao Progress que o escopo do registro ficasse disponível para o teste de available. Não utilizar WORKFILES Não é aconselhável o uso de WORKFILES devendo ser trocados pelas TEMP-TABLES. Os WORKFILES são provenientes das versões anteriores de Progress e utilizam o limite imposto pelos parâmetros s l, no caso do programa necessitar utilizar mais memória que o préalocado, o programa será interrompido com uma mensagem informando que você deve aumentar os parâmetros. O uso de TEMP-TABLES elimina estes problemas por utilizar a quantidade necessária para a alocação de registros na TEMP-TABLE, quando a quantidade ultrapassa os valores informados pelos parâmetros a TEMP-TABLE começa então a utilizar no lugar da memória o HD como área de armazenamento. 9

10 Utilização de TEMP-TABLE do tipo global Não é aconselhável a utilização de TEMP-TABLE definida como uma variável global. O consumo de memória causado por uma TEMP-TABLE pode ser muito grande, dependendo ainda, da quantidade de campos e registros. Esta variável será eliminada da memória somente ao fechar a sessão PROGRESS. Neste caso, a performance do produto é afetada como um todo e não só de um programa apenas. É possível, em muitos casos, substituir uma TEMP-TABLE global por uma TEMP-TABLE compartilhada (NEW SHARED e SHARED) ou por passagem de parâmetros. Quando possível, limpar as temp-tables após o uso, visando minimizar a utilização de memória pelo programa. Utilização do NO-UNDO em definição de variáveis e TEMP-TABLES Variáveis declaradas como NO-UNDO, não necessitam ser controladas pelo PROGRESS, isto é, quando não é utilizado o parâmetro NO-UNDO, o arquivo *.LBI (local before image este arquivo está no cliente) necessita controlar os valores armazenados pela variável. Isto aumenta I/O diminuindo a performance. Normalmente, as variáveis não precisam ser controladas caso haja problemas com o sistema, sendo assim, não é necessário ficar armazenando seus valores. Limpeza de registros nas TEMP-TABLES Uma das rotinas mais utilizadas nos programas que utilizam TEMP-TABLES é a eliminação dos dados contidos na TEMP-TABLE para geração de uma nova massa de dados. Na versão 9 do Progress, foi implementado um novo comando (EMPTY TEMP-TABLE) que torna a execução das rotinas de eliminação de TEMP-TABLES mais performática. Essa eliminação, quando for de TODOS os registros da TEMP-TABLE pode ser usada utilizando a seguinte combinação de comandos. Exemplo de Código performático : &IF integer(entry(1,proversion,".")) >= 9 &THEN empty temp-table <temp-table>. & for each <temp-table>: delete <temp-table>. end. &ENDIF Regras para utilização de índice O Progress possui algumas regras para escolher o melhor índice a ser utilizado numa consulta Este assunto é complexo, porêm vamos tentar passar os passos básicos efetuados pelo progress para a escolha do índice e o que o programador pode fazer para forçar o uso de um índice (correto) na programação. 10

11 Para forçar o progress à utilizar o índice desejado o programador pode incluir a cláusula USE-INDEX no acesso ao registro Forçando o uso do índice: for each <temp-table> USE-INDEX <nomedoindice> WHERE <condição>: delete <temp-table>. end. Como o Progress escolhe o índice automaticamente: utiliza o primeiro índice (por ordem alfabética) que satisfaz todos os campos da consulta utiliza o índice que satisfaz mais campos da consulta utiliza o índice primário para algum campo igual o da consulta varre a tabela (full scan) Exemplo de índices numa tabela primario (primario) campo A combinado campo A campo B campo C campo D sumarizado campo A campo B Verificando o uso do índice: FOR EACH <tabela> WHERE <tabela>.<campoa> = 1 and <tabela>.<campob> = 2 no-lock: O código acima utiliza o índice combinado, onde o correto para melhor performance seria o índice sumarizado. Sempre que houverem mais de um índice que satisfaça a condição para o acesso do registro deve-se forçar o uso do índice com menor número de campos. Para verificar qual o índice utilizado pelo Progress, pode-se usar a cláusula xref (Cross Reference) no momento da compilação. Ex.: compile /cpp/programa.p xref c:/temp/xref.txt Programa exemplo: DEF VAR l-testa AS LOG NO-UNDO. IF l-testa THEN DO TRANSACTION: FIND FIRST ITEM WHERE ITEM.it-codigo = "TESTE" EXCLUSIVE-LOCK. UPDATE ITEM.it-codigo = ITEM.it-codigo. FOR EACH man_docto WHERE man_docto.cdn_fabrica = 7501 EXCLUSIVE-LOCK BY man_docto.cdn_docto: ASSIGN man_docto.cdn_fabrica = man_docto.cdn_fabrica. 11

12 Segue abaixo o arquivo xref para o programa exemplo c:\temp\teste.p c:\temp\teste.p 1 COMPILE c:\temp\teste.p c:\temp\teste.p c:\temp\teste.p 1 CPINTERNAL ISO c:\temp\teste.p c:\temp\teste.p 1 CPSTREAM ibm850 c:\temp\teste.p c:\temp\teste.p 1 STRING "l-testa" 7 NONE UNTRANSLATABLE c:\temp\teste.p c:\temp\teste.p 4 STRING "item" 4 NONE UNTRANSLATABLE c:\temp\teste.p c:\temp\teste.p 4 STRING "Item" 4 NONE TRANSLATABLE c:\temp\teste.p c:\temp\teste.p 4 ACCESS mgind.item it-codigo c:\temp\teste.p c:\temp\teste.p 4 STRING "TESTE" 5 NONE TRANSLATABLE c:\temp\teste.p c:\temp\teste.p 4 SEARCH mgind.item codigo c:\temp\teste.p c:\temp\teste.p 6 ACCESS mgind.item it-codigo c:\temp\teste.p c:\temp\teste.p 6 ACCESS mgind.item it-codigo c:\temp\teste.p c:\temp\teste.p 6 UPDATE mgind.item it-codigo c:\temp\teste.p c:\temp\teste.p 9 STRING "man_docto" 9 NONE UNTRANSLATABLE c:\temp\teste.p c:\temp\teste.p 9 STRING "Documento" 9 NONE TRANSLATABLE c:\temp\teste.p c:\temp\teste.p 9 ACCESS grdind.man_docto cdn_fabrica c:\temp\teste.p c:\temp\teste.p 9 SEARCH grdind.man_docto num_programa WHOLE-INDEX c:\temp\teste.p c:\temp\teste.p 9 SORT-ACCESS grdind.man_docto cdn_docto c:\temp\teste.p c:\temp\teste.p 11 ACCESS grdind.man_docto cdn_fabrica c:\temp\teste.p c:\temp\teste.p 11 ACCESS grdind.man_docto cdn_fabrica c:\temp\teste.p c:\temp\teste.p 11 UPDATE grdind.man_docto cdn_fabrica c:\temp\teste.p c:\temp\teste.p 12 STRING "codigo" 6 NONE UNTRANSLATABLE c:\temp\teste.p c:\temp\teste.p 12 STRING "num_programa" 12 NONE UNTRANSLATABLE ACCESS access <nomedobanco>.<tabela> <nome_do_campo_referenciado> SORT-ACCESS sort-access <nomedobanco>.<tabela> <nome_do_campo_que_nao_esta_no_indice> indica que aqui pode estar acontecendo um problema performance SEARCH search <nomedobanco>.<tabela> <nome_do_índice_que_o_prog_utilizou> WHOLE-INDEX índice que o progress gerou para satisfazer a consulta STRING string <string> <tamanho_da_string> UPDATE update <nomedobanco>.<tabela> <nome_do_campo_atualizado> Truques para economizar BANDWIDTH Um dos grandes problemas de performance é a transferência de quantidades maciças de dados entre o servidor de banco de dados e o cliente que roda a aplicação. Para economizar fluxo de rede (BANDWIDTH) é interessante sempre que possível para tabelas que possuam muitos campos (Ex. item), seja utilizado a cláusula FIELDS Exemplo de Código a ser melhorado : FIND FIRST <supertabela> no-lock. DISPLAY <supertabela>.<campo5>. FOR EACH <supertabela> no-lock: ASSIGN <variável> = <supertabela>.<campo1>. Exemplo de Código performático : FOR FIRST <supertabela> FIELDS (<campo5>) no-lock: DISPLAY <supertabela>.<campo5>. 12

13 FOR EACH <supertabela> FIELDS (<campo1>) no-lock: ASSIGN <variável> = <supertabela>.<campo1>. Lembrando que numa rede ETHERNET trafega 1 (um) pacote por vez, a economia gerada pelo uso contínuo desse artifício é enorme, o que diminui o número de colisões de pacotes. Quanto menos acesso melhor Um dos problemas mais encontrados nos códigos é o acesso redundante à grandes tabelas o que degrada a performance e aumenta o consumo de recursos do servidor de banco de dados. Exemplo de Código a ser melhorado : FOR EACH <tabela>: /* possui registros */ FIND <tabela_2> WHERE <tabela_2>.<campo> = <tabela>.campo NO-LOCK. DISPLAY <tabela>.<campo> <tabela_2>.<campo>. Exemplo de Código performático : FOR EACH <tabela> BREAK BY <tabela>.<campo>: /* possui registros */ IF FIRST-OF(<tabela>.<campo>) THEN DO: FIND <tabela_2> WHERE <tabela_2>.<campo> = <tabela>.campo NO-LOCK. ASSIGN <variável> = <tabela2>.<campo>. /* uso faz com que não seja preciso alterar o layout da frame */ DISPLAY <tabela>.<campo> <tabela_2>.<campo> O código acima foi alterado para economizar acessos à segunda tabela e por conseqüência aumentar a performance do programa. Use o comando ASSIGN Otimize a carga de valores em variáveis com o comando ASSIGN, pois além de ser mais rápido, o R-CODE do programa fica menor, alocando menos memória na execução do programa. Exemplo de Código a ser melhorado : w-campo1 = texto. /* Repare o ponto final aqui */ w-campo2 = w-empresa. /* Repare o ponto final aqui */ w-tipo = A. /* Repare o ponto final aqui */ Exemplo de Código performático : ASSIGN w-campo1 = texto w-campo2 = w-empresa w-tipo = A. /* Repare o ponto final aqui */ 13

Boas Práticas de Programação

Boas Práticas de Programação Boas Práticas de Programação Tópicos que veremos Práticas de programação Performance Práticas de programação Veremos: SHARE-LOCK e LOCKS de Registros TRANSAÇÕES LOCK de registro O PROGRESS suporta três

Leia mais

Progress DCA Desenvolvendo Aplicações Caracter Parte 3

Progress DCA Desenvolvendo Aplicações Caracter Parte 3 Progress DCA Desenvolvendo Aplicações Caracter Parte 3 Tecnologia 1 Agenda Parte 1 Introdução ao Progress Movimentação dos Dados Manipulando os Dados Blocos Localizando Registros Variáveis Processamento

Leia mais

Progress DCA Desenvolvendo Aplicações Caracter Parte 1

Progress DCA Desenvolvendo Aplicações Caracter Parte 1 Progress DCA Desenvolvendo Aplicações Caracter Parte 1 Tecnologia 1 Agenda Parte 1 Introdução ao Progress Movimentação dos Dados Manipulando os Dados Blocos Localizando Registros Variáveis Processamento

Leia mais

Sincronização e Comunicação entre Processos

Sincronização e Comunicação entre Processos Sincronização e Comunicação entre Processos Monitores/Semáforos Semáforos Mecanismos de sincronização nãoestruturados; Exige do desenvolvedor bastante cuidado, pois qualquer engano pode levar a problemas.

Leia mais

Diferenças na Programação com Dataserver Oracle

Diferenças na Programação com Dataserver Oracle Diferenças na Programação com Dataserver Introdução Existem diferenças entre DB e DB : O Desenvolvedor deve ter estas diferenças em mente quando está construindo seus programas. É preciso saber para quais

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 09a- Acessando os dados através JDBC

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 09a- Acessando os dados através JDBC Aula 09a- Acessando os dados através JDBC Conteúdo Programático desta aula Compreender os comando existentes para acesso e manipulação de dados nos Bancos de dados Apresentar os dados obtidos no banco

Leia mais

MANUAL PRÁTICO DE PERFORMANCE

MANUAL PRÁTICO DE PERFORMANCE MANUAL PRÁTICO DE PERFORMANCE By Jorge Luis Bachtold INTRODUÇÃO A melhoria de performance, tanto em PROGRESS quanto em qualquer outra linguagem envolve normalmente uma série de fatores. Não existe nenhum

Leia mais

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ACESSO, ATRIBUTOS E OPERAÇÕES COM ARQUIVOS PROFESSOR CARLOS MUNIZ

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ACESSO, ATRIBUTOS E OPERAÇÕES COM ARQUIVOS PROFESSOR CARLOS MUNIZ INTRODUÇÃO À TECNOLOGIA DA OPERAÇÕES COM ARQUIVOS PROFESSOR CARLOS MUNIZ INTRODUÇÃO O Sistema de Arquivos é o modo como as informações são armazenadas nos dispositivos físicos de armazenamento, exemplo

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 6: Monitores, Troca de Mensagens e Deadlock Diego Passos Última Aulas Mecanismos de Exclusão Mútua Operações atômicas. Protocolos de controle de acesso. Spin-locks.

Leia mais

Aula 03. Evandro Deliberal

Aula 03. Evandro Deliberal Aula 03 Evandro Deliberal [email protected] https://www.linkedin.com/in/evandrodeliberal Concorrência Método Sincronização Problemas: Perda de consistência Acesso a dados inconsistentes Perda de atualizações

Leia mais

( ) ( ) Auto Avaliação F ( ) M ( ) D ( ) Seqüência: Sistemas Operacionais - UCSAL Professor : Marco Antônio C. Câmara Exercícios - Dia 20/04/2011

( ) ( ) Auto Avaliação F ( ) M ( ) D ( ) Seqüência: Sistemas Operacionais - UCSAL Professor : Marco Antônio C. Câmara Exercícios - Dia 20/04/2011 Aluno(a) : A avaliação terá a duração de uma hora, portanto, seja objetivo nas respostas e procure não perder tempo. A prova deverá ser realizada sem rasuras e com caneta azul ou preta. Eventuais questões

Leia mais

Sistemas - Kz_Config Manual do Usuário. Manual do usuário XPAcesso

Sistemas - Kz_Config Manual do Usuário. Manual do usuário XPAcesso Manual do usuário XPAcesso 1 1. Botões padrão Todas as telas de cadastro seguem o mesmo padrão de botões: Incluir Ativa opção para inclusão de novos registros no cadastro Alterar Prepara o registro para

Leia mais

Instalação... 1 Configuração... 1 UPC de validação campo a campo... 2 Configurando o monitoramento de cada campo... 3 Criação das UPCs...

Instalação... 1 Configuração... 1 UPC de validação campo a campo... 2 Configurando o monitoramento de cada campo... 3 Criação das UPCs... TUTORIAL DE INSTALAÇÃO, CONFIGURAÇÃO E USO DO SISTEMA CAMPO A CAMPO Sumário Instalação... 1 Configuração... 1 UPC de validação campo a campo... 2 Configurando o monitoramento de cada campo... 3 Criação

Leia mais

MANUAL PARA APLICAR NOTAS

MANUAL PARA APLICAR NOTAS MANUAL PARA APLICAR NOTAS Criar os Grupos de Autorização na transação SE54 Em tabela/visão informar ZYCE Marcar Grupos de Autorização Clicar em Criar/modificar Como Criar um Grupo de Autorização Informar:

Leia mais

Lock. Administração de Banco de Dados

Lock. Administração de Banco de Dados Lock Administração de Banco de Dados 1 Tópicos o Lock o Tipos de Lock o Recursos que podem ser bloqueados o Dica de Lock sobre uma Tabela o Dica de Lock em uma Sessão o Compatibilidade entre Locks 2 Lock

Leia mais

Guia de Atualização PRODUTO DATASUL

Guia de Atualização PRODUTO DATASUL Guia de Atualização PRODUTO DATASUL Unificação de Conceitos Fase 1 1. Processo de Unificação de Conceitos ALERTA: Além desse documento, consulte o guia de atualização para Datasul 11.5.3. Nele está disponível

Leia mais

Bematech Live Nota Fiscal Eletrônica 3ª Geração

Bematech Live Nota Fiscal Eletrônica 3ª Geração SUMÁRIO DESCRIÇÃO GERAL... 2 PARAMETRIZAÇÕES... 3 Unidade de Negócio... 3 Documento Fiscal Referenciado Operação Fiscal... 4 FUNCIONALIDADE... 5 Documento Fiscal Referenciado - Lançamento de Documento

Leia mais

Capítulo 8. Estruturas de Controle no Nível de Sentença

Capítulo 8. Estruturas de Controle no Nível de Sentença Capítulo 8 Estruturas de Controle no Nível de Sentença Níveis de fluxo de controle Computações são realizadas por meio da avaliação de expressões e da atribuição dos valores a variáveis Para tornar a computação

Leia mais

Banco de Dados I 6 Transações e Controle de Concorrência

Banco de Dados I 6 Transações e Controle de Concorrência Banco de Dados I 6 Transações e Controle de Concorrência Grinaldo Lopes de Oliveira (grinaldo( [email protected]) Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas * Material com créditos

Leia mais

Fundamentos Programação

Fundamentos Programação Fundamentos Programação A programação de computadores não é difícil. Realmente só requer algo como: Aprender alguns conceitos gerais Ser cuidadoso, organizado e lógico Praticar até aprender a dominar a

Leia mais

Documentação Atualizações Onix Gestão Empresarial e Nfce

Documentação Atualizações Onix Gestão Empresarial e Nfce Documentação Atualizações Onix Gestão Empresarial e Nfce Versão 1.2.131.02 10/12/2018 01. Chamado 36092 Quando instalado um sistema e for configurado os parâmetros da NFCe, ao salvar o mesmo aparece um

Leia mais

INFORMATIVO MASTERSAF DFE VERSÃO

INFORMATIVO MASTERSAF DFE VERSÃO MASTERSAF DFE VERSÃO 3.26.2 SUMÁRIO Novas funcionalidades / Melhorias... 1 Emissor de Nota Fiscal de Serviço Eletrônica NFS-e... 1 Municípios liberados na versão 3.26.2:... 1 Emissor de Nota Fiscal Eletrônica

Leia mais

Cordilheira Sistema Contábil 2.85a Conciliação Contábil

Cordilheira Sistema Contábil 2.85a Conciliação Contábil LIBERAÇÃO DE ATUALIZAÇÃO CORDILHEIRA VERSÃO 2 (Orientamos aos clientes que utilizam banco de dados SQL, para efetuarem a atualização preferencialmente após o encerramento das atividades do dia, acessando

Leia mais

Sistemas Opera r cionais Gerência de Memória

Sistemas Opera r cionais Gerência de Memória Sistemas Operacionais Gerência de Memória Gerência de Memória Idealmente, o que todo programador deseja é dispor de uma memória que seja grande rápida não volátil Hierarquia de memórias pequena quantidade

Leia mais

BDII SQL TRANSAÇÃO Revisão 2

BDII SQL TRANSAÇÃO Revisão 2 exatasfepi.com.br BDII SQL TRANSAÇÃO Revisão 2 André Luís Duarte Honra a teu pai e a tua mãe (que é o primeiro mandamento com promessa), para que te vá bem, e sejas de longa vida sobre a terra.(ef 6:2,3)

Leia mais

Implementando PWM por soft - um método simples. Por Renie S. Marquet reniemarquet.sites.com.br - versão

Implementando PWM por soft - um método simples. Por Renie S. Marquet reniemarquet.sites.com.br - versão Implementando PWM por soft - um método simples. Por Renie S. Marquet reniemarquet.sites.com.br - versão 25.02.2005 O PWM (Pulse Width Modulation Modulação por largura de pulso) consiste em controlar o

Leia mais

Processo de Balanço de Estoque (Inventário de Estoque)

Processo de Balanço de Estoque (Inventário de Estoque) Processo de Balanço de Estoque (Inventário de Estoque) Introdução O Inventário de Estoque (Balanço) é uma atividade realizada em determinados períodos de tempo, em que todos os itens do estoque são contados,

Leia mais

Administração de Banco de Dados

Administração de Banco de Dados Administração de Banco de Dados Aula 6 Prof. Marcos Alexandruk Aula 6 Estruturas lógicas do Oracle: Tabelas tabelas relacionais tabelas temporárias tabelas organizadas por índices tabelas de objetos tabelas

Leia mais

EXEMPLO DE FLASHBACK VERSIONS QUERY E FLASHBACK TRANSACTION QUERY

EXEMPLO DE FLASHBACK VERSIONS QUERY E FLASHBACK TRANSACTION QUERY EXEMPLO DE FLASHBACK VERSIONS QUERY E FLASHBACK TRANSACTION QUERY A funcionalidade do recurso Flashback Query disponível desde a versão Oracle 9i e abordada também nos artigos de Maio/2007 e Maio/2008,

Leia mais

Controle de Transação

Controle de Transação Curso: Ciência da Computação Disciplina: Banco de Dados Campus Lages Controle de Transação Prof. Edjandir C. Costa [email protected] Agenda Conceitos de transação e sistema Propriedades desejáveis

Leia mais

Sub Rotinas. Estrutura de Dados. Prof. Kleber Rezende

Sub Rotinas. Estrutura de Dados. Prof. Kleber Rezende Sub Rotinas Estrutura de Dados Prof. Kleber Rezende Considerações Iniciais Uma dos métodos mais comuns e amplamente utilizados em programação de computadores é o Top-Down. Nesta abordagem um problema é

Leia mais

Tratamento de Exceções. LPG II Java. Tratamento de Exceções. Conceito de Exceções. Exemplo

Tratamento de Exceções. LPG II Java. Tratamento de Exceções. Conceito de Exceções. Exemplo Tratamento de Exceções LPG II Java Tratamento de Exceções Introdução Princípios do tratamento de exceções em Java Cláusula try Cláusula catch Cláusula finally Hierarquia de exceções em Java Considerações

Leia mais

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi Programando em SQL Triggers, Stored Procedures e funções Objetivo Descrever as funcionalidades de triggers, store procedures e funções; Apresentar vantagens e benefícios; Criação e Gerenciamento de Store

Leia mais

IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias

IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias 1 IDES E PROGRAMAÇÃO Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias {claudio,macdias}@icmc.usp.br 2 Agenda Conceitos Instalação e Configuração Compilação e Execução de Código IDEs Exemplo

Leia mais

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas Processamento e Otimização de Consultas Banco de Dados Motivação Consulta pode ter sua resposta computada por uma variedade de métodos (geralmente) Usuário (programador) sugere uma estratégia para achar

Leia mais

Variáveis primitivas e Controle de fluxo

Variáveis primitivas e Controle de fluxo Variáveis primitivas e Controle de fluxo Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 19: Memória Virtual: Introdução Diego Passos Última Aula Paginação Método de gerenciamento de memória mais usado hoje. Espaço de endereçamento de um processo é

Leia mais

Stored Procedures e Triggers

Stored Procedures e Triggers e Triggers Professor: Ricardo Luis dos Santos IFSUL 2015 Agenda Rotinas Armazenadas Stored Procedures Exemplos Triggers Exemplos Exercícios 2 Rotinas Armazendas Rotinas Armazenadas são um conjunto de comandos

Leia mais

Sistemas de Informação. Sistemas Operacionais

Sistemas de Informação. Sistemas Operacionais Sistemas de Informação Sistemas Operacionais SISTEMA DE ARQUIVOS SUMÁRIO 7. SISTEMA DE ARQUIVOS: 7.1 Introdução; 7.2 s; 7.3 Diretórios; 7.4 Gerência de Espaço Livre em Disco; 7.5 Gerência de Alocação de

Leia mais

ThinTemplates Parte 2

ThinTemplates Parte 2 ThinTemplates Parte 2 Tecnologia 1 Agenda Parte 1 Conceitos Características ThinMaintenance ThinMasterDetail Parte 2 ThinMaintenanceNoNavigation Parte 3 ThinWindow ThinReport 2 Agenda ThinFormation Parte

Leia mais

MATA60 BANCO DE DADOS Aula 10- Indexação. Prof. Daniela Barreiro Claro

MATA60 BANCO DE DADOS Aula 10- Indexação. Prof. Daniela Barreiro Claro MATA60 BANCO DE DADOS Aula 10- Indexação Prof. Daniela Barreiro Claro Indexação Indexação em SQL; Vantagens e Custo dos Índices; Indexação no PostgreSQL; FORMAS - UFBA 2 de X; X=23 Indexação Sintaxe: create

Leia mais

f. Exemplo: verificar condição de aprovação de alunos

f. Exemplo: verificar condição de aprovação de alunos Tecnologia em Análise e Desenvolvimento de Sistemas Disciplina: B1SGB - Sistemas Gerenciadores de Banco de Dados Memória de aula Semana 17 1) Expressões CASE a. Tem a mesma finalidade que nas linguagens

Leia mais

SGBD. Funções Básicas de um SGBD

SGBD. Funções Básicas de um SGBD SG Definição Sistema cujo objetivo principal é gerenciar o acesso e a correta manutenção dos dados armazenados em um banco dados. Funções básicas Métodos acesso Integrida Semântica Segurança Concorrência

Leia mais

( ) Sistemas de Computação - Unifacs Professor : Marco Antônio C. Câmara - Lista de Exercícios II - Dia 18/10/2009

( ) Sistemas de Computação - Unifacs Professor : Marco Antônio C. Câmara - Lista de Exercícios II - Dia 18/10/2009 1ª Questão : Sobre o conceito de sistema operacional, escreva ao lado a soma dos números dos itens que considera corretos: (01) O conceito da máquina de níveis define o hardware como o nível mais baixo,

Leia mais

A instância Oracle é composta de :

A instância Oracle é composta de : Conceitos básicos da arquitetura do Oracle Uma instância Oracle consiste na System Global Area (SGA) e um conjunto de processos de segundo plano (background processes). Quando uma instância é iniciada,

Leia mais

Manual Técnico. Instalação e Configuração do Reporting Services

Manual Técnico. Instalação e Configuração do Reporting Services 201 6 Manual Técnico Instalação e Configuração do Reporting Services Me ta T e c no l o g i a em So f t wa r e Lt da. Com a instalação do módulo de Reporting services poderemos disponibilizar relatórios,

Leia mais

Paginação e Segmentação. Memória Principal

Paginação e Segmentação. Memória Principal Paginação e Segmentação Memória Principal Paginação Memória Principal Paginação A paginação é um recurso gerenciado por Hardware; Ela divide a memória física em várias partes de tamanho igual, chamados

Leia mais

Android e Bancos de Dados

Android e Bancos de Dados (Usando o SQLite) Programação de Dispositivos Móveis Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do

Leia mais

Introdução. O BOCA Online Contest Administrator é um sistema de correção online de códigos utilizado em competições de programação de computadores.

Introdução. O BOCA Online Contest Administrator é um sistema de correção online de códigos utilizado em competições de programação de computadores. Aula BOCA Introdução O BOCA Online Contest Administrator é um sistema de correção online de códigos utilizado em competições de programação de computadores. A correção é feita através de casos de teste:

Leia mais

Liberação Especial GPS

Liberação Especial GPS GPS 12.1.10-1 Sumário 1.1 Liberações... 4 1.1.1 Prestador x Atuação x Especialidade... 4 1.1.2 Habilitar os campos de ano e trimestre na guia de seleção... 4 1.1.3 Validar alterações em beneficiários conforme

Leia mais

SQL Pacotes. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados Pacotes

SQL Pacotes. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados Pacotes SQL Pacotes Laboratório de Bases de Dados Características Pacotes objetos do banco de dados são equivalentes a bibliotecas Armazenam procedimentos funções definições de cursores declarações de variáveis

Leia mais

NOVIDADES/MELHORIAS ERP SOLUTION. Versão

NOVIDADES/MELHORIAS ERP SOLUTION. Versão VERSÃO 008.018 NOVID AD ES E MELHORIAS E112A9 Jessica Pinheiro 16/05/2016 2/18 NOVIDADES/MELHORIAS ERP SOLUTION Versão 008.018 1. Configuração de situação cadastral padrão para novos clientes.... 3 2.

Leia mais

Tabelas. Banco de Dados I MySQL

Tabelas. Banco de Dados I MySQL FACULDADE ANGLO AMERICANO FOZ DO IGUAÇU Curso de Ciência da Computação 5º Período Disciplina: Banco de Dados I Prof. Erinaldo Sanches Nascimento Tabelas Banco de Dados I MySQL Linguagem de Definição de

Leia mais

1) Mostrando uma mensagem. 10 exemplos de macros essenciais no Excel. Este conteúdo faz parte da série: Excel VBA Ver 6 posts dessa série

1) Mostrando uma mensagem. 10 exemplos de macros essenciais no Excel. Este conteúdo faz parte da série: Excel VBA Ver 6 posts dessa série Este conteúdo faz parte da série: Excel VBA Ver 6 posts dessa série Para aproveitar toda a potencia que o Excel possui, é indispensável a utilização de macros. Macro poder ser definida como uma serie de

Leia mais

Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP

Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP Campus de Caraguatatuba Tecnólogo em Análise e Desenvolvimento de Sistemas 1 0 Semestre de 2013 BD I Prof. Lineu Mialaret Aula 25:

Leia mais

GBC043 - Sistemas de Banco de Dados Lab8 : Transações no PostgreSql

GBC043 - Sistemas de Banco de Dados Lab8 : Transações no PostgreSql GBC043 - Sistemas de Banco de Dados Lab8 : Transações no PostgreSql Ilmério Reis da Silva [email protected] www.facom.ufu.br/~ilmerio/sbd UFU/FACOM/BCC Transações Ver conjunto de slides na opção Transações

Leia mais

Sistemas de Informação. Sistemas Operacionais

Sistemas de Informação. Sistemas Operacionais Sistemas de Informação Sistemas Operacionais PROCESSOS E THREADS PARTE I SUMÁRIO 2. PROCESSO: 2.1 Introdução; 2.2 Estrutura do Processo; 2.3 Estados do Processo; 2.4 Mudanças de Estado do Processo; 2.5

Leia mais

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

#include <stdio.h> Void main() { printf( Cheguei!\n); } INTRODUÇÃO A LINGUAGEM C #include Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C ANTES DO C ERA A LINGUAGEM B B foi essencialmente uma simplificação da linguagem BCPL. B só tinha um tipo de dado, que

Leia mais

Inventário Rotativo (Coletor de Dados)

Inventário Rotativo (Coletor de Dados) Inventário Rotativo (Coletor de Dados) Inventario Rotativo com coletor Conceito O conceito do inventário rotativo no WinThor, é atualizar as quantidades do estoque no sistema por filiais (estoque lógico)

Leia mais

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado

Leia mais

OFIC1400 Requisição de Peças para Serviços. OFIC Requisição de Peças para Serviços 1 / 10

OFIC1400 Requisição de Peças para Serviços. OFIC Requisição de Peças para Serviços 1 / 10 OFIC1400 Requisição de Peças para Serviços 1 / 10 Este programa permite requisitar peças para uma determinada O.S. Como critério de filtro estarão disponíveis a seguintes opções Requisição, Estorno e Consulta

Leia mais

Comando de Seleção em Java

Comando de Seleção em Java Universidade Federal do ABC (UFABC) Disciplina: Processamento da Informação (BC-0505) Assunto: Comando de Seleção Comando de Seleção em Java Conteúdo 1. Introdução... 1 2. Comando de seleção... 2 3. Comandos

Leia mais

Manual de Versão Sistema Condomínio21

Manual de Versão Sistema Condomínio21 Manual de Versão Sistema Condomínio21 Belo Horizonte, 2016. Group Software. Todos os direitos reservados. Sumário 1. Parâmetro para determinar a inicialização automática do Condomínio21 Relatórios... 3

Leia mais

Linguagem C Princípios Básicos (parte 1)

Linguagem C Princípios Básicos (parte 1) Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos

Leia mais

Integração Backoffice Datasul 11 x Protheus/SIGAGFE

Integração Backoffice Datasul 11 x Protheus/SIGAGFE Integração Backoffice Datasul 11 x Protheus/SIGAGFE Maio/2014 Simulação do Frete no Cálculo de Embarques do Datasul e Repasse de Fretes e Gravação da Simulação no SIGAGFE Sumário Sumário... 1 1. Contexto

Leia mais

GUIA DO MÓDULO OFICINA

GUIA DO MÓDULO OFICINA Fernanda Klein Both 26/08/2013 1/11 GUIA DO MÓDULO OFICINA Sumário 1. Comandos do ERP Solution... 3 2. Cadastro de Parâmetros (2001)... 3 3. Cadastro de Veículos de Clientes (2003)... 3 4. Cadastro de

Leia mais

Semana 2 Estruturas de Condição, Seleção e Repetição. Prof. Tiago Jesus de Souza

Semana 2 Estruturas de Condição, Seleção e Repetição. Prof. Tiago Jesus de Souza Atualização Técnica e Pedagógica de Professores no componente de Lógica de Programação com C# (console) Semana 2 Estruturas de Condição, Seleção e Repetição Prof. Tiago Jesus de Souza Introdução Nesta

Leia mais

Estrutura de Dados. Aula 07 Alocação Dinâmica

Estrutura de Dados. Aula 07 Alocação Dinâmica Estrutura de Dados Aula 07 Alocação Dinâmica 2 ALOCAÇÃO DINÂMICA Existem três modos de reservar espaço de memória para o armazenamento de informações: 1ª - através do uso de variáveis globais (e estáticas).

Leia mais

2017 Gvdasa Inteligência Educacional Cobrança Registrada

2017 Gvdasa Inteligência Educacional Cobrança Registrada 2017 Gvdasa Inteligência Educacional Cobrança Registrada - 2017 1 AVISO O conteúdo deste documento é de propriedade intelectual exclusiva da GVDASA e está sujeito a alterações sem aviso prévio. Nenhuma

Leia mais

Prof. Josenildo Silva

Prof. Josenildo Silva BD II (SI 587) Gatilhos (Triggers) Prof. Josenildo Silva [email protected] Motivação Algumas rotinas precisam ser executadas antes ou depois de um determinado evento no banco de dados Motivação Regras

Leia mais

Procedimentos para Atualização Sisloc

Procedimentos para Atualização Sisloc Procedimentos para Atualização Sisloc Sumário: 1. Informações Gerais... 3 2. Atualização de versão no servidor... 3 Passo a passo... 3 3. Atualização de Versão nas Demais Máquinas... 9 Passo a passo...

Leia mais

Escrito por Adriano Neres Rodrigues Qua, 30 de Dezembro de :00 - Última atualização Qua, 30 de Dezembro de :01

Escrito por Adriano Neres Rodrigues Qua, 30 de Dezembro de :00 - Última atualização Qua, 30 de Dezembro de :01 Introdução Geralmente as aplicações que nós desenvolvimentos possui vários formulários. Geralmente estes formulários são criados dinamicamente pela sua aplicação em tempo de execução através de código

Leia mais

26/04/2017 Triggers no SQL Server: teoria e prática aplicada em uma situação real

26/04/2017 Triggers no SQL Server: teoria e prática aplicada em uma situação real www.devmedia.com.br [versão para impressão] Link original: http://www.devmedia.com.br/articles/viewcomp.asp?comp=28194 Triggers no SQL Server: teoria e prática aplicada em uma situaçã o real Veja neste

Leia mais

AUTOLAC VERSÃO FINALIZAÇÃO: 27 JUL PUBLICAÇÃO: 31 JUL. 2017

AUTOLAC VERSÃO FINALIZAÇÃO: 27 JUL PUBLICAÇÃO: 31 JUL. 2017 VERSÃO 6.8.0 FINALIZAÇÃO: 27 JUL. 2017 PUBLICAÇÃO: 31 JUL. 2017 Prezado Cliente, Neste documento estão descritas todas as novidades da versão 6.8.0 do Autolac. Fique atento às últimas alterações do sistema.

Leia mais

Memória virtual. Sistemas de Computação

Memória virtual. Sistemas de Computação Memória virtual Fundamentos Memória virtual separação da memória lógica do usuário da memória física somente uma parte do programa precisa estar na memória para execução espaço de endereçamento lógico

Leia mais

A linguagem SQL

A linguagem SQL SQL 2008.1 A linguagem SQL SQL - Structured Query Language. Foi definida nos laboratórios de pesquisa da IBM em San Jose, California, em 1974. Teve seus fundamentos no modelo relacional Sua primeira versão

Leia mais

CAP. VI ANÁLISE SEMÂNTICA

CAP. VI ANÁLISE SEMÂNTICA CAP. VI ANÁLISE SEMÂNTICA VI.1 Introdução Semântica SIGNIFICADO, SENTIDO LÓGICO, COERÊNCIA,... Diferença entre SINTAXE e SEMÂNTICA Sintaxe : descreve as estruturas de uma linguagem; Semântica : descreve

Leia mais