advpl completo

661
  Educação Corporativa Programação em ADVPL Completo Matriz – Av. Braz Leme, 1.717 – 02511-000 – São Paulo – SP – Brasil. Tel.: 55 (11) 3 981-7001 www.microsiga.com.br

Upload: adertu

Post on 02-Mar-2016

233 views

Category:

Documents


1 download

DESCRIPTION

linguagem de programação da empresa totvs

TRANSCRIPT

  • Educao Corporativa

    Programao em ADVPL Completo

    Matriz Av. Braz Leme, 1.717 02511-000 So Paulo SP Brasil.

    Tel.: 55 (11) 3981-7001

    www.microsiga.com.br

  • - 2 -

    ADVPL Completo

    ESTRUTURA DO TREINAMENTO

    MDULO 01: Introduo programao ...................................................................................................................... 11

    1. Lgica de Programao e Algoritmos .................................................................................................................... 11

    1.1. Lgica de Programao ................................................................................................................ 11

    1.2. Desenvolvendo algoritmos ............................................................................................................ 121.2.1. Estudando algoritmos ................................................................................................................................ 131.2.2. Teste de mesa ............................................................................................................................................ 15

    2. Estruturas de programao .................................................................................................................................... 16

    2.1. Diagrama de bloco ........................................................................................................................ 16

    2.2. Estruturas de deciso e repetio ................................................................................................ 192.2.1. Estruturas de deciso ................................................................................................................................. 192.2.2. Estruturas de repetio .............................................................................................................................. 22

    MDULO 02: A linguagem ADVPL ............................................................................................................................... 24

    3. Estrutura de um Programa ADVPL ...................................................................................................................... 26

    3.1. reas de um Programa ADVPL .................................................................................................. 284. Declarao e Atribuio de Variveis .................................................................................................................... 31

    4.1. Tipo de Dados ................................................................................................................................ 31

    4.2. Declarao de variveis ................................................................................................................ 32

    4.3. Escopo de variveis ....................................................................................................................... 33

    4.4. Entendendo a influncia do escopo das variveis ...................................................................... 37

    4.5. Operaes com Variveis ............................................................................................................. 384.5.1. Atribuio de variveis .............................................................................................................................. 384.5.2. Operadores da linguagem ADVPL ............................................................................................................ 394.5.3. Operao de Macro Substituio ............................................................................................................... 444.5.4. Funes de manipulao de variveis ....................................................................................................... 45

    5. Estruturas bsicas de programao ....................................................................................................................... 51

    5.1. Estruturas de repetio ................................................................................................................ 515.1.1. Influenciando o fluxo de repetio ............................................................................................................ 54

    5.2. Estruturas de deciso .................................................................................................................... 566. Arrays e Blocos de Cdigo ...................................................................................................................................... 60

    6.1. Arrays ............................................................................................................................................ 606.1.1. Inicializando arrays ................................................................................................................................... 626.1.2. Funes de manipulao de arrays ............................................................................................................ 636.1.3. Cpia de arrays .......................................................................................................................................... 65

    6.2. Listas de Expresses e Blocos de Cdigo .................................................................................... 676.2.1. Premissas para utilizao de Blocos de Cdigo ........................................................................................ 676.2.2. Lista de expresses .................................................................................................................................... 686.2.3. Blocos de Cdigo ...................................................................................................................................... 706.2.4. Funes para manipulao de blocos de cdigo ........................................................................................ 72

    7. Funes ................................................................................................................................................................... 73

    7.1. Tipos e escopos de funes ........................................................................................................... 74

    7.2. Passagem de parmetros entre funes ...................................................................................... 77

  • - 3 -

    ADVPL Completo

    8. Diretivas de compilao .......................................................................................................................................... 83

    MDULO 03: Desenvolvendo pequenas customizaes ................................................................................................ 88

    9. ADVPL e o ERP Microsiga Protheus .................................................................................................................... 88

    9.1. O Ambiente Protheus ................................................................................................................... 88

    9.2. Organizao e configurao inicial do ambiente Protheus ....................................................... 92

    9.3. O Configurador do Protheus ....................................................................................................... 989.3.1. Funcionalidades Abordadas ...................................................................................................................... 989.3.2. Estruturas bsicas da aplicao ERP Protheus .......................................................................................... 989.3.3. Acessando o mdulo Configurador ......................................................................................................... 101

    9.4. Funcionalidades do Configurador ............................................................................................. 1049.4.1. Dicionrio de Dados da aplicao ERP ................................................................................................... 1059.4.2. Adio de tabelas ao Dicionrio de Dados .............................................................................................. 1059.4.3. Adio de campos as tabelas do Dicionrio de Dados ............................................................................ 1089.4.4. Adio de ndices para as tabelas do Dicionrio de Dados ..................................................................... 1139.4.5. Adio de gatilhos para os campos das tabelas do sistema ..................................................................... 1169.4.6. Criao de Tabelas Genricas ................................................................................................................. 1189.4.7. Criao de Parmetros ............................................................................................................................. 119

    10. TOTVS Development Studio ................................................................................................................................ 121

    Desenvolvimento de pequenas customizaes ....................................................................................... 12411. Acesso e manipulao de bases de dados em ADVPL ......................................................................................... 124

    11.1. Diferenas e compatibilizaes entre bases de dados ............................................................... 125

    11.2. Funes de acesso e manipulao de dados .............................................................................. 126

    11.3. Diferenciao entre variveis e nomes de campos ................................................................... 131

    11.4. Controle de numerao seqencial ............................................................................................ 13212. Customizaes para a aplicao ERP .................................................................................................................. 133

    12.1. Customizao de campos Dicionrio de Dados ..................................................................... 13412.1.1. Validaes de campos e perguntas ..................................................................................................... 13412.1.2. Pictures de formao disponveis ....................................................................................................... 136

    12.2. Customizao de gatilhos Configurador ................................................................................ 138

    12.3. Customizao de parmetros Configurador ......................................................................... 13912.3.1. Funes para manipulao de parmetros .......................................................................................... 13912.3.2. Cuidados na utilizao de um parmetro ............................................................................................ 140

    12.4. Pontos de Entrada Conceitos, Premissas e Regras ............................................................... 14113. Interfaces visuais .................................................................................................................................................. 142

    13.1. Sintaxe e componentes das interfaces visuais ........................................................................... 142

    13.2. Interfaces padres para atualizaes de dados ........................................................................ 14513.2.1. AxCadastro() ...................................................................................................................................... 14513.2.2. MBrowse() .......................................................................................................................................... 14613.2.3. AxFunctions() ..................................................................................................................................... 150

    APNDICES .................................................................................................................................................................. 152

    BOAS PRTICAS DE PROGRAMAO .................................................................................................................... 152

    14. Utilizao de Identao ........................................................................................................................................ 152

    15. Capitulao de Palavras-Chave ........................................................................................................................... 153

    15.1. Palavras em maisculo ............................................................................................................... 154

  • - 4 -

    ADVPL Completo

    16. Utilizao da Notao Hngara ........................................................................................................................... 154

    17. Palavras reservadas .............................................................................................................................................. 155

    LISTAS DE EXERCCIOS ........................................................................................................................................... 156

    Mdulo 01: Introduo programao ................................................................................................. 156

    Mdulo 02: A linguagem ADVPL ........................................................................................................... 157

    Mdulo 03: Desenvolvendo pequenas customizaes ........................................................................... 160MDULO 04: Desenvolvendo aplicaes em ADVPL ................................................................................................. 162

    18. A linguagem ADVPL ............................................................................................................................................ 162

    19. Estrutura de um Programa ADVPL .................................................................................................................... 164

    19.1. reas de um Programa ADVPL ................................................................................................ 16620. Declarao e Atribuio de Variveis .................................................................................................................. 169

    20.1. Tipo de Dados .............................................................................................................................. 169

    20.2. Declarao de variveis .............................................................................................................. 170

    20.3. Escopo de variveis ..................................................................................................................... 171

    20.4. Entendendo a influncia do escopo das variveis .................................................................... 17521. Regras adicionais da linguagem ADVPL ............................................................................................................ 176

    21.1. Palavras reservadas .................................................................................................................... 176

    21.2. Pictures de formatao disponveis ........................................................................................... 17722. Programas de Atualizao .................................................................................................................................... 178

    22.1. Modelo1() ou AxCadastro() ....................................................................................................... 179

    22.2. Modelo2() ..................................................................................................................................... 18122.2.1. Componentes de uma tela no formato Modelo 2 ................................................................................ 18122.2.2. Estrutura de um programa utilizando a Modelo2() ............................................................................. 18922.2.3. Funo Modelo2() .............................................................................................................................. 197

    22.3. Modelo3() ..................................................................................................................................... 20122.3.1. Estrutura de um programa utilizando a Modelo3() ............................................................................. 20422.3.2. Funo Modelo3() .............................................................................................................................. 213

    22.4. Mbrowse() .................................................................................................................................... 21722.4.1. AxFunctions() ..................................................................................................................................... 22222.4.2. FilBrowse() ......................................................................................................................................... 22422.4.3. EndFilBrw() ........................................................................................................................................ 22422.4.4. PesqBrw() ........................................................................................................................................... 22522.4.5. BrwLegenda () .................................................................................................................................... 225

    22.5. MarkBrowse() ............................................................................................................................. 22923. Arquivos e ndices Temporrios ........................................................................................................................... 233

    23.1. Utilizao de arquivos e ndices temporrios ........................................................................... 233

    23.2. Funes para manipulao de arquivos e ndices temporrios .............................................. 23323.2.1. CriaTrab() ........................................................................................................................................... 23323.2.2. dbUseArea() ....................................................................................................................................... 23423.2.3. IndRegua() .......................................................................................................................................... 234

    24. Relatrios no grficos ......................................................................................................................................... 23824.1.1. Estrutura de relatrios baseados na SetPrint() .................................................................................... 238

    25. Manipulao de arquivos I ................................................................................................................................... 248

  • - 5 -

    ADVPL Completo

    25.1. Gerao e leitura de arquivos em formato texto ...................................................................... 2481. Famlia de funes de gravao e leitura de arquivos texto .................................................................... 2492. Famlia de funes de gravao e leitura de arquivos texto .................................................................... 254

    26. Oficina de programao I .................................................................................................................................... 256

    26.1. Interfaces com sintaxe clssica ................................................................................................... 256

    26.2. Rguas de processamento ........................................................................................................... 25926.2.1. RptStatus() .......................................................................................................................................... 259

    SETREGUA() .............................................................................................................................................. 261INCREGUA() .............................................................................................................................................. 262

    26.2.2. Processa() ........................................................................................................................................... 263SETPROC() ................................................................................................................................................. 265INCPROC() ................................................................................................................................................. 265

    26.2.3. MsNewProcess(). ............................................................................................................................... 26626.2.4. MsAguarde(). ..................................................................................................................................... 26826.2.5. MsgRun(). ........................................................................................................................................... 270

    26.3. ListBox() ...................................................................................................................................... 27126.3.1. ListBox simples .................................................................................................................................. 27126.3.2. ListBox mltiplas colunas .................................................................................................................. 274

    26.4. ScrollBox() ................................................................................................................................... 276

    26.5. ParamBox() .................................................................................................................................. 280MDULO 05: Introduo a orientao objetos ......................................................................................................... 285

    27. Conceitos de orientao objetos ........................................................................................................................ 285

    27.1. Definies ..................................................................................................................................... 285

    27.2. Conceitos Bsicos ........................................................................................................................ 288

    27.3. O Modelo de Objetos (OMT) ..................................................................................................... 28927.3.1. Objetos e Classes ................................................................................................................................ 28927.3.2. Atributos ............................................................................................................................................. 29027.3.3. Operaes e Mtodos ......................................................................................................................... 29127.3.4. Sugestes de desenvolvimento ........................................................................................................... 292

    28. Orientao a objetos em ADVPL ......................................................................................................................... 293

    28.1. Sintaxe e operadores para orientao a objetos ....................................................................... 293

    28.2. Estrutura de uma classe de objetos em ADVPL ...................................................................... 295

    28.3. Implementao dos mtodos de uma classe em ADVPL ......................................................... 296MDULO 06: ADVPL Orientado objetos I ............................................................................................................... 300

    29. Componentes da interface visual do ADVPL ...................................................................................................... 300

    29.1. Particularidades dos componentes visuais ................................................................................ 30729.1.1. Configurando as cores para os componentes ...................................................................................... 307

    30. Aplicaes com a interface visual do ADVPL ..................................................................................................... 309

    30.1. Captura de informaes simples (Multi-Gets) ......................................................................... 30930.1.1. Enchoice() .......................................................................................................................................... 31030.1.2. MsMGet() ........................................................................................................................................... 312

    30.2. Captura de mltiplas informaes (Multi-Lines) ..................................................................... 31430.2.1. MsGetDB() ......................................................................................................................................... 31530.2.2. MsGetDados() .................................................................................................................................... 31930.2.3. MsNewGetDados() ............................................................................................................................. 323

    30.2.3.1. Definindo cores personalizadas para o objeto MsNewGetDados() ............................................... 328

  • - 6 -

    ADVPL Completo

    30.3. Barras de botes .......................................................................................................................... 33330.3.1. EnchoiceBar() ..................................................................................................................................... 33330.3.2. TBar() ................................................................................................................................................. 33530.3.3. ButtonBar ........................................................................................................................................... 33630.3.4. Imagens pr-definidas para as barras de botes .................................................................................. 339

    APNDICES .................................................................................................................................................................. 340

    BOAS PRTICAS DE PROGRAMAO .................................................................................................................... 340

    31. Arredondamento ................................................................................................................................................... 340

    32. Utilizao de Identao ........................................................................................................................................ 340

    33. Capitulao de Palavras-Chave ........................................................................................................................... 342

    33.1. Palavras em maisculo ............................................................................................................... 34234. Utilizao da Notao Hngara ........................................................................................................................... 343

    35. Tcnicas de programao eficiente ...................................................................................................................... 343

    LISTAS DE EXERCCIOS ........................................................................................................................................... 353

    Mdulo 04.1.: Desenvolvendo aplicaes em ADVPL ......................................................................... 353

    Mdulo 04.2.: Oficina de Programao I .............................................................................................. 358

    Mdulo 05: Introduo a orientao objetos ..................................................................................... 360

    Mdulo 06: ADVPL orientado objetos I ............................................................................................ 361

    Projeto: Avaliao prtica do treinamento de ADVPL Intermedirio ............................................... 363MDULO 07: ADVPL Orientado objetos II .............................................................................................................. 364

    36. Componentes da interface visual do ADVPL ...................................................................................................... 364TSRVOBJECT() .......................................................................................................................................... 366TFONT() ...................................................................................................................................................... 369MSDIALOG() .............................................................................................................................................. 370TDIALOG() ................................................................................................................................................. 371TWINDOW() ............................................................................................................................................... 374TCONTROL() .............................................................................................................................................. 377BRGETDDB() ............................................................................................................................................. 378MSCALEND() ............................................................................................................................................. 381MSCALENDGRID() ................................................................................................................................... 383MSSELBR() ................................................................................................................................................. 385MSWORKTIME() ....................................................................................................................................... 388SBUTTON() ................................................................................................................................................ 391TBAR() ........................................................................................................................................................ 393TBITMAP() ................................................................................................................................................. 395TBROWSEBUTTON() ................................................................................................................................ 397TBTNBMP() ................................................................................................................................................ 399TBTNBMP2() .............................................................................................................................................. 401TBUTTON() ................................................................................................................................................ 403TCBROWSE() ............................................................................................................................................. 405TCHECKBOX() .......................................................................................................................................... 409TCOLORTRIANGLE() ............................................................................................................................... 411TCOMBOBOX() ......................................................................................................................................... 413TFOLDER() ................................................................................................................................................. 416TGET() ......................................................................................................................................................... 418TGROUP() ................................................................................................................................................... 420THBUTTON() ............................................................................................................................................. 422TIBROWSER() ............................................................................................................................................ 423TLISTBOX() ................................................................................................................................................ 425TMENU() ..................................................................................................................................................... 429

  • - 7 -

    ADVPL Completo

    TMENUBAR() ............................................................................................................................................ 430TMETER() ................................................................................................................................................... 431TMSGRAPHIC() ......................................................................................................................................... 434TMSGBAR() ................................................................................................................................................ 440TMSGITEM() .............................................................................................................................................. 442TMULTIBTN() ............................................................................................................................................ 443TMULTIGET() ............................................................................................................................................ 446TOLECONTAINER() .................................................................................................................................. 448TPAGEVIEW() ............................................................................................................................................ 450TPANEL() ................................................................................................................................................... 452TRADMENU() ............................................................................................................................................ 453TSBROWSE() .............................................................................................................................................. 457TSAY() ........................................................................................................................................................ 461TSCROLLBOX() ......................................................................................................................................... 463TSIMPLEEDITOR() .................................................................................................................................... 464TSLIDER() .................................................................................................................................................. 469TSPLITTER() .............................................................................................................................................. 472TTABS() ...................................................................................................................................................... 476TTOOLBOX() ............................................................................................................................................. 478TWBROWSE() ............................................................................................................................................ 481VCBROWSE() ............................................................................................................................................. 485

    36.1. Particularidades dos componentes visuais ................................................................................ 49136.1.1. Configurando as cores para os componentes ...................................................................................... 491

    37. Aplicaes com a interface visual do ADVPL ..................................................................................................... 493

    37.1. Captura de informaes simples (Multi-Gets) ......................................................................... 49337.1.1. Enchoice() .......................................................................................................................................... 49437.1.2. MsMGet() ........................................................................................................................................... 496

    37.2. Captura de mltiplas informaes (Multi-Lines) ..................................................................... 49837.2.1. MsGetDB() ......................................................................................................................................... 49937.2.2. MsGetDados() .................................................................................................................................... 50337.2.3. MsNewGetDados() ............................................................................................................................. 507

    37.2.3.1. Definindo cores personalizadas para o objeto MsNewGetDados() ............................................... 512

    37.3. Barras de botes .......................................................................................................................... 51737.3.1. EnchoiceBar() ..................................................................................................................................... 51737.3.2. TBar() ................................................................................................................................................. 51937.3.3. ButtonBar ........................................................................................................................................... 52037.3.4. Imagens pr-definidas para as barras de botes .................................................................................. 523

    38. Outras aplicaes da interface visual do ADVPL ............................................................................................... 524

    38.1. MaWndBrowse() ......................................................................................................................... 52438.1.1. Enchoice para Arquivos Temporrios ................................................................................................ 527

    38.2. DbTree() ....................................................................................................................................... 537

    38.3. MsSelect() ..................................................................................................................................... 54239. Introduo relatrios grficos ........................................................................................................................... 545

    39.1. TReport() ..................................................................................................................................... 54539.1.1. Introduo ........................................................................................................................................... 545

    Finalidade ..................................................................................................................................................... 545Descrio ..................................................................................................................................................... 546Pr-Requisitos .............................................................................................................................................. 546

    39.1.2. Impresso do relatrio personalizvel ................................................................................................ 54739.1.2.1. Parmetros de impresso ............................................................................................................... 547

    Impresso ..................................................................................................................................................... 547Arquivo ........................................................................................................................................................ 547Spool ............................................................................................................................................................ 548

  • - 8 -

    ADVPL Completo

    E-mail ........................................................................................................................................................... 548Papel ............................................................................................................................................................. 549Tamanho do papel ........................................................................................................................................ 549Formato da impresso .................................................................................................................................. 549Configuraes .............................................................................................................................................. 549Ttulo ............................................................................................................................................................ 549Ordem .......................................................................................................................................................... 549Layout .......................................................................................................................................................... 549Preview ........................................................................................................................................................ 549Executar em segundo plano ......................................................................................................................... 550

    39.1.3. Personalizao .................................................................................................................................... 55039.1.3.1. Editando o layout do relatrio ....................................................................................................... 550

    Nova estrutura do relatrio TReport: ........................................................................................................... 55139.1.4. Definindo a Funo ReportDef() ........................................................................................................ 551

    DEFINE REPORT ....................................................................................................................................... 552DEFINE SECTION ..................................................................................................................................... 552DEFINE CELL ............................................................................................................................................ 552

    MDULO 08: Aplicaes ADVPL para o ERP ............................................................................................................ 553

    40. Protheus e o TOPCONNECT / TOTVS DbAccess .............................................................................................. 553

    40.1. Caractersticas tcnicas com o uso do TOTVS DbAccess ...................................................... 554Comportamento de Queries Colunas Calculadas ...................................................................................... 554Comportamento diferenciado com Bandos de Dados PostGres ................................................................... 556Conceito de ndices Permanentes e Diferenas das RDDs .......................................................................... 557Funcionamento Interno ................................................................................................................................ 557Quebra de Compatibilidade com CodeBase/DBF ........................................................................................ 558Lista dos cdigos de erro do TOPConnect / DbAccess ................................................................................ 559

    40.2. Funes ADVPL para TOPCONNECT / TOTVS DbAccess .................................................. 560Lista das funes de interao com a aplicao TopConnect / DbAccess: .................................................. 560Lista das funes acessrias utilizadas nos fontes como facilitadoras: ........................................................ 560Funes de interao com o TopConnect / DbAccess ................................................................................. 561TCCANOPEN () .......................................................................................................................................... 561TCCONTYPE() ........................................................................................................................................... 561TCDELFILE() .............................................................................................................................................. 562TCGENQRY() ............................................................................................................................................. 563TCGETDB() ................................................................................................................................................ 563TCLINK() .................................................................................................................................................... 564TCQUERY() ................................................................................................................................................ 566TCQUIT() .................................................................................................................................................... 567TCSETCONN() ........................................................................................................................................... 567TCSETFIELD() ........................................................................................................................................... 568TCSPEXEC() ............................................................................................................................................... 570TCSPEXIST() .............................................................................................................................................. 572TCSQLERROR() ......................................................................................................................................... 572TCSQLEXEC() ............................................................................................................................................ 573TCSRVTYPE() ............................................................................................................................................ 573TCUNLINK() .............................................................................................................................................. 574TCCHKOBJ() .............................................................................................................................................. 575TCEXEERROR() ......................................................................................................................................... 575TCPGMEXE() ............................................................................................................................................. 576TCSYSEXE() ............................................................................................................................................... 576Funes acessrias para uso em fontes com interao com o TOTVS DbAccess ....................................... 577CHANGEQUERY() .................................................................................................................................... 577RETFULLNAME() ...................................................................................................................................... 578RETSQLCOND() ........................................................................................................................................ 579RETSQLNAME() ........................................................................................................................................ 579RETSQLTABLE() ....................................................................................................................................... 580SQLCOPY() ................................................................................................................................................. 580

  • - 9 -

    ADVPL Completo

    SQLORDER() .............................................................................................................................................. 581SQLTOTRB() .............................................................................................................................................. 582

    40.3. Aplicaes com controle de comunio com o Banco de Dados .............................................. 58340.3.1. MaWndBrowse com Alias Temporrio gerado por Query ................................................................. 583

    Exemplo: MaWndBrowse com Alias Temporrio gerado por Query .......................................................... 58440.3.2. Banco de dados de interface ............................................................................................................... 595

    Consideraes relevantes sobre as funes TCLink() e TCSetConn() ......................................................... 595Consideraes complementares sobre o conceito de Banco de Dados de Interface ..................................... 596

    40.4. Embedded SQL Facilitador de Querys ................................................................................. 598Disponibilidade do Recurso ......................................................................................................................... 598Caractersticas operacionais - Sintaxe .......................................................................................................... 599Limitao: .................................................................................................................................................... 599Erros de Compilao .................................................................................................................................... 600Erros de Execuo ........................................................................................................................................ 600Caractersticas operacionais - depurao ..................................................................................................... 601Funo auxiliar - GETLastQuery() .............................................................................................................. 601

    41. Funcionalidade MsExecAuto ............................................................................................................................... 603Sobre a MsExecAuto e Rotinas Automticas .............................................................................................. 603Quando utilizar a funcionalidade MsExecAuto ? ......................................................................................... 604Processos da aplicao ERP com tratamentos para execuo por MsExecAuto .......................................... 604Quando no utilizar a funcionalidade MsExecAuto ..................................................................................... 605

    41.1. Desenvolvendo aplicaes com MsExecAuto ............................................................................ 606Estrutura de uma rotina com execuo de MsExecAuto .............................................................................. 606Variveis de controle ................................................................................................................................... 606Montagem dos arrays de parmetros ............................................................................................................ 606Definio dos parmetros especficos da rotina que ser executada ............................................................ 610Controle de transao ................................................................................................................................... 611Tratamento de mensagens de erro ................................................................................................................ 613Aplicao completa de importao utilizando MsExecAuto: Carga de imobilizado ................................... 616

    42. Recursos de envio de e-mail ................................................................................................................................. 629Funes para manipulao de e-mails .......................................................................................................... 629Detalhamento das funes de manipulao de e-mails ................................................................................ 629CALLPROC() .............................................................................................................................................. 629MAILSMTPON() ........................................................................................................................................ 630MAILPOPON() ............................................................................................................................................ 630MAILSMTPOFF() ....................................................................................................................................... 631MAILPOPOFF() .......................................................................................................................................... 631MAILRECEIVE() ........................................................................................................................................ 632MAILAUTH() .............................................................................................................................................. 633POPMSGCOUNT() ..................................................................................................................................... 634MAILSEND() .............................................................................................................................................. 634MAILGETERR() ......................................................................................................................................... 635Exemplos de utilizao das funcionalidades de envio e recebimento de e-mail .......................................... 635Envio de mensagens utilizando sintaxe clssica .......................................................................................... 635Envio de mensagens utilizando funes ...................................................................................................... 638Recebimento de mensagens utilizando funes ........................................................................................... 641

    43. Integrao bsica com MsOffice .......................................................................................................................... 643

    43.1. Exportao para EXCEL ........................................................................................................... 643DLGTOEXCEL() ........................................................................................................................................ 643Exemplo de exportao para o Microsoft Excel utilizando a funo DlgToExcel() .................................... 644

    APNDICES .................................................................................................................................................................. 646

    Relao de imagens para aplicaes visuais .......................................................................................... 646LISTAS DE EXERCCIOS ........................................................................................................................................... 654

  • - 10 -

    ADVPL Completo

    Projeto: Avaliao prtica do treinamento de ADVPL Avanado ...................................................... 659REFERNCIAS BIBLIOGRFICAS .......................................................................................................................... 660

  • - 11 -

    ADVPL Completo

    MDULO 01: Introduo programao 1. Lgica de Programao e Algoritmos No aprendizado de qualquer linguagem de programao essencial desenvolver os conceitos relacionados a lgica e a tcnica da escrita de um programa. Com foco nesta necessidade, este tpico ir descrever resumidamente os conceitos envolvidos no processo de desenvolvimento de um programa atravs dos conceitos relacionados : Lgica de programao Algoritmos Diagramas de blocos

    1.1. Lgica de Programao Lgica A lgica de programao necessria para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir a seqncia lgica para o desenvolvimento. Ento o que lgica? Lgica de programao a tcnica de encadear pensamentos para atingir determinado objetivo. Seqncia Lgica Estes pensamentos, podem ser descritos como uma seqncia de instrues, que devem ser seguidas para se cumprir uma determinada tarefa. Seqncia Lgica so passos executados at atingir um objetivo ou soluo de um problema. Instrues Na linguagem comum, entende-se por instrues um conjunto de regras ou normas definidas para a realizao ou emprego de algo. Em informtica, porm, instruo a informao que indica a um computador uma ao elementar a executar. Convm ressaltar que uma ordem isolada no permite realizar o processo completo, para isso necessrio um conjunto de instrues colocadas em ordem seqencial lgica. Por exemplo, se quisermos fazer uma omelete de batatas, precisaremos colocar em prtica uma srie de instrues: descascar as batatas, bater os ovos, fritar as batatas, etc. evidente que essas instrues tm que ser executadas em uma ordem adequada no se pode descascar as batatas depois de frit-las. Dessa maneira, uma instruo tomada em separado no tem muito sentido; para obtermos o resultado, precisamos colocar em prtica o conjunto de todas as instrues, na ordem correta.

  • - 12 -

    ADVPL Completo

    Instrues so um conjunto de regras ou normas definidas para a realizao ou emprego de algo. Em informtica, o que indica a um computador uma ao elementar a executar. Algoritmo Um algoritmo formalmente uma seqncia finita de passos que levam a execuo de uma tarefa. Podemos pensar em algoritmo como uma receita, uma seqncia de instrues que do cabo de uma meta especfica. Estas tarefas no podem ser redundantes nem subjetivas na sua definio, devem ser claras e precisas. Como exemplos de algoritmos podemos citar os algoritmos das operaes bsicas (adio, multiplicao, diviso e subtrao) de nmeros reais decimais. Outros exemplos seriam os manuais de aparelhos eletrnicos, como um videocassete, que explicam passo-a-passo como, por exemplo, gravar um evento. At mesmo as coisas mais simples, podem ser descritas por seqncias lgicas, tais como: Chupar uma bala

    1. Pegar a bala; 2. Retirar o papel; 3. Chupar a bala; 4. Jogar o papel no lixo.

    Somar dois nmeros quaisquer

    1. Escreva o primeiro nmero no retngulo A; 2. Escreva o segundo nmero no retngulo B; 3. Some o nmero do retngulo A com nmero do retngulo B e coloque o

    resultado no retngulo C. 1.2. Desenvolvendo algoritmos Pseudocdigo Os algoritmos so descritos em uma linguagem chamada pseudocdigo. Este nome uma aluso posterior implementao em uma linguagem de programao, ou seja, quando for utilizada a linguagem a de programao propriamente dita como, por exemplo, ADVPL. Por isso os algoritmos so independentes das linguagens de programao, sendo que ao contrrio de uma linguagem de programao no existe um formalismo rgido de como deve ser escrito o algoritmo. O algoritmo deve ser fcil de interpretar e fcil de codificar. Ou seja, ele deve ser o intermedirio entre a linguagem falada e a linguagem de programao.

  • - 13 -

    ADVPL Completo

    Regras para construo do Algoritmo Para escrever um algoritmo precisamos descrever a seqncia de instrues, de maneira simples e objetiva. Para isso utilizaremos algumas tcnicas:

    1. Usar somente um verbo por frase; 2. Imaginar que voc est desenvolvendo um algoritmo para pessoas que no trabalham

    com informtica; 3. Usar frases curtas e simples; 4. Ser objetivo; 5. Procurar usar palavras que no tenham sentido dbio.

    Fases Para implementar de um algoritmo de simples interpretao e codificao necessrio inicialmente dividir o problema apresentado em trs fases fundamentais, as quais so: ENTRADA: So os dados de entrada do algoritmo; PROCESSAMENTO: So os procedimentos utilizados para chegar ao resultado final; SADA: So os dados j processados.

    1.2.1. Estudando algoritmos Neste tpico sero demonstrados alguns algoritmos do cotidiano, os quais foram implementados utilizando os princpios descritos nos tpicos anteriores.

    Mascar um chiclete Utilizar um telefone pblico carto Fritar um ovo Trocar lmpadas Descascar batatas Jogar o jogo da forca Calcular a mdia de notas Jogar o jogo da velha contra o algoritmo

    Mascar um chiclete

    1. Pegar o chiclete 2. Retirar o papel 3. Mastigar 4. Jogar o papel no lixo

    Utilizar um telefone pblico - carto

    1. Retirar o telefone do gancho 2. Esperar o sinal 3. Colocar o carto 4. Discar o nmero 5. Falar no telefone 6. Colocar o telefone no ganho

  • - 14 -

    ADVPL Completo

    Fritar um ovo

    1. Pegar frigideira, ovo, leo e sal 2. Colocar leo na frigideira 3. Ascender o fogo 4. Colocar a frigideira no fogo 5. Esperar o leo esquentar 6. Quebrar o ovo na frigideira 7. Jogar a casca no lixo 8. Retirar a frigideira do fogo quando o ovo estiver no ponto 9. Desligar o fogo 10. Colocar sal a gosto

    Trocar lmpadas

    1. Se a lmpada estiver fora do alcance, pegar uma escada 2. Pegar a lmpada nova 3. Se a lmpada queimada estiver quente, pegar um pano 4. Tirar lmpada queimada 5. Colocar lmpada nova

    Descascar batatas

    1. Pegar faca, bacia e batatas 2. Colocar gua na bacia 3. Enquanto houver batatas, descascar as batatas

    3.1. Colocar as batatas descascadas na bacia Jogar o jogo da forca

    1. Escolher a palavra 2. Montar o diagrama do jogo 3. Enquanto houver lacunas vazias e o corpo estiver incompleto:

    3.1. Se acertar a letra: escrever na lacuna correspondente 3.2. Se errar a letra: desenhar uma parte do corpo na forca

    Calcular a mdia de notas

    1. Enquanto houver notas a serem recebidas: 1.1. Receber a nota;

    2. Some todas as notas recebidas; 3. Divida o total obtido pela quantidade de notas recebidas; 4. Exiba a mdia das notas.

    Jogar o jogo da velha contra o algoritmo

    1. Enquanto existir um quadrado livre e ningum ganhou ou perdeu o jogo: 1.1. Espere a jogada do adversrio, continue depois 1.2. Se centro estiver livre: jogue no centro 1.3. Seno, se o adversrio possuir 2 quadrados em linha com um quadrado livre,

    jogue neste quadrado 1.4. Seno, se h algum canto livre, jogue neste canto

  • - 15 -

    ADVPL Completo

    1.2.2. Teste de mesa Aps desenvolver um algoritmo ele dever sempre ser testado. Este teste chamado de TESTE DE MESA, que significa seguir as instrues do algoritmo de maneira precisa para verificar se o procedimento utilizado est correto ou no. Para avaliar a aplicao do teste de mesa, utilizaremos o algoritmo de calcular a mdia de notas: Algoritmo: Calcular a mdia de notas 1. Enquanto houver notas a serem recebidas:

    a. Receber a nota; 2. Some todas as notas recebidas; 3. Divida o total obtido pela quantidade de notas recebidas; 4. Exiba a mdia das notas. Teste de mesa: 1. Para cada nota informada, receber e registrar na tabela abaixo:

    ID Nota

    2. Ao trmino das notas, a tabela dever conter todas as notas informadas, como abaixo: ID Nota 1 8.0 2 7.0 3 8.0 4 8.0 5 7.0 6 7.0

    3. Somar todas as notas: 45 4. Dividir a soma das notas, pelo total de notas informado: 45/6 7.5 5. Exibir a mdia obtida: Mensagem(Mdia: 7.5)

  • - 16 -

    ADVPL Completo

    2. Estruturas de programao 2.1. Diagrama de bloco O diagrama de blocos uma forma padronizada e eficaz para representar os passos lgicos de um determinado processamento. Com o diagrama podemos definir uma seqncia de smbolos, com significado bem definido, portanto, sua principal funo a de facilitar a visualizao dos passos de um processamento. Simbologia Existem diversos smbolos em um diagrama de bloco. No quadro abaixo esto representados alguns dos smbolos mais utilizados:

    Smbolo Funo

    Terminador

    Indica o incio e o fim de um processamento.

    Processamento

    Processamento em geral.

    Entrada Manual

    Indica a entrada de dados atravs do teclado.

    Deciso

    Indica um ponto no qual dever ser efetuada uma escolha entre duas situaes possveis.

    Exibio

    Mostra os resultados obtidos com um processamento.

    Documento

    Indica um documento utilizado pelo processamento, seja para entrada de informaes ou para exibio dos dados disponveis aps um processamento.

    Cada smbolo ir conter uma descrio pertinente a forma com o qual o mesmo foi utilizado no fluxo, indicando o processamento ou a informao que o mesmo representa.

  • - 17 -

    ADVPL Completo

    Representao de algoritmos atravs de diagramas de bloco Algoritmo 01: Fritar um ovo 1. Pegar frigideira, ovo, leo e sal 2. Colocar leo na frigideira 3. Ascender o fogo 4. Colocar a frigideira no fogo 5. Esperar o leo esquentar 6. Quebrar o ovo na frigideira 7. Jogar a casca no lixo 8. Retirar a frigideira do fogo quando o ovo estiver no ponto 9. Desligar o fogo 10. Colocar sal a gosto

  • - 18 -

    ADVPL Completo

    Algoritmo 02: Calcular a mdia de notas 1. Enquanto houver notas a serem recebidas:

    a. Receber a nota; 2. Some todas as notas recebidas; 3. Divida o total obtido pela quantidade de notas recebidas; 4. Exiba a mdia das notas.

  • - 19 -

    ADVPL Completo

    2.2. Estruturas de deciso e repetio

    A utilizao de estruturas de deciso e repetio em um algoritmo permite a realizao de aes relacionadas a situaes que influenciam na execuo e soluo do problema. Como foco na utilizao da linguagem ADVPL sero ilustradas as seguintes estruturas: Estruturas de deciso

    o IF...ELSE o DO CASE ... CASE

    Estruturas de repetio o WHILE...END o FOR...NEXT

    2.2.1. Estruturas de deciso Os comandos de deciso so utilizados em algoritmos cuja soluo no obtida atravs da utilizao de aes meramente seqenciais, permitindo que este avalie as condies necessrias para optar por uma ou outra maneira de continuar seu fluxo. As estruturas de deciso que sero analisadas so: IF...ELSE DO CASE ... CASE

    IF...ELSE A estrutura IF...ELSE (Se/Seno) permite a anlise de uma condio e a partir da qual ser executada uma de duas aes possveis: se a anlise da condio resultar em um valor verdadeiro ou se a anlise da condio resultar em um valor falso. Representao 01: IF...ELSE com aes para ambas as situaes

    Ao vinculada ao resultado

    verdadeiro

    Anlise da condio

    Verdadeiro Falso

    Aes anteriores...

    Continuao do fluxo aps a tomada da

    deciso

    Ao vinculada ao resultado falso

  • - 20 -

    ADVPL Completo

    Esta estrutura permite ainda que seja executada apenas uma ao, na situao em que a a anlise da condio resultar em um valor verdadeiro. Representao 02: IF...ELSE somente com ao para situao verdadeira

    Ao vinculada ao resultado

    verdadeiro

    Anlise da condio

    Verdadeiro

    Falso

    Aes anteriores...

    Continuao do fluxo aps a tomada da

    deciso

    Apesar das linguagens de programao possurem variaes para a estrutura IF...ELSE, conceitualmente todas as representaes podem ser descritas com base no modelo apresentado.

    A linguagem ADVPL possui uma variao para a estrutura IF...ELSE, descrita como IF...ELSEIF...ELSE. Com esta estrutura possvel realizar a anlise de diversas condies em seqncia, para as quais ser avaliada somente a ao da primeira expresso cujo anlise resultar em um valor verdadeiro.

  • - 21 -

    ADVPL Completo

    DO CASE...CASE A estrutura DO CASE...ENDCASE (Caso) permite a anlise de diversas condies consecutivas, para as quais somente a condio a primeira condio verdadeira ser sua ao vinculada executada. O recurso de anlise de mltiplas condies necessrio para soluo de problemas mais complexos, nos quais as possibilidades de soluo superam a mera anlise de um nico resultado verdadeiro ou falso.

    Anlise da condio 1

    Verdadeiro

    Falso

    Aes anteriores...

    Continuao do fluxo aps a tomada da

    deciso

    Ao vinculada a condio 1

    Anlise da condio 2

    Verdadeiro Ao vinculada a condio 2

    Anlise da condio N

    Verdadeiro Ao vinculada a condio N

    Falso

    Falso

    Falso

    Apesar das linguagens de programao possurem variaes para a estrutura DO CASE...CASE, conceitualmente todas as representaes podem ser descritas com base no modelo apresentado.

  • - 22 -

    ADVPL Completo

    2.2.2. Estruturas de repetio Os comandos de repetio so utilizados em algoritmos nas situaes em que necessrio realizar uma determinada ao ou um conjunto de aes para um nmero definido ou indefinido de vezes, ou ainda enquanto uma determinada condio for verdadeira. As estruturas de deciso que sero analisadas so: WHILE...END FOR...TO...NEXT

    WHILE...END Nesta estrutura, o conjunto de aes ser executado enquanto a anlise de uma condio de referncia resultar em um valor verdadeiro. importante verificar que o bloco somente ser executado, inclusive se na primeira anlise a condio resultar em um valor verdadeiro. Representao: WHILE...END

    Ao vinculada ao resultado

    verdadeiro

    Anlise da condio

    Verdadeiro

    Falso

    Aes anteriores...

    Continuao do fluxo

    ...

    Loop

    Existem diversas variaes para a estrutura WHILE...END, na qual h a possibilidade da primeira execuo ser realizada sem a anlise da condio, a qual valer apenas a partir da segunda execuo. A linguagem ADVPL aceita a sintaxe DO WHILE...ENDDO, que em outras linguagens representa a situao descrita anteriormente (anlise da condio somente a partir da segunda execuo), mas em ADVPL esta sintaxe tem o mesmo efeito do WHILE...END.

  • - 23 -

    ADVPL Completo

    FOR...TO...NEXT Nesta estrutura, o conjunto de aes ser executado uma quantidade de vezes definida, normalmente referenciada como passo. Para cada passo realizado pela estrutura FOR...TO...NEXT, ser avaliada uma condio que verificar se foi atingido o nmero de execues previamente definido. Desta forma a estrutura compreende um controle de nmero de passos executados, o qual incrementado na anlise da expresso NEXT. Semelhante a estrutura WHILE...END, a primeira ao somente ser realizada mediante um resultado verdadeiro na anlise da condio. Representao: FOR...TO...NEXT

    Ao vinculada ao resultado

    verdadeiro

    Anlise da condio

    Verdadeiro

    Falso

    Aes anteriores...

    Continuao do fluxo

    ...

    Incrementa o contador de

    passos

    A estrutura FOR...TO...NEXT, dependendo da linguagem de programao, permite a realizao de um incremento simples a cada execuo da instruo NEXT, ou a adio de outro valor ao contador, o qual dever especificado de acordo com a sintaxe da linguagem. Em ADVPL pode ser utilizada a instruo STEPS para alterar o valor a ser adicionado no contador de passos a cada execuo da instruo NEXT, sendo que este valor poder ser at negativo, viabilizando uma contagem decrescente.

  • - 24 -

    ADVPL Completo

    MDULO 02: A linguagem ADVPL A Linguagem ADVPL teve seu incio em 1994, sendo na verdade uma evoluo na utilizao de linguagens no padro xBase pela Microsiga Software S.A. (Clipper, Visual Objects e depois FiveWin). Com a criao da tecnologia Protheus, era necessrio criar uma linguagem que suportasse o padro xBase para a manuteno de todo o cdigo existente do sistema de ERP Siga Advanced. Foi ento criada a linguagem chamada Advanced Protheus Language. O ADVPL uma extenso do padro xBase de comandos e funes, operadores, estruturas de controle de fluxo e palavras reservadas, contando tambm com funes e comandos disponibilizados pela Microsiga que a torna uma linguagem completa para a criao de aplicaes ERP prontas para a Internet. Tambm uma linguagem orientada a objetos e eventos, permitindo ao programador desenvolver aplicaes visuais e criar suas prprias classes de objetos. Quando compilados, todos os arquivos de cdigo tornam-se unidades de inteligncia bsicas, chamados APOs (de Advanced Protheus Objects). Tais APOs so mantidos em um repositrio e carregados dinamicamente pelo PROTHEUS Server para a execuo. Como no existe a linkedio, ou unio fsica do cdigo compilado a um determinado mdulo ou aplicao, funes criadas em ADVPL podem ser executadas em qualquer ponto do ambiente Advanced Protheus. O compilador e o interpretador da linguagem ADVPL o prprio servidor PROTHEUS (PROTHEUS Server), e existe um ambiente visual para desenvolvimento integrado (PROTHEUSIDE) onde o cdigo pode ser criado, compilado e depurado. Os programas em ADVPL podem conter comandos ou funes de interface com o usurio. De acordo com tal caracterstica, tais programas so subdivididos nas seguintes categorias: Programao Com Interface Prpria com o Usurio Nesta categoria entram os programas desenvolvidos para serem executados atravs do terminal remoto do Protheus, o Protheus Remote. O Protheus Remote a aplicao encarregada da interface e da interao com o usurio, sendo que todo o processamento do cdigo em ADVPL, o acesso ao banco de dados e o gerenciamento de conexes efetuado no Protheus Server. O Protheus Remote o principal meio de acesso a execuo de rotinas escritas em ADVPL no Protheus Server, e por isso permite executar qualquer tipo de cdigo, tenha ele interface com o usurio ou no. Porm nesta categoria so considerados apenas os programas que realizem algum tipo de interface remota utilizando o protocolo de comunicao do Protheus. Podem-se criar rotinas para a customizao do sistema ERP Microsiga Protheus, desde processos adicionais at mesmo relatrios. A grande vantagem aproveitar todo o ambiente montado pelos mdulos do ERP Microsiga Protheus. Porm, com o ADVPL possvel at mesmo criar toda uma aplicao, ou mdulo, do comeo. Todo o cdigo do sistema ERP Microsiga Protheus escrito em ADVPL. Programao Sem Interface Prpria com o Usurio As rotinas criadas sem interface so consideradas nesta categoria porque geralmente tm uma utilizao mais especfica do que um processo adicional ou um relatrio novo. Tais rotinas no tm interface com o usurio atravs do Protheus Remote, e qualquer tentativa nesse sentido

  • - 25 -

    ADVPL Completo

    (como a criao de uma janela padro) ocasionar uma exceo em tempo de execuo. Estas rotinas so apenas processos, ou Jobs, executados no Protheus Server. Algumas vezes, a interface destas rotinas fica a cargo de aplicaes externas, desenvolvidas em outras linguagens, que so responsveis por iniciar os processos no servidor Protheus atravs dos meios disponveis de integrao e conectividade no Protheus. De acordo com a utilizao e com o meio de conectividade utilizado, estas rotinas so subcategorizadas assim: Programao por Processos Rotinas escritas em ADVPL podem ser iniciadas como processos individuais (sem interface) no Protheus Server atravs de duas maneiras: Iniciadas por outra rotina ADVPL atravs da chamada de funes como StartJob() ou CallProc() ou iniciadas automaticamente na inicializao do Protheus Server (quando propriamente configurado). Programao de RPC Atravs de uma biblioteca de funes disponvel no Protheus (uma API de comunicao), podem-se executar rotinas escritas em ADVPL diretamente no Protheus Server, atravs de aplicaes externas escritas em outras linguagens. Isto o que se chama de RPC (de Remote Procedure Call, ou Chamada de Procedimentos Remota). O servidor Protheus tambm pode executar rotinas em ADVPL em outros servidores Protheus atravs de conexo TCP/IP direta utilizando o conceito de RPC. Do mesmo modo, aplicaes externas podem requisitar a execuo de rotinas escritas em ADVPL atravs de conexo TCP/IP direta. Programao Web O Protheus Server pode tambm ser executado como um servidor Web, respondendo a requisies HTTP. No momento destas requisies, pode executar rotinas escritas em ADVPL como processos individuais, enviando o resultado das funes como retorno das requisies para o cliente HTTP (como por exemplo, um Browser de Internet). Qualquer rotina escrita em ADVPL que no contenha comandos de interface pode ser executada atravs de requisies HTTP. O Protheus permite a compilao de arquivos HTML contendo cdigo ADVPL embutido. So os chamados arquivos ADVPL ASP, para a criao de pginas dinmicas. Programao TelNet TelNet parte da gama de protocolos TCP/IP que permite a conexo a um computador remoto atravs de uma aplicao cliente deste protocolo. O PROTHEUS Server pode emular um terminal TelNet, atravs da execuo de rotinas escritas em ADVPL. Ou seja, pode-se escrever rotinas ADVPL cuja interface final ser um terminal TelNet ou um coletor de dados mvel.

  • - 26 -

    ADVPL Completo

    3. Estrutura de um Programa ADVPL Um programa de computador nada mais do que um grupo de comandos logicamente dispostos com o objetivo de executar determinada tarefa. Esses comandos so gravados em um arquivo texto que transformado em uma linguagem executvel por um computador atravs de um processo chamado compilao. A compilao substitui os comandos de alto nvel (que os humanos compreendem) por instrues de baixo nvel (compreendida pelo sistema operacional em execuo no computador). No caso do ADVPL, no o sistema operacional de um computador que ir executar o cdigo compilado, mas sim o Protheus Server. Dentro de um programa, os comandos e funes utilizados devem seguir regras de sintaxe da linguagem utilizada, pois caso contrrio o programa ser interrompido por erros. Os erros podem ser de compilao ou de execuo. Erros de compilao so aqueles encontrados na sintaxe que no permitem que o arquivo de cdigo do programa seja compilado. Podem ser comandos especificados de forma errnea, utilizao invlida de operadores, etc. Erros de execuo so aqueles que acontecem depois da compilao, quando o programa est sendo executado. Podem ocorrer por inmeras razes, mas geralmente se referem as funes no existentes, ou variveis no criadas ou inicializadas, etc. Linhas de Programa As linhas existentes dentro de um arquivo texto de cdigo de programa podem ser linhas de comando, linhas de comentrio ou linhas mistas. Linhas de Comando Linhas de comando possuem os comandos ou instrues que sero executadas. Por exemplo: Local nCnt Local nSoma := 0 For nCnt := 1 To 10 nSoma += nCnt Next nCnt Linhas de Comentrio Linhas de comentrio possuem um texto qualquer, mas no so executadas. Servem apenas para documentao e para tornar mais fcil o entendimento do programa. Existem trs formas de se comentar linhas de texto. A primeira delas utilizar o sinal de * (asterisco) no comeo da linha: * Programa para clculo do total * Autor: Microsiga Software S.A. * Data: 2 de outubro de 2001

  • - 27 -

    ADVPL Completo

    Todas as linhas iniciadas com um sinal de asterisco so consideradas como comentrio. Pode-se utilizar a palavra NOTE ou dois smbolos da letra "e" comercial (&&) para realizar a funo do sinal de asterisco. Porm todas estas formas de comentrio de linhas so obsoletas e existem apenas para compatibilizao com o padro xBase. A melhor maneira de comentar linhas em ADVPL utilizar duas barras transversais: // Programa para clculo do total // Autor: Microsiga Software S.A. // Data: 2 de outubro de 2001 Outra forma de documentar textos utilizar as barras transversais juntamente com o asterisco, podendo-se comentar todo um bloco de texto sem precisar comentar linha a linha: /* Programa para clculo do total Autor: Microsiga Software S.A. Data: 2 de outubro de 2001 */ Todo o texto encontrado entre a abertura (indicada pelos caracteres /*) e o fechamento (indicada pelos caracteres */) considerado como comentrio. Linhas Mistas O ADVPL tambm permite que existam linhas de comando com comentrio. Isto possvel adicionando-se as duas barras transversais (//) ao final da linha de comando e adicionando-se o texto do comentrio: Local nCnt Local nSoma := 0 // Inicializa a varivel com zero para a soma For nCnt := 1 To 10 nSoma += nCnt Next nCnt Tamanho da Linha Assim como a linha fsica, delimitada pela quantidade de caracteres que pode ser digitado no editor de textos utilizado, existe uma linha considerada linha lgica. A linha lgica, aquela considerada para a compilao como uma nica linha de comando. A princpio, cada linha digitada no arquivo texto diferenciada aps o pressionamento da tecla . Ou seja, a linha lgica, a linha fsica no arquivo. Porm algumas vezes, por limitao fsica do editor de texto ou por esttica, pode-se "quebrar" a linha lgica em mais de uma linha fsica no arquivo texto. Isto efetuado utilizando-se o sinal de ponto-e-vrgula (;). If !Empty(cNome) .And. !Empty(cEnd) .And. ; !Empty(cTel) .And. !Empty(cFax) .And. ; !Empty(cEmail) GravaDados(cNome,cEnd,cTel,cFax,cEmail) Endif

  • - 28 -

    ADVPL Completo

    Neste exemplo existe uma linha de comando para a checagem das variveis utilizadas. Como a linha torna-se muito grande, pode-se dividi-la em mais de uma linha fsica utilizando o sinal de ponto-e-vrgula. Se um sinal de ponto-e-vrgula for esquecido nas duas primeiras linhas, durante a execuo do programa ocorrer um erro, pois a segunda linha fsica ser considerada como uma segunda linha de comando na compilao. E durante a execuo esta linha no ter sentido. 3.1. reas de um Programa ADVPL Apesar de no ser uma linguagem de padres rgidos com relao estrutura do programa, importante identificar algumas de suas partes. Considere o programa de exemplo abaixo: #include protheus.ch /* +===========================================+ | Programa: Clculo do Fatorial | | Autor : Microsiga Software S.A. | | Data : 02 de outubro de 2001 | +===========================================+ */ User Function CalcFator() Local nCnt Local nResultado := 1 // Resultado do fatorial Local nFator := 5 // Nmero para o clculo // Clculo do fatorial For nCnt := nFator To 1 Step -1 nResultado *= nCnt Next nCnt // Exibe o resultado na tela, atravs da funo alert Alert("O fatorial de " + cValToChar(nFator) + ; " " + cValToChar(nResultado)) // Termina o programa Return A estrutura de um programa ADVPL composta pelas seguintes reas: rea de Identificao Declarao dos includes Declarao da funo Identificao do programa

    rea de Ajustes Iniciais Declarao das variveis

    Corpo do Programa Preparao para o processamento Processamento

    rea de Encerramento

  • - 29 -

    ADVPL Completo

    rea de Identificao Esta uma rea que no obrigatria e dedicada a documentao do programa. Quando existente, contm apenas comentrios explicando a sua finalidade, data de criao, autor, etc., e aparece no comeo do programa, antes de qualquer linha de comando. O formato para esta rea no definido. Pode-se colocar qualquer tipo de informao desejada e escolher a formatao apropriada. #include protheus.ch /* +==========================================+ | Programa: Clculo do Fatorial | | Autor : Microsiga Software S.A. | | Data : 02 de outubro de 2001 | +==========================================+ */ User Function CalcFator() Opcionalmente podem-se incluir definies de constantes utilizadas no programa ou incluso de arquivos de cabealho nesta rea. rea de Ajustes Iniciais Nesta rea geralmente se fazem os ajustes iniciais, importantes para o correto funcionamento do programa. Entre os ajustes se encontram declaraes de variveis, inicializaes, abertura de arquivos, etc. Apesar do ADVPL no ser uma linguagem rgida e as variveis poderem ser declaradas em qualquer lugar do programa, aconselhvel faz-lo nesta rea visando tornar o cdigo mais legvel e facilitar a identificao de variveis no utilizadas. Local nCnt Local nResultado := 0 // Resultado do fatorial Local nFator := 10 // Nmero para o clculo Corpo do Programa nesta rea que se encontram as linhas de cdigo do programa. onde se realiza a tarefa necessria atravs da organizao lgica destas linhas de comando. Espera-se que as linhas de comando estejam organizadas de tal modo que no final desta rea o resultado esperado seja obtido, seja ele armazenado em um arquivo ou em variveis de memria, pronto para ser exibido ao usurio atravs de um relatrio ou na tela. // Clculo do fatorial For nCnt := nFator To 1 Step -1 nResultado *= nCnt Next nCnt

  • - 30 -

    ADVPL Completo

    A preparao para o processamento formada pelo conjunto de validaes e processamentos necessrios antes da realizao do processamento em si. Avaliando o processamento do clculo do fatorial descrito anteriormente, pode-se definir que a validao inicial a ser realizada o contedo da varivel nFator, pois a mesma determinar a correta execuo do cdigo. // Clculo do fatorial nFator := GetFator() // GetFator funo ilustrativa na qual a varivel recebe a informao do usurio. If nFator

  • - 31 -

    ADVPL Completo