RDMAKE

Embed Size (px)

Citation preview

SUMRIOINTERPRETADORXBASE

....................................................................................... 5

Necessidades de Software ........................................................................................... 6 Necessidades de Hardware .......................................................................................... 6

PROGRAMAO ................................................................................................... 7Estrutura Bsica de Programas .......................................................................................... 7 Operadores ................................................................................................................... 8 Funes e Procedures .................................................................................................. 8 Estruturas de Controle ................................................................................................... 9 Variveis ........................................................................................................................ 9 Tipos de Dados ............................................................................................................. 9 Macros ........................................................................................................................ 10 Arrays .......................................................................................................................... 10 Blocos de Cdigo ........................................................................................................ 10 Compilao pelo RDMAKE ......................................................................................... 11 Configurao no Menu ..................................................................................................... 12

DIFERENAS ENTRE RDMAKE DOS E WINDOWS .................................................... 13Principais Diferenas ........................................................................................................ 13 Um novo modo de programar a interface ......................................................................... 14 Criando programas nicos ................................................................................................ 18 O que muda em relao a impresso ............................................................................... 27

FUNES PARA O INTERPRETADOR XBASE .............................................................. 29AbreExcl ...................................................................................................................... 30 Activate Dialog ............................................................................................................ 31 Aleatorio ...................................................................................................................... 32 Avalimp ....................................................................................................................... 33 Aviso ............................................................................................................................ 35 AxCadastro ................................................................................................................. 36 @ n1,n2 BmpButton .................................................................................................... 37 @... Bitmap... Size ...................................................................................................... 38 @...To...Browse ........................................................................................................... 39 @...Button ................................................................................................................... 40 Cabec .......................................................................................................................... 41 CalcEst ........................................................................................................................ 43 CalcSaldo .................................................................................................................... 44 Capital ......................................................................................................................... 45 CGC ............................................................................................................................ 46 @...CheckBox...Var ..................................................................................................... 47 ChkFile ........................................................................................................................ 48 Close ........................................................................................................................... 50 CloseOpen .................................................................................................................. 51 ClosesFile .................................................................................................................... 52

@...ComboBox...Itens...Size ....................................................................................... 53 Comp3 ........................................................................................................................ 54 Condicao ..................................................................................................................... 55 ConfirmSX8 ................................................................................................................. 56 Contar ......................................................................................................................... 57 ConvMoeda ................................................................................................................. 58 Credito ......................................................................................................................... 59 CriaTrab ...................................................................................................................... 60 CriaVar ........................................................................................................................ 62 DataValida ................................................................................................................... 63 Debito .......................................................................................................................... 64 DeComp3 .................................................................................................................... 65 @...To...Dialog ............................................................................................................. 66 Digito11 ....................................................................................................................... 67 DrawAdv3D ................................................................................................................. 68 DrawAdvWindow ......................................................................................................... 69 EANDigito ................................................................................................................... 70 Entre ............................................................................................................................ 71 Estrut ........................................................................................................................... 72 Execute ....................................................................................................................... 74 ExistChav .................................................................................................................... 75 ExistCpo ...................................................................................................................... 77 ExistIni ......................................................................................................................... 79 Extenso ....................................................................................................................... 80 FinNatOrc .................................................................................................................... 81 FinNatPrv .................................................................................................................... 82 FinNatRea ................................................................................................................... 83 Formula ....................................................................................................................... 84 FuncaMoeda ............................................................................................................... 86 @... GET ..................................................................................................................... 87 GetAdvFval ................................................................................................................. 88 GetMV ......................................................................................................................... 90 GetSX8Num ................................................................................................................ 91 GravaOrcado ............................................................................................................... 93 Help ............................................................................................................................. 94 ImpCadast ................................................................................................................... 95 IncRegua ..................................................................................................................... 96 IncProc ........................................................................................................................ 97 IndRegua ..................................................................................................................... 98 LetterOrNum ............................................................................................................... 99 MarkBrowse .............................................................................................................. 100 MBrowse ................................................................................................................... 101 Media ........................................................................................................................ 102 MesExtenso ............................................................................................................... 103 Modelo2 .................................................................................................................... 104 Modelo3 .................................................................................................................... 108 MontaF3 ..................................................................................................................... 111 MovimCC .................................................................................................................. 112 Movimento ................................................................................................................. 113 MsGetVersion ............................................................................................................ 114

MsgBox ..................................................................................................................... 115 @..To...MultiLine ........................................................................................................ 116 NaoVazio ................................................................................................................... 117 Negativo .................................................................................................................... 118 Orcado ...................................................................................................................... 119 OrcadoCC ................................................................................................................. 120 OpenFile .................................................................................................................... 121 OurSpool ................................................................................................................... 122 Pergunte .................................................................................................................... 123 Periodo ...................................................................................................................... 124 Pertence .................................................................................................................... 125 PesqPict .................................................................................................................... 126 PesqPictQt ................................................................................................................ 127 Posicione ................................................................................................................... 128 Positivo ...................................................................................................................... 129 ProcRegua ................................................................................................................ 130 ProxReg .................................................................................................................... 131 @...Radio .................................................................................................................. 133 RecLock .................................................................................................................... 134 RecMoeda ................................................................................................................. 136 RestArea ................................................................................................................... 137 RetASC ..................................................................................................................... 138 RetIndex .................................................................................................................... 139 RollBackSX8 ............................................................................................................. 140 RptStatus .................................................................................................................. 141 Saldo ......................................................................................................................... 142 SaldoCC .................................................................................................................... 143 SaldoCusto ................................................................................................................ 144 SaldoSB2 .................................................................................................................. 145 SetDefault ................................................................................................................. 146 SetDlg ....................................................................................................................... 148 SetPrint ..................................................................................................................... 149 SetRegua .................................................................................................................. 151 SldBco ....................................................................................................................... 152 SldCliente .................................................................................................................. 153 SldFornece ................................................................................................................ 154 SldPagar ................................................................................................................... 155 SldReceber ............................................................................................................... 156 SomaContas ............................................................................................................. 157 SomaMovim .............................................................................................................. 158 Somar ....................................................................................................................... 159 SomaSaldo ............................................................................................................... 160 SumMovimCC ........................................................................................................... 161 Tabela ........................................................................................................................ 162 TamSX3 .................................................................................................................... 163 Texto .......................................................................................................................... 164 @ ...TO ..................................................................................................................... 165 TM ............................................................................................................................. 166 Variao .................................................................................................................... 168 Vazio ......................................................................................................................... 169

X3Picture ................................................................................................................... 170 XFilial ......................................................................................................................... 171 XMoeda ..................................................................................................................... 172 Funes para impresso de etiquetas padro ZPL e Allegro ...................................................................................................... 173 MSCBPRINTER ........................................................................................................ 174 MSCBBEGIN ............................................................................................................ 175 MSCBEND ................................................................................................................ 176 MSCBSAY ................................................................................................................. 177 MSCBSAYBAR ......................................................................................................... 178 MSCBSAYMEMO ..................................................................................................... 180 MSCBBOX ................................................................................................................ 181 MSCBLineH .............................................................................................................. 182 MSCBLineV .............................................................................................................. 183 MSCBLOADGRF ...................................................................................................... 184 MSCBGRAFIC .......................................................................................................... 185 MSCBWRITE ............................................................................................................ 186 Tipos de Fontes para Zebra: ..................................................................................... 187 Tipos de Fontes para Allegro: .................................................................................... 188

RDMAKE EM AMBIENTE SQL ............................................................................ 191 EXECUTANDO .................................................................................................. 193Executando com Debug ................................................................................................. 193 Erros de Compilao ...................................................................................................... 198 Erros e aes a serem tomadas ............................................................................... 198

EXEMPLOS DE PROGRAMA ................................................................................. 200Referncias e Abreviaturas ............................................................................................. 219

INTERPRETADOR XBASEO interpretador de rotinas dinmicas tem o objetivo de permitir ao usurio do SIGA Advanced construir seus prprios programas, agreg-los ao menu dos mdulos e execut-los de uma forma transparente ao operador. De forma anloga, as rotinas escritas pelo usurio tambm podem fazer parte, por meio da funo ExecBlock, do Arquivo de Frmulas, das Planilhas, dos Gatilhos, das Validaes e Inicializaes no Dicionrio de Dados, dos campos de Dbito e Crdito, Histrico e Valor, do Arquivo de Lanamentos Padronizados e dos Pontos de Entrada, enfim, de todos os campos onde o SIGA aceita uma expresso que interpretada em tempo de execuo. O usurio ainda tem a possibilidade de utilizar os recursos de programao adotados pelo SIGA Advanced atravs do uso de um grande nmero de suas FUNES. O objetivo principal deste manual exatamente o de descrever e explicar o uso destas 180 Funes. Um programa ou rotina para ser interpretada pelo SIGA Advanced necessita cumprir duas fases: 1. Ser compilado pelo RDMAKE, utilitrio da MICROSIGA que gera os ponteiros de ligao de um programa .PRG, .PRW ou .PRX gerando o interpretvel ._IX ou ._IW; 2. Ser configurado no menu do mdulo com a # (cerquilha) precedendo o nome do programa, ou ser chamada via ExecBlock; A fase de interpretao do programa pelo SIGA Advanced j intrnseca a este e ser acionada sempre que encontrar um # na primeira posio do nome do programa no menu.

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 5

Necessidades de SoftwarePara que o Programa seja compilado pelo RDMAKE necessrio que o ambiente que ir compilar o programa possua o ADVPL16 que encontra-se no CD da verso 4.06 do SIGA Advanced, j que o RDMAKE submete o programa (.PRG, .PRX ou .PRW) apreciao do ADVPL16 antes de proceder a gerao do interpretvel. Aps compilado pelo RDMAKE, no mais necessria a presena do ADVPL16 para a interpretao dentro do SIGA Advanced.

Necessidades de HardwareO RDMAKE necessita de um mnimo de 450Kb de memria convencional para compilar um programa de 2048 linhas. Programas menores podero ser compilados com uma quantidade de memria menor, at o limite do ADVPL16, aproximadamente 370Kb. O equipamento mnimo um PC-XT de 640 Kb para a compilao. Quanto interpretao pelo SIGA Advanced, ficam vlidas as recomendaes para este produto.

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 6

