Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
O AP5 IDE é um ambiente de desenvolvimento integrado que acompanha o Advanced Protheus, permitindo ao
usuário editar, compilar e depurar programas escritos na linguagem ADVPL.
Como ferramenta de edição, possui todos os recursos das ferramentas mais populares, como cortar e colar, levar o
cursor até determinada linha do código, localização e substituição de texto, etc., e recursos adicionais, como
identação de código, inserção de comentários de documentação, etc.
Como ferramenta de debug, dispõe de ações de debug como Percorrer Linha, Pular Linha, Executar, Seguir até o
Retorno, Pausar Execução, Derrubar Client, etc., permitindo ao usuário executar e depurar suas rotinas de dentro
de seu ambiente integrado, inspecionando o ambiente de execução de suas rotinas através de diversas janelas de
informações, como variáveis (divididas entre variáveis locais, variáveis públicas, variáveis privadas e variáveis
estáticas), expressões em Watch, tabelas, índices e campos, break points, programas registrados (inspetor de
objetos) e pilha de chamadas. Além disso, os programas criados são compilados diretamente do AP5 IDE, onde
são mantidos em projetos e grupos de projetos. Os grupos de projetos facilitam a compilação de um ou mais
projetos de arquivos, utilizando conceitos de repositórios e diretivas de compilação, possibilitando inclusive a
manutenção de bibliotecas de rotinas do usuário.
Configurações do Debugger
A pasta de configurações do debugger (figura 1), exibe as opções básicas para o processamento do AP5 IDE em
modo de debug e do editor. Aqui são definidas as configurações para a localização dos arquivos de código fonte
durante o processo de debug, se o AP5 IDE deve ignorar automaticamente os arquivos não encontrados, o
tamanho da tabulação, do número de Undo's, etc.
O padrão de teclas utilizado identifica quais serão as teclas para o acionamento das principais funções de debug do
AP5 IDE. Os padrões possíveis são os mesmos utilizados pelas linguagens de programação FiveWin, Visual C++
e Delphi, tornando fácil a assimilação para usuários de algumas destas ferramentas. Para cada um dos padrões
utilizados, as combinações de teclas para o acionamento das ações de debug serão:
FiveWin
Percorrer Linha F8 Seguir até o Retorno F7
Pular Linha F10 Localizar Ctrl+L
Executar F5 Localizar Próximo F3
Adicionar Break Point F9 Ir para a linha "n" Ctrl+G
Visual C++
Percorrer Linha F11 Seguir até o Retorno Ctrl+F10
Pular Linha F10 Localizar Ctrl+F
Executar F5 Localizar Próximo F3
Adicionar Break Point F9 Ir para a linha "n" Ctrl+G
Delphi
Percorrer Linha F7 Seguir até o Retorno F4
Pular Linha F8 Localizar Ctrl+F
Executar F9 Localizar Próximo F3
Adicionar Break Point F5 Ir para a linha "n" Ctrl+G
O campo Tabulação indica o número de caracteres que serão usados para cada tecla de tabulação (código ASC II
#9), na identação do código.
O campo Arquivos na Lista de Recentemente Abertos indica o número máximo de arquivos que serão mantidos na
lista de recentemente abertos, que se encontra no final do menu Arquivo, para possibilitar a abertura rápida dos
mesmos. Indicando zero (0), não será mantida uma lista dos arquivos recentemente abertos.
A opção Exibir Régua com o Número de Linhas indica se o AP5 IDE deve exibir uma régua com os números das
linhas em um novo gutter na margem esquerda de cada arquivo aberto, para facilitar a localização visual do
usuário.
Quando em processo de debug, especificamente durante os comandos de Percorrer Linha e Pular Linha, a
execução é feita linha-a-linha do código. Para isso, o AP5 IDE localiza os arquivos de código fonte, abre-os e
posiciona o cursor na linha em execução. Para os arquivos não encontrados, o IDE questionará o usuário por seu
caminho. Se não forem encontrados, não poderão ser abertos para o posicionamento da linha e serão colocados em
uma lista de arquivos ignorados (até que o IDE seja reinicializado). Para facilitar a localização, pode-se digitar
neste campo uma lista de paths onde os arquivos devem ser procurados. Os paths devem ser separados com o sinal
de ponto-e-vírgula (;).
Quando em processo de debug, especificamente durante os comandos de Percorrer Linha e Pular Linha, a
execução é feita inha-a-linha do código. Para isso, o AP5 IDE localiza os arquivos de código fonte, abre-os e
posiciona o cursor na linha em execução. Porém se não for possível encontrar o arquivo de código fonte, o IDE
questionará o usuário pelo caminho onde o arquivo pode ser encontrado. Se o usuário realmente não tiver o
arquivo e cancelar a localização do mesmo, o IDE não o questionará mais (até que o IDE seja reinicializado). Para
evitar que seja questionado a cada arquivo não encontrado, pode-se marcar esta opção. Assim todos os arquivos
não encontrados serão adicionados automaticamente à lista de arquivos ignorados.
Note que os break points eventualmente contidos em um fonte não encontrado não farão com que o
processamento pare. Do mesmo modo, executando o comando Percorrer Linha sobre uma função
que esteja em um arquivo de código-fonte não encontrado, fará com que a função seja normalmente
executada e a parada volte a ocorrer somente na próxima linha, depois do retorno da função.
A pasta de configurações do
código (figura 2), exibe as opções
para controle da diferenciação de
sintaxe no editor do AP5 IDE.
Aqui você pode habilitar ou
desabilitar a diferenciação de
sintaxe bem como configurar as
cores para cada elemento de texto
que pode ser diferenciado.
Os elementos de texto são tipos de expressões que devido a sua finalidade são classificados em grupos separados.
Como por exemplo, palavras reservadas ao compilador, strings de caracteres, números, etc. Nesta lista são
apresentados os diferentes elementos de texto que permitem a diferenciação de sintaxe no AP5 IDE. O elemento
deve ser selecionado nesta lista para que se possa configurar suas cores e estilo. Todas as demais configurações
nesta mesma pasta serão, então, relacionadas com o elemento atualmente selecionado.
Nesta lista de opções pode-se escolher qual o estilo será aplicado ao elemento de texto selecionado na lista de
elementos.
Nesta lista de cores pode-se escolher qual será a cor aplicada ao elemento de texto selecionado na lista de
elementos.
Nesta lista de cores pode-se escolher qual será a cor de fundo aplicada ao elemento de texto selecionado na lista de
elementos.
Selecionando-se esta opção, o AP5 IDE não se utilizará da diferenciação de sintaxe no código dos arquivos
abertos. Apesar de que o uso diferenciação de sintaxe não consuma muitos recursos, o atualização das janelas
pode ficar mais rápida com esse recurso desabilitado. Desabilitando a diferenciação, as cores de todo o texto serão
aquelas definidas no Windows da estação.
Para a alteração da fonte do texto, utilize a opção Escolha de Fonte no menu Arquivo. A fonte não
pode ser diferenciada para os elementos de texto do código. Apenas o estilo e as cores.
A pasta de configurações de
Controle de Versão (figura 3), exibe
as opções para a integração de um
software de controle de versão ao
AP5 IDE. Nesta pasta são definidos
os comandos básicos para
acionamento do software
controlador de versão através de
linha de comando. Estes comandos
podem ser acionados
automaticamente pelo AP5 IDE ou
pela requisição do usuário através
dos botões da barra de ferramentas
de controle de versão.
A opção Utiliza Controle de Versão indica que será utilizado um software de controle de versão para controlar a
reserva e a alteração de arquivos de código-fonte. Ao acionar esta opção uma janela com os softwares
controladores de versão compatíveis (figura 4) será apresentada para que o usuário escolha aquele que esteja
utilizando. A confirmação desta janela traz nos campos das linhas de comando as sintaxes utilizadas pelo software
escolhido sugeridas. Caso o software utilizado não se encontre na lista de softwares compatíveis, o usuário deverá
consultar a documentação que o acompanha e fornecer manualmente as sintaxes para as linhas de comandos.
Software Controlador de
Versão
O campo Última Versão indica os parâmetros passados para o Software Controlador de Versão para realizar uma
obtenção da última versão do arquivo de código aberto no momento. Pode-se utilizar macros para obtenção do
nome do arquivo corrente, path, etc. Veja a Tabela de Macros para informações das macros disponíveis no AP5
IDE.
O campo Reservar indica os parâmetros passados para o Software Controlador de Versão para realizar a reserva
do arquivo de código fonte aberto no momento. Pode-se utilizar macros para a obtenção do nome do arquivo
corrente, path, etc. Veja a Tabela de Macros para informações das macros disponíveis no AP5 IDE.
Note que apesar desta linha de comando poder ser acessada através da barra de ferramentas, não se
deve fugir de seu objetivo (reservar o arquivo aberto no servidor de arquivos), pois quando o uso de
controle de versão está habilitado no AP5 IDE, esta linha de comando é executada automaticamente no
momento que alguma alteração está prestes a ser efetuada em um arquivo. Caso necessite executar algo
diferente, utilize-se das ferramentas no menu Ferramentas.
O campo Cancelar indica os parâmetros passados para o Software Controlador de Versão para realizar o
cancelamento da última reserva efetuada pelo usuário, do arquivo de código aberto no momento. Pode-se utilizar
macros para obtenção do nome do arquivo corrente, path, etc. Veja a Tabela de Macros para informações das
macros disponíveis no AP5 IDE.
O campo Confirmar indica os parâmetros passados para o Software Controlador de Versão para realizar a
confirmação do arquivo de código fonte aberto no momento. Pode-se utilizar macros para obtenção do nome do
arquivo corrente, path, etc. Veja a Tabela de Macros para informações das macros disponíveis no AP5 IDE.
O campo Adicionar indica os parâmetros passados para o Software Controlador de Versão para adicionar o
arquivo de código fonte aberto no momento no controle de versão. Pode-se utilizar macros para a obtenção do
nome do arquivo corrente, path, etc. Veja a Tabela de Macros para informações das macros disponíveis no AP5
IDE.
O campo Remover indica os parâmetros passados para o Software Controlador de Versão para remover o arquivo
de código fonte aberto no momento do controlador de versão. Pode-se utilizar macros para a obtenção do nome do
arquivo corrente, path, etc. Veja a Tabela de Macros para informações das macros disponíveis no AP5 IDE.
A Edição de Arquivos
O AP5 IDE suporta a edição de arquivos no formato texto, sendo que as extensões padrões são PRW, PRX e PRG.
Todos os arquivos gravados pelo IDE, são gravados contendo como finalizadores de linha os caracteres de código
ASC II 10 e 13 (LF e CR). Através das opções dos menus o usuário tem um controle amplo da formatação do
texto, com facilidades de cópia e edição de múltiplos arquivos como uma aplicação MDI.
Para o envio de um arquivo via e-mail o usuário deve ter instalado e configurado em sua
máquina um cliente de e-mail como por exemplo o Microsoft Outlook. O arquivo físico,
ou seja, a cópia gravada no disco será enviado como um "attachment" via e-mail.
Portanto qualquer alteração efetuada no buffer de edição que não tenha sido gravada não
constará do "attachment" no e-mail.
Muito importante: Se o usuário finalizar o AP5 IDE sem que uma sessão de debug tenha sido
encerrada, o AP5 IDE irá tentar encerrar esta sessão antes de finalizar enviando ao Server o comando
Derrubar Client (que será detalhado mais a frente no tópico sobre Utilização do Debug do AP5 IDE).
Porém, a finalização do AP5 Remote nem sempre é imediata visto que o controle do envio das
mensagens pode não estar com o AP5 IDE no momento da finalização. Isto pode acarretar na
finalização do AP5 IDE sem que o AP5 Remote
seja finalizado, ou seja, o processo de
execução do AP5 Remote ficará preso na memória
da estação.
Recursos de Edição
No item Texto, existem opções para transformar o texto selecionado para caracteres maiúsculos ou minúsculos e
até mesmo uma opção para identar o arquivo.
If(<Expressão>)
<Comando>
Endif
Isso se deve ao fato de que o comando IF seguido de um parênteses é confundido com a função IF:
IF(<Expressão>,<Comando1>,<Comando2>) que não é um indicador de início de bloco de
controle de fluxo, ou seja, não termina com um ENDIF. Isto é facilmente corrigido incluindo-se um
caracter de espaço entre o comando e o sinal de parênteses:
If (<Expressão>)
Se o AP5 IDE encontrar uma linha como a descrita anteriormente simplesmente exibirá uma
mensagem de erro na identação, exibindo a linha onde tal erro foi encontrado, e cancelará o processo
de identação. O usuário também pode cancelar o processo de identação clicando no botão Cancela
que aparece na barra de status do AP5 IDE. Em qualquer um dos casos, quando a identação é
cancelada, o código não é alterado.
Existem também opções para inserir caracteres ASC II e os comentários padronizados para documentação no
código, utilizando a fonte configurada. Também no menu Editar se encontram as opções de navegação no código.
São as opções para posicionamento do cursor em determinado número de linha e posicionamento do cursor na
linha em execução (somente quando o AP5 IDE estiver com uma sessão de debug aberta) no arquivo selecionado.
A opção Localizar exibe a janela de localização de texto.
Assim que o texto é localizado, o AP5 IDE move o cursor até sua localização e marca o texto encontrado,
fechando a janela de localização de texto. Pode-se utilizar a opção Repetir Procura para continuar localizando a
expressão com as mesmas configurações sem precisar abrir a janela de localização novamente.
Se o path informado juntamente com a máscara não for informado, será considerado o path atual. Se o path for
inválido, não haverá erros emitidos ao usuário. Apenas nenhuma ocorrência da expressão será encontrada. Se o
usuário desejar pesquisar a mesma máscara nos subdiretórios, deverá marcar a opção Pesquisar Subdiretórios. A
seleção da opção Repetir Procura não vale para a localização em arquivos. Se for requisita a pesquisa será feita
como uma localização comum no arquivo aberto.
Durante a localização em arquivos, uma janela de localização é exibida. Pressionando-se a tecla <ESC> ou
fechando-se esta janela a pesquisa é interrompida. Após a finalização da localização em arquivos, basta efetuar um
duplo clique em qualquer uma das ocorrências encontradas para que o arquivo seja editado e o cursor posicionado
na linha da ocorrência. Diferentemente da localização simples, esta não traz o texto selecionado no editor do AP5
IDE.
A opção Substituir (figura 11) funciona
exatamente como a localização simples,
porém substituindo as expressões
encontradas por uma expressão definida
pelo usuário. Tem as mesmas opções de
pesquisa e um campo para a digitação da
expressão a ser substituída. Pressionando
o botão OK o AP5 IDE irá substituir
apenas a primeira ocorrência da expressão
encontrada.
Figura 10 - Janela com os resultados da localização. Um duplo clique abre
o arquivo para edição posicionando na linha onde a expressão foi
encontrada.
A rotina de substituição, como a rotina de localização de expressões, também marca as ocorrências encontradas.
Porém, para facilitar a visualização, o AP5 IDE tenta posicionar a caixa de diálogo que questiona o usuário sobre
a substituição das ocorrências de modo a permitir a visualização do texto marcado de um modo que a caixa de
Este é recurso de edição bastante útil que não se encontra disponível através dos menus ou
botões das barras de ferramentas. Um book mark é um ponto marcado em uma linha que
permite a rápida localização e posicionamento do cursor, permitindo ao usuário marcar
pontos importantes no código para poder voltar o posicionamento do cursor no local
marcado através de uma combinação de teclas. Para adicionar ou remover um book mark
em uma linha de código, o usuário deve posicionar o cursor sobre a linha desejada e utilizar a
combinação de teclas CTRL+SHIFT+<n>, onde n é um número de 0 a 9. Pode-se manter
apenas 10 book marks por arquivo. Para localizar um book mark, o usuário deve utilizar a
combinação de teclas CTRL+<n>. Os book marks existentes são indicados na borda
esquerda dos arquivos através de imagens contendo o número do book mark (figura 12).
Figura 12 - Linhas marcadas com
Book Marks
No menu acionado pelo botão direito do mouse ainda existem duas opções para importação e exportação do
Grupo de Projetos de/para um arquivo texto. Isto permite ao usuário manter cópias de segurança de grupos de
projetos longos, de modo que se ocorrer algum problema no arquivo binário onde os projetos são mantidos, as
informações possam ser facilmente restauradas do arquivo texto formatado.
Adicionar um arquivo em uma pasta significa adicionar o nome do arquivo em uma lista, e não
adicionar o arquivo propriamente dito ao projeto. Para qualquer tratamento com o arquivo, o AP5
IDE irá localizá-lo no path gravado. Assim os arquivos podem ser mantidos em outros diretórios que
não o da execução do sistema. O Gerenciador de Projetos utiliza os seguintes ícones de imagens para
indicar situações nos arquivos mantidos na lista:
Quando o arquivo for compilado com sucesso, o AP5 IDE indicará através deste ícone. Quando
o grupo de projetos é gravado, um flag de compilado é gravado para o arquivo. Isto é necessário para
evitar a recompilação do arquivo até que o mesmo seja alterado ou que o usuário acione o comando
"Compilar Tudo".
Quando houver alterações no arquivo, o AP5 IDE indicará através deste ícone. A identificação
de alteração é efetuada através da data e hora do arquivo que é mantida no arquivo de grupo de
projetos desde sua última gravação. Desse modo, o AP5 IDE somente identificará que o arquivo teve
modificações quando o mesmo for gravado. Ou seja, alterações efetuadas no buffer de edição do
arquivo que não forem gravadas, não serão consideradas na gravação. O AP5 IDE sempre compilará o
arquivo encontrado no path indicado no Gerenciador de Projetos. Quando o arquivo é indicado como
modificado, o flag de compilado (se existir) será removido para indicar que o arquivo deve ser
recompilado.
Se o arquivo não for encontrado no path indicado no Gerenciador de Projetos, o AP5 IDE
indicará através deste ícone. Isto pode acontecer, por exemplo, se o arquivo for deletado do diretório
sem ser removido do projeto em que se encontra.
A reavaliação do status dos arquivos (que poderá exibir os ícones acima) é efetuada sempre que
possível nas principais operações referentes ao Gerenciador de Projetos. Por exemplo, quando um
arquivo é adicionado ou removido, quando o nome de um projeto ou pasta é modificado, quando uma
pasta ou um projeto é criado ou removido, quando um projeto é compilado, quando um arquivo
contido no Gerenciador de Projetos é gravado, etc. Desse modo, por exemplo a deleção de um arquivo
não exibirá o ícone de não encontrado imediatamente, e sim após a realização da reavaliação do
status.
Para a compilação, o AP5 IDE não poderá estar em modo de debug. Existem três opções de compilação:
• a compilação de tudo, que ignora o flag de compilado nos arquivos, simplesmente enviando novamente todos
os arquivos ao server para serem compilados;
• a compilação do projeto selecionado, que envia apenas os arquivos do projeto selecionado na janela do
Gerenciador de Projetos que não contenham o flag de compilado ao server;
• a compilação em Batch, na qual o usuário pode selecionar quais os projetos que desejará compilar com quais
configurações de compilação.
Configurações de um Grupo de
Projetos
Também é através das configurações onde o usuário pode incluir definições próprias que identificarão blocos de
compilação condicional dentro do código dos fontes (uso de diretivas #IFDEF ou #IFNDEF). Tais definições
devem ser adicionadas no campo Parâmetros exatamente como seriam enviadas na linha de comando. Estas
definições serão adicionadas aquelas já definidas pelo AP5 Server de acordo com o Environment utilizado.
O usuário também pode utilizar a Compilação em Batch (figura 18), escolhendo os projetos e as configurações
que deseja compilar. Nesta janela, os projetos e as configurações existentes são cruzados, de modo que um mesmo
projeto pode ser compilado utilizando mais de uma configuração. Assim, pode-se manter versões dos programas
em Top Connect e em DBF ou em Inglês e Português, já que de acordo com o Environment informado nas
configurações, o AP5 Server irá manter os APO's em repositórios diferentes.
A linguagem ADVPL foi criada seguindo o padrão xBase para Windows utilizando os recursos
criados pela Microsiga desde versões anteriores do Siga Advanced. Desse modo, o AP5 IDE procura
compatibilizar ao máximo todos os Rdmakes que os usuários de versões anteriores tenham criado.
Para isso existe o Assistente de Conversão de Código que será detalhado mais a frente. Uma dessas
mudanças importantes é que todos os programas de usuários devem começar com USER FUNCTION
<nome do arquivo> (caso contrário um erro de compilação ocorrerá). Isso se deve porque o produto
Os arquivos compilados são gerados com a extensão APO (Advanced Protheus Object) e mantidos
em um repositório. Estes são arquivos binários que serão executados pelo Server. O AP5 Server
iniciará a execução a partir de um arquivo inicial. Desse modo, não existe mais o conceito de módulo,
a execução será efetuada a partir deste programa inicial (por exemplo SIGACON, o Siga Advanced
Contábil), abrindo os arquivos e carregando as funções de acordo com o menu do usuário.
Muito importante: Nesta versão, os arquivos de definições (extensão CH) que forem adicionados no
Gerenciador de Projetos ainda não estão sendo enviados ao servidor e devem ser colocados em um
diretório no servidor que esteja indicado na chave INCLUDEPATH do Environment definido no INI
do AP5 Server.
Os Comandos de Debug
O menu Executar (figura 19), contem todos os comandos utilizados para debugar rotinas no AP5 IDE. Este
comando executa o AP5 Remote, inicialmente pelo programa inicial ou quando em processo de debug, a partir do
ponto atual. A execução é normal como se a rotina estivesse sendo executada diretamente (sem o Siga Advanced
Protheus IDE). O processamento poderá parar quando um break
point for encontrado ou quando o usuário interrompê-lo.
O programa inicial deve ser informado no combo de seleção
existente na barra de ferramentas do AP5 IDE, como exibido na
figura 20. Se por acaso o programa inicial não for informado, o AP5
Remote questionará o usuário pelo nome do programa inicial quando
for executado.
Geralmente o processo de debug consiste em adicionar um break
point a rotina desejada, executar o AP5 Remote através do AP5 IDE
e executar o sistema até o momento em que o break point seja
encontrado. Então, o usuário utiliza-se dos comandos de execução
passo-a-passo para acompanhar a execução da rotina criada. Pode-se
também executar o AP5 Remote e acionar o comando Pausa quando
a execução chegar na rotina desejada. A execução do comando
Pausa também pode ser efetuada através da combinação de teclas
ALT+D efetuada no AP5 Remote em execução.
Figura 19 - O menu Executar, com as
opções para debug de rotinas.
Para a execução passo-a-passo, o AP5 localiza os arquivos de código fonte e posiciona o cursor na linha em
execução de modo que o usuário possa acompanhar a execução de suas rotinas. Para isso deve-se utilizar os
comandos Percorre Linha, Pula Linha, Executar até o cursor ou os comandos de animação. O comando Percorre
Linha executa linha por linha do código, entrando nas chamadas de funções. Ou seja, a execução deste comando
sobre uma linha que contenha uma chamada
de função fará com que o processo de debug
linha-a-linha continue no código da função e
o usuário terá que percorrer todo o código da
mesma para retornar ao ponto original. Ao
contrário, a execução do comando Pula
Linha em uma linha que contenha uma
chamada de função, fará com que o código
da função seja executado normalmente (sem
que o código da função seja executado linha-
a-linha) e o processo de debug continuará da
Figura 20 - Combo para escolha do programa inicial. Pode-se
linha seguinte.
escolher um dos módulos do Siga Advanced ou digitar o nome
do programa inicial desejado.
O comando Pausa, faz com que o processamento que esteja executando normalmente (após o comando Executar)
entre em modo de debug, permitindo a continuação em passo-a-passo. O comando Pára Execução, finaliza a
execução do AP5 Remote, encerrando-o. O AP5 Remote é literalmente derrubado e a conexão com o Server é
encerrada. Pode ser utilizado, por exemplo, quando determinada rotina está em loop de execução.
A animação é uma ferramenta que permite ao usuário executar linha-a-linha do código de uma forma
automatizada, sem necessitar acionar o comando Percorre Linha para todas as linhas do código. Ao acionar o
comando Animação, o AP5 IDE iniciará a execução automática do comando Percorre Linha a uma velocidade
inicial. Todas as informações são atualizadas e o usuário pode acompanhar o processamento, aumentar ou
diminuir a velocidade ou parar a animação.
O usuário também pode adicionar break points (pontos de parada) ao código. Os pontos de parada indicam linhas
do código que farão com que o AP5 IDE entre em modo de debug exatamente como se o comando Percorrer
Linha tivesse sido acionado, assim que a execução do código no AP5 Remote atingir a linha marcada. O
acionamento do comando Liga/Desliga Ponto de Parada, marca ou desmarca a linha onde o cursor está
posicionado no arquivo corrente. Por comodidade, os pontos de parada são gravados pelo AP5 IDE quando este é
encerrado, de modo que não é necessário remarcá-los na próxima execução. Pode-se definir condições para a
parada em um break point, porém a definição destas condições e outros detalhes serão explicados mais a frente na
seção que trata sobre a janela de exibição dos break points existentes.
Por fim, o comando Atualiza, força uma atualização de todas as janelas de informações do AP5 IDE. Todas as
expressões ou variáveis são reavaliadas no AP5 Server.
A execução dos comandos de debug é efetuada através da troca de mensagens entre o AP5
IDE e o AP5 Server. Portanto, quando o AP5 Remote estiver sendo executado (e
conseqüentemente o controle da execução está com o Server, não com o IDE), a execução
de um comando, por exemplo o comando Para Execução, pode não ser efetuada
instantaneamente, aguardando que alguma linha do código do AP5 Remote seja processada.
Ou seja, se o AP5 Remote estiver parado (por exemplo, aguardando uma intervenção do
usuário para digitar um texto qualquer ou pressionar um botão) o comando não será executado até que
algum processamento seja efetuado (por exemplo, quando o usuário clicar no botão ou a validação de
uma caixa de edição for acionada).
Enquanto o AP5 IDE está em processo de debug, o usuário pode obter o valor de variáveis
simplesmente passando o ponteiro do mouse sobre o nome da variável desejada. Se o conteúdo da
variável for diferente de nulo ou espaços em branco ele será exibido em um hint abaixo da linha onde a
palavra se encontra. Para avaliar expressões, o usuário pode selecionar o texto de toda a expressão e
mover o ponteiro do mouse sobre a expressão selecionada. Pode-se também saber em que arquivo uma
função se encontra utilizando o mesmo recurso, contanto que o mapa de objetos (que será detalhado
mais a frente) já tenha sido obtido. Este recurso deve ser utilizado com cautela, pois se um comando for
selecionado e o ponteiro do mouse passado sobre a seleção, tal comando será executado e pode
influenciar no processo de debug.
Durante o processo de debug, o AP5 IDE indicará através de imagens na borda esquerda dos arquivos
algumas informações. São utilizados os seguintes símbolos:
Indica um break point na linha onde a imagem se encontra;
Indica o ponto de execução, ou seja, a linha do arquivo corrente é a linha em execução
no processo de debug. Este mesmo símbolo na cor cinza indica pontos por onde a
execução passou em outros arquivos, quando o processo de debug entra nas chamadas
A janela de Pilha de Chamadas (figura 24) contém informações sobre a seqüência de chamadas das funções
executadas pela rotina em processo de debug no AP5 IDE. Em ordem descendente de acordo com as chamadas
executadas, a lista contém o número da linha, o nome da função, os parâmetros recebidos e o nome do programa
onde a função se encontra registrada no Server.
Algumas chamadas, como de Code Blocks ou chamadas internas do Server, não exibem o nome do programa. Se
um duplo clique for efetuado sobre um item da lista, o AP5 IDE irá localizar o arquivo e posicionar o cursor na
linha da chamada, recalculando as demais janelas de inspeção de acordo com a função, como será visto mais a
frente no tópico sobre as janelas de
inspeção de variáveis. A localização dos
arquivos depende também das preferências
configuradas pelo usuário, como visto no
capítulo Configurando o AP5 IDE. As
informações da janela de Pilha de
Chamadas somente estão disponíveis
durante o processo de debug do AP5 IDE.
A Janela de Watchs
Semelhante à utilização da janela de Watch, o usuário conta também com a área de comandos do AP5 IDE (figura
27). Na área de comandos o usuário pode digitar expressões (como por exemplo, nome de variáveis, comandos,
etc.) que ao se pressionar a tecla <ENTER> serão avaliadas no Server e o resultado será apresentado na linha
seguinte. Pode-se também arrastar uma expressão de um arquivo aberto para a área de comandos do mesmo modo
que na janela de Watchs.
AP5 IDE – Documentação e Guia do Usuário 22
CopyRight © 1999 Microsiga Software S.A.
Figura 27 - Área de Comandos na parte inferior da janela do AP5 IDE
As expressões informadas tanto na janela de Watchs como na área de comandos do AP5 IDE são
avaliadas no Server. Portanto, o uso de comandos é permitido e pode influenciar na execução dos
programas (por exemplo, a digitação do comando SKIP moverá o ponteiro na tabela ativa). Porém, uma
expressão digitada na área de comandos somente é avaliada uma vez (quando o usuário pressiona a
tecla <ENTER>) ao contrário do que ocorre na janela de Watchs, onde a expressão é avaliada a cada
passo do processo de debug (quando as informações são atualizadas). Portanto deve-se evitar utilizar
comandos como parte de uma expressão de Watch.
Importante: Cuidado na avaliação de expressões lógicas. O operador de igualdade simples (=) também
é um operador de atribuição. Portanto, executar lLeft = .T. atribuirá o valor verdadeiro (.T.) à variável
lLeft. Ao invés disso, o usuário que desejar avaliar uma expressão lógica, deverá utilizar o operador de
exatidão (==) ou utilizar parênteses para envolver toda a expressão. Por exemplo, (lLeft = .T.).
Para inspecionar o valor de variáveis, o AP5 IDE dispõe de janelas diferentes para cada um dos quatro tipos de
variáveis: Locais, Privadas, Públicas e Estáticas. As janelas de Inspeção de Variáveis (figura 28) têm as seguintes
colunas de informação: Variável, Tipo e Conteúdo. Como a janela de Watchs, as variáveis dos tipos Objeto e
Array podem ser expandidas exibindo seu conteúdo.
Para as tabelas, são exibidos o Alias, o filtro utilizado, o número do registro onde o ponteiro está posicionado
(Recno), o número total de registros e a ordem do índice ativo. A tabela que é a área atualmente selecionada na
execução (o retorno da função Alias( ) ) é indicada com dois asteriscos (**).
Para os índices, é exibida a chave de indexação (o retorno da função IndexKey( ) ) e o índice ativo é marcado com
dois asteriscos (**).
Para os campos, é exibido o seu conteúdo para o registro posicionado pelo cursor, exatamente como as variáveis
nas outras janelas de inspeção.
Em todas as janelas de Inspeção, seja Watchs, Tabelas ou Variáveis, existe uma barra de rolagem na
base que permite ao usuário visualizar todo o texto da coluna Conteúdo (ou Resultado no caso da
janela de Watchs) "rolando" o texto que seja maior do que o tamanho exibido da janela.
Para facilitar a visualização, as janelas de inspeção se utilizam de imagens que indicam o tipo de dado
visualizado. Essas imagens (cuja legenda também pode ser visualizada através do acionamento do
botão direito do mouse sobre cada janela) são:
Indicador de variável do tipo Caracter, Numérico, Data ou Memo
Indicador de variável do tipo Lógico com valor Falso
Indicador de variável do tipo Lógico com valor Verdadeiro
Indicador de variável do tipo Array
Indicador de variável do tipo Objeto
Indicador de Tabela de Dados
Indicador de Índice
Indicador de Campo
O Inspetor de Objetos
Exibindo Por Programa, as funções registradas serão agrupadas pelo nome do programa na qual foi criada ao ser
registrada no Server. Caso contrário, uma lista de funções sem agrupamento será exibida. Ao executar um duplo
clique sobre o nome de uma função (ou executar o comando Abrir no menu acionado pelo botão direito do
mouse), o AP5 IDE tentará abrir o arquivo e posicionar o cursor na linha onde a função se encontra. Pode-se
também localizar funções dentro do mapa, selecionando a opção Localizar Função no menu acionado pelo botão
direito do mouse. Se a função for localizada, o cursor será posicionado sobre o nó da mesma na árvore montada no
mapa de objetos.
Os objetos são os APO's (Advanced Protheus Object) registrados em repositórios no Server. São todas as rotinas e
funções compiladas e registradas. Desse modo, ao obter o mapa de objetos, será necessário indicar uma das
configurações existentes no Gerenciador de Projetos, como visto na compilação ou na execução do AP5 Remote
através do AP5 IDE. Do mesmo modo, se nenhuma configuração for criada, o AP5 IDE irá considerar que os
objetos devem ser
obtidos do
repositório oficial.
Se não for possível conectar-se ao Server para a obtenção do mapa de objetos, o AP5
IDE não exibirá a janela do Inspetor de Objetos. Sempre que um arquivo é compilado,
podem haver mudanças nos objetos registrados no Server. A atualização do mapa de
objetos não é efetuada automaticamente, ficando a cargo da necessidade do usuário.
Para facilitar a visualização, o Mapa de Objetos conta com a seguinte lista de imagens
indicadoras dos objetos:
Indicador de Arquivo
Indicador de Função
Indicador de impossibilidade para o AP5 de abrir o arquivo (arquivo não encontrado)
Como outros processamentos que requerem conexão ao Server (por exemplo, a compilação já
detalhada anteriormente), durante a obtenção do mapa de objetos, o AP5 IDE exibe uma barra de
percentual de conclusão acompanhada de um botão para o cancelamento no lugar da barra de tatus de
sua janela principal (figura 31). O usuário pode cancelar a obtenção do mapa de objetos clicando no
botão Cancelar desta barra.
Quando o AP5 IDE está configurado para utilizar o controle de versão, o usuário será questionado sobre a reserva
assim que ocorrer a primeira tentativa de alteração em um arquivo com o atributo de somente leitura. Se optar por
reservá-lo, o AP5 IDE irá então executar a macro para reserva de arquivo ($VERSION_CHECK_OUT). Se o
usuário optar por não reservá-lo, o atributo de somente leitura permanecerá na cópia local do arquivo e
conseqüentemente o AP5 IDE não permitirá que nele sejam efetuadas alterações.
As macros de controle de versão também podem ser executadas através da barra de ferramentas de controle de
versão (figura 32) que é exibida automaticamente quando o uso de controle de versão é habilitado nas
configurações de preferências do AP5 IDE.
Através do ambiente do AP5 IDE, o usuário pode:
Nas linhas de comando para o controle de versão, por default são adicionadas, quando o usuário as configura, as
macros especiais $VERSION_ASK_FOR_COMMENT e $SYSTEM_USER_ACCESS, que respectivamente obtém
do usuário o comentário e o nome do usuário e senha para
as operações a serem efetuadas no servidor de versões
(figura 33). Dependendo do modo que o software de
controle de versão utilizado trabalha, o usuário pode
customizar estas linhas de comando e até remover a
execução destas macros.
Após a execução de macros como a de reserva de arquivo ou a de obtenção da última versão que tem
alterações efetuadas pelo software controlador de versão na cópia local do arquivo, o AP5 IDE irá
reabrir o arquivo para carregar as eventuais diferenças. Portanto, antes da execução de tais macros,
caso o arquivo contenha modificações não gravadas, o usuário será questionado sobre a continuação da
execução da macro.
A estrutura de pastas do projeto na base de dados do software de controle de versão deve ser a mesma
estrutura dos diretórios dos arquivos trabalhados. Este conceito foi implantado para facilitar a execução
das macros automaticamente pois o path dos arquivos é informado na linha de comando. Entretanto,
isto é possível de ser alterado, simplesmente modificando as linhas de comandos informadas na janela
de preferências (por exemplo, informando um nome de projeto fixo) de acordo com a sintaxe de linha
de comando do software utilizado. Note que alguns softwares controladores de versão, como o Visual
Source Safe da Microsoft, permitem ao usuário criar diferentes bancos de dados para armazenamento
dos projetos mesmo que isso não seja aconselhável pelo próprio fabricante. Para a execução das
macros de controle de versão, o AP5 IDE funcionará corretamente com apenas um banco de dados
para armazenagem.
Para a execução de qualquer um dos comandos de controle de versão, o usuário deve ter os direitos
necessários cadastrados no software de controle de versão utilizado.
Para a geração do escopo do programa, o Assistente solicita informações como o arquivo principal, os parâmetros
utilizados, títulos de relatórios ou browsers, etc. (por exemplo, figura 36).
Selecionando os Arquivos
Convertendo os Arquivos
Ao se pressionar o botão Finalizar, o assistente irá então executar as opções selecionadas pelo usuário. Caso não
seja possível criar o grupo de projetos, ou compilar os arquivos (por exemplo, se não for possível conectar ao
Server) o usuário será avisado sem qualquer interferência nos arquivos convertidos gravados no diretório
informado anteriormente.
Nos antigos Rdmakes, todas as variáveis eram criadas como Private no escopo do sistema. Assim, uma
variável criada em uma função chamada pela rotina principal, permanecia durante toda a execução do
Rdmake. Como agora o código não é mais interpretado, as variáveis Private permanecem durante toda
a execução até a finalização da rotina que a criou. Então, por motivos de compatibilização, todas as
variáveis serão declaradas no início da rotina convertida.
Finalmente, por ser um código interpretado o RDMAKE utilizava-se da função EXECUTE para
executar funções nas ações de botões ou em outras ocasiões. Como o usuário tem a sua disposição
todas características da linguagem ADVPL, como por exemplo uso de parâmetros e retorno de valores
em funções, as chamadas das funções EXECUTE(<nome da função>) são substituídas pela chamada da
própria função nos programas convertidos.
Juntamente com estas alterações, será incluída nas rotinas específicas convertidas a cláusula
#INCLUDE "RWMAKE.CH" para manter a compatibilidade dos comandos utilizados no Rdmake e
todas as cláusulas #INCLUDE ou #DEFINE já existentes na rotina específica serão movidas para o
início do programa.
Nome Descrição
$$ Retorna o caracter "$".
$IDE_PATH Retorna o path de execução do AP5 IDE.
$INPUT_TEXT(cTit,cMsg,cDefault) Exibe a mensagem informada em cMsg em um diálogo com título cTit,
permitindo a digitação de um texto. Retorna o texto digitado caso o
diálogo seja confirmado ou o texto em cDefault caso o diálogo seja
cancelado.
$SOURCE_NAME Retorna o nome completo (path e nome) do arquivo corrente. Se nenhum
arquivo estiver aberto retorna vazio ("").
$SOURCE_NAME_NO_DRIVE Retorna o nome completo sem a letra do drive do arquivo corrente. Se
nenhum arquivo estiver aberto retorna vazio ("").
$SOURCE_SHORT_NAME Retorna somente o nome do arquivo corrente (sem path ou letra do
drive). Se nenhum arquivo estiver aberto retorna vazio ("").
$SOURCE_CURSOR_LINE Retorna a linha onde o cursor está posicionado no arquivo corrente. Se
nenhum arquivo estiver aberto retorna "00".
$SOURCE_CURSOR_COLUMN Retorna a coluna onde o cursor está posicionado no arquivo corrente. Se
nenhum arquivo estiver aberto retorna "00".
$SOURCE_CURSOR_WORD Retorna a palavra que se encontra onde o cursor está posicionado no
arquivo corrente. Se nenhum arquivo estiver aberto retorna vazio ("").
Considera como palavra todo e qualquer texto entre os delimitadores.
$SOURCE_EXECUTION_LINE Retorna a linha de execução no arquivo corrente. Se nenhum arquivo
estiver aberto ou o AP5 IDE Não estiver em modo de debug, retorna
"00".
$SOURCE_PATH Retorna o path do arquivo corrente. Se nenhum arquivo estiver aberto
retorna vazio ("").
$SOURCE_EXT Retorna a extensão do arquivo corrente. Se nenhum arquivo estiver
aberto retorna vazio ("").
$SOURCE_DRIVE Retorna a letra do drive do arquivo corrente. Se nenhum arquivo estiver
aberto retorna vazio ("").
$SOURCE_SYSTEM_DATE Retorna a data do sistema no padrão dd/mm/yyyy.
$SOURCE_SYSTEM_TIME Retorna a hora do sistema no padrão hh:mm:ss.
$SYSTEM_USER_NAME Retorna o nome do login do usuário na rede. Se o usuário não estiver
logado ou não houver uma rede, retorna vazio ("").
$SYSTEM_USER_ACCESS Exibe uma caixa de diálogo para identificação por ID e senha,
retornando-os separados por uma vírgula (;) ou vazio ("") se a caixa de
diálogo for cancelada.
$VERSION_ADD_FILE Adiciona o arquivo corrente ao servidor de controle de versão , através
da execução da linha de comando informada nas preferências. Esta
macro só tem funcionalidade quando o uso de controle de versão estiver
habilitado no AP5 IDE. Note que a estrutura de pastas do projeto no
Controlador de Versão deve ser a mesma estrutura de diretórios onde o
arquivo se encontra.
$VERSION_ASK_FOR_COMMENT Exibe uma caixa de diálogo para a digitação do comentário para as
if i < 10
for x := i to 10
grava()
next x
endif
if i < 10
for x := i to 10
grava()
next x
endif
Executar Executa o AP5 Remote normalmente, mantendo o IDE em estado de espera. Desse
modo, o IDE somente entrará em modo de debug em uma das seguintes situações:
1. um break point for encontrado;
2. o usuário selecionar o comando pause no IDE;
3. um break point condicional for satisfeito;
4. o usuário pressionar no AP5 Remote a combinação de teclas ALT+D.
O modo de execução também se encerra se o usuário finalizar o AP5 Remote.
Gutter Área nas margens de uma janela utilizada para a exibição de informações, como por
exemplo a área onde ficam marcados os ícones de break points ou a área da régua de
números de linhas nas janelas de documentos do AP5 IDE.
IDE Integrated Development Environment (Ambiente de Desenvolvimento Integrado). É
uma aplicação onde todo o desenvolvimento, execução, depuração e correção de
procedimentos pode ser desenvolvido.
Pausar Parada na execução do AP5 Remote ou na execução de uma animação. A parada do
AP5 Remote somente será executada assim que alguma linha de código for executada.
Por exemplo, se o AP5 Remote estiver em estado de espera (aguardando por uma
digitação do usuário), a pausa efetuada no IDE somente será efetuada assim que algum
código no AP5 Remote seja executado (por exemplo, na validação do texto digitado
pelo usuário).
Percorrer Linha Execução linha por linha do código, entrando no código de funções.
Programas Registrados São todos os programas compilados através do Advanced Protheus IDE, que são
mantidos em diferentes repositórios no Advanced Protheus Server, de acordo com
opção do Administrador.
Ponto de Entrada Conceito implementado desde as versões anteriores do sistema de ERP Siga Advanced.
É uma rotina de nome fixo e criada pelo usuário. O sistema Siga Advanced checa a
existência desta rotina em determinados pontos do código e a executa se for encontrada,
permitindo assim que o usuário customize processos fechados. Na versão 5.07, o
usuário pode debugar estas rotinas chamadas automaticamente através do AP5 IDE
(por exemplo, adicionando break points).
Pular Linha Execução linha por linha do código, sem entrar no código das funções.
RDMAKE Linguagem interpretada criada pela Microsiga Software S.A. utilizada no sistema de
ERP Siga Advanced até a versão x.07.
Seguir Até Retorno Execução em modo normal do AP5 Remote até o momento em que a linha em
Variáveis Estáticas Variáveis definidas com instância estática, ou seja, poderão ser visualizadas ou
alteradas por qualquer rotina dentro do mesmo programa.
Variáveis Locais Variáveis definidas com instância local, ou seja, poderão ser visualizadas ou alteradas
somente dentro da rotina que as declarou.
Variáveis Privadas Variáveis definidas com instância privada, ou seja, poderão ser visualizadas ou
alteradas apenas pela rotina que as declarou e pelas rotinas chamadas por esta.
Variáveis Públicas Variáveis definidas com instância pública, ou seja, poderão ser visualizadas ou
alteradas por qualquer rotina dos programas registrados.
Watchs Janela de inspeção onde expressões digitadas pelo usuário podem ser avaliadas no AP5
Server durante o processo de debug.