PROGRAMAOEstrutura Bsica de ProgramasEste manual de utilizao do RDMAKE no tem a pretenso de ensinar cdigo xBase, to somente pretende mostrar as diferenas entre a programao XBase e o que aceito pelo Interpretador de Programas do SIGA Advanced. Por estar extremamente prximo do padro de programao XBase, recomendamos que sejam consultadas literaturas prprias para o caso de aprendizagem da programao desta linguagem. A estrutura de um programa escrito para ser interpretado pelo SIGA Advanced aderem s normas do padro XBase, com as restries que sero mostradas por tpico. O programa deve ser escrito em um editor de textos da preferncia do usurio usando a seguinte estrutura bsica: Corpo do Programa Chamadas de Funes Internas Chamadas de Funes Advanced Comentrios Declarao de Funes no Programa

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 7

OperadoresSo vlidos todos os operadores do padro XBase excetuando-se: Original++var - - var var++ var - var+=n var-=n var*=n var/=n var%=n var**=n

Substituir por- soma antes de executar - subtrai antes de executar - soma aps executar - subtrai aps executar - soma n a var - subtrai n de var - multiplica var por n - divide var por n - resto de var/n - Exponencia var a n var:=var+1 (antes do processo) var:=var-1 (antes do processo) var:=var+1 var:=var-1 var:=var+n var:=var-n var:=var*n var:=var/n var:=var%n var:=var**n

O operador de atribuio de igualdade deve obrigatoriamente ser := O operador de comparao deve obrigatoriamente ser == (duplo igual)

Funes e ProceduresAs definies de funes para o Interpretador podem seguir as regras do padro XBase, entretanto para o RDMAKE/Interpretador Procedures ou Funes so to somente endereos de desvio do programa, razo que justifica as restries a seguir: No deve ser definido um nome de procedure ou function para a funo principal. O interpretador xBase considera o ponto de entrada do programa na linha 1 do programa de usurio; Diretivas (#include, #define, etc...) no so aceitas no programa interpretvel; Chamada de funes no permitem passagem de parmetros. As variveis de comunicao entre funes devem ser declaradas na funo chamadora; S podem ser definidas at 255 funes ou Procedures por programa; A declarao de variveis LOCAL ou PRIVATE gera um erro no compilador; Chamadas recursivas a funes podem provocar erro de estouro de pilha ou ter um resultado inesperado, portanto so proibidas.

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 8

Estruturas de ControleFOR...NEXT DO...WHILE EXIT e LOOP IF..ELSEIF..ELSE...END So estruturas aceitas sem quaisquer restries pelo Interpretador.

VariveisTodas as variveis do interpretador so PRIVATE e tm o tempo de vida vlido por todo o programa, a partir de sua declarao. No so vlidas declaraes de variveis com STATIC, LOCAL, PRIVATE e PUBLIC. Um erro ser reportado pelo compilador nestes casos.

Tipos de DadosTodos os tipos de dados do padro XBase so aceitos no Interpretador, sem restries. So estes: Array Caractere Bloco de Cdigo Numrico Data Lgico Memo NIL

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 9

MacrosSo aceitas macros (&) dentro de programas interpretveis, entretanto macros muito complexas ou inseridas no meio de uma string precisam ser revistas. b := &a b:= var1&var2 &var:=Correta - vlida - precisa ser substituda por b:= &(var1+&var2) - vlida

Erros em macros s sero detectados em tempo de execuo.

ArraysO comportamento dos arrays no Interpretador e no padro XBase so semelhantes, entretanto, na declarao destes arrays, o procedimento difere. Declaraes de arrays aceitas so: aArray := {} aArray := ARRAY(5,2) Declaraes no aceitas: DECLARE aArray[5] PRIVATE aArray[5][2]

Blocos de CdigoBlocos de cdigo sero avaliados perfeitamente pelo Interpretador.

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 10

Compilao pelo RDMAKEPara que um programa possa ser interpretado pelo SIGA Advanced, este necessita ser compilado pelo programa RDMAKE que ir mont-lo em um formato que permite uma grande velocidade de interpretao e reestrutur-lo de modo que as interaes e desvios de funes fiquem endereadas dentro deste mesmo programa. O produto final da compilao ser um arquivo com extenso ._IX (DOS), ._IW (WINDOWS) ou _IX (DOS e WINDOWS), estes arquivos no devem ser modificados pelo programador. Os procedimentos de compilao seguem os seguintes passos: Editar o programa em um editor de textos de preferncia do usurio; Submeter este programa compilao do RDMAKE pela chamada RDMAKE - O RDMAKE ir gerar: sem diretiva: o arquivo interpretvel ._IX para verso DOS; com a diretiva -W: o arquivo interpretvel ._IW para verso Windows; com a diretiva -X: os arquivos interpretveis ._IX e ._IW para ambas verses. Os arquivos interpretveis so gerados no diretrio corrente. indicado que o diretrio corrente seja o mesmo do SIGA Advanced, j que o sistema chama o arquivo interpretvel a partir deste diretrio.

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 11

Configurao no MenuO programa compilado deve ser includo como uma opo no menu do mdulo desejado. Isto feito atravs da opo Menu do Mdulo Configurador. O SIGA Advanced saber que o programa interpretvel atravs do caractere # colocado antes do nome do programa. Isto limita o nome de programa interpretvel em sete posies.

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 12

DIFERENAS ENTRE RDMAKE DOS E WINDOWSO SIGA Advanced um sistema que possui verses para ambientes caracter, como o DOS, e ambientes grficos, como o Windows. Muitos clientes ainda utilizam verses em ambiente DOS, e tem uma grande quantidade de especficos desenvolvidos apenas para esse ambiente. A converso de todos estes programas de modo que fiquem compatveis com as verses do SIGA em ambiente Windows no realmente uma tarefa difcil. Porm, uma tima idia gastar algum tempo para criar todos os programas de modo que trabalhem perfeitamente em qualquer um destes ambientes, economizando assim esforos em uma possvel mudana de ambiente no futuro. Veja a seguir algumas das principais dvidas e dicas teis para esta tarefa.

Principais DiferenasO Windows um ambiente grfico e formado por objetos. Isto significa que todas as informaes apresentadas na tela do microcomputador so apresentadas atravs de objetos, ou componentes. Um componente pode ser um boto, uma caixa de texto para a digitao de dados (o to famoso GET que existia no DOS) e at mesmo uma janela (tambm chamada de dilogo). Diferentemente do ambiente DOS, onde pode-se exibir informaes em qualquer lugar da tela e, em qualquer momento, no ambiente Windows todos os componentes devem pertencer a um componente denominado Componente Pai. Assim por exemplo, se voc precisa criar uma janela para que o usurio digite uma certa informao, esta janela pertencer janela da aplicao, ou seja, janela do SIGA. E da mesma forma, os botes, os GETs , e outros componentes pertencero ao dilogo criado. Desta forma, no existe a necessidade de salvar a rea de tela sobre a qual a janela ser exibida (e posteriormente restaur-la), ou no se precisa indicar que a janela dever ser exibida at que o usurio pressione a tecla ESC. A janela aparecer no momento em que for ativada, e com ela todos os seus componentes. E somente ser removida quando o usurio desejar fech-la ou alguma instruo do cdigo fizer o mesmo, levando consigo todos os componentes criados.

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 13

Percebe-se facilmente que a grande diferena entre o ambiente DOS e o ambiente Windows a manuteno da interface com o usurio, sendo que o cdigo de processamento basicamente o mesmo.

Um novo modo de programar a interfaceApesar das diferenas basearem-se na interface, o novo paradigma de ambientes grficos exerce uma mudana na velha forma de programar. Ento, a lgica tradicional pode no ser mais a melhor opo na maioria dos programas, em relao a montagem da interface e no modo como o usurio ir acionar a execuo dos processos. Por exemplo, imagine o seguinte cdigo:

While .T. / / . . . Monta a janela para a interface com o usurio If LastKey( ) == 27 Exit Endif EndDo

Este cdigo demostra uma estrutura de fluxo em execuo infinita, que somente deixar de executar quando o usurio pressionar a tecla ESC.

/ / . . . Executa o processamento com as informaes recebidas...

No ambiente Windows, os dilogos criados permanecem na tela at que o usurio deseje fech-lo. Portanto, a mesma lgica seria algo como o demonstrado a seguir:/ / . . . Cria o dilogo, com todos os seus componentes, para interface com o usurio / / . . . Ativa o dilogo criado / / . . . Executa o processamento com as informaes recebidas...

Neste caso, o processamento das informaes somente seria executado aps o usurio fechar o dilogo. Uma outra alternativa, que a mais usada, podem ser a incluso de dois botes, um indicando a confirmao e o outro indicando o cancelamento. Na verdade, o nico boto que executa alguma coisa realmente o boto de confirmao, pois o boto de cancelamento somente finaliza o dilogo e o processamento se encerra normalmente. Veja o exemplo:

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 14

/ / . . . Cria o dilogo com os componentes necessrios / / . . . Dentre estes componentes existem dois botes: / / . . . Boto 1 -> A ao a ser executada ao pressionamento deste boto , por exemplo, a / / . . . funo XPTO / / . . . Boto 2 -> A ao a ser executada ao pressionamento deste boto simplesmente o / / . . . fechamento do dilogo / / . . . Ativa o dilogo. O mesmo permanece na tela at o usurio fechar o dilogo, pressio/ / . . . nando o pequeno cone do X no alto da janela ou pressionando o boto Cancelar, que / / . . . executa o cdigo para o fechamento do dilogo. / / . . . Finaliza o programa. Caso o dilogo simplesmente seja fechado, o processamento / / . . . seguir nesta linha, e o programa ser finalizado sem que nada seja executado.

/ / *********** Funo XPTO ***************** / / . . . Declarao da funo XPTO. Esta funo apenas ser executada atravs do / / . . . pressionamento do boto Confirmar no dilogo do programa acima. / / . . . Executa o processamento com as informaes recebidas. / / . . . Finaliza a funo XPTO. Note que ao retornar da funo, o dilogo permanece aberto / / . . . e, aos olhos do usurio, o processamento continua. Isso realmente acontece, a no ser / / . . .que nesta mesma funo, antes de finalizar, seja executado o cdigo indicando para / / . . .fechar o dilogo aberto no programa acima.

Para ilustrar tudo o que foi descrito, nas prximas pginas voc ver exemplos de um programa que apresenta uma tela de interface com o usurio que indica a finalidade da rotina e permite-lhe cancelar ou confirmar o processamento. Esto demonstrados os cdigos para as duas verses separadamente, DOS e WINDOWS, portanto, se voc desejar test-los crie os programas com a extenso .PRG para a verso DOS e .PRW para a verso WINDOWS. Mais frente, demonstraremos como uni-los em um nico arquivo com extenso .PRX, utilizando assim apenas um programa para as duas verses.

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 15

Verso DOS

// // // //

Salva o contedo da tela atual na varivel sTela.

sTela := SaveScreen(07,06,15,71)

// // // //

Desenha uma janela utilizando a funo padro do Microsiga.

DrawAdvWindow("Ateno!",07,08,13,71)

// // // //

Apresenta as mensagens ao usurio.

sOldCor := SetColor("B/BG") @ 09,10 Say "Este programa exige que os arquivos associados a ele estejam" @ 10,10 Say "em modo exclusivo. Certifique-se de que nenhum outro usurio" @ 11,10 Say " esteja usando o sistema neste momento. " SetColor(sOldCor)

// // // //

Esta a parte do programa que permanece em execuo at a confirmao ou o cancelamento pelo usurio. Para isso se utiliza da funo da Microsiga chamada MenuH.

While .T. NResp:=Menuh({"Ok","Cancela"},13,10,"b/w,w+/n,r/w","OC","",1) If nResp == 1

Endif

// // // //

Executa o processamento necessrio, pois o usurio confirmou.

// // // //Exit EndDo Return

Indica a finalizao do Loop para finalizar o programa.

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 16

Verso Windows

// // // // // // // // // // // // //

Monta o dilogo para a interface com o usurio utilizando os comandos padronizados da Microsiga. Obs.: Todos os comandos aqui usados encontram-se demostrados no programa chamado RDDEMO.PRW que acompanha todos os mdulos do sistema.

@ 0,0 TO 135,360 DIALOG oDlg TITLE "Ateno!"

A partir de agora, todos os objetos indicados pertencero ao dilogo acima. Note que voc pode declarar todos os tipos de objetos, exceto um novo dilogo. A linha abaixo define um BOX, ou seja, um quadro semelhante ao comando @ TO do DOS.

@ 01,02 TO 45,178

// // // //

As linhas abaixo demostram a exibio de mensagens na tela do usurio. O comando exatamente o mesmo utilizado no ambiente DOS.

@ 10,10 Say "Este programa exige que os arquivos associados a ele estejam" @ 20,10 Say "em modo exclusivo. Certifique-se de que nenhum outro usu rio" @ 30,10 Say " esteja usando o sistema neste momento. "

// // // // // // // //

A seguir, as linhas que demostram o uso de botes. Note a clusula ACTION, que indica que ao ser executada ao pressionamento do boto. O boto do tipo 1 (que o boto indicador de confirmao) executar a funo CONTINUA e o boto do tipo 2 executar o encerramento do dilogo. Note que neste momento estamos apenas definindo os objetos que aparecero no dilogo. Seu pressionamento e, conseqentemente, a execuo das aes somente sero possiveis no acionamento do dilogo.

@ 50,120 BMPBUTTON TYPE 1 ACTION Execute(Continua) @ 50,150 BMPBUTTON TYPE 2 ACTION Close(oDlg)

// // Aciona o dilogo centralizado na tela. Repare que existe uma varivel, chamada oDlg, // que contm o objeto. Ela apareceu pela primeira vez na declarao do dilogo (mais // acima) e atravs dela que poderemos manusear o objeto (no caso o dilogo). Por // exemplo, necessria a varivel para que a funo CLOSE finalize o dilogo. // // ACTIVATE DIALOG oDlg CENTERED // // // // Aqui finaliza a execuo do programa principal. O processamento somente chegar a este ponto quando o dilogo for fechado.

Return

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 17

Criando programas nicosDo mesmo modo que os comandos mostrados para a criao de botes no exemplo para a verso Windows, a criao dos outros componentes muito simples. Muitas pessoas tm dvidas quanto ao acesso s informaes destes componentes, mas isto tambm no complicado. O comando GET na verso Windows idntico ao utilizado na verso DOS, exceto pelo fato de que a clusula PICTURE no pode ser abreviada e no existe a necessidade do comando READ para que as variveis sejam editadas. Lembre-se: todos os componentes pertencem ao dilogo e somente sero exibidos, e editados, quando o dilogo for acionado. Durante o processamento, que em nosso exemplo seria dentro da funo CONTINUA, voc pode acessar o contedo das variveis editadas no dilogo, ou as variveis referentes a qualquer outro componente criado pelos comandos padronizados do interpretador RDMAKE para Windows. Um exemplo completo destes comandos acompanha o sistema e chama-se RDDEMO.PRW (comentado no final do manual). um programa que pode ser executado atravs do menu de qualquer mdulo e utiliza-se de quase todos os comandos para o ambiente Windows. Com tudo isto compreendido, ainda resta uma dvida que atrapalha muitos programadores: como criar uma rotina nica, que funcione para ambos os ambientes? O prximo exemplo demonstra o uso dos GETs, de alguns outros comandos do ambiente Windows, e como criar o programa de modo que ele possa ser executado em ambos os ambientes. Para isso, ele se utiliza de diretivas do prcompilador. Diretivas do pr-compilador so comandos que so executados exatamente antes da execuo da prpria compilao do programa. As diretivas que podem ser utilizadas no RDMAKE so: DEFINE, IFDEF, IFNDEF e INCLUDE. A diretiva DEFINE utilizada para definir expresses constantes para o seu programa, a diretiva INCLUDE permite que voc inclua um arquivo texto com um agrupamento de outras diretivas no seu programa, e as diretivas IFDEF e IFNDEF so diretivas condicionais. As diretivas so sempre precedidas do caracter de cdigo ASC 35 (#) e devem ser sempre escritas com os caracteres em caixa alta (com todas as letras maisculas). Por exemplo, imagine que voc ir utilizar o valor de (PI) para executar clculos em seu programa. Ao invs de informar o valor 3,14 em todos os pontos onde ele ser utilizado, voc pode declarar um DEFINE e utilizar a expresso PI onde quiser que o clculo seja executado. Algo como no exemplo:#DEFINE PI 3.14 nPerimetro := 2 * PI * nRaio

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 18

Definir expresses nestes casos muito melhor do que utilizar variveis. Porque antes da compilao, o pr-compilador analisa todo o programa e substitui a expresso PI pelo valor 3,14. Somente ento o programa realmente compilado. Deste modo, no h consumo de recursos durante a execuo do programa e a legibilidade do cdigo-fonte muito boa. E caso voc deseje manter um arquivo texto com todas as suas definies e outras diretivas, voc pode cri-lo com qualquer nome e inclui-lo no programa aonde as diretivas devem ser utilizadas:// Contedo de DEFINIC.CH #DEFINE PI 3.14 // Contedo do Programa #INCLUDE DEFINIC.CH nPerimetro := 2 * PI * nRaio

O padro para estes arquivos de definies a extenso CH, e o nome do arquivo deve estar sempre entre aspas duplas quando for includo no seu programa. Mas a grande vantagem destas diretivas no se encontra somente no fato de se poder cri-las. Voc tambm pode verificar se elas j foram ou no definidas, atravs de diretivas condicionais. Isto muito til quando voc deseja, por exemplo, exibir uma mensagem na tela indicando um valor qualquer, pois voc ainda est em fase de desenvolvimento do programa, mas quando for disponibiliz-lo a um usurio, voc no desejar que o mesmo veja estas mensagens e no ser necessrio remov-las do cdigo. Suponha que voc crie a mensagem no seu cdigo como o seguinte:// cdigo normal. . . #IFDEF LIGAAVISO Aviso(Debug,O valor da varivel cVar : +cVar,{Ok}) #ENDIF // continuao do cdigo. . .

Neste exemplo, voc nota que no existe a definio da expresso LIGAAVISO e muito menos uma incluso de um arquivo de definies. E como a diretiva condicional IFDEF verifica se a expresso LIGAAVISO est definida, a funo AVISO no ser executada. Na verdade, o que ocorre o seguinte: Antes de compilar, o pr-compilador analisa o programa. Ele verifica que a expresso LIGAAVISO no est definida e, portanto, o cdigo entre o #IFDEF e o #ENDIF no ser compilado, ou seja, o cdigo desta linha no entrar no arquivo interpretvel (com a extenso ._IX ou ._IW) e, conseqentemente, no ser executado. Para fazer com que esta expresso esteja definida, no necessrio cri-la no cdigo fonte ou em arquivos de incluso. Basta defini-la no momento da compilao, utilizando a seguinte sintaxe na linha de comando do RDMAKE:MANUAL RDMAKE - SIGA ADVANCED 4.07 - 19

RXMAKE

NOMPROG

W

/DLIGAAVISO

Se na linha de comando voc utilizar: RDMAKE NOMPROG X / DLIGAAVISO, a definio no funcionar. Porque RDMAKE executa um arquivo de lote (RDMAKE.BAT) que chama o verdadeiro compilador RXMAKE.EXE mas no passa o parmetro adicional de definio para o mesmo. Portanto, voc pode habilitar ou desabilitar as mensagens do seu programa apenas mudando a maneira da compilao. Estas explicaes so necessrias para que voc compreenda como o RDMAKE trata os programas que sero executados em ambas as verses do SIGA. Estes tipos de programas (que devem utilizar a extenso PRX, como j comentado) devem verificar a definio da expresso WINDOWS. Quando a mesma existir, voc saber que se trata de uma seco de programa que ser executada na verso Windows do SIGA. Caso contrrio, o programa ser executado somente na verso DOS e no ser necessrio utilizar o parmetro /D da linha de comando. O que acontece que quando o programa tem a extenso .PRX e voc informa o parmetro X na linha de comando do RDMAKE, o cdigo-fonte compilado duas vezes. Uma para o ambiente DOS e outra para o ambiente WINDOWS. E na ltima compilao, que a compilao para o ambiente WINDOWS, ele mesmo cria a definio da expresso WINDOWS. Veja o seguinte exemplo:#IFDEF WINDOWS // Estas linhas s existiro na verso Windows #ELSE // Estas linhas s existiro na verso DOS #ENDIF

Ento quando o compilador verifica o cdigo-fonte pela primeira vez a expresso WINDOWS no existe, e qualquer cdigo que esteja entre direticas condicionais que checam a existncia desta expresso simplesmente no sero compiladas. Na Segunda vez que o compilador verifica o cdigo-fonte ele prprio definir a expresso WINDOWS, e ento o cdigo que no ser compilado ser o cdigo da clusula #ELSE. Utilizando estes conceitos, os programas dos exemplos anteriores poderiam ser unificados da seguinte maneira:

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 20

// // // //

Declarao das variveis utilizadas pelo programa. := := := := := := := := := .T. Space(6) Space(3) Space(200) "S" 1 {"Sim ","Nao "} {} {Confirma,Redigita,Abandona}

lOk cDoc cSerie cMens cImpDup nImpDup aImpDup aSeries aOp

// // // //

Monta um ARRAY com as sries disponveis para o sistema.

dbSelectArea("SX5") dbSeek(xFilial("SX5")+"01") While !EOF() .And. SX5->X5_TABELA == "01" aAdd(aSeries,Substr(AllTrim(SX5->X5_CHAVE),1,3)) dbSkip() EndDo

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 21

While .T. @12,21 Say Space(29) Color "B/W" Valid

@07,34 Get cDoc Picture "@!" @07,49 Get cSerie Picture "@!" When MontaF3("01") MontaF3() @08,39 Get cMens Picture "@!@S27" @10,45 Get cImpDup Picture "!" Valid Pertence("SN") Rea

// // // // // //

Note o uso da funo OKPROC caso o usurio confirme o processamento. O cdigo da confirmao poderia ser colocado diretamente dentro do CASE no lugar da chamada da funo OKPROC, mas como no Windows iremos utilizar um boto, devemos criar uma funo para executar este processamento.

nResp := MenuH(aOP,12,21,"b/w,w+/n,r/w","CRA","",1) Do Case Case nResp == 1 // Confirma OkProc() If lOk Exit Else lOk := .T. Loop Endif Case nResp == 2 // Redigita Loop Case nResp == 3 // Abandona Exit EndCase EndDo

#ELSE

// // // // // // // // // // // // //

Aqui terminar o bloco do cdigo que ser considerado para o ambiente DOS. Como a seguir comear o bloco do ambiente WINDOWS (#ELSE), para a primeira compilao ele ser desconsiderado at aonde encontra-se o #ENDIF. Portanto, para o ambiente DOS o programa termina aqui. O processamento principal somente ser executado na confirmao pelo usurio (que acionar a funo OKPROC).

Incio do bloco que ser considerado na segunda etapa da compilao, a compilao para o ambiente WINDOWS. Os comentrios anteriores so vlidos. Portanto para a segunda etapa da compilao o programa comecar aqui (exceto quanto a declarao das variveis logo no incio).

@ 212,148 To 418,652 Dialog oDados Title Dados da Nota Fiscal" @ 001,001 To 100,250

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 22

// // // // // // // // // //

Agora inicia-se a parte do programa que identifica as diferenas entre os ambientes. Lembre-se que cada cdigo somente ser compilado em uma das etapas da compilao, dependendo da existncia ou no da definio WINDOWS.

Na primeira etapa da compilao, que o ambiente DOS, no estar definido a expresso WINDOWS, ento esta primeira parte do cdigo ser considerada. A parte do #ELSE, mais abaixo, ser descartada.

#IFNDEF WINDOWS

// // // //

Salva a rea da tela aonde sero exibidos os dados e monta a tela no padro DOS.

_sTela := SaveScreen(05,17,14,68) DrawAdvWindow("Dados da Nota Fiscal",05,19,12,68) @06,20 TO 11,67 Color "B/BG" @07,21 Say "Nota Fiscal:" Color "B/BG" @07,42 Say "Serie:" Color "B/BG" @08,21 Say "Mensagem da nota:" Color "B/BG" @10,21 Say "Imprimir as duplicatas?" Color "B/BG"

// // // // // //

Esta a estrutura de fluxo infinita que geralmente se usa para permitir ao usurio redigitar, por exemplo, no ambiente DOS. Assim os GETs sero executados at o usurio confirmar ou abandonar o processamento.

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 23

// // // // // // //@ @ @ @

O uso da funo OEMTOANSI serve para compatibilizar os caracteres ANSI (padro DOS) com o ambiente Windows, permitindo que alguns caracteres especiais sejam impressos (no caso do exemplo, o acento de srie). O comando COMBOBOX monta uma lista Drop-Down com as sries obtidas no incio do programa, e o comando RADIO diponibiliza as duas opes para escolha no padro do ambiente Windows. 009,007 009,149 024,006 080,008 Say Say Say Say OemToAnsi("Nota Fiscal:") OemToAnsi("Srie") OemToAnsi("Mensagem da Nota:") OemToAnsi("Imprimir duplicatas?")

@ 009,038 Get cDoc Picture "@!" Size 100,100 @ 033,007 Get cMens Picture "@!" Size 230,040 MEMO @ 009,168 ComboBox cSerie @ 080,060 Radio aImpDup Items aSeries Var nImpDup Size 50,50

@ 083,172 BmpButton Type 1 Action Execute(OkProc) @ 083,210 BmpButton Type 2 Action Close(oDados) Activate Dialog oDados Centered

// // // // // // //

Aqui termina o bloco considerado para o ambiente WINDOWS. O dilogo ser mantido na tela at que o usurio pressione o boto do tipo 2, que fechar o mesmo, ou pressione o boto do tipo 1, que executar a mesma rotina da confirmao do ambiente DOS. Aps o dilogo ser fechado, o processamento continuar aps o #ENDIF e o programa ser finalizado.

#ENDIF

// // // // // //

Aqui termina o programa principal. O processamento retornar para este ponto quando a funo OKPROC terminar seu processamento ou quando o usurio cancelar. No caso do ambiente DOS, isto ocorrer quando, por qualquer destes motivos, o loop infinito terminar, e no ambiente WINDOWS, ocorrer quando o dilogo for fechado.

Return

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 24

Figura 1 - Tela do programa de exemplo no ambiente DOS

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 25

Function OkProc

// // // // // //

Esta a funo OKPROC. a mesma que ser executada em ambas as verses, portanto encontrase fora dos blocos da checagem do ambiente (#IFNDEF - #ELSE - #ENDIF), e estar em qualquer um dos arquivos interpretveis gerados.

// A primeira tarefa que a funo executa uma checagem dos dados digitados. Tanto no ambiente // DOS como no ambiente WINDOWS, os valores estaro nas variveis informadas nos GETs. O // ambiente WINDOWS no tem o comando READ, mas as variveis so disponibilizadas para // edio a partir do momento em que o dilogo ativado at o usurio pressionar o boto de // confirmao. Note que at aqui, o dilogo da verso WINDOWS no foi fechado, de modo que // quando a funo detecta inconsistncias e retorna, o processamento retornar para o dilogo aberto, // e o usurio poder reeditar as variveis, cancelar ou confirmar novamente o processamento. No // caso do ambiente DOS, foi criada a varivel lOK que identificar, no programa principal, que o // loop infinito dever continuar, pois o processamento no foi concludo. // // If Empty(cDoc) .Or. Empty(cSerie) //Aviso("Erro!","Voce deve informar o numero de um documento de nota fiscal e serie existente.",{"Ok"}) lOk := .F. Return Endif dbSelectArea("SF2") dbSetOrder(1) If !dbSeek(xFilial("SF2")+cDoc+cSerie) Aviso("Erro!","Nmero do documento/Srie no encontrado.",{"Ok"}) lOk := .F. Return Endif

// // // // // //

Aqui seria executado o processamento com a nota fiscal informada. Para verificar a escolha do usurio, por imprimir ou no as duplicatas, deve-se tratar os dois ambientes diferentemente. Porque no caso do ambiente DOS utilizou-se uma varivel em que o usurio digitava Sim ou No e no ambiente WINDOWS, utilizou-se o comando RADIO que altera uma varivel numrica, contendo o nmero da opo escolhida.

#IFNDEF WINDOWS If cImpDup == "S" // Executa o processamento para impressao das duplicatas. . . Endif #ELSE If nImpDup == 1 // Executa o processamento para impressao das duplicatas. . . Endif #ENDIF

// // // // // // // //

Aqui encontra-se o final da funo OKPROC, aonde o processamento j foi concludo. A varivel lOK, utilizada como Flag pelo cdigo para o ambiente DOS j continha desde o incio o valor verdadeiro (.T.), portanto no cdigo deste ambiente o processamento ser finalizado (vide o cdigo do incio do programa, na linha aps a chamada desta funo). Para o cdigo do ambiente WINDOWS, so nos resta fechar o dilogo. A condio a seguir faz esta verificao e o processamento retorna para o programa principal.

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 26

Figura 2 - Tela do programa de exemplo no ambiente WINDOWS

O que muda em relao a impressoQuanto a impresso, as mudanas tambm so pequenas mas necessrias. Apesar de no ambiente Windows existirem Drivers para as impressoras instaladas, o SIGA no se utiliza deles na maioria das vezes. Quando o usurio escolhe uma impressora qualquer da lista exibida na interface padro de relatrios (criada pela funo SETPRINT), o sistema imprime diretamente para a porta definida, mas se o usurio escolher nesta lista Default do Windows, o sistema ento imprimir atravs do driver do Windows. por esse motivo que ao imprimir em qualquer impressora que no seja o Default do Windows, o sistema requer que a impressora esteja local ou que uma porta esteja capturada para a impressora da rede. Tudo isto influi na inicializao da impressora. No ambiente DOS, bastava utilizar os comandos SET PRINTER TO e SET DEVICE TO para preparar a impresso, mas no ambiente WINDOWS deve-se ainda preparar a porta para a impresso, que ser desviada da impressora padro do sistema operacional. Como na maioria dos relatrios, utilizamos as funes padronizadas da MICROSIGA, como a SETPRINT e a SETDEFAULT; isto transparente para o programador. O sistema se encarrega dessas preparaes. Mas caso voc no se utilize destas funes, dever inicializar a porta desejada ou, ento, a impresso no ser possvel. Neste caso, utilize a funo INITPRINT, como no exemplo:

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 27

SET PRINTER TO LPT1 SET DEVICE TO SCREEN #IFDEF WINDOWS INITPRINT() #ENDIF

Note que a funo INITPRINT somente necessria para o cdigo do ambiente WINDOWS. Para finalizar o acesso porta, deve-se utilizar a funo MS_FLUSH. Esta funo realiza uma srie de tarefas e absolutamente necessria ao final do programa, pois caso no seja utilizada, ocorrero erros na prxima tentativa de impresso. Tambm utilizada no cdigo para ambiente DOS, portanto no deve estar entre diretivas condicionais. O que resta ento a forma como a impresso feita. Programadores tradicionais do padro xBASE esto acostumados a utilizar o comando SAY para a impresso. Porm, no ambiente WINDOWS existe um novo comando: PSAY. No ambiente WINDOWS, o comando SAY sempre direciona a sada para a tela, independente da ativao do comando SET DEVICE TO. Utiliza-se o comando PSAY para desviar a sada para a impressora. Isto deve-se ao fato de que neste ambiente, os dois dispositivos, tela e impressora, so tratados separadamente. Assim, voc no precisa retornar a sada para a tela, usando SET DEVICE TO SCREEN, durante uma impresso se desejar exibir informaes ao usurio. muito comum em programas nicos desenvolvidos para os dois ambientes que se crie todo o cdigo utilizando PSAY, porm includa a diretiva como no exemplo a seguir, que ir substituir este comando pelo padro do ambiente DOS (SAY) durante a pr-compilao para este ambiente. Tendo estes conceitos em mente, ficar bem mais fcil para o programador desenvolver programas RDMAKE para o ambiente WINDOWS ou compatibilizar os programas existentes. Na grande maioria das vezes, o trabalho envolvido na compatibilizao de programas existentes para o ambiente DOS deve-se lgica empregada ou a complexidade das telas criadas. E deve-se lembrar que alguns conceitos so extremamente diferentes entre os dois ambientes. No DOS, as coordenadas esto em caracteres, nas linhas por colunas, e no WINDOWS, as mesmas coordenadas se encontram em PIXELS (pontos grficos da tela do microcomputador). Isto dificultar o posicionamento dos dilogos e componentes, pois as alteraes podem influir pouco ou muito na aparncia final e portanto o programador deve executar um grande nmero de alteraes e testes no cdigofonte at que o resultado final seja o esperado. E o mais importante que devemos sempre procurar desenvolver aplicaes que j estejam preparadas para o ambiente WINDOWS (caso usemos ainda o ambiente DOS) ou desenvolv-las de modo que uma customizao futura seja facilitada.MANUAL RDMAKE - SIGA ADVANCED 4.07 - 28

FUNES PARA O INTERPRETADOR XBASEA seguir so apresentadas as funes SIGA Advanced para uso junto ao RDMAKE / Interpretador xBASE. Na linha seguinte ao nome de cada funo informado onde normalmente ela utilizada, a saber: Processamento: funes usadas em clculos, acesso a arquivos e tratamentos em geral; Impresso: funes usadas exclusivamente na gerao de Relatrios; Telas: funes usadas na gerao de telas, seja DOS ou Windows;

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 29

AbreExclTipo: Processamento Fecha o arquivo e reabre exclusivo. Esta funo fecha o arquivo cujo alias est expresso em e o reabre em modo exclusivo para proceder operaes em que isto necessrio, como por exemplo, PACK. Entretanto, prefervel utilizar o depurador do sistema para proceder estas operaes. Se outra estao estiver usando o arquivo, o retorno ser .F..

SintaxeAbreExcl(cAlias)

ParmetroscAlias Nome do Alias do Arquivo. Deve ter obrigatriamente sua estrutura definida no SX3.

Exemplo// IF AbreExcl(SI2) Pack ENDIF AbreExcl( ) dbGoTop( )

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 30

Activate DialogTipo: Tela Windows Ativa uma janela previamente definida na funo Dialog e executa os GETs, botes e outros objetos.

SintaxeACTIVATE DIALOG cVar [On Init cFuncInit] [Valid cFuncValid]

ParmetroscVar Varivel utilizada na funo Dialog para definio da janela. cFuncInit Funo executada automaticamente na abertura do dilogo na tela (Opcional). cFuncValid Funo executada para validar o fechamento da janela de dilogo. Deve retornar um valor lgico (.T. ou .F.) (Opcional)

ComentriosA clusula opcional, se omitida assume as coordenadas definidas na criao da janela.

ExemploVer exemplo no programa RDDEMO apresentado no final deste Manual.

Ver tambmFuno Dialog

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 31

AleatorioTipo: Processamento Gera um nmero aleatrio de acordo com a semente passada. Esta funo retorna um nmero aleatrio menor ou igual ao primeiro parmetro informado, usando como semente o segundo parmetro. recomendado que esta semente seja sempre o ltimo nmero aleatrio gerado por esta funo.

SintaxeAleatorio(nMax,nSeed)

ParmetrosnMax nSeed Nmero mximo para a gerao do nmero aleatrio Semente para a gerao do nmero aleatrio

RetornanRet Nmero aleatrio retornado

Exemplo// Exemplo do uso da funo Aleatorio: nSeed := 0 For i := 1 to 100 nSeed := Aleatorio(100,nSeed) ? Str(i,3)+ numero aleatorio gerado: +Str(nSeed,3) Next i inkey(0) Return

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 32

AvalimpTipo: Relatrios Configura a impressora atravs dos parmetros. Esta funo usada em relatrios especficos que no se utilizam da funo Cabec. Imprimindo o retorno desta funo na impressora, ela se encarregar de configurar a impressora de acordo com o arquivo de driver escolhido, e com as configuraes escolhidas pelo usurio definidas no array aReturn.

SintaxeAvalImp(nLimit)

ParmetrosnLimit Tamanho do relatrio em colunas. Pode ser 80, 132 ou 220 (respectivamente para relatrios de tamanho P,M e G).

RetornacControl String com caracteres de controle, dependente das configuraes escolhidas pelo usurio e do arquivo de driver especificado.

Exemplo// Exemplo de uso da funo AvalImp: #IFNDEF WINDOWS #DEFINE PSAY SAY #ENDIF cCbTxt:= cCbCont:= nOrdem:= 0 nAlfa:= 0 nZ:= 0 nM:= 0 cTamanho:= G cLimite:= 220 cTitulo:= PADC(Nota Fiscal,74) cDesc1:= PADC(Este programa ir emitir a Nota Fiscal de Entrada/Sada,74) cDesc2:= cDesc3:= PADC(da Feeder Industrial Ltda.,74) cNatureza:=

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 33

aReturn:= {Especial, 1,Administrao, 1, 2, 2,,1} cNomeProg:= NFEEDER cPerg:= ENTSAI nLastKey:= 0 lContinua:= .T. nLi:= 0 wnrel:= NFEEDER nTamNf:=72 Pergunte(cPerg,.F.) cString:=SF2" wnrel:= SetPrint(cString,wnrel,cPerg,cTitulo,cDesc1,cDesc2,cDesc3,.T.) SetDefault(aReturn,cString) If nLastKey == 27 Return Endif #IFDEF WINDOWS RptStatus({|| Execute(Relato)}) Return #ENDIF Function Relato SetPrc(0,0) // Aqui est a chamada da funo AvalImp. Configura a // impressora de acordo com as definies em aReturn // escolhidas pelo usurio na funo SetPrint @ 00,00 PSAY AvalImp(220) dbSelectArea(SF2) dbSeek(xFilial()+mv_par01+mv_par03,.T.) // O programa segue normalmente... Return // Apenas Informativo // Pergunta no SX1

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 34

AvisoTipo: Tela DOS/Windows Monta uma janela exibindo o texto desejado e, opcionalmente, disponibilizando opes de escolha para o usurio.

SintaxeAviso(cTitulo,cMensagem,aOpcoes)

ParmetroscTitulo Titulo da janela. cMensagem Mensagem para ser exibida no interior da janela. O tamanho mximo de 90 caracteres. aOpcoes Array de caracteres com as opes para a montagem de menu (na verso DOS) ou dos botes (na verso Windows).

RetornanResp Retorno. Retorna o nmero da opo escolhida pelo usurio.

Exemplo// Exemplo de uso da funo Aviso: While .T. GravaArq() // Funo qualquer (apenas p/exemplo) If !File(TESTE.TXT) aOp:= {Sim,Nao,Cancela} cTit:= Atencao! cMsg:= O arquivo TESTE.TXT nao foi gravado! cMsg:= cMsg + Tenta novamente? nOp:= Aviso(cTit,cMsg,aOp) If nOp == 1 // Sim Loop ElseIf nOp == 3 // Cancela Return Else // Nao ou Exit Endif Endif Exit EndDo // Faz o processamento... Return

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 35

AxCadastroTipo: Processamento Gerao de modelo 1. Rotina para criao e manuteno de cadastros no padro do SIGA Advanced, contendo as opes padronizadas: PESQUISA, INCLUSO, ALTERAO, VISUALIZAO e EXCLUSO. Disponibiliza o Browse e todas as funes de cadastramento padro.

SintaxeAxCadastro(cAlias,cTitulo,cDel,cOk)

ParmetroscAlias cTitulo cDel cOk Alias do arquivo. Deve obrigatoriamente ter sua estrutura definida no SX3. Ttulo da Janela. Funo para validar a excluso. Funo para validar a Incluso/Alterao.

ComentriosDeve ser utilizada para editar arquivos especficos (Famlia SZ?), sendo semelhante aos cadastros de Clientes, Fornecedores e etc...

Exemplo// Exemplo de uso de cadastro de arquivo especifico: AxCadastro(SZ1,Cadastro de Descontos,.T.",.T.) Return

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 36

@ n1,n2 BmpButtonTipo: Tela Windows Cria um boto de bitmap padro do SigaAdv Win.

Sintaxe@ nLinha,nColuna BMPBUTTON TYPE nBotao ACTION cFuncao OBJECT oBtn

ParmetrosnLinha Nmero da linha superior nColuna Nmero da coluna superior nBotao Nmero do boto padronizado

cFuncao Funo que ser executada oBtn Objeto associado ao boto

ComentriosPara executar funes definidas em um mesmo .PR? utilizar a funo Execute(Nome da funo) ou ExecBlock(Nome do Arquivo) para chamar outro .PR?.

ExemploVer exemplo no programa RDDEMO apresentado no final deste Manual.

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 37

@... Bitmap... SizeTipo: Tela Windows Define a rea em que ser mostrado um BITMAP na janela.

Sintaxe@ nLinha,nColuna BITMAP SIZE nAltura,nLargura FILE cArq

ParmetrosnLinha Nmero da Linha superior nColuna Nmero da Coluna superior nAltura Altura de apresentao do BITMAP

nLargura Largura de apresentao do BITMAP cArq Nome do arquivo BITMAP

ExemploVer exemplo no programa RDDEMO apresentado no final deste Manual.

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 38

@...To...BrowseTipo: Tela Windows Ativa Browse padro SigaAdv Win.

Sintaxe@ nLinha1,nColuna1 TO nLInha2,nColuna2 BROWSE cAlias cCor

ParmetrosnLinha1 Nmero da linha superior nColuna1 Nmero da coluna superior nLinha2 Nmero da linha inferior

nColuna2 Nmero da coluna inferior cAlias cCor Alias do Arquivo (apenas arquivos com estrutura no SX3) Expresso que identifica a cor da marca do registro (opcional)

ExemploMarca Verde - Titulo em aberto Marca Vermelha - Titulo pago

ComentriosA clusula opcional, se for omitida no ser disponibilizada coluna que identifica situao do registro (Cor verde/vermelha).

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 39

@...ButtonTipo: Tela Windows Cria um boto com texto.

Sintaxe@ nLinha,nColuna BUTTON cTexto SIZE nAltura,nLargura ACTION cFuno Object oBtn

ParmetrosnLinha nColuna cTexto nAltura nLargura cFuno Nmero da linha superior Nmero da coluna superior Texto que ser apresentado no boto. Deve incluir um _ antes da letra que utilizada como Hot Key. Ex.: ( _Salvar,Edi_Tar) Altura do boto Largura do boto Funo que ser executada

Object oBtn Objeto associado ao boto.

ComentriosPara executar funes definidas em um mesmo .PR? utilizar a funo Execute(Nome da funo) ou ExecBlock(Nome do Arquivo) para chamar outro .PR?.

ExemploVer exemplo no programa RDDEMO apresentado no final deste Manual.

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 40

CabecTipo: Impresso Esta funo imprime, na impressora selecionada, o cabealho padro dos relatrios do SIGA Advanced. Devolve o nmero da ltima linha impressa para que seja dada continuidade ao relatrio.

SintaxeCabec(cTtulo, cTexto1, cTexto2, cProg, cLargura, cControle)

ParmetroscTtulo cTexto1 cTexto2 cProg Ttulo do Relatrio Extenso da primeira linha do cabealho Extenso da segunda linha do cabealho Nome do Programa

cLargura Largura do relatrio (P/ M/ G) cControle Caractere de controle da impressora (numrico)

RetornanLinha Nmero da ltima linha impressa no cabealho

ExemplocTitulo := Relao dos Adiantamentos cCabec1 := Cdigo Item cCabec2 := - - - - - - - - ------ --cPrograma := ATRF090 cTamanho := P nCaracter := 15 Conta Contbil CCusto Projeto Data Valor ------------ ------ ------ ---- ---- ----------- ------ ------ ---- ----

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 41

: cRel:=SetPrint(cAlias, cPrograma , , @cTitulo, cDesc1, cDesc2, cDesc3 , .T., aOrd ) SetDefault(aReturn, cString) : nLinha:=Cabec(cTitulo, cCabec1, cCabec2, cPrograma, cTamanho, nCaracter) While !EOF() nLinha:=nLinha+1 @nLinha,1 Say SB1->B1_CODIGO

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 42

CalcEstTipo: Processamento e Planilha Devolve a quantidade e saldos do estoque de um produto/almoxarifado em uma determinada data. Esta funo utilizada para a obteno dos saldos iniciais em estoque na data em referncia.

SintaxeCalcEst(cProduto, cAlmox, dData)

ParmetroscProduto Produto a ser pesquisado cAlmox dData Almoxarifado a pesquisar Data desejada

RetornaaArray Array contendo: Elemento 1 Elemento 2 Elemento 3 Elemento 4 Elemento 5 Elemento 6 Elemento 7 Quantidade inicial em estoque na data Custo inicial na data na moeda 1 Custo inicial na data na moeda 2 Custo inicial na data na moeda 3 Custo inicial na data na moeda 4 Custo inicial na data na moeda 5 Quantidade inicial na segunda unidade de medida

ExemplosaSaldos:=CalcEst(SB1->B1_COD,SB1->B1_LOCPAD, dDataBase) nQuant:=aSaldos[1]

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 43

CalcSaldoTipo: Processamento e Planilha Calcula o saldo atual de uma determinada conta contbil at um determinado perodo. A conta deve estar posicionada no arquivo SI1 ou SI7, de acordo com a moeda, antes da chamada desta funo.

SintaxeCalcSaldo(nPer,nMoeda,lSalAnt)

ParmetrosnPer nMoeda lSalAnt Perodo (1 a 17) que ser usado como limite para o clculo de saldo. Moeda para o clculo. Se no informada, assumida a moeda 1. Indica se deve (.T.) ou no (.F.) considerar o saldo inicial da conta. Se no informado, assumido verdadeiro (.T.).

RetornanSld Retorna o Saldo atual da conta na moeda desejada.

Exemplos// Exemplo de uso da funo CALCSALDO: cConta := SA1->A1_CONTA dbSelectArea(SI1) dbSeek(xFilial(SI1)+cConta) ? Saldo atual da conta +cConta+: ? CalcSaldo(Periodo()) Return

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 44

CapitalTipo: Processamento Transforma as letras iniciais em Maisculas e as demais em Minsculas.

SintaxeCapital(cTexto)

ParmetroscTexto Texto a ser convertido

ExemplocCapital:=Capital(TEXTO MAIUSCULO) // O retono ser Texto Maisculo

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 45

CGCTipo: Processamento Consiste o CGC digitado, tomando como base o algoritmo nacional para verificao do dgito de controle. Esta funo procede um clculo do dgito verificador do nmero do Cadastro Geral de Contribuintes do Ministrio da Fazenda. utilizado o dgito padro mdulo 11 para verificar se as duas ltimas posies da string passada, correspondem a dgitos verificadores vlidos. Calculando primeiro o dgito das 12 primeiras posies e agregando o dgito encontrado ao fim da string, calcula o dgito das 13 posies, obtendo o segundo dgito. Retorna uma expresso lgica verdadeira se as duas ltimas posies do CGC digitado coincidem com o calculado.

SintaxeCGC(ExpC1)

ParmetrosExpC1 String de caracteres representando o nmero do C.G.C. sem pontos e traos separadores. Caso este argumento no seja passado para a funo, esta considerar o GET corrente.

RetornaExpL1 Expresso lgica .T. se o CGC vlido (dgito verificador confere) ou .F. se o dgito verificador no confere.

ExemploscCGC:= Space(14) : @10,16 GET cCGC Picture @R 99.999.999/9999-99 Valid CGC(cCGC)

A mscara do CGC deve vir com @R, para no inserir os pontos e a barra no CGC, o que impossibilita a validao.

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 46

@...CheckBox...VarTipo: Tela Windows Cria uma caixa de verificao para definir entre Sim/No ou Falso/Verdadeiro.

Sintaxe@ nLinha,nColuna CHECKBOX cDesc VAR lSeleo Object oCbx

ParmetrosnLinha Nmero da linha superior nColuna Nmero da coluna superior cDesc Descrio da caixa. Ex. Atualiza Estoque ?

lSeleo Varivel Lgica que identifica se a caixa foi ou no selecionada oCbx Objeto associado ao Checkbox

RetornoA varivel recebe .T. se for selecionada ou .F., se vazia.

ComentriosPode ser utilizada uma seqncia de CHECKBOX para determinar um conjunto de configuraes onde vrios itens podem ser marcados/desmarcados. Deve ser definida uma varivel para cada CHECKBOX definida. Ex.: Atualiza Estoque - .T./.F. = Marcada/Desmarcada Gera Duplicata - .T./.F. = Marcada/Desmarcada Calcula IPI - .T./.F. = Marcada/Desmarcada

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 47

ChkFileTipo: Processamento Abre um arquivo do sistema, em modo exclusivo ou compartilhado, verificando a sua existncia bem como dos ndices, criando-os caso no existam. Esta funo retorna verdadeiro (.T.) se o arquivo j estiver aberto ou se o Alias no for informado. Sempre que desejar mudar o modo de acesso do arquivo (de : compartilhado para exclusivo ou vice-versa), feche-o antes de cham-la.

SintaxeChkFile(cAlias,lExcl,newAlias)

ParmetroscAlias lExcl Alias do arquivo a ser aberto. Se for informado verdadeiro (.T.), o arquivo ser aberto em modo exclusivo, caso contrrio, o arquivo ser aberto em modo compartilhado. Se este parmetro no for informado, ser assumido falso (.F.). Abre o arquivo com outro apelido.

newAlis

RetornalRet Retorna verdadeiro (.T.) caso tenha conseguido abrir o arquivo e falso (.F.) caso contrrio.

Exemplo// Exemplo de uso da funo ChkFile: // Tenta abrir o arquivo de clientes como exclusivo: dbSelectArea(SA1) dbCloseArea() lOk := .T. While .T. IF !ChkFile(SA1,.T.) nResp := Alert(Outro usuario usando! Tenta de novo?,{Sim,Nao}) If nResp == 2 lOk := .F. Exit Endif

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 48

Endif EndDo If lOk // Faz o processamento com o arquivo... Endif // Finaliza If Select(SA1) dbCloseArea() Endif ChkFile(SA1,.F.) Return

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 49

CloseTipo: Tela Windows Desativa uma janela previamente definida e ativa.

SintaxeClose(cVar)

ParmetroscVar Varivel criada durante o comando de definio da janela.

Exemplo@ 75,158 BmpButton type 02 Action Close(oDlg)

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 50

CloseOpenTipo: Processamento Funo usada para fechar e abrir uma lista de arquivos.

SintaxeCloseOpen(aFecha,aAbre)

ParmetrosaFecha aAbre Array com a lista dos Aliases a serem fechados. Array com a lista dos Aliases a serem abertos.

RetornalRet Retorna falso (.F.) se no conseguir abrir algum arquivo (Se o arquivo estiver em uso exclusivo, por exemplo). Caso contrrio, retorna verdadeiro (.T.).

Exemplo// Exemplo de uso da funcao CloseOpen: aFecha := {SA1,SA2",SA3",SB1"} aAbre := {SG1,SH8"} If CloseOpen(aFecha,aAbre) .. Processamento Endif Return

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 51

ClosesFileTipo: Processamento Esta funo fecha todos os arquivos, exceto os SXs, o SM2 e o SM4. Permite que se indique tambm outros arquivos que no devem ser fechados.

SintaxeClosesFile(cAlias)

ParmetroscAlias String com os Aliases dos arquivos que no devem ser fechados. Devem ser informados separados por barras (/)

RetornalRet Retorna Verdadeiro (.T.) se fechou os arquivos com sucesso. Retorna Falso (.F.), caso contrrio.

Exemplo// Exemplo de uso da funcao CLOSESFILE: // Fecha todos os arquivos menos os cadastros: cEmp := SM0->M0_CODIGO ClosesFile(SA1/SA2/SA3/SA4/SA5/SA6/SA7/SA9/SAA/SAB/SAC) // Processamento. . . // Finalizacao dbCloseAll() OpenFile(cEmp) Return

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 52

@...ComboBox...Itens...SizeTipo: Tela Windows Esta funo semelhante a LISTBOX, mas pode ser utilizada em pequenos espaos, pois os itens s sero mostrados quando a caixa for seleciona.

Sintaxe@ nLinha,nColuna COMBOBOX cCont ITENS aArray SIZE nAltura,nLargura Object oCbx

ParmetrosnLinha Nmero da linha superior nColuna Nmero da coluna superior cCont aArray nAltura Contedo caracter do item selecionado na Matriz [1] Array, Matriz [1] com os itens para seleo Altura para definir o tamanho da caixa

nLargura Largura para definir o tamanho da caixa oCbx Objeto relacionado ao boto

RetornoO item selecionado pode ser obtido por

ComentriosOs itens da Matriz [1] devem ser tipo C caracter.

ExemploVer exemplo no programa RDDEMO apresentado no final deste Manual.

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 53

Comp3Tipo: Processamento Compacta um valor numrico em uma string binria COMP-3. Esta funo utilizada para compactar a movimentao de Clientes e Fornecedores. A descompactao feita pela funo complementar DeComp3.

SintaxeComp3(aArray)

ParmetrosaArray Array contendo os 25 campos compactados (o Saldo Inicial, os 12 Dbitos e 12 Crditos)

RetornaExpC1 Nome do Campo aglutinador da compactao.

ExemplosaSaldos:=DeComp3(A1_MOVIMEN) nSaldo:=aSaldos[1] For j := 2 To 24 STEP 2 nSaldo := nSaldo - aSaldos [ j ] + aSaldos [ j + 1 ] Next j aSaldos[1]:=nSaldo AFILL(aSaldos,0,2,24) Reclock(SA1) REPLACE A1_MOVIMEN With Comp3(aSaldos)

Ver tambmFuno DeComp3

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 54

CondicaoTipo: Processamento Esta funo permite avaliar uma condio de pagamento, retornando um array multidimensional com informaes referentes ao valor e vencimento de cada parcela, de acordo com a condio de pagamento.

SintaxeCondicao(nValTot,cCond,nVIPI,dData,nVSol)

ParametrosnValTot cCond nVIPI dData Valor total a ser parcelado Cdigo da condio de pagamento Valor do IPI, destacado para condio que obrigue o pagamento do IPI na 1 parcela Data inicial para considerar

RetornaaRet Array de retorno ( { {VALOR,VENCTO} , ... } )

Exemplo// Exemplo de uso da funcao Condicao: nValTot := 2500 cCond aParc ? ? ? 2 Parcela: +Transform(aParc[2,1],@E 9,999,999.99") ? Return Vencto: +DTOC(aParc[2,2]) inkey(0) := 002 // Tipo 1, Duas vezes := Condicao(nValTot,cCond,,dDataBase) Vencto: +DTOC(aParc[1,2])

? 1 Parcela: +Transform(aParc[1,1],@E 9,999,999.99")

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 55

ConfirmSX8Tipo: Processamento Permite a confirmao do nmero sugerido pelo Arquivo de Semforo, atravs da funo GETSX8NUM. Verifique a funo GETSX8NUM para maiores detalhes.

SintaxeConfirmSx8()

ExemplocNumSC5:=GetSX8Num(SC5) Replace C5_NUM with cNumSC5 ConfirmSX8()

Verifique os exemplos descritos na funo GETSX8NUM.

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 56

ContarTipo: Processamento Conta o nmero de registros de acordo com a condio determinada.

SintaxeContar(cAlias, cCond)

ParmetroscALias cCond Alias do arquivo Condio para a contagem

ExemploContar(SC1,C1_DATPRF < dDataBase)

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 57

ConvMoedaTipo: Processamento Converte o valor informado para a moeda selecionada.

SintaxeConvMoeda(dData1,dData2,nValor,cMoeda)

ParmetrosdData1 dData2 nValor cMoeda Data de emisso Data de vencimento Valor a ser convertido Para qual moeda dever converter

RetornaExpN1 Valor convertido (devolvido pela funo)

ComentriosEsta funo converte o valor definido por nValor para a moeda especificada em cMoeda na data dData. A data dData2 no utilizada. O valor nValor considerado em moeda 1.

ExemplosnValor2 := ConvMoeda( D2_EMISSAO, , D2_TOTAL, cMoeda ) nValor1 := ConvMoeda( D1_DTDIGIT, , D1_TOTAL, cMoeda )

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 58

CreditoTipo: Processamento Devolve o valor a crdito de uma determinada conta.

SintaxeCredito(cConta, nMs, nMoeda)

ParmetroscConta nMs nMoeda Cdigo da Conta Ms do movimento desejado Moeda desejada para obteno do valor a crdito

ExemploCredito(11103,03,1)

Ver tambmFunes Debito, Saldo e Movimento

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 59

CriaTrabTipo: Processamento Cria arquivo de trabalho.

SintaxeCriaTrab(aArray,lDbf)

ParmetrosaArray lDbf Array multidimensional contendo os campos a criar {Nome, Tipo, Tamanho, Decimal} Determina se o arquivo de trabalho deve ser criado ( .T.) ou no ( .F. )

RetornaExpC1 Nome do Arquivo gerado pela funo.

ComentriosEsta funo retorna o nome de um arquivo de trabalho que ainda no exista. Caso lDbf = .T., a funo criar um arquivo DBF com este nome e a estrutura definida em aArray. Caso lDbf = .F., a funo no criar arquivo de nenhum tipo, apenas fornecer um nome vlido.

Exemplos// Com lDbf = .F. cArq := CriaTrab(NIL, .F.) cIndice := C9_AGREG++IndexKey() Index on &cIndice To &cArq // Com lDbf = .T. aStru := {} AADD(aStru,{ MARK AADD(aStru,{ AGLUT AADD(aStru,{ NUMOP AADD(aStru,{ QUANT , C, 1, 0}) , C, 10, 0}) , C, 10, 0}) , N, 16, 4}) 8, 0})

AADD(aStru,{ PRODUTO, C, 15, 0}) AADD(aStru,{ ENTREGA, D,

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 60

AADD(aStru,{ ENTRAJU, D, AADD(aStru,{ ORDEM , N, AADD(aStru,{ GERADO , C, USE &cArqTrab ALIAS TRB NEW

8, 0}) 4, 0}) 1, 0})

cArqTrab := CriaTrab(aStru, .T.)

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 61

CriaVarTipo: Processamento Esta funo cria uma varivel, retornando o valor do campo, de acordo com o dicionrio de dados. Avalia o inicializador padro e retorna o contedo de acordo com o tipo de dado definido no dicionrio.

SintaxeCriaVar(cCampo,lIniPad,cLado)

ParametroscCampo lIniPad cLado Nome do campo Indica se considera (.T.) ou no (.F.) o inicializador Se a varivel for caracter, cLado pode ser: C - centralizado, L - esquerdo ou R - direito

RetornauRet Retorno (tipo de acordo com o dicionrio de dados, considerando inicializador padro)

Exemplo// Exemplo do uso da funo CriaVar: cNumNota := CriaVar(F2_DOC) // Retorna o contedo do // inicializador padro, // se existir, ou espaos em branco Alert(cNumNota) Return

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 62

DataValidaTipo: Processamento Retorna uma data vlida que no seja sbado, domingo ou feriado, a partir de uma data qualquer informada. uma funo til para a gerao de vencimentos reais para ttulos, por exemplo.

SintaxeDataValida(dData)

ParametrosdData Data informada para validao.

RetornadDtVld Retorna a Data validada.

Exemplo// Exemplo de uso da funcao DataValida: // Pode-se gravar o campo do vencimento real de um // titulo a partir do vencimento informado. dVencto := cTod() : Get dVencto Read dVencRea := DataValida(dVencto) Grava() // Funcao generica. // Um uso interessante, e a obtencao do numero de dias // uteis de determinado mes utilizando-se dessa funcao. // A logica e simples: nDUtil := 0 nMes nAno := 05 := 98

dDtIni := CTOD(01/+StrZero(nMes,2)+/+StrZero(nAno,2) dDtMov := dDtIni While Month(dDtIni) == Month(dDtMov) .And. Year(dDtIni) If DataValida(dDtMov) == dDtMov nDUtil := nDUtil + 1 Endif dDtMov := dDtMov + 1 EndDo == Year(dDtMov)

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 63

DebitoTipo: Processamento Devolve o valor a dbito de uma determinada conta.

SintaxeDebito(cConta, nMs, nMoeda)

ParmetroscConta nMs nMoeda Cdigo da Conta Ms do movimento desejado Moeda desejada para obteno do valor a dbito

ExemploDebito(11103,03,1)

Ver tambmFunes Credito, Saldo e Movimento

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 64

DeComp3Tipo: Processamento Descompacta uma string binria COMP-3 em um array. Esta funo utilizada para descompactar a movimentao de Clientes e Fornecedores. A compactao feita pela funo complementar Comp3.

SintaxeDeComp3(cCampo)

ParmetroscCampo Nome do Campo aglutinador da compactao.

RetornaaArray Array contendo os 25 campos compactados.

ExemploaSaldos:= DeComp3(A1_MOVIMEN) nSaldo := aSaldos [ 1 ] For j:= 2 To 24 STEP 2 nSaldo:= nSaldo - aSaldos [ j ] + aSaldos [ j + 1 ] Next j aSaldos[1]:=nSaldo AFILL(aSaldos,0,2,24) Reclock(SA1) REPLACE A1_MOVIMEN With Comp3(aSaldos)

Ver tambmFuno Comp3

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 65

@...To...DialogTipo: Tela Windows Define uma nova janela na rea de trabalho.

Sintaxe@ nLinha1,nColuna1 TO nLinha2,nColuna2 DIALOG cVar TITLE cTtulo

ParmetrosnLinha1 Nmero da linha superior nColuna1 Nmero da coluna superior nLinha2 Nmero da linha inferior

nColuna2 Nmero da coluna inferior cVar cTtulo Varivel que recebera as definies da nova janela Titulo da Janela

ComentriosDeve ser utilizada sem conjunto com o comando ACTIVATE DIALOG.

ExemploVer exemplo no programa RDDEMO apresentado no final deste Manual.

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 66

Digito11Tipo: Processamento Clculo de dgito verificador em mdulo 11.

SintaxeDigito11(cCalc,cDigito)

ParmetroscCalc cDigito String para calcular o dgito Dgito de verificao

RetornaExpL1 Valor Lgico de Retorno (.T. ou .F.)

ComentriosEsta funo calcula o dgito de verificao de cCalc e o compara com cDigito, verificando a consistncia.

Exemplos@ 9, 10 Get cCodigo; Valid Digito11( SubStr(cCodigo, 1, 5), Substr(cCodigo, 6, 1))

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 67

DrawAdv3DTipo: Tela DOS Desenha uma janela DOS em 3 dimenses.

SintaxeDrawAdv3D(cTitle, nLinha1, nColuna1, nLInha2, nColuna2, cCorFrente, cCorFundo, cStyle)

ParmetroscTitle nLinha1 nColuna1 nLinha2 nColuna2 cCorFrente cCorFundo cStyle Ttulo da Janela Nmero da linha superior Nmero da coluna superior Nmero da linha inferior Nmero da coluna inferior Cor da letra Cor do fundo R (onde R = Raised - define a impresso de baixo relevo. O padro alto relevo)

Exemplo// DrawAdv3D(Janela 3D,01,24,20,24,B+,N,R)

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 68

DrawAdvWindowTipo: Tela DOS Desenha uma janela padro de acordo com a posio relativa passada como parmetro. Para verso DOS.

SintaxeDrawAdvWindow(cTitulo,nLinha1,nColuna1,nLInha2, nColuna2)

ParmetroscTitulo nLinha1 Ttulo da janela Linha superior da janela

nColuna1 Coluna esquerda da janela nLinha2 Linha inferior da janela

nColuna2 Coluna direita da janela

ComentriosEsta funo desenha uma janela com o ttulo cTitulo, com o canto superior esquerdo na posio nLinha1, nColuna1 e canto inferior direito na posio nLinha2, nColuna2.

ExemplosDrawAdvWindow(Ttulos em Aberto,3,4,20,76)

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 69

EANDigitoTipo: Processamento Calcula o dgito de controle para o cdigo EAN usado em cdigos de barras.

SintaxeEanDigito(cCod)

ParmetroscCod Cdigo de barras para o clculo do dgito. obrigatrio o tamanho de 12 dgitos.

RetornacEan Retorna o cdigo EAN de 13 dgitos, sendo que a ltima posio o dgito calculado.

Exemplo// Exemplo de uso da funcao EANDIGITO: // Gatilho // Dom.: B1_CODBAR // CtaDom.: B1_CODBAR // Regra: Eandigito(PADL(AllTrim(M->B1_CODBAR),12,0")) // Ou usado em um programa rdmake: cCod := EanDigito(PADL(AllTrim(M->B1_CODBAR),12,0")) cDig := Substr(cCod,12,1) Alert(O digito calculado e: +cDig) Return

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 70

EntreTipo: Processamento Verifica se o contedo do campo est entre o contedo de duas expresses (ExpX1 D2_COD+SD2->D2_LOCAL cDesc := GetAdvFVal(SB1,B1_DESC,cChave,1,SC6->C6_DESCRI)

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 88

// Obtendo o conteudo de mais de um campo: cChave := SD2->D2_COD+SD2->D2_LOCAL aCpos := {B1_DESC,B1_PRV1",B1_UM} aDados := GetAdvFVal(SB1,aCpos,cChave,1,{SC6->C6_DESCRI,SC6->C6_PRCVEN,SC6->C6_UM})

refere-se aos Itens do Pedido de Venda) e, aps pesquisar no SB1 (Cadastro de Produtos), sugerir a quantidade vendida a partir de um campo especfico:// Colunas... nPosCod := aScan(aHeader,{ |x| Upper(AllTrim(x[2])) == C6_PRODUTO }) nPosQtd := aScan(aHeader,{ |x| Upper(AllTrim(x[2])) == C6_QTDVEN })

// Obtm o cdigo do produto cCodigo := aCols[n,nPosCod] // Pesquisa dbSelectArea(SB1) dbSetOrder(1) dbSeek(xFilial(SB1)+cCod) // Altera a quantidade no grid aCols[n,nPosQtd] := SB1->B1_QTSUGER // Campo especfico com a quantidade padro __Return(SB1->B1_QTSUGER)

Para uma melhor compreenso, voc pode analisar os programas RDMOD2.PRX e/ou RDMOD3.PRX que acompanham o SIGA Advanced. Eles esto no diretrio principal do sistema (geralmente \SIGAADV\) e demonstram rotinas usadas para cadastros semelhantes ao Pedido de Vendas e que trabalham com os arrays mencionados.

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 89

GetMVTipo: Processamento Recupera o contedo de parmetros originados em SX6.

SintaxeGetMV(cParam)

ParmetroscParam Nome do parmetro a ser pesquisado no SX6

RetornaExpX1 Contedo do parmetro devolvido pela funo

ExemploscTabVista cColICMS := GETMV(MV_TABVIST) := GETMV(MV_COLICMS)

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 90

GetSX8NumTipo: Processamento Fornece um nmero seqencial do Arquivo de Semforo (SX8??0.DBF). Esta funo retorna o prximo nmero, na seqncia e disponvel, para o cadastro no SIGA Advanced e mantm esta numerao para o usurio at o momento em que ele confirme ou abandone a operao. O Arquivo de Semforo usado para evitar a duplicidade de chaves em ambientes multiusurio. Esta funo trabalha juntamente com outras duas, chamadas CONFIRMSX8 e ROLLBACKSX8. Verifique os exemplos para maiores detalhes.

SintaxeGetSx8Num(cAlias,cCpoSx8)

ParmetroscAlias Alias do Arquivo cCpoSx8 Nome do campo para aplicao do semforo

ExemploPara que o Cadastro de Clientes, por exemplo, carregue na incluso o prximo nmero disponvel automaticamente, pode-se utilizar a seguinte sintaxe no inicializador padro do campo A1_COD: GetSx8Num(SA1) Caso seja um arquivo especifico, utilize a sintaxe a seguir: GetSx8Num(SZ1,Z1_COD) Para uso em RdMakes, as sintaxes descritas acima tambm so vlidas, no devendo-se esquecer de que a funo GETSX8NUM trabalha junto com as funes CONFIRMSX8 e ROLLBACKSX8, que devem ser chamadas ao final do processamento (procedimento que feito automaticamente em um inicializador padro conforme a sintaxe explicada acima). Exemplo em Rdmake:cCodNew := GetSx8Num(SZ1,Z1_COD) // Processamento...

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 91

// Confirmacao ConfirmSx8() // ou Cancelamento RollBackSx8() Return

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 92

GravaOrcadoTipo: Processamento e Planilha Permite que um determinado valor calculado pela planilha seja gravado no Arquivo de Oramentos.

SintaxeGravaOrcado(cConta,nClula,nMs,nMoeda)

ParmetroscConta nClula nMs nMoeda Conta Contbil a ser orada Nmero da clula onde o valor estar contido Ms a ser orado (se nulo, ser ms corrente) Moeda a ser orada (se nula, ser moeda nacional)

ExemploPara obter um valor referente conta 11102001, sendo que este dever ser orado na Contabilidade para o ms 07 e na moeda 1. Para tanto, cria-se a seguinte expresso: GravaOrcado(11102001,#022,7,1) Esta funo ir devolver o contedo >.

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 93

HelpTipo: Tela DOS/Windows Esta funo exibe a ajuda especificada para o campo e permite sua edio. Se for um help novo, escreve-se o texto em tempo de execuo.

SintaxeHelp(cHelp,nLinha,cTtulo,cNil,cMensagem,nLinMen,nColMen)

ParmetroscHelp nLinha cTtulo cNil Nome da Rotina chamadora do help (sempre branco) Nmero da linha da rotina chamadora (sempre 1) Ttulo do help Sempre NIL

cMensagem Mensagem adicional ao help nLinMen nColMen Nmero de linhas da Mensagem (relativa janela) Nmero de colunas da Mensagem (relativa janela)

RetornaNada

Exemplos: If Empty(cArqs) dbSelectArea(cAlias) RecLock(cAlias,.F.) dbDelete() Else Help( ,1,NaoExclui,,cArqs,4,1) Endif

:

MANUAL RDMAKE - SIGA ADVANCED 4.07 - 94

ImpCadastTipo: Impresso Imprime relatrio de cadastros padres do SIGA Advanced. Esta funo monta uma interface padro de relatrio, com parametrizaes de/at, e permite imprimir qualquer arquivo de cadastro definido no sistema.

SintaxeImpCadast(cCab1,cCab2,cCab3,cNomePrg,cTam,nLim,cAlias)

ParmetroscCab1 cCab2 cCab3 Primeira linha de cabealho Segunda linha de cabealho Terceira linha de cabealho

cNomePrg Nome do programa cTam nLim cAlias Tamanho do relatrio (P,M ou G) Limite do relatrio. Mxima coluna a ser impressa Alias do arquivo de cadastro a ser impresso

Exemplo// Exemplo de uso da funcao Impcadast: /